Referência da API/Primeiros passos
Pague qualquer pessoa, em qualquer lugar, a partir do código.
Pagamentos para contas bancárias em 40 moedas, dinheiro móvel, carteiras ou um número de telefone. Lotes com aprovações, links de pagamento, contas virtuais e webhooks assinados. Gerada a partir da especificação OpenAPI; taxas, limites e prazos de chegada voltam em cada canal e cada cotação.
Um único saldo em USDC. Financie por transferência bancária em USD, EUR ou MXN, ou on-chain. Pague para contas bancárias em 40 moedas, uma conta de pagamento móvel, uma carteira ou um telefone ou e-mail. O primeiro pagamento são cinco chamadas: listar canais, salvar um destinatário com os campos do corredor, cotar, enviar com uma chave de idempotência e consultar ou assinar.
List channels
/channelsEvery destination with status, coverage, recipient type, limits, typical arrival and your fee at your current tier.
Resposta 200
{
"data": [
{
"id": "spei_mxn",
"status": "live",
"country": "MX",
"currency": "MXN",
"rail": "spei",
"recipient_type": "bank_account",
"arrival": {
"min": "PT0M",
"max": "PT5M"
},
"limits": {
"min": "30.12",
"max": "300000.00",
"currency": "USDC"
},
"fee": {
"percent": "0.35",
"flat": "0.50",
"currency": "USDC"
}
},
{
"id": "claim_link",
"status": "live",
"country": null,
"currency": "USDC",
"rail": "claim_link",
"recipient_type": "phone",
"arrival": {
"min": "PT0M",
"max": "P30D"
},
"limits": {
"min": "1.00",
"max": "50000.00",
"currency": "USDC"
},
"fee": {
"percent": "0",
"flat": "0",
"currency": "USDC"
}
}
]
}Create a recipient
/recipientsParâmetros
Idempotency-Keyheaderstringopcional
| Campo | Tipo | obrigatório | Observações |
|---|---|---|---|
| type | RecipientType | obrigatório | |
| country | string | opcional | |
| currency | string | opcional | |
| name | string | opcional | |
| kind | enum: individual, business | opcional | |
| external_id | string | opcional | |
| bank_account | object | opcional | Fields from the channel requirements. |
| pagomovil | object | opcional | |
| wallet | object | opcional | |
| phone | object | opcional | |
| object | opcional | ||
| decaf_user | object | opcional |
Requisição
{
"type": "bank_account",
"country": "HK",
"currency": "HKD",
"external_id": "vendor-4471",
"name": "Brightway Electronics Ltd",
"kind": "business",
"bank_account": {
"bank_name": "HSBC",
"account_number": "123456789012",
"swift": "HSBCHKHHHKH",
"id_document_number": "12345678-000-01-23-4"
}
}Resposta 201
{
"id": "rcp_9d1a",
"type": "bank_account",
"country": "HK",
"currency": "HKD",
"name": "Brightway Electronics Ltd",
"kind": "business",
"external_id": "vendor-4471",
"status": "ready",
"channels": [
"chats_hkd"
],
"bank_account": {
"bank_name": "HSBC",
"account_number": "•••• 9012",
"swift": "HSBCHKHHHKH"
},
"created_at": "2026-09-16T14:59:00Z"
}Erros: 422 recipient_not_ready
Create a quote
/quotesPrice one payout on one channel. Provide source_amount or destination_amount. Valid 60 seconds.
| Campo | Tipo | obrigatório | Observações |
|---|---|---|---|
| channel | string | obrigatório | |
| source_amount | Amount | opcional | Decimal string. Up to two decimals for fiat, six for USDC. |
| destination_amount | Amount | opcional | Decimal string. Up to two decimals for fiat, six for USDC. |
Requisição
{
"channel": "chats_hkd",
"source_amount": "2500.00"
}Resposta 201
{
"id": "qt_5m2n",
"channel": "chats_hkd",
"source_amount": "2500.00",
"source_currency": "USDC",
"destination_amount": "19491.72",
"destination_currency": "HKD",
"rate": "7.8280",
"fees": {
"provider": "1.25",
"decaf": "8.75",
"fx_spread": "3.90",
"total": "13.90",
"currency": "USDC"
},
"arrival": {
"min": "PT1M",
"max": "P3D"
},
"expires_at": "2026-09-16T15:04:05Z"
}Erros: 400 validation_error, channel_unavailable, amount_out_of_range
Create a payout
/payoutsOne transfer to one recipient on one channel. Pass a saved recipient_id or an inline recipient. Either source_amount or destination_amount. quote_id is optional; without it the payout is priced at execution.
Parâmetros
Idempotency-Keyheaderstringopcional
| Campo | Tipo | obrigatório | Observações |
|---|---|---|---|
| recipient_id | string | opcional | |
| recipient | InlineRecipient | opcional | |
| channel | string | obrigatório | |
| quote_id | string | opcional | |
| source_amount | Amount | opcional | Decimal string. Up to two decimals for fiat, six for USDC. |
| destination_amount | Amount | opcional | Decimal string. Up to two decimals for fiat, six for USDC. |
| reference | string | opcional | |
| memo | string | opcional | Travels with the payment where the rail supports it. |
| message | string | opcional | Claim links only. Shown to the recipient. |
Requisição
{
"recipient_id": "rcp_9d1a",
"channel": "spei_mxn",
"quote_id": "qt_5m2n",
"source_amount": "1000.00",
"reference": "INV-2026-0912",
"memo": "Freight, week 37"
}Resposta 201
{
"id": "po_1b7e",
"status": "submitted",
"channel": "spei_mxn",
"recipient_id": "rcp_9d1a",
"source_amount": "1000.00",
"source_currency": "USDC",
"destination_amount": "16865.35",
"destination_currency": "MXN",
"rate": "16.86535",
"fees": {
"provider": "0.50",
"decaf": "5.00",
"total": "5.50",
"currency": "USDC"
},
"reference": "INV-2026-0912",
"estimated_arrival": "2026-09-16T15:20:00Z",
"provider_reference": null,
"attempts": 1,
"created_at": "2026-09-16T15:01:12Z"
}Erros: 400 validation_error, channel_unavailable, amount_out_of_range; 402 insufficient_balance; 409 idempotency_conflict; 410 quote_expired
Exemplos: Create a payout
curl -X POST https://sandbox.api.decaf.so/v1/payouts \
-H "Authorization: Bearer $DECAF_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"recipient_id":"rcp_9d1a","channel":"spei_mxn","quote_id":"qt_5m2n","source_amount":"1000.00","reference":"INV-2026-0912","memo":"Freight, week 37"}'Get a payout
/payouts/{id}Includes an attempts array with timing, status and provider error per attempt.
Parâmetros
idpathstringobrigatório
FAQ da referência
Perguntas sobre a referência.
Obtenha acesso
Construa contra o sandbox esta semana.
Conte-nos os corredores de que precisa e quem você paga. As chaves de sandbox são emitidas por uma pessoa.