14 gen 2026·8 min di lettura

Abbonamenti vs fatturazione a consumo: cosa registrare fin dal primo giorno

Abbonamenti vs fatturazione a consumo spiegati dal punto di vista del data-modeling: metri, limiti, fatture, proration e i record da conservare fin dal primo giorno.

Abbonamenti vs fatturazione a consumo: cosa registrare fin dal primo giorno

Perché i modelli di prezzo hanno bisogno di un piano dati

Il pricing non è solo una pagina sul sito. Decide cosa devi registrare, come lo riporti e se puoi spiegare un addebito mesi dopo. Scegliendo tra abbonamenti e fatturazione a consumo scegli anche la forma dei tuoi dati di fatturazione.

Un abbonamento semplice spesso si calcola con pochi fatti: piano, periodo di fatturazione, data di inizio e sconti. Il prezzo a consumo richiede di più: cosa è stato usato, quando è successo, a quale cliente appartiene e come quell'uso si trasforma in denaro. Senza quei record puoi ancora inviare fatture, ma non puoi difenderle.

Aggiungere l'uso dopo senza pianificare di solito fallisce in tre punti:

  • Ti manca una cronologia affidabile dell'utilizzo, così i clienti contestano gli addebiti.
  • Le tue analytics diventano congetture perché i team definiscono la “misura” in modo diverso.
  • Finance non può auditare le fatture perché gli input grezzi mancano o sono stati sovrascritti.

L'obiettivo è noioso ma essenziale: calcolare la stessa fattura nello stesso modo ogni volta. Questo significa poter rigiocare il calcolo a partire dai fatti salvati (termini del piano, regole dei metri, eventi d'uso e la versione esatta dei prezzi applicata).

Una “view di modellazione” significa solo descrivere la fatturazione come blocchi che si incastrano, anche se non sei un ingegnere. Immagina un prodotto di chat di team:

  • Abbonamento: 99$ per workspace al mese
  • Uso: 0.01$ per messaggio dopo 50.000 messaggi

Per supportare questo in seguito, i tuoi dati devono rispondere: quale workspace, quale mese, quanti messaggi, cosa era incluso e quali regole di prezzo erano attive.

Abbonamenti vs consumo: come differiscono nella pratica

Gli abbonamenti addebitano l'accesso. La fatturazione a consumo addebita il consumo. Si comportano in modo molto diverso quando ci sono upgrade, downgrade, proration e casi limite reali.

Con un abbonamento la domanda chiave è: “Il cliente aveva diritto a usare il prodotto in questo periodo?” Tracci principalmente piano, numero di utenti (seat), periodo di fatturazione e se la fattura è stata pagata. L'uso conta ancora, ma spesso appare come limiti (soft o hard) invece che come voci di fattura.

Con la fatturazione a consumo la domanda diventa: “Cosa è successo, esattamente, e quando?” Hai bisogno di metering affidabile, regole chiare su quando l'uso è conteggiato e un modo per spiegare ogni addebito in seguito. Anche se l'interfaccia mostra un singolo numero (come “1.243 chiamate API”), dietro c'è un insieme di eventi che deve essere consistente e verificabile.

Molti team B2B SaaS scelgono un pricing ibrido: una tariffa base che copre un bundle più eventuali extra.

Pattern ibridi comuni

La maggior parte dei modelli ibridi rientra in poche forme familiari:

  • Tariffa base della piattaforma più costo per seat
  • Tariffa base più unità incluse (messaggi, task, chiamate API) più tariffa di overage
  • Piano a livelli più componente di utilizzo opzionale (addebitato solo se abilitato)
  • Impegno minimo con credito di utilizzo che si intasca gradualmente

La prevedibilità aiuta quando i clienti hanno bisogno di approvazione del budget e spesa mensile stabile. Il pay-as-you-go funziona meglio quando il valore scala con l'attività (per esempio, “per fattura processata”) o quando i clienti ti provano e vogliono rischio basso.

