---
title: "How to read an FX quote: base currency, quote currency, and which way the rate points"
seoTitle: "How to read an FX quote: base vs quote currency"
description: "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."
date: "2026-09-25"
updated: "2026-09-25"
category: "payments"
author: "BlindPay Team"
faq:
  - q: "What does USD/BRL 5.40 mean?"
    a: "It means 1 US dollar buys 5.40 Brazilian reais. The first currency, USD, is the base currency and always counts as one unit. The second, BRL, is the quote currency, and the number tells you how many units of it equal one unit of the base. Read it as 5.40 BRL per USD."
  - q: "How do I invert an exchange rate?"
    a: "Divide 1 by the rate. If USD/BRL is 5.40, then BRL/USD is 1 / 5.40 = 0.1852, so one real buys about 18.5 US cents. Inverting swaps the base and quote currencies. Keep enough decimals when you invert, because rounding a small number like 0.1852 too early creates visible errors on large amounts."
  - q: "Why is the euro quoted as dollars per euro but the real as reais per dollar?"
    a: "Market convention. The US Federal Reserve publishes most rates in currency units per US dollar, but quotes the euro, British pound, Australian dollar, and New Zealand dollar in US dollars per unit. The ECB quotes every currency against the euro as the base. Always check which currency is the base before comparing numbers."
  - q: "Which rate on a stablecoin payout quote is the one I get?"
    a: "On a BlindPay payout quote, commercial_quotation is the raw market rate and blindpay_quotation is the rate net of BlindPay's fee. The rate applied to your payout is blindpay_quotation, and receiver_amount is the final amount the bank account receives. Compare the two rates to see the margin before you execute."
  - q: "Is a higher exchange rate better?"
    a: "It depends on which side you are on and which currency is the base. If the rate is quoted as BRL per USD and you are sending dollars, a higher number means the recipient gets more reais. If the same pair is inverted to USD per BRL, a higher number means each real is worth more dollars, which is worse for you."
---

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**

- The base currency is the "one unit" side. The number is how many units of the quote currency it buys.
- Inverting a rate (1 / rate) swaps base and quote. It does not change the economics, only the direction.
- Conventions differ by source: the US Federal Reserve quotes most currencies per US dollar, the ECB quotes everything against the euro.
- Spreads in percent are almost the same in both directions, but spreads in units are not. Compute them in one direction and stick to it.
- On a BlindPay payout quote, multiply the stablecoin amount by `blindpay_quotation` to see the direction: the result is in the receiver's currency.

## What are the base currency and the quote 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.

## Which way do common sources quote a currency pair?

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](https://www.federalreserve.gov/releases/h10/current/)).

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](https://www.ecb.europa.eu/stats/policy_and_exchange_rates/euro_reference_exchange_rates/html/index.en.html)). 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](https://www.banxico.org.mx/tipcamb/tipCamMIAction.do?idioma=en)).

The rule: before you compare two rates, write both as "X per Y" with the same Y.

## How do you invert an exchange rate?

Divide 1 by the rate. That's the whole operation.

- USD/BRL 5.40 becomes BRL/USD 1 / 5.40 = 0.185185.
- EUR/USD 1.12 becomes USD/EUR 1 / 1.12 = 0.892857.

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.

## What changes when you compute a spread on an inverted rate?

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](/resources/more/why-onramp-and-offramp-rates-differ) walks through which side of the market each direction lands on.

## How do you read the rates on a stablecoin payout quote?

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](/docs/payout-quotes)).

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](/resources/more/stablecoin-api-quotes-explained) covers fee direction and minor units in depth, and [where the exchange rate gets fixed](/resources/more/where-is-the-exchange-rate-set-onramp-offramp) maps the moment the rate locks.

## What are the most common misreads?

Five mistakes cover almost every confused support ticket.

1. **Comparing a per-dollar rate with a per-euro rate.** Normalize to the same base first.
2. **Treating the Google number as executable.** It is a mid-market reference, not a price anyone will fill your payout at.
3. **Inverting a rate that already includes a fee, then adding the fee again.**
4. **Rounding inverted rates to four decimals.** See the 80-cent example above.
5. **Reading `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](/resources/more/onramp-offramp-liquidity-glossary) defines spread, mid-market, and the other terms used here, and [stablecoin FX slippage](/resources/more/stablecoin-fx-slippage-live-quotes) shows what happens when the rate you see isn't the rate you get.

## What to do next

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](/docs/payout-quotes) have the request body.
