Tutti gli articoli
Deep dive8 min di lettura

Il rimborso di un'app a pagamento non arriva mai al tuo server, quindi deve accorgersene l'app stessa

I rimborsi delle app a pagamento anticipato saltano tutte le notifiche che il tuo server ascolta. Google concede all'acquirente due ore per restituirla e disinstalla l'app, Apple può rimborsare entro 90 giorni in base al tuo contratto, e nessuna delle due chiede prove. Ecco cosa ti comunica ciascuno store, quanto costa e come verificarlo nell'app.

Uno smartphone su una scrivania di legno accanto a uno scontrino strappato e qualche moneta, a illustrare il rimborso di un'app a pagamento

Punti chiave

  • Il rimborso di un'app a pagamento riguarda il prezzo del download dell'app stessa, non un acquisto in-app, e né Apple né Google documentano una notifica al server per questo caso.
  • La guida di Play Console di Google indica che l'acquirente ha fino a due ore dall'acquisto di un'app a pagamento per restituirla con rimborso totale, e può restituire una stessa app una sola volta.
  • La politica di rimborso di Google Play indica che l'app viene disinstallata come parte del rimborso, e chi riacquista la stessa app non può ottenere un secondo rimborso.
  • Il tipo REFUND di App Store Server Notifications V2 copre consumabili, non consumabili, abbonamenti a rinnovo automatico e abbonamenti senza rinnovo. L'acquisto dell'app non è in quell'elenco.
  • L'Apple Developer Program License Agreement, Schedule 2, sezione 6.3, consente ad Apple di rimborsare l'acquirente che annulla entro 90 giorni dal download, e lo sviluppatore rimborsa Apple.
  • La documentazione di StoreKit di Apple elenca un revocationDate su AppTransaction, il record firmato dell'acquisto dell'app, che l'app può controllare sul dispositivo.
  • Né CONSUMPTION_REQUEST né orders.reviewrefund di Google Play sono documentati per gli acquisti di download di app, quindi il rimborso di un'app a pagamento viene deciso senza le prove dello sviluppatore.

Le app a pagamento anticipato vengono rimborsate da una porta laterale che quasi nessuno strumento di gestione dei rimborsi sorveglia. Quando un acquirente restituisce l'app in sé, e non qualcosa acquistato al suo interno, Apple e Google riprendono il denaro dal tuo pagamento senza inviare al tuo server una sola notifica. Google, almeno, disinstalla l'app. Su iOS, sviluppatori sui forum di Apple riferiscono che gli acquirenti rimborsati continuano a usarla. Se vendi un'app a pagamento, il suo rimborso è l'unico che vedrai solo come una riga negativa in un report, a meno che l'app non lo verifichi sul dispositivo.

Regole di rimborso delle app a pagamento su Google Play e App Store

Entrambi gli store trattano l'acquisto del download come un prodotto a sé, con regole proprie. Ecco cosa dice la documentazione di ciascuno.

RegolaGoogle PlayApp Store
Reso rapido in autonomiaFino a due ore dopo l'acquisto, rimborso totaleNessuno documentato
Finestra di richiesta più lungaL'acquirente può chiederlo entro 48 ore, poi deve contattare lo sviluppatoreApple può rimborsare entro 90 giorni dal download, in base allo Schedule 2 del contratto sviluppatore
Quante volteUna volta per app. Un riacquisto non può essere rimborsato di nuovoNon documentato
Cosa succede all'appViene disinstallata come parte del rimborsoNon documentato. Gli sviluppatori riferiscono che gli acquirenti rimborsati mantengono l'accesso
Lo sviluppatore può rimborsareSì, solo rimborsi totali, da Play ConsoleNo
Notifica al tuo serverNessuna documentataNessuna documentata
Richiesta di prove allo sviluppatoreNessuna documentataNessuna documentata

Come funziona il reso di due ore su Google Play

La guida di Play Console di Google è esplicita: dopo l'acquisto di un'app a pagamento, l'utente ha fino a due ore per restituirla con rimborso totale, e può restituire un'app una sola volta. La politica di rimborso di Google per i consumatori aggiunge che entro 48 ore l'acquirente può ottenere un rimborso a seconda dell'acquisto, che l'app viene disinstallata come parte del rimborso e che chi acquista di nuovo la stessa app non può essere rimborsato. Trascorse 48 ore, Google indirizza gli acquirenti allo sviluppatore.

Come Apple rimborsa un'app a pagamento

Sull'App Store, l'acquirente fa richiesta ad Apple tramite reportaproblem.apple.com, sceglie un motivo e seleziona l'app. Apple indica di attendere un aggiornamento entro 24-48 ore. Non puoi rimborsare tu un acquisto sull'App Store. Il limite esterno lo fissa il tuo contratto. La sezione 6.3 dello Schedule 2 dell'Apple Developer Program License Agreement stabilisce che, se un acquirente vuole annullare entro novanta giorni dal download, o se l'app non è conforme alle tue specifiche o alla legge applicabile, Apple può rimborsare l'intero prezzo, e tu rimborsi ad Apple quell'importo o le riconosci un credito di pari valore.

