Multi-Currency Reporting for Agency Clients

Multi currency marketing reporting, explained for agencies - how GA4, Google Ads and Meta each convert currency, and how to report international clients well.

Ready to get started?

Set up in 2 minutes. White-label reports and AI insights.

14-day free trial - 2 min setup - no credit card required

Multi-Currency Reporting for Agency Clients

By Varun, Founder of ReportsMate. Last updated: September 2026.

Multi currency marketing reporting is the part of agency reporting nobody plans for. You win one client in another country, the spend column stops matching the invoice, and suddenly a routine monthly report needs a footnote explaining why the number in the email is not the number in the platform.

The instinct is to fix it with maths: pick a base currency, convert everything, move on. That instinct is usually wrong, and it is wrong for a reason most FX guides never mention. The platforms have already converted for you, each using a different exchange rate, at a different moment, with different rules about history. Converting again on top of that does not produce one true number. It produces a third one.

This guide covers what actually happens to currency inside GA4, Google Ads and Meta Ads, why two platforms can report different totals for the same campaign, and how to structure a client report so an international client can read it without a phone call. We build an agency reporting product, so the currency model here is the one we had to design and defend.

Key takeaways

  • Multi currency marketing reporting means reporting each client's spend, revenue and ROAS in the currency that client actually transacts in, instead of converting every client in your book into one agency-wide base currency.
  • GA4 and Google Ads convert currency using different exchange rates. GA4 converts a transaction using the previous day's rate; a Google Ads manager account converts child-account cost using the average monthly rate for each month in the selected date range. The same campaign can legitimately show two different totals.
  • Currency is an account-level setting on every major ad platform, never a report-level one. Google Ads and Meta ad account currency is chosen when the account is created, and on Meta monthly invoicing it cannot be changed afterwards.
  • Changing a GA4 property's reporting currency reconverts historical data as well as future data, so it silently rewrites the numbers in every report you have already sent.
  • Label the currency code on every money figure in a client report. An unlabelled number is the single most common cause of confusion in reporting for international clients.
  • In ReportsMate, currency is stored per client as any three-letter ISO code, not per agency, so one workspace holds AUD, CAD, GBP and USD clients side by side. Our own client base is 46 client profiles spread across four currencies and five timezones.

In this guide: what it means · platform-by-platform table · why totals disagree · base currency or not · GA4 currency settings · Google Ads conversion layer · report checklist · running it week to week · FAQs

What is multi-currency marketing reporting?

Multi-currency marketing reporting is the practice of producing client-facing marketing reports where the money figures carry an explicit, correct currency for each client, even though the clients sit in different countries and the data comes from platforms that each hold their own currency setting.

It is not an accounting problem, which is where most advice on the topic goes wrong. Your bookkeeper's job is to restate everything in your functional currency for the financial statements. Your client's job is to check whether last month's ad spend was worth it, in the money they actually spend. Those two goals pull in opposite directions, and a client report that answers the accountant's question answers nobody's.

Three terms are worth pinning down before the rest of this makes sense.

Reporting currency is the currency a platform displays and totals in. In GA4 it is a property setting. In Google Ads and Meta it is the ad account's own currency, fixed at setup.

Base currency is the single currency an agency chooses to roll everything up into for its own internal view: portfolio spend, blended ROAS, capacity planning. It is an internal tool, not a client-facing one.

Reporting cadence is how often the report goes out (daily, weekly or monthly). Cadence matters here more than it looks, because the shorter the period, the more an exchange rate moves inside it, and the more a converted figure drifts from the invoice.

How does each platform handle currency in a client report?

Every platform in a typical agency report treats currency differently, and two of them do not have a concept of money at all. This table is the reference we keep coming back to.