I cambi di piano sono garantiti. Prezzi, bundle e packaging cambieranno. Progetta la fatturazione in modo da poter aggiungere un nuovo metro, introdurre un nuovo tier o cambiare cosa significa “incluso” senza riscrivere la storia. Una regola pratica: conserva il piano del cliente e i termini di prezzo così come erano al momento dell'addebito, non solo com'è oggi.

Definisci metri che puoi misurare in modo affidabile

Un metro è la cosa esatta per cui addebiti, scritta così chiaramente che due persone che la contano ottengono lo stesso numero. Ha tre parti: l'evento (cosa è successo), l'unità (cosa conti) e il timing (quando viene conteggiato).

La maggior parte delle dispute nasce qui. Una parte pensa di pagare per risultati, l'altra parte addebita attività misurabili.

Rendi il metro inequivocabile

Scegli metri che mappano ad azioni reali del prodotto e che possano essere registrate automaticamente. Esempi comuni:

  • Seat (utenti attivi che possono accedere)
  • Chiamate API (richieste riuscite o tutte le richieste)
  • Storage (GB in un punto nel tempo, o una media su un periodo)
  • Messaggi (inviati, consegnati o aperti)
  • Minuti di compute (tempo di esecuzione di un job)

Poi definisci cosa conta e cosa no. Se fatturi per chiamata API, decidi se i retry contano, se le risposte 4xx e 5xx contano, e se le chiamate interne fatte dalle tue integrazioni contano.

Il timing conta tanto quanto l'unità. I seat spesso funzionano meglio come snapshot a un punto nel tempo per ogni periodo di fatturazione. Le chiamate API normalmente si sommano in una finestra. Lo storage è più complicato: i clienti si aspettano di pagare per “quanto hai immagazzinato”, che di solito significa una media nel tempo, non il picco.

Decidi anche l'ambito: per account o per workspace/progetto. Una regola semplice è: se i team possono essere fatturati separatamente, i metri dovrebbero essere per workspace.

Limiti, tier ed entitlements

Le entitlements sono le regole su cosa un cliente può fare in base a ciò che ha comprato. Rispondono a domande come: Quanti utenti può aggiungere? Quali funzionalità sono abilitate? Quale volume è permesso al mese? Le entitlements stanno tra accesso e fatturazione: modellano ciò che il prodotto permette, mentre il metering registra ciò che è realmente successo.

Tieni le entitlements separate dalla logica di metering. Le entitlements dovrebbero essere leggibili e stabili (piano, add-on, termini di contratto). Il metering evolverà con il prodotto (nuovi eventi, nuovi metri) e non vuoi che ogni cambiamento di metro rischi di rompere l'accesso.

Limiti hard, limiti soft e overage possono apparire simili nell'interfaccia, ma si comportano in modo molto diverso:

  • Hard limit blocca l'azione dopo il limite.
  • Soft limit permette l'azione ma avvisa e segnala per follow-up.
  • Overage billing permette l'azione e addebita l'eccesso.
  • Un periodo di grazia tratta temporaneamente un hard limit come soft.
  • Trial e tier gratuiti applicano entitlements, ma il prezzo è diverso (spesso zero) fino a una certa data o soglia.

Decidi in anticipo cosa succede quando un limite viene superato. Esempio: un team sul tier “Starter” include 5 seat e 10.000 chiamate API al mese. Se invitano un sesto utente, lo blocchi, inizi addebitare per ogni seat extra, o lo permetti per 7 giorni come periodo di grazia? Ogni scelta necessita di una regola che puoi mostrare su una fattura e nei log di supporto.

Conserva le entitlements come record con periodo temporale: cliente, piano o add-on, timestamp di inizio e fine, valori dei limiti e modalità di applicazione (hard, soft, overage). Questo mantiene coerenti le decisioni di accesso e fatturazione.

Fatture e periodi di fatturazione che puoi auditare

Implementa un metering dell'uso affidabile
Cattura eventi di utilizzo append-only con ambito chiaro, finestra temporale e chiavi di idempotenza.
Configura i metri

