Skip to main content
The Escrow API is a RESTful JSON API. Most routes require authentication. Use it to create customers, take checkout payments, lock money in a hold, release or refund that hold, and send payouts to a bank. All requests must be made over HTTPS. Unencrypted HTTP is not supported in production.

Base URL

Use this same base URL for test and live. Test vs live is selected by your secret key, not by changing the host. A test key (sk_test_) always uses sandbox data. A live key (sk_live_) uses live data and requires a verified merchant account that has been switched to live mode.

Environments and API keys

Each merchant has test and live keys. The key selects the data plane (sandbox vs live). Publishable keys (pk_) are for client side checkout. Never send a pk_ key as a Bearer token. See Authentication.

HTTP methods

Making requests

Send JSON and include your secret key:
POST routes that create or move money also require Idempotency-Key. See Idempotency.

Requests and responses

Request and response bodies are JSON. Field names are camelCase (requestId, customerId, limit, offset), not snake_case. Successful responses use this envelope:
Failed requests use:
See Errors.

Money

Amounts are integers in naira. Send 200 for ₦200. Do not send kobo. Two customer balances matter: Release does not send money to a bank. It credits the payee’s available. A bank payout is POST /withdrawals.