Create GL close run
POST/finance/gl-close-runs
Initiates a new general-ledger close run for the specified accounting period. The run starts in 'prepared' status; call the period lock endpoint to advance it to 'locked' once all checks pass.
Request
Request body
Content type application/json (required).
| Field | Type | Required | Description |
|---|---|---|---|
period | string | Yes | Accounting period identifier in YYYY-MM format (e.g. "2026-03"). Max length: 24 |
checks_json | string | No | JSON-encoded array of pre-close check results. Each item should include a 'name' and 'passed' boolean field. |
notes | string | No | Free-text notes recorded against this close run. |
Example
{
"period": "2026-03",
"checks_json": "[{\"name\":\"unposted_journals\",\"passed\":true},{\"name\":\"bank_rec_complete\",\"passed\":true}]",
"notes": "Q1 close — all checks passed."
}
Responses
302 Redirect to the finance ops index after successful creation
422 Validation error — period is required and must be a string ≤ 24 chars
Content type application/json, any.
Example
{
"errors": {
"period": [
"The period field is required."
]
}
}
Example request
curl -X POST "https://{tenant}.faciotech.net/api/v1/finance/gl-close-runs" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"period": "2026-03", "checks_json": "[{\"name\":\"unposted_journals\",\"passed\":true},{\"name\":\"bank_rec_complete\",\"passed\":true}]", "notes": "Q1 close — all checks passed."}'