Tous les articles
Guide pratique8 min de lecture

Apple et Google vous laissent prolonger la date de renouvellement d'un abonnement après une panne, et leurs limites n'ont rien à voir

Quand votre app tombe en panne, vous pouvez prolonger la date de renouvellement d'un abonnement au lieu d'attendre les demandes de remboursement. Voici comment fonctionnent les prolongations de 90 jours d'Apple et le report de facturation de Google Play, où chaque store fixe la limite et ce que chaque option vous coûte.

Une baie de serveurs aux voyants d'alerte orange à côté d'un ordinateur portable affichant un calendrier, le moment où un développeur décide de prolonger la date de renouvellement d'un abonnement après une panne

Points clés

  • L'App Store Server API permet à un développeur de prolonger de 1 à 90 jours la date de renouvellement d'un abonnement à renouvellement automatique actif et payé, pour compenser une panne, un événement annulé ou un direct interrompu.
  • Apple autorise deux prolongations de la date de renouvellement par client sur 365 jours. Une prolongation ne peut pas être annulée une fois en vigueur, et Apple envoie au client un e-mail indiquant la nouvelle date de renouvellement.
  • Apple ne prolonge pas un abonnement en période d'offre gratuite, en nouvelle tentative de facturation, en délai de grâce dont la date d'expiration est passée, ou déjà expiré. L'abonnement doit compter au moins une période payée.
  • Les jours ajoutés par une prolongation de la date de renouvellement Apple ne comptent pas dans l'année de service payé qui fait passer la part des revenus d'abonnement du développeur de 70 % à 85 %.
  • purchases.subscriptionsv2.defer de Google Play repousse la prochaine date de facturation d'un abonnement d'un jour minimum jusqu'à un an par appel. L'utilisateur garde un accès complet sans être facturé, et Google envoie une notification SUBSCRIPTION_DEFERRED.
  • Une prolongation de la date de renouvellement ne rend pas d'argent, donc le développeur garde le paiement, mais paie le calcul, le stockage et les appels d'API des jours ajoutés sans renouvellement pour les couvrir. Un remboursement rend le prix, et rien de l'argent déjà dépensé pour servir ce client.
  • Si une panne a empêché la livraison d'un achat intégré et qu'Apple envoie un CONSUMPTION_REQUEST, le deliveryStatus honnête est UNDELIVERED_SERVER_OUTAGE, et Apple exige que consumptionPercentage vaille 0 pour tout statut autre que DELIVERED.

Une panne offre à chaque abonné l'argument de remboursement le plus imparable qui soit, et vous ne pouvez pas l'empêcher de s'en servir. Ce que vous pouvez faire, c'est rendre les jours perdus avant que quiconque les réclame. Les deux stores vous permettent de prolonger la date de renouvellement d'un abonnement pour que le client reçoive du temps gratuit au lieu d'argent. Apple plafonne chaque prolongation à 90 jours et en autorise deux par an. Google vous laisse reporter la facturation jusqu'à un an par appel. Les démarches, les notifications et la facture sous-jacente diffèrent assez pour qu'un seul plan de crise ne couvre pas les deux.

Ce qu'une panne change à votre exposition aux remboursements

Ce sont les stores qui décident des remboursements, pas vous. Sur l'App Store, le client s'adresse à Apple et Apple tranche. Vous pouvez recevoir une notification CONSUMPTION_REQUEST et disposer de 12 heures pour envoyer des données de consommation via Send Consumption Information. C'est tout ce que vous avez à dire.

Sur Google Play, un acheteur peut obtenir un remboursement dans les 48 heures suivant l'achat sans qu'on vous demande votre avis. Ensuite, les demandes vous parviennent. Le seul parcours Google qui sollicite vos preuves est une rétrofacturation signalée pour examen par le développeur, à laquelle vous répondez via orders.reviewrefund sous 24 heures. La décision de la banque sur une rétrofacturation est définitive.

Aucun des deux stores ne vous donne donc le moyen de bloquer un remboursement. Ce que vous maîtrisez, c'est le fait qu'un abonné se sente encore lésé quand le service revient. Du temps supplémentaire sur l'abonnement, accordé vite et annoncé clairement, est l'outil que les deux stores ont conçu précisément pour cela.