PlatformWhere currency is setHow conversion worksWhat reaches the client report
Google AdsAd account, chosen at creation. A manager account has its own separate currency.Manager-level reports can apply a converted-currency layer to child accounts, using the average monthly conversion rate for each month in the date range.Cost, CPC and cost per conversion in the ad account's currency, optionally shown alongside the manager currency.
Google Analytics 4Property Settings, as the property's reporting currency. Default is USD.Purchase events sent with a local currency are converted using the previous day's exchange rate. Changing the setting reconverts historical data too.Revenue, purchase value and conversion value in the property's reporting currency.
Meta AdsAd account, set with the account country at setup.No cross-account conversion layer. Each ad account reports only in its own currency.Spend, CPM and cost per result in that ad account's currency.
Google Search ConsoleNo currency exists in the data.Not applicable.Clicks, impressions, CTR and average position. No money.
Google Business ProfileNo currency exists in the data.Not applicable.Calls, direction requests, website clicks, search and maps impressions. No money.
Your agency invoiceYour billing system and contractYour own FX policy and settlement bankThe retainer currency, which may differ from every row above.

Two things fall out of that table immediately.

First, a majority of client reports contain no ad currency at all. Across our own connected client base, 28 of 43 clients have at least one paid platform attached, which means roughly a third of client reports carry no cost figure to convert in the first place. If a client's report is GA4, Search Console and Google Business Profile, the currency conversation is a one-line revenue footnote, not a project.

Second, the currency your client is invoiced in is an independent fourth variable. We have had accounts where the ad account currency, the analytics reporting currency and the retainer currency were three different codes. That is not an error state. It is normal for cross-border work, and the report has to survive it.

Why do Google Ads and GA4 disagree about the same spend?

Google Ads and GA4 can report different money totals for the same campaign in the same month because they use different exchange rates and apply them at different points in time. This is a conversion-method difference, not a tracking bug, and no amount of tag debugging will close it.

Google's own documentation is explicit on both sides. For manager accounts, cost data from child accounts in another currency is converted using the average monthly conversion rate for each month included in the date range you select, as described in Google Ads Help on converting currencies for manager accounts. GA4 works transaction by transaction: where a business sends transaction data in more than one local currency, Analytics performs the conversion using the prior day's exchange rate, per the GA4 currency reference in Analytics Help.

A monthly average and a daily spot rate will not agree. In a quiet month the gap is rounding. In a month where the pair moved several per cent, the gap is large enough that a client will notice, and they will ask about it in exactly the tone you do not want.

Underneath the interfaces, the raw data is cleaner than the reports. The Google Ads API returns cost as cost_micros, an integer in millionths of the account's currency unit, with the currency code carried separately on the account, which is documented in the Google Ads API reporting docs. GA4's BigQuery export keeps the raw transaction values in the local currency rather than the reporting currency. In both cases the number and its currency label are separate fields, and the ambiguity only appears when a report prints the number and drops the label.

Our own report payloads work the same way, which is deliberate. A Google Ads report object in ReportsMate carries spend, revenue, roas and costPerConversion as bare numbers, and the currency is held on the client record, not inside the metric. That is a design choice with teeth: the metric can never be silently converted, because the conversion never happens to the stored figure at all. If you want the longer version of why two Google products disagree about the same campaign, we wrote it up in Google Ads vs GA4 conversions explained.

Should you convert every client report into one base currency?

No. Convert your internal roll-up into a base currency, and leave each client's report in that client's own currency. This is the opposite of the standard advice, and we will defend it.

The argument for a single base currency is consistency, and it is a real argument, but it is consistency for the wrong audience. Your client does not hold a portfolio. They hold one budget, in one currency, approved by one finance team, against invoices denominated in that same currency. Converting their spend into USD so it lines up with your other 30 clients makes their report harder to reconcile and easier to distrust, and it imports your FX risk into their performance story.

There is also a practical failure mode. The moment a report shows a converted figure, you own the exchange rate. Every month the client can ask which rate you used, on which date, from which source, and why this month's CPA moved when the campaign did not. That is a conversation with no upside.

The rule we settled on:

  1. Client-facing reports are denominated in the client's own currency, with the ISO code printed next to every money figure.
  2. Your internal roll-up converts to one base currency, with the rate source and date recorded, for portfolio spend, blended ROAS and capacity decisions.
  3. The two never appear in the same document. If a client genuinely needs a converted view, for example a global brand comparing regional agencies, it goes in as a clearly labelled secondary column, never as the headline.