Perché il tuo server non viene mai a sapere del rimborso di un'app a pagamento

Tutti i segnali di rimborso inviati dai due store sono pensati per gli acquisti in-app. Apple descrive il suo notificationType come l'evento di In-App Purchase o di acquisto esterno che ha generato la notifica. Il suo tipo REFUND copre un consumabile, un non consumabile, un abbonamento a rinnovo automatico o un abbonamento senza rinnovo. Get Refund History restituisce gli acquisti in-app rimborsati di un cliente. Il download dell'app non compare in nessuno di questi elenchi.

Con Google è lo stesso. Le notifiche in tempo reale per gli sviluppatori coprono abbonamenti, prodotti a pagamento singolo e acquisti annullati, e il productType di un acquisto annullato è un abbonamento oppure un acquisto singolo. La Voided Purchases API indica che si applica agli ordini in-app singoli e agli abbonamenti, e arriva indietro solo di 30 giorni.

Il rimborso di un'app a pagamento genera un CONSUMPTION_REQUEST?

No. La documentazione di Apple dice che invia CONSUMPTION_REQUEST quando un cliente chiede il rimborso di un In-App Purchase consumabile o di un abbonamento a rinnovo automatico. È uno dei soli due flussi di rimborso, tra i due store, che chiedono prove allo sviluppatore. L'altro è la revisione dei chargeback di Google Play, a cui si risponde tramite orders.reviewrefund entro 24 ore, e arriva attraverso lo stesso flusso di notifiche degli acquisti in-app. Nessuno dei due è documentato per i download di app. Il rimborso di un'app a pagamento viene deciso senza nulla che tu possa inviare.

L'acquirente rimborsato continua a usare l'app?

Su Google Play, la politica dice che l'app viene disinstallata. Su iOS, i forum di Apple ospitano discussioni di sviluppatori che chiedono proprio questo. Una di marzo 2025 dice: «Quando un utente ottiene il rimborso di un'app a pagamento anticipato, continua ad avere accesso all'app.» Un'altra, del 2022, sospetta acquirenti che comprano, installano, chiedono il rimborso e continuano come se niente fosse. Una terza, di giugno 2025, chiede se App Store Server Notifications V2 segnali davvero i rimborsi a livello di app. Nessuna delle tre ha ricevuto risposta da Apple.

Quanto ti costa in denaro il rimborso di un'app a pagamento

Il lato dei pagamenti è prevedibile. La guida di Play Console di Google dice che restituisce la propria commissione di servizio quando rimborsi, quindi la detrazione dal tuo pagamento è la tua quota, non il prezzo di listino. Un rimborso emesso dopo che Google ti ha già pagato viene trattenuto da un pagamento futuro e, se il tuo saldo resta negativo per almeno 48 ore, Google può addebitarlo sul tuo conto bancario. Sul fronte Apple, il contratto dice che rimborsi un importo pari al prezzo. In pratica, RevenueCat ha riferito nel 2022 che Apple detraeva la cifra al netto della commissione indicata come Extended Partner Share, quindi Apple non tratteneva la sua quota.

I costi che non tornano sono quelli sostenuti per servire quell'acquirente. Ecco un esempio illustrativo. Un'app fotografica a pagamento da $6.99 applica i suoi filtri tramite un modello nel cloud e sincronizza i progetti su uno storage cloud. Hai pagato un annuncio che ha portato l'acquirente.

Voce di costoRecuperata su Google PlayRecuperata sull'App Store
La tua quota dei $6.99Ripresa dal tuo pagamentoRipresa dal tuo pagamento
Commissione di servizio dello storeRestituita da GoogleNon addebitata, secondo il report di RevenueCat
Inferenza cloud e chiamate API già consumateNoNo
Storage dei progetti sincronizzatiNoNo
Spesa pubblicitaria per acquisire l'acquirenteNoNo
Costi server continui se l'acquirente continua a usare l'appCessano, l'app viene disinstallataContinuano finché la tua app non verifica

È in quest'ultima riga che iOS diventa costoso. Un acquirente rimborsato che tiene l'app continua a chiamare il tuo backend, e ogni richiesta di inferenza, sincronizzazione e chiamata API dopo il rimborso è un costo senza alcun ricavo dietro. Per un'app a pagamento senza costi server, un rimborso è una vendita persa. Per una con un backend, può trasformarsi in una bolletta che continua a crescere.

Come rilevare il rimborso di un'app a pagamento dentro l'app

Dato che il server non riceve nulla, il controllo deve partire dal dispositivo e poi avvisare il tuo server.

Su iOS, leggi revocationDate su AppTransaction

