NetSuite

Introduction

This integration is currently in BETA and is only available for sites using Relationship Invoicing.

Our NetSuite integration will allow you to connect your Chargify account directly to your NetSuite account to seamlessly sync your customers and the transactional data associated with them.

How it Works

Our Chargify/NetSuite integration is a one-way integration with Chargify being the source of truth. Because of this, it’s recommended (with the exception of marking sales orders as fulfilled) that NetSuite records created by the integration not be edited or deleted from within NetSuite.

How records in Chargify relate to records in NetSuite

We currently support workflows for syncing invoices — one for invoices with inventory items and another for invoices with non-inventory items.

Inventory

When an invoice containing inventory items is opened, we’ll create a sales order in NetSuite. Once the sales order has been marked as fulfilled (shipped), we’ll create an invoice and finally a customer payment when the invoice has been paid. If Chargify collects a payment before the sales order is fulfilled, we’ll create a customer deposit.

Sync mapping for inventory

When an invoice containing no inventory items is opened, we’ll create a sales order and immediately bill it to create the associated invoice. When a payment is collected in Chargify, we’ll create a customer payment applied to the invoice in Netsuite.

Non-inventory

Sync mapping for non-inventory

Taxes

Chargify does not attempt to integrate directly with NetSuite tax fields because of potential differences in Chargify’s tax engine and NetSuite’s tax engine.

Our integration represents tax amounts collected in Chargify as an additional line item on invoices in NetSuite. In addition, Chargify will include the tax amount charged per product/component on each associated line-item via a custom field. This is important to make note of this because you won’t see tax amounts in NetSuite’s designated invoice header-level tax field or line-item level tax fields.

During the integration setup, you’ll be asked to specify which NetSuite item you’d like Chargify to use to represent tax on invoices. It’s recommended that you create a non-inventory item in NetSuite for tax amounts specific to this integration. We’ll mention this again in the Integration Prerequisites section.

Tax line items

Discounts

During integration setup, Chargify will create a discount item in NetSuite labeled “Chargify Discount” attached to your “Sales Discounts” Account. This discount item will be used to represent the total amount discounted on an invoice.

Discount line items

Payments

During integration setup, similar to discounts, Chargify will create a custom payment method in NetSuite labeled “Chargify Payment”. This payment method will be used whenever syncing Chargify payments to NetSuite customer payment records.

Payment methods

Custom Fields

We use custom fields in NetSuite to store Chargify record metadata for reference purposes. Below is a list of custom fields created and populated by the integration.

NetSuite Record Name Description
Customer Chargify Customer ID Contains the customer’s Chargify ID.
Customer Chargify Subdomain Contains the Chargify customer’s site subdomain.
Line Item Chargify Line Item Tax Contains the line item’s tax amount charged in Chargify.
Sales Order Chargify Subdomain Contains the Chargify site’s subdomain.
Sales Order Chargify Invoice Number Contains the Chargify invoice UID.

Integration Prerequisites

There are a few checklist items that you’ll need to have completed before enabling our NetSuite integration.

  1. Enable SuiteTalk Web Services

    Navigate to Setup -> Company -> Enable Features -> SuiteCloud and check the SuiteTalk (Web Services) box.

  2. Sales Discounts Account

    Navigate to Lists -> Accounting -> Accounts. From here, verify that you have a ‘Sales Discounts’ Account (this will likely exist by default). We’ll use this account for discounts.

  3. Create an Item for Tax

    Navigate to Lists -> Accounting -> Items -> New. As mentioned in the Taxes section, it’s advised to create an non-inventory item designated for representing tax amounts on sales order and invoices.

How to Enable the Integration

Navigate to the ‘Integrations’ tab in your Chargify account and click the ‘NetSuite’ tab in the sidebar menu. Click ‘Enable NetSuite Integration’.

Enable the integration in Chargify

Step 1 - Credentials

The first step of the NetSuite integration setup is to provide your NetSuite API credentials. This will allow Chargify to communicate with your NetSuite account. The goal of this section will be to obtain these five credentials:

  • NetSuite Account ID
  • Consumer Key
  • Consumer Secret
  • Token ID
  • Token Secret

As a heads-up, this process is a bit lengthy. We recommend opening a notepad to copy and paste your keys as you obtain them. After the five credentials have been gathered, you’ll enter them in Chargify.

The following steps must be performed in NetSuite by a user with an administrator or “full access” role. To begin, log in to NetSuite.

Locate NetSuite Account Number

  • Navigate to your Company Information page. From the navigation menu, select Setup -> Company -> Company Information.
Location of NetSuite Company Information link
  • Once on your company information page, you’ll see an ACCOUNT ID label, as shown below. This is your NetSuite account ID.
Location of NetSuite account ID

Create Integration Record

Next, we’ll create an integration record to identify the Chargify application in NetSuite’s system.