Una fattura non è solo un PDF. È una traccia di audit che risponde: chi è stato fatturato, per cosa, per quali date, sotto quali regole. Se cambi i prezzi, dovresti comunque essere in grado di ricostruire le vecchie fatture esattamente come erano.

Inizia con pochi record core: Customer, Subscription (o Contract), Billing Period e Invoice con Line Item. Ogni riga dovrebbe puntare alla sua sorgente: una tariffa di piano, un riepilogo d'uso o un addebito una tantum. Quel collegamento è ciò che rende la fatturazione spiegabile quando qualcuno contesta un addebito.

I periodi di fatturazione hanno bisogno di un anchor e di un fuso orario. “Mensile” non basta. Salva la data di ancoraggio del ciclo (per esempio, il 15 alle 00:00) e il fuso orario usato per tagliare i periodi. Mantieni questo consistente o avrai problemi di un giorno intorno all'ora legale.

Le fatture auditabili solitamente richiedono:

  • period_start e period_end su ogni fattura e su ogni riga
  • La versione del prezzo (ID piano/prezzo) usata per quella fattura
  • Totali immutabili: subtotal, tasse, sconti, amount_due, valuta
  • L'esatta finestra d'uso per qualsiasi voce basata su consumo
  • Riferimenti pagamento esterni (ID addebito del processore) quando applicabili

La revenue recognition è correlata ma non uguale al charging. Una tariffa prepagata si riconosce di solito nel periodo di servizio, mentre l'uso si riconosce quando è erogato. Anche se rimani a un livello alto, conserva abbastanza date per supportarlo in seguito.

Tratta note di credito, rimborsi e aggiustamenti come record di prima classe, mai come modifiche a fatture vecchie. Se un cliente esegue un upgrade a metà ciclo, crea una riga di aggiustamento o una nota di credito che fa riferimento alla fattura originale e indica la regola di proration usata.

Le chiavi di idempotenza sono importanti per la generazione di fatture e i tentativi di pagamento. Se un job viene eseguito due volte, vuoi una sola fattura, un solo addebito e un log chiaro.

Prorazione e cambi a metà ciclo

Prototipa il tuo modello di prezzo
Testa prezzi basati su sottoscrizione, consumo o ibridi versionando presto il catalogo prezzi.
Prototipa ora

I cambi a metà ciclo sono dove iniziano le discussioni sulla fatturazione. Se qualcuno esegue un upgrade il 20, mette in pausa per una settimana e poi cancella, ti servono regole che trasformino quelle azioni in numeri sensati su una fattura.

Decidi quali cambi permetti e quando hanno effetto. Molti team applicano gli upgrade immediatamente così i clienti ottengono valore subito, ma applicano i downgrade al rinnovo per evitare rimborsi complicati.

Scegli una politica di proration che puoi spiegare

La proration può essere giornaliera, oraria o nulla. Più sei preciso, più timestamp, regole di arrotondamento e casi limite devi salvare e testare.

