Stripe Connect Integration with NetSuite
Our integration with Stripe Connect automatically records transfers to your vendors in NetSuite, automating all accounting entries for your marketplace business.
There are many ways to use Stripe Connect. Below many common use-cases are detailed out.
If you are using destination charges, you create a charge on your platform account and specify the amount you would like to send to a vendor. On your automatic payouts, Stripe indicates the fees charged to the vendor (application fees) and the amount paid to your vendor. The net of these two values (vendor payout less application fees) is the amount paid to your bank.
This amount is recorded on the deposit as an "Other Deposit" line item. You can configure which account this revenue posts to. Here's an example:
The gross charge/invoice amount is recorded in NetSuite as an invoice and payment record. The amount charged by the vendor is not recorded on the invoice level, since this is a record of what the customer has paid, not of costs incurred to deliver the service.
Some details to be aware of:
- Application fees on subscriptions and invoices are handled in an identical way. In the end, a subscription & invoice end up generating a charge.
- If you have a Stripe account which is connected to a platform account charging you fees, those fees are recorded on the deposit as a unique line item and can be allocated to a specific fee account.
Right now, we don't support recording direct charges in NetSuite. Reach out to us to discuss your use-case as we might have a beta version available.
Separate Charges & Transfers
Transfers to accounts are represented as journal entries in NetSuite. The journal entry will hit your bank account set for deposits, and another account that you specify during the setup process.
The Transfer ID (starts with tr_) is added to the external ID, memo field, and memo of each line of the journal entry. If you'd like additional information added to the journal entry, you can map any standard fields or metadata fields on the Stripe transfer to a custom field added to the NetSuite journal entry. For instance, if you wanted an internal payment identifier generated by your application to be added to the
Here's an example of what a journal entry looks like:
Transfer reversals, essentially a refund of a payment to a vendor, work exactly the same as a transfer: SuiteSync creates a journal entry, but the debits and credit entries are reversed.
A Note on Automatic and Manual Payouts
You must have automatic transfers enabled for automatic bank reconciliation to work. If you separate charges and transfers, you may need to use top-ups in order to keep automatic bank reconciliation enabled.
If you don't enable automatic payouts, automatic bank reconciliation will not function. When manual payouts are enabled, Stripe does not maintain an association between individual transactions and a payout. Additionally, Stripe does not summarize fees assessed each day in the same way. For this reason, SuiteSync cannot automate cash reconciliation and fee calculation.
If you need additional funds in your account to pay vendors, you can pull in funds from your bank using the top-up feature.
Technical Details & Notes
Below are some helpful notes and details about how the Stripe connect integration works:
- Both Standard and Express accounts are supported by SuiteSync.
- You must have automatic transfers enabled for automatic bank reconciliation to work.
- If you separate charges and transfers, you may need to use top-ups in order to keep automatic bank reconciliation enabled.
- Nothing special is done with the
transfer_groupidentifier. If you like, you can map this value to a custom transaction field in NetSuite.
- Payout schedules do not affect SuiteSync. Transfers to an account are either represented as a journal entry or lines on a bank deposit in NetSuite.
- All transactions are created in NetSuite in real-time as they occur in NetSuite. We listen to the
transfer.*webhooks and create the corresponding records in NetSuite.
- Transfers to connected accounts (i.e. individual vendor payments) are recorded to NetSuite. Payouts, the aggregate of individual payments, from connected/managed accounts are not. Once a transfer has occurred from your platform account to the managed account, the funds are not in your possession. This accounting impact is recorded as a journal entry in NetSuite. The payout from the vendor's Stripe account to their bank has no impact on your accounting, so it is not recorded.
Vendors, 1099s, and Payment Initiation
SuiteSync's integration with Stripe's connect does not pull in individual vendor records for individual connected Stripe accounts (i.e. vendors). A Stripe platform marketplace (which normally involves high volumes of vendors) does not map well to NetSuite's vendor functionality, which is designed for paying a relatively low number of traditional contractors.
Consequentially, vendor bills and payments are not recorded. Journal entries are used to record vendor payments instead.
The result is the accounting entries relating to your marketplace is accurate and automated, but you aren't able to generate 1099s for vendors out of NetSuite. Instead, you'll want to use a system designed to generating 1099s for vendors paid by Stripe such as Payable. Payable, and others like it, are tightly integrated into Stripe and provide a scalable and simple way to generate and send 1099s to vendors you pay through Stripe.
On a similar note, SuiteSync cannot initiate transfers/payments to vendors. All transfers to vendors must be handled by your app's integration into Stripe.