Multi-currency in CRM: rates, reporting and reconciliation
The quote goes out in one currency, the invoice lands in another, the report reads in a third. Multi-currency is not a translation problem, it is a timing problem.
The quarterly review is on Thursday. On Tuesday night the sales manager at a mid-sized components maker notices two numbers that ought to agree and do not: the CRM puts the quarter's closed business at one figure, and the invoices finance raised over the same weeks add up to something meaningfully different. It takes two days to find the cause. Three deals were quoted in euros, converted at whatever rate happened to be live the afternoon they were entered, and never touched again. Seven weeks passed between the quote going out and the signature coming back. Nobody made a mistake. The system simply never asked anyone when the rate was supposed to stop moving.
The expensive part is not the wrong report. It is the extra discount approved on the strength of it, against a margin that looked healthier than it was, and which cannot be clawed back at month end. This article treats multi-currency as a timing problem rather than a translation problem: how many currencies a single record actually carries, the moments at which a rate has to be frozen, where rates come from and how often they refresh, when price lists must be written rather than derived, why constant-currency reporting changes the conversation, where the exchange difference belongs, how rounding errors accumulate, and who should be allowed near a rate field at all.
When does the single-currency assumption break?
Most CRM setups start with one currency and get away with it for a long time. The first crack does not arrive with the first foreign customer. It arrives with the first slow deal. When a foreign-currency sale is entered and closed inside the same week, drift is noise. When the quote is valid for thirty days and the buyer's procurement cycle runs to two months, the single amount field on the record stops telling anyone which question it is answering.
The second crack comes from the supply side. In a company that buys in one currency and sells in another, the margin sales sees and the cost procurement sees are computed at different rates, so two teams look at the same deal and quote different profit. The argument usually opens as a dispute over whose number is right. The real question is which rate, on which date.
The third is the quietest, and it appears in businesses with no foreign customers at all. Software subscriptions, cloud infrastructure and ad spend are routinely billed in a currency the company never sells in. Revenue in one currency and costs in two, collapsed onto a single rate, will misstate campaign profitability in a consistent direction. Teams selling abroad meet all three at once, and the operational side of that is covered in our step-by-step guide to running an export process.
How many currencies does one record carry?
Three, in practice. The transaction currency is the one the customer speaks in and the one printed on the quote and the invoice. The corporate currency is the common unit everything converts into so that records can be added together, usually whatever accounting works in. The reporting currency is what management or a shareholder compares in; in most companies it equals the corporate currency, and in some it does not.
Systems built without that separation carry a hidden assumption inside every report. If the record sits in one currency, the books in a second and the board meeting runs in a third, a figure on the dashboard has been through two conversions, and the order of those conversions changes the answer. Storing the transaction amount and the rate applied together, on the record itself, turns every later calculation from an argument into something reproducible.
Currency belongs to the customer record, not to the rep
If the currency of an opportunity is a choice a rep makes each time, it will eventually be made wrong. Hold the currency as a default on the customer record, let the opportunity inherit it, allow an override, and make the override visible. That one default prevents hundreds of records that would otherwise need cleaning by hand.
At which moment should the rate be frozen?
Nearly every multi-currency setup breaks on this question. Refresh the rate continuously and last month's reports move every morning. Never refresh it and the record drifts away from reality. The right answer is not halfway between the two; it sits somewhere else entirely. A rate is fixed at specific events and left floating in between them.
The working rule: freeze an amount the moment it becomes a promise to the customer, and again the moment it becomes a document in the books. In between, show the record at the current rate, because nothing has been committed there yet. The quote fixes the rate when it goes out, and the validity window of that quote is the life of the lock. The invoice fixes it a second and final time.
| Record | When the rate locks | If it does not |
|---|---|---|
| Opportunity | Never; shown at today's rate | Pipeline value frozen in the past |
| Quote | At send, for the validity window | A promise you cannot honor |
| Order | Inherited from the quote | Approved margin quietly shifts |
| Invoice | At document date, final | Books and CRM diverge |
| Payment | The day the money lands | Exchange difference stays invisible |
The contentious row is the first. Showing opportunities at today's rate means a pipeline that read one way yesterday reads slightly differently today, which makes target tracking feel unstable. The alternative is worse: an opportunity opened eight months ago being summed at an eight-month-old rate. The cure for the discomfort is not to freeze the pipeline but to read the target at the same rate. The full chain from quote through order to cash is laid out in the quote-to-cash process.
Where rates come from and how often they move
The source of a rate matters as much as the rate. When the source is undefined, two screens show two numbers and the discussion stops being technical and becomes a question of trust. The points below are what a written rate policy has to settle before anyone asks.
- Source: A central bank reference, your bank's selling rate and your payment provider's rate all differ on the same day; choosing between them is a business decision, not a configuration detail.
- Buy or sell side: Valuing receivables and payables at the same rate is convenient and unrealistic; write down which direction uses which rate while nobody is under pressure.
- Refresh frequency: One update a day at a fixed hour suits most small and mid-sized companies; minute-level updates make reports jittery, weekly updates make them wrong.
- Weekends and holidays: If nobody defines which rate applies on days with no publication, records created on a Saturday quietly get created with no rate at all.
- Manually entered rates: Some contracts fix a rate in writing; rather than banning the exception, capture it in a field of its own with a reason attached.
- Retroactive corrections: Decide in advance whether a discovered error is corrected backwards and how far back it goes, because deciding in the moment favors whoever argues loudest.
Should a price list be converted or written?
Common advice says to keep one price list and derive the rest from the rate. For most businesses that advice is wrong. A product's price in a second currency is not its home price divided by today's rate: local competition, logistics, tax treatment and buying habits all differ. A derived list changes every morning, cannot be printed into a catalog, and invites the customer to point out that the price was different last week.
The better approach is a separate, deliberately written list per currency, with the rate used only as a trigger to review them. When the rate moves outside a defined band the system raises a flag and a person makes the call. How those lists connect to discount matrices and negotiated pricing is covered in customer-specific price lists and discount matrices.
There is a genuine exception: businesses whose prices really do track a commodity. In metals, chemicals and fuel, daily derivation is normal and the buyer expects it. The dividing line is simple. If your price is the output of a cost formula, derive it. If it is a positioning decision, write it.
Which rate should reporting use?
A report saying the team grew against last year says nothing at all if the currency moved further over the same window. Until you separate how much of the growth came from selling more and how much came from the rate, there is no performance conversation to be had.
The standard method is constant currency: translate this year's transactions at last year's rate and compare. What remains is pure volume change. Showing both figures side by side on the dashboard is the honest version, one at actual rates and one at constant. The distance between them says, at a glance, whether the currency is working for you or against you.
Growth inflated by a currency move is a thank-you the team did not earn and a target the budget cannot hit.
The same split applies to forecasting: a weighted total of deals held in mixed currencies, with no stated rate assumption, is a hope rather than a projection. Grounding forecasts in behavior is covered in sales forecasting, and making a word like growth mean one thing across the company is the subject of a metric dictionary.
Where does the exchange difference belong?
The invoice goes out at one rate, the money arrives at another, and the gap has to land somewhere. That gap is a financial outcome, not a sales result. The most useful thing a CRM can do is compute commission and margin reporting from the invoice rate and hold the exchange difference as a separate line. Otherwise a genuinely good deal looks bad because of a movement the rep had no influence over.
In Türkiye, documenting and accounting for exchange differences on foreign-currency sales is a subject in its own right; we describe the mechanism in our article on foreign-currency invoices and exchange differences. Do not standardize a practice for your own transaction types, contracts and tax position without talking to your accountant first.
Rounding, decimals and errors that build up quietly
A detail that looks purely technical produces a reconciliation meeting at month end: where you round. A system that rounds each line and then sums produces a different total from one that sums and then rounds, and the gap grows with the number of lines. On a forty-line quote it becomes visible, and the customer is usually the one who sees it first.
The second trap is decimal precision. Not every currency uses two places, and unit prices frequently need four; a setup that stores rates at two decimals will misprice low-unit-cost items in a consistent direction. The third is direction of conversion: going from one currency to a second and then to a third does not give the same answer as going directly. Route cross rates through a single pivot currency, always the same way round, and test it once rather than discovering it in a customer meeting.
Collections, reconciliation and staying aligned with the books
In a company working across currencies, the customer ledger measures something different: in which currency the customer owes you, and in which currency the payment arrived. A ledger that does not keep those apart becomes unsolvable the first time a partial payment shows up. The healthier model tracks the balance in the transaction currency and converts only at the reporting layer. The step-by-step version sits in account reconciliation.
The bank side needs alignment of its own. The amount that reaches the account differs from the invoice by transfer fees and correspondent charges, and mistaking that for an exchange difference is a common error. A flow that matches statement lines against invoice records automatically keeps the two apart; how to set it up is in bank statement integration and automatic matching.
How currency and rate fields map between the CRM and the accounting package is a separate decision again. If the two systems pull rates from different sources, the integration manufactures small differences every single day, and those differences pile up by month end. Field mapping in that direction is covered in accounting software and CRM integration.
Who should be allowed to change a rate?
The rate field is the most dangerous numeric field in a CRM, because changing it on one record changes every total that record feeds. Write access to a rate therefore belongs in a different bucket from write access to an amount. The rep enters the amount and the currency, the system supplies the rate, and only a specific role can open a contractually fixed rate as an exception.
The second layer of protection is traceability. When a rate is overridden by hand, the old value, the new value, the person and the reason all have to be visible afterwards. How that record is structured is the subject of our article on the CRM audit log. In this context it works less as a security control and more as a memory that ends arguments.
Where to start in two weeks
Teams that try to build all of this at once usually finish none of it. The sequence works better. First three days: list the currencies you genuinely transact in, because for most companies the number is smaller than assumed and rarely passes three or four. Next three days: write the rate source, the refresh hour and the weekend rule onto a single page and circulate it.
Second week: turn on the lock points at quote and invoice, then add a constant-currency figure next to the actual one on the dashboard. Once those two are done, most of the expensive mistakes are closed off, and price lists, cross-rate rules and the finer points of commission can wait. One last warning: adding a currency field later is far harder than carrying one from the start. Even if you trade in a single currency today, keeping a currency field on records and populating it with a default turns a future migration from a month-long project into an afternoon.
The practical way to run multiple currencies is to keep the quote, the invoice, the payment and the report on one record, so a rate fixed once stays fixed down the whole chain. Rocketly keeps opportunity and quote management, bookkeeping and reporting on the same shared data; open a free account and build your own rate policy on top of it.