Skip to main content
The SandPay API is documented by an OpenAPI 3.1 spec versioned in the repo and auto-rendered by Mintlify. Each endpoint gets its own interactive reference page (live try-it, request/response schemas, examples).

Base URL

EnvironmentURL
Sandboxhttps://api.sandpay.dev
sp_sk_test_... keys produce simulated transactions — no real money moves.

Authentication

Bearer token on every request:
Authorization: Bearer sp_sk_test_a1b2c3d4...
See Authentication for key format details, rotation, and error codes.

Versioning

The API is versioned in the URL: all public endpoints live under /v1/. Compatible changes (new fields, new endpoints) are deployed directly to /v1. Breaking changes trigger a new version (/v2) with an overlap period of at least 12 months.

Available endpoints

MethodEndpointDescription
GET/v1/healthHealth probe (no auth required).
POST/v1/paymentsCreate a simulated payment.
GET/v1/payments/{id}Retrieve a payment by its tx_id.
GET/v1/paymentsList payments (cursor pagination).
POST/v1/payments/{id}/refundRefund all or part of a collection.
POST/v1/disbursementsFree-form payout (merchant → msisdn).
GET/v1/metaAPI version + capabilities (no auth).

Raw operator response (raw)

Every Payment resource (POST, GET, or list) includes a raw field with the native operator shape (MTN MoMo, Orange Money, Moov, Airtel). In sandbox this shape is synthesised to match the real operator structure, with _simulated: true at the top level. See Scenarios for per-operator examples.

Rate limits

PlanLimit per minute
Trial / Free100 req/min
Pro1 000 req/min
Pro Lifetime1 000 req/min
Customon request
Beyond the threshold, the API returns 429 rate_limited with a Retry-After header. See Errors for the retry strategy.

Quotas

Independently of rate limits, each organisation has a monthly simulation quota (reset on the 1st of the month). Exceeding it returns 402 quota_exceeded. Upgrade your plan from /settings/billing to increase the quota.

OpenAPI spec

The raw spec is versioned in the repo: docs-site/openapi/sandpay.yaml. Mintlify uses it to automatically generate the detailed per-endpoint pages in this section’s sidebar.

See also