CHARGEBACKAPP STORE

Come gestire le richieste di rimborso App Store (e la consumption request)

Come funzionano i rimborsi App Store per gli abbonamenti: chi decide, la notifica CONSUMPTION_REQUEST, cosa inviare ad Apple entro 12 ore e cosa fare dopo.

Pubblicato il 6 min di lettura

Sull’App Store non emetti mai tu il rimborso di un abbonamento e non rispondi mai a una contestazione sulla carta. Il merchant è Apple: incassa il pagamento, decide sui rimborsi e tratta con la banca del cliente. Quello che puoi fare è più limitato ma comunque utile: dire ad Apple come il cliente ha davvero usato ciò che ha pagato, reagire correttamente quando un rimborso va a buon fine e individuare schemi di abuso.

Questa guida copre questo processo per gli abbonamenti a rinnovo automatico. Si attiene alla documentazione di Apple, soprattutto Send Consumption Information, il corpo ConsumptionRequest, il riferimento di notificationType e Get Refund History (tutti consultati a novembre 2026).

Come i clienti chiedono un rimborso

La guida di Apple sulla gestione delle notifiche di rimborso elenca i modi in cui un cliente può chiedere indietro i soldi:

  • contattando l’Assistenza clienti Apple;
  • usando il sito self-service di Apple, reportaproblem.apple.com;
  • chiedendo un rimborso all’emittente del suo metodo di pagamento.

C’è una quarta strada che controlli tu: la tua app può aprire il foglio di rimborso di Apple con beginRefundRequest(in:) di StoreKit. Apple suggerisce di richiamarlo dalle impostazioni dell’account o da un menu di aiuto. Il foglio mostra l’acquisto e un elenco di motivi, e la documentazione di Apple dice che l’App Store impiega fino a 48 ore per approvare o rifiutare la richiesta.

Qualunque sia la strada, la decisione spetta ad Apple. Non hai un pulsante per approvare o rifiutare.

Le notifiche che riceverai

Se hai configurato le App Store Server Notifications V2, i rimborsi producono un piccolo insieme di eventi:

Notifica Cosa significa
CONSUMPTION_REQUEST Un cliente ha avviato una richiesta di rimborso e Apple ti chiede i dati di consumo
REFUND Apple ha rimborsato una transazione
REFUND_DECLINED Apple ha rifiutato una richiesta di rimborso
REFUND_REVERSED Apple ha annullato un rimborso concesso, a causa di una contestazione aperta dal cliente
DID_CHANGE_RENEWAL_STATUS con AUTO_RENEW_DISABLED Tra gli altri casi, il sistema ha disattivato il rinnovo automatico perché il cliente ha chiesto un rimborso tramite la tua app
REVOKE L’accesso tramite In famiglia o un gruppo è terminato, per esempio perché l’acquirente è stato rimborsato

Il payload di CONSUMPTION_REQUEST contiene un consumptionRequestReason con il motivo indicato dal cliente. Apple documenta cinque valori: UNINTENDED_PURCHASE, FULFILLMENT_ISSUE, UNSATISFIED_WITH_PURCHASE, LEGAL e OTHER. Salvalo. Col tempo ti dirà se i rimborsi nascono da acquisti accidentali, da bug o da persone a cui il prodotto semplicemente non è piaciuto.

Rispondere alla consumption request

Apple dice di usare “una varietà di fattori” per decidere su un rimborso, e che le informazioni di consumo che invii sono uno di questi. È il tuo unico modo per mettere dei fatti davanti a chi esamina la richiesta.

Le regole

La documentazione di Apple è rigorosa su tre punti:

  1. Prima il consenso. Puoi inviare dati solo se il cliente ha acconsentito a condividerli con Apple. Se non l’ha fatto, Apple dice di non rispondere affatto al CONSUMPTION_REQUEST. Il server rifiuta con un errore HTTP 400 qualsiasi richiesta in cui customerConsented non sia true.
  2. 12 ore. Rispondi entro 12 ore dalla ricezione della notifica.
  3. Il consenso è compito tuo. Apple afferma che sei “l’unico responsabile dell’ottenimento di un consenso valido”, che deve essere libero, specifico, informato e inequivocabile, e che non devi usare per questo la richiesta di App Tracking Transparency. Se adotti l’API, devi anche dichiarare l’uso dei dati nei dettagli sulla privacy della tua app.

La richiesta

Chiami PUT https://api.storekit.apple.com/inApps/v2/transactions/consumption/ seguito dall’ID della transazione indicato nella notifica. Il corpo ConsumptionRequest ha cinque campi:

Campo Cosa inserire
customerConsented true, l’unico valore che Apple accetta
deliveryStatus DELIVERED, oppure uno tra UNDELIVERED_QUALITY_ISSUE, UNDELIVERED_WRONG_ITEM, UNDELIVERED_SERVER_OUTAGE, UNDELIVERED_OTHER
consumptionPercentage Quanto è stato consumato, in millesimi. Deve essere 0 se l’articolo non è stato consegnato
refundPreference Facoltativo: GRANT_FULL, GRANT_PRORATED o DECLINE
sampleContentProvided Se prima dell’acquisto hai offerto un campione gratuito, una prova o una descrizione delle funzionalità

