Skip to main content
The Zentra API is organized around REST principles. Our API has predictable resource-oriented URLs, accepts JSON-encoded request bodies, returns JSON-encoded responses, and uses standard HTTP response codes, authentication, and verbs.

Base URL

All API requests should be made to:
The reviewed gateway contract is rooted at /api/v1/*. When an older page in this workspace still shows a legacy /v1/* example, prefer the reviewed route manifest, the reviewed OpenAPI bundle, and the stronger route-specific pages until that leaf page is reconciled.

Control Plane Model

Zentra is documented as a reviewed public API control plane:
  • reviewed money movement primitives: transfers, payments, and webhook delivery
  • reviewed optional and tenant-gated rails: identity, virtual accounts, card issuing, and billpay
  • internal primitives and controls: auth, fees, routing, and operator tooling
  • reference accelerators: higher-level product flows you can build yourself on top of the primitives
The reviewed public route manifest currently includes transfers, payments, identity, cards, virtual accounts, billpay, and webhooks. Draft, tenant-specific, or reference namespaces still include customers, wallets, analytics, plans, and subscriptions.

Current Documentation Status

The API Reference pages in this workspace are not uniformly complete yet. Some endpoint pages still exist as explicit placeholders while the reviewed OpenAPI contract and the stronger endpoint pages continue to expand. Today, the most trustworthy endpoint-level documentation is concentrated in:
  • payments
    • charge
    • refund
    • verify
  • transfers
    • overview
    • create
    • get
    • list
    • bulk
    • resolve-account
    • banks
  • cards
    • overview
    • create
    • list
    • fund
    • balance
    • funding-history
    • auto-reload
    • jit-fund
    • security
    • lock
    • unlock
  • virtual accounts
    • overview
    • create
    • list
    • get
    • close
  • webhooks
    • overview
    • configure
    • verify-signature
    • events
The remaining placeholder backlog is concentrated in draft, tenant-specific, or reference-only namespaces and should not be read as proof of reviewed public support:
  • customers
  • wallets
  • analytics
  • plans
  • subscriptions
  • payments/initialize
  • a small set of identity endpoint pages that are reviewed but still tenant-gated and not yet documented in full page detail
If a page is explicitly labeled placeholder, tenant-specific, or draft, treat it as backlog or compatibility guidance, not as the endpoint contract itself. When a page and the reviewed route contract disagree, prefer the reviewed public OpenAPI surface, the reviewed route manifest, and the stronger route-specific pages in this workspace. This means the docs are useful as a source of truth for the reviewed surfaces above, but they are not yet complete enough to treat the entire API reference tree as fully implemented contract coverage.

API Versioning

The Zentra API uses versioning in the URL path. The current version is v1. When we make backwards-incompatible changes, we’ll release a new version. Backwards-compatible changes don’t require a new version:
  • Adding new endpoints
  • Adding new optional request parameters
  • Adding new properties to responses
  • Changing the order of properties in responses

Request Format

All POST, PUT, and PATCH requests must include a Content-Type: application/json header and a JSON body.

Response Format

All responses are returned in JSON format with the following structure:

Success Response

Error Response

HTTP Status Codes

Zentra uses conventional HTTP response codes:

Idempotency

To prevent duplicate operations (especially for financial transactions), use idempotency keys. Pass a unique idempotency_key in your request:
If you retry a request with the same idempotency key, you’ll get the same response as the original request.
Idempotency keys are valid for 24 hours. After that, the same key can be reused.

Rate Limiting

API requests are subject to rate limits based on your plan: Rate limit information is included in response headers:
See Rate Limits for details.

Pagination

List endpoints return paginated results. Use page and limit parameters:
Response includes pagination metadata:
See Pagination for details.

Filtering & Sorting

Many list endpoints support filtering and sorting:

Timestamps

All timestamps are returned in ISO 8601 format (UTC):

Testing

Use our sandbox environment for testing:
  • Base URL: https://sandbox.api.usezentra.com
  • API Keys: Use keys starting with sk_sandbox_
  • Test Data: See Test Data for test cards, BVNs, etc.
Sandbox and production are completely separate environments. Data does not sync between them.

API Resources

Identity

Reviewed, tenant-gated verification rails and decisioning

Virtual Accounts

Optional add-on for inbound collection rails

Transfers

Primitive money movement and payout orchestration

Payments

Optional add-on for charges, refunds, and saved payment methods

Cards

Optional add-on for issuing and card controls

Webhooks

Real-time event notifications

Draft & Reference Namespaces

Customers

Draft customer overlays retained for compatibility

Wallets

Draft wallet overlays retained for compatibility

Analytics

Tenant-specific telemetry and reporting overlays

SDKs

Use our official SDKs for easier integration:

Support

Need help? We’re here for you:

Next Steps

Authentication

Learn how to authenticate requests

Errors

Understand error responses

Quickstart

Make your first API call

Webhooks

Set up event notifications