Charges

All charges are translates to NetSuite in real-time. All payment types (credit card, ACH, BitCoin, etc) are supported.


There are many different contexts in which a Stripe charge can be created. Each of these contexts is handled a bit differently to ensure that the charge is properly represented in NetSuite.

A charge in NetSuite always represents the payment amount by the customer, not the amount that is deposited to your bank. Since the charge in NetSuite is often applied against a customer's invoice in NetSuite, fees and currency conversion is represented on the deposit record; a charge is always represented in the currency the customer's card was charged and does not include any Stripe fees. This ensures that the payment eliminates the accounts receivable balance created by the NetSuite invoice.

Here's an example of what a charge associated with a invoice looks like in NetSuite:

NetSuite Invoice Partially Paid with Customer Balance

Charge for a invoice

When Stripe's Subscription Billing is used, invoices will be automatically generated at the end of each period. That invoice is translated to NetSuite and a CustomerPayment is created and applied to the Invoice. If revenue recognition is enabled on your account, the start and end date of the subscription is translated to NetSuite.

If I'm using subscription billing, how could charges be created without an invoice?

Every charge initiated by Stripe's subscription billing system will be associated with an invoice. However, it's possible to create one-off charges associated with a customer. For instance, if a support representative needs to charge the customer a extra one-off fee, they might login to the Stripe dashboard and create a charge associated with that customer. That charge would not have an invoice associated with it, since it was not created by the subscription billing system.

I want to pay off an invoice which already exists in NetSuite using Stripe, is that possible?

Yes. If you've created a NetSuite invoice using a custom integration, you can instruct the integration to pay off that invoice in NetSuite by linking a Stripe charge to this invoice. Here's an example of you can implement this.

Charge for a Stripe Order (Relay)

If you are using Stripe's Order API the order integration will create NetSuite CustomerDeposits instead of CustomerPayments and apply them to the SalesOrder.

Charge for a SalesOrder as a CustomerDeposit

Stripe Charges can be attached to SalesOrders as CustomerDeposits. In order to instruct the integration to create a SalesOrder, you can specify the SalesOrder ID in the metadata of the Stripe charge or you can add the Stripe Charge ID to the SalesOrder.

A CustomerDeposit posts to a unique liability account in your NetSuite account, normally called "Customer Deposits". NetSuite does not allow this account to be changed. The CustomerDeposit also posts to the Undeposited Funds, just like a standard Customer Payment (cash is later moved to your checking account when the funds are deposited by Stripe).

When the SalesOrder is billed an Invoice (not a CashSale) is created. NetSuite automatically applies any CustomerDeposits attached to the SalesOrder to the invoice, eliminating the A/R balance on the customer.

Note that NetSuite does not allow a CustomerDeposit to be connected to a SalesOrder if it is closed, cancelled, billed, or pending approval. If the SalesOrder is in one of these states, it comes over as an unapplied SalesOrder attached to the customer. There's one exception to this rule: if the SalesOrder is in a pending approval state the customer deposit is not created until the SalesOrder is not in that state.

Charge with a standalone invoice

A charge associated with a standalone invoice (a invoice that was not auto-generated by subscription billing) is translated the same way as a subscription-generated invoice.

However, since standalone invoices are not associated with a subscription billing cycle, the start and end date on a standalone invoice is not set and revenue recognition will not be applied to the invoice.

Standalone customer charge

A charge without an invoice (standalone charge) translates to NetSuite as a Customer Payment applied against the customer associated with the charge. If specified, the description attribute of the charge is added to the Customer Payment's memo.

How standalone invoices effect accounts receivable

A standalone charge will not create a NetSuite transaction record which debits A/R. This will cause credits to A/R caused by CustomerPayment without a corresponding debit. For these standalone charges, you'll need to debit the A/R account manually by creating a journal entry or creating a NetSuite invoice for that customer.

Auto-apply standalone charges to future invoices

A Stripe-created NetSuite Customer Payment can be set to auto-apply to customers' invoices. If this feature is enabled, the Customer Payment is not applied to an invoice directly, but is instead applied to the next available invoice created for that customer.

This enables use of the NetSuite integration for creating the NetSuite Customer Payment and Customer records (as well as automated deposit reconciliation) while using a custom integration to generate the NetSuite Invoice.

ACH, European Bank Transfers, and other Asynchronous Payments

Stripe supports asynchronous payment methods (ex: ACH). These payment methods don't immediately "know" if the payment was successful or now. In the case of ACH, it can take up to a couple of days for Stripe to be notified if the payment was successful. Contact Stripe for more information on exact settlement times for these payment methods.

The "pending" Stripe payment (i.e. unconfirmed successful transaction) is brought into NetSuite immediately. If these payments were not pulled in immediately, payment application in NetSuite could be delayed multiple business days which, for most users, causes issues with other automated NetSuite workflows.

In other words, these payments are innocent until proven guilty. It's rare for payment to fail once it has been initiated, so in the majority of cases, this is the correct approach. The only "gotcha" here is if the payment fails a refund is created in Stripe, and a corresponding refund is issued in NetSuite.

If this occurs, the payment failure reason is noted on the CustomerRefund. A saved search can be added to your NetSuite account to identify these transactions so you can build automated or manual workflows around handling these payment failures.

Note that only card payments support auth-capture. All bank payment methods do not support auth-capture workflows.

Standalone charge without customer

When a Stripe charge that is not associated with a customer is translated to NetSuite it is associated with a special customer, "Stripe Unallocated Charges".

Why are charges created without a customer?

It's possible to charge cards without providing any additional information about a charge. For instance, if you create a create a new payment from your Stripe dashboard (or through the API) without creating a customer first, the charge will not be associated with a customer.