From 419ac7d2227be7c7e5a5d897493b2684d2afde17 Mon Sep 17 00:00:00 2001 From: Kolja Date: Mon, 22 Dec 2025 16:25:30 +0100 Subject: [PATCH 1/2] support 3945 response despite exact vop match --- docs/transfers.rst | 4 ++++ fints/client.py | 3 ++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/docs/transfers.rst b/docs/transfers.rst index 343cf83..3ab0d68 100644 --- a/docs/transfers.rst +++ b/docs/transfers.rst @@ -79,6 +79,10 @@ Full example tan = input('Please enter TAN:') res = client.send_tan(res, tan) elif isinstance(res, NeedVOPResponse): + if res.vop_result.vop_single_result.result == "RCVC": + print("Payee name is an exact match") + if res.vop_result.vop_single_result.other_identification: + print("Other info retrieved by bank:", res.vop_result.vop_single_result.other_identification) if res.vop_result.vop_single_result.result == "RVMC": print("Payee name is a close match") print("Name retrieved by bank:", res.vop_result.vop_single_result.close_match_name) diff --git a/fints/client.py b/fints/client.py index bde901f..cc84f22 100644 --- a/fints/client.py +++ b/fints/client.py @@ -1455,7 +1455,8 @@ def _send_pay_with_possible_retry(self, dialog, command_seg, resume_func): hivpp = response.find_segment_first(HIVPP1, throw=True) vop_result = hivpp.vop_single_result - if vop_result.result in ('RVNA', 'RVNM', 'RVMC'): # Not Applicable, No Match, Close Match + # Not Applicable, No Match, Close Match, or exact match but still requires confirmation + if vop_result.result in ('RVNA', 'RVNM', 'RVMC') or (vop_result.result == 'RCVC' and '3945' in [res.code for res in response.responses(tan_seg)]): return NeedVOPResponse( vop_result=hivpp, command_seg=command_seg, From 4bf7ef672705f0dd980b019a12b945da15f4cdfe Mon Sep 17 00:00:00 2001 From: Kolja Date: Mon, 22 Dec 2025 17:24:25 +0100 Subject: [PATCH 2/2] replace if by elif --- docs/transfers.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/transfers.rst b/docs/transfers.rst index 3ab0d68..c2e20c2 100644 --- a/docs/transfers.rst +++ b/docs/transfers.rst @@ -83,7 +83,7 @@ Full example print("Payee name is an exact match") if res.vop_result.vop_single_result.other_identification: print("Other info retrieved by bank:", res.vop_result.vop_single_result.other_identification) - if res.vop_result.vop_single_result.result == "RVMC": + elif res.vop_result.vop_single_result.result == "RVMC": print("Payee name is a close match") print("Name retrieved by bank:", res.vop_result.vop_single_result.close_match_name) if res.vop_result.vop_single_result.other_identification: