Fatturazione SaaS con un merchant of record: piani, prove, addebiti a consumo e webhook
Skalp può fatturare il tuo SaaS come merchant of record. La tua app apre un checkout di abbonamento, Skalp incassa, aggiunge l'IVA del paese del cliente ed emette ogni fattura, e i webhook firmati tengono aggiornato il tuo database. Il consumo oltre il piano va sulla stessa carta.
Piani
Ogni piano è un prodotto addebitato ogni settimana, mese o anno, con una prova facoltativa fino a 14 giorni. I prezzi sono netti e nella valuta del tuo negozio. Puoi anche dare a un piano un prezzo tondo in un massimo di altre tre valute per i clienti in Polonia, nell'area euro, negli Stati Uniti e in Brasile.
Aprire il checkout
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 la stessa chiamata è skalp.subscriptions.createCheckout(...). Il cliente paga sulla pagina di Skalp, quindi la tua app non mostra mai un modulo per la carta. Un'azienda UE può inserire lì la sua partita IVA e compra con inversione contabile. ExternalRef torna in ogni evento dell'abbonamento, così non devi salvare gli id di Skalp prima del primo pagamento.
Webhook per tutto il ciclo di vita
| Evento | Quando arriva |
subscription.created | L'abbonamento è partito. |
subscription.renewed | Un periodo è stato pagato. Contiene l'id della fattura, l'importo e la nuova data di fine. |
subscription.past_due | Un rinnovo non è andato a buon fine. Contiene il numero di tentativi e il prossimo. |
subscription.updated | Qualcosa è cambiato, per esempio il piano o una disdetta prevista a fine periodo. |
subscription.canceled | Il piano è finito. Contiene cancelReason. |
subscription.refunded, subscription.disputed | Un pagamento è stato rimborsato, o la banca del cliente ha aperto una contestazione. |
Ogni richiesta ha una firma HMAC-SHA256 nell'header Skalp-Signature. skalp.webhooks.constructEvent in Node e client.ConstructEvent in Go la verificano e rifiutano gli invii più vecchi di cinque minuti.
Cambi di piano e disdette
subscriptions.changePlan sposta un cliente su un altro piano e ripartisce la differenza in proporzione. subscriptions.cancel chiude il piano alla fine del periodo pagato, quindi il cliente mantiene l'accesso fino ad allora.
Addebiti a consumo
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)
Gli addebiti a consumo vanno sulla carta salvata, nella valuta del tuo negozio. Lo stesso idempotencyKey restituisce sempre lo stesso addebito, quindi puoi ritentare dopo un timeout o un errore 5xx senza addebitare due volte. Ogni abbonamento ha un tetto giornaliero di addebiti a consumo, che il supporto di Skalp può alzare.
Pagamenti non riusciti
Quando un rinnovo non va a buon fine, il cliente riceve una fattura aperta che può pagare con qualsiasi carta, e quella carta viene usata per i rinnovi successivi. Tu ricevi subscription.past_due e puoi mostrare un avviso nella tua app finché non arriva subscription.renewed.
Fatture, coupon e tasse
Skalp emette una fattura PDF per ogni pagamento con l'IVA del paese del cliente, e subscriptions.listInvoices te le restituisce per la tua pagina di fatturazione. I coupon di un piano possono valere sul primo pagamento, per un certo numero di mesi o per tutto l'abbonamento.
Domande frequenti
A nome di chi è la fattura?
Di Skalp. Skalp è il merchant of record, quindi vende il piano al tuo cliente e paga a te la tua quota.
Posso tenere la mia pagina dei prezzi?
Sì. La tua pagina dei prezzi chiama l'API e manda il cliente al checkout che riceve.
Il cliente ha bisogno di un account Skalp?
No. I clienti che arrivano dall'API gestiscono l'abbonamento con un codice ricevuto via email.
Quanto costa?
Il 10% di ogni pagamento, o il 7% quando le tue vendite degli ultimi 30 giorni superano i 20.000 $, con l'elaborazione dei pagamenti inclusa e senza canone mensile.