AppTransaction è il record firmato dall'App Store dell'acquisto dell'app da parte del cliente. La documentazione di StoreKit di Apple ora vi elenca una proprietà revocationDate, descritta come la data di revoca dell'acquisto dell'app. Leggi AppTransaction.shared all'avvio, verifica il risultato e tratta un revocationDate diverso da nil come un download rimborsato. Invia il valore firmato al tuo server, così smette di servire quell'account.

  • Secondo Apple, appTransactionID resta lo stesso per un Apple Account anche dopo un rimborso o un riacquisto, quindi usalo come chiave dei tuoi record e riconoscerai l'acquirente che paga di nuovo.
  • AppTransaction.refresh() recupera un record aggiornato dall'App Store, ma mostra una richiesta di accesso. Apple indica di chiamarlo solo dopo un'azione esplicita dell'utente, come il tocco su un pulsante Ripristina.
  • Il valore firmato risiede sul dispositivo. La documentazione di Apple non descrive alcuna notifica al server per esso, quindi il tuo server sa solo ciò che l'app gli comunica.
Uno sviluppatore che tiene in mano un telefono con un lucchetto sullo schermo davanti a un portatile, verificando l'accesso dopo il rimborso di un'app a pagamento

Su Android, chiedi a Play Integrity il verdetto di licenza

La disinstallazione da parte di Google copre la maggior parte dei casi, ma una copia può sopravvivere, per esempio una installata manualmente da un backup. La Play Integrity API restituisce un appLicensingVerdict per l'account connesso. LICENSED significa che l'utente ha diritto all'app. UNLICENSED significa che non ce l'ha, e Google suggerisce di mostrare la finestra di dialogo GET_LICENSED. UNEVALUATED significa che Google non è riuscita a verificare, per esempio perché l'utente non ha eseguito l'accesso a Google Play. Google segnala inoltre che su alcuni dispositivi meno recenti l'utente mantiene il diritto dopo la disinstallazione, quindi LICENSED non prova un acquisto valido su ogni dispositivo.

Fai del server il guardiano

I controlli lato client possono essere rimossi con una patch. Ciò che vale la pena proteggere è il lavoro a pagamento svolto dal tuo backend, quindi fai in modo che il backend rifiuti le chiamate di un account il cui ultimo report è stato un rimborso, un verdetto UNLICENSED o nessun verdetto oltre un periodo di tolleranza che scegli tu. È questo che impedisce a un rimborso di trasformarsi in calcolo gratuito.

Quando un'app a pagamento dovrebbe passare agli acquisti in-app

Le indicazioni di Apple sul cambio di modello di business descrivono il passaggio da un'app a pagamento a un'app gratuita con In-App Purchases, usando originalAppVersion su AppTransaction per continuare a offrire le funzioni premium a chi ha acquistato la versione a pagamento. Il vantaggio di questo passaggio sul fronte dei rimborsi è concreto. Quando il prezzo è su un non consumabile o su un abbonamento, i rimborsi arrivano come notifiche REFUND e acquisti annullati su cui il tuo server può agire, e una richiesta di rimborso di un abbonamento sull'App Store genera un CONSUMPTION_REQUEST. Sono questi i segnali che RefundHalt ascolta e a cui risponde entro le finestre di 12 ore e di 24 ore. Un download a pagamento non te ne dà nessuno.

Domande frequenti

Quanto tempo ha un acquirente per restituire un'app a pagamento su Google Play?
Fino a due ore dopo l'acquisto per un rimborso totale, secondo la guida di Play Console di Google, e una sola volta per app. La politica di rimborso di Google dice anche che l'acquirente può ottenere un rimborso entro 48 ore, dopodiché Google lo indirizza allo sviluppatore. L'app viene disinstallata come parte del rimborso.
Apple avvisa il mio server quando qualcuno ottiene il rimborso della mia app a pagamento?
Nessuna notifica è documentata. App Store Server Notifications di Apple copre gli eventi di In-App Purchase, e il tipo REFUND elenca solo consumabili, non consumabili, abbonamenti a rinnovo automatico e senza rinnovo. L'app può leggere revocationDate su AppTransaction sul dispositivo e comunicarlo al tuo server.
Un acquirente rimborsato mantiene l'accesso a un'app iOS a pagamento?
Gli sviluppatori sui forum di Apple riferiscono di sì, e la documentazione di Apple non descrive alcun passaggio che rimuova l'app dopo un rimborso. Controlla revocationDate su AppTransaction all'avvio e fai in modo che il tuo server smetta di servire gli account che segnalano un download rimborsato.
Posso rimborsare io stesso un'app a pagamento?
Su Google Play, sì. Play Console ti consente di emettere rimborsi totali per le app a pagamento, mai parziali, e Google restituisce la propria commissione di servizio. Sull'App Store, no. Solo Apple può rimborsare un acquisto sull'App Store.
Posso contestare il rimborso di un'app a pagamento con prove di utilizzo?
No. CONSUMPTION_REQUEST di Apple è documentato per consumabili e abbonamenti a rinnovo automatico, e la revisione dei chargeback di Google Play tramite orders.reviewrefund arriva attraverso notifiche pensate per prodotti in-app e abbonamenti. Nessuno dei due store documenta un flusso di prove per l'acquisto dell'app stessa.

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.