Comment prolonger la date de renouvellement d'un abonnement sur l'App Store

L'App Store Server API propose deux endpoints pour cela. Extend a Subscription Renewal Date agit sur un abonnement, que vous identifiez par son originalTransactionId. Extend Subscription Renewal Dates for All Active Subscribers agit sur tous les abonnés éligibles d'un productId, et vous pouvez le limiter avec storefrontCountryCodes quand la panne n'a touché que certaines régions.

Chaque requête contient trois éléments : extendByDays, un nombre de 1 à 90 ; un extendReasonCode ; et un requestIdentifier que vous générez. Le code de motif 3 correspond à un problème ou une panne du service. Le code 1 correspond à la satisfaction client, le code 2 à d'autres raisons et le code 0 à un motif non déclaré.

Les abonnements qu'Apple accepte de prolonger

Seuls les abonnements à renouvellement automatique actifs ayant au moins une période déjà payée sont éligibles. Apple écarte ceux-ci :

  • Les abonnements en période d'offre gratuite, comme un essai gratuit.
  • Les abonnements inactifs en état de nouvelle tentative de facturation.
  • Les abonnements en délai de grâce de facturation dont la date d'expiration est passée.
  • Les abonnements qui ont déjà reçu deux prolongations de la date de renouvellement au cours des 365 derniers jours.
  • Les abonnements expirés.

Le Partage familial suit sans effort. Quand Apple prolonge un abonnement acheté compatible avec le Partage familial, les abonnements des membres de la famille sont prolongés aussi. Vous ne pouvez pas cibler directement l'abonnement d'un membre de la famille.

La requête groupée est lente, surveillez donc les notifications

Apple indique qu'une requête de prolongation pour tous les abonnés actifs peut prendre des heures, voire des jours, selon le nombre d'abonnés. Une réponse 200 signifie seulement qu'Apple la traite. App Store Server Notifications V2 vous dit comment cela s'est passé :

NotificationSous-typeSignification
RENEWAL_EXTENDEDaucunLa date de renouvellement d'un abonnement a été prolongée
RENEWAL_EXTENSIONFAILURELa prolongation d'un abonnement a échoué
RENEWAL_EXTENSIONSUMMARYL'ensemble de la requête groupée est terminé

Pour chaque FAILURE, récupérez l'originalTransactionId dans la transaction signée du payload et relancez-le avec l'endpoint pour un seul abonnement. Si vous préférez interroger l'API, Get Status of Subscription Renewal Date Extensions indique si la requête est terminée et combien de prolongations ont réussi ou échoué.

Comment fonctionne le report de facturation de Google Play

La version de Google s'appelle purchases.subscriptionsv2.defer, appelée une fois par jeton d'achat. Le corps de la requête contient un deferralContext à trois champs. L'etag provient de purchases.subscriptionsv2.get, et l'appel échoue s'il ne correspond pas au dernier etag de l'abonnement. Le deferDuration indique de combien repousser la date. Enfin, validateOnly, s'il vaut true, exécute la requête à blanc sans toucher à l'abonnement.

Le guide de facturation de Google fixe la plage d'un jour à un an par appel d'API. Pour aller plus loin, appelez de nouveau avant la nouvelle date d'expiration. Pour un abonnement à renouvellement automatique, le report déplace la prochaine date de renouvellement. Pour une formule prépayée, il déplace l'heure d'expiration. Sur un abonnement avec modules complémentaires, chaque élément est reporté de la même durée. La réponse liste le nouvel expiryTime de chaque élément.

Pendant le report, l'utilisateur reste abonné avec un accès complet et n'est pas facturé pour le temps supplémentaire. Google envoie une notification en temps réel pour les développeurs SUBSCRIPTION_DEFERRED. L'ancienne méthode purchases.subscriptions.defer est obsolète, le nouveau code doit donc utiliser la méthode v2.

Google ne prévient pas votre client, c'est donc à vous de le faire

