Recurly for NetSuite Integration at a Glance

Recurly for NetSuite

To optimize your subscription business and get the most out of your customer data and other metrics, you need strong financial reporting that adheres to compliance guidelines. Financial reporting for subscription based-businesses presents unique requirements as these metrics have an emphasis on customer-centric data such as customer renewal rates, churn and lifetime value.

Recurly merchants can seamlessly integrate their billing and subscription data from Recurly with their accounting and financial data through our new integration with NetSuite, a leading cloud-based business software for accounting and ERP. Through this integration, Recurly merchants can effectively and accurately manage recurring revenue data using NetSuite’s best-in-class, automatic, GAAP-compliant revenue recognition and standard financial reporting.

The NetSuite integration is available to merchants who are on the Recurly Enterprise pricing plan.

In order to take advantage of the integration, merchants need the following functionality enabled within NetSuite:

  • NetSuite ERP
  • Revenue Recognition Module
  • Sandbox Account (for testing and verification of data)

Sync Details:
The Recurly/NetSuite integration is a one-way integration which syncs the following records between Recurly and NetSuite:

  • Plans, Add-Ons, and Setup Fees
  • Customer Accounts
  • Invoices
  • Transactions
  • Credits

The process runs every two hours by default, and will sync any records that have not yet been synced between the two systems.

The following diagram details how records are integrated between the two systems:

Plans, Add-Ons, and Setup Fees

Once plans, add-ons, and setup fee records are integrated with NetSuite, they will be Non Inventory Items for Sale in the NetSuite product catalog. From there, merchants can assign Deferred and Recognized Revenue accounts against each product so that when invoices are integrated, revenue will be recognized appropriately.

Customer Accounts

Customer accounts within Recurly are integrated with the Customer and Contact record types within NetSuite. Merchants can utilize NetSuite reporting to aggregate their financial records by customer once this information has been integrated.


Invoices in Recurly are integrated with Invoices in NetSuite. The header information will be defined based on the NetSuite configuration of each merchant. The line level information will define revenue recognition rules: the periods that are defined on invoices within Recurly will populate NetSuite revenue recognition schedules that will drive revenue recognition. Merchants have the option to manually edit.


Transactions within Recurly are integrated with Payments and Refunds within NetSuite. When a payment is integrated to NetSuite, it will close the accounts receivable on the invoice to which it is associated.


Credits in Recurly are integrated with Credit Memos within NetSuite. As with invoices, this will utilize the built-in revenue recognition functionality within NetSuite to properly recognize revenue and handle accounts receivable.

Custom Fields

Because every NetSuite implementation is different, Recurly is able to integrate with custom fields that a merchant has in a NetSuite. This customization can be defined during a conversation with the Recurly team.

Setting Up Zuora Connector for NetSuite and NetSuite ARM Module

The intent of this article is to outline the steps associated with setting up Zuora Connector for NetSuite Bundle in NetSuite and the NetSuite Advanced Revenue Management Module.

The assumption is made that you've decided on using NetSuite for Revenue Recognition as opposed to Zuora's RevPro offering. This is generally a finance team choice as to what system to use; do you prefer to see the deferred revenue and downstream reporting in NetSuite or Zuora? If NetSuite, the high-level configuration steps are below.

Steps Outlined:

1. Install the Zuora Z-Suite bundle in NetSuite. Bundle Id (12071)

2. Setup the Z-Suite Bundle according to Zuora's Knowledge Center Steps listed here.

3. Update the NetSuite Revenue Recognition Field Mapping

4. Finish configuring NetSuite Advanced Revenue Management Module

It is as simple as associating the revenue field mappings with the fields that are populated when invoices syncronize from Zuora to NetSuite.

  • Zuora Services Start Date => Start Date
  • Zuora Services End Date => End Date

Using Postman and CSV data files to mass update Zuora data

Postman is the complete toolchain for API developers, used by more than 3 million developers and 30,000 companies worldwide. Postman makes working with APIs faster and easier by supporting developers at every stage of their workflow, and is available for Mac OS X, Windows, Linux and Chrome users. Best of all, it is free to use.

Postman’s Collection Runner is a powerful tool. As its name implies, the Collection Runner (CR) lets you run all requests inside a Postman collection one or more times. It also executes tests and generates reports so you can see how your API tests compare to previous runs.

There is a comprehensive blog post on how to create and use Postman and csv files here:

We'll bridge the gap between that blog post and how it applies to Zuora in the remainder of this blog post.

If you can use Zuora Connect, you can use Postman to do many of the same functions. Here are the high level steps that need to be completed:

  1. Create a Collection
  2. Create a Request
  3. Launch the Runner
  4. Create your CSV file with the headings the same name as the Zuora Request Body field names. Select the file from the Runner interface.
  5. Start the Runner
  6. Your request should complete successfully

Creating a Collection

Please view the following Postman Article:

Creating the Request

To create the request, here is the Postman Article:

1. Choose the Request Type, in this case PUT as we are updating Account fields

2. Enter your Server URL. In this example, we will mass update the Notes field on the Account so our Server URL is:{{Id}}

Zuora is particular and requires a path parameter. The path parameter can either be Account number or Account ID. In my example, I have chosen the Id.

The following are Notes from the Zuora Developer Docs:

  • Only the fields to be changed should be specified in the Request Body. Any field that's not included in the request body will not be changed.
  • If an empty field is submitted with this call, the corresponding field in the account is emptied.
  • Email addresses: If no email addresses are specified, no change is made to the email addresses on file or to the email delivery preference. If either the personalEmail or workEmail is specified (or both), the system updates the corresponding email address(es) on file and the email delivery preference is set to true. (In that case, emails go to the workEmail address, if it exists, or else the personalEmail.) On the other hand, if as a result of this call both of the email addresses for the account are empty, the email delivery preference is set to false.
  • The bill-to and sold-to contacts are separate data entities; updating either one does not update the other.

3. Choose the Authorization Type as Basic Auth, enter your username and password

4.  Enter the headers. I've chosen Key= Content-type | Value = application/json

5. Create the JSON Request Body

  • {
      "notes": "{{notes}}"

6. Create the Pre-Request Scripts

  • console.log("Body contains Id" + data.Id);
    console.log("Body contains notes" + data.notes);

7. Create your Tests

  • tests["Body matches string"] = responseBody.has("true");

Launch the Runner

Once you click the Runner button at the top of the Postman UI, a new screen will launch called the Collection Runner'.

Fill out the details and upload your CSV file before clicking the Run button. Here is an article that explains all of the fields and variables:

Once you click the blue 'Run' button at the bottom of the Runner screen, you should see the request results complete succeessfully:

A few last minute tips:

1. We were unable to get this to successfully complete with the web UI. We had to download the desktop app.

2. If you are having debugging issue, try viewing the console. It has helpful debugging details. You can access the console from the menu: view > Show Postman Console