Last reviewed: 2026-06-16
Posting and Reversal
Purpose
Posting and reversal define how accounting records become durable and how corrections are managed.
Canonical rules
- Posting creates durable accounting records.
- Posting must respect period status.
- Posting must flow through one central posting path.
- Posting policy enforcement is centralized.
- No screen, import, background task, close workflow, or feature-specific component may write ledger effects directly.
- The posting path must enforce balanced entries, valid posting accounts, effective dates, period status, source requirements, attribution, and idempotency where applicable.
- Formal accounting reports derive from the canonical ledger, not from workflow support tables.
- Reversal should preserve the original entry relationship.
- Adjustments should explain their reason and source.
User implications
- Users can post transactions when the period is open.
- Reversals and adjustments should be documented with reasons.
Developer implications
- Enforce period checks inside the posting path.
- Track relationships between original and reversal entries.
- Require explanations for adjustments.
- Keep posting rules independent of UI, import, close, and report implementation details.
- Let feature workflows prepare posting requests, but require the accounting posting path to accept or reject them.
Related contracts
../contracts/kernel.contract.md../contracts/journal-entry.contract.md../contracts/account.contract.md
Related documentation
../../user/period-close.md