In diesem Blogbeitrag zeigen wir unseren Kreditkarten-Prozess mit Revolut und Bexio. Als junges Consulting Unternehmen wollen wir Wein predigen und auch Wein trinken hinsichtlich der Agilisierung und Digitalisierung der Gesellschaft. Willkommen in einer technischen Runde.
Als junges Unternehmen können wir von den modernsten Lösungen profitieren. Wir haben keinen Host, keine Altlasten, keine politischen oder strukturellen Konflikte, welche Innovationen verhindern. Digitalisierung bedeutet Software. Software hat heute eine beinahe ungeheuerliche gesellschaftliche Verantwortung, so auch jüngst Uncle Bob im heise developer. Geschickte Software kann ganze Industrien revolutionieren.
Wir waren zuvor unzufrieden mit unserem Kreditkarten-Prozess. Der Ablauf war ungefähr so:
Der Prozess war zäh. Er stockte bereits bei der Belegtransferierung. Allerspätestens war der Prozess-Token bei der Bankkonto-Abstimmung verloren. Die nicht abgestimmten Kreditkarten-Abbuchungen häuften sich. Niemand war zufrieden. Ich war persönlich sehr unzufrieden. Mittlerweile habe ich dank Bexio gelernt, dass die Abstimmerei zwischen Kreditkarten-Abbuchung und den einzelnen Aufwendungen mit einem (virtuellen) Kassenkonto für die Kreditkarte vereinfacht hätte werden können. So oder so blieb ein unbefriedigender manueller Restaufwand.
Glücklicherweise können wir unser ERP Bexio mit einer API fernsteuern. Bexio hat die API branchenüblich dokumentiert. Mit einem API-Schlüssel können wir alles tun, was die Weboberfläche auch kann. So muss es sein.
Allerdings ist unsere Hausbank nicht konkurrenzfähig. Sie hat keine API für Kreditkarten-Transaktionen. Das habe ich ehrlich gesagt auch nicht erwartet. Durch einen Tipp eines Kunden haben wir von Revolut erfahren. Denn Revolut besitzt eine branchenübliche API und hat sie zweckmässig beschrieben. Perfekt, das hat mich ermutigt.
Für alltägliche Integrationen wie zwischen Slack, HubSpot, Eventbrite und Bexio nutzen wir bereits Zapier. Zapier hat einen Revolut Trigger für neue Transaktionen, also für Karteneinsätze. Allerdings hat Bexio keine Aktion, um eine neue Aufwendung zu erfassen. Schade. Ausserdem sind Mappings in Zapier machbar (tun wir auch für z. B. Eventbrite), aber mühsam und kompliziert.
Eine Basisanforderung war für mich die Integration in Slack. Mit Slack möchte ich den ganzen Prozess überwachen und notfalls eingreifen, z. B. Transaktionen nochmals ins Bexio exportieren oder stornieren. Ich wollte für unsere Anwendung keine gesonderte Weboberfläche entwickeln, sondern in Slack einbetten. Mit dieser Basisanforderung ist Zapier überfordert.
Als originaler IREB Requirements Engineer habe ich natürlich klassische Spezifikationstechniken genutzt, um mein Verständnis über die Software zu schärfen. Unter anderem ist eine kleine Sequenzskizze entstanden, welche den Prozess veranschaulicht.
Die Software habe ich in Python programmiert. Mit Python habe ich bereits für unseren Scrum spielerisch programmierend Workshop experimentiert. Die Software kann komplett via Slack Befehle gesteuert werden. Ein Script auf einem Server triggert periodisch eine Synchronisation. Die Software ist sowohl lokal wie auch irgendwo auf der Cloud lauffähig. Sie hat eine kleine Persistenz, die den Zustand jeder Revolut-Transaktion protokolliert. Als Entwicklungsumgebung verwende ich JetBrains PyCharm, für die Versionierung GitHub. Jede Funktion ist mit Unittests abgedeckt, ganz konsequent mit TDD bin ich aber nicht vorgegangen.
Die Software hat folgende Kernfunktionen:
Im Slack-Kontext hat die Software folgende Funktionen:
Die dots sind sehr zufrieden mit der Lösung. Adrian Christen beispielsweise hat die Lösung in LinkedIn erwähnt. Die Lösung verschlankt den Kreditkarten-Prozess enorm. Die Stunden, die ich in die Programmierung, ins Testing und Debugging investiert habe, sind mittlerweile wieder eingespart. Ich will aber noch beobachten, ob der flotte und flüssige Kreditkarten-Prozess die Spesenmenge an sich beeinflusst. Die Software persistiert sicherheitshalber die wichtigsten Daten zu jeder Transaktion, welche über Funktionen wie z. B. ermittleSpesenkönig ausgewertet werden können.
Eine Software ohne API, ein Produkt ohne API ist kein Produkt. Ich glaube, dass mittelfristig jedes Produkt eine API braucht. Auch der Staat, die Verwaltung brauchen eine API, Banken, Versicherungen und Spitäler und so weiter ohnehin. Wer keine API hat, verliert.