# BankStatementLine

## Description

BankStatementLine records one bank-reported account movement. It materializes the current bank-reconciliation state separately from any document lifecycle status, while BankReconciliation and BankReconciliationItem remain the immutable history.

## Domain Model Definitions

### Model type

Stateful

### Command Definitions

- [createBankStatement](../command/CreateBankStatement.md) - Create the line under an imported statement

### Query Definitions

- None

### Models

- BankStatementLine

### Invariants

- `amount` is positive
- `flowDirection` is CREDIT for money in or DEBIT for money out
- `reconciliationStatus` is UNRECONCILED or RECONCILED and is separate from document lifecycle status
- `currentBankReconciliationId` is null when UNRECONCILED and identifies the single effective reconciliation group when RECONCILED
- A reconciliation item for a statement line always uses the line's full `amount`

### Relationships

- Belongs to BankStatement
- Optionally references its single current BankReconciliation
- Participates logically in BankReconciliation through `sourceType = BANK_STATEMENT_LINE` and `sourceId = id`
