Skip to main content
This guide covers the currently enabled regional corridors. The public API is provider-agnostic: select a country, currency and neutral method, then follow the status and webhook contract. Availability is deployment-controlled; the catalog is authoritative.

Corridor matrix

Payouts use flow_type B2C, B2B or P2P through the server-controlled rail configuration. Payin checkout accepts payer_name, payer_document and payer_phone when the selected method requires them.

Payouts

Use GET /v1/payouts/methods and GET /v1/payouts/banks before presenting a form. Always send an idempotency key. Do not retry an ambiguous network or 5xx result by creating a new payout; query the original resource with the same key and wait for reconciliation.
COP amounts must be integers, for example "150000"; "150000.50" is rejected before dispatch. The beneficiary data is country-specific and the bank code must come from the catalog.

Payins

Hosted checkout

PY bank_transfer and wallet, CO bank_transfer, and EC wallet return a payment_url. Open it in the payer’s browser and wait for the signed payin_received or terminal charge-status webhook.
The response contains charge_id, our_reference, payment_url and status: pending. Read it with GET /v1/payins/{payinID}. A retry with the same idempotency key returns the same hosted session.

Colombia wallet collect

CO/COP/wallet is a push collection: it does not return a URL. Provide payer_name, payer_document and payer_phone; the payer approves in their wallet app. The first response is normally pending and the result arrives by webhook, commonly around 15 minutes. Do not poll it as if it were a hosted checkout.

Colombia bank transfer

CO/COP/bank_transfer uses hosted PSE checkout. COP remains integer-only and the payer identity fields are required.

Brazil

Brazil exposes two payout methods and one hosted payin method. Use GET /v1/payouts/methods and GET /v1/payins/methods as the availability source of truth.

PIX payout

Send method: "pix" with a PIX key. The key can be a CPF, CNPJ, email, Brazilian phone number (+55 plus 10 digits landline or 11 mobile), or random EVP/UUID key. CPF and CNPJ values are checked with their Brazilian check digits. No bank or account fields are used.

TED payout

Send method: "bank_transfer" with the beneficiary bank, branch, account type, account number, name and CPF/CNPJ. The bank code must come from GET /v1/payouts/banks; the branch and account type are required. Account numbers accept digits with optional dots, dashes or spaces. CPF/CNPJ check digits are validated before dispatch. Some destination banks accept only non-CPF documents; follow the bank catalog and the validation error if the selected bank imposes that rule. Both BRL methods accept at most two decimal places. Always send an idempotency key and never create a replacement after an ambiguous timeout.

Hosted PIX payin

Create BR/BRL/pix with an amount of at least 1 BRL and include both payer_name and payer_document. The response is initially pending and contains a payment_url; redirect the payer to that URL. The hosted page collects the payer identity required for the payment, and the account is credited after the signed payin event and reconciliation.
The amount uses two-decimal BRL notation and the minimum is "1" (or any larger value with at most two decimals). A retry uses the same idempotency key and returns the original hosted charge.

Lifecycle and webhooks

Incoming provider callbacks are authenticated by CBPay; your outbound webhooks are signed with X-Webhook-Signature. Accept duplicate deliveries idempotently. Final payin states are completed and failed; pending and processing are transient.

Common errors

FAQ

No. Public clients select only the neutral corridor. Rail variants are server-controlled and signed; the public API does not accept a provider name.
Keep the same idempotency key and query the resource. CBPay does not automatically resend an ambiguous money operation.
Upstream reconciliation signals are surfaced as neutral status and status code. The original payout is reconciled by its external reference; keep the same idempotency key and query the resource instead of creating a new payout.
The upstream payment lookup is available only for payments created within 12 months. Keep the CBPay charge and webhook records as the system of record.
Last modified on October 13, 2026