Per gli abbonamenti a rinnovo automatico conta un vincolo: se scegli GRANT_PRORATED, non inviare consumptionPercentage. Per gli abbonamenti Apple calcola la percentuale da sola.

Scegliere cosa dire

Sii onesto, perché è la cosa giusta da fare e perché l’ultima parola spetta comunque ad Apple. Un semplice insieme di regole:

  • L’app non ha funzionato (interruzione, funzione rotta, contenuto mai sbloccato): imposta lo stato UNDELIVERED_* corrispondente, un consumo pari a 0 e GRANT_FULL. Opporsi al rimborso di qualcosa che non ha funzionato non ha senso.
  • Acquisto accidentale, nessun utilizzo: DELIVERED, consumo pari o vicino a 0, e GRANT_FULL o nessuna preferenza.
  • Utilizzo reale e costante nel periodo: DELIVERED e DECLINE o GRANT_PRORATED, a seconda della tua politica.
  • Prova gratuita prima del periodo a pagamento: imposta sampleContentProvided su true.

I numeri devono venire dai tuoi dati di utilizzo, misurati allo stesso modo per ogni cliente. Questo significa che ti serve un utilizzo legato alla transazione App Store, il che in pratica vuol dire impostare un appAccountToken all’acquisto per poter associare la transazione di Apple al tuo utente.

Quando un rimborso va a buon fine

Una notifica REFUND significa che i soldi sono andati. Il riferimento delle notifiche di Apple dice che il revocationDate della transazione contiene il momento del rimborso e revocationReason il motivo. Ci sono due valori di motivo:

  • 0: rimborsato per altri motivi, per esempio un acquisto accidentale;
  • 1: rimborsato a causa di un problema reale o percepito all’interno della tua app.

Passi pratici:

  1. Revoca l’accesso per la transazione rimborsata, e dillo nell’app con un breve messaggio. La guida di Apple raccomanda “messaggi contestuali nell’app per ogni azione intrapresa a seguito del rimborso”.
  2. Registra il motivo. Una quota crescente del motivo 1 è un segnale di prodotto, non di fatturazione.
  3. Tieni d’occhio gli annullamenti. Se arriva un REFUND_REVERSED, Apple dice che devi ripristinare il contenuto o il servizio. Per gli abbonamenti a rinnovo automatico, la data di rinnovo resta invariata.
  4. Recupera gli eventi persi. Get Refund History restituisce i rimborsi approvati dall’App Store per un cliente, 20 per pagina, e Apple lo suggerisce per recuperare le notifiche di rimborso perse durante un’interruzione.

E i chargeback?

I clienti possono chiedere un rimborso alla banca emittente della carta, ma sull’App Store la contestazione è tra la banca e Apple. Non riceverai richieste di prove per la contestazione e non c’è nulla da inviare. Quello che vedrai è l’esito: un REFUND se i soldi sono tornati indietro, e REFUND_REVERSED se Apple ha annullato un rimborso dopo una contestazione del cliente.

Quindi il “lavoro sui chargeback” per un’app iOS è soprattutto prevenzione e rilevamento:

  • Rendi facile da trovare il percorso di rimborso all’interno della tua app (il foglio beginRefundRequest), così i clienti insoddisfatti lo usano invece di rivolgersi alla banca.
  • Rispondi in tempo a ogni consumption request a cui puoi rispondere.
  • Associa i rimborsi agli account. La guida di Apple suggerisce di associare le notifiche REFUND ai tuoi account utente per “identificare acquisti rimborsati ripetutamente” e attività sospette.

Errori comuni

  • Inviare dati senza consenso. L’API lo rifiuta e viola le regole di Apple.
  • Superare la finestra di 12 ore. Elabora CONSUMPTION_REQUEST in una coda con un avviso, non in un batch notturno.
  • Inviare sempre DECLINE. La tua preferenza è solo un fattore, e dichiarare un utilizzo che non puoi dimostrare non aiuta.
  • Non revocare dopo un rimborso, o non ripristinare dopo un annullamento.
  • Nessun legame tra le transazioni Apple e i tuoi utenti. Senza appAccountToken non puoi misurare il consumo e non puoi rispondere.

Farlo con NoChurn

NoChurn legge le tue App Store Server Notifications, quindi richieste di rimborso, rimborsi, rifiuti e annullamenti compaiono nella cronologia di ogni cliente con il motivo indicato da Apple. Quando Apple invia una consumption request per un cliente che ha dato il consenso, NoChurn può rispondere con l’utilizzo reale di quel cliente dai tuoi dati, entro la finestra di Apple. I rimborsi alimentano anche il punteggio di churn. Apple tiene il pagamento, la decisione sul rimborso e tutto ciò che riguarda la banca del cliente; NoChurn non finge mai il contrario. Configurazione e limiti sono su NoChurn + App Store.

PROMPT

Read https://www.nochurn.sh/llms.txt,
then follow https://www.nochurn.sh/docs/quickstart/
to add NoChurn to this app. Use a test key
(nc_test_…) until I say we go live.

Smetti di perdere ricavi.

  • Gratis fino a $300 MRR
  • Nessuna carta richiesta
  • Attivo in 10 minuti
  • Mai una quota di ciò che recuperiamo