---
title: "Close accounting period"
method: POST
path: "/v1/platform/accounting-periods/{period_id}/close/"
tags: ["Accounting Periods"]
---

# Close accounting period

`POST /v1/platform/accounting-periods/{period_id}/close/`

## Request

- Base URL: `https://docs.thredfi.com` (the document declares no server; this is the origin it was published from)
- URL: `https://docs.thredfi.com/v1/platform/accounting-periods/{period_id}/close/`
- Auth: one of:
  - HTTP bearer
  - HTTP bearer
  - HTTP basic
  - HTTP bearer
  - HTTP bearer

Close an accounting period with optional close level (soft, hard, audited).

        **Advisory Checklist**: Returns checklist with warnings/issues but does not block closing.
        **Close Levels**:
        - soft_closed: Allows changes with warning
        - hard_closed: Prevents changes (default)
        - audited: Immutable period

## Path parameters

- `period_id` string, uuid, required

## Request body

- PeriodCloseRequest: Serializer for closing a period
  - `closed_by` string
  - `reason` string

## Response `200`

- PeriodCloseResponse: Serializer for period close response (period + checklist)
  - `period` AccountingPeriod, required: Full accounting period serializer for list and detail views
    - `id` string, uuid, required
    - `business_id` string, uuid, required
    - `year` integer, required
    - `month` integer, required
    - `period_name` string, required
    - `status` string, required
    - `start_date` string, date, required
    - `end_date` string, date, required
    - `is_locked` boolean, required
    - `allows_changes` boolean, required
    - `requires_override` boolean, required
    - `closed_at` string, date-time, nullable, required
    - `closed_by` string, required
    - `created_at` string, date-time, required
    - `updated_at` string, date-time, required
  - `checklist` PeriodCloseChecklist, required: Serializer for period close checklist response
    - `period_id` string, uuid, required
    - `period_name` string, required
    - `can_close` boolean, required
    - `checks` CheckDetail[], required
      - `name` string, required
      - `category` string, required
      - `status` string, required
      - `message` string, required
      - `details` unknown, required
    - `warnings` string[], required
    - `blockers` string[], required
    - `note` string, required
    - `summary` object, required

## Other responses

- `400`: Validation errors in request data
- `401`: Authentication required - missing or invalid API key
- `403`: Permission denied - insufficient privileges
- `404`: Resource not found
- `409`: Conflict - resource already exists or invalid state transition
- `422`: Unprocessable entity - business logic validation failed
- `500`: Internal server error

---

[API](https://skmtc.dev/thredfi/apis/thredfi-accounting-platform-api.md) - [All operations](https://skmtc.dev/thredfi/apis/thredfi-accounting-platform-api/llms.txt) - [OpenAPI document](https://skmtc.dev/thredfi/apis/thredfi-accounting-platform-api/revisions/0c1918254db3?raw)
