Base URLs
| Environment | URL | Description |
|---|---|---|
| Production | https://gateway.useyala.com/v1/payout-api/payouts | Active customer traffic |
| Sandbox | https://gateway.staging.useyala.com/v1/payout-api/payouts | Testing and certification |
Sandbox testing: Use
gateway.staging.useyala.com—put “staging” in front of “gateway.useyala.com” when integrating against the sandbox app.Sandbox credentials are isolated from production. Never mix API keys or base URLs between environments.
Authentication
- All endpoints require the
x-api-keyheader. - Keys are scoped to your Yala tenant—treat them as secrets.
- Rotate keys regularly and store them using a secrets manager.
Postman collection
Download the Payout API Postman collection to run requests from Postman: In Postman: Import, Link, then paste the URL. Set the collection variablesbaseUrl (gateway base URL) and apiKey (your API key).
Common resources
- Business: Represents the entity that owns Yala wallets and authorizes payouts.
- Beneficiary: The endpoint account receiving funds. Include payout rail-specific fields (e.g.,
alipayId,swiftNumber,routingNumber) as required by the selected payment method. - Payout: An instruction to send funds from a Yala wallet to a beneficiary. Each payout has a lifecycle captured in
status. We use five statuses everywhere (API responses and webhooks): PENDING, PROCESSING, SUCCESSFUL, FAILED, REJECTED. See the Webhooks guide for meanings and payload shape. - Exchange rate: Real-time rates returned by
GET /methods. Rates may change between calls—always fetch fresh rates before displaying to users. - Wallets: Manage wallet balances, top ups, and currency holdings from the Yala dashboard. APIs debit these balances; we do not issue virtual account numbers per currency. Debit is always from the source currency wallet—when you initiate a payout with
sourceCurrency: "NGN", the NGN wallet is debited by the total (amount + fees). Use Get Wallet Balances to show available balances before initiating.
Available endpoints
Currency Pairs
- Get Enabled Pairs: List currency pairs enabled for your business with current exchange rates.
Wallets
- Get Wallet Balances: List all business wallet balances (per currency). Use to show available funds before initiating payouts. Debit is always from the source currency wallet—the wallet in the currency you send as
sourceCurrencyis debited.
Payment Methods & Rates
- Get Payment Methods: Get available payment methods, current exchange rates, fees, and required beneficiary fields for a specific corridor. Use this endpoint to build your payout form dynamically.
Payouts
- Initiate Payout: Create a new payout transaction. Requires Idempotency-Key header (client-generated). Returns payout id for tracking.
- Get Payout by ID: Fetch detailed information about a specific payout, including status, conversion details, and timestamps.
Typical Integration Flow
- Enable currency pairs in your Yala dashboard
- Call
GET /methodsto get rates, payment methods, and required fields for your corridor - Display options to your user (rates, methods, settlement times)
- Collect beneficiary information from your user (using required fields from step 2)
- Call
POST /initiatewithIdempotency-Keyheader to create payout - Save
payout.idfrom response to your database - Track status via
GET /:idor webhook notifications
Supported currencies & payout rails
Yala supports payouts across a wide range of currencies—including CNY (RMB), INR, and additional African, European, and North American corridors.| Source currency | Destination currencies | Supported methods |
|---|---|---|
| NGN | NGN, USD, EUR, GBP, CNY, and more | NIP, SWIFT, ALIPAY, WECHAT, and more |
| USD | USD, NGN, GHS, XOF, XAF, ZAR, CAD, EUR, GBP, CNY, INR | WIRE, ACH, SWIFT, NIP, CHINA_WIRE, HK_FPS, FASTER_PAYMENTS, SEPA |
| EUR | EUR, GBP, NGN, CNY | SEPA, SWIFT |
| GBP | GBP, EUR, NGN, CNY | FASTER_PAYMENTS, BACS, SWIFT |
| CNY | CNY | SWIFT, CHINA_WIRE |
| INR | INR | SWIFT |
Currency and Country Codes
- Currency codes: Use ISO 4217 3-letter codes (e.g.,
NGN,USD,CNY,EUR,GBP) - Country codes: Use ISO 3166-1 alpha-3 3-letter codes (e.g.,
NGAfor Nigeria,CHNfor China,USAfor United States)
| Currency | Code | Country | Code |
|---|---|---|---|
| Nigerian Naira | NGN | Nigeria | NGA |
| US Dollar | USD | United States | USA |
| Chinese Yuan | CNY | China | CHN |
| Euro | EUR | Germany | DEU |
| Euro | EUR | France | FRA |
| British Pound | GBP | United Kingdom | GBR |
| Indian Rupee | INR | India | IND |
| Ghanaian Cedi | GHS | Ghana | GHA |
| South African Rand | ZAR | South Africa | ZAF |
| Canadian Dollar | CAD | Canada | CAN |
- Use GET /pairs endpoint to see enabled currency pairs for your business
- Use GET /methods endpoint with a corridor to see supported currencies and countries
- See the Currency and Country Codes Reference guide for a quick reference table and best practices
- Reference ISO standards:
- ISO 4217 Currency Codes - Official currency code list
- ISO 3166-1 Country Codes - Official country code list
Yala currently does not provide virtual IBANs or account numbers in these currencies. Fund and reconcile your wallets directly within the Yala app, then invoke the payout APIs to move balances to external beneficiaries.
Webhooks
Subscribe to payout status change notifications by registering an HTTPS URL via the API or in the Yala app. We POST a JSON payload to your URL whenever a payout’s status changes (e.g. toPROCESSING, SUCCESSFUL, or FAILED).
Payload includes: eventType, deliveryId (for idempotency), occurredAt, and data with payoutId, businessId, oldStatus, newStatus, changedAt, and optional reason. You can optionally set a secret when registering; we then send X-Yala-Signature: sha256=<hex> (HMAC-SHA256 of the raw body) so you can verify requests.
See the Webhooks guide for subscription API, payload shape, signature verification, and best practices.
Rate limits
- Default rate limit: 5 requests per second per API key.
- Monthly quota: 10,000 requests per month per API key.
- Requests above limits return HTTP
429and should be retried with backoff.