Tutti gli articoli
Guida pratica8 min di lettura

Apple e Google ti permettono di estendere la data di rinnovo di un abbonamento dopo un disservizio, e i loro limiti non si somigliano affatto

Quando la tua app va giù, puoi estendere la data di rinnovo di un abbonamento invece di aspettare le richieste di rimborso. Ecco come funzionano le estensioni di 90 giorni di Apple e il rinvio della fatturazione di Google Play, dove ogni store fissa il limite e quanto ti costa ciascuna opzione.

Un rack di server con spie di allarme ambra accanto a un portatile che mostra un calendario, il momento in cui uno sviluppatore decide di estendere la data di rinnovo di un abbonamento dopo un disservizio

Punti chiave

  • La App Store Server API permette a uno sviluppatore di estendere da 1 a 90 giorni la data di rinnovo di un abbonamento a rinnovo automatico attivo e pagato, per compensare un disservizio, un evento annullato o una diretta interrotta.
  • Apple consente due estensioni della data di rinnovo per cliente nell'arco di 365 giorni. Un'estensione non può essere annullata una volta entrata in vigore, e Apple invia al cliente un'email con la nuova data di rinnovo.
  • Apple non estende un abbonamento che si trova in un periodo di offerta gratuita, in un nuovo tentativo di addebito, in un periodo di tolleranza la cui data di scadenza è passata, o già scaduto. L'abbonamento deve avere alle spalle almeno un periodo pagato.
  • I giorni aggiunti con un'estensione della data di rinnovo di Apple non contano per l'anno di servizio pagato che porta la quota di ricavi da abbonamento dello sviluppatore dal 70% all'85%.
  • purchases.subscriptionsv2.defer di Google Play sposta in avanti la prossima data di addebito di un abbonamento da un minimo di un giorno fino a un anno per chiamata. L'utente mantiene l'accesso completo senza alcun addebito, e Google invia una notifica SUBSCRIPTION_DEFERRED.
  • Un'estensione della data di rinnovo non restituisce denaro, quindi lo sviluppatore tiene il pagamento ma paga calcolo, storage e chiamate API dei giorni aggiunti senza un rinnovo che li copra. Un rimborso restituisce il prezzo e nulla del denaro già speso per servire quel cliente.
  • Se un disservizio ha impedito la consegna di un acquisto in-app e Apple invia un CONSUMPTION_REQUEST, il deliveryStatus onesto è UNDELIVERED_SERVER_OUTAGE, e Apple richiede che consumptionPercentage sia 0 per qualsiasi stato diverso da DELIVERED.

Un disservizio dà a ogni abbonato la motivazione di rimborso più pulita che esista, e non puoi impedirgli di usarla. Quello che puoi fare è restituire i giorni persi prima che qualcuno li chieda. Entrambi gli store ti permettono di estendere la data di rinnovo di un abbonamento, così il cliente riceve tempo gratuito invece di denaro. Apple limita ogni estensione a 90 giorni e ne consente due all'anno. Google ti lascia rinviare la fatturazione fino a un anno per chiamata. Le procedure, le notifiche e il conto che c'è sotto sono abbastanza diversi da rendere insufficiente un unico piano per entrambi.

Cosa fa un disservizio alla tua esposizione ai rimborsi

I rimborsi li decidono gli store, non tu. Sull'App Store, il cliente lo chiede ad Apple e Apple decide. Puoi ricevere una notifica CONSUMPTION_REQUEST e avere 12 ore per inviare dati di consumo tramite Send Consumption Information. Questo è tutto il tuo margine di intervento.

Su Google Play, un acquirente può ottenere un rimborso entro 48 ore dall'acquisto senza che nessuno ti interpelli. Dopo, le richieste arrivano a te. L'unico flusso di Google che chiede le tue prove è un chargeback segnalato per la revisione dello sviluppatore, a cui rispondi tramite orders.reviewrefund entro 24 ore. La decisione della banca su un chargeback è definitiva.

Quindi nessuno dei due store ti offre un modo per bloccare un rimborso. Quello che controlli è se un abbonato si sente ancora penalizzato quando il servizio torna. Tempo extra sull'abbonamento, concesso in fretta e comunicato con chiarezza, è lo strumento che entrambi gli store hanno creato proprio per questo.

