Multiple currencies with Stripe and NetSuite
Learn how the Stripe Connector for NetSuite reconciles payments in multiple currencies.
The Stripe Connector for NetSuite supports payments in multiple currencies, and can automatically reconcile payments that require currency conversion.
You have two options to use Stripe with multiple currencies:
Use a single Stripe account to accept payments in multiple currencies, and allow Stripe to convert the payments to the currency of your settlement bank.
Use multiple Stripe accounts attached to various subsidiaries of your companies. In this case, you connect a settlement account to these Stripe accounts, one for each currency you support. Stripe creates a bank deposit for each settlement currency in each Stripe account to avoid currency conversion fees.
Customers
NetSuite requires that you add supported currencies to a NetSuite customer. If a customer attempts payment with a currency that isn’t specified for that customer, it results in a failed sync.
To prevent a failed sync, the connector can do the following:
- Add all available currencies to the NetSuite customers created by the connector.
- Add all available currencies to the NetSuite customers used by the connector.
Add currencies to customers created by the connector
You can set up the connector to add all available currencies in NetSuite to customers created by the connector. Set this up if you use Stripe Billing or Invoicing, configured the connector to create customers, and your customers make payments in multiple currencies.
Add currencies to customers used by the connector
You can set up the connector to add all available currencies in NetSuite to customers that weren’t created by the connector but that the connector uses. Set this up if you haven’t added a currency to a NetSuite customer, but you need to process a payment for that customer.
For example, your business creates a customer and adds only USD as a supported currency. That customer attempts to make a payment in EUR, which results in NetSuite returning an error indicating that EUR isn’t available for that customer. The connector detects this and automatically adds all available currencies to the NetSuite customer.
Charges and refunds
The connector chooses the currency for a NetSuite payment or refund to match the currency of the Stripe payment. If the currencies aren’t the same, the deposit displays the amount of the converted currency.
For example, your customer sees a payment amount of 2,460.22 EUR. This amount is the NetSuite payment or refund. Your payout amount is 2,902.03 USD, less processing and currency conversion fees. This amount is the converted currency amount specified in the bank deposit in NetSuite.
If the currency of the Stripe payment doesn’t exist in the NetSuite account, the connector won’t sync the payment until you create the currency in NetSuite. Stripe doesn’t create currencies in NetSuite; you must make sure the appropriate currencies exist in your NetSuite account.
Transaction exchange rate
When creating a payment or refund, Stripe provides the exchange rate used on the transaction and for settlement. Instead of using the exchange rate generated by NetSuite, the connector uses the exchange rate from Stripe. This helps to eliminate the foreign exchange gain or loss that typically posts to your general ledger when transactions reconcile to a bank deposit.
Refunds and disputes create both a Credit Memo
and Customer Refund
in NetSuite. Both NetSuite records use the exchange rate from Stripe.
Invoices
If you use invoice automation, the connector creates invoices each billing period. Stripe doesn’t generate an exchange rate for these invoices, so the connector uses the exchange rate generated by NetSuite.
Exchange rate and subsidiary currencies
The exchange rate in NetSuite is relative to the currency of the subsidiary. For example, you have a NetSuite transaction in USD and the subsidiary currency is EUR. The exchange rate for the transaction is USD to EUR.
To prevent issues when there’s a mismatch between the currencies for transactions, settlements, and subsidiaries, you can set the subsidiary currency to the settlement currency of the integrated Stripe account.
Because NetSuite only supports an exchange rate that’s the subsidiary currency, it doesn’t use the Stripe exchange rate.
Payouts
When Stripe payouts sync to NetSuite, the connector creates a deposit. The connector chooses a bank account for the NetSuite deposit based on the currency of the payout.
If your NetSuite account has multiple bank accounts for a currency, you can set the default account for the currency. To do so, navigate to Settings > Account mapping > Bank deposit accounts in the connector app.
For example, Stripe deposits 75 EUR as 100 USD. In Netsuite, you see the following records:
- NetSuite
Customer Payment
with a payment amount of 75 and EUR currency - NetSuite
Deposit
associated with a EUR bank account, aCustomer Payment
amount of 100, and the EUR amount set to 75
If the currency differs from the bank account currency, you can enter the deposit amount for the payment or refund. The connector automatically enters the converted currency amount from Stripe.
Multiple settlement accounts
By default, Stripe converts all multi-currency charges to a base currency on your account. If you want settlements in additional currencies, you can add bank accounts in various supported currencies. This allows you to manage foreign exchange risk and currency conversion on your own.
Charges in previously unused currencies
You can charge customers in a previously unused currency by adding a bank account with that currency and setting up the account to post automated bank deposits. To do so, navigate to Settings > Account mapping > Bank deposit accounts in the connector app.
Currency conversion fees
Stripe bundles currency conversion fees with processing fees, by default. If needed, you can configure the connector to separate the currency conversion fees onto its own line item on the deposit. You can then post this line item to a unique account, so you can track currency conversion fees separately from processing fees.
This feature modifies the fee_details API response for your account’s Balance Transaction
. Make sure this change won’t affect any of your other integrations.