Read any exchange rate correctly: base vs quote currency, USD/BRL 5.40 vs 0.1852, inverting a rate, and reading the two rates on a stablecoin payout quote.
An FX quote tells you how much of one currency equals one unit of another. In USD/BRL 5.40, USD is the base currency (always one unit) and BRL is the quote currency, so 1 dollar buys 5.40 reais. Invert it by dividing 1 by the rate: 1 / 5.40 = 0.1852 dollars per real.
Sounds trivial. It isn't. A lot of confusing payout numbers come from someone reading a rate in the wrong direction, then computing a spread or a fee on top of the wrong number.
Key takeaways
blindpay_quotation to see the direction: the result is in the receiver's currency.The base currency is the one fixed at one unit; the quote currency is the one the number is denominated in. In EUR/USD 1.12, one euro equals 1.12 dollars. In USD/MXN 18.40, one dollar equals 18.40 pesos.
The slash notation and the "per" notation say the same thing in opposite order. USD/BRL 5.40 is 5.40 BRL per USD. That flip trips people up constantly, so here is the cheat sheet.
| Written as | Base (one unit) | Quote (the number) | Read it as |
|---|---|---|---|
| USD/BRL 5.40 | USD | BRL | 5.40 reais per dollar |
| BRL/USD 0.1852 | BRL | USD | 0.1852 dollars per real |
| EUR/USD 1.12 | EUR | USD | 1.12 dollars per euro |
| USD/MXN 18.40 | USD | MXN | 18.40 pesos per dollar |
| USDC to BRL 5.40 | USDC | BRL | 5.40 reais per USDC |
The currency codes are ISO 4217 three-letter codes. USD, BRL, MXN, COP, ARS, EUR. Stablecoins like USDC don't have ISO codes, so payout APIs name the token instead.
Most sources quote emerging market currencies per US dollar, but there are exceptions you should memorize. The US Federal Reserve's H.10 release publishes "rates in currency units per U.S. dollar", except the Australian dollar, the euro, the New Zealand dollar, and the British pound, which it marks as "U.S. dollars per currency unit" (Federal Reserve H.10).
The ECB does it the other way around. Its euro reference rates list "all currencies quoted against the euro (base currency)", updated around 16:00 CET on working days (ECB). So the ECB's USD figure is dollars per euro, never euros per dollar.
Central banks in Latin America follow the per-dollar habit. Banco de México's FIX rate is pesos per dollar, determined from wholesale quotes and published from 12:00 on banking days (Banco de México).
The rule: before you compare two rates, write both as "X per Y" with the same Y.
Divide 1 by the rate. That's the whole operation.
Two habits keep inverted numbers honest. Keep at least six digits after the decimal point until the final step. And never invert a rate that already includes a fee, then apply a second fee to it. You will double count.
Illustrative example. A supplier in São Paulo invoices R$54,000. Your treasury sheet shows BRL/USD 0.1852 instead of USD/BRL 5.40.
| Step | Calculation | Result |
|---|---|---|
| Using USD/BRL | 54,000 / 5.40 | 10,000.00 USD |
| Using BRL/USD (4 decimals) | 54,000 x 0.1852 | 10,000.80 USD |
| Using BRL/USD (6 decimals) | 54,000 x 0.185185 | 9,999.99 USD |
Rounding the inverted rate to four decimals cost 80 cents on ten thousand dollars. On a $2 million monthly payout book, the same rounding habit is a $160 reconciliation gap nobody can explain.
The percentage spread stays almost identical, but the spread in units does not. A spread is the gap between the market rate and the rate you are offered.
Illustrative example. Market USD/BRL is 5.40. A provider offers 5.373 reais per dollar on your payout.
| Direction | Market | Offered | Gap | Spread |
|---|---|---|---|---|
| BRL per USD | 5.4000 | 5.3730 | 0.0270 BRL | 0.0270 / 5.4000 = 0.500% |
| USD per BRL | 0.185185 | 0.186115 | 0.000930 USD | 0.000930 / 0.185185 = 0.502% |
Same deal, two percentages that differ in the third decimal, and two unit gaps that look nothing alike. If your dashboard mixes directions across corridors, spreads stop being comparable. Pick "local currency per stablecoin" for every payout corridor and keep it.
There is also a sign trap. When you send dollars, a lower BRL-per-USD number is worse for you. Flip the pair and a higher USD-per-BRL number is worse. Why on-ramp and off-ramp rates differ walks through which side of the market each direction lands on.
A BlindPay payout quote returns two rates and two amounts, and the arithmetic between them tells you the direction. commercial_quotation is the raw market exchange rate, blindpay_quotation is the rate net of BlindPay's fee, and sender_amount and receiver_amount are in minor units (payout quotes docs).
The docs sample is a dollar payout, so the rates sit near 1:
| Field | Docs sample value | Meaning |
|---|---|---|
commercial_quotation | 1 | Market rate |
blindpay_quotation | 0.998 | Rate after BlindPay's fee |
sender_amount | 10000 | 100.00 sent in stablecoin |
receiver_amount | 9980 | 99.80 received at the bank |
Check it: 10000 x 0.998 = 9980. You multiply the sender side by the rate to get the receiver side, so the rate reads as receiver currency per unit of stablecoin. For a BRL payout, that means reais per USDC.
Two more things to read on every quote. expires_at is epoch milliseconds, and a quote lasts 5 minutes. And the fee lines (flat_fee, partner_fee_amount) sit next to the rates, so the full cost is visible before you execute. Stablecoin API quotes explained covers fee direction and minor units in depth, and where the exchange rate gets fixed maps the moment the rate locks.
Five mistakes cover almost every confused support ticket.
receiver_amount as major units. 9980 means 99.80, not 9,980.If a number looks off by a factor of about 5 or 18, someone read BRL or MXN in the wrong direction. If it looks off by a factor of 100, someone forgot minor units.
The on/off-ramp liquidity glossary defines spread, mid-market, and the other terms used here, and stablecoin FX slippage shows what happens when the rate you see isn't the rate you get.
Request one payout quote on a development instance and check the direction yourself: multiply sender_amount by blindpay_quotation and confirm you land on receiver_amount. The payout quotes docs have the request body.
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.