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.

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.
| Regola | Google Play | App Store |
|---|---|---|
| Reso rapido in autonomia | Fino a due ore dopo l'acquisto, rimborso totale | Nessuno documentato |
| Finestra di richiesta più lunga | L'acquirente può chiederlo entro 48 ore, poi deve contattare lo sviluppatore | Apple può rimborsare entro 90 giorni dal download, in base allo Schedule 2 del contratto sviluppatore |
| Quante volte | Una volta per app. Un riacquisto non può essere rimborsato di nuovo | Non documentato |
| Cosa succede all'app | Viene disinstallata come parte del rimborso | Non documentato. Gli sviluppatori riferiscono che gli acquirenti rimborsati mantengono l'accesso |
| Lo sviluppatore può rimborsare | Sì, solo rimborsi totali, da Play Console | No |
| Notifica al tuo server | Nessuna documentata | Nessuna documentata |
| Richiesta di prove allo sviluppatore | Nessuna documentata | Nessuna 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 costo | Recuperata su Google Play | Recuperata sull'App Store |
|---|---|---|
| La tua quota dei $6.99 | Ripresa dal tuo pagamento | Ripresa dal tuo pagamento |
| Commissione di servizio dello store | Restituita da Google | Non addebitata, secondo il report di RevenueCat |
| Inferenza cloud e chiamate API già consumate | No | No |
| Storage dei progetti sincronizzati | No | No |
| Spesa pubblicitaria per acquisire l'acquirente | No | No |
| Costi server continui se l'acquirente continua a usare l'app | Cessano, l'app viene disinstallata | Continuano 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.

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
- Play Console Help: Issue refunds and cancellations
- Google Play Help: Apps, games and in-app purchases refund policies
- Google Play Developer API: Voided Purchases API
- Android Developers: Real-time developer notifications reference
- Android Developers: Play Integrity API integrity verdicts
- Apple Developer Documentation: notificationType (App Store Server Notifications V2)
- Apple Developer Documentation: AppTransaction
- Apple Developer Documentation: Supporting business model changes by using the app transaction
- Apple Developer Program License Agreement, Schedule 2 section 6.3
- Apple Support: Request a refund for apps or content that you bought from Apple
- Apple Developer Forums: How to detect refund for paid app? (March 2025)
- Apple Developer Forums: AppTransactionId support and app-level refunds (June 2025)
- RevenueCat: Does Apple keep its commission after you refund a purchase?
RefundHalt
Il pilota automatico dei rimborsi per App Store e Google Play
Continua a leggere
Se la tua app usa ancora App Store Server Notifications V1, Apple non ti consulta mai sui rimborsi degli abbonamenti
Apple ha deprecato App Store Server Notifications V1 a giugno 2023, e questa versione non ha mai ricevuto il CONSUMPTION_REQUEST per gli abbonamenti, né REFUND_DECLINED né REFUND_REVERSED. Ecco cosa si perde un server V1, quanto costa e come passare a V2 senza perdere nessun rimborso.
Un rimborso sull'abbonamento mensile con impegno di 12 mesi di Apple può chiudere l'intero anno, o solo un mese
L'abbonamento mensile con impegno di 12 mesi di Apple divide i rimborsi in due casi. Se rimborsi un mese passato, la fatturazione prosegue. Se rimborsi il mese corrente, l'impegno termina all'istante. Ecco come arriva ogni caso al tuo server, quanto costa e cosa inviare ad Apple.