Apple e Google rimborsano uno store alla volta, quindi il tuo abbonamento multipiattaforma deve chiudere l'accesso ovunque
Quando Apple o Google rimborsano un abbonamento multipiattaforma, la tua app Android, la tua app iPhone e il tuo sito non lo scoprono da soli. Ecco come collegare ogni acquisto a un unico account, revocare il diritto di accesso giusto e smettere di pagare per servire utenti rimborsati.

Punti chiave
- La App Review Guideline 3.1.3(b) di Apple consente alle app che operano su più piattaforme di dare accesso a contenuti e abbonamenti acquistati su altre piattaforme o sul sito dello sviluppatore, purché quegli articoli siano disponibili anche come acquisti in-app.
- Apple e Google rimborsano solo gli acquisti fatti nel proprio store, quindi un rimborso Apple su un abbonamento multipiattaforma non arriva alla fatturazione Google Play né a quella web del cliente. Il server dello sviluppatore deve togliere l'accesso concesso su ogni piattaforma.
- Apple invia una notifica REFUND tramite App Store Server Notifications V2 quando rimborsa un consumabile, un non consumabile, un abbonamento non rinnovabile o un abbonamento a rinnovo automatico, e precisa che lo sviluppatore è responsabile di archiviare, monitorare e gestire ogni transazione rimborsata.
- L'appAccountToken di Apple è un UUID che lo sviluppatore associa a un acquisto in-app, e l'endpoint Set App Account Token della App Store Server API può aggiungerlo in seguito agli acquisti fatti fuori dall'app, come un codice promozionale riscattato.
- Il setObfuscatedAccountId di Google Play collega un acquisto a un account nell'app dello sviluppatore, ha un limite di 64 caratteri e fa bloccare gli acquisti se contiene dati personali in chiaro, come un indirizzo email.
- La Voided Purchases API di Google Play segnala gli acquisti rimborsati e soggetti a chargeback con un orderId e un voidedSource pari a 0 per l'utente, 1 per lo sviluppatore o 2 per Google.
- Per gli ordini Google Play effettuati dopo il 3 agosto 2026, quando un chargeback va a buon fine, lo sviluppatore paga il prezzo d'acquisto, al netto della commissione di servizio di Play, più le commissioni di chargeback della banca.
Il tuo abbonato ha pagato Apple, ha aperto la tua app Android lo stesso pomeriggio e ora usa il tuo sito al lavoro. Poi Apple lo rimborsa. Google Play non lo sa. La tua fatturazione web non lo sa. Se il tuo server non chiude l'accesso, un abbonamento multipiattaforma rimborsato continua a funzionare su ogni schermo che legge il tuo database degli account. Gli store rimborsano una vetrina alla volta, e il tuo sistema di account è l'unico posto in cui l'abbonamento esiste per intero. Per questo è l'unico posto in grado di chiuderlo.
Perché il rimborso di uno store non chiude un abbonamento multipiattaforma
Apple consente questo modello in modo esplicito. La App Review Guideline 3.1.3(b), Multiplatform Services, stabilisce che le app che operano su più piattaforme possono permettere agli utenti di accedere a contenuti, abbonamenti o funzionalità acquistati nella tua app su altre piattaforme o sul tuo sito, purché quegli articoli siano disponibili anche come acquisti in-app.
La guida di Apple per offrire un unico abbonamento su più app descrive come funziona in pratica. Il tuo server concede l'accesso usando un database degli account unificato, e ogni app legge da lì. La stessa guida avverte che, se un acquisto non viene propagato alle altre app, l'utente può finire per pagare più volte lo stesso servizio.
Questo modello ha una conseguenza che spesso sfugge. Il diritto di accesso vive nel tuo database, ma ogni store conosce solo le proprie ricevute. Apple può rimborsare l'acquisto su iPhone e avvisare il tuo server. Non può dire nulla alla tua app Android o al tuo sito. Se il gestore dei rimborsi aggiorna solo il client iOS, il cliente riavrà i suoi soldi e conserverà l'abbonamento ovunque altrove.
| Dove ha pagato | Chi decide il rimborso | Come lo scopre il tuo server | Chi può fermare i rinnovi |
|---|---|---|---|
| App Store | Apple | Notifica REFUND in App Store Server Notifications V2 | Il cliente, nelle impostazioni degli abbonamenti dell'App Store o in una schermata di gestione aperta dalla tua app |
| Google Play | Google nelle prime 48 ore, poi tu o Google | Voided Purchases API e notifiche in tempo reale per gli sviluppatori | Il cliente, oppure tu tramite purchases.subscriptionsv2.cancel |
| Il tuo sito | Tu | I webhook del tuo processore di pagamento | Tu |
Come revocare l'accesso su tutte le piattaforme dopo un rimborso
Collega ogni acquisto a un unico account
Associare un rimborso a una persona è la parte difficile, perché ogni store identifica l'acquirente a modo suo. Entrambi ti offrono un campo per il tuo ID account. Usalo in ogni acquisto.
- Su Apple, imposta un appAccountToken, un UUID generato da te, quando parte l'acquisto. L'App Store restituisce lo stesso UUID nelle informazioni sulla transazione e sul rinnovo. Apple dice che puoi riutilizzare lo stesso valore per tutte le transazioni dello stesso cliente.
- Se il cliente ha acquistato fuori dalla tua app, per esempio riscattando un codice promozionale nell'App Store, la transazione non ha un token. L'endpoint Set App Account Token lo aggiunge. Per un abbonamento a rinnovo automatico vale per il rinnovo in corso e per quelli successivi, non per le transazioni passate, e non funziona con gli acquisti condivisi tramite In famiglia.
- Su Google Play, passa un ID account offuscato con setObfuscatedAccountId quando avvii il flusso di fatturazione. Il limite è di 64 caratteri. Google avverte che i dati personali in chiaro, come un indirizzo email, fanno bloccare gli acquisti, e consiglia la crittografia o un hash unidirezionale.
Ascolta entrambi gli store, poi scrivi un unico diritto di accesso
Apple invia REFUND quando rimborsa qualsiasi tipo di prodotto, abbonamenti a rinnovo automatico compresi. Invia REFUND_REVERSED quando annulla un rimborso già concesso, a seguito di una contestazione aperta dal cliente. Su Google Play, la Voided Purchases API elenca gli acquisti rimborsati e soggetti a chargeback, ciascuno con un orderId che identifica l'acquisto o il rinnovo esatto. Il tuo processore web invia il proprio evento di rimborso. Tutti e tre devono arrivare allo stesso gestore e modificare lo stesso record.
Revoca il diritto di accesso, non l'account
Un rimborso annulla un acquisto, non una persona. Togli l'accesso derivante dall'acquisto rimborsato, poi ricalcola cosa resta all'account. Se il cliente ha anche un abbonamento attivo su un altro store, mantiene l'accesso grazie a quello. Altrimenti, ogni client perde le funzionalità premium la prossima volta che interroga il tuo server.
Quando la stessa persona si abbona su due store
I doppi abbonamenti sono l'altra metà del problema. Qualcuno si abbona su Android, prende un iPhone nuovo, non effettua l'accesso e si abbona di nuovo. Ora paga due volte lo stesso servizio, e uno dei due addebiti di solito diventa una richiesta di rimborso. Il team commerce di Apple, rispondendo a uno sviluppatore sugli Apple Developer Forums, l'ha detto chiaramente: il sistema di account di un'app dovrebbe includere una logica che impedisca l'acquisto doppio su un'altra piattaforma.
Controlla ogni store prima di mostrare il paywall
Fai accedere l'utente prima del paywall, cerca tutti i suoi acquisti attivi sul tuo server e salta l'offerta se uno di essi copre questa piattaforma. Questo solo controllo evita la maggior parte degli addebiti doppi prima che avvengano.
Quale acquisto devo rimborsare se il doppione c'è già?
Rimborsa quello che controlli tu. Su Google Play puoi emettere il rimborso da solo in Play Console, e purchases.subscriptionsv2.cancel con DEVELOPER_REQUESTED_STOP_PAYMENTS blocca il pagamento successivo. L'abbonamento web è tuo e puoi rimborsarlo direttamente. I rimborsi dell'App Store li decide Apple, quindi se il doppione è sull'iPhone, il cliente lo chiede ad Apple, e la tua app può aprire quella richiesta con l'API di richiesta di rimborso di StoreKit.
Quanto ti costa un rimborso che salta una piattaforma
Il prezzo rimborsato è solo la prima perdita. Un cliente il cui rimborso Apple non è mai arrivato alla tua app Android o al tuo sito continua a usare ciò che paghi per tenere in piedi. Ogni sessione continua a consumare risorse di calcolo. Ogni funzionalità di IA continua a chiamare API di terze parti che ti vengono fatturate. I suoi file continuano a occupare spazio di archiviazione, e se la tua app paga i creator a visualizzazione o a utilizzo, quei compensi continuano a partire. Con un piano annuale, può significare un anno intero di costi di servizio per un account che ormai non paga nulla.
La via bancaria peggiora le cose. Per gli ordini Google Play effettuati dopo il 3 agosto 2026, Google spiega che, quando un chargeback va a buon fine, lo sviluppatore risponde del prezzo d'acquisto, al netto della commissione di servizio di Play, più le commissioni di chargeback addebitate dall'istituto finanziario. In banca un chargeback è definitivo. Un cliente che ha fatto chargeback e ha ancora accesso ti è costato il prezzo, le commissioni e il costo di servizio tutto insieme.
| Cosa continua a funzionare dopo una revoca mancata | Chi lo paga |
|---|---|
| Risorse di calcolo del server per ogni sessione su Android o sul web | Tu |
| Chiamate ad API di terze parti fatte dalle tue funzionalità | Tu |
| Archiviazione dei file e della cronologia dell'utente | Tu |
| Compensi a utilizzo o a visualizzazione per i creator | Tu |
| Commissioni di chargeback su un ordine Google Play successivo al 3 agosto 2026 | Tu, oltre al prezzo d'acquisto al netto della commissione di servizio di Play |

