How it works
1
Authenticate
Every request carries an API key. Keys are scoped and can be locked to a set of IP addresses. See Authentication.
2
Place an order
POST /v1/orders with a lines array — each line a product and a quantity, plus any input fields the product needs. The order settles from your wallet atomically and starts fulfilling; follow it on the order lifecycle.3
Get the codes
When the order is fulfilled you receive an
order.fulfilled webhook; fetch the codes from the authenticated codes endpoint.Base URL
All requests go to a single base URL over HTTPS:Live and sandbox
Your API key’s environment decides the mode. Asc_test_ key runs in the sandbox: orders are validated and priced exactly like live, but no wallet is charged and the codes returned are deterministic test values. A sc_live_ key runs against your real wallet and real supply.
Conventions
- Money is self-describing: each amount carries its
currencyandminorUnitExponent, so the major-unit value isamount / 10^minorUnitExponentand you never assume the currency. The API settles in FCFA (XOF, which has no minor unit), so an amount of5000means 5000 FCFA, not 50.00. - Timestamps are RFC 3339 (
2026-07-25T09:52:00Z). - List endpoints are cursor-paginated. See Pagination.
Next steps
- Quickstart — place your first order and fetch its codes.
- Order lifecycle — the statuses an order moves through, and the webhook for each.
- Purchase input fields — the values a product needs on an order.
- SDKs — official client libraries for TypeScript, Python, Go and PHP.
- Changelog — API changes, and what counts as a breaking change.