Navigate to Setup -> Integration -> Manage Integrations -> New.

Location of NetSuite manage integrations link

On the New Integration form:

  • Fill in the Name field with “Chargify”
  • Make sure “Enabled” is selected in the State dropdown menu
  • Check the TOKEN-BASED AUTHENTICATION checkbox
  • Click Save

After the integration record has been saved, NetSuite will display a CONSUMER KEY and CONSUMER SECRET, as shown below. Copy and paste your key and secret to a notepad as NetSuite will not display these values again.

Copy and save your consumer key and secret key from NetSuite

Enable Token Based Authentication

  • Navigate to Setup -> Company -> Enable Features -> SuiteCloud
NetSuite Enable Features menu
NetSuite SuiteCloud tab menu
  • Under the Manage Authentication section, check the TOKEN-BASED AUTHENTICATION checkbox and click Save.
Enable TOKEN-BASED AUTHENTICATION

Create a Token Role

Next, we’ll create a role. This role will hold the permissions needed by Chargify for the integration.

Navigate to Setup -> Users/Roles -> Manage Roles -> New.

NetSuite Manage Roles link

Fill in the Name field with “Chargify Token Role”.

Then, under Permissions, add the following permissions for each section:

Transactions

Permission Level
Access Payment Audit Log View
Item Fulfillment View
Credit Memo Full
Customer Deposit Full
Customer Payment Full
Customer Refund Full
Find Transaction Full
Fulfill Orders Full
Invoice Full
Invoice Approval Full
Invoice Sales Order Full
Sales Order Full
Sales Order Approval Full
Role Transactions permissions in NetSuite

Lists

Permission Level
Accounts View
Companies View
Income Registers View
Mass Updates View
Tasks View
Tax Items View
Tax Schedules View
Units View
Customers Full
Items Full
Locations Full
Role Lists permissions in NetSuite

Setup

Permission Level
Other Lists View
Set Up Company View
Access Token Management Full
Accounting Lists Full
Accounting Management Full
Company Information Full
Custom Body Fields Full
Custom Column Fields Full
Custom Entity Fields Full
Custom Transaction Fields Full
Log in using Access Tokens Full
User Access Token Full
Web Services Full
Role Setup permissions in NetSuite

Assign Chargify Token Role

  • Navigate to Lists -> Employees -> Employees.
Employees link in NetSuite
  • Then, locate your employee record and click “Edit”.

  • Under the Access section, assign the role that you created in the previous step, as shown below. Then, save your changes.

Employee Access tab
Assign Chargify token role

Create your Access Token

  • Navigate to Setup -> Users/Roles -> Access Tokens -> New.
New Access Token link in NetSuite
  • Select “Chargify” in the APPLICATION NAME menu.
  • In the USER menu, select the user that you modified in the previous step.
  • Select “Chargify Token Role” in the ROLE menu.
  • Click Save
Access token

One the Access Token has been saved, NetSuite will display a TOKEN ID and TOKEN SECRET, as shown below. Similar to the consumer key and secret, copy and paste these values to a notepad as NetSuite will only show them once.

Copy and paste these values to a notepad as NetSuite will only show them once

Enter NetSuite API Credentials in Chargify

You’ve made it to the final authorization step! Now, you’ll enter your NetSuite Account ID, Consumer token and secret, and your Token ID and secret in Chargify. When the form is submitted, Chargify will validate we can connect successfully to your NetSuite account.

Enter NetSuite API Credentials in Chargify

Step 2 - Mapping Chargify Products & NetSuite Items

On this step, you’ll specify which NetSuite item should be used for taxes. Then, you’ll map Chargify products and components with NetSuite items.

Below is a list of supported NetSuite item types:

  • Inventory
  • Non-inventory
  • Service
  • Assembly
  • Kit

If you use an item type not shown in this list, please let us know.

Mapping configuration in Chargify

Step 3 - Invoice Sync Settings

On this step, you’ll specify how you want to sync $0 invoices and failed payment attempts.

Step 4 - Customer & Historical Sync Settings

Customers in Chargify can be matched to NetSuite customers by either:

  1. Email address, or:
  2. Chargify customer reference ID and NetSuite customer external ID.

When matching customers during invoice sync, we use a find-or-create approach. For example, if the customer cannot first be found email address in NetSuite, we’ll create a NetSuite customer. For NetSuite customers created by the integration, we’ll store the customer’s Chargify ID and site subdomain on the NetSuite record via custom fields.

Syncing customers by reference ID is not supported during BETA.

This step also allows you to sync historical invoices up to a specified past date.

Syncing historical invoices is not supported during BETA.
Sync settings in Chargify

Error Handling

Anytime an error occurs while the integration is enabled, we’ll pause the integration and display the error message(s) as well as action steps (if needed on the merchant’s part). After issues have been addressed, you’ll be able to re-enable the integration, at which point, failed sync tasks will be retried.