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

ActionWhat it does
Archive an invoiceArchive an invoice that is no longer needed, such as one sent by mistake.
Create a checkout linkGet a link to Paystack's checkout page where one customer pays a set amount, by card, bank transfer, USSD or mobile money.
Create a customerAdd a customer to Paystack, to send them invoices or find their payments later.
Create a payment pageMake a page anyone can pay on, at paystack.com/pay/..., to share on social media, a website or a flyer.
Create an invoiceBill a customer for items or an amount.
Get a customerLook up a customer by email address or customer code.
Get an invoiceGet an invoice's details, including whether it has been paid.
Get balanceGet how much money is in your Paystack balance, in each currency your account takes.
Get payment totalsGet 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 customersList your Paystack customers, newest first.
List invoicesList invoices, newest first, optionally only unpaid or paid ones, one customer's, one currency's or those created within dates.
List paymentsList payments, newest first, optionally only paid or failed ones, one customer's, or those within dates.
Send an invoice reminderEmail the customer their invoice again, with the link to pay it.
Update a customerChange a customer's name or phone number.
Verify a paymentCheck 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

InvoiceinvoicetextRequired
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"
}

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 emailemailtextRequired
Who is paying. Paystack emails them a receipt.
AmountamountnumberRequired
How much, written as you would, e.g. 5000.50. Not in kobo or cents.
Currencycurrencytext
Leave empty for your Paystack account's main currency.
Referencereferencetext
Your own unique reference, such as an order number. Leave empty and Paystack makes one.
Payment methodschannelslist
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 tocallback_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

EmailemailtextRequired
The customer's email address.
First namefirst_nametext
The customer's first name.
Last namelast_nametext
The customer's last name.
Phone numberphonetext
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 namenametextRequired
The page's title, shown to people paying.
Amountamountnumber
A fixed price, e.g. 5000.50, not in kobo or cents. Leave empty to let people choose how much to pay.
Currencycurrencytext
Leave empty for your Paystack account's main currency.
Descriptiondescriptiontext
What people are paying for.
Web addressslugtext
The end of the page's address, paystack.com/pay/<this>. Leave empty and Paystack makes one.
Redirect toredirect_urltext
A page on your website to send people to after they pay.
Ask for a phone numbercollect_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

CustomercustomertextRequired
Pick a customer, or use their email address or customer code.
Itemsline_itemslist
What you are billing for. Paystack adds up the total. Or leave empty and fill in Amount.
Amountamountnumber
The total, when not billing for items, e.g. 5000.50. Not in kobo or cents.
Descriptiondescriptiontext
What the invoice is for, shown to the customer.
Due datedue_datedate
When it should be paid by.
Currencycurrencytext
Leave empty for your Paystack account's main currency.
Email it to the customersend_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

CustomercustomertextRequired
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

InvoiceinvoicetextRequired
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

Fromfrom_datedate
Only from this day on.
Toto_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 resultslimitnumber
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

Statusstatustext
Only invoices in this state. Leave empty for all.One of: pending (Unpaid), success (Paid), failed, draft.
Customercustomertext
Only this customer's. Pick one, or use their email address.
Currencycurrencytext
Only invoices in this currency.
Fromfrom_datedate
Only from this day on.
Toto_datedate
Only up to and including this day.
Maximum resultslimitnumber
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

Statusstatustext
Only payments in this state. Leave empty for all.One of: success (Paid), failed, abandoned (Not paid yet), reversed.
Customercustomertext
Only this customer's. Pick one, or use their email address.
Fromfrom_datedate
Only from this day on.
Toto_datedate
Only up to and including this day.
Maximum resultslimitnumber
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

InvoiceinvoicetextRequired
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

CustomercustomertextRequired
Pick a customer, or use their email address or customer code.
First namefirst_nametext
The customer's first name.
Last namelast_nametext
The customer's last name.
Phone numberphonetext
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

ReferencereferencetextRequired
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"
}

On this page