Blocca le scelte di policy presto:

  • Prorata gli upgrade immediatamente, differisci i downgrade al rinnovo
  • Usa la proration giornaliera (più semplice dell'oraria, di solito abbastanza equa)
  • Definisci regole di arrotondamento (per esempio, arrotonda per eccesso al centesimo)
  • Decidi come funzionano le pause (accredito del tempo, o estensione del periodo)
  • Imposta una politica di rimborso chiara per le cancellazioni (totale, parziale o nulla)

Modella la proration come voci di fattura

Evita calcoli nascosti. Rappresenta la proration come aggiustamenti espliciti sulla fattura, come un addebito per il tempo rimanente sul nuovo piano e un credito per il tempo non usato sul piano precedente. Ogni voce dovrebbe riferirsi all'esatto evento di cambio che l'ha causata (change_id) e includere la finestra di proration (start_at, end_at), la quantità/base temporale e la categoria fiscale.

I metri d'uso aggiungono un'altra decisione: quando un piano cambia, i metri si azzerano, continuano ad accumularsi o si dividono in segmenti? Un approccio semplice e verificabile è segmentare l'uso per versione di piano. Esempio: un cliente passa da 10 a 25 seat a metà mese. Conservi gli eventi d'uso così come sono, ma il rating li raggruppa per il periodo di entitlement attivo al momento.

Decidi cosa è reversibile. Aiuta trattare gli eventi d'uso come finali una volta accettati, mentre i cambi di sottoscrizione possono essere reversibili solo fino alla finalizzazione della fattura. Conserva eventi di cambio e aggiustamenti in modo da poter rigenerare le fatture pulitamente quando le regole evolvono.

I dati da conservare fin dal primo giorno

Se aspetti a progettare i dati di fatturazione finché i clienti non si lamentano, finirai per indovinare. Che tu scelga abbonamento, consumo o un modello ibrido B2B SaaS, il punto di partenza più sicuro è un piccolo insieme di record che puoi sempre auditare in seguito.

Inizia con una gerarchia cliente chiara. Nel B2B SaaS il pagatore è di solito un account aziendale, ma l'uso spesso avviene dentro workspace o progetti, e le azioni provengono da utenti individuali. Conserva tutti e tre i livelli (account, workspace, user) e registra chi ha fatto cosa. Le dispute spesso diventano “quale team ha fatto questo?”.

Un design minimo del DB di fatturazione che supporta fatture reali e indagini pulite:

  • Account e struttura org: account, workspace (o progetto), utenti, ruoli, contatto di fatturazione e campi fiscali se necessari
  • Subscriptions: piano, stato, date di inizio/fine, impostazioni di rinnovo, motivo di cancellazione e versione di prezzo applicata all'inizio
  • Catalogo prezzi: prodotti, componenti piano (fee base, seat, metri), tier, valuta e date di efficacia
  • Dati di metering: un log di eventi append-only immutabile con timestamp, workspace, user (se disponibile), nome del metro, quantità e una chiave unica di idempotenza
  • Artefatti di fatturazione: confini del periodo di fatturazione, line item, totali, aggiustamenti tasse/sconti e uno snapshot degli input usati

Non fare affidamento solo su contatori aggregati. Mantieni contatori per velocità, ma tratta il log eventi come fonte di verità. Una regola semplice aiuta: gli eventi sono immutabili, le correzioni sono nuovi eventi (per esempio, una quantità negativa) e ogni evento è legato a una definizione di metro specifica.

Esempio: un cliente dice che le sue “chiamate API” sono raddoppiate il mese scorso. Se puoi estrarre eventi grezzi per workspace e giorno, puoi mostrare da dove è venuto il picco o individuare un loop di integrazione.

Passo dopo passo: dagli eventi d'uso a una fattura

Gestisci la proration con chiarezza
Modella upgrade e downgrade come crediti e addebiti espliciti legati agli eventi di cambio.
Aggiungi proration

La parte difficile non è la matematica. È rendere il risultato spiegabile mesi dopo, anche dopo che piani, prezzi e clienti sono cambiati.

1) Parti da un catalogo prezzi che può viaggiare nel tempo

Imposta prodotti, piani, metri e prezzi con date di efficacia. Non sovrascrivere mai un prezzo vecchio. Se un cliente è fatturato a marzo, devi poter rieseguire marzo usando il catalogo di marzo.

Esempio: “Chiamate API” costano 0.002$ ciascuna a partire dal 1 aprile. Le fatture di marzo devono comunque usare la tariffa precedente.

2) Snapshot di cosa il cliente aveva diritto nel periodo

All'inizio di ogni periodo di fatturazione (o quando avviene un cambiamento), salva uno snapshot delle entitlements: piano, unità incluse, limiti, regole di tier, sconti e impostazioni fiscali. Pensalo come “ciò che abbiamo promesso” per quel periodo.

3) Ingestione degli eventi d'uso e validazione precoce

