Cloud costs in euros at AWS, Azure and Google Cloud almost always start from USD prices that each provider converts into your billing currency under its own rule: Azure under a Microsoft Customer Agreement with a rate captured in the last days of the previous month, Google Cloud with rates set at the start of the month, AWS at invoicing, with the invoice as the evidence. A defensible euro report therefore needs its own exchange-rate policy: which source and which date apply, and how currency effects are kept apart from consumption in month-on-month comparisons. This guide shows what the exports contain, how to choose between invoice rate, ECB reference rate and budget rate, and ends with a policy template.

Three currencies, three jobs

Start with the role of each currency, not the conversion formula:

RoleQuestion it answersTypical evidence
Pricing currencyWhich currency defines the rate or contract?Price list, price sheet, pricing_currency, PricingCurrency
Billing currencyWhich currency did the provider invoice?Invoice, line_item_currency_code, BillingCurrency, currency
Reporting currencyWhich currency does the organisation use for budgets and results?Internal policy, group requirement

The roles can coincide, but they do not have to. Every monetary amount therefore needs two things, an amount and a currency, and a converted amount also needs its source, method and rate date.

the provider's rule and rate: Azure MCA before the month,Google at the start of the month, AWS at invoicingyour policy's source and date, for example ECBreference rates; never twice for an amount already in EURPricing currency: defines the rate or contract(price list, pricing_currency, PricingCurrency)Billing currency: what the provider invoiced(invoice, line_item_currency_code, BillingCurrency, currency)Reporting currency: budgets and results(internal policy, group requirement)
Three currencies, two conversions: the provider converts pricing into billing currency by its own rule and rate, your policy converts into the reporting currency, and an amount already in euros is never converted again

How AWS, Azure and Google Cloud set the rate

AWS

AWS bills in USD by default. You set the payment currency in the Billing console under Payment preferences; where several sellers of record invoice you, payment profiles set the currency per seller. Amazon Web Services EMEA SARL supports EUR, GBP and CHF among others. The Bills page shows totals in USD and, when invoices are issued in another currency, the total in that currency as well. The invoice is the evidence for the rate applied.

For USD-priced Marketplace invoices AWS documents the method in more detail: Bloomberg daily rates at the time of invoicing, the rate of the last day of the month for consolidated pay-as-you-go invoices, and the rate shown on every invoice. Private offers in EUR or GBP are invoiced directly in the offer currency. In AWS Europe's consolidated daily invoicing for customers who pay by invoice, credit memos use the same currency and exchange rate as the original invoice.

Azure

Under a Microsoft Customer Agreement (MCA), Azure is priced in USD worldwide. The billing currency follows the legal address: Germany and Austria EUR, Switzerland CHF, the United Kingdom GBP. Microsoft uses London closing spot rates captured in the two business days before the last business day of the previous month, and applies that rate to all purchases and consumption in the following month. January's rate appears on the January invoice, available at the start of February.

Under an Enterprise Agreement (EA) you are billed in the currency the agreement designates; Microsoft states that FX rates do not apply, and the cost-in-pricing-currency field is absent from EA exports. The exception is Spot, whose pricing currency is USD even under EA.

The Retail Prices API converts into other currencies on request, but by Microsoft's own description returns estimated prices at the current rate. It cannot reconcile an invoice.

Google Cloud

Google Cloud converts its prices from USD into the currency of a local-currency billing account, using rates published by leading financial institutions. Rates are set at the beginning of every month. A billing account operates in exactly one currency that cannot be changed after creation; another currency needs a new billing account.

ProviderPrice basisRate fixedWhere to find it
AWSUSDWith the invoice; Marketplace: Bloomberg daily rate at invoicingInvoice, Bills page
Azure MCAUSDBefore the month starts, valid for the whole monthInvoice, ExchangeRatePricingToBilling in the export
Azure EAAgreement currencyNo exchange rate, except SpotPrice sheet
Google CloudUSDAt the start of each monthcurrency_conversion_rate in the BigQuery export

What the cost exports contain

ExportBilling currencyPricing currencyRate and direction
AWS CUR 2.0line_item_currency_codepricing_currency with pricing_public_on_demand_costNo rate column in the line item dictionary; take the rate from the invoice
Azure cost details (MCA)BillingCurrency, CostInBillingCurrencyPricingCurrency, CostInPricingCurrency, plus costInUsdExchangeRatePricingToBilling multiplies pricing into billing currency; ExchangeRateDate
Google BigQuery exportcurrency, costUSDcurrency_conversion_rate = local currency per USD; cost ÷ rate gives USD
FOCUSBillingCurrency must match the invoice currencyPricingCurrency (since FOCUS 1.2) with PricingCurrencyEffectiveCostImplied: EffectiveCost ÷ PricingCurrencyEffectiveCost

