Vai al contenuto principale
Le sottoscrizioni ti consentono di vendere accesso continuativo con rinnovi automatici. Usa cicli di fatturazione flessibili, prove gratuite, modifiche ai piani e componenti aggiuntivi per personalizzare i prezzi per ogni cliente.

Cosa Sono gli Abbonamenti?

Gli abbonamenti sono prodotti ricorrenti che i clienti acquistano secondo un programma. Sono ideali per:
  • Licenze SaaS: App, API o accesso alla piattaforma
  • Abbonamenti: Comunità, programmi o club
  • Contenuti digitali: Corsi, media o contenuti premium
  • Piani di supporto: SLA, pacchetti di successo o manutenzione

Vantaggi Chiave

  • Entrate prevedibili: Fatturazione ricorrente con rinnovi automatici
  • Cicli flessibili: Mensili, annuali, intervalli personalizzati e prove
  • Agilità del piano: Ripartizione per aggiornamenti e riduzioni
  • Add-on e posti: Allegare aggiornamenti opzionali e quantificabili
  • Checkout senza soluzione di continuità: Checkout ospitato e portale clienti
  • Sviluppatore-first: API chiare per creazione, modifiche e tracciamento dell’uso

Creazione di Abbonamenti

Crea prodotti in abbonamento nel tuo dashboard di Dodo Payments, quindi vendili tramite checkout o la tua API. Separare i prodotti dagli abbonamenti attivi ti consente di versionare i prezzi, allegare add-on e monitorare le prestazioni in modo indipendente.

Creazione di un prodotto in abbonamento

Configura i campi nel dashboard per definire come il tuo abbonamento viene venduto, rinnovato e fatturato. Le sezioni di seguito corrispondono direttamente a ciò che vedi nel modulo di creazione.

Dettagli del prodotto

  • Nome del prodotto (obbligatorio): Il nome visualizzato nel checkout, nel portale clienti e nelle fatture.
  • Descrizione del prodotto (obbligatoria): Una chiara dichiarazione di valore che appare nel checkout e nelle fatture.
  • Immagine del prodotto (obbligatoria): PNG/JPG/WebP fino a 3 MB. Utilizzata nel checkout e nelle fatture.
  • Marca: Associa il prodotto a un marchio specifico per la tematizzazione e le email.
  • Categoria fiscale (obbligatoria): Scegli la categoria (ad esempio, SaaS) per determinare le regole fiscali.
Scegli la categoria fiscale più accurata per garantire la corretta riscossione delle tasse per area geografica.

Prezzi

  • Tipo di Prezzo: Scegli Abbonamento (questa guida). Le alternative sono Pagamento Singolo e Fatturazione Basata sull’Uso.
  • Prezzo (obbligatorio): Prezzo ricorrente base con valuta.
  • Sconto Applicabile (%): Percentuale di sconto opzionale applicata al prezzo base; riflessa nel checkout e nelle fatture.
  • Ripeti pagamento ogni (obbligatorio): Intervallo per i rinnovi, ad esempio, ogni 1 Mese. Seleziona la cadenza (mesi o anni) e la quantità.
  • Periodo di Abbonamento (obbligatorio): Termine totale per il quale l’abbonamento rimane attivo (ad esempio, 10 Anni). Dopo la scadenza di questo periodo, i rinnovi si fermano a meno che non vengano estesi.
  • Giorni di Periodo di Prova (obbligatorio): Imposta la durata della prova in giorni. Usa 0 per disabilitare le prove. Il primo addebito avviene automaticamente al termine della prova.
  • Seleziona add-on: Allegare fino a 10 add-on che i clienti possono acquistare insieme al piano base.
Modificare i prezzi di un prodotto attivo influisce sugli acquisti futuri. Le sottoscrizioni esistenti seguono le impostazioni di cambio piano e prorata configurate.
I componenti aggiuntivi sono ideali per extra quantificabili come posti o spazio di archiviazione. Puoi controllare le quantità consentite e il comportamento della prorata quando i clienti li modificano.

Impostazioni avanzate

  • Prezzi inclusivi di tasse: Visualizza i prezzi inclusivi delle tasse applicabili. Il calcolo finale delle tasse varia comunque in base alla posizione del cliente.
  • Genera chiavi di licenza: Emissione di una chiave unica a ciascun cliente dopo l’acquisto. Vedi la guida sulle Chiavi di Licenza.
  • Consegna di prodotti digitali: Consegna automatica di file o contenuti dopo l’acquisto. Scopri di più in Consegna di Prodotti Digitali.
  • Metadati: Allegare coppie chiave-valore personalizzate per tagging interno o integrazioni client. Vedi Metadati.
