Shopify multi-currency

Previously, Shopify only allowed orders and payments in the store base currency. Customers shopping abroad could view prices in their local currency, but when they checked out they would be asked to pay in the merchant base currency.
Shopify users can now allow customers to check out in their local currency. Brightpearl will get foreign currency orders, payment authorizations and payment captures, returns and refunds from Shopify and create them in Brightpearl in the foreign currency.

First, you will need to add and enable foreign currencies in your Shopify account.

Learn more about how to sell in multiple currencies on Shopify here.

Screen_Shot_2019-05-22_at_9.50.40_PM.png

Next, you will need to make sure that these currencies exist in your Brightpearl account. Go to Settings > Company > Currencies to add new currencies and to set up exchange rates.

Learn more about foreign currency sales in Brightpearl here.

When a foreign currency order downloads to Brightpearl there will be a fixed exchange rate set on the order, which will also be used by the payment.

If a foreign currency order is placed in Shopify and the currency doesn’t exist in Brightpearl, you will see an e-commerce alert indicating that the order failed to download and prompting you to create the currency in your account.  After you create the currency in Brightpearl, the order will download during nightly reconciliation or you can trigger it manually in the Brightpearl app settings in Shopify by going to Orders > Actions > Import single order.

Orders and payments

Possible scenarios:

Brightpearl and Shopify have the same base currency:

    • The order and payment currency is base to both Brightpearl and Shopify
    • The order and payment currency is foreign to both Brightpearl and Shopify

Brightpearl and Shopify have different base currencies:

    • The order and payment currency is Shopify's base currency, but is foreign to Brightpearl
    • The order and payment currency is Brightpearl's base currency, but is foreign to Shopify
    • The order and payment currency is foreign to both Brightpearl and Shopify

Expected order/payment currency and exchange rate usage in Brightpearl depending on the Brightpearl and Shopify base currency configuration:

Screen_Shot_2019-05-22_at_10.11.13_PM.png

The order exchange rate should remain fixed and therefore payments will use the same exchange rate as the Brightpearl order.

When the order rate is not fixed, the payment will use the payment exchange rate from Shopify. This will only happen if you uncheck the “fixed” box against the exchange rate on the order in Brightpearl. It is therefore important to keep the exchange rate fixed.

Returns and refunds

The difference between orders and returns is that sales credits created in Brightpearl uses the exchange rate and fixed setting as seen on the original sales order in Brightpearl. The refund rates will follow the same rules as payments on orders - taking the sales credit rate when fixed, the Shopify rate when not fixed, or the Brightpearl currency rate when no Shopify rate is available.

Screen_Shot_2019-05-22_at_10.16.35_PM.png

Payments

  • When the order exchange rate is fixed, the order payment will be created in Brightpearl using the original order exchange rate
  • When the order exchange rate is not fixed, the order payment will be created using the payment exchange rate from Shopify  
  • When the order exchange rate is not fixed and there is no rate available from Shopify, the Brightpearl exchange rate as of the payment date will be used
  • Where the order payment currency equals the Brightpearl base currency no exchange rate is needed

Payment in full

Full payment will be recognized automatically by Brightpearl where the foreign currency order payment equals the foreign currency order total in Brightpearl.

Example: base currency payment in full

  • Brightpearl base currency = GBP
  • Shopify shop currency = GBP
  • Shopify order currency = GBP
  • Shopify payment transaction amount = 120
  • Shopify payment transaction currency = GBP

Order payment created in Brightpearl:

  • Brightpearl order payment = 120 GBP
  • Brightpearl order payment exchange rate = n/a

When the order payment creates an SR journal in Brightpearl it will post 120 GBP as the transaction currency and 120 GBP as the base currency calculated using the exchange rate of 1.0.

Example: foreign currency payment in full (Brightpearl order rate used)

  • Brightpearl base currency = GBP
  • Shopify shop currency = GBP
  • Shopify order currency = EUR
  • Brightpearl order exchange rate fixed = yes
  • Shopify payment transaction amount = 120
  • Shopify payment transaction currency = EUR
  • Shopify payment transaction currency_exchange_adjustment final_amount = 144
  • Shopify payment transaction currency_exchange_adjustment currency = GBP
  • Brightpearl order exchange rate as of order placed dated
  • Brightpearl order payment = 120 EUR
  • Brightpearl order exchange rate = 1.3

