Skip to Content
Checkout

Checkout

The Checkout API has two halves: public endpoints that a customer’s browser uses to pay a payment link (no auth), and authenticated endpoints you use to create and manage those links.

Public checkout

Identified by a payment reference, these endpoints require no authentication and are rate-limited per IP.

EndpointDescription
GET /api/checkout/:referenceGet checkout details
POST /api/checkout/:reference/bank-transferStart a bank-transfer payment
GET /api/checkout/:reference/check-paymentCheck whether payment completed
GET /api/checkout/:reference/eventsPayment timeline events
POST /api/checkout/:reference/refreshRefresh an expired payment link
POST /api/checkout/:reference/cancelCancel an unpaid checkout

Creating and managing payment links is done from your dashboard session (JWT + RBAC), under the /api/payment-links prefix.

MethodEndpointDescription
GET/api/payment-linksList payment links
POST/api/payment-linksCreate a payment link
POST/api/payment-links/batch-salesCreate links for multiple sales at once
GET/api/payment-links/:idGet a payment link
PATCH/api/payment-links/:idUpdate a payment link
DELETE/api/payment-links/:idDelete a payment link
POST/api/payment-links/walletCreate a wallet deposit link
POST/api/payment-links/wallet/dynamicCreate a dynamic wallet deposit link
GET/api/payment-links/walletGet wallet link configuration
POST /api/payment-links
{ "amount": 15000, "currency": "NGN", "description": "Invoice INV-2026-001", "customer": { "name": "Ada Lovelace", "email": "ada@example.com", "phone": "+2348012345678" }, "expiresAt": "2026-02-01T00:00:00.000Z" }

Listen for payment.received webhooks to know the moment a checkout is paid, instead of polling check-payment.

Last updated on