Skip to main content

Change Plan API

Full API docs for updating subscriptions.

Plan Change Preview

See charge amounts before changing plans.

Integration Guide

Step-by-step subscription setup.

What is a subscription upgrade or downgrade?

Changing plans lets you move a customer between subscription tiers or quantities. Use it to:
  • Align pricing with usage or features
  • Move from monthly to annual (or vice versa)
  • Adjust quantity for seat-based products
Plan changes can trigger an immediate charge depending on the proration mode you choose.

When to use plan changes

  • Upgrade when a customer needs more features, usage, or seats
  • Downgrade when usage decreases
  • Migrate users to a new product or price without cancelling their subscription

Plan Change Flow

Prerequisites

Before implementing subscription plan changes, ensure you have:
  • A Dodo Payments merchant account with active subscription products
  • API credentials (API key and webhook secret key) from the dashboard
  • An existing active subscription to modify
  • Webhook endpoint configured to handle subscription events
For detailed setup instructions, see our Integration Guide.

Step-by-Step Implementation Guide

Follow this comprehensive guide to implement subscription plan changes in your application:
1

Understand Plan Change Requirements

Before implementing, determine:
  • Which subscription products can be changed to which others
  • What proration mode fits your business model
  • How to handle failed plan changes gracefully
  • Which webhook events to track for state management
Test plan changes thoroughly in test mode before implementing in production.
2

Choose Your Proration Strategy

Select the billing approach that aligns with your business needs:
Best for: SaaS applications wanting to charge fairly for unused time
  • Calculates exact prorated amount based on remaining cycle time
  • Charges a prorated amount based on unused time remaining in the cycle
  • Provides transparent billing to customers
3

Implement the Change Plan API

Use the Change Plan API to modify subscription details:
string
obbligatorio
The ID of the active subscription to modify.
string
obbligatorio
The new product ID to change the subscription to.
integer
obbligatorio
Number of units for the new plan (for seat-based products).
string
obbligatorio
How to handle immediate billing: prorated_immediately, full_immediately, difference_immediately, or do_not_bill.
array
Optional addons for the new plan. Leaving this empty removes any existing addons.
string
Controls behavior when the plan change payment fails:
  • prevent_change: Keep subscription on current plan until payment succeeds
  • apply_change (default): Apply plan change immediately regardless of payment outcome
If not specified, uses the business-level default setting.
Raccogli l’importo della modifica del piano con un link di pagamento invece di addebitare il metodo di pagamento salvato dell’abbonamento. Il cliente paga su una pagina di checkout ospitata.Richiede la capability allow_plan_change_via_payment_link dell’azienda (Settings → Subscriptions → Collect Plan Change Payments by Payment Link), effective_at: immediately e on_payment_failure: prevent_change. Consulta Collecting Payment via a Checkout Link.Ignorato dalla route di anteprima.
array
Codici sconto stacked opzionali da applicare al nuovo piano (massimo 20, applicati nell’ordine dell’array). Il comportamento dipende da ciò che invii:
  • Non fornito / null — gli sconti esistenti con preserve_on_plan_change=true vengono mantenuti, se applicabili al nuovo prodotto.
  • [] (array vuoto) — rimuove tutti gli sconti esistenti dall’abbonamento.
  • ["CODE_A", "CODE_B", ...] — sostituisce gli eventuali sconti esistenti con questo insieme stacked.
string
deprecato
Deprecato — per le nuove integrazioni, preferisci discount_codes. Questo campo continua a funzionare per la compatibilità con le versioni precedenti, ma non può essere combinato con discount_codes nella stessa richiesta.
string
predefinito:"immediately"
Quando applicare la modifica del piano:
  • immediately (predefinito): applica subito la modifica del piano
  • next_billing_date: pianifica la modifica per la prossima data di fatturazione. Il cliente mantiene il piano attuale fino alla fine del periodo di fatturazione.
Usa next_billing_date per i downgrade, così i clienti mantengono i vantaggi del piano attuale fino alla fine del periodo di fatturazione.
4

Handle Webhook Events

Configura la gestione dei webhook per monitorare gli esiti delle modifiche del piano:
  • subscription.active: modifica del piano completata, abbonamento aggiornato
  • subscription.plan_changed: piano dell’abbonamento modificato (upgrade/downgrade/aggiornamento dell’addon)
  • subscription.on_hold: addebito della modifica del piano non riuscito, rinnovi interrotti
  • payment.succeeded: addebito immediato della modifica del piano completato
  • payment.failed: addebito immediato non riuscito
