paystack-payment-pages
SKILL.md
Paystack Payment Pages
The Payment Pages API lets you create hosted payment pages at https://paystack.com/pay/[slug] — no frontend code needed.
Depends on: paystack-setup for the
paystackRequesthelper.
Endpoints
| Method | Endpoint | Description |
|---|---|---|
| POST | /page |
Create a payment page |
| GET | /page |
List payment pages |
| GET | /page/:id_or_slug |
Fetch a payment page |
| PUT | /page/:id_or_slug |
Update a payment page |
| GET | /page/check_slug_availability/:slug |
Check slug availability |
| POST | /page/:id/product |
Add products to page |
Create Payment Page
POST /page
| Param | Type | Required | Description |
|---|---|---|---|
name |
string | Yes | Page name |
description |
string | No | Page description |
amount |
integer | No | Fixed amount in subunits (kobo/pesewas) |
currency |
string | No | Defaults to integration currency |
slug |
string | No | Custom URL slug |
type |
string | No | payment (default), subscription, product, or plan |
plan |
string | No | Plan ID (when type is subscription) |
fixed_amount |
boolean | No | If true, amount is required and unchangeable |
split_code |
string | No | Split code for revenue sharing |
redirect_url |
string | No | Redirect URL after payment |
success_message |
string | No | Success message on completion |
notification_email |
string | No | Email for transaction notifications |
collect_phone |
boolean | No | Collect phone numbers |
custom_fields |
array | No | Custom fields to collect |
metadata |
object | No | Extra config (subaccount, logo, etc.) |
// Simple payment page
const page = await paystackRequest<{
slug: string;
id: number;
}>("/page", {
method: "POST",
body: JSON.stringify({
name: "Buttercup Brunch",
amount: 500000, // ₦5,000
description: "Gather your friends for the ritual that is brunch",
slug: "buttercup-brunch",
redirect_url: "https://mysite.com/thank-you",
collect_phone: true,
}),
});
// Page URL: https://paystack.com/pay/buttercup-brunch
// Subscription page
await paystackRequest("/page", {
method: "POST",
body: JSON.stringify({
name: "Monthly Pro Plan",
type: "subscription",
plan: 1716,
}),
});
// Donation page (flexible amount)
await paystackRequest("/page", {
method: "POST",
body: JSON.stringify({
name: "Support Our Cause",
description: "Any amount helps",
// No amount = donor chooses
custom_fields: [
{ display_name: "Full Name", variable_name: "full_name" },
{ display_name: "Message", variable_name: "message" },
],
}),
});
List Payment Pages
const pages = await paystackRequest("/page?perPage=20&page=1");
Fetch Payment Page
const page = await paystackRequest(`/page/${encodeURIComponent("buttercup-brunch")}`);
Update Payment Page
await paystackRequest(`/page/${encodeURIComponent("buttercup-brunch")}`, {
method: "PUT",
body: JSON.stringify({
name: "Updated Brunch",
description: "New brunch description",
amount: 750000,
active: true,
}),
});
Check Slug Availability
const check = await paystackRequest(
`/page/check_slug_availability/${encodeURIComponent("my-slug")}`
);
// { status: true, message: "Slug is available" }
Add Products to Page
await paystackRequest(`/page/${pageId}/product`, {
method: "POST",
body: JSON.stringify({
product: [473, 292], // Product IDs
}),
});
Weekly Installs
7
Repository
rexedge/paystackGitHub Stars
1
First Seen
8 days ago
Security Audits
Installed on
opencode7
github-copilot7
cursor7
gemini-cli6
codex6
amp6