Apple envoie un e-mail au client après chaque prolongation réussie. Le guide de facturation de Google ne décrit aucun message à l'utilisateur. Si le but est de devancer les demandes de remboursement, l'abonné doit savoir que ce temps supplémentaire existe. Prévenez-le vous-même, dans l'app et par e-mail, en précisant combien de jours et pourquoi.

Apple et Google côte à côte

Apple App StoreGoogle Play
APIExtend a Subscription Renewal Date, plus un endpoint groupépurchases.subscriptionsv2.defer
Durée par requêteDe 1 à 90 joursDe 1 jour à 1 an
FréquenceDeux fois par client sur 365 joursAucun plafond indiqué ; rappelez avant la nouvelle date d'expiration
Option groupéeUn appel par productId, éventuellement par storefrontUn appel par jeton d'achat
Essai gratuitNon éligibleNon traité dans le guide de Google
NotificationRENEWAL_EXTENDED, RENEWAL_EXTENSIONSUBSCRIPTION_DEFERRED
Client prévenuApple envoie un e-mailÀ vous de le faire
RéversibleNonNon traité dans le guide de Google

Ce que coûte une prolongation par rapport à un remboursement

Un remboursement et une prolongation puisent l'argent à des endroits différents. Un remboursement rend ce que le client a payé pour la période. Tout ce que vous avez déjà dépensé pour servir ce client reste dépensé : le calcul de chaque session, les appels à l'API du modèle, le stockage et tout versement à un créateur dont il a utilisé le contenu.

Une prolongation conserve le paiement. Ce qu'elle coûte, c'est le service fourni sans renouvellement pour le financer. Chaque jour ajouté, un abonné actif continue de générer les mêmes factures. Pour un utilisateur occasionnel, c'est presque rien. Pour un gros utilisateur d'une fonctionnalité d'IA, 30 jours supplémentaires peuvent représenter 30 jours d'appels au modèle sans aucun revenu en face. Dimensionnez la prolongation selon la panne, pas selon les excuses que vous aimeriez présenter.

Ce que vous perdezRemboursementProlongation de la date de renouvellement
Le paiement de l'abonnementRendu au clientConservé
Les coûts déjà engagés pour servir le clientPerdusPerdus
Calcul, stockage et appels d'API pendant les jours ajoutésAucun, l'accès prend finÀ votre charge, sans renouvellement pour l'instant
L'abonnement ensuitePrend fin si le remboursement révoque l'accèsActif, renouvelé à la nouvelle date

Le coût en commission chez Apple

Apple verse 70 % de chaque renouvellement pendant la première année de service payé d'un abonné, puis 85 %. La page d'Apple sur les abonnements indique que les jours de prolongation du renouvellement sont exclus des jours de service payé. Une prolongation de 30 jours repousse donc de 30 jours le passage de cet abonné à 85 %. Si vous faites partie de l'App Store Small Business Program, vous recevez déjà 85 % et ce coût ne s'applique pas.

Le coût des rétrofacturations sur Google Play

Pour les commandes passées après le 3 août 2026, une rétrofacturation gagnée par le titulaire de la carte coûte à un développeur Google Play le prix d'achat moins les frais de service de Play, plus les frais bancaires. Une panne est exactement le genre d'événement qui pousse un client agacé vers sa banque. Un report qui lui parvient avant revient moins cher qu'un litige que vous ne pouvez pas renverser.

Un calendrier mural avec une date repoussée à côté d'un téléphone et d'une facture d'hébergement cloud, les coûts qu'un développeur pèse avant de prolonger un abonnement après une panne

Quand une prolongation n'est pas le bon outil

L'achat n'était pas un abonnement

Les prolongations de la date de renouvellement ne s'appliquent qu'aux abonnements. Si une panne a cassé un consommable ou un déblocage unique, livrez de nouveau l'élément. Si Apple envoie un CONSUMPTION_REQUEST à son sujet, déclarez ce qui s'est passé. Le champ deliveryStatus d'Apple prévoit une valeur pour cela, UNDELIVERED_SERVER_OUTAGE, et Apple précise que tout statut autre que DELIVERED doit s'accompagner d'un consumptionPercentage à 0.

Le client a déjà utilisé ses deux prolongations Apple

