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.