fix(qif): preserve transactions with repeated check references - #1
Draft
smitzo wants to merge 1 commit into
Draft
Conversation
smitzo
force-pushed
the
agent/fix-qif-reference-dedup
branch
from
August 10, 2026 05:58
29c24ae to
0959af4
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Ncheck/reference values in the raw record instead of exposing them as bank-assignedFITIDsNATMtransactions both survive normalizationRoot cause
QIF defines
Nas a check or reference value, not a guaranteed-unique downloaded transaction identifier. The parser storedNinTransaction.fitid, while the deduplication layer treats every non-empty FITID as authoritative. Repeated values such asATMorEFTcould therefore cause later, unrelated transactions to be silently discarded—even within one input statement.The QIF
Nvalue remains available inTransaction.rawfor traceability.Format evidence
Nfor non-investment transactions as the check or reference number.ATMare not unique transaction identifiers.Impact
Normalization no longer loses distinct QIF transactions merely because they share a check/reference value.
Compatibility
QIF JSON now reports
fitid: nullinstead of mislabelingNas a FITID. Python callers can still read the originalNvalue fromTransaction.raw. Introducing a new publicreferencefield is intentionally left outside this focused correctness fix.