Reopen a previously closed fiscal year (prior-period adjustment)
accounting:close_periodReopens a previously closed fiscal year by posting the inverse of the canonical
closing journal entry (sign-flip every line) and transitioning the fiscal-year-end
monthly period from year_end_closed back to closed. The original closing JE is
preserved (per ERP-CORRECTNESS-RULES §A4: reversing entries never edit or delete;
a new offsetting JE is posted).
Industry precedent:
- NetSuite “Reopen Closed Period” (Setup > Accounting > Manage G/L): posts inverse closing JE and transitions period back to open for amendment.
- Acumatica “Financial Periods” reopen: full audit trail (who, when, reason).
- QuickBooks Online “Change closing date”: removes the lock; lets accountants post prior-period adjustments.
- AICPA / GAAP ASC 250 (prior-period adjustments): permits PPAs to a previously closed fiscal year via reversing entries.
Preconditions:
- The fiscal year must currently be in
year_end_closedstatus (HTTP 400fiscal_year_not_closedotherwise). - A posted closing JE must exist for
(entity_id, fiscal_year)(HTTP 409no_closing_je_foundotherwise). - Operator must supply a
reason(max 500 chars; SOX-grade audit trail).
Idempotent: re-running for the same (entity_id, fiscal_year) returns the
existing reversal JE without posting a duplicate. The partial UNIQUE index on
(entity_id, idempotency_key) provides race safety.
Idempotency key: fiscal_year_reopen:<entity_id>:<fiscal_year>
Effect: Retained Earnings (account 3000) decrements by the original net income
amount (or increments back by the original net loss). The getBalanceSheet hybrid
reader will reflect the reversal automatically on the next call.
Audit: every reopen writes an activity_log row with action='fiscal_year_reopened',
the operator’s reason, the original_je_id, and the reversal_je_id. Broadcasts
fiscal_year.reopened so downstream caches (balance sheet, AR statement footer,
customer portal balance) invalidate.
High-power operation: uses the same accounting:close_period scope as the
forward close. Operator-triggered only; never auto-fired.
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
UUID of the year-end accounting period (used for URL consistency with the close-fiscal-year triplet; entity_id and fiscal_year are inferred from auth + request body).
Body
Fiscal year to reopen (e.g. 2024). Must be currently in year_end_closed status.
2024
Operator-supplied justification for the reopen (SOX-grade audit trail; required).
500"Prior-period adjustment: vendor invoice for FY2024 received in FY2025"
Response
Fiscal year reopened (or idempotent return of existing reversal JE)

