Skip to content

Support SEPA instant payment status request (HKIPS/HIIPS/HIIPSS) - #604

Open
fds2610 wants to merge 1 commit into
nemiah:masterfrom
fds2610:instant-payment-status
Open

fds2610 wants to merge 1 commit into
nemiah:masterfrom
fds2610:instant-payment-status

Conversation

@fds2610

@fds2610 fds2610 commented Oct 29, 2026 •

Copy link
Copy Markdown
Contributor

Fixes #600

When the payee's bank does not answer in time, the bank confirms the TAN of an instant payment (HKIPZ) with code 3045 ("no status yet") instead of 0010/0020. SendSEPARealtimeTransfer then threw

Bank did not confirm SEPATransfer execution

although the order had been accepted. comdirect does this regularly, even for transfers to an own account at another bank.

Changes

  • SendSEPARealtimeTransfer: reads the Auftragsidentifikation and the status from HIIPZ and treats 3045 as "status pending" instead of failing.
  • New action GetSEPARealtimeTransferStatus (HKIPS v1) to request the final status, with the segments HKIPSv1, HIIPSv1, HIIPSSv1 and their parameter DEG. getMinimumWaitingTime() exposes the Mindestwartezeit from HIIPSS, so callers know how long to wait before asking.
  • New Tests/Unit/Integration/DKB/SendSEPARealtimeTransferTest (executed directly; pending, then executed via HKIPS; BPD parsing).

Testing

Full PHPUnit suite passes on current master. PHPStan reports no new errors for the changed files (master itself currently has some unrelated ones). php-cs-fixer is clean.

I ran it against real banks: comdirect answered the HKIPZ with 3045; HKIPS (no TAN needed) after the minimum waiting time of 99 s returned status 7 (executed). DKB announces HIIPSS with a waiting time of 5 s.

This is (partly) generated code and I as human vouch for it's correctness.
I am using this code in my own repo. If something breaks, i'll fix it. Greets, Felix

@fds2610 fds2610 closed this Oct 29, 2026
@fds2610 fds2610 reopened this Nov 2, 2026
When the payee's bank does not answer in time, the bank confirms the TAN
of an instant payment (HKIPZ) with code 3045 instead of 0010/0020.
SendSEPARealtimeTransfer threw 'Bank did not confirm SEPATransfer
execution' although the order was accepted.

- SendSEPARealtimeTransfer: read the Auftragsidentifikation and status
  from HIIPZ, treat 3045 as 'status pending' instead of failing.
- New action GetSEPARealtimeTransferStatus (HKIPS v1) to request the
  final status, plus HIIPS/HIIPSS segments. getMinimumWaitingTime()
  exposes the Mindestwartezeit from HIIPSS.

Fixes nemiah#600
@fds2610
fds2610 force-pushed the instant-payment-status branch from 0950802 to 6689970 Compare November 2, 2026 08:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

SendSEPARealtimeTransfer: bank answers 3045 ("no status yet") after TAN, action throws "Bank did not confirm SEPATransfer execution"

1 participant