L'utilizzo multipiattaforma resta una prova
Un unico account su tutte le piattaforme aiuta anche quando uno store chiede la tua versione. Le informazioni sul consumo di Apple chiedono quale parte di un consumabile, di un non consumabile o di un abbonamento non rinnovabile il cliente ha consumato. Per gli abbonamenti a rinnovo automatico non invii una percentuale, perché Apple la calcola in base al tempo trascorso. La revisione dei chargeback di Google Play accetta fino a 1.000 eventi di utilizzo, ciascuno dei quali può contenere l'ID account offuscato. L'utilizzo registrato con lo stesso ID account, qualunque sia il dispositivo che l'ha generato, è utilizzo che puoi dimostrare.
Quali rimborsi non chiedono mai la tua versione
La maggior parte dei rimborsi viene decisa senza di te. Google Play può rimborsare un acquisto entro 48 ore tramite il proprio flusso di rimborso. I rimborsi dell'assistenza dello store, gli acquisti annullati e il rimborso automatico di Google per gli acquisti che non confermi mai, dopo circa 72 ore, avvengono prima e vengono segnalati dopo. In questi casi, la logica di revoca descritta sopra è tutto il lavoro.
Solo due flussi chiedono prove. Il CONSUMPTION_REQUEST di Apple ti dà 12 ore per inviare le informazioni sul consumo. La revisione dei chargeback di Google Play ti dà 24 ore dalla PendingRefundReviewNotification per rispondere tramite orders.reviewrefund, e Google registra solo la tua prima chiamata. RefundHalt risponde a entrambi entro la finestra, usando i dati di utilizzo che raccogli già, collegati allo stesso account in tutte le tue app.
Una breve checklist per i rimborsi multipiattaforma
- Imposta appAccountToken sugli acquisti Apple e un ID account offuscato sugli acquisti Google Play.
- Recupera i token Apple mancanti con Set App Account Token per i codici promozionali riscattati.
- Indirizza REFUND e REFUND_REVERSED di Apple, gli acquisti annullati di Google Play e i rimborsi web verso un unico gestore.
- Salva ogni acquisto con la sua origine e calcola l'accesso da tutti gli acquisti attivi.
- Controlla gli acquisti di ogni store prima di mostrare un paywall su qualsiasi piattaforma.
Domande frequenti
- Posso dare agli utenti iPhone accesso a un abbonamento acquistato su Android o sul mio sito?
- Sì. La App Review Guideline 3.1.3(b) di Apple consente alle app che operano su più piattaforme di dare accesso a contenuti, abbonamenti o funzionalità acquistati su altre piattaforme o sul tuo sito, purché quegli articoli siano disponibili anche come acquisti in-app nell'app per iPhone.
- Se Apple rimborsa un abbonato, Google Play o la mia fatturazione web lo vengono a sapere?
- No. Apple avvisa il tuo server con una notifica REFUND in App Store Server Notifications V2, e nessun altro. Il tuo server deve togliere l'accesso concesso da quell'acquisto su Android, sul web e ovunque l'account effettui l'accesso.
- Come associo un rimborso dell'App Store a un account utente?
- Usa appAccountToken, un UUID che la tua app associa all'acquisto e che l'App Store restituisce nelle informazioni sulla transazione. Per gli acquisti fatti fuori dalla tua app, come il riscatto di un codice promozionale, l'endpoint Set App Account Token di Apple aggiunge o sostituisce il token. Non supporta le transazioni di In famiglia.
- Un cliente è abbonato sia sull'App Store sia su Google Play. Quale devo rimborsare?
- Rimborsa quello che controlli tu. Puoi rimborsare un ordine Google Play in Play Console e bloccare il pagamento successivo con purchases.subscriptionsv2.cancel. I rimborsi dell'App Store li decide Apple, quindi un doppione su iPhone passa dalla richiesta di rimborso di Apple, che la tua app può aprire con StoreKit.
- L'utilizzo sul mio sito o sulla mia app Android vale come prova in una revisione di rimborso?
- L'utilizzo registrato sotto un unico account può sostenere la tua risposta. Le informazioni sul consumo di Apple chiedono quale parte di un consumabile, di un non consumabile o di un abbonamento non rinnovabile è stata consumata, e la revisione dei chargeback di Google Play accetta fino a 1.000 eventi di utilizzo che possono contenere l'ID account offuscato.
Fonti e approfondimenti
- Apple: App Review Guidelines, 3.1.3(b) Multiplatform Services
- Apple Developer Documentation: Offering a subscription across multiple apps
- Apple Developer Documentation: Handling refund notifications
- Apple Developer Documentation: notificationType
- Apple Developer Documentation: Set App Account Token
- Android Developers: BillingFlowParams.Builder, setObfuscatedAccountId
- Google Play Developer API: purchases.voidedpurchases
- Google Play Console Help: Updates to refund protection and chargeback cost responsibility
RefundHalt
Il pilota automatico dei rimborsi per App Store e Google Play
Continua a leggere
Le richieste di rimborso eccessive possono costarti più dei rimborsi stessi, perché entrambi gli store le trattano come un segnale di qualità
La linea guida 5.6.4 di Apple indica le richieste di rimborso eccessive come segnale che un'app non rispetta gli standard di qualità, e l'accordo di distribuzione di Google le consente di rimuovere le app dei nuovi sviluppatori in base ai tassi di rimborso. Ecco cosa dice ciascuno store, quanto costa una rimozione e come restarne alla larga.
Verifica le notifiche server dell'App Store prima di agire su un rimborso, perché chiunque può inviare richieste al tuo URL di webhook
Una notifica di rimborso è solo una richiesta HTTPS finché non ne controlli la firma. Ecco come verificare le notifiche server dell'App Store e i messaggi RTDN di Google Play, che cosa firma ciascuno store e quanto ti costa un rimborso falsificato o respinto per errore.