country/currency Bolivia (BOB) is assumed; for Brazil send
country: "BR" and currency: "BRL".
1. Scan the QR (free)
- Bolivia
- Brazil (PIX QR)
2. Confirm the payment (charged here)
- Bolivia
- Brazil (PIX QR)
usdt_amount + fixed feeis debited at your rate, just like abank_transfer.- The result is synchronous: the response already carries the final
state (
completed, orfailedwith an automatic refund) — no waiting. - Retries with the same
idempotency_keyreturn the original payout. In Bolivia the scan reference is single-use (a scanned QR can only be paid once); in Brazil a static PIX QR is reusable and each payment carries its own key. The confirm request also acceptssettlement_asset(USDT,USDC,BTC,GOLD,SILVERorPLATINUM) to select the virtual balance to debit. If it is omitted, the account’s default settlement asset is used. The server generates the payment’s internal identifiers: the integrator sends only the reference returned byscanand the amount with two decimals.
Status reconciliation
If the synchronous response cannot prove a terminal status, the payout remainsprocessing. Read the existing resource:
completed or failed; a confirmation failed result means the debit
has already been refunded. If the client repeats confirm with the same key,
it receives the original payout with idempotency_hit: true.
Errors
The general error catalog lives in Errors.
FAQ
Does scanning a QR cost anything?
Does scanning a QR cost anything?
No — the scan is a free local read. You are only charged when the confirm
creates the payout.
Can I pay the same QR twice?
Can I pay the same QR twice?
One-time QRs (fixed reference) admit a single payment. Reusable static QRs
can be paid legitimately more than once — that is why the confirm requires
an explicit
idempotency_key per payment.Are dynamic QRs supported?
Are dynamic QRs supported?
Not yet — a dynamic QR answers
invalid_qr_payload (400) with guidance.
Ask the payer for the static QR of the destination.Which FX rate applies?
Which FX rate applies?
The same as a regular payout: the rate quoted at confirm, frozen for that
operation, with your spread already inside.
What if the scanned amount differs from what I want to pay?
What if the scanned amount differs from what I want to pay?
Fixed-amount QRs must be paid exactly; a mismatch fails the payout with an
automatic refund. Open-amount QRs accept the amount you pass on confirm.
How do I retry a failed confirm safely?
How do I retry a failed confirm safely?
Retry with the same
idempotency_key — the QR never gets “burned” by
validation errors: nothing is created until the payload validates.