Uvlio

Command Palette

Search for a command to run...

Back to articles
Technical Article

Exchange Rates for Pricing: Spot, Mid-market and the Spread You Actually Pay

Currency conversion looks like multiplication until money changes hands. Pricing, invoicing and refunds each need a defined rate source and timestamp, because the mid-market number on a free widget is not what a bank or processor will apply. The practical habit is to verify outputs under the same conditions your users will face, then keep a short record of what you checked.
Uvlio editorial team by limitcool2026-05-177 min read
Topic coverCalculatorUnit ConverterPercentage Calculator

Exchange Rates for Pricing: Spot, Mid-market and the Spread You Actually Pay

The rate on a news site is not the rate on an invoice. How mid-market, bid and ask differ, and how to avoid silent margin errors.

Guide subject preview
Understand
Check
Apply
Tool stack
Unit ConverterPercentage Calculator
Reading focus
1Understand
2Check
3Apply

Original workflow visual

Exchange Rates for Pricing: Spot, Mid-market and the Spread You Actually Pay

This original Uvlio visual summarizes the practical path from input inspection to output review for this workflow.
1

Understand

Review before moving forward

2

Check

Review before moving forward

3

Apply

Review before moving forward

Maintainer and review note
Maintained by limitcool. Use it to understand the technical model, processing boundaries, privacy risks, and verifiable behavior.
Mid-market is a reference, not a transaction rate

The mid-market rate is the midpoint between buy and sell prices in the interbank market. It is useful for dashboards and rough comparisons. Card networks, banks and payment processors apply a spread around it, sometimes plus a fixed fee. If you quote a customer the mid-market rate and settle at the processor rate, the gap becomes your loss or an awkward conversation.

Bid, ask and who pays the spread

The bid is what a dealer will pay for a currency; the ask is what they will sell it for. Retail customers usually buy at the ask and sell at the bid, so they always sit on the worse side of the spread. Tools that show a single rate without labelling which side it is are fine for education and dangerous for contracts.

Timestamp the rate you use

Rates move. An invoice that says converted at the rate on the day without naming the source and time is ambiguous when the day spans a volatile session. Record the source, the exact rate, and the UTC timestamp in the invoice metadata. That record is what settles disputes, not a recollection of what a website showed that morning.

Refunds and chargebacks need a policy

If a customer paid in one currency and is refunded days later, the rate may have moved. Decide in advance whether refunds use the original rate, the current rate, or the processor default, and put that in the terms. Silent choices here create support load and, in some jurisdictions, compliance questions.

Rounding and minor units

Not every currency has two decimal places. Some have zero, some have three. Rounding half-units away from zero versus bankers rounding changes totals on large batches. Pick a rule, apply it consistently, and keep unrounded values in the ledger when possible so you can re-open the arithmetic.

Cross rates and triangular conversion

Converting A to B via USD as an intermediate can differ from a direct A to B quote, especially for less liquid pairs. If your provider only offers certain pairs, document the path. Unexpected triangular conversion is a common source of one-cent discrepancies that multiply across thousands of orders.

A practical checklist for product pricing

Choose one primary rate source for display and one settlement source for money movement. Show the customer which was used. Refresh displayed rates on a known schedule. Store historical rates with invoices. Never recompute an old invoice with todays rate unless the contract says you will.

Document the rate for auditors and future you

Finance and support will ask months later why an invoice used 7.12 instead of 7.09. If the answer is not in the invoice record, someone will re-query a live API and get a different number. Store the numeric rate, the ISO currency pair, the source name, and the timestamp with every conversion that affects money. That habit is dull and it prevents almost every FX dispute that is not a true processor error.

Multi-currency catalogues need a freeze policy

When a store lists prices in several currencies, decide whether each price is a hard local price or a live conversion from a base currency. Hard local prices need manual review when FX moves a lot. Live conversions need a freeze at checkout so the amount authorised matches the amount captured. Mixing the two without a written policy produces carts that change while the user is paying.

Separate display currency from settlement currency

A user may browse in EUR while the merchant settles in USD. Show the display conversion as an estimate and the settlement amount as the charge. State which amount is final at payment time. Hidden dual-currency logic is a frequent source of chargebacks that look like fraud but are actually expectation mismatches.

Common Questions

Why does my bank rate differ from a news site?

News sites often show mid-market. Banks sell at a spread. The difference is expected, not an error.

Should invoices use live rates?

Use a defined source and timestamp. Live rates without a freeze point make the billed amount unstable.

How should refunds handle FX movement?

Pick a policy in advance: original rate, current rate, or processor default, and write it into the terms.

Do all currencies use two decimal places?

No. Some use zero or three. Rounding rules must match the currency minor unit.