Today we discovered something new about how KashFlow handles bank transactions, invoice/receipts, and advance payments. We thought that adding a payment to an invoice/receipt would create the bank transaction with the ID of the customer/supplier the invoice/receipt is for. Unfortunately, this is not the case.
However, when creating a new bank transaction of type credit/debit control and linking it against a customer/supplier, it retains the correct ID and it is filterable in KashDroid. Adding this transaction to an invoice/receipt as an Advance Payment then removes the ID of the customer/supplier again.
This effectively nukes the ability to filter bank transactions via customer/supplier.
This is not the end though, as adding a payment to an invoice/receipt, or adding an Advance Payment, adds the invoice/receipt number to the note field of the bank transaction. Using this, KashDroid can display the invoice/receipt the transaction is linked against.
The note field is user-editable, so a user could remove the only link that KashDroid could use. KashFlow’s internal API supplies the invoice/receipt ID, but they do not expose this via the public soap API.