Sales Assistant + Multi-Currency: integration guide
↑ Back to topThis guide explains what happens when you run TIV Sales Assistant alongside TIV Multi-Currency on the same store.ย It is for store owners who want to know exactly what their customers will see.
All examples use the same setup so the numbers line up across sections:
- Store base currency:ย CAD.
- Multi-Currency is configured with realistic exchange rates against CAD.
- “Coffee Beans” is priced atย $19.99 CADย in the product editor. Its price in every other currency comes from the exchange rate.
- Multi-Currency lets you set a fixed regular and/or sale price for any specific currency on any product. When set, that value is used as-is for that currency and skips the exchange-rate conversion. “Tea Box” uses this feature. It is priced atย $9.99 CADย in the product editor, plus these per-currency overrides:
- USD regularย $7.99, no USD sale
- EUR regularย โฌ6.99, EUR saleย โฌ4.99
- JPY regularย ยฅ1,200, JPY saleย ยฅ899
Part 1 – Everyday cases
↑ Back to top1.1. A percentage sale takes the same percentage off in every currency
↑ Back to topA “20% off” sale takes 20% off the price the customer sees, in whatever currency they are browsing. There is nothing to configure currency-by-currency.
Example. Coffee Beans, base $19.99 CAD. Sales Assistant sale “Weekend 20% off All” is running.
| Customer currency | Regular | After 20% off | How the sale is produced |
|---|---|---|---|
| CAD | $19.99 | $15.99 | Base currency, no conversion. Sales Assistant takes 20% off $19.99. |
| USD | $14.79 | $11.83 | $19.99 CAD converts to $14.79 USD; Sales Assistant takes 20% off that. |
| EUR | โฌ13.19 | โฌ10.55 | $19.99 CAD converts to โฌ13.19; Sales Assistant takes 20% off that. |
| JPY | ยฅ2,199 | ยฅ1,759 | $19.99 CAD converts to ยฅ2,199; Sales Assistant takes 20% off that. |
The trailing cents (like .55 and .83) come from taking 20% off a converted price and rounding to the currency’s standard decimals.
1.2. A fixed-amount sale keeps its real value across currencies
↑ Back to topA “$5 off” sale takes five base-currency dollars of value off the price, in every currency. The $5 is first converted to the customer’s currency at the exchange rate, then subtracted. So a customer in JPY gets ยฅ550 off, a customer in EUR gets โฌ3.30 off, and so on.
Example. Coffee Beans, base $19.99 CAD. Flash sale “Five Off Pantry” ($5 fixed) is running.
| Customer currency | Regular | After $5 base off | What $5 CAD is worth here |
|---|---|---|---|
| CAD | $19.99 | $14.99 | $5.00 |
| USD | $14.79 | $11.09 | $3.70 |
| EUR | โฌ13.19 | โฌ9.89 | โฌ3.30 |
| JPY | ยฅ2,199 | ยฅ1,649 | ยฅ550 |
1.3. Sale priority is the same for every customer
↑ Back to topEvery Sales Assistant sale has a priority number. When more than one sale could apply to the same product, Sales Assistant checks them from the lowest number up, applies the first one that matches, and skips the rest. So a sale with priority 3 always takes precedence over a sale with priority 7. This decision is made before currency conversion, so the same sale is active for every customer. A customer in CAD and a customer in JPY will always see the same sale active on the same product.
Example. Coffee Beans, base $19.99 CAD. Two sales running:
- “Weekend 20% off All” – priority 10.
- “Five Off Pantry” – $5 fixed, priority 7.
Priority 7 is lower, so “Five Off Pantry” is the active sale in every currency. Each customer’s discount is the local equivalent of $5 CAD:
| Customer currency | Regular | Final sale | Active sale |
|---|---|---|---|
| CAD | $19.99 | $14.99 | “Five Off Pantry” ($5 CAD) |
| USD | $14.79 | $11.09 | “Five Off Pantry” ($5 CAD = $3.70 USD) |
| EUR | โฌ13.19 | โฌ9.89 | “Five Off Pantry” ($5 CAD = โฌ3.30) |
| JPY | ยฅ2,199 | ยฅ1,649 | “Five Off Pantry” ($5 CAD = ยฅ550) |
If you boost “Weekend 20% off All” to priority 3, it now takes precedence and is the active sale for every customer:
| Customer currency | Regular | Final sale | Active sale |
|---|---|---|---|
| CAD | $19.99 | $15.99 | “Weekend 20% off All” |
| USD | $14.79 | $11.83 | “Weekend 20% off All” |
| EUR | โฌ13.19 | โฌ10.55 | “Weekend 20% off All” |
| JPY | ยฅ2,199 | ยฅ1,759 | “Weekend 20% off All” |
1.4. Cart and checkout follow the customer’s current currency
↑ Back to topA customer can add a product to the cart in one currency and then switch the currency switcher to another. On the next page load, the cart and checkout redisplay every line in the new currency. Any Sales Assistant discount that applied on the product page also applies in the cart.
Example. Tea Box (base $9.99 CAD, EUR custom sale โฌ4.99). No Sales Assistant sale running.
- Customer browses in CAD, adds Tea Box to the cart. Cart showsย $9.99.
- Customer switches to EUR using the currency switcher.
- Cart now showsย โฌ4.99ย (the EUR custom sale you set in the product editor).
- Customer proceeds to checkout. The checkout total readsย โฌ4.99, matching the custom EUR sale.
- Customer switches back to CAD. Cart returns toย $9.99.
The discount is not applied twice.
1.5. Your per-currency price overrides are honored
↑ Back to topIf you set a custom sale price for a currency (for example, “EUR sale price = โฌ4.99”), that is exactly what the EUR customer sees. Sales Assistant will not stack its own discount on top of a price you set by hand. The price you entered for EUR is the final price for EUR.
Example. Tea Box, base $9.99 CAD. Per-currency overrides set in the product editor:
- USD regular $7.99 (no USD sale)
- EUR regular โฌ6.99, EUR sale โฌ4.99
- JPY regular ยฅ1,200, JPY sale ยฅ899
Sales Assistant sale “Weekend 20% off All” is running.
| Customer currency | Display | Why |
|---|---|---|
| CAD | $9.99 -> $7.99 | No custom price; the 20% sale applies normally |
| USD | $7.99 -> $6.39 | No custom sale; the 20% sale applies on top of the custom regular |
| EUR | โฌ6.99 -> โฌ4.99 | Your custom EUR sale is the active price; the 20% sale is suppressed |
| JPY | ยฅ1,200 -> ยฅ899 | Your custom JPY sale is the active price; the 20% sale is suppressed |
1.6. Variable products work across currencies
↑ Back to topFor a variable product (one parent with several variations), the price range on the shop and product pages is converted correctly for each variation, and any Sales Assistant discount applies to each one. There is nothing special to configure.
Example. A variable product with variations $19.99 / $29.99 / $39.99 CAD. Sales Assistant “Weekend 20% off” running.
| Customer currency | Range shown |
|---|---|
| CAD | $19.99-$39.99 -> $15.99-$31.99 |
| USD | $14.79-$29.59 -> $11.83-$23.67 |
| EUR | โฌ13.19-โฌ26.39 -> โฌ10.55-โฌ21.11 |
| JPY | ยฅ2,199-ยฅ4,399 -> ยฅ1,759-ยฅ3,519 |
Part 2 – Less obvious behaviors
↑ Back to topThese are deliberate design choices, not bugs. They surprise some merchants the first time they hit them, so it helps to know about them up front.
Several of the cases below use Multi-Currency’s optional display settings, which change how converted prices look. They are all off by default. The four settings referenced below:
- Roundingย – snap each converted price up to a step you choose, for example “the nearest whole dollar”.
- Charmย – subtract a small fixed amount from the rounded price to produce endings like .99.
- Adaptive roundingย – automatically use a larger rounding step on larger prices.
- Conversion feeย – add a percentage surcharge to the converted price.
In Part 1 these were all off, so only the exchange rate and the Sales Assistant discount affected the numbers.
2.1. The base currency is never touched by Multi-Currency
↑ Back to topMulti-Currency’s conversion, rounding, charm, and conversion fee all skip when the customer browses in your store’s base currency. A base-currency customer sees the price exactly as you entered it in the product editor, with no adjustments.
This is intentional – those prices are the ones you typed in, so there is nothing to convert or reshape. It can still surprise you: if you enable “round to the nearest dollar”, base-currency prices stay at $19.99 instead of becoming $20.00.
Example. Coffee Beans, base $19.99 CAD. Multi-Currency is set to round prices up to the nearest whole unit.
| Customer currency | Display | What you might have expected |
|---|---|---|
| CAD | $19.99 | $20.00, but base bypasses rounding |
| USD | $15.00 | $15.00 |
| EUR | โฌ14.00 | โฌ14.00 |
| JPY | ยฅ2,199 | ยฅ2,199 (already a whole unit) |
The same skip applies to charm and conversion fee. If you set a 3% fee, base-currency orders pay no fee. To get a “whole units” look in your base currency, enter the price as a whole unit in the product editor.
2.2. A custom sale price for a currency is the final word
↑ Back to topWhen you set a custom sale price for a currency, Sales Assistant will not apply any additional discount in that currency – no matter how many Sales Assistant sales are running, what their priorities are, or whether they are percentage or fixed-amount. Your per-currency override is treated as the final price.
This is intentional. If you set “this product is โฌ4.99 on sale in EUR”, you do not want a 20%-off sale to take another 20% off and show โฌ3.99 to EU customers. The trade-off: Sales Assistant sales will not deepen a discount on a currency you have already set by hand.
Example. Tea Box (EUR custom sale โฌ4.99, JPY custom sale ยฅ899, no custom CAD or USD sale). Sales Assistant sales running:
- “Weekend 20% off All” – priority 10.
- “Five Off Pantry” – $5 fixed, priority 7.
| Customer currency | Display | Why |
|---|---|---|
| CAD | $9.99 -> $4.99 | No custom sale here, so Sales Assistant runs. Five Off is the active sale by priority. |
| USD | $7.99 -> $4.29 | No custom sale here, so Sales Assistant runs. Five Off is the active sale. |
| EUR | โฌ6.99 -> โฌ4.99 | Your custom EUR sale is the active price. Both Sales Assistant sales are suppressed. |
| JPY | ยฅ1,200 -> ยฅ899 | Your custom JPY sale is the active price. Both Sales Assistant sales are suppressed. |
To deepen a per-currency price, lower the custom sale in the product editor itself, instead of stacking a Sales Assistant sale on top.
2.3. A custom regular price changes how fixed-amount discounts land
↑ Back to topWhen you set a custom regular price for a currency (for example “USD regular = $7.99”), Sales Assistant uses that custom regular as the starting point for its discount. A “$5 off” sale converts the $5 into the active currency and subtracts it from your custom regular.
The regular price the customer sees is the one you set, and the discount is applied to that.
Example. Tea Box. Base $9.99 CAD. Custom USD regular $7.99 (no custom USD sale). Sales Assistant flash sale “Five Off Pantry” ($5 fixed) is running.
| Customer currency | Regular | After $5 (base) off | How it gets there |
|---|---|---|---|
| CAD | $9.99 | $4.99 | $9.99 minus $5 |
| USD | $7.99 | $4.29 | Your custom regular $7.99 minus the converted $5 (which is $3.70 in USD) |
If you had not set a custom USD regular, the USD regular would be the converted base ($7.39) and the sale would be $3.69. The 60-cent difference reflects the fact that you priced this product higher in USD than the plain conversion would.
2.4. When rounding is on, percentage discounts apply to the rounded price
↑ Back to topIf you have Multi-Currency set to round prices, Sales Assistant calculates its percentage discount from the rounded price. So a 20%-off sale on a product that converts to $14.79 and rounds up to $15.00 produces $12.00, not $11.83.
The rule is simple: the discount applies to the price the customer actually sees on the page. When rounding is off, that is the converted price; when rounding is on, that is the rounded price.
Example. Coffee Beans, base $19.99 CAD. Multi-Currency: round prices up to the nearest whole unit. No charm, no fee. Sales Assistant “Weekend 20% off” running.
| Customer currency | Regular (post-rounding) | After 20% off | What 20% of the unrounded price would be |
|---|---|---|---|
| CAD | $19.99 (base bypass) | $15.99 | same |
| USD | $15.00 | $12.00 | $11.83 |
| EUR | โฌ14.00 | โฌ11.20 | โฌ10.55 |
| JPY | ยฅ2,199 (already a whole unit) | ยฅ1,759 | ยฅ1,759 |
The “extra” cents in USD and EUR are intentional. They keep the displayed numbers clean ($15.00 -> $12.00) instead of ugly ($15.00 -> $11.83).
2.5. For .99-style endings, use adaptive rounding
↑ Back to topA bare 1-cent charm only shows up on currencies with two decimal places, so it misses JPY entirely. Turn on adaptive rounding instead: it scales both the rounding step and the charm with the price, producing clean endings in every currency.
Example. Coffee Beans, base $19.99 CAD. Adaptive rounding on, charm set.
| Customer currency | Displayed |
|---|---|
| USD | $14.99 |
| EUR | โฌ13.99 |
| JPY | ยฅ2,190 |
2.6. Adaptive rounding uses bigger steps on bigger prices
↑ Back to topWhen adaptive rounding is on, the rounding step grows with the price: a small step for small prices, a larger step for hundreds, a larger step still for thousands. That is what lets the same setting produce clean round numbers across very different currencies – $14.99 reads right at small scale, ยฅ55,000 reads right at large scale.
| Converted price size | Effective rounding step (relative to your setting) |
|---|---|
| Under 100 | as configured |
| 100 to 5,000 | x10 |
| 5,000 to 50,000 | x100 |
| 50,000 and up | x1,000 |
Example. A product with base CAD $499.99. Multi-Currency: round up to the nearest whole unit, adaptive rounding on.
| Customer currency | Final |
|---|---|
| CAD | $499.99 (base bypass) |
| USD | $370.00 (rounded up to the nearest 10) |
| EUR | โฌ330.00 (rounded up to the nearest 10) |
| JPY | ยฅ55,000 (rounded up to the nearest 1,000) |
One thing worth knowing: a small change in the exchange rate or the base price can move a product across a band boundary, causing a visible jump in the displayed price. If you have products priced close to a boundary, give them a quick eyeball.
2.7. A conversion fee applies before any discount
↑ Back to topMulti-Currency has an optional conversion fee setting. When enabled, it adds a percentage surcharge to every converted price. Most stores use it to offset the foreign-exchange or processing fees their payment provider (the issuing bank, PayPal, Stripe, and so on) charges on cross-currency transactions. The fee comes first; rounding, charm, and the Sales Assistant discount all come after. The customer pays the fee as part of the final discounted price.
Example. Coffee Beans, base $19.99 CAD. Multi-Currency: 3% conversion fee. No rounding, no charm. Sales Assistant “Weekend 20% off” running.
| Customer currency | Regular (with 3% fee added) | After 20% off | Displayed in production |
|---|---|---|---|
| CAD | $19.99 (base bypass; no fee) | $15.99 | $19.99 -> $15.99 |
| USD | $15.23 | $12.18 | $15.99 -> $12.79 |
| EUR | โฌ13.59 | โฌ10.87 | โฌ13.99 -> โฌ11.19 |
| JPY | ยฅ2,265 | ยฅ1,812 | ยฅ2,260 -> ยฅ1,808 |
The “Displayed in production” column assumes adaptive rounding and a 1-cent charm are also on (the combination recommended in 2.5).
The fee is invisible to base-currency customers and applies uniformly to everyone else.
What it means in practice: the fee is baked into every displayed price in non-base currencies, so a “20% off” sale really takes 20% off the regular the customer sees.
Part 3 – At a glance
↑ Back to topFor a customer in a non-base currency, here is the order of steps that produce the final price they see:
- The base-currency price is converted using the exchange rate.
- If a conversion fee is set, it is added on top.
- If rounding is on, the price is rounded up to your chosen step (larger steps on larger prices, if adaptive rounding is on).
- If charm is set, it is subtracted to produce a .99-style ending.
- If a Sales Assistant sale matches the product, its discount is applied to whatever price exists at this point.
- The result is shown with the active currency’s symbol and decimal style.
For a customer in your base currency, steps 1 to 4 are all skipped. They see the price exactly as you entered it, and Sales Assistant discounts that directly.
For products with a per-currency custom sale price, that custom price is used as-is for the matching currency and Sales Assistant does not discount further in that currency.