Usa i metadati per memorizzare identificatori dal tuo sistema (es. accountId) in modo da poter riconciliare eventi e fatture successivamente.

Prove di Abbonamento

Le prove consentono ai clienti di accedere agli abbonamenti senza pagamento immediato. Il primo addebito avviene automaticamente al termine della prova.

Configurazione delle Prove

Imposta Trial Period Days nella sezione prezzi del prodotto (usa 0 per disabilitare). Puoi sovrascriverlo durante la creazione delle sottoscrizioni:
// Via subscription creation
const subscription = await client.subscriptions.create({
  customer_id: 'cus_123',
  product_id: 'prod_monthly',
  trial_period_days: 14  // Overrides product's trial period
});

// Via checkout session
const session = await client.checkoutSessions.create({
  product_cart: [{ product_id: 'prod_monthly', quantity: 1 }],
  subscription_data: { trial_period_days: 14 }
});
Il valore trial_period_days deve essere compreso tra 0 e 10.000 giorni.

Rilevamento dello Stato della Prova

Attualmente non esiste un campo diretto per rilevare lo stato della prova. La seguente è una soluzione alternativa che richiede la richiesta dei pagamenti, il che è inefficiente. Stiamo lavorando a una soluzione più efficiente.
Per determinare se un abbonamento è in prova, recupera l’elenco dei pagamenti per l’abbonamento. Se c’è esattamente un pagamento con importo 0, l’abbonamento è in periodo di prova:
const subscription = await client.subscriptions.retrieve('sub_123');
const payments = await client.payments.list({
  subscription_id: subscription.subscription_id
});

// Check if subscription is in trial
const isInTrial = payments.items.length === 1 && 
                  payments.items[0].total_amount === 0;

Aggiornamento del Periodo di Prova

Estendi la prova aggiornando next_billing_date:
await client.subscriptions.update('sub_123', {
  next_billing_date: '2025-02-15T00:00:00Z'  // New trial end date
});
Non puoi impostare next_billing_date su un tempo passato. La data deve essere nel futuro.

Modifiche ai Piani di Abbonamento

Le modifiche ai piani ti consentono di aggiornare o ridurre gli abbonamenti, regolare le quantità o migrare a prodotti diversi. Ogni modifica attiva un addebito immediato in base alla modalità di ripartizione che selezioni.
Puoi cambiare i piani di sottoscrizione e aggiornare la prossima data di fatturazione direttamente dalla dashboard Dodo Payments. Questo offre un modo rapido per modificare le sottoscrizioni in risposta a richieste di supporto clienti, upgrade promozionali o migrazioni di piano senza effettuare chiamate API.
Abilita i cambi piano self-service: Vuoi che i clienti possano effettuare upgrade o downgrade delle proprie sottoscrizioni tramite il Customer Portal? Aggiungi i tuoi prodotti di sottoscrizione a una Product Collection e attiva “Allow Subscription Updates” nelle impostazioni di sottoscrizione.

Product Collections

Raggruppa i prodotti correlati in collezioni per abilitare percorsi di upgrade/downgrade fluidi nel Customer Portal.

Modalità di prorata

Scegli come vengono fatturati i clienti quando cambiano piano:
Confronto rapido delle tre modalità di prorata:
prorated_immediatelydifference_immediatelyfull_immediately
UpgradeAddebito proporzionale per i giorni rimanentiViene addebitata l’intera differenza di prezzoViene addebitato l’intero prezzo del nuovo piano
DowngradeCredito proporzionale per i giorni rimanentiL’intera differenza di prezzo come creditoNessun credito, addebito completo
Ciclo di fatturazioneRimane invariatoRimane invariatoSi resetta a oggi
Ideale perFatturazione equa basata sul tempoSemplici cambi di livelloRipristino del ciclo di fatturazione

prorated_immediately

Addebita un importo proporzionale in base al tempo rimanente nell’attuale ciclo di fatturazione. Ideale per una fatturazione equa che tiene conto del tempo inutilizzato.
await client.subscriptions.changePlan('sub_123', {
  product_id: 'prod_pro',
  quantity: 1,
  proration_billing_mode: 'prorated_immediately'
});

difference_immediately

