E-Payment Transaktionen

Vor ein paar Wochen hatte ich schon berichtet, dass Schleswig-Holstein alle E-Payment Transaktionen von Online-Diensten anonymisiert veröffentlicht. Das ist ein reichhaltiger Fundus, aus dem man viele Dinge ablesen kann. Ich habe mich mit den Parquet-Dateien und DuckDB auf die Suche begeben…

Zunächst braucht man alle Daten der Datensatzserie E-Payment Zahlungen. Am kleinsten und sehr bequem sind die Parquet-Dateien. Die lege ich alle in einem Ordner ab. Die Dateinamen sind schon gleich sehr praktisch vergeben. Nun kommt DuckDB ins Spiel, das Schweizer Taschenmesser der Datenauswertung. Ich starte DuckDB in dem Verzeichnis, in dem ich auch die Parquet-Dateien abgelegt haben. Dann kann ich nämlich direkt in diesen Dateien suchen.

SELECT count(*) FROM 'epayment*.parquet'; 

Aktuell sind es Daten zu 186.179 Transaktionen. Die Parquet-Dateien sind noch nicht optimal aufgebaut, manche Datentypen sind noch nicht richtig. Das wird aber noch nachgebessert. Daher ist es derzeit leider nicht gut möglich, mit den Beträgen zu rechnen.

Zeitlicher Verlauf

Schauen wir uns zunächst die Anzahl der Transaktionen pro Monat an:

SELECT right(Buchungsdatum, 4) AS jahr, substring(Buchungsdatum,4,2) AS monat, count(*) AS n 
  FROM 'epayment*.parquet' 
  GROUP by jahr, monat 
  ORDER BY jahr, monat;

Man sieht einen deutlichen Anstieg der Zahlen von Februar 2026 (9.880 Transaktionen) zu März 2026 (18.788 Transaktionen). Was war da los?

Schauen wir uns die am meisten verwendeten Dienste an diesen beiden Monaten an.

SELECT Bewirtschafter, count(*) n 
  FROM 'epayment*.parquet'  
  WHERE Buchungsdatum LIKE '__.02.2026' 
  GROUP BY Bewirtschafter 
  ORDER BY n DESC
  LIMIT 10

Im Februar sieht es so aus:

Dienst Transaktionen
KFZ 7137
FZA 1099
URK 617
GAN 422
VE 166
HYG 87
FAU 84
FUR 56
EHE 48
GKA 38

Und im März sind es diese Dienste:

Dienst Transaktionen
KFZ 9833
FZA 6706
URK 691
FUR 572
GAN 367
VE 157
FAU 129
HYG 128
BWP 46
EHE 31

Während es einen leichten Anstieg bei den KFZ gab, ist der ganz deutliche Anstieg bei der Fischerei (FZA) zu erkennen. Hier haben sich die Zahlen mehr als versechsfacht.

Zur Fischerei gehören insgesamt drei Dienste (FZA, FUR, FAU). Wenn wir uns die im Jahresverlauf ansehen, wird der Anstieg noch deutlicher:

SELECT Bewirtschafter, right(Buchungsdatum, 4) AS jahr, substring(Buchungsdatum,4,2) AS monat, count(*) AS n 
  FROM 'epayment*.parquet' 
  WHERE jahr = 2026 AND Bewirtschafter IN ('FZA','FAU','FUR')
  GROUP by Bewirtschafter, jahr, monat 
  ORDER BY Bewirtschafter, jahr, monat;

In einem Diagramm wird es wieder besonders gut deutlich:

Dass die Fischerei im März so stark zulegt, ist verständlich - schließlich beginnt dann auch die Saison für diverse Fischarten.

Gibt es einen ähnlichen saisonalen Verlauf auch für andere Dienste? Dies ist die Abfrage dazu:

SELECT
   right(Buchungsdatum, 4) AS jahr,
   substring(Buchungsdatum,4,2) AS monat,
   COUNT(*) FILTER (WHERE Bewirtschafter='KFZ') AS KFZ,
   COUNT(*) FILTER (WHERE Bewirtschafter IN ('FZA','FAU','FUR')) AS Fischerei,
   COUNT(*) FILTER (WHERE Bewirtschafter='GAN') AS GAN,
   COUNT(*) FILTER (WHERE Bewirtschafter='WKZ') AS WKZ,
   COUNT(*) FILTER (WHERE Bewirtschafter='VE') AS VE,
   COUNT(*) FILTER (WHERE Bewirtschafter='PTX') AS PTX,
   COUNT(*) FILTER (WHERE Bewirtschafter='BWP') AS BWP
