Skip to main content

Invoice Transaction Sync

Zuora

Invoice Transaction Sync

Overview

This integration syncs Zuora invoices and their related invoice item and taxation item information to NetSuite invoices. Zuora invoices with a negative balance are synced as NetSuite credit memos. Only invoices generated in Zuora will be synced. Invoices created directly in NetSuite will not sync to Zuora.

About the Invoice Transaction Sync

  • Only Posted invoices will be synced to NetSuite.
  • Charges will be transferred to NetSuite, but usage data will not be transferred.
  • There is no ability to un-post an invoice in Zuora.
  • NetSuite does not have the ability to create an invoice with a negative total. Consequently, negative invoices in Zuora are instead mapped to standalone credit memos in NetSuite.
  • The Accounts Receivable field on the NetSuite Invoice header (Invoice.Account) is driven off of the default value configuration under Setup > Accounting > Accounting Preferences > Items/Transactions. When NetSuite Connector syncs Invoice records, the Accounts Receivable Account field will reference the default value during Invoice creation in NetSuite. 
  • Review the Transaction Sync preferences. These preferences control the behavior and data mapping of the sync, including the invoice number.
  • Note the following limitations about the maximum number of invoice and taxation items for each invoice in one sync.
    • When multithreading is OFF: Up to 400 items, including invoice items and taxation items, can be synced from Zuora to NetSuite invoices each time. If the number of items has reached 400, you may encounter an exception in the first call. But sync should be completed with a second run.
    • When multithreading is ON: As we always process 10 threads, up to 40 items, including invoice items and taxation items, for each invoice is supported.
  • Note the following limitations about the maximum number of invoice and taxation items for each invoice in one sync.
    • Up to 4000 items, including invoice items and taxation items, can be synced from Zuora to NetSuite invoices each time. If the number of items exceeds 4000, the Transferred To Accounting of those invoices will be marked as ignored and will not be picked up for sync. The rest of the invoices will go through the existing same flow. The ignored invoice IDs are captured in the Boomi logs.
    • For above 4000 items, the invoices are picked up for the sync by manually changing the Transferred To Accounting to No.
    • For large invoice items, an incremental sync can be performed in batches of 100 invoice items each.
    • After all batches of the invoices are synced, set the Integration Status of the invoice to Sync Complete, Integration Id to NS Internal Id, and Transferred to Accounting to Yes.

You can disable the Zuora invoice sync from the NetSuite Connector Advanced Settings. However, you should do this only under the guidance of Zuora Services.

Invoice Transaction Sync Rules

This integration syncs records according to the following rules:

  1. Zuora invoice records are synced if they meet the following criteria:
    • The related customer account Sync To NetSuite is set to Yes, or is empty. 
    • The Status is Posted.
    • The Transferred to Accounting is set to No, Error, or Processing.
    • The Invoice Date is greater than or equal to the Invoice Cutover Date (if the date is specified in the NetSuite Connector Advanced Settings).
  2. The following validations are performed during the sync to ensure data integrity:
    • The associated Zuora account has been synced (the account has an IntegrationId).
    • The associated Zuora invoice item's Charge has been synced (the charge has an IntegrationId).
    • The associated Zuora invoice item's Tax Code has been synced (the tax code has an Accounting Code).
    • If the associated Zuora invoice item's Charge has a NetSuite Revenue Recognition Template Type of Variable, the associated Zuora subscription's NetSuite Project must be populated.
    • If populated, the associated Zuora account's NetSuite Location matches a valid NetSuite location.
    • If populated, the associated Zuora account's NetSuite Class matches a valid NetSuite class.
    • If populated, the associated Zuora account's NetSuite Department matches a valid NetSuite department.
  3. The Zuora invoice’s Integration Status is updated to Creating Invoice or Creating Credit Memo and Transferred to Accounting is updated to Processing to indicate the record is currently being synced and to assist with error recovery.
  4. If the Invoice amount is greater than or equal to 0, a NetSuite invoice is created. Otherwise a NetSuite credit memo is created.
  5. Upon successful creation of the NetSuite invoice, the new NetSuite internal ID is written to the Zuora invoice record, the Integration Status is updated to Sync Complete, and Transferred to Accounting is updated to Yes.

Transaction Sync Notes

  • Once synced successfully, changes to the Zuora invoice will not be synced, including cancellations.
  • Use invoice item adjustments to make changes to the invoice amounts.
  • If you need to resync an Invoice, you must delete the NetSuite invoice and set the Zuora invoice’s Transferred to Accounting to No.
  • Transferred to Accounting values of Null in the API will appear as No in the Zuora UI. 
  • When you sync Zuora invoices to Netsuite, ordering line items in an invoice is not supported when the invoice has no associated charge.

See NetSuite Classifications for more information about how classifications are mapped for NetSuite transaction header and details.

Invoice Item Charges

The NetSuite transaction includes a detail line for each charge on the Zuora invoice. The NetSuite invoice detail will reference an item master that corresponds to a Zuora product rate plan charge that has been synced previously. The NetSuite invoice item will reflect the actual charge amount from the Zuora invoice. 

During the invoice sync process, it is important to avoid zero amount invoice items. For more information see, Configure Advanced Settings.

Project-Based Revenue

If you use NetSuite for managing projects, the invoice sync can also support project-based revenue recognition for invoice charges that should be recognized based on a project delivery instead of time-of-sale or standard subscription schedules. This is common for items such as implementation services.