Addebita immediatamente la differenza di prezzo (upgrade) o aggiunge credito per i rinnovi futuri (downgrade). Ideale per scenari semplici di upgrade/downgrade.
// Upgrade: charges $50 (difference between $30 and $80)
// Downgrade: credits remaining value, auto-applied to renewals
await client.subscriptions.changePlan('sub_123', {
  product_id: 'prod_pro',
  quantity: 1,
  proration_billing_mode: 'difference_immediately'
});
I crediti derivanti da downgrade effettuati usando difference_immediately sono limitati all’abbonamento e vengono applicati automaticamente ai rinnovi futuri. Sono distinti dalle autorizzazioni di Credit-Based Billing.
Quando un cliente effettua un downgrade con difference_immediately, il valore inutilizzato diventa un credito riferito alla sottoscrizione che compensa automaticamente i rinnovi futuri:

full_immediately

Addebita immediatamente l’importo completo del nuovo piano, ignorando il tempo restante. Ideale per ripristinare i cicli di fatturazione.
await client.subscriptions.changePlan('sub_123', {
  product_id: 'prod_monthly',
  quantity: 1,
  proration_billing_mode: 'full_immediately'
});
Scenario: Un cliente con il piano Basic (30 USD/mese) effettua un upgrade al piano Pro (80 USD/mese) il giorno 16 di un ciclo di 30 giorni utilizzando prorated_immediately.
Unused credit from Basic = $30 × (15 remaining / 30 total) = $15.00
Prorated cost of Pro     = $80 × (15 remaining / 30 total) = $40.00
────────────────────────────────────────────────────────────────────
Immediate charge         = $40.00 − $15.00 = $25.00
Il prossimo rinnovo avverrà nella data di fatturazione originale: 80,00 USD/mese.
Per esempi di calcolo più dettagliati e casi limite, consulta la nostra Upgrade & Downgrade Guide.
Scenario: Un cliente con il piano Pro (80 USD/mese) effettua un downgrade al piano Starter (20 USD/mese) usando difference_immediately.
Credit = Old plan − New plan = $80 − $20 = $60.00
I 60 USD di credito si applicano automaticamente ai rinnovi futuri:
  • Rinnovo 1: 20 USD − 20 USD (credito) = 0,00 USD (credito residuo 40 USD)
  • Rinnovo 2: 20 USD − 20 USD (credito) = 0,00 USD (credito residuo 20 USD)
  • Rinnovo 3: 20 USD − 20 USD (credito) = 0,00 USD (credito esaurito)
  • Rinnovo 4: 20,00 USD (prezzo pieno)
Scopri di più su come vengono gestiti i crediti nella Upgrade & Downgrade Guide.

Modifiche ai piani con componenti aggiuntivi

Modifica i componenti aggiuntivi quando cambi piano. I componenti aggiuntivi sono inclusi nei calcoli della prorata:
await client.subscriptions.changePlan('sub_123', {
  product_id: 'prod_pro',
  quantity: 1,
  proration_billing_mode: 'difference_immediately',
  addons: [{ addon_id: 'addon_extra_seats', quantity: 2 }]  // Add add-ons
  // addons: []  // Empty array removes all existing add-ons
});
I cambi di piano attivano addebiti immediati. Gli addebiti falliti possono portare la sottoscrizione nello stato on_hold. Monitora le modifiche tramite gli eventi webhook subscription.plan_changed.

Anteprima delle modifiche ai piani

Prima di confermare un cambio piano, visualizza in anteprima l’addebito esatto e la sottoscrizione risultante:
const preview = await client.subscriptions.previewChangePlan('sub_123', {
  product_id: 'prod_pro',
  quantity: 1,
  proration_billing_mode: 'prorated_immediately'
});

// Show customer the charge before confirming
console.log('You will be charged:', preview.immediate_charge.summary);

Preview Change Plan API

Visualizza in anteprima le modifiche ai piani prima di applicarle.

Stati delle sottoscrizioni

Le sottoscrizioni possono trovarsi in stati differenti durante il loro ciclo di vita:
  • active: la sottoscrizione è attiva e si rinnova automaticamente
  • on_hold: la sottoscrizione è sospesa a causa di un pagamento fallito. È necessario aggiornare il metodo di pagamento per riattivarla
  • cancelled: la sottoscrizione è annullata e non si rinnoverà
  • expired: la sottoscrizione ha raggiunto la data di fine
  • pending: la sottoscrizione è in fase di creazione o elaborazione

Stato “On Hold”

Una sottoscrizione entra nello stato on_hold quando:
  • un pagamento di rinnovo fallisce (fondi insufficienti, carta scaduta, ecc.)
  • un addebito per il cambio piano fallisce
  • l’autorizzazione del metodo di pagamento fallisce