L'uso deve arrivare come eventi immutabili: timestamp, cliente, metro, quantità e un id unico per deduplicazione. Valida le basi all'ingresso (metro mancante, quantità negativa, timestamp impossibili) e registra l'evento grezzo anche se salvi anche una versione pulita.

Poi fai il calcolo in due passaggi:

  • Aggrega gli eventi in totali per cliente, metro e periodo di fatturazione (e conserva la versione di aggregazione)
  • Calcola il prezzo sui totali usando il catalogo più lo snapshot delle entitlements (unità incluse, prezzo di overage, tier)

Genera line item di fattura che facciano riferimento agli input esatti usati (versione catalogo, id snapshot, id aggregazione).

Infine, blocca la fattura. Salva gli input di calcolo e l'output, marcala come finale e impedisci modifiche quando arrivano eventi tardivi. Gli eventi tardivi dovrebbero andare nella fattura successiva (o in un aggiustamento separato) con una nota di audit chiara.

Bisogni di reportistica cliente e interna

Ai clienti non importa se hai scelto abbonamenti o fatturazione a consumo. A loro interessa che i tuoi numeri corrispondano ai loro e che possano prevedere il prossimo addebito prima che accada.

La reportistica rivolta ai clienti funziona meglio come una pagina di fatturazione semplice che risponde a poche domande senza ticket di supporto:

  • Su quale piano sono e cosa include?
  • Quanto ho usato in questo periodo e come viene contato l'uso?
  • Quali sono i miei limiti e cosa succede se li supero?
  • Quando finisce il periodo di fatturazione e quale è la mia fattura stimata?
  • Dove posso vedere fatture e pagamenti passati?

Internamente, support e finance devono poter spiegare un numero, non solo mostrarlo. Questo significa individuare picchi, tracciare cambi e separare calcoli di anteprima da fatturazione finalizzata.

Tieni le anteprime di fattura separate dalle fatture. Le anteprime possono essere ricalcolate quando arrivano eventi tardivi o quando affini un metro. Le fatture non devono essere ricalcolate.

La reportistica interna dovrebbe rendere semplice segnalare anomalie (salti improvvisi, uso negativo, eventi duplicati), riprodurre una voce di fattura da uso grezzo e regole, e vedere cambi di piano e regole di proration per il periodo.

Le tracce di audit contano più di quanto molti team si aspettino. Se un cliente dice “Abbiamo eseguito l'upgrade il 12”, ti servono timestamp, attore (utente, admin, automazione) e i valori esatti prima/dopo per piano, seat, limiti e tariffe dei metri.

Per la retention, conserva eventi d'uso grezzi e artefatti di fatturazione finalizzati a lungo termine. Una regola pratica: se può cambiare l'importo addebitato o aiutare a difenderlo in una disputa, conservalo in modo immutabile.

Trappole comuni che causano dispute di fatturazione

Abbina Stripe al tuo modello di dati
Collega i pagamenti Stripe mantenendo rating e fatti di fatturazione nel tuo DB.
Usa Stripe

La maggior parte delle dispute non riguarda il prezzo. Succedono quando non riesci a spiegare un numero su una fattura, o quando gli stessi input producono un totale diverso in seguito.

Un errore comune è conservare solo totali mensili. Senza eventi grezzi non puoi rispondere a domande semplici come “Quale giorno ci ha fatto superare il limite?” Conserva l'evento, poi aggregalo.

Un altro problema frequente è cambiare il significato di un metro senza tracciarlo. “Utente attivo” potrebbe inizialmente significare “ha effettuato il login almeno una volta” e poi diventare “ha creato un record”. Se non versi le definizioni di metro, i clienti confronteranno fatture vecchie con quelle nuove e non potrai dimostrare quale regola si applicasse.

Le dispute spesso vengono dagli stessi schemi:

  • Entitlements applicate solo nell'UI (il backend permette ancora uso extra o blocca uso valido)
  • Un unico campo timestamp usato per tutto (tempo evento, tempo di ingestione, tempo di fatturazione)
  • Fusi orari ignorati (uso alle 00:30 ora locale finisce nel giorno o mese sbagliato)
  • Anchor di fatturazione dimenticati (alcuni clienti fatturano il 1°, altri dal giorno di signup)
  • Nessuna traccia di audit di cambi di piano, prezzo e limiti

