Skip to main content
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

bash
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.
bash
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.
bash
curl -X GET 'https://api.cadanapay.com/v1/providers' \
  -H 'Authorization: Bearer YOUR_API_KEY'

Supported payment methods

MethodDescriptionUse case
bankLocal bank transferMost countries
momoMobile moneyAfrica (M-Pesa, MTN, etc.)
achACH transferUnited States
swiftSWIFT/wire transferInternational
walletCadana walletUser-to-user transfers
cryptoCrypto walletBTC, USDC, ETH, etc.
proxyProxy paymentUPI (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

bash
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.
bash
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.
bash
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.
bash
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

FieldRequiredDescription
typeYespayout
beneficiaryIdYesThe beneficiary to send to
quoteIdYesFX quote ID from POST /v1/fx-quotes
amount + sourceCurrencyOne ofDestination amount — send exactly this amount in the destination currency
sourceAmountOne ofSource amount — deduct exactly this amount from the wallet
referenceYesYour unique reference for idempotency

Track the Transaction

bash
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

StatusDescription
initiatedTransaction created, processing has started
processingFunds are being sent to the beneficiary
succeededFunds delivered
failedTransaction failed

List all transactions

bash
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:
EventDescription
transaction.initiatedTransaction created and processing has started
transaction.succeededFunds delivered to the beneficiary
transaction.failedTransaction failed
See Events for webhook payloads and Webhooks to configure your endpoint.

Next Steps