Skip to main content
In Bolivia (the local interoperable QR) and Brazil (PIX QR, including the “copia e cola” code) you can also pay a collection QR in two steps: scan and confirm. Scanning is free; you are only charged on confirm, exactly like a regular payout (your rate + fixed fee). Without country/currency Bolivia (BOB) is assumed; for Brazil send country: "BR" and currency: "BRL".

1. Scan the QR (free)

Returns the recipient’s data so the user can confirm who they are paying:

2. Confirm the payment (charged here)

  • usdt_amount + fixed fee is debited at your rate, just like a bank_transfer.
  • The result is synchronous: the response already carries the final state (completed, or failed with an automatic refund) — no waiting.
  • Retries with the same idempotency_key return 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 accepts settlement_asset (USDT, USDC, BTC, GOLD, SILVER or PLATINUM) 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 by scan and the amount with two decimals.

Status reconciliation

If the synchronous response cannot prove a terminal status, the payout remains processing. Read the existing resource:
Do not create another payout or use a new key. Keep reading until the status is 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

No — the scan is a free local read. You are only charged when the confirm creates the payout.
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.
Not yet — a dynamic QR answers invalid_qr_payload (400) with guidance. Ask the payer for the static QR of the destination.
The same as a regular payout: the rate quoted at confirm, frozen for that operation, with your spread already inside.
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.
Retry with the same idempotency_key — the QR never gets “burned” by validation errors: nothing is created until the payload validates.
Last modified on September 20, 2026