Esempio: un cliente a Tokyo esegue l'upgrade a metà ciclo il 31 ora locale. Se salvi solo un timestamp UTC e nessun anchor di fatturazione, l'upgrade può apparire al 30 nel tuo sistema, spostando proration e uso nel periodo sbagliato.

Il modo più rapido per perdere fiducia è non poter riprodurre il calcolo di una vecchia fattura. Conserva gli input (eventi, versioni, anchor e prezzi applicati) così potrai rieseguire la stessa logica dopo e ottenere lo stesso risultato, anche quando il prodotto cambia.

Controlli rapidi prima di lanciare la fatturazione

Crea una console amministrativa per la fatturazione
Crea un pannello amministrativo per la fatturazione senza scrivere ogni schermata a mano.
Prova AppMaster

Prima di andare in produzione, fai una prova: scegli un cliente a caso e ricrea la sua ultima fattura usando solo i dati salvati. Se ti serve “quello che il codice faceva all'epoca”, non hai una traccia di audit.

Assicurati che ogni metro sia inequivocabile. Un metro ha bisogno di una unità chiara (request, seat, GB, minuti), una fonte affidabile (quale servizio lo emette) e una finestra temporale (al giorno, al periodo di fatturazione, al mese di calendario). Se non riesci a spiegare il metro in una frase, i clienti non si fideranno.

Controlli rapidi che catturano la maggior parte dei problemi di fatturazione:

  • Riesci a rigiocare una fattura dagli input: versione piano, prezzi, totali d'uso, tasse, sconti e parametri di proration
  • Gli eventi d'uso sono append-only, immutabili e deduplicati (chiave di idempotenza o id evento)
  • Cambi di piano e prezzo sono versionati con date di efficacia (non sovrascrivere prezzi vecchi)
  • Le regole di proration sono scritte in linguaggio chiaro e coperte da test
  • Il support può rispondere rapidamente a “perché sono stato addebitato?” usando gli stessi fatti salvati

Esempio: un cliente passa da 10 a 25 seat il 18 e supera una soglia d'uso il 23. Il tuo sistema dovrebbe mostrare (1) quale versione di piano era attiva in ogni data, (2) l'evento di cambio seat con timestamp, (3) la formula di proration usata e (4) gli eventi d'uso che hanno portato al totale finale.

Passi successivi: implementare senza chiudersi le strade

Inizia in piccolo, ma non essere vago. Il percorso più sicuro è il modello dati minimo che ti permette ancora di rispondere a una domanda mesi dopo: “Perché abbiamo addebitato questo importo?”

Prototipa il tuo schema di fatturazione e le schermate di amministrazione presto, prima del primo cambiamento di prezzo. Se aspetti che il commerciale chieda un nuovo tier o un upgrade a metà ciclo, finirai per patchare la logica in troppi posti.

