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.
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.
We currently support workflows for syncing invoices — one for invoices with inventory items and another for invoices with non-inventory items.
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.
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.
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.
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.
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.
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.
|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.|
There are a few checklist items that you’ll need to have completed before enabling our NetSuite integration.
Enable SuiteTalk Web Services
Navigate to Setup -> Company -> Enable Features -> SuiteCloud and check the SuiteTalk (Web Services) box.
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.
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.
Navigate to the ‘Integrations’ tab in your Chargify account and click the ‘NetSuite’ tab in the sidebar menu. Click ‘Enable NetSuite Integration’.
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.
- Navigate to your Company Information page. From the navigation menu, select Setup -> Company -> Company Information.
- Once on your company information page, you’ll see an ACCOUNT ID label, as shown below. This is your NetSuite account ID.
Next, we’ll create an integration record to identify the Chargify application in NetSuite’s system.
Navigate to Setup -> Integration -> Manage Integrations -> New.
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.
- Navigate to Setup -> Company -> Enable Features -> SuiteCloud
- Under the Manage Authentication section, check the TOKEN-BASED AUTHENTICATION checkbox and click Save.
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.
Fill in the Name field with “Chargify Token Role”.
Then, under Permissions, add the following permissions for each section:
|Access Payment Audit Log||View|
|Invoice Sales Order||Full|
|Sales Order Approval||Full|
|Set Up Company||View|
|Access Token Management||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|
If your configuration supports Subsidiaries, please select one to which this token belongs.
ALLOW CROSS-SUBSIDIARY RECORD VIEWING.
- Navigate to Lists -> Employees -> Employees.
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.
- Navigate to Setup -> Users/Roles -> Access Tokens -> New.
- 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
Once 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.
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.
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:
If you use an item type not shown in this list, please let us know.
You may choose whether $0 invoices for free services or trials should sync to Netsuite; whether consolidated or segment invoices sync for grouped subscriptions should sync to Netsuite; and whether to enable custom Revenue Recognition fields.
This last setting allows you to better control what and how subscription revenue is handled by the Revenue Recognition report in Netsuite. If the “yes” option is chosen, dropdowns will appear to pick a start and end date field.
Customers in Chargify can be matched to NetSuite customers by either:
- Email address
- 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.
This step also allows you to sync historical invoices up to a specified past date.
Towards the bottom, the final two options allow for customization of NetSuite sales orders and invoices by either including a Department or a Subsidiary. Choosing “Yes” for either option will populate dropdowns from your NetSuite account to select.
- Anytime an error occurs while the integration is enabled, Chargify will display in-app notification. After issues have been addressed, you’ll be able to retry sync, at which point, failed sync tasks will be retried.
- Sync is performed for each Chargify invoice independently, but in a predefined sync flow. If any of the steps fail, processing will end for the invoice. For example, if creating invoice in NetSuite fails, payment will not be applied until the problem is resolved.
Clicking View Error Logs or navigating to Config -> Integrations -> NetSuite -> View Error Logs will take you to the list of unresolved errors.
After resolving an issue you can manually trigger sync by clicking Sync Now
Please enter value(s) for: Department
Cause: Your NetSuite configuration requires that department code needs to be sent while creating a transaction.
Solution: Navigate to Config -> Integrations -> NetSuite and enable
“Do you want to include Department in your NetSuite sales orders and invoices?”
Option in NetSuite integration and select desired Department.
Insert Transaction failed: no valid open tax period for date x/xx/xxxx. Please visit Setup->Manage Tax Periods to setup a new tax period.
Cause: The Tax Period is a required when creating a transaction.
Create Tax Periods that will correspond to the Transaction Date used on the Transaction.
Navigate in NetSuite to Setup -> Accounting -> Manage Tax Periods
No sync flow defined for invoice ID: XX
Cause: We could not select a proper sync flow for the Chargify Invoice
Solution: Please contact Chargify Support
Your search contains a reference to join for which you do not have a permission: XXX
Cause: Missing permissions
Solution: Please check permissions assigned to the token role
Invalid subsidiary reference key XXX
Cause: Subsidiary is inactive or token cannot access the Subsidiary
Navigate to Setup -> Users/Roles -> Manage Roles
Chargify Token Role. Make sure the role has access to the desired subsidiary and
ALLOW CROSS-SUBSIDIARY RECORD VIEWING is checked.
Invalid entity reference key XXX
Cause: Customer created by integration has been marked as inactive or can’t be accessed from current Subsidiary
1) Set customer as active.
Navigate to Lists -> Relationships -> Customers -> Search
Use Advanced Search
Standard tab, search for
Internal ID (Number). A modal will appear once you select filter field.
Please enter reference key from the error message.
Submit the form. When NetSuite displays the customer, navigate to
System Information tab and uncheck
Save the customer and try re-syncing.
2) Enable multi-subsidiary customers
If you have a multi-subsidiary NetSuite configuration, you may encounter an issue where the customer was already created but in different subsidiary. In this case, you’ll need to enable ‘multi-subsidiary customers’ feature in NetSuite configuration.
Navigate to Setup -> Company -> Enable Features
Scroll down to
ERP General section and check
MULTI SUBSIDIARY CUSTOMER checkbox.
Save and try re-syncing.