Intercompany Journal Entry API
Create, read, update, and delete intercompany journal entries between subsidiaries using the NetSuite REST API (OneWorld only).
Endpoints
| Method | Endpoint | Description |
|---|---|---|
GET | /record/v1/intercompanyJournalEntry | List all intercompany journal entries |
GET | /record/v1/intercompanyJournalEntry/{id} | Get specific intercompany journal entry |
POST | /record/v1/intercompanyJournalEntry | Create 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
| Field | Type | Description | Required |
|---|---|---|---|
id | string | Internal ID (read-only) | - |
tranId | string | Transaction number | Auto-generated |
tranDate | string | Transaction date (ISO 8601) | Yes |
postingPeriod | object | Accounting period | Auto-calculated |
subsidiary | object | From subsidiary | Yes |
toSubsidiary | object | To subsidiary | Yes |
currency | object | Transaction currency | Yes |
exchangeRate | number | Exchange rate | Auto-calculated |
approved | boolean | Approval status | Read-only |
reversalDate | string | Reversal date | No |
reversalDefer | boolean | Defer reversal | No |
memo | string | Memo/description | No |
tranStatus | object | Transaction status | Read-only |
Classification Fields
| Field | Type | Description | Required |
|---|---|---|---|
department | object | Default department | No |
class | object | Default classification | No |
location | object | Default location | No |
Sublists
| Field | Type | Description | Required |
|---|---|---|---|
line | collection | Journal entry lines | Yes (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:
| Field | Type | Description | Required |
|---|---|---|---|
account | object | GL account reference | Yes |
debit | number | Debit amount | Conditional |
credit | number | Credit amount | Conditional |
memo | string | Line memo | No |
entity | object | Customer/Vendor/Employee | No |
department | object | Department | No |
class | object | Classification | No |
location | object | Location | No |
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) andtoSubsidiary(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
approvedfield 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
- Journal Entry - Standard journal entries
- Advanced Intercompany Journal Entry - Multi-subsidiary entries
- Subsidiary - Manage subsidiaries
- Currency - Currency setup
- Currency Rate - Exchange rates