How-toOracle NetSuiteOneWorld / Intercompany

How to run intercompany transactions in NetSuite (OneWorld)

Question
how to run intercompany transactions in NetSuite

Also searched as

  • netsuite intercompany journal entry automated
  • netsuite intercompany elimination not matching
  • netsuite advanced intercompany journal entries
  • netsuite intercompany sales order framework

Short answer

Enable the Intercompany Framework and Automated Intercompany Management features (Setup > Company > Enable Features > Company), then create an Intercompany Sales Order or Purchase Order between two subsidiaries in the same NetSuite account; NetSuite auto-generates the matching intercompany transaction on the counterparty subsidiary and posts the elimination journal entries during period close if Advanced Intercompany Journal Entries is also enabled.

Applies to: NetSuite OneWorld editions only (multi-subsidiary is required). Automated Intercompany Management and Advanced Intercompany Journal Entries are separate features that must both be enabled for full automation; standard OneWorld without them requires manual intercompany journal entries.

Set up and process intercompany transactions

  1. 1Enable OneWorld features: Setup > Company > Enable Features > Company tab - turn on Multiple Subsidiaries, Intercompany Framework, and Automated Intercompany Management.
  2. 2Enable Advanced Intercompany Journal Entries (Accounting subtab) if elimination entries should post automatically rather than being built manually each close.
  3. 3Set up an Intercompany Elimination subsidiary (a non-posting or elimination-type subsidiary) if using Advanced Intercompany Journal Entries, per NetSuite's OneWorld accounting setup requirements.
  4. 4Configure intercompany preferences: default intercompany accounts (due to/due from) on each subsidiary record, and elimination accounts on the elimination subsidiary.
  5. 5Create an Intercompany Sales Order (Transactions > Sales > Enter Intercompany Sales Orders) selecting the selling and buying subsidiaries - NetSuite automatically creates the mirrored Intercompany Purchase Order on the buying subsidiary.
  6. 6Fulfill and bill the sales order, and receive/bill the purchase order, the same as standard order-to-cash/procure-to-pay transactions, just scoped to each subsidiary's books.
  7. 7For non-order transactions (cost allocations, loans between entities), use Intercompany Journal Entries (Transactions > Financial > Make Journal Entry, with the Intercompany checkbox) referencing both subsidiaries' due-to/due-from accounts.
  8. 8During period close, review and post the Eliminate Intercompany Transactions journal entries (Financial > Eliminate Intercompany Transactions if Advanced Intercompany Journal Entries is enabled) so consolidated financials do not double-count intercompany revenue/expense.

Intercompany sales orders versus manual journal entries

Automated Intercompany Management is what makes an Intercompany Sales Order automatically spawn its mirrored Intercompany Purchase Order on the other subsidiary, with matching item, quantity and (per configured markup rules) pricing. Without that feature enabled, intercompany activity has to be recorded as two separate manually-linked transactions or journal entries, which is far more error-prone at reconciliation time.

Intercompany transactions still respect each subsidiary's own currency, tax nexus and accounting rules - a US subsidiary selling to a UK subsidiary posts in USD on one side and GBP on the other, with the transaction's exchange rate applied per NetSuite's standard multi-currency handling, not a manually entered rate on each leg.

Why elimination journal entries do not balance

The most common intercompany close problem is elimination entries that leave a residual balance rather than netting to zero. This is usually one of: a manual journal entry that referenced only one subsidiary instead of using the Intercompany checkbox with both, a currency revaluation difference between the two legs' functional currencies, or a transaction posted after the elimination subsidiary's date range for the period was already run.

Advanced Intercompany Journal Entries requires every intercompany line to reference the correct due-to/due-from pair per subsidiary; if a chart of accounts change repointed an intercompany account without updating the subsidiary's intercompany preferences, new transactions post to the old account and elimination no longer picks them up.

Intercompany markup and transfer pricing

NetSuite supports a markup percentage on intercompany sales, letting the selling subsidiary post revenue at a transfer price above standard cost while the buying subsidiary's purchase order reflects that same marked-up price, which is relieved appropriately at consolidation through the elimination entries so consolidated financials show true third-party revenue rather than the inflated intercompany transfer price.

