> ## Documentation Index
> Fetch the complete documentation index at: https://docs.sequencehq.com/llms.txt
> Use this file to discover all available pages before exploring further.

# NetSuite

> Sync Sequence customers, products, invoices, and credit notes to NetSuite in real time.

![NetSuite](https://mintcdn.com/sequence/AaBHfWeLf5Am1S8n/images/integrations/covers/netsuite.png?fit=max\&auto=format\&n=AaBHfWeLf5Am1S8n\&q=85\&s=c9c3306b605040b3ab2fabb25e7f3f0b)

NetSuite stays your ledger of record while Sequence handles the billing. Customers, products, invoices, and credit notes sync across automatically, and billing schedules sync too, as NetSuite sales orders, so revenue arrangements can build directly off Sequence's data.

## Overview

**Use the NetSuite connector to:**

* Push Sequence customers into NetSuite as Customer records
* Push Sequence products into NetSuite as Service Items, ready to appear on invoice line items
* Push Sequence invoices into NetSuite as Invoices, either standalone or drawn down from a NetSuite Sales Order
* Push Sequence credit notes into NetSuite as standalone Credit Memos
* Surface payments recorded in NetSuite against the corresponding Sequence invoice in real time
* Link Sequence customers and products to existing NetSuite records from the dashboard

Whether your team books revenue from Sequence's own journal entries or from NetSuite's Advanced Revenue Management running on the synced sales orders, the connector supports it, and any recognition method, straight-line, point-in-time, usage-based, or deferred, works either way. Sequence connects to NetSuite through a secure, certificate-based connection you set up once in Settings.

## What syncs today

| Entity | Direction | What happens |
| - | - | - |
| Customers | Sequence → NetSuite | Pushed as NetSuite Customer records |
| Products | Sequence → NetSuite | Pushed as NetSuite Service Items |
| Billing schedules | Sequence → NetSuite | Phases with a fixed, determinable obligation sync as Sales Orders |
| Invoices | Sequence → NetSuite | Standalone, or drawn down from a Sales Order |
| Credit notes | Sequence → NetSuite | Pushed as standalone Credit Memos |
| Invoice payments | NetSuite → Sequence | Payments recorded against a linked invoice appear on the Sequence invoice in real time |

Customer, product, invoice, credit note, and billing schedule sync is one-directional. Sequence is the system of record; NetSuite receives a copy so accounting transactions can reference it. If a finance user edits a linked record directly in NetSuite, that change can be overwritten the next time Sequence pushes an update.

## Getting connected

Find NetSuite under **Connectors** in the dashboard to get started. Set up the connector by first creating an Integration record in NetSuite, then entering the resulting details into Sequence.

![Selecting NetSuite from the Connectors list in Sequence](https://mintcdn.com/sequence/77AjdoMvxIe-HNzk/images/integrations/netsuite_browse_connectors.png?fit=max\&auto=format\&n=77AjdoMvxIe-HNzk\&q=85\&s=864adc24a13053c6f3469cc5f72861fb)

**1. Create an Integration record in NetSuite**

In NetSuite, create an Integration record for a secure, certificate-based connection, with machine-to-machine access enabled. NetSuite issues a Consumer key for the record, which you'll need for the next step.

**2. Generate and upload a certificate**

Generate a private key and matching public certificate, then upload the certificate to the Integration record in NetSuite. NetSuite assigns it a Certificate ID. Keep the private key private. You'll enter it directly into Sequence next, and it never needs to be shared with anyone else.

**3. Configure the connector in Sequence**

Open **Settings > Connectors > NetSuite** and enter the details below.

![NetSuite connector settings in Sequence](https://mintcdn.com/sequence/77AjdoMvxIe-HNzk/images/integrations/netsuite_connector_settings.png?fit=max\&auto=format\&n=77AjdoMvxIe-HNzk\&q=85\&s=b2417e4ddf2360e4490b31550df002b3)

| Field | What to enter |
| - | - |
| NetSuite account ID | Your NetSuite account ID, including the suffix for a sandbox account. |
| Subsidiary ID | The NetSuite subsidiary whose books Sequence should post against. |
| Consumer key | The Consumer key from the NetSuite Integration record. |
| Certificate ID | The Certificate ID NetSuite assigned to the uploaded certificate. |
| Private key | The private key matching the uploaded certificate. Write-only. Sequence stores it encrypted and never returns it. |
| Default item income account ID | The income account new NetSuite Service Items default to. NetSuite requires this on every Service Item. |
| Default tax schedule ID | The tax schedule new NetSuite Service Items default to. NetSuite requires this on create. |

Click **Test configuration**. Sequence checks the credentials work before letting you save. A successful test unlocks the **Save** action. If the test fails, Sequence tells you the configuration is invalid. Check each field and try again.

> [!TIP]
>
> You can edit the configuration at any time. Any edit requires re-running **Test configuration** before saving, so a bad change can't overwrite a working setup.

### Multi-entity: subsidiaries and workspaces

If your business runs multiple legal entities in NetSuite, for example a US Inc., a UK Limited, and an LLC, each with its own subsidiary, connect them one at a time. Each Sequence workspace holds its own NetSuite connector configuration and posts against exactly one subsidiary.

This lets each entity keep its own approval workflows and business logic in Sequence, while every subsidiary still posts into the same NetSuite account. Your finance team gets clean, consolidated reporting across the whole group, without reconciling entities by hand.

See [Multi-entity support](https://docs.sequencehq.com/billing/multi-entity-support.md) for how Sequence scopes customers, quotes, billing schedules, and connectors to each entity.

## Customer sync

When you create or edit a customer in Sequence, Sequence pushes the update to NetSuite automatically, keeping the linked record in step as the customer changes.

### Linking customers

From a customer's row menu in the customers table, or from the customer inspector, choose **Link to NetSuite**.

![Link to NetSuite action on a customer row](https://mintcdn.com/sequence/77AjdoMvxIe-HNzk/images/integrations/netsuite_customer_link_menu.png?fit=max\&auto=format\&n=77AjdoMvxIe-HNzk\&q=85\&s=7bdc72c828ef0acc075ba94bc5bd5acd)

From the dialog that opens, either select an existing NetSuite customer to link to, or create a new customer in NetSuite directly.

![Link or create NetSuite customer dialog](https://mintcdn.com/sequence/77AjdoMvxIe-HNzk/images/integrations/netsuite_customer_link_modal.png?fit=max\&auto=format\&n=77AjdoMvxIe-HNzk\&q=85\&s=4449b85256937765f0dfee7dd3aa1cdc)

Once linked, the **Links** column on the customers table, and the customer inspector on invoices, credit notes, and customer pages, shows the NetSuite icon and a link straight to the NetSuite customer record.

Sequence pushes across the customer's legal name, billing address, primary billing contact, and tax status, keeping the NetSuite record aligned as any of these change in Sequence. Sequence holds a single address per customer, so it's set as both the default billing and shipping address in NetSuite. Archiving a customer in Sequence marks the matching NetSuite record inactive, since NetSuite doesn't allow deleting a customer that has posted transactions.

### Auto-push when invoicing an unlinked customer

If the account has the **customer push** sync toggle enabled and an invoice's customer is not yet linked to a NetSuite customer record, Sequence pushes the customer to NetSuite first, then pushes the invoice, instead of rejecting the sync. This avoids invoice syncs failing on an unsynced customer.

With the toggle off, the default applies: invoice sync is rejected until the customer is linked in NetSuite by hand (see [Prerequisites](#prerequisites)). An existing customer link, including one that is still pending, is left alone either way.

## Product sync

Sequence pushes active products to NetSuite as Service Items, creating them on first sync and keeping them updated after.

Draft products are skipped. They have not been released for billing and should not appear in NetSuite's item catalog.

### Linking products

Open a product to see its NetSuite panel in the sidebar. An unlinked product shows **Link service item**; select it to open the link dialog, where you can either select an existing NetSuite service item to link to, or create a new service item in NetSuite directly.

![Link or create NetSuite service item dialog](https://mintcdn.com/sequence/77AjdoMvxIe-HNzk/images/integrations/netsuite_product_link_dialog.png?fit=max\&auto=format\&n=77AjdoMvxIe-HNzk\&q=85\&s=24eb9112c52a5760ad1aacc37399668f)

Once linked, the panel shows the linked Service item and Income account, with a **View in NetSuite** shortcut.

![Product linked to a NetSuite Service Item](https://mintcdn.com/sequence/77AjdoMvxIe-HNzk/images/integrations/netsuite_product_linked.png?fit=max\&auto=format\&n=77AjdoMvxIe-HNzk\&q=85\&s=fee4e977d43742337c7b9b956b3e1ebe)

Invoice sync depends on this link: an invoice line for a Sequence product with no NetSuite item link retries until the item exists in NetSuite. Sequence keeps the Service Item's name in step as the product name changes in Sequence, and marks it inactive in NetSuite if the product is archived, so it drops out of new transactions without disappearing from NetSuite's history.

> [!NOTE]
>
> Service Item is the correct NetSuite item type for SaaS and other recurring services: it supports NetSuite's Advanced Revenue Management module and does not carry inventory tracking fields.

## Prepaid credit item

If your account uses [prepaid credits](https://docs.sequencehq.com/credits/overview.md), configure a **Prepaid credit item** on the NetSuite connector. This is the NetSuite item that Sequence posts prepaid-credit burndown lines to, so that invoices and credit notes that consume prepaid credit still balance correctly in NetSuite.

Set it alongside your other NetSuite connector settings by entering the NetSuite item you want these lines posted to.

The setting is optional. Leave it unset if the account does not use prepaid credits.

### Invoices that consume prepaid credit

When a Sequence invoice consumes prepaid credit, that credit arrives on the invoice as a negative burndown line. When the invoice syncs to NetSuite, Sequence posts that line against the configured prepaid credit item with the same negative amount, so the NetSuite invoice nets to what is actually due.

## Sales Order sync

When you create or amend a billing schedule in Sequence, Sequence looks at each phase and creates a NetSuite **Sales Order** for the phases that carry a fixed, determinable obligation. The Sales Order represents the customer's committed forward obligation in NetSuite; each invoice for that phase then draws its lines down from the Sales Order instead of billing standalone.

This is what lets NetSuite's Advanced Revenue Management build revenue arrangements straight off Sequence's data, using whatever recognition method your team runs: straight-line over the contract term, point-in-time, usage-based, or deferred revenue schedules all work the same way. You're not required to use ARM at all; accounts that recognize revenue from Sequence's own journals get the same Sales Orders and invoices without any extra setup.

A Sales Order line is created for:

* A **committed seat minimum** on a finite-term phase, when the commitment is initial or an increase over the previous phase.
* A **ratable fixed fee** on a finite-term phase.
* A **one-time fee**: a prepaid credit or an implementation fee.

No Sales Order line is created for:

* **Usage prices** (linear, volume, graduated, package): their per-period amount is usage-driven and can't be known in advance, so they bill entirely at invoice time.
* **Evergreen (open-ended) phases**: there is no finite term to book against.
* **Seat phases with no committed minimum**: seats bill as used.

When you amend a schedule and a phase terminates early, Sequence reconciles the Sales Order to match the shortened term.

### View sales orders on a billing schedule

The [billing schedule](https://docs.sequencehq.com/billing/create-billing-schedules.md) home page and the schedule editor include a NetSuite panel in the sidebar. The panel shows one card per sales order, listing:

* The term the sales order covers, with its date range and length.
* The NetSuite sales order the phases in that term synced to.
* A **View in NetSuite** button that opens the sales order record in NetSuite.

A phase that does not produce a sales order shows **No sales order linked**.

If an active billing schedule has not yet been synced, the NetSuite panel shows a **Sync billing schedule** button. Click it to push the schedule's phases to NetSuite as sales orders. The button is available when the schedule is active and its customer is linked to a NetSuite customer. Draft schedules cannot be synced; the panel shows that the schedule will be synced once it becomes active.

![Billing schedule not yet synced to NetSuite, with the Sync billing schedule button](https://mintcdn.com/sequence/77AjdoMvxIe-HNzk/images/integrations/netsuite_sales_order_unsynced.png?fit=max\&auto=format\&n=77AjdoMvxIe-HNzk\&q=85\&s=204776a406f850b2744afd3e9ce35434)

### Rolling up phases into one sales order with contract tags

By default, each phase syncs to its own sales order. To represent a multi-phase contract as a single sales order for its total contract value, tag the phases with a shared contract reference. Sequence calls this a **contract tag**.

**Setting a contract tag:**

1. Open the billing schedule in edit mode.
2. On the phase you want to tag, open the kebab menu in the phase header and select **Add contract tag**.

![Add contract tag action in the phase kebab menu](https://mintcdn.com/sequence/77AjdoMvxIe-HNzk/images/integrations/netsuite_contract_tag_menu.png?fit=max\&auto=format\&n=77AjdoMvxIe-HNzk\&q=85\&s=ba5f503d75dda409199e7f8bebe54e65)

3. Enter the reference and select **Save**.

![Add contract tag dialog](https://mintcdn.com/sequence/77AjdoMvxIe-HNzk/images/integrations/netsuite_contract_tag_modal.png?fit=max\&auto=format\&n=77AjdoMvxIe-HNzk\&q=85\&s=5d043d1bdc6f11c07eca9faf636ae18e)

4. The tag renders as a badge next to the kebab in the phase header. Use **Edit contract tag** or **Delete contract tag** from the same menu to change or remove the value later.

![Contract tag badge shown next to the kebab in the phase header](https://mintcdn.com/sequence/77AjdoMvxIe-HNzk/images/integrations/netsuite_contract_tag_badge.png?fit=max\&auto=format\&n=77AjdoMvxIe-HNzk\&q=85\&s=8ddb3623d36f56899829414178c9d9fc)

You can also set the tag through the API, if you manage billing schedules programmatically.

Phases that share a contract reference roll up into one sales order:

* The sales order spans the full contract term, from the earliest phase start date to the latest phase end date.
* The sales order carries one line per phase price. Each line's quantity and amount come from its own phase, and revenue for every line is recognized across the whole contract term.
* When a Sequence invoice syncs, each invoice line bills against the sales order line for the phase and price it was generated from. An invoice line with no matching sales order line bills as an independent line.

Phases without a contract tag keep the default behavior of one sales order per phase.

> [!NOTE]
>
> Contract tags match case-sensitively with whitespace trimmed. Clearing one returns the phase to its own sales order. They only work on schedules with an active NetSuite integration, not in the quote editor or quote templates, so tag a schedule created from a quote after it exists.

For example, a two-phase ramp with a "Year 1" phase and a "Year 2" phase tagged with the same contract reference syncs to a single NetSuite sales order spanning the full two years, with one line per phase price, each recognized over the full term.

Once tagged, the reference is also exported alongside invoices generated from the phase, so finance teams can group invoices by contract in NetSuite even when phases don't roll up into a single sales order.

## Invoice sync

When an invoice is finalized in Sequence, Sequence pushes it to NetSuite as an Invoice record. If the invoice's phase produced a Sales Order, the NetSuite invoice draws its lines down from that Sales Order, pulling the rate and amount from the matching line. Otherwise, it posts as a standalone invoice. An amendment-boundary invoice can span two phases, so different lines on the same invoice may draw down from different Sales Orders; a line with no Sales Order still bills as an independent line on the same invoice.

If the same invoice is sent to NetSuite twice, and NetSuite already has an invoice under that number, Sequence links up with the existing NetSuite invoice rather than failing or creating a duplicate.

### Prerequisites

Before an invoice can post, the linked customer and every line item's product must already exist in NetSuite. If a prerequisite link is still in flight, invoice sync retries. If a prerequisite is missing entirely (for example, the product isn't linked to a NetSuite item), the invoice is rejected until the link is created, unless [auto-push](#auto-push-when-invoicing-an-unlinked-customer) is enabled for the customer case.

### Payments from NetSuite

Sequence listens for payments recorded in NetSuite in real time. When a linked invoice is marked paid in NetSuite, it shows up on the Sequence invoice's payments list with a NetSuite badge and origin label within moments, so finance teams reconciling in NetSuite still see the payment in Sequence without a manual update.

### Linking invoices

The NetSuite panel on the invoice shows the linked customer and the invoice's sync status. A draft invoice shows that it will sync once finalized; once synced, the panel links straight through to the NetSuite invoice record.

![NetSuite panel on a draft Sequence invoice, showing it will sync once finalized](https://mintcdn.com/sequence/77AjdoMvxIe-HNzk/images/integrations/netsuite_invoice_link.png?fit=max\&auto=format\&n=77AjdoMvxIe-HNzk\&q=85\&s=ae8a8bf8ddbffeef44feb2201aaf0798)

## Credit note sync

When a credit note is finalized in Sequence, Sequence pushes it to NetSuite as a **standalone Credit Memo**. The credit memo is deliberately not applied to the original NetSuite invoice. The original invoice may already be paid, so applying a credit memo to it is incorrect. Where the customer needs to be made whole, issue a refund in NetSuite as a separate step.

If the same credit note is sent to NetSuite twice, and NetSuite already has a document under that number, Sequence links up with the existing memo rather than failing.

Only finalized credit notes sync. A credit note without a number (still in draft) is skipped and syncs automatically once finalized.

The NetSuite panel on the credit note shows the linked customer and the credit note's sync status. A draft credit note shows that it will sync once issued; once synced, the panel links straight through to the NetSuite credit memo record.

![NetSuite panel on a draft Sequence credit note, showing it will sync once issued](https://mintcdn.com/sequence/77AjdoMvxIe-HNzk/images/integrations/netsuite_credit_note_link.png?fit=max\&auto=format\&n=77AjdoMvxIe-HNzk\&q=85\&s=5cbe15c3e5ad04a142b57b1e776879d9)

## Revenue recognition journals

If you also use Sequence for revenue recognition, journal reports export in a CSV laid out for NetSuite's journal entry import, so recognition entries load into NetSuite without further transformation. See [Journal reports](https://docs.sequencehq.com/revenue-recognition/journal-report.md#export-formats) for the full set of export formats.

## Errors and retries

Every push runs through a retry filter, so transient errors, like a network blip or a temporary rate limit, are retried automatically with a growing delay between attempts.

Two classes of failure surface differently:

* **Authorization failures.** If NetSuite rejects the connector's credentials (for example, the Integration record was disabled or the certificate expired), Sequence marks the connector as failed, disables further pushes, and flags the connector as needing re-authorization. Re-open **Settings > Connectors > NetSuite**, update the affected fields, and run **Test configuration** again to resume syncing.
* **Validation failures.** If NetSuite rejects a specific record (for example, a missing default income account, a customer with no primary billing contact, an invoice line for a product that isn't linked to a NetSuite item, or an invalid country), the failure is recorded against that record. Fix the underlying data in Sequence and re-save the record to retry the push.

### Frequently asked questions (FAQ)

> [accordion] Do I need to use NetSuite's Advanced Revenue Management (ARM)?
>
> No. Sales Orders sync regardless, so accounts running ARM can build revenue arrangements off them, and accounts recognizing revenue from Sequence's own journals get the same Sales Orders and invoices without any extra setup.

> [accordion] Can I connect more than one NetSuite subsidiary?
>
> Each Sequence workspace connects to exactly one subsidiary. If you run multiple entities, connect each one from its own Sequence workspace, so each keeps its own approval workflows while still posting into the right subsidiary's books.

> [accordion] What happens if I edit a linked record directly in NetSuite?
>
> Sequence is the system of record for customers, products, invoices, credit notes, and billing schedules. A direct edit in NetSuite can be overwritten the next time Sequence pushes an update to that record.

> [accordion] Does a synced credit memo get applied to the original invoice automatically?
>
> No. Sequence posts it as a standalone credit memo, since the original invoice may already be paid. If the customer needs to be made whole, issue a refund in NetSuite as a separate step.

> [accordion] What happens if my NetSuite credentials expire or get revoked?
>
> Sequence marks the connector as failed and pauses further pushes rather than retrying against invalid credentials. Re-open the connector settings, update the affected fields, and run Test configuration again to resume syncing.

## Related

* [Accounting connectors overview](https://docs.sequencehq.com/connectors/accounting-overview.md)
* [Journal reports: NetSuite export](https://docs.sequencehq.com/revenue-recognition/journal-report.md)
* [Prepaid credits](https://docs.sequencehq.com/credits/overview.md)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.