Quando una sottoscrizione è nello stato on_hold, non si rinnova automaticamente. È necessario aggiornare il metodo di pagamento per riattivare la sottoscrizione.

Riattivazione dallo stato “On Hold”

Per riattivare una sottoscrizione dallo stato on_hold, aggiorna il metodo di pagamento. Questo processo automaticamente:
  1. crea un addebito per i debiti residui
  2. genera una fattura
  3. elabora il pagamento utilizzando il nuovo metodo di pagamento
  4. riattiva la sottoscrizione nello stato active al completamento del pagamento
// Reactivate subscription from on_hold
const response = await client.subscriptions.updatePaymentMethod('sub_123', {
  type: 'new',
  return_url: 'https://example.com/return'
});

// For on_hold subscriptions, a charge is automatically created
if (response.payment_id) {
  console.log('Charge created:', response.payment_id);
  // Redirect customer to response.payment_link to complete payment
  // Monitor webhooks for payment.succeeded and subscription.active
}
Dopo aver aggiornato con successo il metodo di pagamento per una sottoscrizione on_hold, riceverai gli eventi webhook payment.succeeded seguiti da subscription.active.

Gestione API

Usa POST /subscriptions per creare sottoscrizioni programmaticamente a partire dai prodotti, con prove e componenti aggiuntivi opzionali.

API Reference

Visualizza l’API per creare sottoscrizioni.
Usa PATCH /subscriptions/{id} per aggiornare quantità, cancellare alla prossima data di fatturazione o modificare i metadati.

API Reference

Scopri come aggiornare i dettagli delle sottoscrizioni.
Cambia il prodotto attivo e le quantità con controlli di prorata.

API Reference

Esamina le opzioni di cambio piano.
Per le sottoscrizioni on-demand, addebita importi specifici a richiesta.

API Reference

Addebita una sottoscrizione on-demand.
Usa GET /subscriptions per elencare tutte le sottoscrizioni e GET /subscriptions/{id} per recuperarne una.

API Reference

Esplora le API di elenco e recupero.
Recupera l’utilizzo registrato per modelli di prezzo misurati o ibridi.

API Reference

Consulta l’API della cronologia di utilizzo.
Aggiorna il metodo di pagamento per una sottoscrizione. Per le sottoscrizioni attive, questo aggiorna il metodo di pagamento per i rinnovi futuri. Per le sottoscrizioni nello stato on_hold, questo le riattiva creando un addebito per i debiti residui.

API Reference

Scopri come aggiornare i metodi di pagamento e riattivare le sottoscrizioni.

Casi d’uso comuni

  • SaaS e API: Accesso a livelli con componenti aggiuntivi per posti o utilizzo
  • Contenuti e media: Accesso mensile con prove introduttive
  • Piani di supporto B2B: Contratti annuali con componenti aggiuntivi di supporto premium
  • Strumenti e plugin: Chiavi di licenza e rilasci versionati

Esempi di integrazione

Checkout Sessions (sottoscrizioni)

Quando crei sessioni di checkout, includi il tuo prodotto di sottoscrizione e componenti aggiuntivi opzionali:
const session = await client.checkoutSessions.create({
  product_cart: [
    {
      product_id: 'prod_subscription',
      quantity: 1
    }
  ]
});

Modifiche ai piani con prorata

Effettua upgrade o downgrade di una sottoscrizione e controlla il comportamento della prorata:
await client.subscriptions.changePlan('sub_123', {
  product_id: 'prod_new',
  quantity: 1,
  proration_billing_mode: 'difference_immediately'
});

Annulla alla prossima data di fatturazione

Programma una cancellazione che entra in vigore alla fine del periodo di fatturazione corrente:
await client.subscriptions.update('sub_123', {
  cancel_at_next_billing_date: true
});

Sottoscrizioni on-demand

Crea una sottoscrizione on-demand e addebita in seguito secondo necessità:
const onDemand = await client.subscriptions.create({
  customer_id: 'cus_123',
  product_id: 'prod_on_demand',
  on_demand: true
});

await client.subscriptions.createCharge(onDemand.id, {
  amount: 4900,
  currency: 'USD',
  description: 'Extra usage for September'
});

Aggiorna il metodo di pagamento per una sottoscrizione attiva

Aggiorna il metodo di pagamento per una sottoscrizione attiva:
// Update with new payment method
const response = await client.subscriptions.updatePaymentMethod('sub_123', {
  type: 'new',
  return_url: 'https://example.com/return'
});

// Or use existing payment method
await client.subscriptions.updatePaymentMethod('sub_123', {
  type: 'existing',
  payment_method_id: 'pm_abc123'
});