One useful test before you convert anything: work out whether the FX movement is even material against the performance change you are reporting. Running the month's figures through a ROAS calculator in both currencies usually settles it in a minute. If the FX effect is smaller than the week-to-week variance in the campaign, converting adds noise and removes nothing.

How do you get GA4 currency settings right for an international client?

Set the GA4 property's reporting currency to the currency the client sells in, before the property collects meaningful data, and send a currency parameter with every purchase event so GA4 knows what it is converting from.

GA4 currency settings live in Admin, under Property Settings, alongside the reporting time zone. The default is USD, which is the origin of a very common mistake: a property set up in a hurry for a client in Toronto or Auckland quietly reports every dollar as a US dollar, and nothing in the interface complains.

Four rules keep this clean:

  • Set the reporting currency at property creation. Changes to the currency type affect historical as well as future data, and previous data is reconverted to the new setting. That means every report you have already emailed no longer matches the property.
  • Always send a currency with purchase value. If the ecommerce implementation sends a value with no currency, GA4 assumes the property's reporting currency. For a single-market client that is harmless. For a store selling into three countries it silently overstates or understates revenue.
  • Check the time zone at the same time. Reporting time zone and reporting currency are separate settings and both affect what lands in a month-end report. A property on UTC and a client in Sydney disagree about which day a conversion happened.
  • If the client uses BigQuery, remember the export is unconverted. Raw transaction values in the GA4 BigQuery export are in local currency, not the reporting currency, so any warehouse model needs to convert explicitly.

The same care applies to Meta. Ad account currency is set with the account country at setup, and as the Meta Business Help Centre notes on changing your Meta ads currency, accounts on monthly invoicing cannot change currency at all once created. In practice, a client who moves market needs a new ad account, which breaks historical comparison in the report. Flag it before it happens, not in the next monthly.

How does Google Ads currency conversion reporting work in a manager account?

Google Ads currency conversion reporting happens at the manager account level through a converted-currency layer. When any child account holds cost data in a currency other than the manager account's currency, you can apply that layer and see converted values shown beneath the local currency values in every cost column, with sortable, filterable totals in the manager's currency.

What the layer gives you is a genuine agency-level view: total spend across a mixed-currency book, in one number, without exporting anything. What it does not give you is a client-facing figure, for three reasons.

The conversion uses the average monthly rate for each month in the range, so the same campaign's converted cost changes as soon as the date range changes. The layer also refuses certain ranges, including "All time" and any date before May 2003. And the local currency value stays right there next to the converted one, which is exactly the two-numbers-for-one-thing problem you want kept out of a client email.

Our position is to use the converted layer for your own portfolio reporting and keep client Google Ads reports in the ad account's native currency. That maps to how the underlying data is actually shaped, and it means the figure in the client's report matches the figure they see if they ever log into the ad account themselves.

Worth noting for anyone auditing a mixed book: only about three in ten of our connected clients have Google Ads attached at all, while GA4 sits on roughly seven in ten. The manager-level conversion layer is therefore a narrower tool than it sounds. For most agencies it answers a question about a minority of the client list.

What belongs in a multi-currency client report?

A multi-currency client report needs six things a single-currency report can skip. None of them are difficult; all of them are usually missing.

  1. An ISO currency code on every money figure. "Spend: 12,400 AUD", not "Spend: $12,400". The dollar sign is used by at least a dozen currencies and is worthless as a label.
  2. The reporting currency stated once, near the top. One line: "All figures in CAD unless marked otherwise." That single line prevents more confusion than any chart.
  3. Non-money metrics kept out of the currency discussion. Clicks, impressions, sessions, Search Console position and Google Business Profile direction requests have no currency and never need a footnote. Say so implicitly by not decorating them.
  4. A stated FX method wherever a converted figure appears. If a converted number is in the report, the rate source and the period it covers belong next to it, not in an appendix.
  5. A consistent period boundary. Month-end in the client's time zone, not yours. A report cut at UTC midnight for a client in Brisbane includes ten hours of the wrong day.
  6. Comparison periods in the same currency as the current period. If the currency setting changed mid-history, a period-over-period figure is comparing two different measurement systems and the change percentage is meaningless.

