Help → Report Bug (fills in system info automatically) docs.kde.org

VIOLETA ESPINOZA violeta270932 at gmail.com
Sun Dec 21 13:46:13 GMT 2025


Below is a *formal, ready-to-submit bug report* for *KMyMoney*.
Bug Report: Reconciliation fails with bank-side card movements + CC payment
+ partial reimbursement

*Product:* KMyMoney
*Component:* Reconciliation / Transaction Matching / Transfers
*Severity:* Major (incorrect reconciliation result)
*Reproducibility:* Always (with provided data)
*Account types involved:* Bank + Credit Card (CCard)
------------------------------
Summary

Reconciliation reports an incorrect balance difference when a bank account
contains:

   1.

   A *credit card payment (bank → credit card transfer)*
   2.

   A *bank-side card settlement movement* (same card)
   3.

   A *partial reimbursement/refund*
   4.

   A *credit card charge recorded on the previous day*

Even though all transactions are correct and balanced, KMyMoney reports a
non-zero reconciliation difference.

Other finance applications reconcile the same data correctly.
------------------------------
Description

KMyMoney fails to reconcile a bank account when the following conditions
occur together:

   -

   A credit card charge is recorded in a *CCard account* on day *N*
   -

   A payment from a *Bank account to that CCard account* occurs on day *N+1*
   -

   The Bank account also contains a *bank-side card movement* related to
   the same card
   -

   A *partial reimbursement/refund* occurs on the same day in the Bank
   account
   -

   Amounts are symmetrical (e.g. 36 / 18)

The reconciliation engine appears to apply matching in an order-dependent
way and does not re-evaluate transfer consistency after automatic matching
of opposite-signed transactions.

This leads to an incorrect reconciliation difference even though the ledger
is balanced.
------------------------------
Steps to Reproduce (minimal, deterministic) 1. Create accounts

   -

   Bank account: INTERBANK SOLES
   -

   Credit card account: TARJETA OH PLAZA VEA (type: CCard)

------------------------------
2. Enter credit card charge (previous day)

*Account:* TARJETA OH PLAZA VEA
*Date:* 2025-12-19

Payee: Inversiones Heng Xin DaAmount: -36Category: Dining Out

------------------------------
3. Enter bank-side card movement

*Account:* INTERBANK SOLES
*Date:* 2025-12-20

Payee: Tarjeta Oh. Op 176627534426854Amount: -18

------------------------------
4. Enter partial reimbursement

*Account:* INTERBANK SOLES
*Date:* 2025-12-20

Payee: Pago pollo a la brasa de AlejandroAmount: +18Category: Devolucion

------------------------------
5. Enter credit card payment

*Account:* INTERBANK SOLES
*Date:* 2025-12-20

Payee: Op 31380092Amount: -36
Transfer to: TARJETA OH PLAZA VEA

------------------------------
6. Reconcile INTERBANK SOLES
------------------------------
Expected Result

   -

   Reconciliation completes successfully
   -

   Reconciliation difference = *0.00*
   -

   Ledger remains balanced

------------------------------
Actual Result

   -

   Reconciliation reports a *non-zero difference* (e.g. –18.00)
   -

   User is forced to manually re-enter or reorder transactions
   -

   Manual re-entry of the same data resolves the issue

------------------------------
Analysis / Suspected Cause

   -

   Automatic matching of +18 / –18 occurs *before* transfer consistency is
   validated
   -

   Transfer resolution is not re-run after matching
   -

   Bank-side card movements are treated ambiguously when a CCard payment
   exists
   -

   Reconciliation result depends on transaction creation order

This appears to be a *state-order dependency bug* in reconciliation logic
involving Bank ↔ CCard interactions.
------------------------------
Why this is a bug (not user error)

   -

   All transactions are valid and correctly modeled
   -

   Transfer is explicit and uses a real CCard account
   -

   Same modeling works correctly in many other cases
   -

   Failure only occurs with this specific but realistic combination
   -

   Manual re-entry (changing order only) fixes the issue

------------------------------
Suggested Fix (high-level)

One or more of the following:

   1.

   Re-evaluate transfer consistency *after* auto-matching
   2.

   Delay matching when a linked CCard payment exists
   3.

   Improve handling of bank-side card movements related to CCard accounts
   4.

   Make reconciliation order-independent

------------------------------
Workaround

   -

   Manually re-enter transactions in a different order
   -

   Or manually convert bank-side card movements into explicit transfers
   before reconciliation

This is error-prone and should not be required.
------------------------------
Attachments

   -

   QIF extract available (can be provided on request)

------------------------------

*Thank you for your work on KMyMoney. This issue affects real-world credit
card workflows and reconciliation reliability.*
------------------------------
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/kmymoney-devel/attachments/20251221/ca7262a1/attachment.htm>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 20-12.qif
Type: text/qif
Size: 1234 bytes
Desc: not available
URL: <http://mail.kde.org/pipermail/kmymoney-devel/attachments/20251221/ca7262a1/attachment.bin>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 19-12.qif
Type: text/qif
Size: 1249 bytes
Desc: not available
URL: <http://mail.kde.org/pipermail/kmymoney-devel/attachments/20251221/ca7262a1/attachment-0001.bin>


More information about the KMyMoney-devel mailing list