Skip to main content
📊 See what this connector supports ↓

Introduction

NetSuite is a cloud business suite covering accounting, ERP, CRM and ecommerce. It is often used by companies running several subsidiaries, and Chift supports OneWorld multi-subsidiary accounts.

Activate NetSuite

Partner keys

You can use Chift’s app, or ask Chift for a dedicated one under your own brand.

Use Chift's app

Ask your Chift point of contact for the Client ID and Client Secret, and enter them once at the connector level. They work across all your end users’ NetSuite accounts.

Use your own app

Chift builds a dedicated bundle carrying your own OAuth credentials, so end users see your brand. Ask your Chift point of contact to set it up.
Your end users never handle these credentials. They install the Chift Integration Bundle, authorize, and enter only their NetSuite Account ID.
1

Request the credentials

Ask your Chift point of contact for the Client ID and Client Secret.

Activate NetSuite in your Chift account

In Connectors › NetSuite, enter your Client ID and Client Secret. There is nothing to configure per end user.

Connector settings

The NetSuite preconfigure fields in the Chift connector settings
Three NetSuite behaviors are set with preconfigure fields at the connector level, under Connectors › NetSuite › Preconfigure fields. A value you set applies to all your NetSuite connections and is hidden from your end users. Left unset, the field is shown to the end user in the connection form. Invoice products adds sellable products to the chart of accounts, so they can be used on customer invoice lines.
  • Not active (default): only supplier invoices are supported.
  • Active: customer invoices are supported too.
Set it to Active if you create customer invoices, also called sales invoices. Attachments enables pushing attachments to NetSuite.
  • Not active (default): attachments are not pushed.
  • Active: attachments can be pushed.
Set it to Active if you push attachments. It requires the Chift Integration Bundle, and Chift checks it is installed when a connection is created. Bank transactions enables pushing bank transactions to NetSuite.
  • Not active (default): bank transactions are not pushed.
  • Active: bank transactions can be pushed.
Set it to Active if you push bank transactions. Your end users never see this field. Chift picks where the statements go, for each connection. Nobody has to choose:
  • ZoneReconcile installed on the NetSuite account: statements are written to ZoneReconcile, the bank reconciliation SuiteApp from Zone & Co.
  • ZoneReconcile not installed: statements go through NetSuite’s own bank data import and show up in Match Bank Data.
Each way needs its own setup on the end user’s side. See Connect NetSuite and Limitations & specificities below.
Leave a field inactive if you don’t use it. With Attachments or Bank transactions active, Chift checks at connection time that the integration bundle is installed. With Bank transactions active and no ZoneReconcile, it also checks the NetSuite bank data import setup. Enable it only once your end users can do that setup.

Test NetSuite

Vendor fees

Software editor (you)

Paid sandbox — about 10–20% of the annual NetSuite subscription, and only sold to NetSuite customers. Software vendors can also get development accounts through NetSuite’s SuiteCloud Developer Network (SDN).

End user

No fees. For bank transactions, ZoneReconcile is a paid SuiteApp from Zone & Co, used only if they already have it. Without it, NetSuite’s own bank data import uses the Bank Statement Parsers SuiteApp from Oracle NetSuite, which is free.

Connect NetSuite

NetSuite setup guide for end users

The full step-by-step, with screenshots.
Before they start, your end users need:
  • an Administrator role, or a role with the SuiteApp Marketplace permission, to install the bundle, whose Bundle ID is 703899
  • these NetSuite features enabled: client and server SuiteScript, OAuth 2.0, REST Web Services and Custom Records. Server SuiteScript must be on before the bundle is installed
To connect, they:
  • install the Chift Integration Bundle
  • assign the bundled role to the user who connects
  • authorize, entering only their NetSuite Account ID
  • choose which subsidiaries to connect, and the folder for attachments if attachments are enabled
  • choose the Financial institution for bank statements, if bank transactions are enabled and they don’t use ZoneReconcile

Bank transactions setup

If you push bank transactions, your end users prepare NetSuite in one of two ways. Which one depends only on whether ZoneReconcile is installed on their account.

With ZoneReconcile

  • Full access, on the role they connect with, to ZoneReconcile’s bank statement records, and to Perform Search, granted before connecting.
  • A Bank Account Configuration in ZoneReconcile for each bank account you push to.
  • Matching and processing preferences set in ZoneReconcile.

With NetSuite's bank data import

  • The integration bundle in version 1.4 or later.
  • The Bank Statement Parsers SuiteApp from Oracle NetSuite, bundle ID 293699, and its plug-ins enabled.
  • A Financial Institution with one format profile: Chift Bank Statement Import as connectivity method, CSV Plugin Implementation as transaction parser.
  • Each bank account enabled for Match Bank Data and Reconcile Account Statement.
  • That financial institution chosen after connecting.
The setup guide for end users walks through both, with screenshots. Bank transactions need the Chift Integration role, or a role of their own with the same access. Chift Integration (Read Only) cannot push them.

What the Chift Integration Bundle installs

The bundle is a SuiteBundle installed in one click. It does not change how NetSuite behaves; it packages what Chift needs to read and write data.
  • A RESTlet script and deployment, for attachments and bank transactions, which NetSuite’s native REST API cannot handle.
  • Two custom roles: Chift Integration, for read and write, and Chift Integration (Read Only).
  • The OAuth 2.0 integration record, installed enabled, with Chift’s OAuth app embedded.
  • A Chift Attachments File Cabinet folder, the default target for attachments. It can be changed in the post-connection settings.
  • The Chift Bank Statement Import plug-in and a Chift Bank Statements File Cabinet folder, for bank statements without ZoneReconcile. They come with version 1.4 of the bundle.

