Stripe & NetSuite Best Practices
Here is a set of best practices to ensure all aspects of the integration work smoothly.
Most of the guidelines below are not absolutes, but make sure you contact support before "breaking" the rules below.
NetSuite User Best Practices
- Never delete transactions in NetSuite created by the integration. This includes invoices, credit memos, payments, refunds, disputes, deposits, etc.
- Never void transactions (payments, refunds, etc) in NetSuite created by the integration.
- Never adjust the amount of payments or refunds created by the integration. This will trigger errors during the automatic reconciliation process.
- Do not deactivate customers if you expect any additional transactions to be added to that customer. For example, if they have an open invoice that you expect to be paid.
- Deleting or merging customers can be done, but you’ll need to re-link the customer records in Stripe. Contact support before deleting or merging customers to understand the integration impact.
- Invoices created by the integration can be edited as long as the total does not charge. This is not a hard rule, contact support if this is a requirement for your use-case.
- Do not deposit any transactions (payments, refunds, and disputes) created by the integration, this will cause issues with the automatic reconciliation process. Transactions are deposited/reconciled automatically.
- Do not issue refunds in both Stripe and NetSuite. Pick one system to issue refunds through.
Stripe User Best Practices
- Do not delete customers in Stripe without contacting support. This operation is supported, but it’s important you understand how this will effect the integration.
- If you are using the eCommerce or auth-capture flow, don't issue refunds directly in Stripe. Instead use NetSuite to issue refunds.
- If you are using auth-capture do not capture charges directly in the Stripe Dashboard. Let SuiteSync manage capturing and releasing charges.
- Do not use the customer balance. This feature is supported, but posts to a unique item in NetSuite which may confusing for the finance team. Contact support if this is a heavily used feature in your account.
NetSuite Administrator Best Practices
- If you are going to enable multi-currency transactions for the first time, contact support.
- If you are moving to NetSuite OneWorld (multiple subsidiaries), contact support.
- If you are using new types of transactions for the first time, contact support. For instance, if you are using SalesOrders or CashSales for the first time.
- Do not lock any transactions that need to be processed by the integration.
- Do not disable "Allow non G/L changes" in closed accounting periods.
- Do not update bundles installed by the integration.
Stripe Administrator Best Practices
- If you are opening up a new account that you'd like to use with the integration, contact support.
- If you are using a new payment method for the first time (e.g. bank transfers), contact support.
- Do not connect additional services to your Stripe account without contacting support. For instance, if you start doing events, do not connect your Stripe account to your event system. Instead, create a new Stripe account dedicated to processing event charges.
- Do not disable automatic transfers.
- If you add an additional settlement account, contact support.
When to use Multiple Stripe Accounts
The integration supports connecting multiple Stripe accounts to the same NetSuite instance. Whether or not multiple Stripe accounts should be used depends on a number of factors. We are happy to talk through this decision during the onboarding process with you.
Here are general guidelines for when separate Stripe accounts should be used:
- Each Stripe account should be tied to a different NetSuite subsidiary. If you are using multiple subsidiaries in NetSuite, each subsidiary must have it's own Stripe account (note that there are ways around this, but it is error-prone and not recommended).
- The customer support or finance teams will not be given access to both Stripe accounts. If you'd like to segregate who has access to certain Stripe data, you'll need to separate the data out into separate Stripe accounts.
- The integration configuration for each account is very different. For example, each account might be tied to a different department or use a different workflow (eCommerce vs subscription).
- Revenue needs to be deposited in a different bank account depending on the site/app that it was purchased under.
Here's when multiple Stripe accounts should not be used:
- The integration configuration is largely the same across both accounts. For example, they are both eCommerce accounts, both posting to the same department/class/subsidiary, etc.
- The same customer service and finance teams will have access to both accounts. Having two Stripe accounts creates additional work and possible confusion for these teams.
- Each day two deposits will be pushed to your bank account. This does not add additional reconciliation work (this is automated).
- Note that Stripe considers separate Stripe accounts as a single account for volume pricing.
- You'd like to have separate API keys for multiple sites or components of an application. This can be done by creating a Stripe Connect account and authorizing it against your primary Stripe account, essentially creating sub-accounts of a primary "master" Stripe account.
- Saved payment method information should be shared between the various sites/applications using Stripe. Note that using a single Stripe account does force you to share saved payment information, but gives you that option.
SuiteSync will need to be configured to use multiple Stripe accounts as well. Here are some considerations to keep in mind:
- SuiteSync supports using one account per NetSuite subsidiary out of the box. However, if your business logic breaks that one-to-one mapping (or if you don't use NetSuite subsidiaries/OneWorld) then there will be customization on your end required. You'll need to implement business logic to "switch" which Stripe account is used in various systems.
- In addition to your eCommerce application, here are the key systems that need to "know" which Stripe account to use:
- If you are using a unique Stripe account per subsidiary, we support configuring these features for multi-subsidiary use. Search this document for "subsidiary" for examples of how this is done if you are going to be using a custom configuration.
Outside of the SuiteSync, here are some general technical considerations to keep in mind:
- Fraud configuration across each account will be need to be separately maintained and monitored
- Any other Stripe applications will need to be setup, paid for, and maintained separately.
- Any dispute/chargeback automation, or integration with other systems will be more complex. You'll need to listen for webhooks from multiple accounts and essentially build multi-tenant support into those systems.
- Your eCommerce application will need to toggle between Stripe accounts, which it'll need to know which customer, payment, etc a given Stripe record is contained in and use the correct API key.