paystack-payment-requests
SKILL.md
Paystack Payment Requests
The Payment Requests API lets you create and manage invoices for goods and services.
Depends on: paystack-setup for the
paystackRequesthelper.
Related: paystack-customers for customer codes used in requests.
Endpoints
| Method | Endpoint | Description |
|---|---|---|
| POST | /paymentrequest |
Create a payment request |
| GET | /paymentrequest |
List payment requests |
| GET | /paymentrequest/:id_or_code |
Fetch a payment request |
| PUT | /paymentrequest/:id_or_code |
Update a payment request |
| GET | /paymentrequest/verify/:code |
Verify a payment request |
| POST | /paymentrequest/notify/:code |
Send notification |
| GET | /paymentrequest/totals |
Get totals/metrics |
| POST | /paymentrequest/finalize/:code |
Finalize a draft |
| POST | /paymentrequest/archive/:code |
Archive a request |
Create Payment Request
| Param | Type | Required | Description |
|---|---|---|---|
customer |
string | Yes | Customer ID or code |
amount |
integer | No | Amount in subunits (if no line items) |
due_date |
datetime | No | ISO 8601 due date |
description |
string | No | Short description |
line_items |
array | No | [{ name, amount, quantity? }] |
tax |
array | No | [{ name, amount }] |
currency |
string | No | Currency code (default: NGN) |
send_notification |
boolean | No | Send email (default: true) |
draft |
boolean | No | Save as draft (default: false) |
has_invoice |
boolean | No | Add auto-incrementing invoice number |
invoice_number |
integer | No | Override invoice number |
split_code |
string | No | Split code for revenue sharing |
// Invoice with line items and tax
const invoice = await paystackRequest<{
id: number;
request_code: string;
invoice_number: number;
}>("/paymentrequest", {
method: "POST",
body: JSON.stringify({
customer: "CUS_xwaj0txjryg393b",
description: "Q1 2024 Services",
due_date: "2024-03-31",
line_items: [
{ name: "Consulting (10 hours)", amount: 500000, quantity: 1 },
{ name: "Design work", amount: 200000, quantity: 1 },
],
tax: [
{ name: "VAT (7.5%)", amount: 52500 },
],
send_notification: true,
has_invoice: true,
}),
});
// invoice.data.request_code → "PRQ_1weqqsn2wwzgft8"
// Draft invoice (no notification sent)
await paystackRequest("/paymentrequest", {
method: "POST",
body: JSON.stringify({
customer: "CUS_xwaj0txjryg393b",
amount: 100000,
description: "Draft invoice",
draft: true,
}),
});
List Payment Requests
const requests = await paystackRequest(
"/paymentrequest?status=pending¤cy=NGN&perPage=20"
);
Fetch / Verify
// Fetch
const req = await paystackRequest(`/paymentrequest/${encodeURIComponent("PRQ_code")}`);
// Verify (includes payment status)
const verified = await paystackRequest(
`/paymentrequest/verify/${encodeURIComponent("PRQ_code")}`
);
Send Notification
Re-send the payment request email to the customer:
await paystackRequest(`/paymentrequest/notify/${encodeURIComponent("PRQ_code")}`, {
method: "POST",
});
Get Totals
const totals = await paystackRequest("/paymentrequest/totals");
// totals.data.pending → [{ currency: "NGN", amount: 42000 }]
// totals.data.successful → [{ currency: "NGN", amount: 0 }]
// totals.data.total → [{ currency: "NGN", amount: 42000 }]
Finalize Draft
await paystackRequest(`/paymentrequest/finalize/${encodeURIComponent("PRQ_code")}`, {
method: "POST",
body: JSON.stringify({ send_notification: true }),
});
Update Payment Request
await paystackRequest(`/paymentrequest/${encodeURIComponent("PRQ_code")}`, {
method: "PUT",
body: JSON.stringify({
customer: "CUS_xwaj0txjryg393b",
description: "Updated invoice",
due_date: "2024-06-30",
amount: 150000,
}),
});
Archive
await paystackRequest(`/paymentrequest/archive/${encodeURIComponent("PRQ_code")}`, {
method: "POST",
});
Weekly Installs
7
Repository
rexedge/paystackGitHub Stars
1
First Seen
7 days ago
Security Audits
Installed on
github-copilot7
cursor7
opencode7
cline6
codex6
kimi-cli6