Verifica sempre le firme dei webhook e implementa l’elaborazione idempotente degli eventi.
5

Update Your Application State

In base agli eventi webhook, aggiorna la tua applicazione:
  • Concedi/revoca le funzionalità in base al nuovo piano
  • Aggiorna il dashboard del cliente con i dettagli del nuovo piano
  • Invia email di conferma sulle modifiche del piano
  • Registra le modifiche di fatturazione per scopi di audit
6

Test and Monitor

Testa accuratamente la tua implementazione:
  • Testa tutte le modalità di prorazione con scenari diversi
  • Verifica che la gestione dei webhook funzioni correttamente
  • Monitora i tassi di successo delle modifiche del piano
  • Configura avvisi per le modifiche del piano non riuscite
L’implementazione della modifica del piano dell’abbonamento è ora pronta per l’uso in produzione.

Anteprima delle modifiche del piano

Prima di confermare una modifica del piano, usa l’API Preview per mostrare ai clienti esattamente quanto verrà loro addebitato:
Usa l’API Preview per creare finestre di conferma che mostrino ai clienti l’importo esatto che verrà loro addebitato prima di confermare una modifica del piano.

API Change Plan

Usa l’API Change Plan per modificare prodotto, quantità e comportamento della prorazione per un abbonamento attivo.

Esempi per iniziare rapidamente

Una modifica del piano completata restituisce immediatamente 200 OK, prima che qualsiasi addebito sia stato effettivamente saldato. Il contenuto del body (ChangePlanResponse) dipende da come è stata riscossa la modifica:
In ogni caso, questa risposta non è un risultato di pagamento: indica soltanto che la richiesta stessa è stata accettata. Non dice nulla sull’effettivo esito di un addebito immediato.Per un addebito immediato ordinario, l’esito viene determinato fuori sessione subito dopo la chiamata.Per una richiesta collect_via_payment_link, l’esito viene determinato più tardi e in modo asincrono: la risposta ti fornisce solo un link di checkout, l’abbonamento rimane sul piano attuale e l’esito non è noto finché il cliente non completa effettivamente il pagamento tramite quel link.In entrambi i casi, non dedurre l’esito da questa risposta. Confermalo tramite webhook (payment.succeeded, payment.failed, subscription.plan_changed) oppure rileggendo l’abbonamento con GET /subscriptions/{subscription_id} — per il caso del payment link nello specifico, consulta What Happens While the Link Is Unpaid.
Se l’addebito immediato non riesce, l’abbonamento può passare allo stato subscription.on_hold finché il pagamento non va a buon fine.
Per impostazione predefinita, una modifica immediata del piano addebita direttamente il metodo di pagamento salvato dell’abbonamento. Imposta collect_via_payment_link: true per inviare il cliente a una pagina di checkout ospitata: è utile quando non esiste un metodo di pagamento salvato che puoi addebitare fuori sessione o quando vuoi che il cliente confermi attivamente il nuovo prezzo.
Questo è anche ciò che alimenta l’opzione Collect Plan Change Payments by Payment Link in Settings → Subscriptions, che indirizza il flusso di modifica del piano del Customer Portal integrato al checkout invece che alla carta salvata.

Requisiti

collect_via_payment_link: true ha esito positivo solo quando sono soddisfatte tutte le condizioni seguenti; in caso contrario, la richiesta non va a buon fine con 422:
  • L’azienda ha abilitato la capability allow_plan_change_via_payment_link (Settings → Subscriptions → Collect Plan Change Payments by Payment Link).
  • effective_at è immediately (il valore predefinito). Una modifica pianificata (next_billing_date) non richiede mai una pagina di checkout, poiché non viene addebitato nulla fino alla sua applicazione.
  • on_payment_failure effettivo restituisce prevent_change. Non è necessario inviarlo esplicitamente: se il valore predefinito a livello aziendale (vedi Business & Collection Defaults di seguito) è già prevent_change, anche omettere il campo soddisfa questo requisito. Un apply_change esplicito, o un valore predefinito risolto in apply_change, non va a buon fine con 422.