Roles and permissions

The connection runs with the role the end user authorizes with, so that role decides how much access Chift has:
  • Chift Integration — full read and write. Use it when Chift creates data: invoices, journal entries, bank transactions, attachments.
  • Chift Integration (Read Only) — read-only access.
  • Their own role — an existing or custom NetSuite role scoped to the features they use. It must include the Manage own OAuth 2.0 Client Credentials certificates permission, otherwise the connection fails.
After assigning or changing a role, the end user must log out and back in for it to appear on the consent screen.
Avoid connecting as Administrator: the connection would run with full administrator access instead of a scoped role.

Compatibility and requirements

  • Attachments and the standard accounting endpoints all work over the single OAuth 2.0 token.
  • OneWorld accounts, with several subsidiaries: the bundled role has Subsidiary Restrictions set to All, so Chift sees every subsidiary. Restricting it to User Subsidiary, or disabling Include Sub-Subsidiaries, hides child subsidiaries.
  • Custom segments used as analytic dimensions: enable the SuiteCloud Custom Segments feature and grant the matching permission on the role, otherwise analytic dimensions come back empty.

Rate limits

NetSuite applies a concurrency cap: it limits how many web services and RESTlet requests can run at the same time, per NetSuite account. The cap covers every integration on the account, not only Chift, and an administrator can set aside part of it for one integration. Each SuiteCloud Plus license adds 10 concurrent requests, except on development and partner accounts. Legacy service tiers range from 2 to 20. When the limit is exceeded, NetSuite rejects the request: Chift automatically manages these limits to optimize performance and prevent interruptions. However, once the API rate limit is reached, Chift cannot bypass these limitations. See NetSuite’s concurrency governance documentation.

Limitations & specificities

  • Journal entries can only use general accounts.
  • Manual journal entries can only be created in the general journal, whose journal_id is 5.
  • Transaction dates must fall between 30 years in the past and 10 years in the future.
To use a payment method on an invoice payment, the payment method must be linked to a bank account in NetSuite. Invoice payments are created with POST invoices/payments.Set this on each payment method you plan to use. Otherwise, the request fails.
Bank transactions are pushed with POST bank-transactions, one bank statement per call. Where they land depends on the end user’s account, and cannot be changed:
  • ZoneReconcile installed: Chift writes the statement to ZoneReconcile.
  • ZoneReconcile not installed: Chift uses NetSuite’s own bank data import.
Chift checks this when the connection is tested. A role that cannot read ZoneReconcile’s bank statement record looks the same as an account without ZoneReconcile: the connection test then fails on the missing Bank Statement Parsers SuiteApp. After granting that access, or installing or removing ZoneReconcile, the end user tests the connection again.Rules for both:
  • The bank account is found by its NetSuite internal ID, then by its account number. It must be a bank or credit card account.
  • currency must be the bank account’s currency.
  • Every line gets the statement’s bank_statement_date. A period with several dates needs one call per date.
  • Chift only pushes the lines. Matching them to invoices and payments happens in NetSuite or ZoneReconcile.

With ZoneReconcile

  • The role the end user connects with needs Full access to ZoneReconcile’s bank record types, customrecord_bank_statement and customrecord_ba_transactions, and to Lists › Perform Search.
  • The statement is linked to the account’s ZoneReconcile Bank Account Configuration when there is one. ZoneReconcile only matches statements linked to it.
  • Nothing is matched on its own. For each statement, the end user opens it in ZoneReconcile, clicks Run Match, then Edit and Save. Run Match alone posts nothing.
  • general_ledger_account is optional. When sent, it must exist in the chart of accounts. With an integration bundle older than 1.2, it is required on every line.
  • A statement whose external_bank_statement_id already exists is rejected.
  • fee_amount, counterpart and pdf are ignored.
  • A bank account in a foreign currency only pays invoices in that currency. Paying a base-currency invoice from a foreign-currency bank account needs a transit account, see Zone & Co’s Foreign Currencies.

With NetSuite’s bank data import

  • Chift writes the statement as a CSV file in the Chift Bank Statements File Cabinet folder. NetSuite then imports it through the format profile, and the lines show up in Match Bank Data.
  • Not supported: opening_balance, pdf, general_ledger_account, and non-zero tax_amount or fee_amount. A request that sends one is rejected.
  • external_transaction_id must be unique within a statement. The same statement cannot be pushed twice.
  • The bank account needs an account number with no underscore (_), used by no other active account.
  • The ISO Code of the bank account’s currency in NetSuite must be the ISO 4217 code, for example EUR.
  • The date format of the format profile’s parser must use month, day and year.
  • The bank account must be enabled for Match Bank Data and Reconcile Account Statement. The end user does this in NetSuite, otherwise the push fails.
  • On the first push to a bank account, Chift adds it to the format profile’s Account Linking. If that account number is already linked to another account, the push fails.
  • A pushed statement is in NetSuite, not yet imported: its lines show up in Match Bank Data after the next import. The first one shows up within minutes. Later ones come with the format profile’s import schedule, which the end user sets (daily by default, or hourly). They can run an import sooner with Update Imported Bank Data, at most once every 60 minutes per financial institution. See Updating Imported Bank Statement Files.
  • The response echoes the request. It contains no NetSuite IDs.
Attachments and the standard accounting endpoints do not depend on either setup.

Coverage

Troubleshooting

Specific errors for NetSuite: