mirror of
https://github.com/actualbudget/actual.git
synced 2026-07-15 22:54:03 -05:00
[GH-ISSUE #4069] [Bug]: QFX amounts are lumped together in Amount column despite having distinct positive and negative values #50854
Closed
opened 2026-04-30 16:36:35 -05:00 by GiteaMirror
·
7 comments
No Branch/Tag Specified
master
dependabot/npm_and_yarn/npm_and_yarn-cd62b4b37a
enforce-append-only-migrations-ci
claude/error-codes-worker-boundary-26i5uu
api-browser-custom-data-dir
tabedzki/feat/replacing-month-picker-with-day-picker
delay-initial-sync-until-loaded
jfdoming/mobile-app-build
cross-version-sync-compat
jfdoming/api-tokens-part-1
jfdoming/api-tokens-part-2
jfdoming/api-tokens-part-3
jfdoming/mobile-app-updates
claude/budget-version-migration-compat-151jlr
claude/worker-error-serialization-9iqtl7
claude/react-table-library-research-afx83z
claude/issue-8401-regression-test-9nw9l3
jfdoming/mobile-app-foundation-part-1
jfdoming/mobile-app-scaffold
release
ai-fix-cleanup-def-8290
claude/relaxed-shannon-jusywa
claude/fervent-keller-s6f2fq
claude/determined-feynman-st1y9z
claude/wizardly-einstein-vi2wce
claude/sweet-albattani-7nseio
feat/bank-sync-per-budget-file
claude/affectionate-cannon-y0kc82
claude/dependabot-findings-m9pgmb
claude/mac-app-ios-publish-zjs1lz
claude/vigilant-tesla-aiiyos
depot-migrate-secrets-1781296330308
claude/quirky-cerf-v5qck7
claude/animation-removal-alternative-2etfh1
claude/netlify-preview-comments-consolidate-9XPYa
osc/7391-error-boundaries-reports
claude/pensive-dijkstra-7DYui
claude/server-app-version-mismatch-HTCGv
claude/pr-8027-review-feedback-mELuO
claude/zealous-wozniak-e5pO0
claude/intelligent-heisenberg-BSHJq
claude/translation-download-refactor-jFRsO
claude/mobile-performance-ideas-G9PAO
claude/github-issue-7988-5A5ly
blacksmith-migration-ff70d2d
claude/great-mayer-KRvOk
claude/react-native-ios-compilation-fcJh5
claude/serene-goldberg-58xv0
claude/kind-euler-LVG3K
release-automation/edge-nightly
7710-bundle-migrations
claude/fix-docker-build-error-WMfed
claude/llm-compatible-release-notes-t20Nr
7710-tests-tdd
cursor/transaction-table-rewrite-f077
claude/plan-ci-secure-context-OtEe1
claude/fix-issue-7667-DPXi3
cursor/resolve-pr-7449-ee11
claude/fix-typescript-build-error-JPtZ5
copilot/add-repository-configs-to-packages
worktree-compressed-drifting-ritchie
claude/api-consumer-verification-kfz1K
pr-7454
claude/fix-issue-7410-LLLQ4
revert-7281-generate-icons
react-query-useSchedules
copilot/sub-pr-6140
package-upgrades
v26.7.0
v26.6.0
v26.5.2
v26.5.1
v26.5.0
v26.4.0
v26.3.0
v26.2.1
v26.2.0
v26.1.0
v25.12.0
v25.11.0
v25.10.0
v25.9.0
v25.8.0
v25.7.1
v25.7.0
v25.6.1
v25.6.0
v25.5.0
v25.4.0
v25.3.1
v25.3.0
v25.2.1
v25.2.0
v25.1.0
v24.12.0
v24.11.0
v24.10.1
v24.10.0
v24.9.0
v24.8.0
v24.7.0
v24.6.0
v24.5.0
v24.4.0
v24.3.0
v24.2.0
v24.1.0
v23.12.0
v23.11.0
v23.10.0
v23.9.0
v23.8.1
v23.8.0
v23.7.2
v23.7.1
v23.7.0
v23.6.0
v23.5.0
v23.4.2
v23.4.1
v23.4.0
v23.3.2
v23.3.0
v23.2.9
v23.2.5
v23.1.12
v22.12.9
Labels
Clear labels
AI generated
API
bank sync
budgeting
bug
can’t replicate
dependencies
docker
documentation
electron
experimental feature
feature
feedback
goal templates
good first issue
help wanted
importers
maintenance
needs info
needs testing
needs triage
needs votes
openid
payees
pull-request
regression
reports
responsive
rules
schedules
server
✨ merged
split transactions
tech debt
tech-support
theme
transaction import
transaction reconciliation
transactions
translations
upstream
user interface
✅ approved
wontfix
Mirrored from GitHub Pull Request
No Label
bug
Milestone
No items
No Milestone
Projects
Clear projects
No project
No Assignees
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: github-starred/actual#50854
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @bverkron on GitHub (Jan 2, 2025).
Original GitHub issue: https://github.com/actualbudget/actual/issues/4069
Verified issue does not already exist?
What happened?
When attempting to import a QFX file from my credit card company Actual Budget lumps all the values, regardless if they're positive or negative, into an "Amount" column. If I complete the import like this all the credit card charges go into the deposit column instead of the payment column and are treated as payments on the credit card instead of charges.
I am not intimately familiar with the QFX file format but I can see in the file that the transactions have positive values for payments and negative values for charges and are marked as Debit or Credit so not sure why this isn't picked up by AB and put into the Amount columns.
Have tried Safari and Brave, same behaviour.
How can we reproduce the issue?
Try to import this file...
credit_card_sample.qfx.zip
Example snippet...
Should see results like this...

Where are you hosting Actual?
Docker
What browsers are you seeing the problem on?
Chrome, Safari
Operating System
Mac OSX
@jx34tech commented on GitHub (Jan 11, 2025):
I just want to add that I have seen this bug the same way (pulled via docker) for myself, Every file format shown in this way except for QIF, that appeared to import the data correctly
@matt-fidd commented on GitHub (Jan 30, 2025):
I can't seem to replicate this on edge, has it been fixed?
https://github.com/user-attachments/assets/49ce8530-64e8-40b9-8b46-a0007a7da465
@bverkron commented on GitHub (Feb 3, 2025):
Strange it's working for your. I just tried edge and I get the same behaviour as described originally. Everything goes into the Amount column as a positive value, both with the attached sample file and a fresh file from my credit card company.
Tried wiping all cache in my browser as well. No change. Tried Safari and Brave (basically Chrome) on macOS.
Not sure how to better check the version of Actual I'm running. The UI just says 25.1.0 but says nothing about edge or finer versions.
@langelgjm commented on GitHub (Feb 12, 2025):
Confirming I see the same issue on version 25.2.1 on Mac OS, installed from a DMG I downloaded today. My credit card company provides a QFX export with negative numbers for debits and positive for credits, but when imported into Actual, both negative and positive amounts appears in the "Deposit" column, so that debits look like credits.
In both the sample provided in this bug report and my data file, the OFX file has DATA:OFXSGML and VERSION:102 headers, so it is an older version of the OFX standard. In contrast my bank provides a QFX file that's version 202 and uses XML, and when I import the XML-based QFX file debits and credits show up correctly.
In packages/loot-core/src/server/accounts/ofx2json.ts I can see that SGML-based OFX data is first converted to XML before being parsed, but I didn't see anything obvious that would cause the sign of the transaction to be lost. I don't have a proper development environment set up yet but would be happy to dig into this further.
@langelgjm commented on GitHub (Feb 13, 2025):
Upon further research, the only way I can reproduce this issue is with the following steps:
This suggests to me the issue has nothing to do with OFX parsing. Instead, it seems that having chosen to previously use an "in/out identifier" is affecting how amounts are read from subsequent imports.
I'm attaching a sample CSV file that contains the same transactions as the sample QFX.
I confirmed the issue is present in the current repo code built with Docker Compose.
credit_card_sample.csv
@bverkron commented on GitHub (Feb 13, 2025):
Great find @langelgjm.
I can confirm that recently I have been using .csv imports with this account because my bank was going through some changes and was only providing .csv as an option (though they had other formats before). So, this could very well be the cause of the issue for me too. Will try to confirm when I have time but I think it’s very likely the case for me.
@langelgjm commented on GitHub (Feb 14, 2025):
I opened #4382 which checks to see if the file being imported is an OFX file, and if so, ignores the "inOutMode" which is CSV-specific, and it resolves the issue for me locally. Not sure if this should also check for CAMT files.