Retrieve an accounting period
Operation ID: getAccountingPeriod
Group: Accounting › Accounting Periods
Open in the interactive reference
GET /accounting/accounting-periods/{id}
Read-only: Reads and returns; changes nothing.
Retrieves an accounting period. The record is one period for one legal entity and one accounting book, so the same period has a separate record for each entity and book. The response includes whether the period accepts new journal entries for that entity and book (postable), and the period-close checklist (closeTasks).
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
Api-Version |
header | string · v1 | yes | The API version this request targets, named by its public identifier. Required on every request; omitting it, or naming a version this company does not have, is answered with 400. This document describes version v1. |
id |
path | string | yes | The unique identifier of the entity-book accounting period record you want to retrieve. This is the id of a record from GET accounting/accounting-periods, not the shared accountingPeriodId. |
Response
200 Success
Under data (getAccountingPeriodOutput):
| Field | Type | Required | Description |
|---|---|---|---|
id |
string | yes | The unique identifier for this entity-book accounting period row. This identifies the (entity, book, period) combination, not the shared accounting period. |
accountingPeriodId |
string | no | The identifier of the underlying accounting period, shared by every entity that uses this fiscal calendar. See id on GET accounting/accounting-periods/:id. |
entityId |
string | no | The identifier of the legal entity this status belongs to. See id on GET base/entities. Absent only when the entity-book link is broken. |
entityName |
string | no | The name of the legal entity this status belongs to. |
bookId |
string | no | The identifier of the accounting book this status belongs to. A period is opened and closed per book. See id on GET accounting/books/:id. |
bookName |
string | no | The name of the accounting book this status belongs to. |
fiscalCalendarId |
string | no | The identifier of the fiscal calendar this period belongs to. See id on GET accounting/fiscal-calendars/:id. Absent when the period was deleted from under its status row. |
fiscalCalendarName |
string | no | The name of the fiscal calendar this period belongs to. |
periodName |
string | no | The display name of the period as its fiscal calendar defines it, for example 'Jan 2026'. The format varies by calendar, so do not parse it. Match on dates instead. |
fiscalYear |
string | no | The fiscal year label this period belongs to, for example 'FY2024'. Set by the calendar, so it need not match the calendar year of startDate. |
fiscalQuarter |
string | no | The fiscal quarter label this period belongs to, for example 'Q1 2026'. |
startDate |
date | no | The first day of the period, inclusive. Format YYYY-MM-DD. Absent only when the underlying period was deleted. |
endDate |
date | no | The last day of the period, inclusive. Format YYYY-MM-DD. |
durationDays |
number | no | The number of days the period spans, both bounds inclusive. Absent when startDate or endDate is. |
status |
string | yes | The status this entity and book have put the period in. Possible values: 'created' (generated, not yet opened), 'open', 'closed', 'reopened'. Only 'open' and 'reopened' accept postings. |
postable |
boolean | yes | Whether the period currently accepts postings for this entity and book, true when its status is 'open' or 'reopened'. This does not account for journal-type-specific locks. |
postableReason |
string | yes | Why the period does not accept postings, for example 'status is closed'. Empty when it is postable. |
reopeningReason |
string | no | The free-text reason recorded when the period was reopened. Set only when status is 'reopened'. |
reopenedByCascade |
boolean | no | Whether this period was reopened as a side effect of reopening a later one, rather than directly. |
hasTransactions |
boolean | no | Whether at least one journal entry line has been posted into the underlying period, by any entity. |
lastModifiedDate |
date-time | yes | The date and time this status row last changed, in UTC. Format YYYY-MM-DDTHH:mm:ss.sssZ. It changes when the period is opened, closed or reopened for this entity and book. |
closeTasks |
array<object> | no | The period-close checklist for this entity and book, one entry per task. An empty array when the row has no tasks yet. Check isExecutable before running a task with POST accounting/period-status/:id/execute-task. |
closeTasks[].taskCode |
string | yes | The code identifying the task, and the value to pass as task to POST accounting/period-status/:id/execute-task. The forward tasks, for example 'open', 'close', 'reopen', 'lockAP', 'lockAR', 'lockRevenue', 'lockJournals', 'runRevaluation', 'calculateConsolidationRates'. The task that undoes one is in reverseTaskCode. |
closeTasks[].reverseTaskCode |
string | no | The code of the task that undoes this one, for example 'unlockAP' for 'lockAP'. Empty when the task cannot be reversed. |
closeTasks[].isExecuted |
boolean | yes | Whether this task has already run for this entity-book period. |
closeTasks[].isExecutable |
boolean | yes | Whether this task can run now. It is false for a task already done and for one whose preconditions are unmet. notExecutableReason says which. |
closeTasks[].notExecutableReason |
string | no | Why the task cannot run now. Present only when isExecutable is false and a reason is available. |
closeTasks[].isReversible |
boolean | yes | Whether the task that undoes this one can run now. |
closeTasks[].notReversibleReason |
string | no | Why the reversal cannot run now. Present only when isReversible is false and a reason is available. |
closeTasks[].notApplicable |
boolean | no | Whether this task does not apply to this entity-book period at all, for example a consolidation task on an entity that does not consolidate. Such a task is neither executed nor executable and does not block the close. |
closeTasks[].message |
string | no | A human-readable, translated description of the task's state: the applied message when it has run, the not-applied message when it has not, or the not-applicable message when it does not apply. |
closeTasks[].lastModifiedDate |
date-time | no | The date and time this task's state last changed, in UTC. Format YYYY-MM-DDTHH:mm:ss.sssZ. Absent on a task that has never run. |
closeTasks[].lastModifiedBy |
string | no | The identifier of the user who last changed this task's state. Absent on a task that has never run. |
{
"data": {
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"accountingPeriodId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"entityId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"entityName": "<entityName>",
"bookId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"bookName": "<bookName>",
"fiscalCalendarId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"fiscalCalendarName": "<fiscalCalendarName>",
"periodName": "<periodName>",
"fiscalYear": "<fiscalYear>",
"fiscalQuarter": "<fiscalQuarter>",
"startDate": "2026-01-15",
"endDate": "2026-01-15",
"durationDays": 0,
"status": "<status>",
"postable": true,
"postableReason": "<postableReason>",
"reopeningReason": "<reopeningReason>",
"reopenedByCascade": true,
"hasTransactions": true,
"lastModifiedDate": "2026-01-15T09:30:00.000Z",
"closeTasks": [
{
"taskCode": "<taskCode>",
"reverseTaskCode": "<reverseTaskCode>",
"isExecuted": true,
"isExecutable": true,
"notExecutableReason": "<notExecutableReason>",
"isReversible": true,
"notReversibleReason": "<notReversibleReason>",
"notApplicable": true,
"message": "<message>",
"lastModifiedDate": "2026-01-15T09:30:00.000Z",
"lastModifiedBy": "<lastModifiedBy>"
}
]
},
"diagnostics": [
{
"code": "<code>",
"message": "<message>",
"severity": "error",
"path": [
"<path>"
],
"details": "<details>"
}
]
}
Errors
| Code | Status |
|---|---|
NOT_FOUND |
400 |
Statuses
400— Invalid request or business failure. Codes: NOT_FOUND401— The request carries no valid access token.403— Not authorized404— Not found429— Too many requests from this client address. The response has no body and noRetry-Afterheader.500— Internal server error