La fatturazione basata sui posti addebita ai clienti un importo determinato dal numero di utenti presenti nel loro account. Dodo Payments la implementa utilizzando il sistema degli add-on: un prodotto in abbonamento di base più un add-on per posto, la cui quantità rappresenta il numero di posti.
Implementation Tutorial
Guida passo dopo passo con esempi di codice.
Add-ons Documentation
Scopri il sistema di componenti aggiuntivi che alimenta la fatturazione basata sui posti.
Subscription Management
Gestisci abbonamenti basati sui posti e modifiche dei piani.
Webhooks
Traccia i cambiamenti dei posti con i webhook delle sottoscrizioni.
Cos’è la Fatturazione Basata sui Posti?
La fatturazione basata sui posti addebita ai clienti un importo in base al numero di utenti che accedono al tuo prodotto. Invece di una tariffa fissa, il prezzo varia in base alle dimensioni del team.Casi d’Uso Comuni
Vantaggi della Tariffazione Basata sui Posti
Per la tua attività:- I ricavi crescono insieme ai clienti
- I clienti possono prevedere i costi con maggiore facilità
- Percorso di upgrade chiaro: da singolo utente a team fino all’enterprise
- Maggiore valore nel tempo man mano che i team si espandono
- Pagano solo per gli utenti che hanno
- Costi facili da comprendere e prevedere
- Possono aggiungere o rimuovere utenti secondo necessità
- Prezzi equi, proporzionati alle dimensioni del team
Come funziona
Dodo Payments implementa la fatturazione basata sui posti utilizzando il sistema degli Add-on. Un abbonamento basato sui posti è composto da due parti:
Il totale mensile del cliente è:
Strategie di Prezzo
Scegli la strategia di prezzo basata sui posti che si adatta alla tua azienda:Strategia 1: Base + Add-on per Posto
Includi un numero fisso di posti nel piano base, addebita per i posti aggiuntivi.Strategia 2: prezzo esclusivamente per posto
Addebita una tariffa fissa per posto senza costi di base.Strategia 3: prezzo a livelli per posto
Piani di base diversi con tariffe per posto diverse.Strategia 4: pacchetti di posti
Vendi i posti in pacchetti anziché singolarmente.Configurazione della fatturazione basata sui posti
Passaggio 1: pianifica i prezzi
Prima dell’implementazione, definisci la tua struttura dei prezzi:1
Define Base Plan
Decidi cosa è incluso nell’abbonamento base:
- Prezzo base (può essere $0 per un modello puramente basato sui posti)
- Numero di posti inclusi
- Funzionalità disponibili in questo livello
2
Set Seat Pricing
Determina il costo dell’add-on per posto:
- Prezzo per ogni posto aggiuntivo
- Eventuali sconti sui volumi (tramite più add-on)
- Numero massimo di posti consentiti (se applicabile)
3
Consider Billing Frequency
Allinea il prezzo per posto al ciclo di fatturazione:
- Abbonamenti mensili → addebiti mensili per i posti
- Abbonamenti annuali → addebiti annuali per i posti (spesso scontati)
Passaggio 2: crea l’add-on per posto
Nel dashboard di Dodo Payments:- Vai a Products → Add-Ons
- Fai clic su Create Add-On
- Configura l’add-on:
Passaggio 3: crea l’abbonamento di base
Crea il prodotto in abbonamento:- Vai a Products → Create Product
- Seleziona Subscription
- Configura prezzi e dettagli
- Nella sezione Add-Ons, collega il tuo add-on per posto
Passaggio 4: collega l’add-on al prodotto
Collega l’add-on per posto al tuo abbonamento:- Modifica il prodotto in abbonamento
- Scorri fino alla sezione Add-Ons
- Fai clic su Add Add-Ons
- Seleziona l’add-on per posto
- Salva le modifiche
Il tuo prodotto in abbonamento ora supporta i prezzi basati sui posti. I clienti possono acquistare qualsiasi quantità di posti aggiuntivi durante il checkout.
Gestione dei posti
Aggiunta di posti a nuovi abbonamenti
Quando crei una sessione di checkout, specifica la quantità di posti:Modifica del numero di posti negli abbonamenti esistenti
Utilizza la Change Plan API per modificare il numero di posti. L’arrayaddons imposta il numero totale nuovo di posti (non la differenza).
Rimozione di posti
Per ridurre il numero di posti, specifica la quantità inferiore:Rimozione di tutti i posti aggiuntivi
Passa un arrayaddons vuoto per rimuovere tutti gli add-on:
Proration per le modifiche ai posti
Quando una modifica ai posti viene applicata a metà ciclo, Dodo Payments calcola l’addebito immediato in tre passaggi:Come accredita ogni modalità
Con
difference_immediately, il cliente paga solo la differenza tra il prezzo del vecchio piano e quello del nuovo piano. Da qui deriva il nome, ed è per questo che l’importo è lo stesso indipendentemente dal momento del ciclo in cui viene effettuata la modifica.
Se il credito è superiore all’addebito del nuovo ciclo, la differenza viene conservata come credito associato all’abbonamento e applicata automaticamente ai rinnovi futuri.
Esempio completo: aggiunta di 5 posti
Uno scenario analizzato con tutte e quattro le modalità, così da poter confrontare direttamente i numeri.
In tutte e tre le modalità immediate, il cliente riceve un mese nuovo completo a $130 in cambio di ciò che paga oggi.
Perché la tempistica è importante per prorated_immediately
La stessa modifica costa di più quanto più tardi viene effettuata nel ciclo, perché rimane meno tempo del ciclo corrente da riaccreditare.
Il cliente riceve un mese nuovo completo in ogni riga. Cambia solo la ripartizione tra ciò che è “già stato pagato” e ciò che viene “pagato ora”.
Per fare in modo che una modifica ai posti abbia lo stesso costo indipendentemente dal momento in cui viene effettuata, utilizza
difference_immediately.
Esempio completo: l‘“addebito sorprendente”
Questo è il caso che sorprende più spesso i merchant. Aggiungere un piccolo add-on per posto alla fine del ciclo può produrre un addebito molto superiore al prezzo dell’add-on.
L’aggiunta di un posto da $10/mese costa $55.00 con
prorated_immediately. Al cliente viene addebitato un mese nuovo completo a $60 e vengono accreditati i $5 rimasti del vecchio mese; la data di rinnovo viene reimpostata.
Per fare in modo che le piccole aggiunte a metà ciclo costino esattamente il prezzo del posto, senza altro, utilizza difference_immediately.
Esempio completo: rimozione di posti (downgrade)
Quando il nuovo piano costa meno del credito, l’eccedenza viene conservata come credito dell’abbonamento e applicata automaticamente ai rinnovi futuri di questo abbonamento. Non viene aggiunta al Customer Wallet e non è un credito.Il credito copre l’intero abbonamento, il piano base e tutti gli add-on, non solo i posti che vengono rimossi.
Lettura della risposta di anteprima
previewChangePlan restituisce le voci esatte che verranno fatturate. Ogni voce contiene un proration_factor:
La proration viene calcolata al secondo, in base all’ora esatta della modifica, senza arrotondare al giorno più vicino. Gli esempi completi precedenti utilizzano numeri arrotondati ai confini del giorno per maggiore chiarezza.
Anteprima prima della modifica
Visualizza sempre in anteprima la proration prima di apportare modifiche:Monitoraggio dei posti con i webhook
Monitora le modifiche ai posti ascoltando i webhook degli abbonamenti:Eventi rilevanti
Esempio di handler per webhook
Applicazione dei limiti sui posti
La tua applicazione deve applicare i limiti sui posti. Dodo Payments tiene traccia della fatturazione, ma sei tu a controllare l’accesso.- Hard Limit
- Soft Limit with Warning
- Auto-Upgrade
Impedisci rigorosamente di aggiungere utenti oltre il numero di posti.
Modelli avanzati
Tipi diversi di posto
Offri diversi tipi di posto con prezzi differenti:Sconti annuali sui posti
Offri prezzi annuali scontati per i posti:Requisiti minimi di posti
Richiedi un numero minimo di posti per determinati piani:Best practice
Best practice per i prezzi
- Comunicazione chiara: mostra in modo evidente il prezzo per posto nella pagina dei prezzi
- Posti inclusi: valuta di includere alcuni posti nel prezzo di base per ridurre l’attrito
- Sconti sui volumi: offri tariffe per posto inferiori ai team più grandi per aggiudicarti contratti enterprise
- Incentivi annuali: applica sconti ai piani annuali per migliorare il flusso di cassa e la fidelizzazione
Best practice tecniche
- Memorizza nella cache il numero di posti: memorizza localmente il numero di posti dell’abbonamento per evitare chiamate API a ogni richiesta
- Sincronizza regolarmente: sincronizza periodicamente il numero locale di posti con Dodo Payments tramite API
- Gestisci gli errori: se una modifica ai posti non riesce, mostra messaggi di errore chiari e opzioni per riprovare
- Traccia di audit: registra tutte le modifiche ai posti per contestazioni di fatturazione e conformità
Best practice per l’esperienza utente
- Feedback in tempo reale: mostra immediatamente l’impatto sui costi quando si modifica il numero di posti
- Passaggi di conferma: richiedi una conferma prima di applicare modifiche alla fatturazione
- Trasparenza sul prorata: spiega chiaramente gli addebiti prorata prima di applicarli
- Downgrade semplici: non rendere difficile ridurre il numero di posti (rafforza la fiducia)
Risoluzione dei problemi
Seat count mismatch between app and billing
Seat count mismatch between app and billing
Sintomo: l’app mostra un numero di posti diverso da quello dell’abbonamento.Cause:
- Webhook non ricevuto o non elaborato
- Race condition durante la modifica dei posti
- Dati memorizzati nella cache non aggiornati
- Implementa handler webhook per
subscription.plan_changed - Aggiungi un pulsante “Sincronizza con la fatturazione” che recuperi l’abbonamento corrente
- Imposta il TTL della cache per garantire aggiornamenti regolari
Unexpected mid-cycle charge amount
Unexpected mid-cycle charge amount
Sintomo: il cliente è confuso dall’importo addebitato a metà ciclo.Causa: utilizzo di
prorated_immediately nella parte finale del ciclo di fatturazione (vedi l’esempio L’addebito sorprendente riportato sopra).Soluzioni:- Utilizza sempre
previewChangePlanprima di apportare modifiche - Mostra un riepilogo chiaro: “L’aggiunta di X posti costerà $Y oggi”
- Passa a
difference_immediatelyse vuoi che l’addebito corrisponda sempre alla differenza di prezzo
Add-on not appearing in checkout
Add-on not appearing in checkout
Sintomo: l’add-on per posto non è disponibile durante il checkout.Cause:
- Add-on non collegato al prodotto
- Add-on archiviato o eliminato
- Valuta diversa tra prodotto e add-on
- Verifica che l’add-on sia collegato nelle impostazioni del prodotto
- Controlla lo stato dell’add-on nel dashboard Add-Ons
- Assicurati che le valute corrispondano esattamente
Cannot reduce seats below current usage
Cannot reduce seats below current usage
Sintomo: il cliente vuole ridurre il numero di posti, ma vi sono utenti assegnati.Soluzioni:
- Mostra quali utenti devono essere rimossi prima di ridurre i posti
- Implementa un flusso di lavoro: rimuovi utenti → riduci posti
- Valuta un periodo di tolleranza prima di applicare la riduzione dei posti
Documentazione correlata
Seat-Based Pricing Tutorial
Guida completa all’implementazione con codice.
Add-ons
Comprendi a fondo il sistema degli add-on.
Plan Changes & Proration
Gestisci le modifiche agli abbonamenti.
Subscription Webhooks
Monitora gli eventi degli abbonamenti.