collect_via_payment_link non è limitato agli upgrade: si applica a qualsiasi modifica immediata che comporti un addebito, inclusi i downgrade, purché siano soddisfatti i requisiti precedenti.
Se la modifica risulta pari a zero o a un creditoproration_billing_mode: do_not_bill, oppure un’altra modalità che in questo ciclo risulti pari a zero — non c’è nulla da inserire in una pagina di checkout. Non viene emesso alcun payment link, payment_link e gli altri campi simili restituiscono null, e la modifica viene applicata immediatamente, proprio come avverrebbe senza collect_via_payment_link. Questo non è un 422: il flag ha effetto solo quando c’è un importo positivo da riscuotere. Se imposti collect_via_payment_link sulle modifiche del piano in generale, anziché solo sugli upgrade evidenti, chiama prima Preview Plan Change e richiedi un link solo quando l’importo visualizzato in anteprima vale la pena di essere riscosso.
Una richiesta completata restituisce i riferimenti al checkout:
  • L’abbonamento rimane sul piano attuale: product_id, recurring_pre_tax_amount e next_billing_date rimangono invariati finché il link non viene pagato.
  • Un’ulteriore richiesta change-plan sullo stesso abbonamento viene rifiutata con 409 PendingPlanChangeExists mentre il link è in attesa. Se necessario, annulla una modifica pianificata con DELETE /subscriptions/{subscription_id}/change-plan/scheduled, ma quell’endpoint non annulla una modifica tramite payment link in attesa: solo un pagamento completato o la scadenza possono farlo.
  • Il cliente può ritentare il pagamento con la carta nella stessa sessione di checkout dopo un rifiuto; una nuova chiamata change-plan non è il percorso per ritentare il pagamento.
  • Se il link non viene mai pagato, smette di funzionare dopo expires_on; poco dopo, l’abbonamento diventa automaticamente disponibile per accettare una nuova richiesta di modifica del piano.
  • Se esisteva già una modifica pianificata (next_billing_date) e la sostituisci con cancel_scheduled_change_plan: true, la pianificazione originale rimane attiva mentre il link non è pagato e viene annullata solo dopo il pagamento del link, nella stessa transazione che applica il nuovo piano.
Una volta emessa una modifica immediata tramite payment link, ogni ulteriore richiesta di modifica del piano per quell’abbonamento, inclusa l’anteprima senza effetti collaterali, viene bloccata finché il link non viene risolto. Non emettere un link che non intendi far pagare subito al cliente.

Gestione degli addon

Quando modifichi i piani degli abbonamenti, puoi modificare anche gli addon:
Gli addon sono inclusi nel calcolo della prorazione e vengono addebitati in base alla modalità di prorazione selezionata.

Applicazione dei codici sconto

Puoi applicare uno o più codici sconto stacked quando modifichi i piani degli abbonamenti (massimo 20, applicati nell’ordine dell’array). È utile per offrire prezzi promozionali su upgrade o migrazioni.

Comportamento degli sconti durante la modifica del piano

Il campo singolare discount_code su questo endpoint è deprecato, ma continua a funzionare per la compatibilità con le versioni precedenti: le integrazioni esistenti non devono essere modificate immediatamente. Non può essere combinato con discount_codes nella stessa richiesta. Esegui la migrazione al formato array quando preferisci.
Usa la Preview Plan Change API con discount_codes per mostrare ai clienti esattamente quanto risparmieranno prima di confermare la modifica del piano.

Modalità di prorazione

Scegli come addebitare il cliente quando modifichi i piani:

prorated_immediately

  • Addebita la differenza parziale per il ciclo attuale
  • Se il cliente è in prova, addebita immediatamente e passa subito al nuovo piano
  • Downgrade: può generare un credito prorato applicato ai rinnovi futuri

full_immediately

  • Addebita immediatamente l’intero importo del nuovo piano
  • Ignora il tempo rimanente del vecchio piano
I crediti creati dai downgrade usando difference_immediately sono associati all’abbonamento e distinti dalle entitlements di Credit-Based Billing. Vengono applicati automaticamente ai rinnovi futuri dello stesso abbonamento e non sono trasferibili tra abbonamenti.

difference_immediately

  • Upgrade: addebita immediatamente la differenza di prezzo tra il vecchio e il nuovo piano
  • Downgrade: aggiunge il valore rimanente come credito interno all’abbonamento e lo applica automaticamente ai rinnovi

do_not_bill

  • Non vengono calcolati addebiti o crediti
  • Il cliente passa immediatamente al nuovo piano senza alcun adeguamento di fatturazione
  • Il ciclo di fatturazione rimane invariato
  • Ideale per migrazioni di cortesia, passaggi a piani gratuiti o assorbimento delle differenze di costo