That last one is where automation earns its keep, because the failure is invisible. A human building a slide once a month will not notice that last quarter's revenue was reconverted when someone updated a property setting. A pipeline that stores the currency alongside the metric will.

This is also the point where white-labelling stops being cosmetic. White-labelling means the report carries your agency's branding and sender identity rather than the tool vendor's, and for an international client it also means the report speaks their currency, their time zone and their reporting calendar. A white-label email report that says "All figures in GBP" over your logo reads as your agency's considered work. The same numbers in a vendor-branded dashboard with an unlabelled dollar sign read as an export.

How do you handle reporting for international clients week to week?

Reporting for international clients is mostly a delivery and cadence problem, not a data problem. The currency setup is a one-off task. The thing that erodes the relationship is a report that arrives at the wrong hour, in the wrong format, that the client has to go and fetch.

This is why we built ReportsMate email-first rather than as another dashboard. After years around agency reporting, the pattern was hard to miss: the dashboard a client is handed a login for almost never gets logged into, and it gets logged into even less when the client is eight time zones away and the login is one more password in a browser they use for their own business. The report that lands in the inbox is the report that gets read.

Three operational habits that make cross-border reporting hold up:

Store the client's time zone as deliberately as their currency. In our own schema they are two independent per-client fields, currency and timezone, and they genuinely diverge in production. We have clients whose currency and time zone do not pair the way you would guess from the country. Treating time zone as derivable from currency is a bug waiting to happen.

Pick the cadence per client, not per agency. Across the enabled schedules in our product, weekly and monthly are tied as the most common choice, each just over four in ten, with daily running about one in seven. A client in a different market often wants a different rhythm to your domestic accounts, and that is fine. What is not fine is a cadence set once by whoever onboarded them and never revisited.

Put the currency in the email itself, not behind a click. Across roughly 3,000 tracked report sends in our system, about 28% are opened. The figures a client needs to interpret the numbers have to survive in the part of the report they actually read, which is the email body, not page four of an attachment.

One honest disclosure about the first-party numbers in this post. Our client base is weighted towards Australia and Canada rather than being a global sample: 46 client profiles split AUD 32, CAD 9, USD 4 and GBP 1, across five time zones. Read those figures for their shape, not their absolute level. The shape is the useful part, and it is consistent: mixed-currency books are the normal case, not the exception, and every one of those currencies sits on an individual client record rather than on the agency account.

See it in practice: how ReportsMate works - connect a client's platforms, set their currency and time zone, and the branded report goes out on their schedule.

Frequently asked questions

Q: What is multi-currency marketing reporting?

A: Multi-currency marketing reporting is producing client marketing reports where every money figure carries the correct, explicitly labelled currency for that specific client, even though different clients sit in different countries and the source platforms each hold their own currency setting. It covers three separate decisions: which currency each client's report is denominated in, whether any figure gets converted, and how conversion is disclosed if it does. The important distinction is that it is a client-communication discipline rather than an accounting exercise. Your accounts need everything restated in one currency; your client needs their own numbers in their own money, matching the invoice they approved.

Q: Should an agency convert all client reports into one currency?

A: No. Keep each client's report in the currency that client transacts and is invoiced in, and reserve a single base currency for your internal portfolio view. Converting a client's spend into your base currency makes their report harder to reconcile against their own invoices and platform accounts, and it makes you responsible for defending an exchange rate every month. If a client genuinely needs a converted view, such as a global brand comparing regional agencies, add it as a clearly labelled secondary column with the rate source and period stated, and never as the headline figure.

Q: Why does Google Ads show different spend from GA4 for the same campaign?

A: Because the two products convert currency using different rates at different moments. A Google Ads manager account converts child-account cost using the average monthly rate for each month in your date range, while GA4 converts transactions using the previous day's exchange rate. A monthly average and a daily spot rate cannot agree, so a genuine gap opens in any month where the currency pair moved. Currency is only one of several reasons the two disagree, alongside attribution windows and conversion definitions, which we cover in more depth in our comparison of the two platforms' conversion reporting.

