Examples

Here are some examples to help you integrate your application with Stripe to use the NetSuite integration.


Stripe

The code examples below are designed to provide boilerplate code to demonstrate how the Stripe NetSuite integration works, and how to handle unique business processes using SuiteSync. All of the examples can be run by entering your Stripe API key and running the ruby code. Here's how:

  1. Install the stripe ruby gem. The example code can easily be ported to other languages.
  2. Replace the test key in the source files with your Stripe account's test key. For some scripts, you may need to enter your NetSuite credentials.
  3. Run ruby the_example.rb at the terminal

Creating a NetSuite Customer with Stripe

This example demonstrates this customer translation functionality:

  • Linking an existing NetSuite customer with an existing customer
  • Linking an existing NetSuite customer with a new customer
  • Using metadata to set NetSuite field data

View Example Code

Creating & Paying a NetSuite Invoice with Stripe Checkout

You can create a NetSuite invoice using Stripe, and pay it off using Stripe Checkout, without interfacing with NetSuite directly.

View Example Code

Creating a Stripe Subscription

A simple example demonstrating how to create a Stripe Subscription and pass custom data to NetSuite.

View Example Code

Creating a Subscription with Avalara Tax Information

An example demonstrating how to create a Stripe Subscription which includes the necessary information for Avalara's pre-built tax integration.

View Example Code

Create a Subscription from Customer-entered Credit Card Information

Example of a customer-facing checkout form built with Stripe checkout which creates a Stripe Subscription.

View Example Code

Using Stripe Subscriptions to Manage Complex Usage Based Billing

You can use Stripe Subscriptions to manage usage based billing. Here's an example demonstrating how to leverage Stripe webhooks to calculate usage based billing amounts in your application and push them to Stripe.

View Example Code

Using Stripe Subscriptions to Manage Simple Usage Billing

View Example Code

Paying an Existing NetSuite Invoice with Stripe

You can pay an existing NetSuite invoice with Stripe by passing the NetSuite Invoice ID to Stripe. The integration applies a CustomerPayment against the invoice you specify.

View Example Code

Creating a NetSuite using SuiteTalk and paying it with Stripe

Here's an example of how to create a NetSuite invoice using the SuiteTalk API and then paying that invoice off using a Stripe charge.

View Example Code

Payment Installments Against a Single NetSuite Invoice

You can use Stripe Subscriptions to create payment installments against a single NetSuite invoice.

View Example Code

Attaching a Stripe Charge as a CustomerDeposit against a SalesOrder

You can attach a Stripe charge against a SalesOrder as a customer deposit by specifying the internal ID of the SalesOrder.

View Example Code

Creating a Standalone Invoice with Stripe

The integration supports translating subscription-created invoices with revenue recognition, but it also supports translating one-off invoices creating in Stripe. This example demonstrates how to create a customer and a standalone invoice with a custom SKU.

If Stripe's subscription billing isn't workable for your use-case, but you want to use the Stripe NetSuite integration to create invoices in NetSuite, creating a standalone invoice might work for you.

View Example Code

Collecting Payment for a Standalone Payment with Stripe Checkout

This example demonstrates how to use Stripe Checkout to collect payment credentials, and then create a Stripe Invoice and Charge the collected credit card.

View Example Code

Collecting Payment for a Subscription with Stripe Checkout

This example demonstrates how to use Stripe Checkout to collect payment credentials, and then create a Stripe Subscription with the collected credit card.

View Example Code

Testing Stripe disputes

The integration fully supports handling credit card disputes. Here's an example which creates a dispute in your test account to demonstrate how the integration handles disputes.

View Example Code

Authorizing a Charge with Stripe Checkout for Capture from NetSuite

Often in eCommerce flows you'll want to authorize a charge during checkout but only later capture the charge once the order has been fulfilled in NetSuite. Here's an example of how to implement this using Stripe and the authorization-capture workflow:

View Example Code

ACH Debit

ACH debit (and other alternative payment methods) is fully supported in the integration. This example will create a bitcoin payments in your Stripe test environment to allow you to inspect the resulting customer payment in NetSuite.

View Example Code

Creating Sales Orders with Stripe Orders API (Relay)

This example demonstrates how the integration's order integration works:

  • Creates a SKU, which is translated into a NonInventoryItem in NetSuite
  • Creates a Order with a single line item
  • Waits for the translation to complete, and returns the NetSuite SalesOrder internal ID.

View Example Code

Copy Stripe Subscription Metadata to Subscription Invoice Metadata

Stripe Subscriptions create a Stripe Invoice every plan period. In some cases, copying metadata from the subscription to the invoice is helpful for setting standard or custom fields on the invoice. For instance, if there's an internal subscription order number that you want on every subsequent invoice, you can copy this number from the subscription metadata to the invoice metadata so the number can flow to the NetSuite invoice.