Le plafond d'Apple est de deux prolongations par client sur 365 jours. Deux pannes dans l'année les épuisent, et une troisième vous laisse sans rien à offrir via le store. Suivez le nombre de prolongations utilisées par chaque originalTransactionId, pour que les notifications FAILURE de la requête groupée ne vous prennent pas au dépourvu.

Le client est en essai gratuit

Apple ne prolonge pas un abonnement en période d'offre gratuite. Un utilisateur en essai a perdu des jours gratuits, pas des jours payés, donc le risque de remboursement est faible. Si vous voulez le dédommager, un message dans l'app coûte moins cher que n'importe quel appel d'API.

Une checklist pour la prochaine panne

  • Notez quand la panne a commencé et fini, et quels produits et régions elle a touchés.
  • Choisissez un nombre de jours qui couvre le temps perdu. Chez Apple, utilisez le code de motif 3 et restez entre 1 et 90.
  • Chez Apple, envoyez une requête groupée par productId, limitée par storefrontCountryCodes quand seules certaines régions ont été touchées.
  • Surveillez les notifications RENEWAL_EXTENSION FAILURE et relancez chacune avec l'endpoint pour un seul abonnement.
  • Sur Google Play, parcourez les jetons d'achat actifs, lisez chaque etag, lancez d'abord avec validateOnly, puis reportez pour de vrai.
  • Prévenez vous-même les abonnés Google Play du temps supplémentaire, puisque Google ne le fera pas.
  • Mettez à jour l'expiration des droits d'accès à partir de RENEWAL_EXTENDED et SUBSCRIPTION_DEFERRED, pas de vos propres calculs de dates.
  • Conservez des journaux d'utilisation par compte, pour que si une demande de remboursement ou une rétrofacturation arrive malgré tout, vos preuves soient prêtes en moins de 12 heures pour Apple et 24 heures pour Google.

Questions fréquentes

Combien de fois puis-je prolonger la date de renouvellement d'un abonnement App Store ?
Deux fois par client sur 365 jours. Chaque prolongation peut aller de 1 à 90 jours, et un abonnement qui a déjà reçu deux prolongations au cours des 365 derniers jours n'est pas éligible à une autre.
Apple prévient-elle le client quand je prolonge son abonnement ?
Oui. Après une prolongation réussie de la date de renouvellement, Apple envoie au client un e-mail avec la nouvelle date de renouvellement. Le guide de facturation de Google Play ne décrit aucun message de ce type, donc sur Android, prévenez vous-même vos abonnés.
Pendant combien de temps puis-je reporter un abonnement Google Play ?
Le guide de facturation de Google indique d'un jour à un an par appel à purchases.subscriptionsv2.defer. Pour reporter davantage, rappelez l'API avant la nouvelle date d'expiration. L'utilisateur garde un accès complet et n'est pas facturé pour la période reportée.
Puis-je annuler une prolongation de la date de renouvellement Apple ?
Non. Apple indique qu'une fois une prolongation du renouvellement d'abonnement en vigueur, il est impossible de l'annuler. Vérifiez le produit, le nombre de jours et les storefronts avant d'envoyer la requête.
Une prolongation de la date de renouvellement affecte-t-elle ma part de revenus de 85 % chez Apple ?
Oui. Apple exclut les jours de prolongation du renouvellement des jours de service payé, donc une prolongation retarde le passage d'un abonné de 70 % à 85 % du nombre de jours ajoutés. Les développeurs de l'App Store Small Business Program reçoivent déjà 85 %.
Puis-je prolonger un abonnement en essai gratuit ?
Pas sur l'App Store. Apple exclut les abonnements en période d'offre gratuite, ainsi que ceux en nouvelle tentative de facturation, en délai de grâce expiré ou déjà expirés. Seuls les abonnements actifs ayant au moins une période payée sont éligibles.

Sources et lectures complémentaires

RefundHalt

Le pilote automatique des remboursements pour l'App Store et Google Play

Poursuivre la lecture

La prochaine demande de remboursement est déjà en route.

Configurez RefundHalt dans le temps qu'il vous faudrait pour lire un nouvel e-mail d'assistance au sujet d'un remboursement que vous n'avez pas pu contester.