For AWS, check line_item_currency_code first. If it says USD while the invoice arrives in EUR, the euro amount exists only on the invoice, and your report needs either that rate or your own reporting rate. For Azure, Microsoft spells out the reconciliation: EffectivePrice × Quantity gives cost in pricing currency, and multiplying by ExchangeRatePricingToBilling gives cost in billing currency. Price fields such as EffectivePrice, UnitPrice and PayGPrice are in pricing currency under MCA.

Two queries show whether your data follows that logic. The first checks Azure MCA, where the documented method means one rate per month and currency pair:

SELECT
  BillingPeriodStartDate,
  PricingCurrency,
  BillingCurrency,
  MIN(ExchangeRatePricingToBilling) AS rate_min,
  MAX(ExchangeRatePricingToBilling) AS rate_max,
  SUM(CostInPricingCurrency)        AS cost_pricing,
  SUM(CostInBillingCurrency)        AS cost_billing
FROM azure_cost_details
GROUP BY BillingPeriodStartDate, PricingCurrency, BillingCurrency
ORDER BY BillingPeriodStartDate;

If rate_min and rate_max differ, look at the rows involved, such as purchases or refunds referring to an earlier invoice, before you carry a monthly rate into the cost bridge. The second query totals FOCUS data per billing currency, never across currencies:

SELECT
  BillingPeriodStart,
  BillingCurrency,
  SUM(BilledCost)    AS billed_cost,
  SUM(EffectiveCost) AS effective_cost
FROM focus_cost_and_usage
GROUP BY BillingPeriodStart, BillingCurrency
ORDER BY BillingPeriodStart, BillingCurrency;

More than one row per month means mixed currencies, and you need the policy below. Which AWS export suits this is covered in AWS CUR 2.0 or FOCUS; set up the Google export as described in set up Google Cloud billing export for cost reporting. FOCUS is defined in the glossary.

Choosing a reporting rate policy

No single rate answers every question. The policy states which view serves which purpose:

Rate basisWhat the number showsStrengthWeaknessFits
Provider invoice rateWhat was actually billedTies to the invoice and paymentDifferent source and timing per provider; only for your own billing currencyInvoice checks, payables
ECB monthly averageAverage rate over the usage periodOne source for all providers and currencies; smooths daily movesKnown only after month-end; differs from the invoice rateManagement reporting, team comparisons
ECB month-end rateRate on the last publication dayClose to a balance-date viewA single day's valueAlignment with close logic
ECB daily rateRate per usage dayMost precise with daily dataMoves daily; days without publication need a ruleDaily cost analysis
Budget rateCost at the planned rateSeparates usage from FX variance against budgetDiffers from actuals; needs its own FX lineBudget against actual

The ECB publishes its euro reference rates at around 16:00 CET on every working day except TARGET closing days, with EUR as the base, so units of foreign currency per euro. USD, GBP and CHF are included. The ECB describes the rates as published for information purposes only and strongly discourages using them for transactions. They still work for a consistent internal reporting method; they are not your provider's or your bank's rate.

Tax and statutory accounts stay outside the reporting policy. For German VAT, section 16(6) of the UStG requires conversion at the monthly average rates published by the Federal Ministry of Finance, and the tax office can allow the daily rate. That matters for reverse-charge invoices in USD, covered in AWS and Azure invoices: checking EU reverse charge. For German statutory accounts, section 256a of the HGB requires assets and liabilities denominated in foreign currency to be translated at the mean spot rate on the balance sheet date. Which rule applies to your bookkeeping is a question for finance and your tax adviser.

FX effects in month-on-month comparisons: the constant-currency view

A month-on-month comparison in euros mixes two causes: changed usage or prices, and changed rates. A constant-currency view separates them by restating the current month at the previous month's rate or at the budget rate:

Pricing-currency amount, current month:Azure CostInPricingCurrency, Google cost ÷currency_conversion_rate, AWS USD cost linesConstant-currency amount:× last month's rate, or the budget rateUsage and price effect: constant-currencyamount − last month's EUR amountEUR amount, current month:the invoiceFX effect: EUR amount −constant-currency amount
The constant-currency bridge: the current month restated at last month's rate splits the euro change into a usage-and-price effect and an FX effect
Constant_currency_current = Pricing_currency_amount_current × Rate_previous_month
FX_effect                 = EUR_amount_current - Constant_currency_current
Usage_and_price           = Constant_currency_current - EUR_amount_previous_month

Each provider gives you the inputs differently:

  • Azure MCA: CostInPricingCurrency is the USD amount and ExchangeRatePricingToBilling the monthly rate. The FX effect is the current month's CostInPricingCurrency times the rate change from last month. It is already inside your euro invoice even though you converted nothing yourself.
  • Google Cloud: cost ÷ currency_conversion_rate gives the USD amount; the rate change between two invoice months gives the FX effect the same way.
  • AWS: if cost lines are in USD, value them at your reporting rate. With a EUR invoice, invoice total ÷ USD total gives that month's implied invoice rate.
  • Invoices in agreement currency, such as Azure EA, carry no provider FX effect; one appears only when you translate into a different reporting currency.