To set up project-based revenue:

  1. Create a project in NetSuite.
  2. Copy the NetSuite project’s internal ID to the Zuora subscription’s NetSuite Project ID.
  3. On the Zuora product rate plan charge, set the NetSuite Revenue Recognition Template Type to Variable.
  4. When the invoice is synced, any variable template type charges will be mapped with a reference to the project specified on the Zuora subscription. Template type charges of type Standard will be synced without the project reference.
  5. Manage the project and track time manually in NetSuite to recognize the revenue.

See "Delayed Revenue Recognition Logic" below for mapping details.

Delayed Revenue Recognition Logic

This logic applies only if you have revenue recognition enabled in NetSuite and you have set the NetSuite Connector sync option NetSuite Revenue Recognition to Yes.

If a Zuora invoice syncs to NetSuite before its Revenue Recognition Date is set (determined from the subscription), any invoice charges configured with revenue recognition codes will be flagged as "delayed" revenue in NetSuite (on the transaction line, Delay Rev Rec is set to true). Because of this, the charge amount displayed in NetSuite will not be recognized from an accounting perspective.

Once the Revenue Recognition Date is set in Zuora, NetSuite Connector will update the appropriate NetSuite transaction lines to recognize the revenue (NetSuite Connector sets Delay Rev Rec to false) and set the revenue recognition start and end dates accordingly.

Additionally, invoices that are tied to project delivery have special revenue recognition logic that is calculated within NetSuite as work is fulfilled for that project.

Detailed Delayed Revenue Recognition Rules

  • If the NetSuite Connector option NetSuite Revenue Recognition is set to No, the Rev Rec Start and Rev Rec End dates and Delay Rev Rec will be empty/false.
  • If the Invoice Charge has a Rev Rec Code but the Charge’s NetSuite Rev Rec Template Type is "Variable", the Rev Rec Start/End Dates and Delay Rev Rec will be blank/false.  This is because the revenue will be recognized based upon Project Status entered in NetSuite.

Revenue Recognition Start Date Logic

  • If the invoice charge does not have a Rev Rec Code, the invoice item's Service Start Date will be mapped as the Rev Rec Start Date.
  • If the invoice charge has a Rev Rec Code, and the NetSuite Rev Rec Template Type is Standard, and the invoice item's Trigger Date is populated:
    • The Delay Rev Rec flag will be false.
    • If the NetSuite Rev Rec Start Date Preference is Use NetSuite Rev Rec Template, no Zuora value will be mapped for the Rev Rec Start Date and NetSuite will calculate based upon the configuration of the Rev Rec Template within NetSuite.
    • Otherwise if the Trigger Date is before the Service Start Date:
      • The invoice item's Service Start Date will be mapped as the Rev Rec Start Date.
    • Otherwise, if the Trigger Date is on or after the Service Start Date:
      • If the invoice charge's NetSuite Rev Rec Start Date Preference is Charge Period Start, the invoice item's Service Start Date will be mapped as the Rev Rec Start Date.
      • Otherwise, if the invoice charge's NetSuite Rev Rec Start Date Preference is Rev Rec Trigger Date, the Trigger Date will be mapped as the Rev Rec Start Date.
  • If the invoice charge has a Rev Rec Code but the invoice item's Trigger Date is not populated, the Delay Rev Rec will be set to true and the invoice item Service Start Date will be mapped as the Rev Rec Start Date temporarily.

Revenue Recognition End Date Logic

  • If the NetSuite Rev Rec Start Date Preference is Use NetSuite Rev Rec Template, no Zuora value will be mapped for the Rev Rec End Date and NetSuite will calculate based upon the configuration of the Rev Rec Template within NetSuite.
  • Otherwise if the invoice charge's NetSuite Rev Rec End Date Preference is Charge Period End, the invoice item Service End Date will be mapped as the Rev Rec End Date.
  • Otherwise, if the invoice charge's NetSuite Rev Rec End Date Preference is Subscription End Date, the related Subscription End Date will be mapped as the Rev Rec End Date.

Taxes

Tax Items and Tax Details are also transferred to NetSuite. These Tax Details are treated as invoice line items. There can be multiple Tax Lines for a single Charge.

  1. During the NetSuite Connector setup process, you must create a NetSuite item manually for each Zuora Tax Code. You must configure this item to reference a NetSuite income account.
  2. Zuora will sync tax amounts as normal invoice lines in NetSuite. The line will reference the item created for the given Tax Code. The invoice and the invoice lines will be marked as non-taxable to prevent NetSuite from calculating tax again.

If you want to have NetSuite perform the taxation:

  1. Disable Taxation in Zuora.
  2. In the NetSuite Connector Advanced Settings, set Use Standard Invoice Sync to No.
  3. Load the Zuora invoice into NetSuite, and NetSuite will apply taxes based on the taxation rules for the given customer and items. 
  4. NetSuite Connector will not sync subsequent Zuora transactions related to the invoice, such as payments and adjustments, because of the difference in balance between the Zuora and NetSuite invoice records due to taxation.  

Invoice Transaction Sync Flow

overview_invoice_txn.png

To learn more about configuring and syncing tax codes and amounts between Zuora and NetSuite, including default tax code synchronization, region-based tax code configuration, integration with external tax engines like Avalara, and handling multiple tax engines, refer to Netsuite configuration for Inline Taxation.

  1.