A seller earns at one exchange rate and gets paid days later at another. Who absorbs the difference, what ledger currency to use, how to shrink the gap.
The FX gap is the exchange rate move between the moment a seller earns money and the moment you pay it out. A Brazilian seller who sells on Monday and gets paid in two weeks is exposed to two weeks of BRL/USD moves. Your ledger currency decides who absorbs that gap: the platform or the seller.
Most marketplaces never decide this on purpose. The choice gets made by whoever wrote the balances table, and finance discovers it at month-end when the numbers don't tie.
Key takeaways
From time. Three dates matter in a marketplace payout:
The quote protects you inside that 5-minute window. Everything from the sale to the quote is open exposure. Who carries FX risk in a stablecoin payout maps the window step by step, and how to read an FX quote explains which way the quoted rate points.
For a LatAm marketplace the exposure is real, not theoretical. How live quotes handle volatile currencies shows how much BRL, MXN, COP, and ARS can move between reference fixings.
Pick one per seller and write it into your seller terms. The two clean models:
| Model A: local-currency ledger | Model B: dollar ledger | |
|---|---|---|
| Seller balance recorded in | BRL (or MXN, COP, ...) | USD or USDC |
| What the seller is promised | A fixed local amount | A fixed dollar amount |
| Who carries the gap | The platform | The seller |
| Payout quote setting | currency_type: receiver, local amount in minor units | currency_type: sender, USDC amount in minor units |
| Seller experience | Predictable, matches local invoices | Amount in local currency changes with the rate |
| Good fit | Consumer sellers, local pricing, payroll-like payouts | Global freelancers, dollar-priced services, sellers who want USDC exposure |
The quote mechanics come straight from BlindPay's docs: on a payout quote, currency_type: sender means request_amount is the stablecoin you send, and receiver means it's the fiat the bank account receives. Paying an exact local amount with receiver-side quotes covers Model A in detail.
There's a third, messy model: dollar ledger, local promise. The balance is in dollars, the seller dashboard shows reais at the sale-date rate, and the payout lands at a different number. That's the one that generates support tickets. Avoid it.
Illustrative example. A seller in Brazil makes a R$10,000 sale. On the sale date the rate is 5.40 BRL per USD. Payout happens 14 days later. Fees are left out to keep the arithmetic clean.
Sale-date value: 10,000 / 5.40 = 1,851.85 USD.
Scenario 1: the real weakens to 5.60 by payout.
| Model A (platform owes R$10,000) | Model B (platform owes $1,851.85) | |
|---|---|---|
| USDC needed at payout | 10,000 / 5.60 = 1,785.71 | 1,851.85 |
| Seller receives | R$10,000.00 | 1,851.85 x 5.60 = R$10,370.36 |
| Who gained | Platform, 1,851.85 - 1,785.71 = 66.14 USD | Seller, R$370.36 |
Scenario 2: the real strengthens to 5.20 by payout.
| Model A | Model B | |
|---|---|---|
| USDC needed at payout | 10,000 / 5.20 = 1,923.08 | 1,851.85 |
| Seller receives | R$10,000.00 | 1,851.85 x 5.20 = R$9,629.62 |
| Who lost | Platform, 1,923.08 - 1,851.85 = 71.23 USD | Seller, R$370.38 |
A 0.20 move in the rate, roughly 3.7%, swings the outcome by 3.6% to 3.8% of the sale. On one sale that's noise. On R$5 million of monthly seller volume, it's a line item finance will ask about.
Shorten it. The cheapest hedge for a timing gap is less time.
As an FX gain or loss, measured from the sale-date rate to the payout rate. The IFRS standard for this, IAS 21, exists precisely to settle "which exchange rate(s) to use and how to report the effects of changes" in exchange rates (IFRS Foundation). The usual treatment is to record the transaction at the rate on its date and recognize the settlement difference in profit or loss. Confirm the details with your accountant.
Operationally, store two numbers per payout:
| Field | Source |
|---|---|
| Rate at sale | Your pricing system, or a public reference such as the Federal Reserve's H.10 daily rates or the Banxico FIX for MXN |
| Rate at payout | The quote's blindpay_quotation, with commercial_quotation alongside for the market rate |
| Quote id | The qu_ id, so every payout traces to the exact quote |
The gap per payout is the difference between the two rates applied to the amount. Sum it monthly by corridor and you'll know whether your payout cadence is costing or saving money.
Three sentences cover it:
Sellers mostly don't mind which model you pick. They mind surprises. Marketplace stablecoin payouts in Latin America covers the rest of the seller payout stack, from rails to onboarding.
Check which ledger model your seller balances table actually implements, then run last month's payouts through it: rate at sale vs blindpay_quotation at payout, summed by corridor. Request a receiver-side quote on a development instance using the payout quotes docs to see Model A end to end.
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.