Prerequisites
- A Cadana business account with an Org API key
- Review Authentication for API key setup
Step 0: Fund Your Wallet
Payouts are sent from your Cadana wallet balance. Before you can send a payment, make sure your wallet is funded.Check Your Balance
Response:available field to determine how much you can send — processing reflects amounts currently in transit. All values are in the lowest denomination (e.g., cents).
Get Funding Instructions
To add funds, callGET /v1/funding-details to get the bank details for depositing into your wallet:
bash
Step 1: Discover Requirements
Before creating a beneficiary, query the corridor requirements and available providers.Get Payment Requirements
Returns the required fields for a given country, currency, and payment method: The response is a JSON schema describing mandatory fields, validation patterns, and allowed values. See Payment Requirements for how to interpret the schema and build dynamic forms from it.Get Supported Providers
Returns banks and mobile money providers you can send payments to: Response:code as the bankCode when creating beneficiaries.
Step 2: Create a Beneficiary
A beneficiary stores the recipient’s payment details. Create it once, then reference it for every payout to that recipient.Upload KYC Document
Beneficiary creation requires a KYC identity document. Upload it first: 2a. Get an upload URL: Response:putUrl before it expires:
Bash
Create the Beneficiary
Response:Managing Beneficiaries
Once created, you can list, retrieve, and delete beneficiaries:| Operation | Endpoint |
|---|---|
| List all | GET /v1/beneficiaries |
| Get one | GET /v1/beneficiaries/{beneficiaryId} |
| Delete | DELETE /v1/beneficiaries/{beneficiaryId} |
Step 3: Get an FX Quote
Lock the exchange rate before creating the payout. The returned quoteid is required when submitting the payout.
Response:
Step 4: Create the Payout
Check your balance first, then execute:Check Balance
Generate a Reference
Include a uniquereference to identify the payout in your system. References are useful for:
- Tracking — look up payouts by reference via
GET /v1/payouts?reference=INV-2024-001 - Preventing duplicates — submitting the same reference twice returns a
400error, preventing accidental double payments
Execute Payout
The
amount value is in the lowest denomination of the currency (e.g., cents for USD). 100000 = $1,000.00 USD.Retrying a Failed Payout
If a payout fails, you can retry it by creating a new payout with the same beneficiary. You’ll need a fresh FX quote (the original may have expired) and a new reference, since the original reference is already recorded.Step 5: Track the Payment
Webhooks (Recommended)
Subscribe to transaction events for real-time status updates. See Webhooks to configure your endpoint. Each status change emits a webhook with the following envelope:data payload varies by event:
- transaction.initiated
- transaction.succeeded
- transaction.failed
Payout created, compliance checks in progress.
Status Lifecycle
Polling
Alternatively, poll the payout endpoint for status updates: Response:List Payouts
Retrieve all payouts with optional filters: The endpoint has three modes depending on which parameters you pass:| Mode | When | Behavior |
|---|---|---|
| Reference lookup | reference is set | Returns the single matching payout. All other params are ignored. |
| Paginated list | Default | Returns payouts in pages (default 20). Supports status, startDate, endDate, order (asc/desc, default desc), cursor, and limit. |
| CSV export | format=csv | Returns all matching payouts as a CSV file. Requires startDate and endDate. Order is always desc. |