Skip to main content
POST
Finalize a statement

Description

Finalize statement Transitions the active Statement for (tenantUserId, periodStart..periodEnd) from draft to finalized. If no persisted draft row exists yet, one is first generated from the ledger (generateAndPersistStatement) then finalized. Appends a StatementStatusEvent to statusHistory and writes an explicit AuditLog row (Statement does not extend AuditableModel, so auto-audit hooks never fire here). Authorization:
  • Required role: admin or higher

Code Examples

Authorizations

Authorization
string
header
required

JWT Authorization header using the Bearer scheme. Format: "Bearer {token}"

Path Parameters

tenantUserId
string<uuid>
required
periodStart
string<date-time>
required
periodEnd
string<date-time>
required

Response

Statement finalized.

Every statements response wraps the payload in { status, message, data }. data carries the per-endpoint payload PLUS the per-tenant feature flag.

status
enum<string>
Available options:
success,
error
message
string
data
object

Response payload shared by the ITEM 2 lifecycle mutations (finalize, payments, adjustments, hold, resume, void, disputes): the updated Statement row, shaped via the same shapeForClient mapper as StatementRosterRow, plus ok: true. The underlying Sequelize row carries additional endpoint-specific detail (e.g. statusHistory) not exhaustively modeled here — treat this as the roster-row core.