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

sp_sk_test_... keys produce simulated transactions — no real money moves.

Authentication

Bearer token on every request:
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

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

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