developer.fastpay.ng/docs/getting-started
Getting started
Take your first test payment. You will start a checkout from your server, send your customer to it, and confirm the result.
API basics#
- Architecture
- REST
- Data format
- JSON, UTF-8
- Money
- Whole numbers in the smallest unit of the currency, such as kobo for naira
- Dates
- RFC 3339 timestamps, such as 2026-10-28T09:00:00Z
Test mode
Base URL
https://api.vervapay.com/api/v1Secret key
sk_test_…Never moves real money.
Live mode
Base URL
https://api.vervapay.com/api/v1Secret key
sk_live_…Real payments, once your business is approved.
Test and live use the same address. The key you send decides which one you are in, so there is no separate sandbox URL to switch to.
Request headers
- AuthorizationAlwaysBearer followed by your secret key.
- Content-TypeWhen you send a bodyapplication/json
- Idempotency-KeyWhen creating a customer, link or invoiceA unique value of at least 8 characters, to retry safely.
Get your test keys
Create a free account, then open Settings → API Keys in your dashboard. Your test secret key starts with sk_test_.
Start a checkout
Send the amount in the smallest unit of the currency (kobo for naira), the currency, and your customer's email. Your own reference makes the call safe to repeat: the same reference with the same details returns the original checkout.
curl -X POST "https://api.vervapay.com/api/v1/checkout/sessions" \
-H "Authorization: Bearer $FASTPAY_SECRET_KEY" \
-H "Content-Type: application/json"
-d '{
"amount_minor": 500000,
"currency": "NGN",
"email": "ada@example.com",
"first_name": "Ada",
"last_name": "Obi",
"reference": "order-1001"
}'The response holds the checkout and a link to send your customer to.
{
"data": {
"amount_minor": 500000,
"checkout_url": "https://fastpay.ng/pay/…",
"created_at": "2026-10-28T09:00:00Z",
"currency": "NGN",
"customer_email": "ada@example.com",
"expires_at": "2026-10-28T09:00:00Z",
"id": "6f1c2a52-5d0b-4f7e-9a51-3c7c2f0d8e11",
"mode": "test",
"reference": "order-1001",
"status": "open",
"description": "Order 1001"
}
}Send your customer to checkout
Redirect your customer to checkout_url. They pay by card, bank transfer or USSD on a page that carries your business's name and logo, then return to your callback_url with the reference and status added.
Confirm the payment
Never trust the redirect alone. Fetch the checkout by your reference, or listen for the signed webhook, and fulfil the order only when the status is completed.
curl "https://api.vervapay.com/api/v1/checkout/sessions/order-1001" \
-H "Authorization: Bearer $FASTPAY_SECRET_KEY"