FROM 'epayment*.parquet'
WHERE "Paypage Status" = 'INAKTIV'
GROUP BY jahr, monat
ORDER BY jahr, monat;

Hier ist das Diagramm für den KFZ-Dienst:

Es ist ein leichter Anstieg im März zu erkennen. Vielleicht werden bei schönem Wetter mehr Motorräder angemeldet?

Für die übrigen häufigsten Dienste ist der Verlauf hier zu sehen:

Der Dienst für die Wunschkennzeichen wurde offenbar im Mai 2025 eingestellt. Warum zwischen September 2025 und März 2026 keine Tickets verkauft wurden (Pretix) bekomme ich vielleicht noch heraus. Dass man sein Gewerbe online anmeldet, scheint langsam aber stetig zuzunehmen. Das Beantragen von Bewohner-Parkausweisen startete offenbar erst im März 2026 und erfreut sich seit dem einer steigenden Beliebtheit. Ihr habt vom Online-Beantragen von Bewohner-Parkausweisen noch nichts gehört? Dann wohnt ihr wohl nicht in Kiel. Denn bisher stammen alle Transaktionen von dort, wie diese einfache Abfrage verrät:

SELECT DISTINCT Mandant
 FROM 'epayment*.parquet'
 WHERE "Paypage Status" = 'INAKTIV'
   AND Bewirtschafter='BWP';

Abbruchquote

Man kann mit Hilfe der Daten auch die Abbruchquote bei den einzelnen Diensten untersuchen. Das ist aber ein wenig komplizierter. Zunächst muss man verstehen, dass die Zahlung dann erfolgreich war, wenn Paypage Status = INAKTIV ist. Das wirkt irgendwie falsch, ist aber eigentlich ganz logisch: die Bezahlseite ist nicht mehr aktiv, nachdem der Bezahlvorgang abgeschlossen wurde. Ist hingegen Paypage Status = AKTIV, ist der Vorgang nicht abgeschlossen worden, die Zahlung wurde also abgebrochen. Schauen wir uns dies bei den zehn häufigsten Diensten an:

SELECT
    Bewirtschafter,
    COUNT(*) FILTER (WHERE "Paypage Status" = 'AKTIV')   AS abgebrochen,
    COUNT(*) FILTER (WHERE "Paypage Status" = 'INAKTIV') AS erfolgreich,
    ROUND(
        COUNT(*) FILTER (WHERE "Paypage Status" = 'AKTIV') * 100.0 / COUNT(*)
    ) AS abbruch_quote
FROM '*.parquet'
GROUP BY Bewirtschafter
ORDER BY erfolgreich DESC
LIMIT 10;

Dies ist das Ergebnis für die zehn am häufigsten genutzten Dienste:

Dienst abgebrochen erfolgreich Abbruchquote
KFZ 15891 114923 12%
FZA 8151 19008 30%
URK 1235 3895 24%
GAN 1302 3450 27%
FUR 1285 2652 33%
WKZ 835 2507 25%
PTX 191 2099 8%
VE 358 2059 15%
BWP 53 1298 4%
E19 50 780 6%

Wie kommt es, dass die Quote bei den Fischereidiensten (FZA und FUR) so viel höher ist als bei dem KFZ-Dienst oder dem Kauf von Tickets? Vermutlich hat das mit der Auswahl an möglichen Zahlverfahren zu tun. Schauen wir uns die einmal an:

Zahlverfahren Anzahl Transaktionen
KREDITKARTE 80137
PAYPAL 75019
LASTSCHRIFTOHNE 35

Es gibt im Wesentlichen die Auswahl zwischen Kreditkarte und PayPal. Lastschrift wird nur in seltenen Spezialfällen eingesetzt. Aber von den 34 Diensten mit E-Payment ermöglichen 33 eine Zahlung per Kreditkarte, jedoch nur 27 eine Zahlung per PayPal:

