Reopen a closed accounting period
accounting:close_periodReopens a closed accounting period (status=‘closed’ only). After reopening, journal entries can again be posted with entry dates inside this period.
NEW-GAP-REOPEN-PERIOD-ENTITY-ISOLATION-SOD-REASON-AUDIT (2026-05-15) — 8 blocking guards:
- Layer 1 isolation — the period is scoped to the API key’s entity_id; cross-tenant attempts return 404.
- Status guard — only status=‘closed’ periods are reopenable (year-end-closed periods must go through
POST /v1/fiscal-periods/{id}/reopen-fiscal-yearso the closing JE is reversed). - Age guard — periods ending more than 180 days ago require
acknowledge_old_period: true. - Reason required — 10-500 characters. Frontend dropping the field is a stop-work bug.
- Segregation of Duties — the caller MUST NOT be the user who requested OR approved the original close. Returns 403
sod_self_reopen_forbidden. - Audit log — a row is written to
activity_logwith the full prior state and reason for SOX-grade traceability. - Broadcast —
accounting_period.reopenedis emitted for cache-invalidation by listeners. - Audit columns —
reopen_reason,reopened_by,reopened_atare persisted on the period row.
Returns the updated period with all close-tracking columns cleared.
Industry alignment: NetSuite “Reopen Period” requires Permission-class admin role + audit-trail; QuickBooks Online requires Admin + reason; Acumatica “Financial Periods” reopen carries who/when/reason. This endpoint matches that SOX-grade bar.
Authorizations
API key issued per entity via Settings > Developers > API Keys.
Each key carries scopes (e.g. orders:read, products:write).
Bearer token format: Authorization: Bearer ark_live_ent_Test keys use ark_test_ent_. Both are issued per entity
via Settings > Developers > API Keys.
Path Parameters
Body
Operator-supplied justification (SOX-grade audit trail; required). 10-500 chars.
10 - 500"Q1 inventory recon required reposting of adjusting JE for COGS reclass."
Required true when the period ended more than 180 days ago. Defaults false.
Response
Period reopened
An accounting period. Closed periods refuse new journal entry postings (Rule A3). Year-end closing entries that roll revenue and expense activity into retained earnings are posted via a separate explicit endpoint (POST /v1/accounting_periods/{id}/close-fiscal-year). The monthly-period close does NOT by itself post a retained-earnings rollover JE. Verified against live dev RDS accounting.accounting_periods.
Human-readable name (e.g. 'January 2025')
open, close_requested, closed NEW-GAP-REOPEN-PERIOD-ENTITY-ISOLATION-SOD-REASON-AUDIT (2026-05-15): operator-supplied justification from the most recent reopen. 10-500 chars when set. Cleared on next close.
User who most recently reopened this period.