For regulated transfer-pricing requirements (tax jurisdictions requiring arm's-length intercompany pricing documentation), the markup percentage and elimination detail in NetSuite is a starting point for the underlying calculation, not a substitute for the tax/transfer-pricing study itself.

Reconciling intercompany balances before close

Run the Intercompany Reconciliation report or an equivalent saved search grouping by intercompany account and subsidiary before final elimination, comparing due-to on one subsidiary against due-from on the counterparty - they should match exactly (accounting for currency) before eliminations are posted. A mismatch almost always traces back to a transaction that bypassed the Intercompany transaction types (a regular, non-intercompany journal entry that happened to touch a due-to/due-from account).

Common pitfalls

  • !Manual journal entries touching intercompany due-to/due-from accounts without using the Intercompany checkbox, breaking automated elimination.
  • !Chart of accounts changes that repoint intercompany accounts without updating each subsidiary's intercompany preferences.
  • !Currency revaluation differences between subsidiaries left unreconciled before running eliminations.
  • !Intercompany sales orders created without Automated Intercompany Management enabled, requiring error-prone manual mirroring.
  • !Elimination subsidiary date range not covering a late-posted intercompany transaction for the period.
  • !Treating the intercompany markup calculation as sufficient for statutory transfer-pricing documentation without further review.

How an ERP-grounded AI assistant handles this

ERPray can run the due-to/due-from reconciliation across subsidiaries on request and point to the specific transaction(s) causing a residual balance before period close, rather than a finance team manually diffing subledger exports. It can also flag journal entries that touched an intercompany account without the Intercompany checkbox set, which is the pattern that most often breaks automated elimination.

Frequently asked questions

Do I need OneWorld to run intercompany transactions in NetSuite?

Yes. Intercompany transactions and the Intercompany Framework are only available in NetSuite OneWorld with Multiple Subsidiaries enabled; a single-subsidiary NetSuite account has no intercompany transaction types.

What is the difference between Intercompany Framework and Advanced Intercompany Journal Entries?

Intercompany Framework/Automated Intercompany Management lets sales and purchase orders auto-mirror across subsidiaries. Advanced Intercompany Journal Entries is a separate feature that automates the elimination journal postings at consolidation using a dedicated elimination subsidiary.

Why did my intercompany sales order not create a matching purchase order?

Automated Intercompany Management is likely not enabled, or the transaction was entered as a regular Sales Order instead of via Enter Intercompany Sales Orders, which is the only entry point that triggers the automatic mirrored transaction.

Can intercompany transactions cross different currencies?

Yes. Each subsidiary posts in its own base currency using NetSuite's standard exchange rate handling; consolidation and elimination account for the currency difference between the two legs.

Related

How-to

How to create an assembly build or work order in NetSuite

For simple manufacturing with no routing or WIP tracking, use Transactions > Manufacturing > Build Assemblies (or Enter Assembly Build), select the assembly item, quantity, and location, and NetSuite consumes the BOM components and receives the finished item in one transaction. For multi-step production needing routing, WIP accounting or partial completions, create a Work Order (Transactions > Manufacturing > Work Orders) and process it through Work Order Completion, which requires the Advanced Manufacturing feature (SuiteSuccess Manufacturing or WMS add-on) or the Manufacturing bundle.

How-to

How to build a workflow in NetSuite with SuiteFlow

Go to Customization > Workflow > Workflows > New, pick the record type and select Server, Client, or both as the trigger context, then build states and transitions on the workflow diagram, attaching actions (Set Field Value, Send Email, Create Record, Custom Action Script) to each state or transition. Release the workflow (top right dropdown, Testing to Released) once validated, since a workflow left in Testing only fires for the workflow owner.

How-to

How to write and run SuiteQL queries in NetSuite

SuiteQL is NetSuite's read-only SQL dialect over the underlying record tables, run either interactively from Analytics > SuiteQL Query Tool (or the older /app/suiteanalytics query page), through REST at /services/rest/query/v1/suiteql, or programmatically via the N/query module in SuiteScript 2.x. It supports standard SELECT, JOIN, WHERE, GROUP BY and window functions against table names that mostly match record type IDs (transaction, transactionline, item, customer).

How-to

How to use formula fields in a NetSuite saved search

In the saved search Results tab, add a column, set Field to "Formula (Text)", "Formula (Numeric)", "Formula (Date)" or "Formula (Currency)", then type an Oracle SQL expression into the Formula box using curly braces around field IDs, e.g. {trandate} or {item.custitem_weight}. Formula fields can also go on the Criteria tab so you can filter on the calculated value itself.

Error fix

Fix NetSuite SSS_USAGE_LIMIT_EXCEEDED Error

SSS_USAGE_LIMIT_EXCEEDED fires when a SuiteScript execution consumes all the governance units (usage points) allotted to its script type before it finishes. Fix it by checking runtime.getCurrentScript().getRemainingUsage() before expensive calls, yielding or rescheduling in Scheduled scripts, and moving heavy record-count work into Map/Reduce, which yields automatically across stages.

Error fix

Fix NetSuite INVALID_FLD_VALUE Error

INVALID_FLD_VALUE means NetSuite rejected a value you tried to set on a field because it does not match the field's expected type, list option, or reference record. Fix it by confirming the internal ID or text value actually exists on that field's source list and matches the field's value type (text versus list versus record reference) before setting it.

AI for ERP

AI for NetSuite, Beyond the Built-In Text Tools

NetSuite's built-in AI covers text generation, not grounded answers on your own data. See how a private LLM over SuiteQL adds real Q&A and controls.

Stuck on Oracle NetSuite?

Talk to engineers who work inside Oracle NetSuite every week, and who build private AI that answers these questions from your own ERP data.