Riattiva la sottoscrizione da on_hold

Riattiva una sottoscrizione sospesa a causa di un pagamento fallito:
// Update payment method - automatically creates charge for remaining dues
const response = await client.subscriptions.updatePaymentMethod('sub_123', {
  type: 'new',
  return_url: 'https://example.com/return'
});

if (response.payment_id) {
  // Charge created for remaining dues
  // Redirect customer to response.payment_link
  // Monitor webhooks: payment.succeeded → subscription.active
}

Sottoscrizioni con mandati conformi alla RBI

Le sottoscrizioni UPI e con carte indiane operano secondo i regolamenti della RBI (Reserve Bank of India) con requisiti di mandato specifici:

Limiti del mandato

Il tipo e l’importo del mandato dipendono dall’addebito ricorrente della tua sottoscrizione:
  • Addebiti inferiori a Rs 15.000: creiamo un mandato on-demand per Rs 15.000 INR. L’importo della sottoscrizione viene addebitato periodicamente secondo la frequenza della sottoscrizione, fino al limite del mandato.
  • Addebiti pari o superiori a Rs 15.000: creiamo un mandato di sottoscrizione (o mandato on-demand) per l’esatto importo della sottoscrizione.
Per informazioni dettagliate sui mandati conformi alla RBI per i metodi di pagamento indiani, consulta la pagina India Payment Methods.

Considerazioni su upgrade e downgrade

Importante: quando esegui upgrade o downgrade delle sottoscrizioni, considera attentamente i limiti del mandato:
  • Se un upgrade/downgrade comporta un importo superiore a Rs 15.000 e supera il limite di pagamento on-demand esistente, l’addebito della transazione potrebbe fallire.
  • In tali casi, il cliente potrebbe dover aggiornare il metodo di pagamento o modificare nuovamente la sottoscrizione per stabilire un nuovo mandato con il limite corretto.

Autorizzazione per addebiti di alto valore

Per gli addebiti di sottoscrizione pari o superiori a Rs 15.000:
  • La banca del cliente richiederà l’autorizzazione della transazione.
  • Se il cliente non autorizza la transazione, questa fallirà e la sottoscrizione verrà messa in sospeso.

Ritardo di elaborazione di 48 ore

Cronologia di elaborazione: gli addebiti ricorrenti su carte indiane e sottoscrizioni UPI seguono un modello di elaborazione unico:
  • Gli addebiti vengono avviati nella data programmata in base alla frequenza della sottoscrizione.
  • La deduzione effettiva dal conto del cliente avviene solo dopo 48 ore dall’avvio del pagamento.
  • Questa finestra di 48 ore può estendersi fino a 2-3 ore aggiuntive in base alle risposte delle API bancarie.

Finestra di cancellazione del mandato

Durante la finestra di elaborazione di 48 ore:
  • I clienti possono cancellare il mandato tramite le loro app bancarie.
  • Se un cliente cancella il mandato durante questo periodo, la sottoscrizione rimane attiva (si tratta di un caso limite specifico per le sottoscrizioni AutoPay con carte indiane e UPI).
  • Tuttavia, la deduzione effettiva potrebbe fallire e in tal caso metteremo la sottoscrizione in sospeso.
Gestione dei casi limite: se offri vantaggi, crediti o utilizzo della sottoscrizione ai clienti immediatamente dopo l’avvio dell’addebito, devi gestire correttamente questa finestra di 48 ore nella tua applicazione. Considera di:
  • Ritardare l’attivazione dei benefici fino alla conferma del pagamento
  • Implementare periodi di grazia o accesso temporaneo
  • Monitorare lo stato della sottoscrizione per cancellazioni del mandato
  • Gestire gli stati di sospensione delle sottoscrizioni nella logica applicativa
Monitora i webhook delle sottoscrizioni per tracciare le variazioni dello stato dei pagamenti e gestire i casi limite in cui i mandati vengono cancellati durante la finestra di 48 ore.

Migliori pratiche

  • Inizia con livelli chiari: 2–3 piani con differenze evidenti
  • Comunica i prezzi: mostra totali, prorata e prossimo rinnovo
  • Usa le prove in modo ponderato: converti con onboarding, non solo con il tempo
  • Sfrutta i componenti aggiuntivi: mantieni i piani base semplici e vendi extra
  • Testa le modifiche: convalida i cambi piano e la prorata in modalità test
Le sottoscrizioni sono una base flessibile per entrate ricorrenti. Inizia in modo semplice, testa approfonditamente e iterare in base ai metriche di adozione, abbandono ed espansione.