Skip to main content

Intercompany Journal Entry API

Create, read, update, and delete intercompany journal entries between subsidiaries using the NetSuite REST API (OneWorld only).


Endpoints

MethodEndpointDescription
GET/record/v1/intercompanyJournalEntryList all intercompany journal entries
GET/record/v1/intercompanyJournalEntry/{id}Get specific intercompany journal entry
POST/record/v1/intercompanyJournalEntryCreate new intercompany journal entry
PATCH/record/v1/intercompanyJournalEntry/{id}Update intercompany journal entry
DELETE/record/v1/intercompanyJournalEntry/{id}Delete intercompany journal entry

Key Fields

Header Fields

FieldTypeDescriptionRequired
idstringInternal ID (read-only)-
tranIdstringTransaction numberAuto-generated
tranDatestringTransaction date (ISO 8601)Yes
postingPeriodobjectAccounting periodAuto-calculated
subsidiaryobjectFrom subsidiaryYes
toSubsidiaryobjectTo subsidiaryYes
currencyobjectTransaction currencyYes
exchangeRatenumberExchange rateAuto-calculated
approvedbooleanApproval statusRead-only
reversalDatestringReversal dateNo
reversalDeferbooleanDefer reversalNo
memostringMemo/descriptionNo
tranStatusobjectTransaction statusRead-only

Classification Fields

FieldTypeDescriptionRequired
departmentobjectDefault departmentNo
classobjectDefault classificationNo
locationobjectDefault locationNo

Sublists

FieldTypeDescriptionRequired
linecollectionJournal entry linesYes (min 2)

Example: Create Intercompany Journal Entry

POST /record/v1/intercompanyJournalEntry
Content-Type: application/json
{
"tranDate": "2025-12-25",
"subsidiary": {
"id": "1"
},
"toSubsidiary": {
"id": "2"
},
"currency": {
"id": "1"
},
"memo": "Intercompany allocation - shared services December 2025",
"line": {
"items": [
{
"account": {
"id": "150"
},
"debit": 5000.00,
"memo": "Shared services expense - Subsidiary 1",
"department": {
"id": "10"
}
},
{
"account": {
"id": "250"
},
"credit": 5000.00,
"memo": "Intercompany payable - Subsidiary 2"
}
]
}
}

Response

{
"links": [
{
"rel": "self",
"href": "https://1234567.suitetalk.api.netsuite.com/services/rest/record/v1/intercompanyJournalEntry/9501"
}
],
"id": "9501",
"refName": "Intercompany Journal Entry #ICJ-9501",
"tranId": "ICJ-9501",
"tranDate": "2025-12-25",
"postingPeriod": {
"id": "12",
"refName": "Dec 2025"
},
"subsidiary": {
"id": "1",
"refName": "Parent Company"
},
"toSubsidiary": {
"id": "2",
"refName": "UK Subsidiary"
},
"currency": {
"id": "1",
"refName": "USA"
},
"memo": "Intercompany allocation - shared services December 2025",
"approved": false,
"tranStatus": {
"id": "APPROVED",
"refName": "Approved"
}
}

Example: Update Intercompany Journal Entry

PATCH /record/v1/intercompanyJournalEntry/9501
Content-Type: application/json
{
"memo": "Updated: IC allocation - shared services Q4 2025",
"reversalDate": "2026-01-01"
}

Line Item Fields

Each item in the line.items array supports:

FieldTypeDescriptionRequired
accountobjectGL account referenceYes
debitnumberDebit amountConditional
creditnumberCredit amountConditional
memostringLine memoNo
entityobjectCustomer/Vendor/EmployeeNo
departmentobjectDepartmentNo
classobjectClassificationNo
locationobjectLocationNo
Debit or Credit

Each line must have either a debit OR a credit amount, not both. The line cannot have both fields populated.


Balancing Requirements

Must Balance

The intercompany journal entry must balance:

Total Debits = Total Credits

If the journal entry does not balance, NetSuite will reject the transaction with an error.

Example: Balanced Intercompany Entry

