CRM Currency Migration Checks for Deal Values

Published on
Last updated
Reading time6 min read
CRM Currency Migration Checks for Deal Values

Sign off a CRM currency migration deal by deal. Match each source deal to its destination record and check the original amount, currency code, stage, close date, and value in your reporting currency. Compare totals after those checks. In a three-deal exercise we ran, the open pipeline still added up to $21,000 after two deals changed by $1,000 in opposite directions.

Sales operations can use this check to accept a migration load. Finance should supply the exchange rate policy and review the figures that feed its reports. Use the CRM migration checklist to plan the rest of the move.

CRM currency migration starts with two amounts

Export the amount in the deal's own currency and the value in the currency used for reporting. For a €10,000 deal worth $11,000 on the source report, keep EUR and 10,000 together in the import mapping. Preserve $11,000 with the exchange rate and its effective date as evidence. If the destination computes the reporting value, load the native deal fields and reconcile the calculated output.

Agree with finance on the currency used for each dashboard before comparing the two systems. A manager's personal currency, a company's reporting currency, and a deal's transaction currency can all appear on the same screen. Export from a named report with a fixed reporting currency, filters, and observation time. Save those details with your CRM export checklist so another reviewer can repeat the comparison.

Source evidenceDestination check
Source deal IDExactly one destination deal linked to that ID
Native amount and currency codeBoth values agree with the approved field mapping
Stage, pipeline, and close dateThe destination puts the deal in the intended report and period
Reporting amount and currencyThe normalized value matches the approved expectation
Rate, effective date, and sourceThe destination uses the selected rate policy for that record
Owner or reporting segmentThe record appears under the right person or team

Run uniqueness and missing-record checks before comparing figures. A sum can survive an omitted deal when a different deal gets duplicated for the same value. Use the same source identifier on retries, and carry approved merge decisions from your CRM merge survivorship plan into the reconciliation.

Write down the rate direction

Name rates in units a reviewer can read. For example, 1.25 USD per GBP means GBP 8,000 converts to USD 10,000. The reciprocal is 0.80 GBP per USD. Multiplying the same £8,000 by 0.80 gives $6,400, a difference of $3,600. Check the direction in both the export field and the destination import settings.

Agree on precision separately for the amount, rate, and reporting result. Compare the original amount at its stored precision and use the destination's documented rounding policy for the reporting value. Give each approved tolerance a reason, such as a difference between rounding each row and rounding after aggregation. Currency codes and record identities require exact agreement.

CRM currency migration checks for open and closed deals

Export open and closed deals as separate groups. Record the rate snapshot used for open pipeline and decide which historical date governs each closed deal. Take the source and destination snapshots at an agreed point in the cutover. If the rates change during the move, isolate that effect from rep edits, stage changes, and import mistakes.

HubSpot's default deal properties distinguish Amount in the deal's currency from Amount in company currency. Its account currency documentation explains that open deals use the latest configured rate and that the company-currency value for a closed deal with a close date uses the rate in effect on that date, with a fallback to the nearest rate when needed. Include an open deal and a backdated closed deal in the test load. Record the normalized value and the exchange rate shown on each deal after the import.

Salesforce's Advanced Currency Management documentation describes dated conversion rates for opportunities. It also lists exceptions, including forecasts and currency formulas. If your source uses dated rates, export from the opportunity report you intend to reconcile and check the forecast separately. Ask the vendor to demonstrate both using a close date on either side of a rate change.

Use your sales pipeline stage definitions to agree on what counts as open, won, and lost. A migration that maps a won deal to an open stage changes both the population and the calculation under an open-rate policy. Compare stage and close date before classifying a value difference as an exchange rate problem. If forecasts carry probabilities or overrides, check those separately using the forecasting methods guide.

Five cases to replay before approving the import

We ran a fictional exercise with two open deals and one won deal. The USD 26,400 total is a check across all three test rows. The open pipeline on its own is USD 21,000. The inputs specify USD per unit of each deal currency, and the Python checker compares deal IDs, field values, and converted amounts.

Import caseUSD totalDifferenceWhat the row check found
Unchanged$26,400$0All three rows agree
Offsetting errors$26,400$0Deal A lost $1,000 after EUR became USD. Deal B gained $1,000 under the wrong GBP rate
Converted amount loaded as native$26,400$0Deal A became USD 11,000 in place of EUR 10,000
Close date and rate changed$26,500+$100Deal C moved from June 30 to July 1 and picked up the July rate
Reciprocal rate$22,800−$3,600Deal B used 0.80 instead of 1.25 USD per GBP

In the offsetting case, both changed deals are open, so even the separate open-pipeline total passes. In the converted-amount case, the reporting value of deal A still matches on its own. Its deal currency and original amount expose the error.

Download the Python checker and inputs and results. Run python3 reconcile.py to reproduce the table. For your own trial, swap in an open deal in each currency you use, a won deal at a rate boundary, and a deal with a documented rate override. Run the exercise on a small test load first. If you share a sandbox with other teams, plan the sandbox refresh before adding records.

Turn discrepancies into a cutover decision

Review failures by type. A missing currency code belongs with the import mapping owner. A correctly loaded EUR amount that converts at the wrong rate belongs with the person who owns the currency settings. A closed deal that appears in the wrong quarter belongs with the stage or date mapping owner. Give each issue one owner and a retest date. The CRM field ownership guide helps when two integrations can write the same field.

For approved changes in reporting policy, retain the source value and calculate an expected destination value under the new rule. Record the policy change alongside the delta. For example, if the new forecast uses the cutover rate for all open EUR deals, group those changes together and keep them separate from incorrect deal amounts. Ask finance to sign off on the expected changes by report.

Keep the exception log small enough to use during the final load. Include source ID, destination ID, native amount and code, old and new reporting values, rate rule, disposition, and reviewer. Reconcile any deals created, repriced, reopened, or closed between the trial and cutover. Hold the cutover if a required reporting group contains unexplained differences. Add the completed reconciliation to the CRM implementation checklist.

Frequently Asked Questions

Should I import the converted amount or the original deal amount?

Import the native amount and currency together when the destination stores both and computes its reporting value. Keep the source's converted value in the acceptance export. If your reporting requirements include a frozen historical value, agree on a separate destination field for that value and label its reporting currency.

Why does my new CRM show different pipeline totals?

Compare the record populations first. Check stages, dates, owners, and duplicates. Then compare native amounts, currency codes, rate direction, and effective dates. A change in one of those fields tells you which mapping or policy to investigate. If every individual deal agrees, compare report filters and aggregation rules.

How should I handle deals with no currency code?

Trace the source's default-currency rule and document which records it applied to. When the source cannot establish the code, send those deals for review before importing their amounts. An empty currency field requires a decision, especially when multiple teams enter deals in different currencies.

Use the same cases in CRM demos

Give shortlisted vendors the same source rows and ask each to return a deal export plus its open-pipeline and closed-won reports. Request an example of a reopened deal and ask how its exchange rate changes. Have your reporting owner compare the exports using the agreed acceptance fields.

For an existing Salesforce migration shortlist, use HubSpot vs Salesforce to compare the two tools' administration and reporting trade-offs. If your team is evaluating a sales-focused pipeline and a broader CRM suite, use Pipedrive vs HubSpot and repeat the currency test in both systems.