Collect reais by Pix and pay pesos by SPEI through USDC: two chained quotes, the implied BRL/MXN rate, the all-in cost, and the gap between legs.
To collect reais and pay pesos through USDC, you chain two quotes: a Pix payin quote turns BRL into stablecoins in a wallet, then a SPEI payout quote turns those stablecoins into MXN. Payout rate divided by payin rate is the implied BRL/MXN cross rate. You pay two spreads plus fees, and carry risk between the legs.
This comes up whenever a business earns in one Latin American currency and spends in another: a Brazilian marketplace paying Mexican sellers, or a company collecting subscriptions in Brazil and paying a team in Mexico. Why each leg has its own price is covered in why on-ramp and off-ramp rates differ, and who earns what along the way is in how on/off-ramp providers make money.
Key takeaways
Because the dollar sits in the middle of almost every currency trade. The BIS 2025 Triennial Survey found FX trading "reached $9.6 trillion per day in April 2025," with the dollar "on one side of 89% of all FX trades." Direct BRL/MXN trading is thin by comparison, so most quotes for that pair are built from USD/BRL and USD/MXN anyway.
Central banks publish their reference rates against the dollar too. Banxico's FIX, released "a partir de las 12:00 horas" on banking business days, is a USD/MXN rate used to convert dollar obligations payable in Mexico into pesos (Banxico). There is no official BRL/MXN fixing to anchor against. You calculate the cross yourself.
A stablecoin route makes that dollar leg visible. Instead of one opaque BRL/MXN price, you get two quotes with their own market rate and fee lines. Which currencies are most liquid explains why each USD leg prices tighter than a direct pair usually would.
Payin first, payout second, with the stablecoins landing in a wallet in between.
Leg 1, the Pix payin. Create a payin quote with payment_method: pix, the wallet that will receive the stablecoins, and the payer's CPF or CNPJ in payer_rules.pix_allowed_tax_ids (payin quotes). The quote locks the numbers and holds for 5 minutes. Create the payin from it, show the payer the Pix code from the payin response, and wait for the payin to reach completed, which means the stablecoins arrived in the destination wallet. Pix payins settle in up to 5 minutes, per BlindPay's cut-off times.
Leg 2, the SPEI payout. Create a payout quote against the recipient's CLABE bank account, passing the network and token the wallet holds (payout quotes). It also holds for 5 minutes. Execute the payout before it expires. SPEI payouts settle in up to 10 minutes.
| Leg 1: payin | Leg 2: payout | |
|---|---|---|
| Direction | BRL to USDC or USDT | USDC or USDT to MXN |
| Rail | Pix | SPEI |
| Quote window | 5 minutes | 5 minutes |
| Rate convention | BRL per stablecoin | MXN per stablecoin |
| Settles in | Up to 5 minutes | Up to 10 minutes |
currency_type: sender means | The reais the payer sends | The stablecoins you send |
Watch the last row. currency_type flips meaning between payin and payout quotes, and a chained flow uses both. The Mexico payout guide covers the CLABE details for leg 2.
For large BRL collections, BlindPay also offers OTC payin quotes: BRL only, settled in USDT, from a $5,000 USD-equivalent minimum, with a 10-second quote window. USDT then funds the SPEI payout on the networks where it is deployed, such as Polygon, Ethereum, Solana, and Tron.
Both spreads plus both sets of fees. The cleanest way to see it is to compute two cross rates: one from the rates after fees, one from the market rates, and compare them.
Illustrative example. A company collects R$ 10,000 by Pix and pays the proceeds by SPEI.
| Payin (BRL per USDC) | Payout (MXN per USDC) | |
|---|---|---|
commercial_quotation (market) | 5.42 | 18.42 |
blindpay_quotation (after fee) | 5.46 | 18.30 |
That 1.38% is roughly the two legs stacked: 0.73% on the payin and 0.65% on the payout in this example. Real numbers come from your own quotes, because fees are per transaction, vary by rail and network, and are disclosed in the live quote before execute. Flat fee lines add on top, so small amounts cost more in percentage terms.
To compare with a direct BRL to MXN offer from a bank or broker, ask for the all-in pesos per real on the same amount at the same minute, then compare it with your step 3.
You hold dollars. The payin quote fixed how many stablecoins R$ 10,000 buys. The payout rate isn't fixed until you create the payout quote. If the peso strengthens from 18.30 to 18.10 per USDC in that gap, the same 1,831.50 USDC buys 1,831.50 x 18.10 = MX$ 33,150.15, or MX$ 366.30 less.
Three ways to handle it:
currency_type: receiver on the payout so the recipient gets an exact MXN amount, and treat any leftover or shortfall in USDC as treasury, not as the recipient's problem.Whoever controls the payin's destination wallet. With a customer-controlled blockchain wallet, BlindPay operates as a non-custodial payment processor for the payout: you authorize the exact amount and BlindPay executes that single transaction. With a BlindPay-managed wallet (beta), the flow is simpler, and it is custodial when you choose that path.
Pick the wallet before the first quote. The payin delivers to the network the wallet lives on, and the payout quote has to match it. The Latin America on-ramp guide covers the Pix collection side in more depth.
Run both legs on a development instance with USDB: a Pix payin quote and payin, then a SPEI payout quote and payout from the same wallet. Log both quotations and compute your own cross rate with the five steps above.
Seven places blockchain payments beat bank rails: contractor payroll, remittances, B2B suppliers, marketplaces, 24/7 treasury, bill pay, and PSP payouts.
Push means the payer sends an ACH transfer. Pull means you debit a connected account. How each funds a USD to USDC on-ramp, the fees, and the return risk.
AP2, ACP, and x402 each verify that an AI agent had permission to spend. Here is what every protocol covers, who backs it, and the reconciliation gap none of them close.