Skip to content

Performance & data

Multi-currency handling

How Ecom Forward handles cross-currency businesses: per-store currencies, per-field source currencies, ECB rates, and the conversion log.

4 min read

Most ecom platforms handle one currency badly. Ecom Forward was built from day one for cross-currency businesses — a European founder running a USD store on Shopify, paying Meta in USD but Google in GBP, reporting to investors in EUR.

Three layers

  1. Reporting currency — what every chart, KPI, and P&L displays. Set globally in Settings → Reporting currency.
  2. Store currency — the base currency the store actually operates in (usually = Shopify's settlement currency). Set per store on the Stores page.
  3. Source currencies — per-field currencies for costs (COGS in USD, ad spend in GBP, fees in EUR). All values are converted to store currency on save and stored in store currency.

Where to configure

  1. Reporting currency: Settings → Reporting currency → pick from dropdown.
  2. Store currency: Stores page → click a store → currency field.
  3. Per-field currencies: Stores page → store settings → COGS currency / Ad spend currency / Transaction fees currency.
  4. Per-category currencies: Financials → Operating expense categories → edit → source currency.
  5. Per-product currency: Catalog → product → COGS currency.

Exchange rates

Rates come from two free, merged sources. ECB (European Central Bank) rates are authoritative for the ~30 major currencies they cover, and a second provider fills in everything else — about 160 currencies in total, so non-European currencies (MAD, AED, SAR, NGN, and the rest) convert correctly too. Rates refresh hourly. ECB is the gold standard for accounting, so it always wins where both sources overlap.

All conversions happen on save (not on display). This means your stored value in the database is always in store currency — no surprises if the rate changes tomorrow. Conversions to reporting currency happen at display time using current rates.

The conversion log

Every conversion is logged to a conversion_log table with: original amount, original currency, rate used, converted amount, store, date, field, source (manual or api_sync).

This is what makes multi-currency trustworthy. If your bookkeeper asks “why is this COGS $10.43 EUR?” you can trace back: $12.50 USD × 0.834 rate → €10.43.

Ad spend conversion

The nightly ad sync reads the currency the platform reports in (Meta in account currency, Google Ads in account currency, etc.) and converts to store currency before writing. The conversion is logged with source api_sync.

All-stores view

In multi-store accounts, the “All stores” selector aggregates every store's data by converting each one's currency to your reporting currency using current ECB rates. Per-row conversion happens on the fly (not cached).

Mismatch warnings

If Shopify sends an order in a currency different from your configured store currency, the sync logs a warning. Check Recent Activity on the Dashboard. Usually means your store currency setting in Ecom Forward needs updating.

FAQs

Can I change the reporting currency retroactively?

Yes. Settings → Reporting currency → pick a new one. Every chart, KPI, and CSV export immediately reflects it using current ECB rates. Historical conversions are re-computed on display — no data is lost.

What if Frankfurter is down?

In-memory cache covers short outages. For longer ones, conversions still happen with the last-known rate. We log a warning.

Are rates fair and auditable?

ECB rates are the gold standard for accounting. They're published daily by a central bank — not a private vendor. Rates used are stored in conversion_log so every line is traceable.

Still need help?

Send us a note at info@ecomforward.ioand we'll get back within 24 hours.