Multi-Currency Commission Plans in Spiff: A Practical Guide
Running a global sales team means your commission platform needs to handle multiple currencies accurately and consistently. Spiff does this well — but only when configured correctly. This guide covers the practical steps: how to set up currency handling, how to map fields from Salesforce, which exchange rate approach to use, and the edge cases that cause disputes if you don't plan for them.
When I rebuilt the Spiff instance for Storyblok, one of the core requirements was multi-currency support across 8 currencies for their international sales team. Getting this right was foundational — commission calculations that are wrong by even a few percent due to currency handling errors erode rep trust fast.
This guide reflects what I learned doing that implementation and others. It assumes you're using Salesforce as your CRM, though the principles apply to HubSpot too.
Why Multi-Currency Spiff Implementations Often Go Wrong
The problem isn't usually that Spiff can't handle multiple currencies — it can. The problem is that currency handling touches several layers of the system simultaneously: CRM field configuration, Spiff plan logic, rep quota settings, and payout calculations. When any one of these layers has a gap, the others can't compensate.
The most common failure modes are:
- Deals being pulled in the wrong currency — because the wrong field is mapped from Salesforce
- All deals converted to a base currency before commission calculation — which means the rep's attainment is calculated in a different currency than their quota
- Exchange rates applied inconsistently — some plans using live rates, others using static rates, producing different results for similar deals
- Quotas set in one currency but deals recognised in another — the subtlest and most damaging misconfiguration
Step-by-Step: Setting Up Multi-Currency in Spiff
Enable multi-currency in Salesforce first
Before touching Spiff, confirm that Salesforce has multi-currency enabled and that your opportunity records carry the correct currency code at the deal level. In Salesforce, this means the CurrencyIsoCode field is populated on every opportunity. If Salesforce is storing all deals in a single corporate currency and converting at the CRM level, you'll need to decide whether to use the converted amount or the original deal currency — and that decision affects how you configure Spiff.
Map the right currency fields in the Spiff integration
When configuring the Salesforce–Spiff integration, you need to explicitly map the currency code field alongside the deal amount. Map CurrencyIsoCode from the Opportunity object so Spiff knows which currency each deal is in. Also confirm whether you're pulling Amount (native currency) or ConvertedAmount (converted to corporate currency). For international teams where reps close deals in their local currency and are paid commissions in that same currency, you want the native Amount field.
Set rep quotas in the correct currency
Each rep's quota in Spiff should be set in the same currency as the deals they close. A rep in Germany with a €500k quota should have their attainment calculated in EUR, not converted to USD and compared to a USD quota. Mismatching quota currency and deal currency is the most common cause of incorrect attainment percentages in multi-currency implementations.
Define your exchange rate approach and apply it consistently
Choose one exchange rate approach and apply it to every plan. The three options are: a fixed rate updated monthly by Finance, the Salesforce dated exchange rate (updated automatically), or a contract rate locked at deal close. Each has tradeoffs — see the comparison table below. The important thing is consistency: mixing approaches across plans means two reps closing the same deal type may have commissions calculated differently.
Configure payout currency separately from calculation currency
In some organisations, commissions are calculated in local deal currency but paid out in a base corporate currency (usually USD or EUR). If that's your setup, the conversion needs to happen at payout time, not at calculation time — and the rate used should be clearly documented so reps can verify their statement. Spiff supports this, but it needs to be explicitly configured rather than assumed.
Test against real deals in every currency before go-live
Run the plan logic against at least 3–5 real historical deals per currency before going live. Compare the Spiff output to what was actually paid. This is where configuration errors surface — not in sandbox testing with dummy data. For the Storyblok implementation, we tested across all 8 currencies before any rep saw their first statement, which is why there were no currency-related disputes after launch.
Exchange Rate Approaches: A Comparison
| Approach | How it works | Best for | Watch out for |
|---|---|---|---|
| Fixed monthly rate | Finance sets a rate at the start of each month. All deals that month use that rate. | Teams that want predictability and Finance control | Rate updates must happen consistently — a missed month causes errors |
| Salesforce dated exchange rate | Uses the exchange rate recorded in Salesforce at the deal close date | Teams with Salesforce Advanced Currency Management enabled | Requires Salesforce currency tables to be kept current |
| Contract rate | Rate locked at contract signature, stored as a custom field on the opportunity | Long-cycle enterprise deals where rate volatility is a concern | Requires a custom field and a process to populate it at deal close |
The Edge Cases That Cause Disputes
Multi-currency splits
When two reps share credit on a deal — one based in the US, one in Germany — and the deal is in EUR, you need a clear rule for how split credit is handled. Is each rep's portion calculated in EUR and then converted for the US rep at payout? Or is everything converted to USD before the split? The answer needs to be in your comp policy before you build it in Spiff.
Quota changes mid-quarter
If a rep's quota is adjusted mid-quarter (territory change, ramp adjustment), and their quota is in a non-base currency, the attainment calculation needs to handle the partial-period correctly. Define whether attainment is pro-rated, reset, or carried forward — and in which currency the calculation runs.
Refunds and clawbacks on multi-currency deals
If a deal closes in EUR in month one and churns in month three triggering a clawback, which exchange rate applies to the clawback? The rate at deal close, the rate at churn, or the current rate? This sounds like a detail but it matters — and reps will ask.
The most expensive mistake: setting up plans that look correct in Spiff's UI but are silently calculating attainment in the wrong currency. This typically goes unnoticed until the first commission cycle when a rep in Germany notices their EUR €500k quota attainment is being compared to deals in USD — and the numbers don't match what they expected. By then, trust is already damaged.
Working through a multi-currency implementation? This is one of the more technically involved parts of a Spiff setup. If you'd like a direct conversation about your specific currency setup, book a free discovery call — I can usually identify the configuration approach that fits your team in 30 minutes.
Need help with a multi-currency Spiff setup?
Multi-currency is one of the trickier parts of a Spiff implementation. Let's talk through your specific setup.
Book a Free Discovery Call