SaaS-Abrechnung mit einem Merchant of Record: Pläne, Testphasen, Nutzungsgebühren und Webhooks
Skalp kann Ihr SaaS als Merchant of Record abrechnen. Ihre App öffnet einen Abo-Checkout, Skalp nimmt die Zahlung an, schlägt die Umsatzsteuer des Kundenlandes auf und stellt jede Rechnung aus, und signierte Webhooks halten Ihre Datenbank auf dem Stand der Zahlungen. Nutzung über den Plan hinaus geht auf dieselbe Karte.
Pläne
Jeder Plan ist ein Produkt, das wöchentlich, monatlich oder jährlich abgerechnet wird, auf Wunsch mit einer Testphase von bis zu 14 Tagen. Preise sind netto und in Ihrer Shopwährung. Sie können einem Plan außerdem einen runden Preis in bis zu drei weiteren Währungen für Kunden in Polen, im Euroraum, in den USA und in Brasilien geben.
Den Checkout öffnen
client := skalp.New(skalp.Options{})
session, err := client.CreateSubscriptionCheckout(ctx, skalp.CreateSubscriptionCheckoutParams{
ProductSlug: "pro-monthly",
ExternalRef: orgID,
ReturnURL: "https://app.example.com/billing?checkout=success",
})
if err != nil {
return err
}
http.Redirect(w, r, session.URL, http.StatusSeeOther)
Derselbe Aufruf heißt in Node skalp.subscriptions.createCheckout(...). Der Kunde zahlt auf der Seite von Skalp, Ihre App zeigt also nie ein Kartenformular. Ein Unternehmen in der EU kann dort seine USt-IdNr. eingeben und kauft im Reverse-Charge-Verfahren. ExternalRef kommt bei jedem Ereignis des Abos zurück, Sie müssen also keine Skalp-IDs vor der ersten Zahlung speichern.
Webhooks für den ganzen Lebenszyklus
| Ereignis | Wann es kommt |
subscription.created | Das Abo hat begonnen. |
subscription.renewed | Ein Zeitraum wurde bezahlt. Enthält die Rechnungs-ID, den Betrag und das neue Enddatum. |
subscription.past_due | Eine Verlängerung ist fehlgeschlagen. Enthält die Zahl der Versuche und den nächsten Termin. |
subscription.updated | Etwas hat sich geändert, etwa der Plan oder eine Kündigung zum Ende des Zeitraums. |
subscription.canceled | Der Plan ist beendet. Enthält cancelReason. |
subscription.refunded, subscription.disputed | Eine Zahlung wurde erstattet, oder die Bank des Kunden hat einen Streitfall eröffnet. |
Jede Anfrage trägt eine HMAC-SHA256-Signatur im Header Skalp-Signature. skalp.webhooks.constructEvent in Node und client.ConstructEvent in Go prüfen sie und lehnen Zustellungen ab, die älter als fünf Minuten sind.
Planwechsel und Kündigung
subscriptions.changePlan verschiebt einen Kunden in einen anderen Plan und verrechnet die Differenz anteilig. subscriptions.cancel beendet den Plan zum Ende des bezahlten Zeitraums, der Kunde behält den Zugang also bis dahin.
Nutzungsgebühren
const charge = await skalp.subscriptions.createUsageCharge(subscription.id, {
amount: 12.34,
currency: 'EUR',
description: 'Seats over the plan, September 2026',
idempotencyKey: `seats:${orgId}:2026-09`,
periodStart: new Date('2026-09-01T00:00:00Z'),
periodEnd: new Date('2026-10-01T00:00:00Z'),
})
if (charge.status === 'open') await sendPaymentLink(charge.hostedUrl)
Nutzungsgebühren werden in Ihrer Shopwährung von der hinterlegten Karte abgebucht. Derselbe idempotencyKey liefert immer dieselbe Gebühr, Sie können nach einem Timeout oder 5xx-Fehler also erneut senden, ohne doppelt abzubuchen. Jedes Abo hat eine tägliche Obergrenze für Nutzungsgebühren, die der Skalp-Support anheben kann.
Fehlgeschlagene Zahlungen
Schlägt eine Verlängerung fehl, bekommt der Kunde eine offene Rechnung, die er mit jeder Karte bezahlen kann, und diese Karte wird für spätere Verlängerungen genutzt. Sie erhalten subscription.past_due und können in Ihrer App einen Hinweis zeigen, bis subscription.renewed eintrifft.
Rechnungen, Gutscheine und Steuer
Skalp stellt für jede Zahlung eine PDF-Rechnung mit der Umsatzsteuer des Kundenlandes aus, und subscriptions.listInvoices liefert sie für Ihre Abrechnungsseite. Gutscheine für einen Plan können für die erste Zahlung, eine festgelegte Zahl von Monaten oder das ganze Abo gelten.
Häufige Fragen
Wessen Name steht auf der Rechnung?
Der von Skalp. Skalp ist der Merchant of Record, verkauft den Plan also an Ihren Kunden und zahlt Ihnen Ihren Anteil aus.
Kann ich meine eigene Preisseite behalten?
Ja. Ihre Preisseite ruft die API auf und schickt den Kunden zum zurückgegebenen Checkout.
Braucht der Kunde ein Skalp-Konto?
Nein. Kunden, die über die API kommen, verwalten ihr Abo mit einem Code, der an ihre E-Mail geht.
Was kostet das?
10 % jeder Zahlung, oder 7 %, sobald Ihr Umsatz der letzten 30 Tage 20.000 $ übersteigt, mit Zahlungsabwicklung inklusive und ohne Monatsgebühr.