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​