Exchange rates per day — multi-currency analytics
Per-day exchange rates with EUR intermediate. target_currency converts all platforms to display currency. Historical rates per transaction date.
Written By Salvatore Sinigaglia
Last updated About 5 hours ago
Per-day exchange rates with EUR intermediate. target_currency converts all platforms to display currency. Historical rates per transaction date.
Exchange rates per day — multi-currency analytics
Wevion converts spend from native ad-account currency to a
target_currencyfor cross-platform aggregation. EUR is the intermediate currency. Per-day rates: each transaction is converted at the rate that applied on the day it occurred, not today's rate. Implication: viewing 30 days in USD shows historically-accurate USD values per day, not a flat conversion.
Who is this for
Mediabuyers / agencies running ads in multiple currencies (e.g. EUR for IT clients, USD for US clients, GBP for UK). Anyone wondering why Wevion shows a slightly different total than naïve "apply today's FX rate" math.
How currency conversion works
For each transaction (impression / click / spend / conversion):
- Source value in native ad-account currency (Meta US account = USD; Meta IT account = EUR; etc.)
- Convert to EUR using the rate that applied on the transaction date
- Convert from EUR to
target_currencyusing the rate on the same date - Aggregate in
target_currencyfor display
EUR-as-intermediate is a common pattern: avoids storing rates for every currency pair; only EUR↔X rates needed.
Per-day rates (not "today's rate")
Critical: each transaction is converted at the historical rate for its transaction date.
Example: I view "Last 30 days" in USD with a Meta IT account (EUR):
- Spend on day 1 of window: €100 → converted at day-1 USD/EUR rate
- Spend on day 15: €100 → converted at day-15 USD/EUR rate
- Spend on day 30: €100 → converted at day-30 USD/EUR rate
- Total: sum of per-day USD values, NOT €3000 × today's USD/EUR rate
Why this matters: FX rates fluctuate. A "flat today's rate" conversion would misrepresent what was spent + earned historically.
target_currency parameter
Every analytics endpoint accepts target_currency:
- Default: workspace currency setting
- Configurable: per session / per endpoint call
- Affects: all aggregated values + comparison deltas
Workspace settings: /settings → Workspace → Default currency. Change here for default; override per session in URL / UI.
Common currency pairs
The most-used:
- EUR (workspace default for many EU-based workspaces)
- USD (US-based + global)
- GBP (UK-based)
- BRL (LATAM)
- AUD (APAC)
All work via EUR intermediate.
Source of FX rates
Wevion ingests FX rates daily:
- Source: typically central bank feeds (ECB) or commercial FX providers
- Update: daily — once per day's close
- Coverage: major + most regional currencies; exotic currencies may have less precision
For audit: rates stored in exchange_rate table (verified in Prisma).
Implications for analytics
Cross-Channel KPI strip
When viewing Cross-Channel with target_currency = USD:
- Meta US account spend: shown in USD natively
- Meta IT account spend: converted EUR → EUR (no change) → USD via day rate
- Total cross-account in USD: aggregated
Period comparison
Comparing last 30 days vs prior 30 days: each side uses its own per-day rates. Small variance possible if FX moved between the periods.
Export reports
PDF / CSV export shows values in target_currency (consistent with on-screen). The export includes the date range covered.
Account stats
account-stats endpoint aggregates per-account → roll-up to workspace default currency.
Single Platform vs Cross-Channel currency handling
For Single Platform per-account drill: stay in native currency for fewer surprises.
For multi-account / multi-platform aggregation: use Cross-Channel + target_currency.
Edge cases
Newly added currency
Workspace switches default currency from EUR to USD: historical data is re-rendered in USD (using historical rates). No data loss; just relabeled.
Account with unsupported currency
Very rare. If an ad account uses a currency Wevion doesn't have rates for: account excluded from cross-channel aggregation with a warning. Single platform view still works in native currency.
Postback in different currency than spend
E.g. spend in EUR, purchase value reported by tracker in USD: both converted to target_currency via their respective per-day rates. ROAS aggregation handles this correctly.
Hyperinflation currencies
Currencies with extreme daily fluctuation may show large day-to-day variance in totals. Expected behavior of per-day rates.
When NOT to use multi-currency
For workspaces running in a single currency (e.g. one EU agency, all EUR accounts): target_currency doesn't materially change anything. Just use workspace default.
For agencies running same brand across multiple geos in different currencies: critical to set target_currency explicitly for consistent reporting.
Common mistakes
- Expecting today's-rate math to match: per-day rates differ from naïve flat conversion
- Switching
target_currencymid-comparison: confuses delta_pct — pick one, stick with it - Comparing Wevion total to platform UI total: platform shows native; Wevion may convert. Use Single Platform in native to match exactly.
- Forgetting to set workspace default: the default currency defaults to USD or EUR depending on deployment; explicitly set yours
Common issues
- Total looks off by a few %: FX variance between the platform's reporting rate and Wevion's stored rate; small variance expected
- Old data shows "rate not available": very rare; FX feed gap; contact admin
- target_currency option missing in UI: workspace is single-currency or older deployment; admin needs to enable multi-currency
FAQ
How does Wevion convert currencies across platforms?
Wevion converts each transaction from its native ad-account currency to EUR as an intermediate, then from EUR to your chosen target_currency, aggregating the result for display. EUR-as-intermediate is a common pattern that avoids storing rates for every currency pair, needing only EUR-to-X rates for each supported currency.
Does Wevion use today's exchange rate or historical rates?
Wevion uses per-day historical rates: each transaction is converted at the rate that applied on the day it occurred, not today's rate. So viewing 30 days in USD sums per-day USD values rather than multiplying the EUR total by today's rate. FX fluctuates, and a flat conversion would misrepresent historical spend and earnings.
What is the target_currency parameter?
target_currency is accepted by every analytics endpoint and sets the display currency for all aggregated values and comparison deltas. It defaults to your workspace currency setting and can be overridden per session or per endpoint call. Set the default at Settings, Workspace, Default currency, and override per session in the URL or UI.
Why does my Wevion total differ slightly from the platform UI?
Platforms show native currency while Wevion may convert via per-day rates, so small variance of roughly 1-2% for major pairs is expected from FX differences. To match a platform exactly, use Single Platform mode in the native currency. Cross-Channel aggregation instead applies target_currency across accounts.
When do I actually need multi-currency in Wevion?
Only when you run ads across multiple currencies. For a single-currency workspace, such as one EU agency with all EUR accounts, target_currency doesn't materially change anything, so just use the workspace default. Agencies running the same brand across geos in different currencies should set target_currency explicitly for consistent reporting.