Come estendere la data di rinnovo di un abbonamento sull'App Store

La App Store Server API ha due endpoint per questo. Extend a Subscription Renewal Date agisce su un singolo abbonamento, che identifichi tramite il suo originalTransactionId. Extend Subscription Renewal Dates for All Active Subscribers agisce su tutti gli abbonati idonei di un productId, e puoi limitarlo con storefrontCountryCodes quando il disservizio ha colpito solo alcune regioni.

Ogni richiesta contiene tre elementi: extendByDays, un numero da 1 a 90; un extendReasonCode; e un requestIdentifier generato da te. Il codice motivo 3 indica un problema o un disservizio. Il codice 1 è la soddisfazione del cliente, il codice 2 sono altri motivi e il codice 0 è non dichiarato.

Quali abbonamenti Apple estende

Sono idonei solo gli abbonamenti a rinnovo automatico attivi con almeno un periodo già pagato. Apple esclude questi:

  • Abbonamenti in un periodo di offerta gratuita, come una prova gratuita.
  • Abbonamenti inattivi in stato di nuovo tentativo di addebito.
  • Abbonamenti in un periodo di tolleranza per la fatturazione la cui data di scadenza è già passata.
  • Abbonamenti che hanno già ricevuto due estensioni della data di rinnovo negli ultimi 365 giorni.
  • Abbonamenti scaduti.

In famiglia è incluso senza sforzo. Quando Apple estende un abbonamento acquistato che supporta In famiglia, vengono estesi anche gli abbonamenti dei membri della famiglia. Non puoi agire direttamente sull'abbonamento di un membro della famiglia.

La richiesta massiva è lenta, quindi tieni d'occhio le notifiche

Apple dice che una richiesta per estendere tutti gli abbonati attivi può richiedere ore, o perfino giorni, a seconda di quanti abbonati hai. Una risposta 200 significa solo che Apple la sta elaborando. App Store Server Notifications V2 ti dice com'è andata:

NotificaSottotipoCosa significa
RENEWAL_EXTENDEDnessunoLa data di rinnovo di un abbonamento è stata estesa
RENEWAL_EXTENSIONFAILUREL'estensione di un abbonamento non è riuscita
RENEWAL_EXTENSIONSUMMARYL'intera richiesta massiva è completata

Per ogni FAILURE, prendi l'originalTransactionId dalla transazione firmata nel payload e riprova con l'endpoint per il singolo abbonamento. Se preferisci interrogare l'API, Get Status of Subscription Renewal Date Extensions ti dice se la richiesta è completata e quante estensioni sono riuscite o fallite.

Come funziona il rinvio della fatturazione di Google Play

La versione di Google è purchases.subscriptionsv2.defer, da chiamare una volta per token di acquisto. Il corpo della richiesta contiene un deferralContext con tre campi. L'etag viene da purchases.subscriptionsv2.get, e la chiamata fallisce se non corrisponde all'etag più recente dell'abbonamento. Il deferDuration indica di quanto spostare la data. E validateOnly, se true, esegue la richiesta come prova senza toccare l'abbonamento.

La guida alla fatturazione di Google fissa l'intervallo da un giorno a un anno per chiamata API. Per andare oltre, chiama di nuovo prima che arrivi la nuova data di scadenza. Per un abbonamento a rinnovo automatico, il rinvio sposta la prossima data di rinnovo. Per un piano prepagato, sposta l'orario di scadenza. In un abbonamento con componenti aggiuntivi, ogni elemento viene rinviato della stessa durata. La risposta elenca il nuovo expiryTime di ogni elemento.

Durante il rinvio l'utente resta abbonato con accesso completo e non paga il tempo extra. Google invia una notifica in tempo reale per sviluppatori SUBSCRIPTION_DEFERRED. Il vecchio purchases.subscriptions.defer è deprecato, quindi il nuovo codice deve usare il metodo v2.

Google non avvisa il tuo cliente, quindi devi farlo tu