When the order payment creates an SR journal in Brightpearl it will post 120 EUR as the transaction currency and 156 GBP as the base currency calculated using the exchange rate of 1.3.

Example: foreign currency payment in full (Shopify exchange rate used)

  • Brightpearl base currency = GBP
  • Shopify shop currency = GBP
  • Shopify order currency = EUR
  • Brightpearl order exchange rate fixed = no
  • Shopify payment transaction amount = 120
  • Shopify payment transaction currency = EUR
  • Shopify payment transaction currency_exchange_adjustment final_amount = 132
  • Shopify payment transaction currency_exchange_adjustment currency = GBP

Order payment created in Brightpearl:

  • Brightpearl order payment = 120 EUR
  • Brightpearl order payment exchange rate = 132/120 = 1.1

When the order payment creates an SR journal in Brightpearl it will post 120 EUR as the transaction currency and 132 GBP as the base currency calculated using the exchange rate of 1.1.

In addition, since a foreign currency payment is downloaded for the full order value (120 EUR), the order is paid in full. When this happens and the foreign currency values do not match, Brightpearl will create an exchange rate variance journal entry adjusting currency gains and losses. Where the exchange rates are the same on the order and payment, no exchange rate variance is noted.

Currency and 156 GBP as the base currency calculated using the exchange rate of 1.3.

Example: foreign currency payment in full (Brightpearl rate as at payment date used)

  • Brightpearl base currency = GBP
  • Shopify shop currency = EUR
  • Shopify order currency = EUR
  • Shopify payment transaction amount = 120
  • Shopify payment transaction currency = EUR
  • Shopify payment transaction currency_exchange_adjustment final_amount = 120
  • Shopify payment transaction currency_exchange_adjustment currency = EUR

Order payment created in Brightpearl:

  • Brightpearl order payment = 120 EUR
  • Brightpearl order payment exchange rate = GET Brightpearl rate as of payment date

Part payments and multiple payments

Part payments are recognized automatically by Brightpearl where the foreign currency order payment does not equal the foreign currency order total in Brightpearl. Where multiple payments are made for a single order in Shopify, each will be created in Brightpearl. Once Brightpearl recognizes the order as fully paid it will calculate any gains/losses due to exchange rates.

Example: foreign currency part/multiple payments with the same exchange rates as order

Where original order is for 120 EUR (144 GBP).

Deposit payment:

  • Shopify payment transaction amount = 50
  • Shopify payment transaction currency = EUR
  • Shopify payment transaction currency_exchange_adjustment final_amount = 60
  • Shopify payment transaction currency_exchange_adjustment currency = GBP

Order-payment created in Brightpearl

  • Brightpearl order-payment = 50 EUR
  • Brightpearl order-payment exchange rate = 60/50 = 1.2

When order payment in Brightpearl creates the SR journal, it will post 50 EUR as the transaction currency and 60 GBP as the base currency calculated using the exchange rate of 1.2.

Since the order total is 120 EUR and the payment is 50 EUR we know the order is only part paid.

Second deposit payment:

  • Shopify payment transaction amount = 50
  • Shopify payment transaction currency = EUR
  • Shopify payment transaction currency_exchange_adjustment final_amount = 55
  • Shopify payment transaction currency_exchange_adjustment currency = GBP

Order payment created in Brightpearl:

  • Brightpearl order payment = 50 EUR
  • Brightpearl order payment exchange rate = 55/50 = 1.1

When the order payment in Brightpearl creates the SR journal it will post 50 EUR as the transaction currency and 55 GBP as the base currency calculated using the exchange rate of 1.1.

Since the order total is 120 EUR and the additional payment of 50 EUR takes the total payment up to 100 EUR we still know the order is only part paid.

Final payment:

  • Shopify payment transaction amount = 20
  • Shopify payment transaction currency = EUR
  • Shopify payment transaction currency_exchange_adjustment final_amount = 26
  • Shopify payment transaction currency_exchange_adjustment currency = GBP

Order payment created in Brightpearl:

  • Brightpearl order payment = 20 EUR
  • Brightpearl order payment exchange rate = 26/20 = 1.3

When the order payment in Brightpearl creates the SR journal it will post 20 EUR as the transaction currency and 26 GBP as the base currency calculated using the exchange rate of 1.3.

Since the order total is 120 EUR and the additional payment of 20 EUR now takes the total payment up to 120 EUR we know the order is now fully paid. Only once fully paid will Brightpearl make adjustments for exchange rate gains and losses.

Have more questions? Submit a request