Q: How do I change the reporting currency in GA4?

A: The reporting currency is in GA4 Admin, under Property Settings, next to the reporting time zone. Before you change it, understand the consequence: per Analytics Help, changing the currency type affects historical data as well as future data, and previous data is reconverted to the new currency. Every report you have already sent will stop matching the property. If the property is new, change it now. If it has a year of history behind it and reports have gone out, treat the change as a reporting event: tell the client, note the change date in the next report, and avoid period-over-period comparisons that straddle it.

Q: Can I change the currency on a Google Ads or Meta ad account?

A: Not freely. Both platforms set currency on the ad account itself, at creation, and it is tied to the account's country and billing setup. Meta's help centre states that accounts paying by monthly invoicing cannot change currency once the account exists. In practice, a client that moves market or changes billing entity ends up with a new ad account, which breaks the historical series in your report. Plan for it: archive the old account's data as a labelled comparison set before the switch, and tell the client the comparison period resets, so the drop in the next report is understood as an account change rather than a performance change.

Q: Do Search Console and Google Business Profile reports need currency handling?

A: No. Neither data source contains money. Search Console returns clicks, impressions, CTR and average position; Google Business Profile returns calls, direction requests, website clicks and search and maps impressions. None of those metrics have a currency, so they need no conversion, no FX footnote and no labelling. This matters more than it sounds for a mixed client book: in our own base, 15 of 43 connected clients have no paid platform attached at all, so their entire report is currency-free and the whole question evaporates.

Q: Can one reporting tool handle clients in several currencies at once?

A: It depends entirely on where the tool stores currency. If currency is a workspace or agency-level setting, you are forced into one base currency for every client. If it is a per-client field, each client's report can carry its own. In ReportsMate, currency sits on the client record and accepts any three-letter ISO code, so AUD, CAD, GBP, USD and anything else coexist in one workspace with no conversion between them. Worth checking on any tool you evaluate, including the login dashboards and connectors most agencies shortlist against us (AgencyAnalytics, DashThis, Whatagraph, Swydo, Supermetrics and Looker Studio), before you sign: it is a schema question, and the answer rarely appears on the pricing page.

Q: What exchange rate should I use if I do have to convert?

A: Use one documented source, one stated method, and apply both consistently for the whole period, then print the source and date in the report. Central bank reference rates, such as those published by your client's central bank, are the easiest to defend because the client can verify them independently. What matters far more than which rate you choose is that you never change method mid-series, because a method change looks exactly like a performance change in a period-over-period comparison and it is nearly impossible to explain after the fact.

Final tips for multi-currency client reporting

Multi currency marketing reporting rewards boring discipline over clever conversion. The agencies that get this right are not the ones with the best FX model. They are the ones that label every number, set the client's currency and time zone properly at onboarding, and never quietly reconvert history.

A short list to run before your next month-end:

  • Check every client's GA4 reporting currency against what they actually sell in. The USD default catches more accounts than anyone expects.
  • Print an ISO code next to every money figure and one "all figures in X" line near the top of each report.
  • Keep converted figures in your internal roll-up and out of client emails.
  • Store time zone as its own field, and cut the reporting period in the client's zone.
  • When an ad account currency changes, treat it as a comparison-period reset and tell the client first.

We are writing this as the team behind an email-first reporting product, so take the positioning with the appropriate pinch of salt. The currency mechanics above are from Google's and Meta's own documentation and you can verify every one of them. The opinion, which is ours, is that a client report should speak the client's currency, and that whatever you build should keep the currency label attached to the number rather than bolted on at render time.

Stop losing your Sundays to client reports. Start your free 14-day trial - no credit card, no setup, cancel anytime. Set each client's currency and time zone once, and their branded report goes out on schedule, in their money, without you touching a spreadsheet.

Automate Your Marketing Reporting

Join agencies automating client reporting with ReportsMate.

14-day free trial - 2 min setup - no credit card required