Tutti gli articoli
Guida pratica8 min di lettura

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.

Un iPhone, uno smartphone Android e un portatile affiancati su una scrivania, ciascuno connesso allo stesso account di un abbonamento multipiattaforma

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 pagatoChi decide il rimborsoCome lo scopre il tuo serverChi può fermare i rinnovi
App StoreAppleNotifica REFUND in App Store Server Notifications V2Il cliente, nelle impostazioni degli abbonamenti dell'App Store o in una schermata di gestione aperta dalla tua app
Google PlayGoogle nelle prime 48 ore, poi tu o GoogleVoided Purchases API e notifiche in tempo reale per gli sviluppatoriIl cliente, oppure tu tramite purchases.subscriptionsv2.cancel
Il tuo sitoTuI webhook del tuo processore di pagamentoTu

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 mancataChi lo paga
Risorse di calcolo del server per ogni sessione su Android o sul webTu
Chiamate ad API di terze parti fatte dalle tue funzionalitàTu
Archiviazione dei file e della cronologia dell'utenteTu
Compensi a utilizzo o a visualizzazione per i creatorTu
Commissioni di chargeback su un ordine Google Play successivo al 3 agosto 2026Tu, oltre al prezzo d'acquisto al netto della commissione di servizio di Play
Una mano che tiene uno smartphone accanto a un portatile aperto, con un secondo telefono a faccia in giù, la configurazione quotidiana di chi usa un abbonamento multipiattaforma

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

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.