When to read this
You receive invoices in currencies other than your base currency (you bill in EUR but get an AWS invoice in USD), and you want to know how the conversion works, where the rates come from, and whether the converted amounts are defensible for tax purposes. Or you're trying to reconcile a bank transaction in your local currency against an invoice in a foreign one. This article covers both.
For the broader extraction story (what's extracted, confidence scores, corrections), see what the AI reads, and how to correct it. For year-end exports that include multi-currency data, see export your records for year-end.
How conversion works
When a document is extracted and the AI detects a currency that isn't your base currency, three things happen automatically:
- Currency detection. The AI reads the currency from the invoice — typically the printed currency code (USD, GBP, CHF, JPY) or symbol (
$,£,Fr.,¥). Some invoices state currency only in the line items ("$ 100.00" repeated); others state it explicitly ("Amount: 100.00 USD"). The detection works either way. - Rate selection. If the receipt itself shows the actual charged rate — common on Stripe, Wise, Revolut, and PayPal receipts and on card statements — that rate wins, because it's what you really paid. Otherwise the pipeline fetches the European Central Bank's reference rate for the invoice date (not the upload date — see below). ECB historical data reaches back to 1999, and for weekends and ECB non-business days the most recent published rate is used.
- Storage. Both numbers are stored: original net/VAT/gross in the invoice currency, converted net/VAT/gross in your base currency, the exact rate used (e.g.
EUR/USD = 1.0823), the rate date, and the source (receipt / ECB / manual). Converted amounts are derived so net + VAT always equals gross to the cent.
Both numbers display on the invoice detail. Both go into the CSV exports (which carry Currency, Base Currency, Exchange Rate, Rate Source, Rate Date, and the base-currency amounts as columns). Connected tax advisors see both.
Where the rates come from
The default reference is the ECB daily reference rates — the official rates published by the European Central Bank each business day around 16:00 CET. The same source is used by most EU tax authorities for converting foreign-currency transactions for tax reporting. Using ECB rates makes your conversions defensible without further justification.
The one thing that beats the ECB rate: the rate printed on the receipt itself. When the document shows the actual conversion you were charged at (Stripe, Wise, Revolut, PayPal, card statements), that rate is used — it reflects what really left your account. The source stored with the invoice tells you which rate was applied.
For currencies without an ECB reference rate (exotic emerging-market currencies, cryptocurrencies), you supply the rate yourself; the manual source is recorded so it stays distinguishable from ECB rates.
What gets stored per multi-currency invoice
For each multi-currency document, the data model includes:
- Original net, VAT amount, VAT rate, gross — in the invoice currency
- Converted net, VAT amount, gross — in your base currency
- Rate used — e.g.
EUR/USD: 1.0823 - Rate date — which date the rate belongs to (normally the invoice date)
- Rate source — receipt rate, ECB, or manual
The invoice CSV export includes all of these as columns, so spreadsheets show the converted figures directly; tax filings typically use the base-currency converted amount as the reported figure.
Conversion-date semantics
The rate used is the rate for the invoice date, not for the upload date. This is the convention most EU tax authorities expect.
Concrete example: you receive an invoice dated 2026-03-15 in USD and upload it two months later, on 2026-05-21. We use the EUR/USD rate from 2026-03-15, not from 2026-05-21. The conversion reflects what the invoice was worth at the time it was issued, not at the time you got around to uploading it.
This means uploading an old invoice doesn't change historical books retroactively in a different way than uploading it at the time would have. Your book valuation is consistent.
For the rare cases where you want a different conversion-date convention (e.g. you're using payment-date conversion for cash-accounting purposes), open the invoice and edit the exchange-rate fields manually. The manual source is recorded.
Common scenarios
EU business receiving USD invoices from US vendors
Most common case. Your base currency is EUR, AWS / Stripe / Microsoft / Adobe / Google send USD invoices, the pipeline converts each at the ECB EUR/USD rate on the invoice date. Year-end exports show EUR totals with USD originals visible.
UK business with GBP base, receiving EUR invoices
Same pattern, reverse direction. Base currency = GBP, EUR invoices convert via ECB's published EUR/GBP rate. The ECB publishes EUR-X rates rather than GBP-X rates directly; we use the inverse where needed (1/rate). The result is the same number.
Multi-base setup across multiple companies
If you have two companies in one account with different base currencies (e.g. an EU operating company in EUR and a UK subsidiary in GBP), each company has its own base; conversions are independent. The same USD invoice uploaded to both companies converts to EUR in one and to GBP in the other, at their respective ECB rates for the same invoice date.
Cryptocurrencies and non-ECB currencies
Cryptocurrencies aren't covered by ECB reference rates. Enter the rate manually on the invoice (typically from the issuing exchange's listed rate at invoice date, or your accountant's preferred reference). The manual source is recorded and auditable.
Edge cases
I uploaded an invoice today but it's dated 6 months ago — which rate? Rate-on-invoice-date. We look up the ECB rate for the invoice date, not the upload date. This matches how tax authorities expect amounts to be reported.
The rate I see in the app differs from what my bank charged me. When the receipt shows the charged rate, we use exactly that. When it doesn't, the ECB reference rate applies — and banks use their own rates with margins built in, so a small difference to your statement is normal. For reconciliation between your books and your bank statement: match against the actual bank amount (the matching pipeline's amount-signal uses the bank's number), not against the ECB-converted figure.
My vendor uses a currency the ECB doesn't publish (e.g. crypto). Enter the rate manually on the invoice; it's saved with the manual source, clearly distinguished from ECB rates.
Rate looks stale on a recent invoice. Check the invoice date. If the invoice date is today and the ECB hasn't published today's rate yet (typically released ~16:00 CET), the most recent published rate is used. Rates are not silently updated afterwards — that would change historic books retroactively, which is what you don't want. If you need a specific rate, edit the exchange-rate fields on the invoice.
The currency on the invoice is ambiguous (e.g. $ could be USD, CAD, AUD, NZD, HKD, SGD). The AI uses the address, country code, and vendor's known currency mix to disambiguate. A $ from a US-based AWS invoice resolves to USD; from a Canadian vendor it resolves to CAD. If the disambiguation is wrong, click the currency field on the document and pick the right one — the rate is re-looked-up for the corrected currency.
Multi-currency invoice (rare — one document with line items in different currencies). The AI extracts the dominant currency for the invoice; the conversion uses that currency for the totals. Edit the invoice manually if a consolidated document needs different treatment.
I want to override the rate on a one-off basis. Edit the exchange-rate fields on the invoice and save. The manual source is stored and the change is captured in the audit trail with your user attribution. Future invoices from the same vendor still default to the receipt rate or ECB — the override is per-document, not per-vendor.
Can I change my base currency later without re-converting everything? Past invoices keep their stored conversions; the system doesn't retroactively re-convert, because that would change historic book valuations and invalidate prior filings. For a coordinated one-time migration to a new base currency, contact [email protected].
Related
- How the matching pipeline works — matching uses original-currency amounts
- Export your records for year-end — exports include both currency versions
- The onboarding wizard explained — where you pick your base currency