SELECT 
  COUNT(DISTINCT Bewirtschafter) as alle,
  COUNT(DISTINCT Bewirtschafter) FILTER (WHERE Zahlverfahren='PAYPAL') AS PayPal, 
  COUNT(DISTINCT Bewirtschafter) FILTER (Zahlverfahren='KREDITKARTE') AS Kreditkarte
FROM 'epayment*.parquet' 
WHERE "Paypage Status" = 'INAKTIV';

Und genau die Fischereidienste gehören zu den Diensten, die nur eine Zahlung per Kreditkarte anbieten. Wenn man keine hat, muss man die Bezahlung an dieser Stelle abbrechen.

SELECT
  right(Buchungsdatum, 4) AS jahr, 
  substring(Buchungsdatum,4,2) AS monat, 
  COUNT(*) FILTER (WHERE Zahlverfahren='PAYPAL') AS PayPal, 
  COUNT(*) FILTER (WHERE Zahlverfahren='KREDITKARTE') AS Kreditkarte, 
FROM 'epayment*.parquet' 
WHERE "Paypage Status" = 'INAKTIV' 
  AND Zahlverfahren <> 'LASTSCHRIFTOHNE'
GROUP BY jahr, monat
ORDER BY jahr, monat;

Zahlung per PayPal

Wie viel wird eigentlich mit PayPal bezahlt? Um eine Verzerrung durch die oft genutzten Fischerei-Dienste zu verhindern, die gar keine Bezahlung via PayPal ermöglichen, habe ich mich auf den KFZ-Dienst beschränkt. Da dieser 70% aller Transaktionen ausmacht, ist es vermutlich eine sinnvolle Auswahl.

SELECT
   right(Buchungsdatum, 4) AS jahr,
   substring(Buchungsdatum,4,2) AS monat,
   COUNT(*) FILTER (WHERE Zahlverfahren='PAYPAL') AS PayPal,
   COUNT(*) FILTER (WHERE Zahlverfahren='KREDITKARTE') AS Kreditkarte,
FROM 'epayment*.parquet'
WHERE Bewirtschafter='KFZ' 
   AND "Paypage Status" = 'INAKTIV'
   AND Zahlverfahren <> 'LASTSCHRIFTOHNE'
GROUP BY jahr, monat
ORDER BY jahr, monat;

Hier das Ergebnis als Diagramm für die Jahre 2025 und Hälfte des Jahres 2026:

Bemerkenswert finde ich den Knick Anfang 2026. Ob das ein Ergebnis des Digital Independence Day ist? Auch wenn Kreditkarten keine europäische Alternative sind, könnte ich mir schon vorstellen, dass manche darauf gewechselt haben. Wirklich sichtbar wäre es aber erst, wenn Wero als europäische Zahlungsmöglichkeit angeboten werden würde.

Ausblick

Ich bin schon gespannt, wie es mit Online-Bezahlen von Verwaltungsleistungen weitergeht. Die 34 Dienste sind ja nur die Spitze des Eisberges. Wenn die Parquet-Dateien verbessert wurden, kann ich auch ein paar Auswertungen mit den gezahlten Beträgen erstellen. Bestimmt kann man auch interessante räumliche Auswertungen machen, schließlich enthält die Spalte Mandant ein Kürzel für die Kommune. Da fehlt aber noch die Erklärung der Kürzel - am besten direkt mit Amtlichem Gemeindeschlüssel bzw. Regionalschlüssel.

Habt ihr Ideen für weitere Untersuchungen mit den Daten? Wenn ihr sie selbst hinbekommt, teilt gerne die Ergebnisse. Wenn ihr nur eine Idee habt, schickt sie mir gerne, dann versuche ich mein Glück.

Kommentare

Mit einem Konto im Fediverse oder auf Mastodon kannst du auf diesen Beitrag antworten. Da Mastodon dezentral funktioniert, kannst du dein bestehendes Konto auf einem Mastodon-Server oder einer kompatiblen Plattform verwenden.

Nach einem Klick auf "Lade Kommentare" werden nicht-private Antworten vom Server norden.social geladen und unten angezeigt.

Wie das technisch funktioniert, kann man hier erfahren.