TIV Sales Assistant – Compatibility and Integration

Sales Assistant + Multi-Currency: integration guide

↑ Back to top

This 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 top

1.1. A percentage sale takes the same percentage off in every currency

↑ Back to top

A “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 currencyRegularAfter 20% offHow the sale is produced
CAD$19.99$15.99Base 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 top

A “$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 currencyRegularAfter $5 base offWhat $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 top

Every 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 currencyRegularFinal saleActive 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 currencyRegularFinal saleActive 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 top

A 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.

  1. Customer browses in CAD, adds Tea Box to the cart. Cart showsย $9.99.
  2. Customer switches to EUR using the currency switcher.
  3. Cart now showsย โ‚ฌ4.99ย (the EUR custom sale you set in the product editor).
  4. Customer proceeds to checkout. The checkout total readsย โ‚ฌ4.99, matching the custom EUR sale.
  5. 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 top

If 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 currencyDisplayWhy
CAD$9.99 -> $7.99No custom price; the 20% sale applies normally
USD$7.99 -> $6.39No custom sale; the 20% sale applies on top of the custom regular
EURโ‚ฌ6.99 -> โ‚ฌ4.99Your custom EUR sale is the active price; the 20% sale is suppressed
JPYยฅ1,200 -> ยฅ899Your custom JPY sale is the active price; the 20% sale is suppressed

1.6. Variable products work across currencies

↑ Back to top

For 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 currencyRange 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 top

These 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 top

Multi-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 currencyDisplayWhat 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 top

When 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 currencyDisplayWhy
CAD$9.99 -> $4.99No custom sale here, so Sales Assistant runs. Five Off is the active sale by priority.
USD$7.99 -> $4.29No custom sale here, so Sales Assistant runs. Five Off is the active sale.
EURโ‚ฌ6.99 -> โ‚ฌ4.99Your custom EUR sale is the active price. Both Sales Assistant sales are suppressed.
JPYยฅ1,200 -> ยฅ899Your 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 top

When 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 currencyRegularAfter $5 (base) offHow it gets there
CAD$9.99$4.99$9.99 minus $5
USD$7.99$4.29Your 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 top

If 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 currencyRegular (post-rounding)After 20% offWhat 20% of the unrounded price would be
CAD$19.99 (base bypass)$15.99same
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 top

A 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 currencyDisplayed
USD$14.99
EURโ‚ฌ13.99
JPYยฅ2,190

2.6. Adaptive rounding uses bigger steps on bigger prices

↑ Back to top

When 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 sizeEffective rounding step (relative to your setting)
Under 100as configured
100 to 5,000x10
5,000 to 50,000x100
50,000 and upx1,000

Example. A product with base CAD $499.99. Multi-Currency: round up to the nearest whole unit, adaptive rounding on.

Customer currencyFinal
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 top

Multi-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 currencyRegular (with 3% fee added)After 20% offDisplayed 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 top

For a customer in a non-base currency, here is the order of steps that produce the final price they see:

  1. The base-currency price is converted using the exchange rate.
  2. If a conversion fee is set, it is added on top.
  3. If rounding is on, the price is rounded up to your chosen step (larger steps on larger prices, if adaptive rounding is on).
  4. If charm is set, it is subtracted to produce a .99-style ending.
  5. If a Sales Assistant sale matches the product, its discount is applied to whatever price exists at this point.
  6. 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.

Use of your personal data
We and our partners process your personal data (such as browsing data, IP Addresses, cookie information, and other unique identifiers) based on your consent and/or our legitimate interest to optimize our website, marketing activities, and your user experience.