{
"subsidiary": {"id": "1"},
"toSubsidiary": {"id": "2"},
"line": {
"items": [
{"account": {"id": "150"}, "debit": 5000.00},
{"account": {"id": "250"}, "credit": 5000.00}
]
}
}

Total Debits: 5,000.00 Total Credits: 5,000.00 Status: Balanced


Query Filters

Find by Date Range

GET /record/v1/intercompanyJournalEntry?q=tranDate BETWEEN '2025-01-01' AND '2025-12-31'

Find by Subsidiary Pair

GET /record/v1/intercompanyJournalEntry?q=subsidiary='1' AND toSubsidiary='2'

Find by From Subsidiary

GET /record/v1/intercompanyJournalEntry?q=subsidiary='1'

Find by To Subsidiary

GET /record/v1/intercompanyJournalEntry?q=toSubsidiary='2'

Find Unapproved Entries

GET /record/v1/intercompanyJournalEntry?q=approved=false

Find by Account

GET /record/v1/intercompanyJournalEntry?q=line.account='150'

Important Notes

OneWorld Requirement

Intercompany journal entries are only available in NetSuite OneWorld accounts. This feature is not available in standard NetSuite accounts.

Accounting Impact

Intercompany journal entries create transactions in both subsidiaries:

  • Entries post to both subsidiary (from) and toSubsidiary (to)
  • NetSuite automatically creates elimination entries for consolidation
  • Both subsidiaries must be in the same accounting period

Subsidiary Restrictions

  • User must have access to both subsidiaries
  • Both subsidiaries must use compatible currencies or have exchange rates defined
  • Cannot create entries between subsidiaries in different base currencies without proper setup

Intercompany Accounts

Best practice:

  • Use dedicated intercompany accounts (e.g., "Intercompany Receivable", "Intercompany Payable")
  • These accounts typically have account type "Intercompany"
  • Helps with intercompany reconciliation and elimination reporting

Approval Workflow

  • If approval workflow is enabled, entries require approval before posting
  • Unapproved entries do not impact financial statements
  • Use the approved field to check approval status (read-only)

Elimination Entries

NetSuite automatically handles elimination entries:

  • Creates offsetting entries for consolidated reporting
  • Elimination entries remove intercompany balances from consolidated financials
  • View elimination entries in consolidation reports

Multi-Currency Considerations

When subsidiaries use different currencies:

  • Exchange rates are applied automatically
  • Unrealized gains/losses may be generated
  • Exchange rate variances appear in elimination entries

Common Use Cases

1. Shared Services Allocation

Allocate shared costs from parent to subsidiary:

{
"tranDate": "2025-12-31",
"subsidiary": {"id": "1"},
"toSubsidiary": {"id": "2"},
"memo": "Shared IT services allocation - December",
"line": {
"items": [
{
"account": {"id": "150"},
"debit": 8000.00,
"memo": "IT services expense - Subsidiary 2"
},
{
"account": {"id": "250"},
"credit": 8000.00,
"memo": "IC receivable from Subsidiary 2"
}
]
}
}

2. Intercompany Loan

Record intercompany lending:

{
"tranDate": "2025-12-25",
"subsidiary": {"id": "1"},
"toSubsidiary": {"id": "3"},
"memo": "Intercompany loan - Parent to Asia subsidiary",
"line": {
"items": [
{
"account": {"id": "120"},
"debit": 100000.00,
"memo": "IC loan receivable"
},
{
"account": {"id": "100"},
"credit": 100000.00,
"memo": "Cash disbursed"
}
]
}
}

3. Cost Reimbursement

Reimburse costs between subsidiaries:

{
"tranDate": "2025-12-20",
"subsidiary": {"id": "2"},
"toSubsidiary": {"id": "1"},
"memo": "Reimbursement for shared marketing campaign",
"line": {
"items": [
{
"account": {"id": "600"},
"debit": 15000.00,
"memo": "Marketing expense reimbursement"
},
{
"account": {"id": "250"},
"credit": 15000.00,
"memo": "IC payable to parent"
}
]
}
}

See Also