Skip to content

Diagram — State — Transaction Lifecycle

One user message → one ledger transfer → one path through this state machine. Soft voiding (compensating transfer) is terminal: the original row stays as-is with voided_by_transfer_id set; balances are restored by the compensating row’s own entries.



  • SRS section: SRS — Telegram Finance Bot §⚙️ Technical Behavior (Стани та переходи), §FR-PFIN-06
  • ADRs: ADR-0008 (DB-level invariants), ADR-0014 (ledger schema), ADR-0016 (void via compensating entries)