Prerequisites
- An active Yala sandbox account. Request access from your Yala relationship manager or by emailing developers@useyala.com.
- A sandbox API key (
x-api-key) withCAN_INITIATE_PAYMENTpermission. - A registered business with funded wallets in the currencies you plan to send.
- Currency pairs enabled in your dashboard.
Newly generated API keys can take up to 20-30 minutes to fully propagate. During this window, requests may return
403 Forbidden.1. Configure environments
Choose the right base URL
Choose the right base URL
| Environment | Base URL |
|---|---|
| Production | https://gateway.useyala.com/v1/payout-api/payouts |
| Sandbox | https://gateway.staging.useyala.com/v1/payout-api/payouts |
gateway.staging.useyala.com when testing against the sandbox app.Store your API key securely
Store your API key securely
Save the
x-api-key in your secret manager and inject it at runtime. Avoid hardcoding keys in source control.2. Check wallet balances
Before requesting quotes or initiating payouts, check your available balances by currency:3. Enable currency pairs
Before creating payouts, enable currency pairs in your Yala dashboard. Only enabled pairs are available via API.4. Get payment methods and rates
Call the methods endpoint to get available payment methods, current rates, and required beneficiary fields for your corridor.- Current exchange rate
- Available payment methods (e.g., ALIPAY, WECHAT, SWIFT)
- Required and optional beneficiary fields for each method
- Fees and settlement times
5. Initiate the payout
Important: You must generate anIdempotency-Key client-side before making the request. This prevents duplicate payouts if the request is retried.
id- Save this payout ID for tracking statusstatus- Initial status (PENDING)- Conversion details (exchange rate, amounts)
payoutRef- Human-readable reference
- Debit is always from the source currency wallet—your NGN wallet is debited by the total (source amount + fees).
- System handles FX conversion automatically
- Payout created with status
PENDING
6. Track payout status
Query payout status using the payout ID from the initiate response:PENDING- Payout created or awaiting approval; not yet sent for processingPROCESSING- Payout is being processed (ops, bank, or treasury)SUCCESSFUL- Completed; funds have been sentFAILED- Processing failed (e.g. bank failure)REJECTED- Rejected (e.g. compliance, initiation checks, or bank)
Complete Example
Testing with Postman
Quick start: Import the ready-to-use Postman collection with all payout API endpoints pre-configured at https://docs.useyala.com/resources/postman.json.
- All payout API endpoints (pairs, methods, wallets, quote, initiate, get status, add documents)
- Pre-configured headers (
x-api-key,Idempotency-Key) - Example request bodies
- Environment variable templates
- In Postman, select Import and use
https://docs.useyala.com/resources/postman.json - Create environment with:
YALA_BASE_URL_LOCAL:https://gateway.staging.useyala.com/v1/payout-api/payouts(sandbox)YALA_PAYOUT_API_KEY: Your API key
- Select the environment and start testing
Next steps
End-to-End Flow
Understand how to integrate payout APIs into your application.
Idempotency guide
Learn how to generate and use Idempotency-Key headers.
Get methods endpoint
Understand how to get rates and required fields.
Error handling
Handle validation failures and rate limiting gracefully.
Payout initiation
Review complete endpoint documentation.