SaaS-facturatie met een merchant of record: plannen, proefperiodes, verbruikskosten en webhooks
Skalp kan je SaaS factureren als merchant of record. Je app opent een abonnementscheckout, Skalp neemt de betaling aan, telt de btw van het land van de klant op en maakt elke factuur, en ondertekende webhooks houden je database bij. Verbruik boven het plan gaat op dezelfde kaart.
Plannen
Elk plan is een product dat per week, maand of jaar wordt gefactureerd, met een optionele proefperiode tot 14 dagen. Prijzen zijn netto en in de munt van je winkel. Je kunt een plan ook een ronde prijs geven in maximaal drie andere valuta voor klanten in Polen, de eurozone, de VS en Brazilië.
De checkout openen
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)
In Node heet dezelfde aanroep skalp.subscriptions.createCheckout(...). De klant betaalt op de pagina van Skalp, dus je app toont nooit een kaartformulier. Een bedrijf in de EU kan daar zijn btw-nummer invullen en koopt met verlegging. ExternalRef komt terug in elke gebeurtenis van het abonnement, zodat je vóór de eerste betaling geen Skalp-id's hoeft op te slaan.
Webhooks voor de hele levenscyclus
| Gebeurtenis | Wanneer die komt |
subscription.created | Het abonnement is gestart. |
subscription.renewed | Een periode is betaald. Bevat het factuur-id, het bedrag en de nieuwe einddatum. |
subscription.past_due | Een verlenging is mislukt. Bevat het aantal pogingen en de volgende. |
subscription.updated | Er is iets veranderd, bijvoorbeeld het plan of een opzegging aan het einde van de periode. |
subscription.canceled | Het plan is afgelopen. Bevat cancelReason. |
subscription.refunded, subscription.disputed | Een betaling is terugbetaald, of de bank van de klant heeft een geschil geopend. |
Elk verzoek heeft een HMAC-SHA256-handtekening in de header Skalp-Signature. skalp.webhooks.constructEvent in Node en client.ConstructEvent in Go controleren die en weigeren leveringen die ouder zijn dan vijf minuten.
Plan wijzigen en opzeggen
subscriptions.changePlan zet een klant over naar een ander plan en verrekent het verschil naar rato. subscriptions.cancel stopt het plan aan het einde van de betaalde periode, dus de klant houdt tot dan toegang.
Verbruikskosten
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)
Verbruikskosten worden in de munt van je winkel van de opgeslagen kaart afgeschreven. Dezelfde idempotencyKey geeft altijd dezelfde kosten terug, dus je kunt na een time-out of een 5xx opnieuw proberen zonder dubbel af te rekenen. Elk abonnement heeft een daglimiet voor verbruikskosten, die de support van Skalp kan verhogen.
Mislukte betalingen
Mislukt een verlenging, dan krijgt de klant een openstaande factuur die hij met elke kaart kan betalen, en die kaart wordt voor latere verlengingen gebruikt. Jij krijgt subscription.past_due en kunt in je app een melding tonen tot subscription.renewed binnenkomt.
Facturen, kortingscodes en belasting
Skalp maakt voor elke betaling een pdf-factuur met de btw van het land van de klant, en subscriptions.listInvoices geeft ze terug voor je factuurpagina. Kortingscodes op een plan kunnen gelden voor de eerste betaling, een aantal maanden of het hele abonnement.
Veelgestelde vragen
Wiens naam staat op de factuur?
Die van Skalp. Skalp is de merchant of record, dus Skalp verkoopt het plan aan je klant en betaalt jou je deel uit.
Kan ik mijn eigen prijspagina houden?
Ja. Je prijspagina roept de API aan en stuurt de klant naar de checkout die terugkomt.
Heeft de klant een Skalp-account nodig?
Nee. Klanten die via de API komen, beheren hun abonnement met een code die naar hun e-mail wordt gestuurd.
Wat kost het?
10% van elke betaling, of 7% zodra je verkopen van de afgelopen 30 dagen boven $20.000 komen, met betalingsverwerking inbegrepen en zonder maandkosten.