CSV Import Workflows

Using CSV imports to record sales in NetSuite is sometimes the easiest way to get financial data into NetSuite.


You can use CSV imports to record sales and income data in NetSuite and leverage SuiteSync to handle payment application and reconciliation. If you are just implementing NetSuite for the first time, or if you are launching a new product that doesn't have a robust integration with Stripe or NetSuite, this is an excellent way to get your financial data into NetSuite with little to no engineering time.

Sales Order

Using a SalesOrder-based CSV import workflow is helpful for eCommerce sites that are integrating with NetSuite for the first time.

Here's how it works:

  1. SalesOrder CSV import is run. The Stripe Charge ID is added to the "Stripe Transaction ID" field on the SalesOrder.

  2. After the import, SuiteSync processes all SalesOrders and creates a CustomerDeposit for each Stripe Charge.

  3. When the SalesOrder is billed the CustomerDeposits are automatically applied to the Invoice. This is done automatically by NetSuite.

  4. CashSales are automatically reconciled to a bank deposit, fees are calculated, etc. This process is automatically handled by SuiteSync.

  5. Refunds or disputes in Stripe are automatically represented in NetSuite. Alternatively, you can issue a refund from NetSuite.

Example eCommerce Fulfillment Workflow

  1. Create SalesOrder via CSV import.
  2. SuiteSync creates CustomerDeposits connected to the SalesOrders automatically.
  3. Create ItemFulfillment (aka shipment) in the "picking" state from the SalesOrder. If you integrate with a 3PL provider, you push shipments at this time to your 3PL.
  4. Later on, when you receive confirmation from your 3PL that the shipment has gone out, the ItemFulfillment can be updated to the "shipped" state with tracking number, shipping cost, etc.
  5. When the ItemFulfillment is marked as shipped, generate Invoice from SalesOrder.
  6. NetSuite applies CustomerDeposits automatically against the Invoice that you created
  7. SuiteSync reconciles CustomerDeposits to a bank deposit, fees are calculated, etc.

At the end of this flow, you will have:

  1. Customer. Created by CSV order import.
  2. SalesOrder. Created by CSV order import.
  3. One or more CustomerDeposits associated with the SalesOrder. Created by SuiteSync.
  4. ItemFulfillment (package/shipment). Created by your app.
  5. Invoice. Created by NetSuite (there's a couple options available to do this automatically).
  6. Invoice paid by CustomerDeposits. NetSuite does this automatically.
  7. The CustomerDeposits are reconciled against a bank deposit record. Processing, currency conversion, dispute, etc fees are recorded here. SuiteSync handles this.
  8. SuiteSync automatically represents disputes and refunds.

Technical Notes

  • Auth-capture is supported in the CSV import workflow. If the Stripe Charge on the SalesOrder is authorized, but not captured, when a Invoice is created (i.e. the SalesOrder is billed) the charge is captured.
  • If there are multiple charges created for a single order include all of the charge IDs as a CSV list in the "Stripe Transaction ID" field. For example: ch_123,ch_345

Invoice CSV Import

  1. Invoice CSV import is run. The Stripe Charge ID is added to the "Stripe Transaction ID" field on the Invoice (this is a custom field added to your account).

  2. After the import, SuiteSync processes all NetSuite invoices and creates a CustomerPayment for each Stripe charge and applies it against the invoice.

  3. CustomerPayments are automatically reconciled to a bank deposit, fees are calculated, etc. This process is automatically handled by SuiteSync.

  4. Refunds or disputes issued in Stripe are automatically represented in NetSuite by a CreditMemo and CustomerRefund. Alternatively, you can issue a refund from NetSuite.

Technical Notes:

  • If there are multiple charges created for a single invoice, include all of the charge IDs as a CSV list in the "Stripe Transaction ID" field. For example: ch_123,ch_345

CashSale CSV Import

  1. CashSale CSV import is run. The Stripe Charge ID is added to the "Stripe Transaction ID" field on the CashSale.

  2. After the import, SuiteSync processes the CashSales. The Stripe Charge specified on the "Stripe Transaction ID" field is linked to the CashSale. In this flow, SuiteSync doesn't create any payment records. The CashSale is tied to the Stripe Charge.

  3. CashSales are automatically linked to a bank deposit, fees are calculated, etc. This process is automatically handled by SuiteSync.

  4. Refunds or disputes issued in Stripe are automatically represented in NetSuite as a CashRefund. It's also possible to issue a refund from NetSuite.

Technical Notes

  • CashSales must post to your undeposited funds account
  • A CashSale must represent a single Stripe Charge. Multiple Stripe charges per CashSale is not supported.
  • The amount and currency of the CashSale matches the Stripe Charge.