24.11.2025
So verarbeitet meine App automatisch SEPA Überweisungen
Meine App wird hauptsächlich von deutschsprachigen Nutzerinnen verwendet. Diese bezahlen im Voraus. Ich biete Zahlungen per PayPal, Stripe und SEPA-Überweisung an. SEPA-Überweisungen automatisch zu verarbeiten ist eigentlich recht simpel. So mache ich das:
AqBanking ist ein robustes Tool, um Umsätze via HBCI/FinTS von einem deutschen Bankkonto abzufragen und kann ganz einfach unter Linux installiert werden:
apt install aqbanking-tools
Die Einrichtung ist zugegebenermaßen nicht super einfach, aber kriegt man mit dem Handbuch von AqBanking auch irgendwie hin:
aqhbci-tool4 adduser -t pintan --context=1 -b $BLZ -u $BENUTZERKENNUNG -c $KUNDENNUMMER -s $FINTS_SERVER_DER_BANK -N "$NAME" --hbciversion=300
aqhbci-tool4 listusers
aqhbci-tool4 getsysid -u 1
aqhbci-tool4 listitanmodes -u 1
aqhbci-tool4 setitanmode -u 1 -m $ID_DES_TANMODES_VOM_VORHERIGEN_SCHRITT
Dann sollte die PIN in einer Datei abgelegt werden, damit man die Umsätze per Cronjob abrufen kann:
aqhbci-tool4 mkpinlist > ~/.aqbanking/settings/plist
Diese Datei anschließend bearbeiten und die PIN eintragen:
nano ~/.aqbanking/settings/plist
Nun können die Umsätze abgerufen und in einer Kontext-Datei abgespeichert werden:
aqbanking-cli -P ~/.aqbanking/settings/plist request -A $IBAN -c 2025-11-24.ctx --transactions --fromdate=20251124
Und so können die Transaktionen aus der Kontext-Datei in ein simples tab-separiertes Format umgewandelt werden:
aqbanking-cli listtrans -c 2025-11-24.ctx
Das sieht dann z. B. so aus:
24.11.2025 14.99 <BLZ> <Kto> <Name> <IBAN> <Verwendungszweck>
24.11.2025 39.99 <BLZ> <Kto> <Name> <IBAN> <Verwendungszweck>
Diese Daten schickt man nun per cURL an den Server, der fürs Account-Management zuständig ist und fertig ist die Kiste. Das Ganze noch etwas in ein nettes Wrapper-Skript verpackt, das die Überweisungen der letzten 1-2 Tage abruft und prüft, ob diese schon an den Server übermittelt wurden.
Weitere Tipps:
-
Verwendungszweck = Unique Rechnungs-ID für diesen Nutzer. Wenn der Nutzer die Zahlungsart auswählt, zeigt man diese Rechnungs-ID an und fordert den Nutzer dazu auf, diese als Verwendungszweck anzugeben. Alternativ kann man auch einen simplen EPC-QR-Code generieren, damit der Nutzer den richtigen Betrag und Verwendungszweck automatisch per Fotoüberweisung übernehmen kann.
In seltenen Fällen machen Nutzer Tippfehler und senden eine falsche Rechnungsnummer, die dann keinem Account zugeordnet werden kann. Erfahrungsgemäß melden diese sich jedoch früher oder später, so dass man das Problem beheben kann.
-
Auf dem Server sollten Überweisungen ignoriert werden, die innerhalb der letzten Tage bereits verarbeitet wurden, um doppelte Account-Verlängerungen zu verhindern.
-
Achtung: Ich muss etwa alle 3 Monate meinen Login über
aqbanking-climanuell bestätigen. Das Skript sollte automatisch überwacht werden, ob Überweisungen überhaupt abgefragt werden oder ob es bei der Bestätigung des Zertifikats hängen bleibt.
Bei mir läuft dieses simple System mit relativ geringfügigen Anpassungen seit rund 15 Jahren im Produktiveinsatz.