View Example Code

Connect Stripe Plans to Existing NetSuite Items

If you are using Stripe Subscriptions you can connect your Stripe Plans to existing items in NetSuite using the following migration tool.

View Example Code

Link Stripe Customers to NetSuite Customers by Email

If you've been using NetSuite for a while, but are just getting started with Stripe, you'll want to link your Stripe customers to the associated NetSuite customer. Here's an example of linking Stripe customers with NetSuite customers by using email as the linking key between the two systems.

View Example Code

Link Stripe Customers to NetSuite Customers Using a CSV

If you have existing NetSuite customers that you'd like to Stripe customers you can create a mapping between the two systems and use this script to link Stripe & NetSuite customers together.

View Example Code

Link Stripe Customers to NetSuite Customers Using Card Details

When migrating card data from another processor to Stripe the data provided by the old processor can sometimes be spotty. Use this script to match Stripe customers to a CSV row using card details (last4, zip, expiration, etc) and save additional customer data to Stripe from that CSV file.

View Example Code

Pay Due NetSuite Invoices Using Stripe

You can leverage SuiteSync to auto-pay invoices in NetSuite using Stripe. SuiteSync has built-in functionality to handle this, but you can also customize the example code below to fit your exact use-case.

View Example Code

Customer NetSuite Invoices created from Stripe Subscriptions

Each billing period a Stripe subscription creates an invoice in NetSuite. You can customize the data on that invoice by adding metadata to the Stripe subscription to be copied to each subsequent invoice.

View Example Code

Find Closed and Unpaid, or Forgiven Invoices

If you choose not to automatically close out unpaid or forgiven Stripe invoices in NetSuite, you will want to create a custom process around handled this "bad debt". Here's a starting point you can use to pull identify these invoices in Stripe.

View Example Code

Remove Metadata Keys

The integration adds metadata keys to Stripe records.. If you are developing customized integrations leveraging SuiteSync, it may be helpful to wipe all of the metadata keys that SuiteSync uses in order to re-run integration tests. Below is a script that wipes metadata keys from your Stripe account.

View Example Code

Demonstrate Stripe Subscriptions Edge Case

There are many edge cases that can occur when processing subscription payments. Below is a script that generates various subscription states so you inspect how they look in your NetSuite account.

View Example Code

Use Stripe Subscriptions to Create a Payment Plan for a NetSuite Invoice

View Example Code

Create an Invoice with Payment Terms in Stripe

View Example Code

Change Plans & Issue a Refund with Stripe

View Example Code

Create a Payment Link Dynamically using SuiteScript

View Example Code

SuiteScript

SuiteSync provides a set of pre-built open source SuiteScripts to help with common use cases that we've come across. These scripts are well documented, and you can easily install them in your NetSuite account. However, we can't guarantee that they will work with the customizations that exist in your NetSuite account and we can't help maintain or modify them to fit specific business requirements.

Create SalesOrder from Invoice

By default in NetSuite a SalesOrder must be created first and then the SalesOrder can be billed, which creates an invoice. This script adds a beforeSubmit user event script which dynamically creates the SalesOrder right before the invoice is saved from the contents of the invoice. In other words, you can send over just an invoice to NetSuite and this script generates a SalesOrder for you.

You'll need to customize this script to fit your needs and be sure to test this before every major NetSuite release: this is not something officially supported or maintained by SuiteSync.

View Example Code

Auto-bill NetSuite SalesOrders When a CustomerDeposit is Added

This script automatically bills a sales order, creating an invoice, when there are enough customer deposits attached to the sales order to mark the resulting invoice as "Paid in Full"

View Example Code

Here are some important details about how the script works:

  • It is aware of NetSuite usage governance and will automatically retry if the script runs out of "usage credits"
  • The script only processes Sales Orders which are Pending Billing. This means that the script does not process the same sales order twice—once it is billed, it is not reprocessed.
  • Your NetSuite Sales Order form must create a invoice, not a cash sale, when billed.

SuiteScript to Copy Transaction Fields to a Payment or Refund Record in NetSuite

This is a SuiteScript which copies fields from a Invoice, CreditMemo, or other transaction to a corresponding payment record applied to that transaction. This is helpful if you want to use the same department or class on a payment or refund that was assigned to a invoice, credit memo, etc.

View Example Code

Auto-apply Customer Payments When a NetSuite Invoice is Created or Edited

This is a SuiteScript which auto-applies partially or fully unapplied NetSuite customer payments to open invoices in NetSuite associated with that customer. This script is built to run this operation when an invoice is created or edited, and is still unpaid.

View Example Code