Scenari di esempio

Usa questi valori canonici in modo coerente:
  • Piano attuale: Basic a $30/mese
  • Obiettivo dell’upgrade: Pro a $80/mese
  • Obiettivo del downgrade (da Pro): Starter a $20/mese
  • Ciclo di fatturazione: 30 giorni, iniziato il January 1
  • La modifica del piano avviene il January 16 (15 giorni rimanenti, 15 giorni utilizzati)

Come ogni modalità gestisce la fatturazione

Scegli prorated_immediately per una contabilizzazione equa basata sul tempo; scegli full_immediately per riavviare la fatturazione; usa difference_immediately per upgrade semplici e crediti automatici sui downgrade; oppure usa do_not_bill per cambiare piano senza alcun adeguamento di fatturazione.

Gestione dei pagamenti non riusciti

Controlla cosa succede quando il pagamento di una modifica del piano non riesce usando il parametro on_payment_failure.

Modalità di pagamento non riuscito

Se non specificato, il parametro on_payment_failure usa l’impostazione predefinita a livello aziendale configurata nel dashboard.

Quando usare ciascuna modalità

Impostazioni predefinite aziendali e di raccolta

Invece di passare i parametri di prorazione a ogni modifica del piano, puoi impostare una volta il comportamento predefinito per upgrade e downgrade a livello aziendale. Queste impostazioni predefinite si applicano a tutte le modifiche del piano dal portale clienti e possono essere sostituite per ogni raccolta di prodotti. Esistono impostazioni predefinite separate per upgrade e downgrade: Configura le impostazioni predefinite aziendali in Settings → Subscriptions e le sostituzioni della raccolta in ogni raccolta di prodotti. Ogni campo della raccolta è indipendente: lascialo non impostato per ereditare dall’impostazione predefinita aziendale, oppure imposta un valore per sostituirlo solo per quella raccolta.

Ordine di risoluzione

Per qualsiasi modifica del piano, ogni impostazione viene risolta nel seguente ordine:
Un valore passato esplicitamente alla Change Plan API ha sempre la precedenza. Le impostazioni predefinite aziendali e della raccolta hanno effetto solo quando non viene fornito alcun valore esplicito, come avviene per tutte le modifiche del piano avviate dal portale clienti.
Una configurazione comune: mantieni gli upgrade su immediately + difference_immediately, così i clienti pagano la differenza e ottengono subito l’accesso, e mantieni i downgrade su next_billing_date, così conservano il piano attuale fino alla fine del ciclo.

Gestione dei webhook

Monitora lo stato dell’abbonamento tramite webhook per confermare le modifiche del piano e i pagamenti.

Tipi di eventi da gestire

  • subscription.active: abbonamento attivato
  • subscription.plan_changed: piano dell’abbonamento modificato (modifiche di upgrade/downgrade/addon)
  • subscription.on_hold: addebito non riuscito, rinnovi interrotti
  • subscription.renewed: rinnovo completato
  • payment.succeeded: pagamento della modifica del piano o del rinnovo completato
  • payment.failed: pagamento non riuscito
Ti consigliamo di basare la logica aziendale sugli eventi dell’abbonamento e di usare gli eventi di pagamento per la conferma e la riconciliazione.

Verifica delle firme e gestione degli intent

Per gli schemi dettagliati dei payload, consulta i Subscription webhook payloads e i Payment webhook payloads.

Procedure consigliate

Segui queste raccomandazioni per modifiche affidabili dei piani degli abbonamenti:

Strategia di modifica del piano

  • Testa accuratamente: testa sempre le modifiche del piano in modalità test prima della produzione
  • Scegli attentamente la prorazione: seleziona la modalità di prorazione in linea con il tuo modello aziendale
  • Gestisci correttamente gli errori: implementa una gestione degli errori e una logica di retry adeguate
  • Monitora i tassi di successo: monitora i tassi di successo/errore delle modifiche del piano e analizza i problemi

Implementazione dei webhook

  • Verifica le firme: convalida sempre le firme dei webhook per garantirne l’autenticità
  • Implementa l’idempotenza: gestisci correttamente gli eventi webhook duplicati
  • Elabora in modo asincrono: non bloccare le risposte dei webhook con operazioni pesanti
  • Registra tutto: mantieni log dettagliati per il debug e gli audit

