Skip to main content
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
Per i tuoi clienti:
  • 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 è:
Esempio: 8 posti aggiuntivi su un Team Plan

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.
Ideale per: prodotti in cui i piccoli team possono lavorare con l’offerta di base.

Strategia 2: prezzo esclusivamente per posto

Addebita una tariffa fissa per posto senza costi di base.
Implementazione: imposta il prezzo del piano base su $0 e utilizza solo l’add-on per posto. Ideale per: prezzi semplici e trasparenti.

Strategia 3: prezzo a livelli per posto

Piani di base diversi con tariffe per posto diverse.
Implementazione: crea prodotti separati per ogni livello, con prezzi diversi per gli add-on. Ideale per: incentivare il passaggio a livelli superiori; vendite enterprise.

Strategia 4: pacchetti di posti

Vendi i posti in pacchetti anziché singolarmente.
Implementazione: crea più add-on per diverse dimensioni di pacchetto. Ideale per: semplificare le decisioni di acquisto; incentivare impegni più consistenti.

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:
  1. Vai a Products → Add-Ons
  2. Fai clic su Create Add-On
  3. Configura l’add-on:
Utilizza nomi descrittivi per gli add-on, comprensibili sulle fatture. Per i clienti che controllano le fatture, “Posto aggiuntivo del team” è più chiaro di “Add-on per posto”.

Passaggio 3: crea l’abbonamento di base

Crea il prodotto in abbonamento:
  1. Vai a Products → Create Product
  2. Seleziona Subscription
  3. Configura prezzi e dettagli
  4. 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:
  1. Modifica il prodotto in abbonamento
  2. Scorri fino alla sezione Add-Ons
  3. Fai clic su Add Add-Ons
  4. Seleziona l’add-on per posto
  5. 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’array addons 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 array addons 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:
L’importo del credito dipende dalla modalità di proration scelta. L’addebito corrisponde sempre a un ciclo completo.
L’addebito riguarda sempre un ciclo completo. Solo il credito varia in base alla modalità. Per questo l’importo addebitato raramente corrisponde a “nuovi posti × prezzo × giorni rimanenti”.Con prorated_immediately, il credito diminuisce man mano che il ciclo procede, quindi la stessa modifica al numero di posti costa di più se viene effettuata più avanti. Con difference_immediately e full_immediately, il credito non dipende dalla tempistica, quindi queste due modalità hanno lo stesso costo in qualsiasi giorno del ciclo.

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.
prorated_immediately, difference_immediately e full_immediately reimpostano tutti il ciclo di fatturazione alla data della modifica. Il rinnovo successivo viene riallineato al giorno in cui viene applicata la modifica ai posti. Solo do_not_bill mantiene la data di rinnovo originale (il nuovo numero di posti viene fatturato per intero al rinnovo successivo, senza alcun addebito al momento della modifica).
do_not_bill applica immediatamente la modifica ai posti, non al rinnovo. Il nuovo numero di posti diventa effettivo non appena la chiamata ha esito positivo, ma non viene addebitato nulla fino al rinnovo successivo.Quando si aggiungono posti, il cliente li utilizza gratuitamente per il resto del ciclo corrente. Se si aggiungono 5 posti a $10 il giorno 1 di un ciclo di 30 giorni, il cliente avrà 5 posti gratuiti per 29 giorni e l’importo maggiore verrà addebitato per la prima volta alla data di rinnovo originale.Quando si rimuovono posti, vale il contrario: i posti vengono ritirati immediatamente e non viene riconosciuto alcun credito per la parte del ciclo già pagata.Utilizza do_not_bill quando è questo il comportamento desiderato, ad esempio per un upgrade omaggio o per un periodo di prova di posti aggiuntivi concordato con il cliente.

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:
In altre parole: $50 di base e 3 × $10 di add-on accreditati al 50%, un addebito completo di $50 per il piano base e un addebito per 8 × $10 di add-on. Credito = $40, addebito = $130, netto = $90.
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.
Scelta della modalità di proration per le modifiche ai posti
  • difference_immediately — il cliente paga la differenza di prezzo, indipendentemente dal momento in cui viene effettuata la modifica. È la modalità più prevedibile per i team che modificano spesso il numero di posti e la più facile da spiegare nella tua UI.
  • prorated_immediately — al cliente viene accreditato solo il tempo rimanente del ciclo corrente. La modifica costa di più quanto più avanti nel ciclo viene effettuata.
  • full_immediately — il cliente paga un ciclo nuovo completo senza alcun credito per il tempo inutilizzato.
  • do_not_bill — la modifica ai posti ha effetto immediato, ma non viene addebitato nulla al momento. I posti aggiunti sono gratuiti fino al rinnovo successivo; quelli rimossi vengono ritirati senza alcun credito. La data di rinnovo viene mantenuta e il nuovo numero di posti viene fatturato per intero a partire da quel rinnovo. È l’unica modalità che non reimposta il ciclo di fatturazione.
I posti assegnati tramite do_not_bill non vengono accreditati in una modifica successiva del piano, perché non sono mai stati fatturati. Se aggiungi 5 posti con do_not_bill e poi passi a 3 posti, al cliente vengono fatturati 3 posti per intero, senza alcun credito per i 5 posti precedentemente disponibili.
Chiama sempre previewChangePlan e mostra l’importo restituito prima di confermare. Consulta la Guida alla proration per confronti dettagliati.

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

L’array addons nel payload del webhook contiene le quantità correnti degli add-on. Sommali per ottenere il numero totale di posti. Se il piano di base include posti (ad es. 5 inclusi), aggiungili al totale degli add-on nella logica dell’applicazione.

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.
Impedisci rigorosamente di aggiungere utenti oltre il numero di posti.

Modelli avanzati

Tipi diversi di posto

Offri diversi tipi di posto con prezzi differenti:
Implementazione: crea add-on separati per ogni tipo di posto.

Sconti annuali sui posti

Offri prezzi annuali scontati per i posti:
Implementazione: crea prodotti separati per i piani mensili e annuali, con prezzi diversi per gli add-on.

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

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
Soluzioni:
  1. Implementa handler webhook per subscription.plan_changed
  2. Aggiungi un pulsante “Sincronizza con la fatturazione” che recuperi l’abbonamento corrente
  3. Imposta il TTL della cache per garantire aggiornamenti regolari
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:
  1. Utilizza sempre previewChangePlan prima di apportare modifiche
  2. Mostra un riepilogo chiaro: “L’aggiunta di X posti costerà $Y oggi”
  3. Passa a difference_immediately se vuoi che l’addebito corrisponda sempre alla differenza di prezzo
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
Soluzioni:
  1. Verifica che l’add-on sia collegato nelle impostazioni del prodotto
  2. Controlla lo stato dell’add-on nel dashboard Add-Ons
  3. Assicurati che le valute corrispondano esattamente
Sintomo: il cliente vuole ridurre il numero di posti, ma vi sono utenti assegnati.Soluzioni:
  1. Mostra quali utenti devono essere rimossi prima di ridurre i posti
  2. Implementa un flusso di lavoro: rimuovi utenti → riduci posti
  3. 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.
Ultima modifica il 26 settembre 2026