Paystack
App · Payments & Billing · 15 actions
Get paid with Paystack: send checkout links and invoices, make payment pages, check whether a payment went through, and look up payments, customers, totals and your balance.
Actions
| Action | What it does |
|---|---|
| Archive an invoice | Archive an invoice that is no longer needed, such as one sent by mistake. |
| Create a checkout link | Get a link to Paystack's checkout page where one customer pays a set amount, by card, bank transfer, USSD or mobile money. |
| Create a customer | Add a customer to Paystack, to send them invoices or find their payments later. |
| Create a payment page | Make a page anyone can pay on, at paystack.com/pay/..., to share on social media, a website or a flyer. |
| Create an invoice | Bill a customer for items or an amount. |
| Get a customer | Look up a customer by email address or customer code. |
| Get an invoice | Get an invoice's details, including whether it has been paid. |
| Get balance | Get how much money is in your Paystack balance, in each currency your account takes. |
| Get payment totals | Get how many payments were received and how much they came to in each currency, for all time or between two dates, plus money on its way to your bank. |
| List customers | List your Paystack customers, newest first. |
| List invoices | List invoices, newest first, optionally only unpaid or paid ones, one customer's, one currency's or those created within dates. |
| List payments | List payments, newest first, optionally only paid or failed ones, one customer's, or those within dates. |
| Send an invoice reminder | Email the customer their invoice again, with the link to pay it. |
| Update a customer | Change a customer's name or phone number. |
| Verify a payment | Check whether a payment went through, by its reference: 'paid' is true once the customer has paid. |
Archive an invoice
Archive an invoice that is no longer needed, such as one sent by mistake. It no longer shows in lists and can no longer be checked.
Inputs
- Invoice
invoicetextRequired - Pick an invoice, or use the request_code an earlier Paystack step returned.
Outputs
archivedtrue/false- True when it was archived
request_codetext- The invoice's code
Example output
{
"archived": true,
"request_code": "PRQ_1weqqsn2wwzgft8"
}Create a checkout link
Get a link to Paystack's checkout page where one customer pays a set amount, by card, bank transfer, USSD or mobile money. Send it to them by email or message, then use 'Verify a payment' with the reference to see whether they paid.
Inputs
- Customer email
emailtextRequired - Who is paying. Paystack emails them a receipt.
- Amount
amountnumberRequired - How much, written as you would, e.g. 5000.50. Not in kobo or cents.
- Currency
currencytext - Leave empty for your Paystack account's main currency.
- Reference
referencetext - Your own unique reference, such as an order number. Leave empty and Paystack makes one.
- Payment methods
channelslist - Only offer these. Leave empty to offer every method your account accepts.One or more of:
card,bank(Bank account),bank_transfer(Bank transfer),ussd,mobile_money(Mobile money),qr(QR code),apple_pay(Apple Pay),eft,capitec_pay(Capitec Pay),payattitude. - Return to
callback_urltext - Where to send the customer after they pay. Leave empty for the callback URL in your Paystack settings.
Outputs
access_codetext- Paystack's code for this checkout
amountnumber- In the currency's main unit, e.g. 5000.50 naira, not kobo
checkout_urltext- The link to send the customer
currencytext- The currency, when one was chosen
emailtext- Who is paying
referencetext- The payment's reference, for 'Verify a payment'
Example output
{
"access_code": "3ni8kdavz62431k",
"amount": 25000.0,
"checkout_url": "https://checkout.paystack.com/3ni8kdavz62431k",
"currency": "NGN",
"email": "ada@example.com",
"reference": "order-1042"
}Create a customer
Add a customer to Paystack, to send them invoices or find their payments later.
Inputs
- Email
emailtextRequired - The customer's email address.
- First name
first_nametext - The customer's first name.
- Last name
last_nametext - The customer's last name.
- Phone number
phonetext - The customer's phone number, ideally with its country code.
Outputs
created_attext- When they were added (ISO 8601)
customer_codetext- The customer's code, CUS_...
customer_idnumber- Paystack's numeric id for the customer
emailtext- Their email address
first_nametext- Their first name
last_nametext- Their last name
nametext- First and last name together
phonetext- Their phone number
updated_attext- When they were last changed (ISO 8601)
Example output
{
"created_at": "2026-09-20T10:01:12.000Z",
"customer_code": "CUS_xnxdt6s1zg1f4nx",
"customer_id": 1173,
"email": "ada@example.com",
"first_name": "Ada",
"last_name": "Obi",
"name": "Ada Obi",
"phone": "+2348012345678",
"updated_at": "2026-09-20T10:01:12.000Z"
}Create a payment page
Make a page anyone can pay on, at paystack.com/pay/..., to share on social media, a website or a flyer. Unlike a checkout link, it is not tied to one customer and can be paid many times.
Inputs
- Page name
nametextRequired - The page's title, shown to people paying.
- Amount
amountnumber - A fixed price, e.g. 5000.50, not in kobo or cents. Leave empty to let people choose how much to pay.
- Currency
currencytext - Leave empty for your Paystack account's main currency.
- Description
descriptiontext - What people are paying for.
- Web address
slugtext - The end of the page's address, paystack.com/pay/<this>. Leave empty and Paystack makes one.
- Redirect to
redirect_urltext - A page on your website to send people to after they pay.
- Ask for a phone number
collect_phonetrue/false - Ask people for their phone number when they pay.Default:
false.
Outputs
activetrue/false- True while it takes payments
amountnumber- Its fixed price, if it has one
created_attext- When it was made (ISO 8601)
currencytext- Its currency
descriptiontext- Its description
nametext- The page's name
page_idnumber- Paystack's id for the page
slugtext- The end of its address
urltext- The page's address, to share
Example output
{
"active": true,
"amount": 15000.0,
"created_at": "2026-09-24T11:44:16.412Z",
"currency": "NGN",
"description": "One seat at the spring workshop",
"name": "Spring workshop",
"page_id": 1308510,
"slug": "spring-workshop",
"url": "https://paystack.com/pay/spring-workshop"
}Create an invoice
Bill a customer for items or an amount. Paystack emails them the invoice with a link to pay it. An email address that is not a customer yet is added as one.
Inputs
- Customer
customertextRequired - Pick a customer, or use their email address or customer code.
- Items
line_itemslist - What you are billing for. Paystack adds up the total. Or leave empty and fill in Amount.
- Amount
amountnumber - The total, when not billing for items, e.g. 5000.50. Not in kobo or cents.
- Description
descriptiontext - What the invoice is for, shown to the customer.
- Due date
due_datedate - When it should be paid by.
- Currency
currencytext - Leave empty for your Paystack account's main currency.
- Email it to the customer
send_emailtrue/false - Paystack emails the invoice with a link to pay. Turn off to send it later with 'Send an invoice reminder'.Default:
true.
Outputs
amountnumber- The total. In the currency's main unit, e.g. 5000.50 naira, not kobo
created_attext- When it was created (ISO 8601)
currencytext- Three-letter currency code
customer_codetext- The customer's code
customer_emailtext- The customer's email address
customer_nametext- The customer's name, where known
descriptiontext- The invoice's description
due_datetext- When it is due (YYYY-MM-DD)
invoice_idnumber- Paystack's numeric id for the invoice
invoice_numbernumber- The invoice number
line_itemslist- What is being billed for
paidtrue/false- True once it has been paid
paid_attext- When it was paid (ISO 8601)
pdf_urltext- A link to the invoice as a PDF, once Paystack makes one
request_codetext- The invoice's code, PRQ_...
statustext- pending (unpaid), success (paid), failed or draft
Example output
{
"amount": 42000.0,
"created_at": "2026-09-24T16:07:33.000Z",
"currency": "NGN",
"customer_code": "CUS_xnxdt6s1zg1f4nx",
"customer_email": "ada@example.com",
"customer_name": "Ada Obi",
"description": "September design work",
"due_date": "2026-10-15",
"invoice_id": 3136406,
"invoice_number": 12,
"line_items": [
{
"amount": 20000.0,
"name": "Logo design",
"quantity": 1
},
{
"amount": 11000.0,
"name": "Business cards",
"quantity": 2
}
],
"paid": false,
"paid_at": null,
"pdf_url": null,
"request_code": "PRQ_1weqqsn2wwzgft8",
"status": "pending"
}Get a customer
Look up a customer by email address or customer code.
Inputs
- Customer
customertextRequired - Pick a customer, or use their email address or customer code.
Outputs
created_attext- When they were added (ISO 8601)
customer_codetext- The customer's code, CUS_...
customer_idnumber- Paystack's numeric id for the customer
emailtext- Their email address
first_nametext- Their first name
last_nametext- Their last name
nametext- First and last name together
phonetext- Their phone number
updated_attext- When they were last changed (ISO 8601)
Example output
{
"created_at": "2026-09-20T10:01:12.000Z",
"customer_code": "CUS_xnxdt6s1zg1f4nx",
"customer_id": 1173,
"email": "ada@example.com",
"first_name": "Ada",
"last_name": "Obi",
"name": "Ada Obi",
"phone": "+2348012345678",
"updated_at": "2026-09-20T10:01:12.000Z"
}Get an invoice
Get an invoice's details, including whether it has been paid.
Inputs
- Invoice
invoicetextRequired - Pick an invoice, or use the request_code an earlier Paystack step returned.
Outputs
amountnumber- The total. In the currency's main unit, e.g. 5000.50 naira, not kobo
created_attext- When it was created (ISO 8601)
currencytext- Three-letter currency code
customer_codetext- The customer's code
customer_emailtext- The customer's email address
customer_nametext- The customer's name, where known
descriptiontext- The invoice's description
due_datetext- When it is due (YYYY-MM-DD)
invoice_idnumber- Paystack's numeric id for the invoice
invoice_numbernumber- The invoice number
line_itemslist- What is being billed for
paidtrue/false- True once it has been paid
paid_attext- When it was paid (ISO 8601)
pdf_urltext- A link to the invoice as a PDF, once Paystack makes one
request_codetext- The invoice's code, PRQ_...
statustext- pending (unpaid), success (paid), failed or draft
Example output
{
"amount": 42000.0,
"created_at": "2026-09-24T16:07:33.000Z",
"currency": "NGN",
"customer_code": "CUS_xnxdt6s1zg1f4nx",
"customer_email": "ada@example.com",
"customer_name": "Ada Obi",
"description": "September design work",
"due_date": "2026-10-15",
"invoice_id": 3136406,
"invoice_number": 12,
"line_items": [
{
"amount": 20000.0,
"name": "Logo design",
"quantity": 1
},
{
"amount": 11000.0,
"name": "Business cards",
"quantity": 2
}
],
"paid": false,
"paid_at": null,
"pdf_url": null,
"request_code": "PRQ_1weqqsn2wwzgft8",
"status": "pending"
}Get balance
Get how much money is in your Paystack balance, in each currency your account takes.
Inputs
None.
Outputs
amount_by_currencyobject- The balance per currency, e.g. {"NGN": 17000}
balanceslist- One entry per currency
Example output
{
"amount_by_currency": {
"NGN": 17000.0
},
"balances": [
{
"amount": 17000.0,
"currency": "NGN"
}
]
}Get payment totals
Get how many payments were received and how much they came to in each currency, for all time or between two dates, plus money on its way to your bank.
Inputs
- From
from_datedate - Only from this day on.
- To
to_datedate - Only up to and including this day.
Outputs
amount_by_currencyobject- The total per currency, e.g. {"NGN": 125000.5}
payment_countnumber- How many payments were received
pending_transferslist- One entry per currency
pending_transfers_by_currencyobject- Money not yet paid out to your bank, per currency
totalslist- One entry per currency
Example output
{
"amount_by_currency": {
"NGN": 1250000.5
},
"payment_count": 42,
"pending_transfers": [
{
"amount": 24000.0,
"currency": "NGN"
}
],
"pending_transfers_by_currency": {
"NGN": 24000.0
},
"totals": [
{
"amount": 1250000.5,
"currency": "NGN"
}
]
}List customers
List your Paystack customers, newest first.
Inputs
- Maximum results
limitnumber - The most to return, newest first.From 1 to 1000. Default:
50.
Outputs
countnumber- How many came back
customerslist- The customers
Example output
{
"count": 1,
"customers": [
{
"created_at": "2026-09-20T10:01:12.000Z",
"customer_code": "CUS_xnxdt6s1zg1f4nx",
"customer_id": 1173,
"email": "ada@example.com",
"first_name": "Ada",
"last_name": "Obi",
"name": "Ada Obi",
"phone": "+2348012345678",
"updated_at": "2026-09-20T10:01:12.000Z"
}
]
}List invoices
List invoices, newest first, optionally only unpaid or paid ones, one customer's, one currency's or those created within dates.
Inputs
- Status
statustext - Only invoices in this state. Leave empty for all.One of:
pending(Unpaid),success(Paid),failed,draft. - Customer
customertext - Only this customer's. Pick one, or use their email address.
- Currency
currencytext - Only invoices in this currency.
- From
from_datedate - Only from this day on.
- To
to_datedate - Only up to and including this day.
- Maximum results
limitnumber - The most to return, newest first.From 1 to 1000. Default:
50.
Outputs
countnumber- How many came back
invoiceslist- The invoices, newest first
Example output
{
"count": 1,
"invoices": [
{
"amount": 42000.0,
"created_at": "2026-09-24T16:07:33.000Z",
"currency": "NGN",
"customer_code": "CUS_xnxdt6s1zg1f4nx",
"customer_email": "ada@example.com",
"customer_name": "Ada Obi",
"description": "September design work",
"due_date": "2026-10-15",
"invoice_id": 3136406,
"invoice_number": 12,
"line_items": [
{
"amount": 20000.0,
"name": "Logo design",
"quantity": 1
},
{
"amount": 11000.0,
"name": "Business cards",
"quantity": 2
}
],
"paid": false,
"paid_at": null,
"pdf_url": null,
"request_code": "PRQ_1weqqsn2wwzgft8",
"status": "pending"
}
]
}List payments
List payments, newest first, optionally only paid or failed ones, one customer's, or those within dates.
Inputs
- Status
statustext - Only payments in this state. Leave empty for all.One of:
success(Paid),failed,abandoned(Not paid yet),reversed. - Customer
customertext - Only this customer's. Pick one, or use their email address.
- From
from_datedate - Only from this day on.
- To
to_datedate - Only up to and including this day.
- Maximum results
limitnumber - The most to return, newest first.From 1 to 1000. Default:
50.
Outputs
countnumber- How many came back
paymentslist- The payments, newest first
Example output
{
"count": 1,
"payments": [
{
"amount": 25000.0,
"bank": "TEST BANK",
"card_brand": "visa",
"card_last4": "4081",
"channel": "card",
"created_at": "2026-09-24T09:14:24.000Z",
"currency": "NGN",
"customer_code": "CUS_xnxdt6s1zg1f4nx",
"customer_email": "ada@example.com",
"customer_name": "Ada Obi",
"fees": 475.0,
"gateway_response": "Successful",
"metadata": null,
"paid": true,
"paid_at": "2026-09-24T09:15:02.000Z",
"payment_id": 4099260516,
"reference": "order-1042",
"status": "success"
}
]
}Send an invoice reminder
Email the customer their invoice again, with the link to pay it.
Inputs
- Invoice
invoicetextRequired - Pick an invoice, or use the request_code an earlier Paystack step returned.
Outputs
request_codetext- The invoice's code
senttrue/false- True when the reminder was sent
Example output
{
"request_code": "PRQ_1weqqsn2wwzgft8",
"sent": true
}Update a customer
Change a customer's name or phone number. Anything left empty stays as it is.
Inputs
- Customer
customertextRequired - Pick a customer, or use their email address or customer code.
- First name
first_nametext - The customer's first name.
- Last name
last_nametext - The customer's last name.
- Phone number
phonetext - The customer's phone number, ideally with its country code.
Outputs
changedlist- Which details were changed
created_attext- When they were added (ISO 8601)
customer_codetext- The customer's code, CUS_...
customer_idnumber- Paystack's numeric id for the customer
emailtext- Their email address
first_nametext- Their first name
last_nametext- Their last name
nametext- First and last name together
phonetext- Their phone number
updated_attext- When they were last changed (ISO 8601)
Example output
{
"changed": [
"phone"
],
"created_at": "2026-09-20T10:01:12.000Z",
"customer_code": "CUS_xnxdt6s1zg1f4nx",
"customer_id": 1173,
"email": "ada@example.com",
"first_name": "Ada",
"last_name": "Obi",
"name": "Ada Obi",
"phone": "+2348012345678",
"updated_at": "2026-09-20T10:01:12.000Z"
}Verify a payment
Check whether a payment went through, by its reference: 'paid' is true once the customer has paid. A checkout link nobody has paid yet comes back with 'paid' false rather than an error, so a workflow can branch on it.
Inputs
- Reference
referencetextRequired - The payment's reference, such as the one 'Create a checkout link' returned.
Outputs
amountnumber- In the currency's main unit, e.g. 5000.50 naira, not kobo
banktext- The card's or account's bank
card_brandtext- visa, mastercard, verve, ... for a card payment
card_last4text- The card's last four digits
channeltext- How it was paid: card, bank, bank_transfer, ussd, ...
created_attext- When it was started (ISO 8601)
currencytext- Three-letter currency code, e.g. NGN
customer_codetext- The customer's code, CUS_...
customer_emailtext- The customer's email address
customer_nametext- The customer's name, where known
feesnumber- Paystack's fee, in the same currency
gateway_responsetext- What the bank or card network said
metadataobject- Custom data stored with the payment
paidtrue/false- True once the customer has paid
paid_attext- When it was paid (ISO 8601)
payment_idnumber- Paystack's id for the payment
referencetext- The payment's reference
statustext- success (paid), failed, abandoned (started but not paid yet), ongoing, pending, processing, queued or reversed
Example output
{
"amount": 25000.0,
"bank": "TEST BANK",
"card_brand": "visa",
"card_last4": "4081",
"channel": "card",
"created_at": "2026-09-24T09:14:24.000Z",
"currency": "NGN",
"customer_code": "CUS_xnxdt6s1zg1f4nx",
"customer_email": "ada@example.com",
"customer_name": "Ada Obi",
"fees": 475.0,
"gateway_response": "Successful",
"metadata": null,
"paid": true,
"paid_at": "2026-09-24T09:15:02.000Z",
"payment_id": 4099260516,
"reference": "order-1042",
"status": "success"
}