Esperienza utente

  • Comunica chiaramente: informa i clienti sulle modifiche di fatturazione e sulle tempistiche
  • Fornisci conferme: invia email di conferma per le modifiche del piano completate
  • Gestisci i casi limite: considera periodi di prova, prorazioni e pagamenti non riusciti
  • Aggiorna subito l’interfaccia: rifletti le modifiche del piano nell’interfaccia della tua applicazione

Problemi comuni e soluzioni

Risolvi i problemi tipici riscontrati durante le modifiche dei piani degli abbonamenti:
Sintomi: la chiamata API ha esito positivo, ma l’abbonamento rimane sul vecchio pianoCause comuni:
  • L’elaborazione del webhook non è riuscita o è stata ritardata
  • Lo stato dell’applicazione non è stato aggiornato dopo la ricezione dei webhook
  • Problemi nelle transazioni del database durante l’aggiornamento dello stato
Soluzioni:
  • Implementa una gestione robusta dei webhook con logica di retry
  • Usa operazioni idempotenti per gli aggiornamenti dello stato
  • Aggiungi il monitoraggio per rilevare e segnalare gli eventi webhook mancanti
  • Verifica che l’endpoint webhook sia accessibile e risponda correttamente
Sintomi: il cliente effettua il downgrade, ma non vede il saldo dei creditiCause comuni:
  • Aspettative sulla modalità di prorazione: i downgrade accreditano l’intera differenza di prezzo del piano con difference_immediately, mentre prorated_immediately crea un credito prorato basato sul tempo rimanente del ciclo
  • I crediti sono specifici dell’abbonamento e non vengono trasferiti tra abbonamenti
  • Il saldo dei crediti non è visibile nel dashboard del cliente
Soluzioni:
  • Usa difference_immediately per i downgrade quando vuoi crediti automatici
  • Spiega ai clienti che i crediti si applicano ai rinnovi futuri dello stesso abbonamento
  • Implementa il portale clienti per mostrare i saldi dei crediti
  • Controlla l’anteprima della prossima fattura per visualizzare i crediti applicati
Sintomi: gli eventi webhook vengono rifiutati a causa di una firma non validaCause comuni:
  • Chiave segreta del webhook errata
  • Body della richiesta raw modificato prima della verifica della firma
  • Algoritmo di verifica della firma errato
Soluzioni:
  • Verifica di usare il corretto DODO_WEBHOOK_SECRET dal dashboard
  • Leggi il body raw della richiesta prima di qualsiasi middleware di parsing JSON
  • Usa la libreria standard di verifica dei webhook per la tua piattaforma
  • Testa la verifica della firma dei webhook nell’ambiente di sviluppo
Sintomi: l’API restituisce un errore 422 Unprocessable EntityCause comuni:
  • ID dell’abbonamento o ID del prodotto non validi
  • Abbonamento non nello stato attivo
  • Parametri obbligatori mancanti
  • Prodotto non disponibile per le modifiche del piano
Soluzioni:
  • Verifica che l’abbonamento esista e sia attivo
  • Controlla che l’ID del prodotto sia valido e disponibile
  • Assicurati che siano forniti tutti i parametri obbligatori
  • Consulta la documentazione API per i requisiti dei parametri
Sintomi: la modifica del piano è stata avviata, ma l’addebito immediato non riesceCause comuni:
  • Fondi insufficienti sul metodo di pagamento del cliente
  • Metodo di pagamento scaduto o non valido
  • La banca ha rifiutato la transazione
  • Il rilevamento delle frodi ha bloccato l’addebito
Soluzioni:
  • Gestisci opportunamente gli eventi webhook payment.failed
  • Informa il cliente di aggiornare il metodo di pagamento
  • Implementa una logica di retry per gli errori temporanei
  • Valuta di consentire modifiche del piano con addebiti immediati non riusciti
Sintomi: l’addebito della modifica del piano non riesce e l’abbonamento passa allo stato on_holdCosa succede: Quando l’addebito di una modifica del piano non riesce, l’abbonamento viene automaticamente impostato sullo stato on_hold. L’abbonamento non verrà rinnovato automaticamente finché il metodo di pagamento non viene aggiornato.Soluzione: aggiorna il metodo di pagamento per riattivare l’abbonamentoPer riattivare un abbonamento nello stato on_hold dopo una modifica del piano non riuscita:
  1. Aggiorna il metodo di pagamento usando l’API Update Payment Method
  2. Creazione automatica dell’addebito: l’API crea automaticamente un addebito per gli importi ancora dovuti
  3. Generazione della fattura: viene generata una fattura per l’addebito
  4. Elaborazione del pagamento: il pagamento viene elaborato usando il nuovo metodo di pagamento
  5. Riattivazione: dopo il pagamento completato, l’abbonamento viene riattivato allo stato active
