Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.commenda.io/llms.txt

Use this file to discover all available pages before exploring further.

Overview

The NetSuite integration connects your Oracle NetSuite account to Commenda for automatic transaction syncing and indirect tax calculation. Commenda pulls your receivables (invoices, cash sales, cash refunds), payables (bills and bill credit notes), contacts, and items, then calculates and applies the correct indirect tax on your NetSuite sales documents.

Supported features

FeatureStatus
Receivables syncing (invoices, cash sales, cash refunds)Supported
Payables syncing (bills, bill credit notes)Supported
Tax calculation on sales documentsSupported
Real-time webhooksSupported

Data models

Commenda syncs the following data from NetSuite:

Receivables

  • Invoices — sales invoices with line items and addresses
  • Cash sales — point-of-sale and cash transactions (unique to NetSuite)
  • Cash refunds — refund transactions

Payables

  • Bills — vendor bills with line items, vendor details, and tax amounts
  • Bill credit notes — credits received from vendors against previously issued bills

Reference data

  • Contacts — customer and vendor profiles with billing and shipping addresses
  • Items — your product and service catalog
Tax calculation also supports estimates and sales orders in addition to the synced data models. Tax calculation runs on receivable-side documents only — bills and bill credit notes are ingested as-is for reporting and reconciliation.

Accounts payable

Commenda ingests NetSuite Bills and Bill Credit Notes into the same unified transaction model used for receivables, so you can report on spend, reconcile vendor activity, and surface purchase data alongside your sales data. Key behaviors:
  • Vendor resolution. Vendors on bills are resolved from NetSuite’s vendor records (separate from customer records). Commenda fetches vendor details — including billing and shipping addresses — via a passthrough call to NetSuite using the platform vendor ID on each bill.
  • Amount handling. Bill amounts are ingested with signs that mirror NetSuite’s conventions:
    • Bills — tax amounts are normalized so credits and debits reconcile correctly across the unified model.
    • Bill credit notes — line amounts, quantities, and unit prices are negated so credit notes offset the original bill.
  • Discount line items. Document-level discount lines are detected, excluded from the line-item list, and prorated across the remaining product lines so per-line net amounts stay accurate.
  • Address resolution. Vendor billing and shipping addresses are resolved from the bill payload first, then fall back to the vendor record. NetSuite’s receivable-only SuiteScript flow is skipped for payables, so no plugin configuration is required for bills.
  • No tax calculation on bills. Commenda does not calculate or write tax back to bills or bill credit notes — these documents are read-only from a tax perspective and used for ingestion and reporting.
Bills and bill credit notes are enabled automatically when you connect NetSuite. You do not need to change any plugin settings or SuiteScript deployments to sync payables.

How tax calculation works

When you create or update a document in NetSuite, Commenda automatically:
  1. Receives a webhook notification
  2. Fetches the full document details including addresses
  3. Resolves the shipping address from the document or the associated customer record
  4. Calculates the applicable indirect tax
  5. Updates the document with the correct tax amounts

Address resolution

NetSuite uses a two-tier address approach:
  1. Document-level addresses — Commenda first checks for shipping and billing addresses directly on the invoice or transaction
  2. Customer-level addresses — if no acceptable document-level address is found, Commenda looks up the customer’s default shipping and billing addresses
The priority order is:
  1. Document shipping address
  2. Customer default shipping address
  3. Document billing address
  4. Customer default billing address
Addresses where only the country field is populated are considered incomplete and skipped. This prevents incorrect tax jurisdiction assignments from auto-populated country-only addresses.

Prerequisites

Before connecting NetSuite, ensure the following:
  • You have administrator access to your NetSuite account
  • The Commenda SuiteScript plugin is installed in your NetSuite account — this plugin enables Commenda to query customer address data
The NetSuite integration requires a custom SuiteScript deployment for full functionality. Contact your Commenda account team for installation instructions.

Connecting NetSuite

1

Install the plugin

Work with your Commenda account team to install the required SuiteScript plugin in your NetSuite account. This enables Commenda to access customer address data for tax jurisdiction resolution.
2

Start the connection

From your Commenda dashboard, navigate to integrations and select NetSuite. Commenda generates a secure connection link.
3

Authorize access

Click the connection link to authorize Commenda to access your NetSuite data.
4

Configure sync settings

Choose which data models to sync, set the sync frequency, and specify how far back to pull historical data.
5

Verify the connection

After authorization, Commenda begins the initial data sync. Check the sync status on your dashboard to confirm data is flowing.

Known behaviors

  • Cash sales is a NetSuite-specific transaction type not found in other integrations.
  • Commenda only skips draft status transactions — NetSuite is more permissive than other platforms, with statuses like deposited, not deposited, and unknown all eligible for processing.
  • Customer IDs in NetSuite use a customer_ prefix internally; vendor IDs on bills and bill credit notes use a vendor_ prefix. Commenda handles both automatically.
  • Receivables and payables flow through separate resolution paths — customer-side address lookups use the Commenda SuiteScript plugin, while vendor-side lookups use NetSuite passthrough calls.

Next steps