Multiple Currencies, Subsidiaries, and Stripe Accounts
Payments in multiple currencies is fully supported. The integration will automatically reconcile payments in a foreign currency to the correct deposit with the converted destination currency amount.
If you’re running a business with multiple subsidiaries or charge customers in multiple currencies, SuiteSync takes care of currency conversion and bank reconciliation.
Here are some common ways Stripe & NetSuite are set up:
- A single Stripe account with a single settlement currency
- A single Stripe account with multiple settlement currencies
- Multiple Stripe accounts linked to multiple NetSuite Subsidiaries.
- Multiple Stripe accounts with a single subsidiary
Here's a short video walkthrough:
You might be wondering when you should use multiple Stripe accounts, here are some helpful tips. Note that you cannot use a single Stripe account across multiple NetSuite subsidiaries (this is a NetSuite limitation).
Configuring Foreign Currencies With Stripe
There are two main ways to use Stripe with foreign currencies:
- Charge in foreign currencies out of a single Stripe account and let Stripe convert the payment to the currency of your settlement bank.
- Create multiple Stripe accounts attached to various subsidiaries of your companies. Connect various settlement accounts to these Stripe accounts, one for each currency you charge in. Stripe will create a bank deposit for each settlement currencies in each Stripe account to avoid currency conversion fees.
Option #1 is much easier to setup, manage, and maintain. Option #2 provides the opportunity to manage FX risk on your end and eliminate Stripe currency conversion fees.
Take a look at Stripe's currency conversion documentation for more information.
In order for a currency to be used in NetSuite, it has to be added to the NetSuite customer. SuiteSync adds all active NetSuite currencies to the NetSuite customer when multiple currencies are used in Stripe.
Here's where the currencies are added on the NetSuite customer record:
Note that auto-adding all NetSuite currencies to the NetSuite customer is an optional feature. If you are managing the customer creation process outside of SuiteSync, you may need to add active currencies to the NetSuite customer on your end.
If you haven't added the correct currencies to the NetSuite customers, SuiteSync can do this for you. For instance, Celigo or FarApp may create a customer only with USD , and then later on that customer may make a payment in EUR. In this case, NetSuite would return an error indicating that EUR is not available on that customer. SuiteSync detects this case and automatically add all available currencies to the NetSuite customer.
Charges & Refunds
The currency on a NetSuite payment or refund is chosen to match the Stripe payment's currency. If the charge currency is not the same as the currency of the corresponding payout (aka deposit or batch payment), the amount of the converted currency is indicated on the deposit.
Here's an example foreign currency payment in Stripe:
The red box is the currency that is presented to the customer. The yellow box is the amount that you'll receive in your payout from Stripe (less processing & currency conversion fees). In other words, the amount in the red box is the amount on your NetSuite payment or refund and the amount in the yellow box is the converted currency amount specified in the bank deposit in NetSuite (details of how this looks in NetSuite is spelled out below).
If the currency of the Stripe payment does not exist in the NetSuite account, the payment is not translated until that currency is created in NetSuite. We don't create currencies in NetSuite for you; you'll need to make sure that the appropriate currencies exist in your NetSuite account.
Transaction Exchange Rate
When a payment or refund is created, Stripe sends us the exact exchange rate used on the transaction. In other words, Stripe instantly knows the exchange rate that the payment settles in. Instead of using the NetSuite-generated exchange rate, the integration specifies the exchange rate from Stripe. This eliminates the FX (foreign exchange) gain or loss that normally would post to your GL when transactions reconcile to a bank deposit.
Here’s when SuiteSync specifies the exchange rate:
- Customer payments and customer deposits
- Credit memo and customer refund - A refund or dispute generally creates both a CreditMemo and CustomerRefund. The exchange rate from Stripe is specified on both of these NetSuite records.
Here's where the exchange rate is specified:
When using Stripe subscriptions SuiteSync creates invoices each billing period (or more often if you are using Stripe's manual invoices).
Stripe does not generate an exchange rate for these invoices, so we don't set a rate in NetSuite. Instead, the NetSuite-generated rate is used for these invoices created by SuiteSync.
Exchange Rate & Subsidiary Currencies
If you have multiple subsidiaries in NetSuite there are some additional considerations in regards to currency exchange rates.
The exchange rate in NetSuite is relative to the currency of the subsidiary. For example, if you have a NetSuite transaction in USD and the subsidiary's currency is EUR, the exchange rate on the transaction is USD > EUR. However, if a USD transaction settles in GBP in Stripe, if the transaction’s subsidiary is EUR, the exchange rate in NetSuite represents a USD > EUR conversion.
If your settlement currency is different than the NetSuite subsidiary’s currency (like the example above), Stripe’s exchange rate is not brought over to NetSuite. Unfortunately, NetSuite does not support specifying an exchange rate to a currency which is not the base currency of the subsidiary, therefore we can't pull the exchange rate from Stripe into NetSuite.
A NetSuite Bank Account is associated with a currency. Unlike payments and refunds, a NetSuite Deposit does not have a direct currency setting. The currency for a NetSuite deposit is determined based on which bank account the deposit posts to.
When a Stripe payout is pushed to NetSuite a deposit is created. The bank account for a deposit is chosen based on the currency of the transfer. If your NetSuite account has multiple bank accounts for a given currency in NetSuite, you can customize which bank account is chosen for a specific currency.
For example, if Stripe deposited a charge of 75 EUR as 100 USD you'd see the following records in NetSuite:
- A NetSuite CustomerPayment with currency EUR and a payment amount of 75.
- A NetSuite Deposit associated with a EUR bank account and a Deposits > Payment item containing the CustomerPayment payment amount set to 100.
In the deposit below you'll notice that you can input the deposit amount for the payment or refund if the currency is different from the bank account's currency. SuiteSync inputs the converted currency amount specified by Stripe (as shown in the above Stripe screenshot) into that field:
Multiple Settlement Accounts
By default, Stripe converts all multi-currency charges to a "base" currency on your account. However, in many cases, you can choose to connect payout bank accounts in various currencies to avoid the currency conversion fee and manage FX risk on your own.
Which settlement currencies are supported depends on the country of the legal entity tied to your Stripe account. You can determine which settlement currencies are available on your Stripe account here.
Many customers have multiple Stripe accounts, associated with different legal entities, which settle in the currencies they operate in. This approach may be helpful for you if you'd like to settle in additional currencies.
Charges in Previously Unused Currencies
If you start charging customers in a currency that has not previously used, and you have a unique settlement account for that currency, you'll need to setup the account you'd like the automated bank deposits to post to. You can do this under "Bank Deposit Accounts" area of your account settings.
Currency Conversion Fees
By default, Stripe's currency conversion fees are bundled into the processing fees.
If needed, the currency conversion fees can be broken out into a separate line item on the deposit. This expense line item can be posted to a unique expense account so you can track currency conversion fees separately from processing fees.
Enabling this feature modifies your account's
BalanceTransaction#fee_details API response. This difference in API response may effect other integrations you have in place. Make sure that this change will not effect other integrations you have in place before enabling this feature on your account.