Eventi webhook da monitorare:
  • subscription.on_hold: abbonamento sospeso (ricevuto quando l’addebito della modifica del piano non riesce)
  • payment.succeeded: pagamento degli importi ancora dovuti completato (dopo l’aggiornamento del metodo di pagamento)
  • subscription.active: abbonamento riattivato dopo il pagamento completato
Procedure consigliate:
  • Informa immediatamente i clienti quando l’addebito di una modifica del piano non riesce
  • Fornisci istruzioni chiare su come aggiornare il metodo di pagamento
  • Monitora gli eventi webhook per tenere traccia dello stato di riattivazione
  • Valuta di implementare una logica di retry automatica per i pagamenti temporaneamente non riusciti

Update Payment Method API Reference

Consulta la documentazione API completa per aggiornare i metodi di pagamento e riattivare gli abbonamenti.

Test della tua implementazione

Segui questi passaggi per testare accuratamente l’implementazione delle modifiche del piano degli abbonamenti:
1

Set up test environment

  • Usa chiavi API di test e prodotti di test
  • Crea abbonamenti di test con diversi tipi di piano
  • Configura l’endpoint webhook di test
  • Configura il monitoraggio e il logging
2

Test different proration modes

  • Testa prorated_immediately con diverse posizioni nel ciclo di fatturazione
  • Testa difference_immediately per upgrade e downgrade
  • Testa full_immediately per reimpostare i cicli di fatturazione
  • Testa do_not_bill per passaggi di piano senza addebiti o crediti
  • Verifica che i calcoli dei crediti siano corretti
3

Test webhook handling

  • Verifica che vengano ricevuti tutti gli eventi webhook pertinenti
  • Testa la verifica delle firme dei webhook
  • Gestisci correttamente gli eventi webhook duplicati
  • Testa gli scenari di errore nell’elaborazione dei webhook
4

Test error scenarios

  • Testa con ID di abbonamento non validi
  • Testa con metodi di pagamento scaduti
  • Testa errori di rete e timeout
  • Testa con fondi insufficienti
5

Monitor in production

  • Configura avvisi per le modifiche del piano non riuscite
  • Monitora i tempi di elaborazione dei webhook
  • Monitora i tassi di successo delle modifiche del piano
  • Esamina i ticket dell’assistenza clienti relativi ai problemi delle modifiche del piano

Gestione degli errori

Gestisci correttamente gli errori API comuni nella tua implementazione:

Codici di stato HTTP

La richiesta di modifica del piano è stata elaborata correttamente. Il body della risposta è vuoto, ad eccezione di una richiesta collect_via_payment_link completata, che restituisce i riferimenti al checkout: consulta Collecting Payment via a Checkout Link. Se on_payment_failure=prevent_change, la modifica del piano rimane in attesa finché il pagamento non va a buon fine.
Parametri della richiesta non validi. Verifica che tutti i campi obbligatori siano forniti e formattati correttamente.
Chiave API non valida o mancante. Verifica che DODO_PAYMENTS_API_KEY sia corretto e disponga delle autorizzazioni appropriate.
ID dell’abbonamento non trovato o non appartenente al tuo account.
Esiste già una modifica del piano in attesa per questo abbonamento (PendingPlanChangeExists). Per una modifica pianificata, annullala con DELETE /subscriptions/{subscription_id}/change-plan/scheduled prima di inviarne una nuova. Per una modifica payment link in attesa, non esiste alcun endpoint di annullamento: l’abbonamento accetta una nuova richiesta di modifica del piano quando il cliente paga o il link scade.
L’abbonamento è inattivo o on-demand, oppure la richiesta non è idonea per collect_via_payment_link: l’azienda non ha abilitato la capability, effective_at non è immediately oppure on_payment_failure non è prevent_change. Consulta Requirements.
Si è verificato un errore del server. Riprova la richiesta dopo una breve attesa.

Formato della risposta di errore

Passaggi successivi

Ultima modifica il 26 agosto 2026