# Transfer state machine

| State | Meaning |
| --- | --- |
| `draft` | Planned move; **no ledger effect**. |
| `approved` | Authorised / ready to execute. |
| `in_transit` | Reserved for **asynchronous** physical pipeline (carrier handoff separated from postings). Not used by the current synchronous pairing executor. |
| `completed` | Both `transfer_out` and `transfer_in` posted terminal success. |
| `cancelled` | Terminal abandonment from `draft` or `approved`; **never** executed. |

### Active synchronous path today

```
draft ──approve──► approved ──execute (atomic legs)──► completed
 │                      │
 └──────cancel──────────┴────────cancel────────────────► cancelled
```

`in_transit` remains defined for future split-posting workflows while keeping enums and audits forward-compatible.
