Skip to content

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.com

Authentication

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.

PermissionProductsDescription
checkoutCheckout SessionsInitialize and manage checkout payment sessions
virtual_payidStatic PayID, Dynamic PayIDCreate and manage virtual PayIDs
virtual_accountVirtual AccountsCreate temporary bank accounts for collecting payments
invoicesInvoicesCreate and manage programmable invoices
transfersTransfersProgrammatically 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:

json
{
  "success": true,
  "data": {
    // Response payload
  }
}

Error responses return the appropriate HTTP status code. See Errors for details:

json
{
  "success": false,
  "error": {
    "code": "HTTP_ERROR",
    "message": "A human-readable error description"
  },
  "correlationId": "-"
}

Endpoints

Checkout Sessions

MethodPathPermissionAuthDescription
POST/v1/checkout/session/initializecheckoutSecret or Public keyCreate a checkout session
POST/v1/checkout/session/:id/payment-methodcheckoutPublic keySelect payment method
GET/v1/checkout/session/:id/verifycheckoutSecret or Public keyCheck payment status
GET/v1/checkout/session/:idcheckoutPublic keyGet full session details

Virtual PayID

MethodPathPermissionAuthDescription
POST/v1/checkout/static-payidvirtual_payidSecret keyCreate a static PayID
GET/v1/checkout/static-payidvirtual_payidSecret keyList static PayIDs
GET/v1/checkout/static-payid/:idvirtual_payidSecret keyGet a static PayID
PUT/v1/checkout/static-payid/:idvirtual_payidSecret keyUpdate a static PayID
DELETE/v1/checkout/static-payid/:idvirtual_payidSecret keyDeactivate a static PayID
POST/v1/checkout/static-payid/:id/reactivatevirtual_payidSecret keyReactivate a static PayID
POST/v1/checkout/dynamic-payidvirtual_payidSecret keyCreate a dynamic PayID
GET/v1/checkout/dynamic-payidvirtual_payidSecret keyList dynamic PayIDs
GET/v1/checkout/dynamic-payid/:idvirtual_payidSecret keyGet a dynamic PayID

Virtual Accounts

MethodPathPermissionAuthDescription
POST/v1/checkout/virtual-accountvirtual_accountSecret keyCreate a virtual account
GET/v1/checkout/virtual-accountvirtual_accountSecret keyList virtual accounts
GET/v1/checkout/virtual-account/:idvirtual_accountSecret keyGet a virtual account

Invoices

MethodPathPermissionAuthDescription
POST/v1/checkout/invoiceinvoicesSecret keyCreate an invoice
GET/v1/checkout/invoiceinvoicesSecret keyList invoices
GET/v1/checkout/invoice/:idinvoicesSecret keyGet an invoice
PUT/v1/checkout/invoice/:idinvoicesSecret keyUpdate a draft invoice
POST/v1/checkout/invoice/:id/sendinvoicesSecret keySend an invoice
POST/v1/checkout/invoice/:id/voidinvoicesSecret keyVoid an invoice

Transfers

MethodPathPermissionAuthDescription
GET/v1/checkout/transfer/banksSecret keyList supported banks
POST/v1/checkout/transfer/banks/resolveSecret keyVerify a bank account
POST/v1/checkout/transfer/chargestransfersSecret keyCalculate transfer fees
GET/v1/checkout/transfer/balancetransfersSecret keyGet wallet balance
POST/v1/checkout/transfertransfersSecret keySend money
GET/v1/checkout/transfertransfersSecret keyList transfers
GET/v1/checkout/transfer/:referencetransfersSecret keyGet a transfer
GET/v1/checkout/transfer/:reference/verifytransfersSecret keyVerify transfer status

Wallet Management

MethodPathPermissionAuthDescription
GET/v1/checkout/wallettransfersSecret key (admin)Get wallet details
PATCH/v1/checkout/wallettransfersSecret key (admin)Update wallet settings
GET/v1/checkout/wallet/memberstransfersSecret key (admin)List wallet members
POST/v1/checkout/wallet/memberstransfersSecret key (admin)Add a member
DELETE/v1/checkout/wallet/members/:payIdtransfersSecret key (admin)Remove a member
PATCH/v1/checkout/wallet/members/:payIdtransfersSecret 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.

ZevPay Checkout Developer Documentation