-
Notifications
You must be signed in to change notification settings - Fork 83
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add structured ISO-11649 creditor references for EUR bank transactions #1292
Conversation
…nces Conflicts: poetry.lock
…ubset) bankref field
… structured creditor reference from the bankref; this should allow existing transaction-matching logic to function as-is
It seems that most of the relevant details (IBAN, recipient name, reference) are displayed in close proximity to the EPC QR already -- so maybe we don't need this. However we should display the full creditor reference in relevant invoices -- not only the shorter 8-char The formatting helper that we use when displaying bankrefs in invoices would reformat, for example, a creditor reference of |
This comment was marked as resolved.
This comment was marked as resolved.
… creditor reference prefix + check digits when they appear following a word boundary (this includes '*')
I feel like we should keep bankref separate from creditor reference, and change the label to something like "reference for manual entry". We could show the creditor reference for EUR payments, to prevent people wondering where it is, but I don't see why it shouldn't basically be the invoice number. If that's going to lead to more confusion (I don't know what the various EU bank payment forms might look like), we can just exclude R and F from the start of the bankref, i.e. change this to:
This should probably be |
FWIW, I've played around with generating EPC codes at https://www.qr-code-generator.com/solutions/epc-qr-code/ and the Revolut app ignores the IBAN for GB, because it switches the form to sort code/account number mode. I'm a bit concerned this might be why other apps aren't processing the QR codes, and we might be setting ourselves up for more of a headache than it's worth. |
We don't use Barclays any more, and at any rate SEPA references have significantly longer field limit than BACS references, so length isn't an issue. |
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as resolved.
This comment was marked as resolved.
… headers Accompanying test coverage is provided, and in particular this intends to demonstrate that the string 'RF' followed by two digits is valid _within_ generated references.
A recording of the recently-added EPC QR explainer tooltip in action: epc-qr-explainer.webm |
…e that it is unexpanded by default
…nces Conflicts: poetry.lock (resolved using 'poetry lock --no-update')
We had a report that our payment reference didn't work when sending a payment from a Dutch bank, because it was expecting a reference in a standard format. (I think it's likely that there was a separate description field where our reference would have worked, but this proved a useful test case.) I manually generated an ISO-11649 reference ( So that has conveniently validated whether this works on the banking side - although the reference does come through in a slightly interesting format, which wasn't auto-reconciled currently. I was previously a little concerned about how this would work in practice, but I'm fairly happy now that we should move to using ISO-11649 references, at least for Euro payments. |
Thanks @russss - that's great to have confirmed. To handle the additional reference-format encountered: perhaps we could check whether the |
I wouldn't guarantee that the format will always be the same, although I'd hope it's the case, so I think we should still assume that it can appear anywhere in the reference field. I have a few more comments which I'll put inline, but I'm inclined to get this merged soonish now. |
… structured references will be received in valid, non-print format
…nces Conflicts: poetry.lock
…r filtering, as intended
…ion that structured references will be received in valid, non-print format" This reverts commit 25ebe92.
The lack of structured ISO-11649 creditor references seems to be at least one potential/likely reason why many SEPA-QR enabled banking applications failed to parse our QR codes during testing in #875.
There are a few more todos here:
Payment.id
(sequence) orBankPayment.bankref
to derive the creditor reference. (answer: preferbankref
; it is already a subset of the base36 charset available for use with ISO-11649, and is randomised, which is probably a property that's better to keep than to discard)bank-transfer
template; expand that on-click, and provide an info/help icon with a hover-over explanation text alongside (regardless of expanded/collapsed state).Resolves #878.