Set up your environment
Get your API credentials, fund your Sandbox account, and send your first payout, all in a few minutes.Prerequisites
Before you begin, ensure you have:- A Zuba account with API access
- Your API credentials (Client ID and Client Secret)
- Basic knowledge of REST APIs
Get your API credentials
- Log in to your Zuba Sandbox Dashboard
- Navigate to API Settings
- Click Generate API Key or Create API Credentials
- Save your Client ID, Client Secret, Token URL, and Audience securely
Rate Limits
The API enforces rate limits to ensure fair usage and platform stability:
Limits are per client IP address, and some endpoints carry their own.
If you exceed these limits, you’ll receive a
429 Too Many Requests response. Implement exponential backoff in your integration to handle rate limiting gracefully.
Create your first beneficiary
Before sending payouts, create a beneficiary with their banking details. This example creates a Nigerian beneficiary with an NGN bank account; the payout in the next step delivers to it over the localbank_transfer rail:
bankCode accepts either the 3-digit CBN short code (e.g. 044) or the 6-digit NIP long code; crAccount is the 10-digit account number. The payout currency must match the currency of one of the beneficiary’s accounts. For other destination currencies and account shapes (IBAN, US bank accounts, crypto wallets, mobile money), see Payouts.Check your account balance
Before sending payouts, ensure your account has sufficient funds. You can check your balance across all currencies:Payouts fail if your balance is zero. In the Sandbox you can fund your workspace yourself; see Sandbox testing. In production, fund your account via the dashboard or contact your account manager.
Send your first payout
Now send a payout to your beneficiary, referencing them by ID from the previous step (recommended).amount is passed as a decimal string to avoid floating-point precision issues.
Currency fields: inputCurrency is the balance you pay from, while currency is what the beneficiary receives (converted automatically if different).
Sender types: senderInfo.type is 'individual' (default when omitted) for natural-person senders, or 'business' for legal entities. The examples below use an individual sender; for a business sender, see Business sender example.
clientRef is your idempotency reference: it must be unique per workspace, and you can look a payout up by it later. For safe retries, you can also send an optional Idempotency-Key header on POST /v1/payouts: a repeat with the same key and body replays the original response instead of creating a duplicate payout.Business sender example
When the sender is a legal entity rather than a natural person, setsenderInfo.type to 'business' and provide companyName, registrationNumber, and country. The registrationNumber is the company’s official registration identifier and is used as the AML pivot for sanctions and UBO screening. Business senders do not carry firstName, lastName, or dateOfBirth.
Track payout status
Check the status of your payout at any time:status is one of created, queued, processing, paid, failed, or cancelled; see Payout statuses for what each means. For push notifications instead of polling, set up webhooks.
Next Steps
Authentication
Learn about secure authentication methods
Webhooks
Set up real-time payout notifications
Batch Payouts
Process multiple payouts efficiently
API Reference
Explore the complete API documentation