Subscription Management: In sechs Schritten zur einfachen Abrechnung von flexiblen Tarifmodellen
Immer häufiger entscheiden sich Kunden bei der Nutzung digitaler Dienste gegen einen einmaligen Kauf und stattdessen für ein Modell, bei dem die tatsächliche Nutzung im Vordergrund steht – und dementsprechend auch nur diese abgerechnet wird. Häufig wird auch ein Subscription (d.h. Abo-) Modell gewählt. Viele Unternehmen reagieren darauf und bieten ihre Dienstleistungen und Produkte vermehrt über flexible Nutzungs- und Preismodelle an. So haben wir in den letzten zehn Jahren einen regelrechten Boom in diesem Bereich erlebt: Netflix, Amazon Prime, Uber, Spotify oder Salesforce sind hier einige prominente Beispiele.
Doch auch viele Unternehmen aus eher traditionellen Branchen, die man nicht direkt mit Abos in Verbindung bringen würde, stellen auf solche Modelle um. Beispielsweise verleihen Maschinenhersteller ihre Geräte an Kunden und berechnen lediglich deren Nutzung (Pay per Use). Auch Automobilhersteller investieren in Mobilitätsdienstleistungen wie Carsharing und nicht mehr nur in den reinen Autoverkauf. Auch diese Dienstleistungen werden typischerweise in einem Pay per Use oder Abo-Modell angeboten.
Dank Subcription Management lassen sich Pay per Use- oder Abo-Modelle einfach abrechnen
Wir haben bei doubleSlash in Kundenprojekten die Erfahrung gemacht, dass sehr viel Aufwand betrieben wird, um die bestehende IT-Infrastruktur dahingehend zu befähigen, damit diese für das Angebot und die Abrechnung digitaler Dienste in einem Pay per Use- oder Subscription-Modell genutzt werden kann.
Doch es geht auch mit weniger Aufwand. Denn es gibt moderne Subscription Management Systeme, die sich mit überschaubarem Aufwand in die bestehende IT-Infrastruktur integrieren lassen.
Dieser Blogbeitrag zeigt am Beispiel des Billing und Payment Providers Stripe, wie einfach so eine Integration in wenigen Schritten umgesetzt werden kann.
Bei Stripe handelt es sich um eine 2011 gegründete Zahlungsplattform, die laut eigener Aussage speziell Entwickler anspricht. Das zeigt sich vor allem in der sehr guten Dokumentation und Bereitstellung der Entwicklungsschnittstellen (kurz APIs für Application Programming Interfaces). Mittlerweile wurde das Stripe Portfolio, das ursprünglich ausschließlich einen Payment Service umfasste, um weitere Services, wie z.B. das Management von Subscriptions erweitert. Da es sich um einen „Software as a Service“ (kurz SaaS) Angebot handelt, bei dem die Plattform über definierte REST-Webservices angesprochen wird, ist keine lokale Installation von der Plattform notwendig.
Nachfolgend wird ein Überblick gegeben, welche Schritte notwendig sind, um mit Stripe Subscriptions zu erstellen und abzurechnen.
Abbildung 1 – In 6 Schritten zur Abrechnung von Subscriptions
Anmerkung: im Folgenden werden lediglich relative Pfade für die REST-Webservices angegeben. Der Basispfad ist in allen Fällen https://api.stripe.com
1. Registrierung bei Stripe
Zunächst registriert sich der Nutzer bei Stripe und legt einen Account an. Das Unternehmen, das seine Dienste über Stripe abrechnen möchte, wird bei Stripe als Buinsess Partner bezeichnet. Hierfür stellt Stripe ein Portal für Business Partner bereit.
Stripe stellt dann automatisch die API-Keys für ihre Live- und Test-Umgebung zur Verfügung.
2. Kunde anlegen
Über den folgenden Endpunkt kann dann ein Kundenaccount angelegt werden, für den eine Subscription abgerechnet werden soll.
Relativer Pfad | /v1/customers |
HTTP Methode | POST |
Anfrageparameter | Beschreibung |
description | Beliebige Zeichenkette, die an ein Kundenobjekt angehängt werden kann. Die Beschreibung wird zum Kunden im Dashboard angezeigt. |
E-Mail-Adresse des Kunden, die zum Kunden im Dashboard angezeigt wird und für die Suche sowie zur Nachverfolgung hilfreich sein kann. |
Antwort | Beschreibung |
Customer object | Das zurückgegebene Objekt enthält Infos über Abonnements, Rabatte und Bezahlmethoden (z.B. Kreditkarte) zum Kunden. |
3. Kreditkarte anlegen und mit Kunde verknüpfen
In einem weiteren Schritt muss eine Zahlungsmethode hinterlegt und diese mit einem zuvor angelegten Kunden verknüpft werden.
Kreditkarte anlegen
Über den folgenden REST-Endpunkt kann eine Kreditkarte als Zahlungsmethode hinterlegt werden, die in Form eines Tokens beim jeweiligen Client abgespeichert wird.
Der Vorteil: Der Kunde muss sich nicht für die Speicherung von Kreditkarten zertifizieren lassen.
Relativer Pfad | /v1/tokens |
HTTP Methode | POST |
Anfrageparameter | Beschreibung |
card.number | Kreditkartennummer des Kunden. |
card.exp_month | Zweistellige Zahl, die den Verfallsmonat der Karte angibt. |
card.exp_year | Zwei- oder vierstellige Zahl, die das Ablaufjahr der Karte angibt. |
card.cvc | Sicherheitscode der Karte. |
Antwort | Beschreibung |
Token object | Neu erstellter Token passend der Kreditkarte. |
Source Object anlegen
Um die Kreditkarte mit dem zuvor angelegten Kunden zu verknüpfen ist ein sog. Source Object notwendig.
Relativer Pfad | /v1/sources |
HTTP Methode | POST |
In folgendem Fall soll eine Kreditkarte als zukünftige Zahlungsmethode des Kunden verwendet werden. Es wäre jedoch genauso möglich auch einmalige Zahlungsmittel, wie etwa Vouchers, anzulegen.
Anfrageparameter | Beschreibung |
type = card | Typ der zu erstellenden Source (z.B. Kreditkarte). |
token | Kreditkartentoken |
usage = reusable | „reusable“ gibt an, ob diese Source (Kreditkarte) wiederverwendbar sein soll oder nicht. |
Antwort | Beschreibung |
Source object | Das zurückgegebene Objekt enthält Infos über neue erstellte Kreditkarte. |
Source mit dem Kunden verknüpfen
Abschließend muss die Source mit dem Kunden verknüpft werden:
Relativer Pfad | /v1/customers/{customerID} |
HTTP Methode | POST |
Anfrageparameter | Beschreibung |
SourceID | Die ID der Source (z.B. Kreditkarte), die verknüpft werden soll. |
Antwort | Beschreibung |
Source Object | Es wird das angehängte Sourceobjekt zusammen mit der Kunden ID zurückgegeben. |
Da es sich um die erste angelegte Zahlungsmethode handelt, wird sie auch direkt als Standard-Zahlungsmethode für den Kunden hinterlegt. D.h. falls bei einem Payment-Vorgang nicht explizit eine Bezahlmethode genannt wird, wird automatisch diese verwendet.
4. Tarif definieren
Nachdem nun der Kunde angelegt und mit einer Zahlungsmethode verknüpft ist, muss ein Tarif definiert werden, der beim Kunden abgerechnet werden soll:
Relativer Pfad | /v1/plans |
HTTP Methode | POST |
Anfrageparameter | Beschreibung |
product.id | ID des Produkts, für das das Abonnement erstellt wird. |
currency | ISO-Währungscode mit drei Buchstaben in Kleinbuchstaben. |
amount | Zu zahlender Betrag |
interval | Die Abrechnungsfrequenz (z.B. Tag, Woche, Monat oder Jahr). |
Antwort | Beschreibung |
Plan object | Das Objekt enthält alle, dem Plan zugehörige Attribute (z.B. Status, Währung, Betrag, Intervall). |
5. Subscription für den Kunden erstellen
Abschließend muss lediglich noch die eigentliche Subscription für den Kunden erstellt werden.
Relativer Pfad | /v1/subscriptions |
HTTP Methode | POST |
Anfrageparameter | Beschreibung |
customer id | |
collection_method= charge_automatically | Stripe wird versuchen, dieses Abonnement am Ende des Zyklus mit der hinterlegten Standardzahlungsmethode abzurechnen. |
items | Liste der abzurechnenden Positionen, die jeweils mit einer beigefügten Plan ID versehen sind. |
Antwort | Beschreibung |
Subscription object | Das neu erstellte Abonnement mit den entsprechenden Attributen. |
Intern wird bei Stripe nun für den Kunden eine Subscription inklusive SubscriptionItem angelegt.
In Abhängigkeit des im Tarifmodell (Plan) definierten Intervalls wird durch Stripe nun automatisch die Rechnungsstellung angestoßen.
In einem Dashboard kann der Kunde von Stripe den Status nachverfolgen.
6. Rechnungsdaten abrufen
Selbstverständlich ist es mit Stripe auch möglich, die Rechnungsdaten für jeden Kunden abzurufen.
Relativer Pfad | /v1/invoices |
HTTP Methode | POST |
Anfrageparameter | Beschreibung |
CustomerID | Mit der übergebenen Kundennummer werden nur die Rechnungen für diesen Kunden abgerufen. |
Antwort | Beschreibung |
Invoice object | Das zurückgegebene Objekt enthält alle zur Kundennummer gehörenden Rechnungen, welche nach dem Erstellungsdatum sortiert sind. |
Fazit: Integration von Subscription Management Lösungen spart Zeit und Geld
Stripe macht es seinen Kunden durch eine moderne API mit einer hilfreichen Dokumentation sehr leicht ihre Plattform für die Abwicklung von Abrechnungen und Zahlungen anzubinden. Da die Bereitstellung der Plattform von Stripe über die Cloud erfolgt, entfällt die Installation in der Infrastruktur des Kunden. Im Vergleich zu aufwändigen Anpassungen bei den existierenden traditionellen Abrechnungssystemen der Kunden spart dies Zeit und Geld. Anbieter anderer Subscription Management Systeme sind diesem Ansatz bereits gefolgt oder werden dies in nicht allzu ferner Zukunft nachholen.
Was gilt es bei der Auswahl eines Subscription Management Systems zu beachten? Hier kostenloses Whitepaper herunterladen
Quellen:
- Bachelor Thesis „Konzept zur Anbindung von Service Providern an einem Connected Bike Backend“, 2018, Myriam Müller
- API Docs Stripe: https://stripe.com/docs/api