# Offer codes App Store Connect : créer un code promo

> Depuis mars 2026, les offer codes remplacent les codes promo des achats intégrés : codes uniques ou personnalisés, échangés par lien, App Store ou dans l'app.

Page originale : [Offer codes App Store Connect : créer un code promo](https://devoria.fr/blog/codes-offre-promo-app-store-connect)
Auteur : [Mehdi Azizi](https://devoria.fr/mehdi-azizi)
Publication : 2026-11-04
Dernière révision du contenu : 2026-11-04


Dans App Store Connect, un code promo pour un abonnement ou un achat intégré s'appelle aujourd'hui un code d'offre, ou offer code. **Depuis le 26 mars 2026, Apple ne permet plus de créer de codes promo pour les achats intégrés** : ils ne servent plus qu'à offrir le téléchargement d'une app payante. Tu crées une offre sur ton produit, puis des codes uniques ou un code personnalisé. La personne l'échange par un lien, dans l'App Store ou directement dans ton app.

Mes apps sont gratuites au téléchargement et vendent des abonnements : les codes promo d'app ne m'apportent rien. Dans le code de TradaZen, le parrainage récompense donc avec un code d'offre, et l'app ouvre elle-même l'échange du code. Voici ce qui a changé, le tableau des offres d'Apple, la création des codes, leur échange, puis ce que la règle 3.1.1 interdit.

## Codes promo et codes d'offre : ce qui a changé en 2026

Apple l'a annoncé le 29 octobre 2025 dans ses [actualités développeurs](https://developer.apple.com/news/?id=gf6mgrs6) : les codes d'offre couvrent désormais tous les achats intégrés. Consommables, non consommables et abonnements non renouvelables s'ajoutent aux abonnements auto-renouvelables. En conséquence, depuis le 26 mars 2026, tu ne peux plus créer de code promo pour un achat intégré. Ceux créés avant restent utilisables jusqu'à leur expiration.

Les codes promo d'app, eux, existent toujours. D'après l'[aide d'App Store Connect](https://developer.apple.com/help/app-store-connect/offer-promo-codes/request-and-manage-promo-codes/), ils donnent une copie gratuite d'une app payante. Chaque code sert une fois et reste valable quatre semaines. Tu peux en demander jusqu'à 100 par version et par plateforme, depuis Promo Codes dans la barre latérale de ton app. La personne qui l'utilise ne peut ni noter ni commenter l'app.

**Pour une app gratuite qui vend un abonnement, le code promo d'app n'offre rien** : c'est l'abonnement qu'il faut offrir, avec un code d'offre.

## Les offres d'Apple : pour qui, et comment on les obtient

Voici les offres d'Apple autour d'un abonnement, plus le code promo d'app, dans le tableau que je garde sous la main pour choisir :

| Type d'offre         | Pour qui                   | Comment on l'obtient      |
| -------------------- | -------------------------- | ------------------------- |
| Offre d'introduction | Nouveaux abonnés du groupe | Automatique à l'achat     |
| Code d'offre unique  | Une personne précise       | Lien, App Store ou app    |
| Code personnalisé    | Une campagne, un public    | Lien ou saisie dans l'app |
| Offre promotionnelle | Abonnés actuels ou anciens | Proposée par ton app      |
| Offre de reconquête  | Anciens abonnés            | Réglages, App Store, app  |
| Code promo d'app     | App payante seulement      | Saisie dans l'App Store   |

**Les codes d'offre sont faits pour être distribués par toi, hors de l'app** : par e-mail, sur ton site, à un événement, à un créateur de contenu. Les autres offres s'affichent surtout seules ou dans ton app, selon les règles que tu fixes. L'offre d'introduction, celle de l'essai gratuit, a son propre guide : [introductory offer et essai gratuit](https://devoria.fr/blog/offre-introduction-essai-gratuit-app-store).

## Créer des codes d'offre pour un abonnement

La procédure de l'[aide sur les codes d'offre d'abonnement](https://developer.apple.com/help/app-store-connect/manage-subscriptions/set-up-subscription-offer-codes/) se fait en deux temps : l'offre, puis les codes. Les libellés sont ceux de l'aide d'Apple.

**1. L'offre.** Dans Subscriptions, ouvre le groupe puis l'abonnement. Dans Subscription Prices, clique sur le bouton plus, puis sur Create Offer Codes. Ensuite :

- donne un nom de référence, que tu retrouveras dans tes rapports de ventes ;
- choisis si l'abonnement se renouvelle à la fin de l'offre ; sans renouvellement, seule une offre gratuite est possible ;
- coche les personnes éligibles : nouveaux abonnés, abonnés actuels, anciens abonnés du groupe ;
- si l'abonnement a une offre d'introduction, choisis si la personne en profite d'abord, avant l'offre du code, ou seulement du code ;
- choisis les pays, puis gratuit, paiement à l'avance ou au fur et à mesure, avec la durée et le prix.

Une offre créée ne se modifie plus. Pour changer l'éligibilité, crée une nouvelle offre.

**2. Les codes.** Deux types, à générer depuis la page de l'offre :

- **Les codes uniques** : un code par personne, créés par lots de 500 à 25 000. Ils expirent au plus tard six mois après leur création. Tu télécharges un fichier avec les codes et leurs liens.
- **Les codes personnalisés** : un mot que tu choisis, jusqu'à 64 caractères sans caractère spécial, par exemple RENTREE (exemple fictif). Tu fixes combien de personnes peuvent l'utiliser, jusqu'à 25 000 par lot, et une date de fin facultative.

Les limites communes : un million de codes par app et par trimestre, dix offres actives par abonnement, un code par offre et par personne. Un code peut mettre jusqu'à une heure à devenir utilisable. Et surtout, **ton app doit être en vente pour que les codes s'échangent** : tu ne peux pas offrir un abonnement avant la sortie.

Pour tester, Apple prévoit des codes sandbox, de 10 à 10 000 par lot, à échanger depuis les réglages du compte sandbox sur iOS 16.3 ou plus.

## Codes d'offre pour un achat unique ou des crédits

La page sur les [codes d'offre des achats intégrés](https://developer.apple.com/help/app-store-connect/manage-in-app-purchases/create-offer-codes-for-in-app-purchases/) suit la même logique. Dans In-App Purchases, ouvre l'achat, puis Create Offer dans la section Offer Codes. L'éligibilité se fonde sur l'historique d'achat dans ton app : jamais acheté, acheté dans les 30 derniers jours, ou il y a plus de 30 jours. L'offre est gratuite ou payante.

Pour générer les codes, l'app doit être en vente et l'achat approuvé. Une app compte au plus dix offres actives à la fois. L'échange dans l'app demande iOS 16.3 ou plus.

## Comment l'utilisateur échange un code

La [documentation StoreKit](https://developer.apple.com/documentation/storekit/supporting-offer-codes-in-your-app) décrit trois chemins :

1. **Le lien d'échange.** App Store Connect fournit un lien d'exemple sur la page de l'offre, auquel tu ajoutes le code. Si l'app n'est pas installée, la personne est d'abord invitée à la télécharger.
2. **L'App Store.** Le code unique se saisit dans la page Redeem Gift Card or Code du compte. Le code personnalisé, lui, passe par le lien ou par ton app.
3. **Ton app.** En Swift, c'est `offerCodeRedemption` avec SwiftUI ou `presentOfferCodeRedeemSheet` avec UIKit. Avec RevenueCat dans une app Expo, c'est `presentCodeRedemptionSheet`.

La [documentation de RevenueCat](https://www.revenuecat.com/docs/subscription-guidance/subscription-offers/ios-subscription-offers) donne le format du lien : `https://apps.apple.com/redeem?ctx=offercodes&id={apple_app_id}&code={code}`. Elle prévient aussi que la feuille d'échange d'Apple s'est montrée très instable depuis son lancement, et propose le lien en secours. Voici le principe, en TypeScript :

```ts
import { Linking } from "react-native";
import Purchases from "react-native-purchases";

const PAGE_ECHANGE = "https://apps.apple.com/redeem";

export async function echangerUnCode(): Promise<void> {
  try {
    await Purchases.presentCodeRedemptionSheet();
  } catch {
    await Linking.openURL(PAGE_ECHANGE); // secours si la feuille échoue
  }
}
```

La feuille ne renvoie aucun résultat. Le droit arrive ensuite comme après un achat, par l'écouteur `addCustomerInfoUpdateListener` que ton app a déjà. Pour que RevenueCat compte bien le revenu de ces codes, il lui faut ta clé In-App Purchase.

C'est le montage préparé dans le code de TradaZen. Pour utiliser une récompense de parrainage, l'app ouvre le lien avec le code déjà rempli : c'est plus fiable que la feuille, où il faudrait recopier le code. Pour saisir un code reçu, elle ouvre la feuille native, et la page d'échange de l'App Store en secours. **Un code que la personne ne sait pas où saisir ne sert à rien** : la page du compte App Store est enfouie, et rien ne la signale. Un bouton « J'ai un code » dans ton app règle ça.

## Offres promotionnelles et de reconquête, en bref

Ces deux offres ne passent pas par des codes que tu distribues, mais elles répondent au même besoin : faire revenir ou garder un abonné.

**L'offre promotionnelle** vise les abonnés actuels ou anciens. Tu décides dans ton app quand la montrer, par exemple à quelqu'un qui s'apprête à résilier. D'après l'[aide sur les offres promotionnelles](https://developer.apple.com/help/app-store-connect/manage-subscriptions/set-up-promotional-offers-for-auto-renewable-subscriptions/), tu peux en avoir dix actives par abonnement. Elles s'appliquent dans tous les pays de l'abonnement, et la personne y a droit même si elle a déjà eu une offre d'introduction. Il faut une clé In-App Purchase pour signer l'offre.

**L'offre de reconquête**, ou win-back, vise les anciens abonnés. L'[aide sur les offres de reconquête](https://developer.apple.com/help/app-store-connect/manage-subscriptions/set-up-win-back-offers/) détaille les critères : durée minimale d'abonnement payé, temps écoulé depuis la fin, attente entre deux offres. Apple l'affiche seul dans la page de gestion des abonnements, et dans ton app sur iOS 18 ou plus. Il génère aussi un lien à partager, à n'envoyer qu'aux personnes éligibles. Pour qu'elle apparaisse sur l'App Store, il faut la promouvoir avec une image d'abonnement approuvée, qui ne reprend ni ton icône ni tes captures. J'en parle dans le guide sur [l'image promotionnelle d'un abonnement](https://devoria.fr/blog/guideline-2-3-2-image-promotionnelle-abonnement).

## Ce que la règle 3.1.1 interdit

La [guideline 3.1.1](https://developer.apple.com/app-store/review/guidelines/#3.1.1) impose l'achat intégré pour débloquer une fonction ou un contenu. Elle interdit les mécanismes maison, comme les clés de licence ou les QR codes. **Un code inventé par toi, saisi dans un champ de ton app pour débloquer le premium, expose à un refus 3.1.1**, même s'il est offert. Les codes d'offre d'Apple passent, eux, par l'achat intégré. La règle complète est dans mon guide sur la [guideline 3.1.1](https://devoria.fr/blog/guideline-3-1-1-achat-integre-app-store).

Autre point, pour le parrainage : la [guideline 5.1.2](https://developer.apple.com/app-store/review/guidelines/#5.1.2) interdit d'exiger l'activation des notifications, de la localisation ou du suivi pour recevoir une récompense, codes compris. Une récompense ne peut donc pas dépendre de ces autorisations. Le détail est dans le guide sur la [guideline 5.1.2](https://devoria.fr/blog/guideline-5-1-2-partage-donnees-app-store).

## Offrir ton abonnement sans te tromper d'outil

Avant la sortie, pour faire essayer l'app gratuitement, utilise [TestFlight](https://devoria.fr/blog/testflight-tester-son-app-iphone) : les achats y passent par l'environnement de test, sans débit. Après la sortie, utilise les codes d'offre. Le montage de l'abonnement lui-même est dans [RevenueCat pour un abonnement iOS](https://devoria.fr/blog/revenuecat-abonnement-in-app-ios).

Le [Kit iOS](https://devoria.fr/kits/ios) part du code de départ de mes apps : onboarding, paywall et abonnements sont déjà codés, et sa troisième étape, « brancher l'argent », te guide pour les régler. Toute la chaîne est sur la page [abonnement in-app iOS](https://devoria.fr/expertise/abonnement-in-app-ios). Si tu prépares ta première sortie, [fais ton diagnostic gratuit](https://devoria.fr/diagnostic) : il remet les étapes dans l'ordre et t'envoie ma checklist anti-refus Apple.

## Questions fréquentes

### Comment générer un code promo dans App Store Connect ?

Pour une app payante, ouvre Promo Codes dans la barre latérale de l'app : jusqu'à 100 codes par version, valables quatre semaines. Pour un abonnement ou un achat intégré, crée une offre sur le produit, avec Create Offer Codes ou Create Offer, puis génère des codes uniques ou un code personnalisé.

### Quelle différence entre un code promo et un code d'offre ?

Le code promo offre le téléchargement d'une app payante. Le code d'offre donne un abonnement ou un achat intégré, gratuit ou à prix réduit, pour une durée choisie. Depuis le 26 mars 2026, seul le code d'offre peut être créé pour un achat intégré.

### Combien de codes d'offre peut-on créer ?

Jusqu'à un million par app et par trimestre, tous produits confondus. Les codes uniques se créent par lots de 500 à 25 000, et un code personnalisé accepte jusqu'à 25 000 utilisations par lot. Un abonnement compte au plus dix offres actives à la fois.

### Peut-on utiliser un code d'offre avant la sortie de l'app ?

Non : l'app doit être en vente pour que les codes s'échangent. Avant la sortie, utilise TestFlight pour tes testeurs, et les codes sandbox pour tester l'échange dans ton app.

### Un abonné actuel peut-il utiliser un code d'offre ?

Oui, si tu as coché les abonnés actuels dans l'éligibilité de l'offre. La [page d'Apple sur les abonnements](https://developer.apple.com/app-store/subscriptions/) précise qu'il ne peut échanger qu'un code de même niveau que son abonnement ou supérieur.

### Où l'utilisateur saisit-il un code d'offre ?

Par le lien d'échange, dans la page Redeem Gift Card or Code de son compte App Store pour un code unique, ou dans ton app si tu y as mis la feuille d'échange. Le code personnalisé passe par le lien ou par l'app.


## Ton projet

[Kit iOS & Android Devoria](https://devoria.fr/kits/ios) : Le code de départ de mes apps, le parcours jusqu'à l'App Store et Google Play avec les messages à donner à Claude, et tous les kits. Claude part d'une app qui tourne déjà. 99 €, paiement unique. Inclus : Le code de départ de ton app ; Les styles visuels ; Le parcours pas à pas ; Kit Review ; Kit Captures ; Kit ASO ; Mises à jour à vie ; Bonus : la séance 1:1 à moitié prix. Prérequis : pour l'iPhone, un Mac avec Xcode 26 ou plus et un compte Apple Developer (99 $ par an) pour publier. Pour Android, Android Studio sur un Mac, un PC Windows ou Linux, et un compte Google Play Console (25 $, une fois). Et Claude Code (abonnement payant) ou Cursor. Téléchargement immédiat après le paiement.

[Diagnostic gratuit](https://devoria.fr/diagnostic) : quelques questions sur ton projet. Il dit ce qui te bloque vraiment, l'ordre des quatre étapes et le kit qui correspond. En laissant ton e-mail, tu reçois la checklist anti-refus Apple : les points vérifiés avant chaque envoi, tirés des refus reçus par les apps du studio.

[Une heure avec moi](https://devoria.fr/coaching) : On regarde ton app ou ton projet Claude, écran partagé : ce qui bloque, ce que je change en premier, et dans quel ordre. 100 € la séance d'une heure, en visio, paiement en une fois. Sujets : L'audit de ton app ; Ton travail avec Claude ; Ta fiche et ton paywall ; Un refus d'Apple.
