Currency and FX in ad reporting
Tempio5 min read
Currency is where a reporting system either tells you it does not know something or quietly makes something up. Running accounts in more than one currency produces four specific opportunities to get a number that looks fine and means nothing. This guide is those four, and the conventions that make them visible rather than silent.
Money is an integer in the account's own minor units
Never a float, never a fraction of a cent, never a number whose denomination you have to infer. The currency code is stamped beside it, on the row, on the payload and in the result.
How many minor units make a major one is the currency's business rather than a universal hundred. Zero-decimal codes have one, most currencies have a hundred, and three-decimal codes have a thousand. An unfamiliar code is treated as two decimals, which is both the majority case and the least damaging way to be wrong.
Assuming a hundred everywhere is the classic multi-currency bug, and it is a hundredfold error in either direction depending on which way you guessed. Every form on the ads surface parses a typed amount against the currency of the account that owns the row being edited — never against a currency the form supplied — and every draft payload is stamped with that account's code on the way in.
Trap one: the total that added unlike things
Minor units are not comparable across currencies. A figure with more digits is not more money, and a sum across two currencies is not a sum.
Tempio handles that in one direction only: it says so.
One currency in scope, nothing is converted and the answer is exact. Several, and the totals convert through published rates into whichever currency carries the most spend — chosen honestly by spend rather than by digit count — with the result labelled an estimate and carrying the date of the oldest rate the conversion leaned on, so a stale leg cannot hide behind a fresh one.
Several, with a rate missing, and nothing is invented. The blended total is refused rather than estimated.
The habit that follows: check whether a figure is labelled an estimate before you compare it against anything. An estimate against an exact figure is not a comparison, and the difference between them can be entirely the rate.
Trap two: the ranking that is not one
A list ordered by raw minor units across currencies is not a ranking. The top row is whichever currency has the most digits per unit of value.
Where a rate is missing, that is exactly what comes back — the raw order, with the fact attached that it is raw. The result says the order is minor units laid side by side rather than a ranking, and every surface showing one repeats it.
The reason it is returned at all rather than refused is that the rows are still true individually. What is false is the order, so the order is the thing labelled.
When you see that label, the useful move is to narrow the scope to one currency and ask again. A ranking within an account is always exact.
Trap three: the period comparison across a moving rate
Two windows compared against each other are pinned to the same currency, so a period-over-period change is never one currency divided by another. That removes the worst version of this trap.
What remains is the one you have to hold yourself: a business whose revenue and whose ad spend are in different currencies has an exposure that shows up in its return figures as though it were performance. A return that improved because a rate moved is not a marketing result, and no reporting layer can separate the two for you because the separation depends on where your costs actually sit.
The honest response is to grade advertising in the currency the spend happens in, and grade the business in the currency the business reports in, and not to expect either to explain the other.
Trap four: the number that changed denomination
A draft carries an amount in the target account's currency, stamped from the account rather than taken from whatever asked for the change. If that account's currency changes after the draft was written, the amount no longer means what it did — and the draft is blocked rather than approved, with the instruction to write it again.
That is a small rule with a large implication: nothing on the writing side converts, ever. Caps are stated in the account's own currency, budgets are compared in it, and no guardrail applies a rate. The twenty-four-hour aggregate of applied increases is kept per connection and per currency, because adding two currencies together would not produce a number.
Rates feed a labelled estimate on the reading side and nothing else.
The arrangement, stated once: your connections read your accounts, a change is written as a draft on the record with the state it would change from and the checks it passed, applying it is gated on approval — by you, or by a rule you wrote — and no platform write reaches a customer account until that platform has granted write access. Applying a cleared change to a platform is in private beta.
Working rules for a multi-currency operation
Plan in one currency per plan. A media plan carries a single currency and every budget in it is in that currency's minor units, and an item pointed at an account billing in something else is refused by name rather than converted. Two currencies is two plans, and the totals stay real.
Report per account first, blended second. The per-account figures are exact. The blend is an estimate, and it is the number to use for a trend rather than for a decision about one account.
Quote the rate date whenever you quote an estimate. It is on the result. A figure whose rate date is three weeks old is a figure about three weeks ago.
Do not convert by hand to make things comparable. If the system refused a total, it refused it because a leg was unavailable, and a rate you found elsewhere is a rate nobody recorded.
Read a blended report honestly is the wider version of trap one, and Build a weekly performance review is where these checks become a habit instead of a thing you remember after being wrong once.
Read next
Measurement and metrics guides
Reading ad numbers without being lied to: what is stored, what is computed, why platforms disagree, and how to build a review that survives a bad week.
Read a blended report honestly
A blend is an average over a changing mixture. Four things to check before you believe one, and the two questions it can answer without lying to you.
Build a weekly performance review
Thirty minutes, a fixed day, and four questions in the same order every time. What to read, what to ignore, and the one output worth having.
Questions
Put frontier AI to work on every ad account you run.
Tempio connects your ad accounts into one workspace and hands your own AI the numbers and the tools. Every change it writes is a draft until you approve it, or until a rule you wrote does.
Request early access- Read and draft by default. Approve is a separate permission you grant.