Apple invia un'email al cliente dopo ogni estensione riuscita. La guida alla fatturazione di Google non descrive alcun messaggio all'utente. Se lo scopo è prevenire le richieste di rimborso, l'abbonato deve sapere che quel tempo extra esiste. Comunicalo tu, nell'app e via email, dicendo quanti giorni e perché.

Apple e Google a confronto

Apple App StoreGoogle Play
APIExtend a Subscription Renewal Date, più un endpoint massivopurchases.subscriptionsv2.defer
Durata per richiestaDa 1 a 90 giorniDa 1 giorno a 1 anno
FrequenzaDue volte per cliente in 365 giorniNessun limite indicato; richiama prima della nuova data di scadenza
Opzione massivaUna chiamata per productId, eventualmente per storefrontUna chiamata per token di acquisto
Prova gratuitaNon idoneaNon trattato nella guida di Google
NotificaRENEWAL_EXTENDED, RENEWAL_EXTENSIONSUBSCRIPTION_DEFERRED
Avviso al clienteApple invia un'emailSta a te
ReversibileNoNon trattato nella guida di Google

Quanto costa un'estensione rispetto a un rimborso

Un rimborso e un'estensione prendono denaro da posti diversi. Un rimborso restituisce ciò che il cliente ha pagato per il periodo. Tutto ciò che hai già speso per servire quel cliente resta speso: il calcolo di ogni sessione, le chiamate all'API del modello, lo storage e qualsiasi compenso a un creator di cui ha usato i contenuti.

Un'estensione mantiene il pagamento. Il suo costo è il servizio che eroghi senza un rinnovo che lo paghi. Per ogni giorno aggiunto, un abbonato attivo continua a generare gli stessi costi. Per un utente leggero è quasi nulla. Per un utente intensivo di una funzione di IA, 30 giorni extra possono voler dire 30 giorni di chiamate al modello senza ricavi a coprirle. Dimensiona l'estensione sul disservizio, non sulle scuse che vorresti fare.

Cosa perdiRimborsoEstensione della data di rinnovo
Il pagamento dell'abbonamentoRestituito al clienteMantenuto
Costi già sostenuti per servire il clientePersiPersi
Calcolo, storage e chiamate API nei giorni aggiuntiNessuno, l'accesso terminaA tuo carico, ancora senza rinnovo
L'abbonamento dopoTermina se il rimborso revoca l'accessoAttivo, si rinnova alla nuova data

Il costo in commissioni su Apple

Apple paga il 70% di ogni rinnovo durante il primo anno di servizio pagato di un abbonato e l'85% dopo. La pagina di Apple sugli abbonamenti dice che i giorni di estensione del rinnovo sono esclusi dai giorni di servizio pagato. Quindi un'estensione di 30 giorni sposta di 30 giorni il passaggio di quell'abbonato all'85%. Se fai parte dell'App Store Small Business Program, ricevi già l'85% e questo costo non si applica.

Il costo dei chargeback su Google Play

Per gli ordini effettuati dopo il 3 agosto 2026, un chargeback vinto dal titolare della carta costa a uno sviluppatore Google Play il prezzo d'acquisto meno la commissione di servizio di Play, più le commissioni bancarie. Un disservizio è proprio il tipo di evento che spinge un cliente irritato verso la sua banca. Un rinvio che lo raggiunge prima costa meno di una contestazione che non puoi ribaltare.

Un calendario da parete con una data spostata in avanti accanto a un telefono e a una fattura di hosting cloud, i costi che uno sviluppatore valuta prima di estendere un abbonamento dopo un disservizio

Quando un'estensione non è lo strumento giusto

L'acquisto non era un abbonamento

Le estensioni della data di rinnovo valgono solo per gli abbonamenti. Se un disservizio ha compromesso un consumabile o uno sblocco una tantum, consegna di nuovo l'articolo. Se Apple invia un CONSUMPTION_REQUEST per quell'acquisto, segnala cosa è successo. Il campo deliveryStatus di Apple ha un valore apposito, UNDELIVERED_SERVER_OUTAGE, e Apple dice che qualsiasi stato diverso da DELIVERED deve accompagnarsi a consumptionPercentage impostato a 0.

Il cliente ha già usato entrambe le estensioni Apple

