Apply Opening Balance
POST/api/ledger/opening-balance/apply
The opening balance is an INTERNAL journal entry seeding each GL account's position as of the tenant's books-start date — it is NEVER synced to the accounting provider (non-bypassable internal_only eligibility), which already holds these balances. The inventory line is derived from the valuation at end of day prior to the Inventory Start Date and snapshotted at apply time. Spec: docs/plans/ledger-opening-balance-entry.md.
Any valid API token can call this endpoint — no specific scope required. Manage tokens.
Authentication: Requires Bearer token + accounting.manage_settings.
Validates (as_of_date === Inventory Start Date; equity account present when lines don't balance; Inventory Control mapping set when valuation > 0; generation enabled), snapshots the derived inventory figure, and generates the entry through the standard outbox pipeline. The computed equity counter-line guarantees the entry balances.
Errors: 422 with field-specific messages for each failed precondition.
Request
Responses
- 200
- 401
- 403
- 422
- 429
OK
Response Headers
Unauthenticated — the bearer token is missing, revoked, expired, or malformed. Never retry automatically; fix the credential. See the Errors guide.
Forbidden — the token lacks a required scope, the endpoint is not available to API tokens, or the user behind the token lacks the permission. A human must adjust the token scopes or user permissions; do not retry.
Validation failed — the body is a field → messages map (Laravel shape) or the platform envelope with a stable machine-readable code. Fix the payload and resubmit.
Rate limited — platform limit is 1,000 requests/min; individual tokens may carry lower limits. Honor the Retry-After header before retrying. See the Rate Limits guide.