Workers can send funds from their wallet to saved beneficiaries — bank accounts, mobile money, e-wallets, cards, and more across 100+ countries.
Payment Methods & Requirements
Before adding a beneficiary, check which payment methods are available for the destination country and what fields are required.
List available payment methods
curl -X GET 'https://api.cadanapay.com/v1/payment-methods' \
-H 'Authorization: Bearer YOUR_API_KEY'
Response:
{
"country": "BR",
"paymentMethods": [
{ "type": "bank", "currency": "BRL", "status": "active" },
{ "type": "proxy", "currency": "BRL", "status": "active" },
{ "type": "swift", "currency": "BRL", "status": "active" }
]
}
Get field requirements for a corridor
Each country + currency + payment method combination has specific field requirements. Use the payment requirements endpoint to get the JSON schema for the paymentDetails object.
curl -X GET 'https://api.cadanapay.com/v1/payment-requirements' \
-H 'Authorization: Bearer YOUR_API_KEY'
This returns a JSON Schema describing which fields are required, valid values for enums (e.g. bank codes), and validation rules.
Get payout providers
For countries with multiple bank or mobile money providers, retrieve the list of supported providers.
curl -X GET 'https://api.cadanapay.com/v1/providers' \
-H 'Authorization: Bearer YOUR_API_KEY'
Supported payment methods
| Method | Description | Use case |
|---|
bank | Local bank transfer | Most countries |
momo | Mobile money | Africa (M-Pesa, MTN, etc.) |
ach | ACH transfer | United States |
swift | SWIFT/wire transfer | International |
wallet | Cadana wallet | User-to-user transfers |
crypto | Crypto wallet | BTC, USDC, ETH, etc. |
proxy | Proxy payment | UPI (India), etc. |
Beneficiaries
A beneficiary is a saved payment destination. Each beneficiary has a payment method and is scoped to a specific user.
Add a beneficiary
curl -X POST 'https://api.cadanapay.com/v1/users/{userId}/beneficiaries' \
-H 'Authorization: Bearer YOUR_API_KEY'
Response:
{
"id": "7a7f80a6-1665-4f64-9ef3-d5f90f8f309b"
}
Manage beneficiaries
Get an FX Quote
Before creating a transaction, get an FX quote to lock in the conversion rate. Quotes are temporary — use the returned id as the quoteId when creating the transaction.
curl -X POST 'https://api.cadanapay.com/v1/fx-quotes' \
-H 'Authorization: Bearer YOUR_API_KEY'
Response:
{
"id": "57c74c5d-38a0-41e7-a19e-161f16dc4898",
"from": "USD",
"to": "PHP",
"rate": "56.1234",
"expirationTimestamp": "2025-05-29T21:42:52Z"
}
Quotes expire — check expirationTimestamp and request a new quote if the previous one has expired.
Create a Transaction
Send funds from the user’s wallet to a beneficiary. You can specify either a destination amount or a source amount — Cadana handles FX conversion using the quote rate.
Send a specific destination amount
Send exactly 500 PHP to the beneficiary. Cadana deducts the equivalent USD from the wallet.
curl -X POST 'https://api.cadanapay.com/v1/users/{userId}/transactions' \
-H 'Authorization: Bearer YOUR_API_KEY'
Send a specific source amount
Send 10 USD worth of the destination currency to the beneficiary.
curl -X POST 'https://api.cadanapay.com/v1/users/{userId}/transactions' \
-H 'Authorization: Bearer YOUR_API_KEY'
Response:
{
"id": "d0137ede-7df1-4a54-8206-b3ab7b03876f"
}
Transaction fields
| Field | Required | Description |
|---|
type | Yes | payout |
beneficiaryId | Yes | The beneficiary to send to |
quoteId | Yes | FX quote ID from POST /v1/fx-quotes |
amount + sourceCurrency | One of | Destination amount — send exactly this amount in the destination currency |
sourceAmount | One of | Source amount — deduct exactly this amount from the wallet |
reference | Yes | Your unique reference for idempotency |
Track the Transaction
curl -X GET 'https://api.cadanapay.com/v1/users/{userId}/transactions/d0137ede-7df1-4a54-8206-b3ab7b03876f' \
-H 'Authorization: Bearer YOUR_API_KEY'
Response:
{
"id": "d0137ede-7df1-4a54-8206-b3ab7b03876f",
"type": "payout",
"beneficiaryId": "c871b333-e129-409c-aabd-7cfb55a967cc",
"quoteId": "57c74c5d-38a0-41e7-a19e-161f16dc4898",
"amount": { "value": "500.00", "currency": "PHP" },
"sourceAmount": { "value": "9.00", "currency": "USD" },
"feeAmount": { "value": "0.10", "currency": "USD" },
"fxRate": "56.1234",
"reference": "3f70be8e-426f-4e89-b883-9c97a1c334d5",
"status": "succeeded",
"createdTimestamp": 1748478276,
"lastUpdatedTimestamp": 1748478276
}
Transaction statuses
| Status | Description |
|---|
initiated | Transaction created, processing has started |
processing | Funds are being sent to the beneficiary |
succeeded | Funds delivered |
failed | Transaction failed |
List all transactions
curl -X GET 'https://api.cadanapay.com/v1/users/{userId}/transactions' \
-H 'Authorization: Bearer YOUR_API_KEY'
Filter by reference or type using query parameters.
Webhook Events
Subscribe to transaction events for real-time status updates:
| Event | Description |
|---|
transaction.initiated | Transaction created and processing has started |
transaction.succeeded | Funds delivered to the beneficiary |
transaction.failed | Transaction failed |
See Events for webhook payloads and Webhooks to configure your endpoint.
Next Steps