API Overview
The ZevPay Checkout REST API lets you create and manage payments, virtual PayIDs, virtual accounts, invoices, and transfers programmatically.
Base URL
https://api.zevpaycheckout.comAuthentication
All endpoints require an API key via the x-api-key header or Authorization: Bearer <key> header. See Authentication.
Permissions
Each API key has a permissions array that controls which product APIs it can access. See API Key Permissions for details.
| Permission | Products | Description |
|---|---|---|
checkout | Checkout Sessions | Initialize and manage checkout payment sessions |
virtual_payid | Static PayID, Dynamic PayID | Create and manage virtual PayIDs |
virtual_account | Virtual Accounts | Create temporary bank accounts for collecting payments |
invoices | Invoices | Create and manage programmable invoices |
transfers | Transfers | Programmatically send money from a linked wallet |
Legacy keys
API keys created before the permissions system have an empty permissions array. These keys retain access to all non-transfer products automatically. Only the transfers permission must be explicitly granted.
Response format
All successful responses follow this format:
{
"success": true,
"data": {
// Response payload
}
}Error responses return the appropriate HTTP status code. See Errors for details:
{
"success": false,
"error": {
"code": "HTTP_ERROR",
"message": "A human-readable error description"
},
"correlationId": "-"
}Endpoints
Checkout Sessions
| Method | Path | Permission | Auth | Description |
|---|---|---|---|---|
POST | /v1/checkout/session/initialize | checkout | Secret or Public key | Create a checkout session |
POST | /v1/checkout/session/:id/payment-method | checkout | Public key | Select payment method |
GET | /v1/checkout/session/:id/verify | checkout | Secret or Public key | Check payment status |
GET | /v1/checkout/session/:id | checkout | Public key | Get full session details |
Virtual PayID
| Method | Path | Permission | Auth | Description |
|---|---|---|---|---|
POST | /v1/checkout/static-payid | virtual_payid | Secret key | Create a static PayID |
GET | /v1/checkout/static-payid | virtual_payid | Secret key | List static PayIDs |
GET | /v1/checkout/static-payid/:id | virtual_payid | Secret key | Get a static PayID |
PUT | /v1/checkout/static-payid/:id | virtual_payid | Secret key | Update a static PayID |
DELETE | /v1/checkout/static-payid/:id | virtual_payid | Secret key | Deactivate a static PayID |
POST | /v1/checkout/static-payid/:id/reactivate | virtual_payid | Secret key | Reactivate a static PayID |
POST | /v1/checkout/dynamic-payid | virtual_payid | Secret key | Create a dynamic PayID |
GET | /v1/checkout/dynamic-payid | virtual_payid | Secret key | List dynamic PayIDs |
GET | /v1/checkout/dynamic-payid/:id | virtual_payid | Secret key | Get a dynamic PayID |
Virtual Accounts
| Method | Path | Permission | Auth | Description |
|---|---|---|---|---|
POST | /v1/checkout/virtual-account | virtual_account | Secret key | Create a virtual account |
GET | /v1/checkout/virtual-account | virtual_account | Secret key | List virtual accounts |
GET | /v1/checkout/virtual-account/:id | virtual_account | Secret key | Get a virtual account |
Invoices
| Method | Path | Permission | Auth | Description |
|---|---|---|---|---|
POST | /v1/checkout/invoice | invoices | Secret key | Create an invoice |
GET | /v1/checkout/invoice | invoices | Secret key | List invoices |
GET | /v1/checkout/invoice/:id | invoices | Secret key | Get an invoice |
PUT | /v1/checkout/invoice/:id | invoices | Secret key | Update a draft invoice |
POST | /v1/checkout/invoice/:id/send | invoices | Secret key | Send an invoice |
POST | /v1/checkout/invoice/:id/void | invoices | Secret key | Void an invoice |
Transfers
| Method | Path | Permission | Auth | Description |
|---|---|---|---|---|
GET | /v1/checkout/transfer/banks | — | Secret key | List supported banks |
POST | /v1/checkout/transfer/banks/resolve | — | Secret key | Verify a bank account |
POST | /v1/checkout/transfer/charges | transfers | Secret key | Calculate transfer fees |
GET | /v1/checkout/transfer/balance | transfers | Secret key | Get wallet balance |
POST | /v1/checkout/transfer | transfers | Secret key | Send money |
GET | /v1/checkout/transfer | transfers | Secret key | List transfers |
GET | /v1/checkout/transfer/:reference | transfers | Secret key | Get a transfer |
GET | /v1/checkout/transfer/:reference/verify | transfers | Secret key | Verify transfer status |
Wallet Management
| Method | Path | Permission | Auth | Description |
|---|---|---|---|---|
GET | /v1/checkout/wallet | transfers | Secret key (admin) | Get wallet details |
PATCH | /v1/checkout/wallet | transfers | Secret key (admin) | Update wallet settings |
GET | /v1/checkout/wallet/members | transfers | Secret key (admin) | List wallet members |
POST | /v1/checkout/wallet/members | transfers | Secret key (admin) | Add a member |
DELETE | /v1/checkout/wallet/members/:payId | transfers | Secret key (admin) | Remove a member |
PATCH | /v1/checkout/wallet/members/:payId | transfers | Secret key (admin) | Update member settings |
Rate limits
All endpoints are rate-limited to 100 requests per minute per API key. The session initialization endpoint has a stricter limit of 30 requests per minute.
If you exceed the limit, you'll receive a 429 Too Many Requests response. See Rate Limiting for details and best practices.
Request size limits
Request bodies are limited to 1 MB. This is more than sufficient for all API operations.
Versioning
The API is versioned via the URL path (/v1/). Breaking changes will result in a new version.