Il limite di Apple è di due estensioni per cliente in 365 giorni. Due disservizi in un anno le esauriscono, e un terzo ti lascia senza nulla da offrire tramite lo store. Tieni traccia di quante estensioni ha usato ogni originalTransactionId, così le notifiche FAILURE della richiesta massiva non ti colgono di sorpresa.

Il cliente è in prova gratuita

Apple non estende un abbonamento in un periodo di offerta gratuita. Un utente in prova ha perso giorni gratuiti, non pagati, quindi il rischio di rimborso è basso. Se vuoi farti perdonare, un messaggio in-app costa meno di qualsiasi chiamata API.

Una checklist per il prossimo disservizio

  • Registra quando il disservizio è iniziato e finito, e quali prodotti e regioni ha colpito.
  • Scegli un numero di giorni che copra il tempo perso. Su Apple, usa il codice motivo 3 e resta tra 1 e 90.
  • Su Apple, invia una richiesta massiva per productId, limitata con storefrontCountryCodes quando sono state colpite solo alcune regioni.
  • Ascolta le notifiche RENEWAL_EXTENSION FAILURE e riprova ciascuna con l'endpoint per il singolo abbonamento.
  • Su Google Play, scorri i token di acquisto attivi, leggi ogni etag, esegui prima con validateOnly e poi rinvia davvero.
  • Avvisa tu gli abbonati Google Play del tempo extra, visto che Google non lo fa.
  • Aggiorna la scadenza dei diritti di accesso a partire da RENEWAL_EXTENDED e SUBSCRIPTION_DEFERRED, non dai tuoi calcoli sulle date.
  • Conserva log di utilizzo per account, così se arriva comunque una richiesta di rimborso o un chargeback, le tue prove sono pronte entro 12 ore per Apple ed entro 24 ore per Google.

Domande frequenti

Quante volte posso estendere la data di rinnovo di un abbonamento sull'App Store?
Due volte per cliente in 365 giorni. Ogni estensione può andare da 1 a 90 giorni, e un abbonamento che ha già ricevuto due estensioni negli ultimi 365 giorni non è idoneo per un'altra.
Apple avvisa il cliente quando estendo il suo abbonamento?
Sì. Dopo un'estensione della data di rinnovo riuscita, Apple invia al cliente un'email con la data di rinnovo aggiornata. La guida alla fatturazione di Google Play non descrive nessun messaggio simile, quindi su Android conviene avvisare tu gli abbonati.
Per quanto tempo posso rinviare un abbonamento Google Play?
La guida alla fatturazione di Google indica da un giorno a un anno per chiamata a purchases.subscriptionsv2.defer. Per rinviare oltre, richiama l'API prima che arrivi la nuova data di scadenza. L'utente mantiene l'accesso completo e non paga il periodo rinviato.
Posso annullare un'estensione della data di rinnovo di Apple?
No. Apple dice che, una volta entrata in vigore un'estensione del rinnovo di un abbonamento, non c'è modo di annullarla. Controlla il prodotto, il numero di giorni e gli storefront prima di inviare la richiesta.
Un'estensione della data di rinnovo incide sulla mia quota di ricavi dell'85% su Apple?
Sì. Apple esclude i giorni di estensione del rinnovo dai giorni di servizio pagato, quindi un'estensione ritarda il passaggio di un abbonato dal 70% all'85% di tanti giorni quanti ne hai aggiunti. Gli sviluppatori dell'App Store Small Business Program ricevono già l'85%.
Posso estendere un abbonamento in prova gratuita?
Non sull'App Store. Apple esclude gli abbonamenti in un periodo di offerta gratuita, oltre a quelli in nuovo tentativo di addebito, con periodo di tolleranza scaduto o già scaduti. Sono idonei solo gli abbonamenti attivi con almeno un periodo pagato.

Fonti e approfondimenti

RefundHalt

Il pilota automatico dei rimborsi per App Store e Google Play

Continua a leggere

La prossima richiesta di rimborso è già in arrivo.

Configura RefundHalt nel tempo che impiegheresti a leggere un'altra e-mail dell'assistenza su un rimborso che non sei riuscito a contestare.