Skip to main content

Multi-currency support

G
Written by Guido Kaspers

ℹ️ This feature is available in Returns V2 only.

When customers place international orders through Shopify, Swap displays prices in the customer's original purchase currency throughout the returns portal. This article explains how conversion rates are calculated and how multi-currency values are presented across different parts of the returns flow.


Shopify requirements

Shopify represents amounts using a PriceSet, which contains two Money fields:

  • ShopMoney – the store's base currency

  • PresentmentMoney – the customer's currency used in the original order

For multi-currency functionality to apply correctly, international orders must have a customer currency (PresentmentMoney) that is different from the store currency (ShopMoney), as recommended by Shopify.


Conversion rate calculation

The conversion rate used by Swap is derived directly from Shopify's original order values:

orderConversionRate = totalPriceSet.presentmentMoney.amount / totalPriceSet.shopMoney.amount


Price presentation in the returns portal

Displaying item prices

  • Swap uses the store base currency (ShopMoney) as the foundation for all transactions.

  • The item's return value in store currency is converted using the orderConversionRate before being displayed in the customer's currency.

  • Swap does not use Shopify's PresentmentMoney directly, since Shopify rounds these values. By calculating the conversion rate from the original order, Swap ensures accurate and consistent display values across all transactions.


Currency display

  • Built-in formatting ensures correct representation of currency symbols, names, and decimal precision.

  • All customer-facing values are shown with 2 decimal places.


Exchange item prices

  • Exchange item prices are pulled from the store's catalogue in store currency.

  • Prices are then converted into customer currency using the same orderConversionRate.

  • Shopify already rounds catalogue prices to two decimals before passing them to the portal. Swap displays those same values.


Fees (taxes and duties)

All fees, including taxes and duties, are displayed in customer currency using the orderConversionRate.


Additional payments

  • Additional payments are calculated using the orderConversionRate.

  • All transactions are processed via Stripe in the currency configured in Stripe (typically the store currency).


Refunds

Refund behaviour may introduce discrepancies:

  • Customers will see refunds in their original payment currency (e.g., $100 USD).

    • At the time of order, $100 USD may have equated to £90 GBP.

    • At the time of refund, currency fluctuations may mean the brand sees £95 GBP reported in Shopify.

    • Result: Customers always get the correct refund amount in their currency, but reporting in Shopify may reflect different store-currency amounts.


RMA and analytics

  • RMA presentations in the portal follow the same multi-currency logic described above.

  • Analytics capture store-currency values to allow for accurate reconciliation and reporting.

Did this answer your question?