Una divisione pratica: lascia a Stripe la gestione degli addebiti, delle ricevute e dei retry di pagamento, ma tieni il rating (come l'uso diventa line item) nel tuo sistema. Questo significa che salvi eventi d'uso grezzi, versioni di prezzo e i risultati del calcolo usati per generare un'anteprima di fattura.

Un piano di lancio semplice che resta flessibile:

  • Scegli 1-2 metri che puoi misurare in modo affidabile (per esempio, seat attivi al giorno e chiamate API)
  • Versiona le regole di prezzo fin dal primo giorno così le fatture vecchie corrispondono alle vecchie regole
  • Costruisci un pannello amministrativo interno per visualizzare uso, override, crediti e dispute
  • Aggiungi una vista portale cliente base: piano corrente, uso del periodo, fattura prevista
  • Tratta ogni fattura come uno snapshot auditabile, non come un'ipotesi ricalcolata

Se vuoi muoverti rapidamente senza scrivere molto codice back office custom, puoi modellare queste entità in AppMaster e costruire le schermate admin e portal con i suoi strumenti visuali, mantenendo PostgreSQL come sistema di record per eventi e fatture.

Esempio concreto: lanci con un solo metro seats. Tre mesi dopo aggiungi GB di storage. Se metri, entitlements e regole di prezzo sono versionati, puoi introdurre il nuovo metro senza rompere le fatture precedenti e il support potrà spiegare ogni voce in pochi minuti.

FAQ

Why does my pricing model affect what data I need to store?

Inizia decidendo cosa dovrai dimostrare in futuro: perché un cliente è stato addebitato in quel modo. Le sottoscrizioni richiedono la cronologia di piano, periodo e entitlements; la fatturazione a consumo richiede un registro immutabile di cosa è successo, quando e sotto quali regole di prezzo.

What does it mean to make billing “auditable”?

Se non puoi riprodurre una fattura a partire dagli input salvati, non puoi rispondere in modo affidabile a contestazioni o audit. L'impostazione più sicura è conservare termini di piano legati al tempo, prezzi versionati, eventi di utilizzo grezzi e l'esatto output di calcolo usato quando la fattura è stata finalizzata.

How do I define a meter so it doesn’t create disputes?

Un buon metro è qualcosa che due persone possono contare allo stesso modo. Definisci l'evento, l'unità e la finestra temporale, e scrivi cosa conta e cosa no (per esempio retry, richieste fallite o chiamate interne) così non cambi il significato a metà strada.

What’s the practical difference between hard limits, soft limits, and overage billing?

I limiti hard bloccano l'azione, i soft limit avvertono ma permettono l'azione, e l'overage billing permette e addebita l'eccesso. Scegli un comportamento per ogni entitlement e salvalo come regola con timestamp di inizio e fine in modo che support, prodotto e fatturazione prendano la stessa decisione.

Why should entitlements be separate from metering logic?

Risolvono problemi diversi: le entitlements controllano cosa il cliente può fare, il metering registra cosa è effettivamente successo. Tenerli separati evita che una modifica del metro rompa l'accesso e rende le fatture più semplici da spiegare.

Should I store raw usage events or just monthly totals?

Conserva un log di eventi di utilizzo append-only come fonte di verità e, opzionalmente, aggregati per velocità. Gli eventi dovrebbero includere timestamp, ambito cliente (ad es. workspace), nome del metro, quantità e una chiave unica di idempotenza così i duplicati non causano doppi addebiti.

How do I handle price changes without breaking old invoices?

Non sovrascrivere mai prezzi o regole di piano vecchie; aggiungi nuove versioni con date di efficacia. Poi salva quale versione di prezzo si è applicata a ogni fattura (e spesso a ogni periodo di entitlement), così le fatture vecchie possono essere ricostruite esattamente anche dopo cambi di packaging.

How do I avoid billing bugs caused by time zones and billing periods?

La fatturazione mensile richiede un anchor di ciclo e un fuso orario, non solo “mensile”. Conserva period_start e period_end e sii esplicito su quali timestamp usi per il tempo evento rispetto all'ingestione per evitare errori di un giorno dovuti a fusi orari e DST.

What’s a sane proration policy for upgrades and downgrades?

Usa una politica che puoi spiegare in una frase e modella la matematica come voci di fattura esplicite (crediti e addebiti) legate all'evento di cambiamento e alla finestra di proration. La proration giornaliera è un default comune perché è più semplice da testare e difendere rispetto a quella oraria.

What should I do when usage events arrive late after an invoice is finalized?

Finalizza le fatture come snapshot immutabili e tratta l'uso tardivo come un aggiustamento nuovo o come parte del periodo successivo, con una nota chiara. Le anteprime possono essere ricalcolate liberamente, ma le fatture finalizzate no.

Facile da avviare
Creare qualcosa di straordinario

Sperimenta con AppMaster con un piano gratuito.
Quando sarai pronto potrai scegliere l'abbonamento appropriato.

Iniziare