Body Params

Fully qualified url, e.g. http://example.com/ . Use this to override the callback url provided on the dashboard for this transaction

metadata

string

Stringified JSON object. Add a custom_fields attribute which has an array of objects if you would like the fields to be added to your transaction when displayed on the dashboard. Sample: {"custom_fields":[{"display_name":"Cart ID","variable_name":"cart_id","value":"8393"}]}

channels

array of strings

Send us 'card' or 'bank' or 'card','bank' as an array to specify what options to show the user paying

plan

string

If transaction is to create a subscription to a predefined plan, provide plan code here. This would invalidate the value provided in amount

invoice_limit

int32

Number of times to charge customer during subscription to plan

subaccount

string

The code for the subaccount that owns the payment. e.g. ACCT_8f4s1eq7ml6rlzj

transaction_charge

int32

A flat fee to charge the subaccount for this transaction, in kobo. This overrides the split percentage set when the subaccount was created. Ideally, you will need to use this if you are splitting in flat rates (since subaccount creation only allows for percentage split). e.g. 7000 for a 70 naira flat fee.

bearer

string

Who bears Paystack charges? account or subaccount (defaults to account).

Charge Authorization

All authorizations marked as reusable can be charged with this endpoint whenever you need to recieve payments.

Header Auth

Authorization

Authentication is required for this endpoint.

posthttps://api.paystack.co/transaction/charge_authorization

Body Params

amount

int32

required

Amount in kobo

email

string

required

Customer's email address

authorization_code

string

required

Valid authorization code to charge

reference

string

Unique transaction reference. Only -,., = and alphanumeric characters allowed. System will generate one if none is provided

plan

string

If transaction is to create a subscription to a predefined plan, provide plan code here.

currency

string

Currency in which amount should be charged

metadata

object

Add a custom_fields attribute which has an array of objects if you would like the fields to be added to your transaction when displayed on the dashboard. Sample: {"custom_fields":[{"display_name":"Cart ID","variable_name":"cart_id","value":"8393"}]}

subaccount

string

The code for the subaccount that owns the payment. e.g. ACCT_8f4s1eq7ml6rlzj

transaction_charge

int32

A flat fee to charge the subaccount for this transaction, in kobo. This overrides the split percentage set when the subaccount was created. Ideally, you will need to use this if you are splitting in flat rates (since subaccount creation only allows for percentage split). e.g. 7000 for a 70 naira flat fee.

bearer

string

Who bears Paystack charges? account or subaccount

invoice_limit

int32

Number of invoices to raise during the subscription. Overrides invoice_limit set on plan.

queue

boolean

If you are making a scheduled charge call, it is a good idea to queue them so the processing system does not get overloaded causing transaction processing errors. Send queue:true to take advantage of our queued charging.

Create Subscription

Header Auth

Body Params

customer

string

required

Customer's email address or customer code

plan

string

required

Plan code

authorization

string

required

If customer has multiple authorizations, you can set the desired authorization you wish to use for this subscription here. If this is not supplied, the customer's most recent authorization would be used

start_date

string

Set the date for the first debit. (ISO 8601 format)

Note the email_token attribute for the subscription object. We create one on each subscription so customers can cancel their subscriptions from within the invoices sent to their mailboxes. Since they are not authorized, the email tokens are what we use to authenticate the requests over the API.

Indicate if request should be saved as draft. Defaults to false and overrides send_notification

has_invoice

boolean

Set to true to create a draft invoice (adds an auto incrementing invoice number if none is provided) even if there are no line_items or tax passed

invoice_number

int32

Numeric value of invoice. Invoice will start from 1 and auto increment from there. This field is to help override whatever value Paystack decides. Auto increment for subsequent invoices continue from this point.

Verify Invoice

(no authorization required)

Header Auth

Authorization

Authentication is required for this endpoint.

gethttps://api.paystack.co/paymentrequest/verify/invoice_code

Path Params

invoice_code

string

required

Note that a key is added called pending_amount when you fetch an invoice. This is because when paying for an invoice, you can choose to pay part but not all. Whenever a successful transaction is made, the key updates to reveal what’s left of the invoice to pay. As a rule, the UI (frontend, or POS) should not allow payment of an amount greater than the pending amount.

Disable OTP requirement for Transfers

In the event that you want to be able to complete transfers programmatically without use of OTPs, this endpoint helps disable that….with an OTP. No arguments required. You will get an OTP.

Header Auth

Authorization

Authentication is required for this endpoint.

posthttps://api.paystack.co/transfer/disable_otp

In the event that you want to be able to complete transfers programmatically without use of OTPs, this endpoint helps disable that….with an OTP. No arguments required. An OTP is sent to you on your business phone.

Check pending charge

When you get "pending" as a charge status or if there was an exception when calling any of the /charge endpoints, wait 10 seconds or more, then make a check to see if its status has changed. Don't call too early as you may get a lot more pending than you should.

Resolve Phone Number

Using the Truecaller API you can verify the authenticity of a customer. It returns the customer's name, phone number, email, social media handles and organization as available on their Truecaller profile.

Header Auth

Authorization

Authentication is required for this endpoint.

posthttps://api.paystack.co/verifications

Body Params

verification_type

string

required

truecaller

phone

string

required

Customer phone number starting with country code (without the + prefix)