Base URL and authentication
Every endpoint is mounted under a versioned base URL. Use the dev base URL while building.x-api-key header. For hot-path calls (identity and money), exchange the key for a short-lived POS terminal JWT and present it as a bearer token. See Authentication for the full credential model and key lifecycle.
Sandbox access is granted per partner agreement. Request sandbox credentials from your Feddi contact.
The response envelope
Every response, success or error, uses the same envelope:ok, data, error, and meta. Error codes are strings (for example INSUFFICIENT_FUNDS), never a bare HTTP status number. Branch on error.code, not on the HTTP status.
Discover what your integration can do
Two endpoints describe your integration at runtime. Read them before you assume any enum, currency, or feature.1
Read GET /capabilities
Returns the credential types, currencies, and features enabled for your
x-api-key. Empty collections mean a feature is not provisioned for your integration, not that it is unsupported globally.2
Read GET /openapi
Serves the current OpenAPI 3.1 contract. Validate your request bodies against this document rather than relying on generated types.
Two money classes
Balances carry two distinct classes of value. Keep them separate in your UI and your reconciliation.Actual
Real, spendable balance the customer topped up. Reported in minor units with an explicit currency.
Promotional
Cashback and reload bonuses. Locked or released, expirable, clawback-able, and spent before actual balance. See Money: actual vs promotional.
Where to go next
Quickstart
Make your first authenticated call.
Make your first payment
Identify a customer and debit their wallet, end to end.
Build with an AI agent
Point your AI coding agent at the runtime contract.
Authentication
The two-credential model and key lifecycle.
Conventions
Envelope, money, idempotency, versioning, pagination.
API Reference
Error codes, recovery, and the endpoint reference.