For budget comparisons, do the same with the budget rate instead of last month's rate. A budget overrun caused by a weaker euro then shows as an FX line and is not pinned on a team whose usage did not change. How this bridge fits the joint monthly meeting is covered in the monthly cloud cost review; you set the budget rate during planning, see cloud budget planning for 2027.

GBP for UK entities

A UK subsidiary receives Azure MCA invoices in GBP, can pay AWS Europe in GBP, and runs a Google Cloud billing account in GBP. Keep the local GBP view alongside the EUR group view: both are correct because they answer different questions. The reconciliation must trace the group number back through the rate policy to the GBP amount originally invoiced.

UK VAT has its own conversion rules. HMRC requires amounts in sterling and, in VAT Notice 700 section 7.6, sets out the UK market selling rate at the time of supply, or alternatively the period rates HMRC publishes for customs purposes, or another rate it has approved. Agree the choice with your UK adviser. What else UK entities need is on the UK companies page.

Never add mixed currencies silently

A group operating in EUR, GBP and CHF needs either an approved conversion or a total per currency. EUR + GBP + CHF is not a metric. A missing rate must not make a subsidiary or a provider disappear from the report either. A defensible report shows:

  • the EUR total of the lines actually converted;
  • source amounts and source currencies;
  • method, source and rate period;
  • unconverted amounts grouped by currency;
  • the FX effect separately from usage and price;
  • a warning when budget and actual use different rate bases.

Template: cloud cost currency policy

Cloud cost currency policy, version {n}, effective {date}, approved by {name, role}

1. Reporting currency: EUR. UK entities also report locally in GBP.
2. Evidence level: each cost line keeps its amount and billing currency unchanged.
3. Amounts already invoiced in EUR are not converted again.
4. Rate source for reporting conversions: ECB reference rates, EUR base,
   stored as units of foreign currency per EUR.
5. Monthly report method: {monthly average | month-end | daily rate}.
   Days without publication: latest published rate.
6. Budget: budget rate per currency {rate}, set on {date}.
   Variance from rates is shown as its own line.
7. Month-on-month: constant-currency view at last month's rate alongside actuals.
8. Missing rates: amount stays visible in its source currency and
   is excluded from the EUR total.
9. Rounding: at output only, to {n} decimal places.
10. Tax and statutory accounts: VAT and balance sheet translation follow
    finance and tax adviser instructions, not this policy.
11. Changes: only from the start of a month, with date and effect noted in the report.

Common mistakes

  • An Azure MCA amount already invoiced in EUR is converted a second time at an ECB rate.
  • The invoice is reconciled against converted prices from the Azure Retail Prices API, which Microsoft itself calls estimates.
  • Costs from Google billing accounts in different currencies are summed in a table without a currency column.
  • The USD estimate for an open month on the AWS Bills page is read as a euro amount.
  • Budget at the budget rate is compared with actuals at the invoice rate, with no FX line.
  • The rate direction is inverted: the ECB quotes foreign currency per euro, currency_conversion_rate is local currency per USD, and ExchangeRatePricingToBilling converts pricing into billing currency.
  • One month's rate is applied to credit memos that refer to an earlier invoice.

The check before sign-off

Before signing off a monthly report, engineering and finance answer together: do billing currency and amounts agree with the invoices? Was any euro amount converted twice? Do budget, forecast and actual use the same rate basis? Are missing rates visible? Is each material variance explained as usage, price or FX? How late invoices and credits reach the close is covered in cloud costs at month-end; the invoice side in euros is covered in paying and reporting AWS and Azure costs in euros.

Euro presentation in Costfluent

In Costfluent each cost line keeps its billing currency; conversion happens at query time into the workspace's presentation currency, euro by default. The source is the ECB reference rates, and you choose monthly average or transaction date as the method, with days without publication carrying the latest published rate forward. Every figure states its rate, source and method. When a rate is missing, the amount shows as unconverted instead of entering the total at one-to-one. With conversion switched off, a report spanning several currencies shows a total per currency and no combined total. You cannot store your own budget rate there; the ECB is the only rate source. More on the finance solution page.

Sources and method

Checked on 10 October 2026: AWS CUR 2.0 line item columns, CUR 2.0 pricing columns, payment preferences and payment currency, understanding your bill, consolidated billing in AWS EMEA and Marketplace currencies and rates; Microsoft MCA pricing and billing currency, exchange rate, EA pricing and currency and cost details fields; Google Cloud currencies for billing accounts and standard usage cost export; FinOps Foundation FOCUS 1.4 Billing Currency and Pricing Currency; ECB euro reference rates; section 16 UStG; section 256a HGB; HMRC VAT Notice 700. The tables, formulas and policy template are Costfluent recommendations for management reporting, not tax, legal or accounting advice.