# What changed in mt-940

> 28 changes in mt-940 5 from its official release notes, upgrade guides and advisories: 1 breaking, 11 new APIs and options. Each one cited. Sources checked 2026-10-29. HTML: https://unstale.sh/pypi/mt-940/

To see which of these apply to a repository, run `npx @unstale/cli init` in it.

## mt-940 5

### Breaking changes

- parse() and parse_statements() no longer pass options=None to a Transactions subclass with the 5.0.0 constructor. (5.1.1) — [release notes](https://github.com/wolph/mt940/releases/tag/v5.1.1)

### New APIs and options

- Enables `?31` to be parsed into its own field again; the parsing fix is opt-in. (5.1.0) — [release notes](https://github.com/wolph/mt940/releases/tag/v5.1.0)
- Enables case-insensitive mark parsing; the parsing fix is opt-in. (5.1.0) — [release notes](https://github.com/wolph/mt940/releases/tag/v5.1.0)
- Enables the floor-limit blank-mark parsing fix; it is opt-in. (5.1.0) — [release notes](https://github.com/wolph/mt940/releases/tag/v5.1.0)
- Enables the GVC leading-text parsing fix; it is opt-in. (5.1.0) — [release notes](https://github.com/wolph/mt940/releases/tag/v5.1.0)
- Prevents a structured `:86:` from nulling the `:61:` customer reference; the parsing fix is opt-in. (5.1.0) — [release notes](https://github.com/wolph/mt940/releases/tag/v5.1.0)
- Enables parsing of non-SWIFT free text; the parsing fix is opt-in. (5.1.0) — [release notes](https://github.com/wolph/mt940/releases/tag/v5.1.0)
- Makes `RC` negative; the parsing fix is opt-in. (5.1.0) — [release notes](https://github.com/wolph/mt940/releases/tag/v5.1.0)
- Enables BOM stripping; the parsing fix is opt-in. (5.1.0) — [release notes](https://github.com/wolph/mt940/releases/tag/v5.1.0)
- Reads `:13D:` offsets as hours and minutes; the parsing fix is opt-in. (5.1.0) — [release notes](https://github.com/wolph/mt940/releases/tag/v5.1.0)
- Removes the 585-character cap on `:86:`; the parsing fix is opt-in. (5.1.0) — [release notes](https://github.com/wolph/mt940/releases/tag/v5.1.0)
- Switches on all parsing fixes that are otherwise opt-in through `mt940.Options`. (5.1.0) — [release notes](https://github.com/wolph/mt940/releases/tag/v5.1.0)

### Tooling

- The source archive now includes the test suite, examples, documentation sources, and tool configuration, so tests can run from an sdist. (5.1.3) — [release notes](https://github.com/wolph/mt940/releases/tag/v5.1.3)
- The build requirement now allows every uv_build release from 0.11.0 up to, but not including, 1.0, letting packagers and python -m build users build with newer uv releases. (5.1.3) — [release notes](https://github.com/wolph/mt940/releases/tag/v5.1.3)

### Fixes and other changes

- One-shot transaction_boundary iterables are now applied to every statement, not just the first. (5.1.1) — [release notes](https://github.com/wolph/mt940/releases/tag/v5.1.1)
- Pickles written by 4.x now restore transaction_boundary, allowing parsing to work again. (5.1.1) — [release notes](https://github.com/wolph/mt940/releases/tag/v5.1.1)
- A subclass's own pattern retains its full capture instead of being cut back to the 585-character cap. (5.1.1) — [release notes](https://github.com/wolph/mt940/releases/tag/v5.1.1)
- Parsing no longer crashes when `:13:` has no offset or a negative offset. (5.1.0) — [release notes](https://github.com/wolph/mt940/releases/tag/v5.1.0)
- Parsing no longer crashes when `:13D:` has no offset or a negative offset. (5.1.0) — [release notes](https://github.com/wolph/mt940/releases/tag/v5.1.0)
- Two structured `:86:` tags on one `:61:` no longer crash with `None += str`. (5.1.0) — [release notes](https://github.com/wolph/mt940/releases/tag/v5.1.0)
- `Amount` instances are hashable. (5.1.0) — [release notes](https://github.com/wolph/mt940/releases/tag/v5.1.0)
- `Balance` instances are hashable. (5.1.0) — [release notes](https://github.com/wolph/mt940/releases/tag/v5.1.0)
- Free-form lines in `:NS:` values no longer abort parsing with `re.error`. (5.1.0) — [release notes](https://github.com/wolph/mt940/releases/tag/v5.1.0)
- Accepts file descriptors as sources again, raises `TypeError` for unsupported sources, and raises `FileNotFoundError` for missing path-like sources. (5.1.0) — [release notes](https://github.com/wolph/mt940/releases/tag/v5.1.0)
- Python 3.14 is supported. (5.1.0) — [release notes](https://github.com/wolph/mt940/releases/tag/v5.1.0)
- `SumAmount` instances are hashable. (5.1.0) — [release notes](https://github.com/wolph/mt940/releases/tag/v5.1.0)
- Raises the documented `RuntimeError` for unmatched values instead of `re.error`. (5.1.0) — [release notes](https://github.com/wolph/mt940/releases/tag/v5.1.0)
- Returns `None` rather than raising when a balance has no amount. (5.1.0) — [release notes](https://github.com/wolph/mt940/releases/tag/v5.1.0)
