Period End Journal API
Create, read, update, and delete period-end closing journal entries using the NetSuite REST API.
Endpoints
| Method | Endpoint | Description |
|---|---|---|
GET | /record/v1/periodEndJournal | List all period-end journal entries |
GET | /record/v1/periodEndJournal/{id} | Get specific period-end journal entry |
POST | /record/v1/periodEndJournal | Create new period-end journal entry |
PATCH | /record/v1/periodEndJournal/{id} | Update period-end journal entry |
DELETE | /record/v1/periodEndJournal/{id} | Delete period-end 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 | Yes |
subsidiary | object | Subsidiary | Yes (OneWorld) |
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 Period End Journal Entry
POST /record/v1/periodEndJournal
Content-Type: application/json
{
"tranDate": "2025-12-31",
"postingPeriod": {
"id": "12"
},
"subsidiary": {
"id": "1"
},
"currency": {
"id": "1"
},
"memo": "December 2025 closing entries - Income summary to retained earnings",
"line": {
"items": [
{
"account": {
"id": "600"
},
"debit": 10000.00,
"memo": "Close revenue accounts",
"department": {
"id": "5"
}
},
{
"account": {
"id": "300"
},
"credit": 10000.00,
"memo": "Transfer to retained earnings"
}
]
}
}
Response
{
"links": [
{
"rel": "self",
"href": "https://1234567.suitetalk.api.netsuite.com/services/rest/record/v1/periodEndJournal/8001"
}
],
"id": "8001",
"refName": "Period End Journal #PEJ-8001",
"tranId": "PEJ-8001",
"tranDate": "2025-12-31",
"postingPeriod": {
"id": "12",
"refName": "Dec 2025"
},
"subsidiary": {
"id": "1",
"refName": "Parent Company"
},
"currency": {
"id": "1",
"refName": "USA"
},
"memo": "December 2025 closing entries - Income summary to retained earnings",
"approved": false,
"tranStatus": {
"id": "APPROVED",
"refName": "Approved"
}
}
Example: Update Period End Journal Entry
PATCH /record/v1/periodEndJournal/8001
Content-Type: application/json
{
"memo": "Updated: December 2025 closing entries - corrected amounts",
"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 |
subsidiary | object | Line-level subsidiary | 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 period-end 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 Period-End Entry
{
"postingPeriod": {"id": "12"},
"line": {
"items": [
{"account": {"id": "600"}, "debit": 10000.00},
{"account": {"id": "300"}, "credit": 10000.00}
]
}
}
Total Debits: 10,000.00 Total Credits: 10,000.00 Status: Balanced
Query Filters
Find by Date Range
GET /record/v1/periodEndJournal?q=tranDate BETWEEN '2025-01-01' AND '2025-12-31'
Find by Posting Period
GET /record/v1/periodEndJournal?q=postingPeriod='12'
Find by Subsidiary
GET /record/v1/periodEndJournal?q=subsidiary='1'
Find Unapproved Entries
GET /record/v1/periodEndJournal?q=approved=false
Find by Account
GET /record/v1/periodEndJournal?q=line.account='600'
Find Year-End Entries
GET /record/v1/periodEndJournal?q=tranDate LIKE '%-12-31'
Important Notes
Purpose of Period-End Journals
Period-end journals are used for:
- Closing entries: Transfer income and expense balances to retained earnings
- Year-end adjustments: Final adjustments before closing the fiscal year
- Accruals and deferrals: Period-specific adjustments
- Reclassifications: Correcting account classifications at period end
- Elimination entries: Consolidation adjustments
Key Differences from Standard Journal Entries
| Feature | Standard JE | Period-End JE |
|---|---|---|
| Purpose | General accounting | Period/year-end closing |
| Timing | Any time during period | Typically last day of period |
| Common use | Day-to-day adjustments | Closing and final adjustments |
| Posting period | Can be any open period | Usually matches closing period |
Accounting Impact
Period-end journal entries:
- Post to the specified
postingPeriod - Impact financial statements for that period
- Commonly used for closing temporary accounts (revenue/expenses) to permanent accounts (retained earnings)
- Essential for proper period-end close process
Period Locking
- Cannot create/modify entries in closed periods
- Cannot delete entries in locked periods
- Period must be unlocked by administrator
- Use reversing entries instead of deleting when period is locked
Posting Period Control
postingPeriodfield allows posting to specific period- Transaction date (
tranDate) should typically be last day of period - NetSuite validates that posting period is open
- Cannot post to future periods not yet opened
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) - Critical for period-end close controls
Reversing Entries
To create auto-reversing period-end entries:
- Set
reversalDateto the reversal date (typically first day of next period) - NetSuite automatically creates the reversing entry on that date
- Use
reversalDeferto defer the reversal if needed - Useful for accruals that reverse in the next period
Multi-Currency Considerations
- Base currency entries: Set
currencyto base currency - Foreign currency entries: NetSuite calculates exchange rate automatically
- Exchange rate can be overridden if needed
- Period-end rates may differ from transaction-date rates
Common Use Cases
1. Close Revenue and Expense Accounts
Transfer net income to retained earnings (year-end closing):
{
"tranDate": "2025-12-31",
"postingPeriod": {"id": "12"},
"subsidiary": {"id": "1"},
"memo": "Year-end closing - Close revenue and expense accounts to retained earnings",
"line": {
"items": [
{
"account": {"id": "400"},
"debit": 500000.00,
"memo": "Close revenue account"
},
{
"account": {"id": "700"},
"credit": 350000.00,
"memo": "Close expense accounts"
},
{
"account": {"id": "300"},
"credit": 150000.00,
"memo": "Net income to retained earnings"
}
]
}
}
2. Period-End Accrual with Reversal
Record accrued expenses that reverse next period:
{
"tranDate": "2025-12-31",
"postingPeriod": {"id": "12"},
"subsidiary": {"id": "1"},
"reversalDate": "2026-01-01",
"memo": "December accrued utilities - reverses Jan 1",
"line": {
"items": [
{
"account": {"id": "620"},
"debit": 3500.00,
"memo": "Utilities expense"
},
{
"account": {"id": "200"},
"credit": 3500.00,
"memo": "Accrued expenses"
}
]
}
}
3. Depreciation Expense (Month-End)
Record monthly depreciation:
{
"tranDate": "2025-12-31",
"postingPeriod": {"id": "12"},
"subsidiary": {"id": "1"},
"memo": "December depreciation expense",
"line": {
"items": [
{
"account": {"id": "680"},
"debit": 12500.00,
"memo": "Monthly depreciation expense"
},
{
"account": {"id": "160"},
"credit": 12500.00,
"memo": "Accumulated depreciation"
}
]
}
}
4. Bad Debt Expense (Year-End)
Adjust allowance for doubtful accounts:
{
"tranDate": "2025-12-31",
"postingPeriod": {"id": "12"},
"subsidiary": {"id": "1"},
"memo": "Year-end adjustment - Allowance for doubtful accounts",
"line": {
"items": [
{
"account": {"id": "650"},
"debit": 25000.00,
"memo": "Bad debt expense"
},
{
"account": {"id": "105"},
"credit": 25000.00,
"memo": "Allowance for doubtful accounts"
}
]
}
}
5. Prepaid Expense Adjustment
Adjust prepaid insurance to expense:
{
"tranDate": "2025-12-31",
"postingPeriod": {"id": "12"},
"subsidiary": {"id": "1"},
"memo": "December insurance expense - amortize prepaid",
"line": {
"items": [
{
"account": {"id": "630"},
"debit": 1000.00,
"memo": "Insurance expense - December"
},
{
"account": {"id": "110"},
"credit": 1000.00,
"memo": "Prepaid insurance"
}
]
}
}
6. Inventory Adjustment (Period-End)
Adjust inventory to match physical count:
{
"tranDate": "2025-12-31",
"postingPeriod": {"id": "12"},
"subsidiary": {"id": "1"},
"memo": "Year-end inventory adjustment - physical count variance",
"line": {
"items": [
{
"account": {"id": "700"},
"debit": 5000.00,
"memo": "Cost of goods sold - inventory shortage"
},
{
"account": {"id": "120"},
"credit": 5000.00,
"memo": "Inventory"
}
]
}
}
Period-End Close Workflow
Typical Month-End Close Process
- Run preliminary reports - Review trial balance and financials
- Record adjusting entries - Use period-end journals for accruals, deferrals, etc.
- Post period-end journals - Ensure all adjustments are approved and posted
- Review final financials - Verify accuracy of financial statements
- Close the period - Lock the period to prevent further changes
- Archive reports - Save final versions of financial statements
Year-End Close Specifics
For fiscal year-end:
- Record all annual adjustments (depreciation, bad debt, inventory, etc.)
- Close temporary accounts (revenue/expenses) to retained earnings
- Verify tax accounts and provisions
- Review intercompany eliminations (OneWorld)
- Finalize and approve year-end financial statements
- Close all periods in the fiscal year
- Begin new fiscal year
See Also
- Journal Entry - Standard journal entries
- Intercompany Journal Entry - Intercompany transactions
- Advanced Intercompany Journal Entry - Multi-subsidiary entries
- Accounting Period - Manage periods
- Account - Chart of accounts