Capstan Works

Multi-Currency Reporting in HubSpot: Why Your Pipeline Totals Don't Reconcile Across Currencies

Published June 14, 2026

TL;DR: HubSpot’s multi-currency setup lets you record deals in any enabled currency and then converts those amounts to a home (company) currency for rollup reports. The problem is that conversion does not happen at a single, consistent moment. Pipeline reports can use today’s exchange rate; revenue reports may use the rate that was active when the deal closed; finance uses the rate from the invoice date; and historical reports may use the rate that existed when the record was last touched. Four reports, four rates, four totals, all of them technically correct and none of them matching. The fix is not a different chart. It is understanding which rate each report uses, auditing whether historical rates are frozen correctly, and building a reporting convention that makes the timing assumption explicit so that everyone reading a number knows what it means.

How HubSpot multi-currency works

HubSpot multi-currency requires one company currency, the home currency that all rollup reports aggregate to, plus any additional currencies enabled by a Super Admin (HubSpot Knowledge Base: search “set up and manage currencies” at knowledge.hubspot.com, or see the HubSpot CRM properties reference at https://developers.hubspot.com/docs/api/crm/properties). Each enabled currency has a manually maintained exchange rate stored in the portal settings. There is no automatic feed; rates must be updated by a user.

When a sales rep creates a deal, they select the deal currency and enter the amount in that currency. HubSpot stores the raw amount in the deal’s currency alongside a converted amount in the company currency. That converted amount is the figure every rollup report, pipeline total, and forecast pulls.

The conversion arithmetic is: deal amount in foreign currency × exchange rate in effect at conversion time = home currency amount. The mechanical question, and the one that breaks reconciliation, is: which exchange rate, and from when?

The four moments where the rate differs

1. The rate at deal creation

When a deal is created, HubSpot converts the entered amount using the rate currently set in the portal. That converted amount is stored on the deal record. If the rate is later updated in portal settings, the stored conversion on existing deals does not automatically update. The deal carries the rate that existed at creation, frozen.

2. The rate at deal modification

If a user edits the deal amount, HubSpot reconverts using the rate current at the moment of that edit. A deal touched by a rep cleaning up data in Q4 picks up Q4’s rate, even if the deal was created in Q1 and the Q1 rate was very different. This is the most common hidden source of pipeline discrepancies: a bulk property update or a workflow that writes to a deal field can silently reconvert every touched deal.

3. The rate in a live pipeline report

Standard HubSpot pipeline and forecast reports show deal amounts in the home currency using the stored converted amount on each deal. Because that stored value was frozen at creation or last modification, a live pipeline report is actually a patchwork of different historical rates, not today’s rate and not a single consistent snapshot.

4. The rate at close (revenue reporting)

When a deal is marked closed-won, the converted amount on the record is whatever the current stored amount is at that moment. Finance typically books revenue using an invoice rate or a period-average rate, neither of which is guaranteed to match what was on the HubSpot deal record at the close date. That gap is why a CRO’s HubSpot revenue total and the CFO’s revenue figure rarely align to the cent, even on the same set of deals.

Why this matters for Priya and Dana

Priya, a CRO presenting a board-level forecast, pulls the pipeline total from HubSpot in USD. The figure includes a mix of USD-native deals and EUR, GBP, and CAD deals converted at whatever rate was on each record at its last touch. She does not know, and HubSpot does not surface, which rate applied to each deal. The total looks like a single, consistent number.

Dana, the RevOps analyst who owns metrics, is asked to reconcile that pipeline number against what finance sees as the committed-currency exposure. Finance holds the EUR deals at today’s EUR/USD rate for their currency-risk model. HubSpot holds those same deals at the rate from six months ago when the deals were created. The gap is real, it is not a bug, and it will not close until both sides agree on which moment’s rate is authoritative.

This is a narrower problem than the general reporting reconciliation covered in When the Dashboard and the Board Deck Disagree, where the mismatch is usually a filter or date-field difference. Here, both reports can use identical filters and date fields and still diverge, because the conversion timing is invisible in the report itself.

Auditing your portal’s currency configuration

Before fixing the reporting convention, confirm what the portal is actually doing. The audit covers three questions.

Which currencies are enabled and what are their current rates?

Pull the currency list from the portal settings: Settings > Account Defaults > Currency. For each non-home currency, record the current rate and note when it was last updated. HubSpot does not surface a rate-history log in the UI, so if the rate changed without documentation, that history is gone unless the team maintained it externally.

For a programmatic check, the HubSpot CRM API does not expose currency rates directly; the rates are a portal configuration, not an API resource. The audit of rates must be done through the UI or through a support export.

Are historical rates frozen on closed deals?

Pull a sample of closed-won deals in non-home currencies. For each deal, compare:

  • The deal’s stored home-currency amount (the amount_in_home_currency property on the deal record).
  • The deal’s foreign-currency amount times the rate that was in portal settings at the close date.

If they match, the rate was frozen at close and has not been reconverted since. If they do not match, a subsequent edit or rate update reconverted the deal after close, which means your historical revenue figures in HubSpot are not stable.

The amount_in_home_currency property is readable via the HubSpot CRM API at /crm/v3/objects/deals with the property included in the request (see the Deals API reference: https://developers.hubspot.com/docs/guides/api/crm/objects/deals). Pull the full closed-won deal set, compare each record’s foreign amount times the target rate, and flag records where the difference exceeds a small tolerance for floating-point math.

Which deal-touching workflows or bulk updates have run in the past year?

Any workflow that writes a property to a deal record, even a non-amount property, can trigger a reconversion if the portal is configured to reconvert on update. Audit the workflow list for anything that modifies deal records at scale. Flag those workflows as a currency-rate risk and document their last run date. This same workflow-audit discipline applies to the volume and ownership risks covered in How Many HubSpot Workflows Is Too Many.

The safe-reporting pattern for multi-currency portals

Rule 1: Pick one canonical conversion moment per report type and write it down

For pipeline reports, the most defensible choice is: convert at today’s rate. That makes the pipeline a current-dollar view of exposure. Document this choice in the same place you document the metric definition, as described in When the Dashboard and the Board Deck Disagree.

For closed-won revenue reports, the defensible choice is: convert at the rate that was in portal settings on the deal’s close date. HubSpot does not store the rate-at-close automatically, so this requires either (a) a custom property that captures the rate at the moment of close via a workflow, or (b) accepting that HubSpot’s revenue total is a post-hoc approximation and using finance’s system as the authoritative revenue figure.

For forecast reports, document whether the forecast total represents current-rate or creation-rate conversions, because that affects how it should be interpreted alongside a currency-hedged financial model.

Rule 2: Store the rate-at-close on each deal

The most reliable way to make HubSpot’s closed-won revenue figures stable is to write the exchange rate to a custom number property on the deal at the moment of close. A workflow enrolled on deal stage change to Closed Won can copy the active portal rate to that custom field. That field then becomes the audit trail: if the deal’s amount_in_home_currency ever diverges from deal_amount_foreign × rate_at_close, you have an actionable discrepancy rather than an opaque mismatch.

This requires updating the portal’s exchange rate on a defined schedule and documenting each rate change with a date. Without that schedule and log, the custom property captures the rate that happened to be set on the close date, which may be weeks stale.

Rule 3: Tell readers the timing assumption on every report

A pipeline total that reads “$4.2M” with no footnote is ambiguous in a multi-currency portal. A pipeline total that reads “$4.2M (non-USD deals converted at rates as of 2026-06-15 portal settings)” is auditable. The footnote is one sentence. It stops the reconciliation question before it starts.

This discipline is the same one that governs close-date labeling on forecasts covered in The Forecast You Can Trust: the number is only defensible when the assumption underneath it is visible.

Rule 4: Do not use HubSpot as the revenue-of-record for multi-currency books

HubSpot is a CRM, not an accounting system. When a company transacts in multiple currencies, the authoritative revenue figure lives in the ERP or accounting system, where period-average rates, functional currency rules, and realized gain/loss on settlement are handled correctly. HubSpot’s role is to produce a deal-level list that finance can reconcile against, not to be the source of truth for reported revenue. Treating HubSpot’s home-currency rollup as a substitute for finance’s revenue figure is the structural error that causes CRO-CFO disagreements on closed numbers.

What a clean multi-currency audit produces

A finished audit of a multi-currency HubSpot portal produces four deliverables:

  1. A currency configuration snapshot: all enabled currencies, their current rates, and the date of last update.
  2. A closed-deal rate-stability check: the count of closed-won deals where amount_in_home_currency diverges from the expected frozen-rate calculation, and the median divergence in absolute home-currency terms.
  3. A workflow-reconversion risk list: all workflows touching deal records in the past twelve months, flagged as reconversion risks, with a recommended mitigation for each.
  4. A reporting-convention document: one page that states which conversion moment applies to each report type, how that convention is enforced, and what the footnote on each published report must say.

These four deliverables are also the acceptance criteria for a Data Foundation Audit on any portal that transacts in more than one currency. Until those four outputs exist, the pipeline and revenue totals are not defensible in a board meeting, even if every deal record is otherwise clean.

If your CRO’s HubSpot pipeline number and your CFO’s currency exposure don’t reconcile, the gap is almost certainly a conversion-timing problem, not bad data. Start with a Data Foundation Audit to get a clear picture of which rates are frozen, which have drifted, and what the canonical reporting convention should be for your portal.

Sources

  1. HubSpot Knowledge Base, “Set up and manage currencies in HubSpot”: search “set up and manage currencies” at https://knowledge.hubspot.com (KB URL requires authenticated session; page title confirmed via HubSpot support documentation as of 2026-06-15).
  2. HubSpot CRM API reference, Properties: https://developers.hubspot.com/docs/api/crm/properties (resolves 200 after redirect, confirmed 2026-06-15; documents amount_in_home_currency and deal_currency_code deal properties).
  3. HubSpot CRM API reference, Deals guide: https://developers.hubspot.com/docs/guides/api/crm/objects/deals (resolves 200 after redirect, confirmed 2026-06-15).
  4. Anonymized multi-currency RevOps engagements (no client name, no portal identifiers).

← Back to all field notes

Start with the data layer.

Most HubSpot problems are data problems wearing a reporting costume. A Data Foundation Audit turns “the numbers feel off” into a prioritized, fundable backlog.

Explore the Data Foundation Audit