---
title: "Reopen an assigned customer's closed GL period (refused if filing-locked or a newer period is closed)"
method: POST
path: "/accountant/companies/{customerId}/gl-periods/{periodId}/reopen"
tags: ["GL Periods"]
---

# Reopen an assigned customer's closed GL period (refused if filing-locked or a newer period is closed)

`POST /accountant/companies/{customerId}/gl-periods/{periodId}/reopen`

## Request

- Base URL: `https://api.medianfi.com/api/v1`
- URL: `https://api.medianfi.com/api/v1/accountant/companies/{customerId}/gl-periods/{periodId}/reopen`
- Auth: one of:
  - HTTP bearer
  - API key in header `X-API-Key`

Returns a closed period to open. Voids the period's closing entry so
the stale Retained Earnings sweep is removed, and writes an
audit_logs entry with the supplied reason. Refused when the period is
filing-locked or when a newer period has already been closed, so a run
that reaches back several months must reopen newest-first. Post-close
adjustments do not need a reopen: a closed period still accepts
postings and voids (#2411).

Moved here from `/companies/{companyId}/gl-periods/{id}/reopen` (#1852):
reopening a period the client has already been shown is accountant
work, not company-admin work. The agent service API key may reopen a
period as a high-impact operation with the same mandatory reason
(2026-10-06, reversing #2411 for this route).

## Request body

- object
  - `reason` string, required: Explanation for reopening, written to audit_logs.changes.reason.

## Response `200`

Period reopened

- GlPeriodResponse
  - `success` boolean
  - `data` GlPeriod
    - `id` string, uuid
    - `companyId` string, uuid
    - `startDate` string, date
    - `endDate` string, date
    - `status` 'open' | 'closed'
    - `closedAt` string, date-time, nullable
    - `closedByUserId` string, uuid, nullable
    - `filingLockedAt` string, date-time, nullable
    - `filingLockedByUserId` string, uuid, nullable

## Other responses

- `401`: Authentication required
- `403`: Insufficient permissions or not a company member
- `404`: GL period not found, or the accountant is not assigned to this customer
- `422`: Validation error (reason missing or too short), or period is not closed, is filing-locked, or a newer period is already closed.

---

[API](https://skmtc.dev/medianfi/apis/median-api.md) · [All operations](https://skmtc.dev/medianfi/apis/median-api/llms.txt) · [OpenAPI document](https://skmtc.dev/medianfi/apis/median-api/revisions/20090ea32b0d?raw)
