iOS subscription offer codes: distribute targeted discounts without touching your public price
Offer codes let you hand-deliver discounted or free subscriptions to specific users — win-back campaigns, creator partnerships, support resolutions — without changing your App Store storefront price. Here is how to set them up, distribute them effectively, and avoid the gotchas.
Apple's storefront is a public window: every potential subscriber sees the same headline price. That makes targeted discounting tricky — you can't quietly offer a churned user 50% off without either running a public sale or building a custom paywall outside Apple's system. Offer codes solve exactly this problem. They let you hand-deliver a discounted or free subscription to a specific person, at a specific moment, without touching your public price point. Used well, they're one of the highest-ROI retention levers that most indie developers leave untouched.
What offer codes actually are (and what they aren't)
Apple introduced offer codes with iOS 14 in late 2020. An offer code grants its recipient a discounted — or entirely free — subscription period that you define in App Store Connect. The discount types mirror those available for introductory offers:
- Free trial — a set number of days or weeks at no charge before the standard price kicks in
- Pay as you go — a reduced recurring price for N billing periods, then full price
- Pay up front — a lump-sum discount for a fixed duration (e.g. three months for the price of one)
The key distinction from introductory offers is audience. Introductory offers are shown automatically to any eligible new subscriber who has not yet used them. Offer codes are given to specific people and redeemed on demand. That targeted relationship is what makes them useful for win-back campaigns, creator partnerships, and one-to-one customer support resolutions.
There are two code formats. One-time-use codes are Apple-generated alphanumeric strings — each works exactly once. Custom codes are human-readable words or short phrases you define (for example, COMEBACK26) that can be redeemed up to a cap you set. Structurally they behave identically on the user's device; the difference is logistics, branding, and abuse risk.
Offer codes are not the same as promotional offers, which require a server-side signature and target users who have already previously subscribed to your app. Offer codes target users who have never used their introductory offer for that subscription — effectively first-time subscribers or lapsed ones whose introductory offer eligibility has reset. Choosing the right mechanism for the right audience matters for both conversion and budget.
Setting up offer codes in App Store Connect
Configuration lives inside each individual subscription product, not at the app level. The path is: My Apps → [App] → In-App Purchases → [Subscription Group] → [Subscription SKU] → Subscription Offer Codes. Click "Create Offer Code" and fill in:
- Offer name — an internal label not visible to users
- Offer type — free trial, pay as you go, or pay up front
- Discount value and duration — e.g. seven days free, or .99 for three months
- Code type — one-time use or custom
- For custom codes: set the code text, redemption limit (1–10,000), and an expiry date
- For one-time codes: specify how many to generate (up to the quarterly cap)
Apple allows up to 10 active offer code campaigns simultaneously per subscription product. Each offer runs independently — a user who holds two different codes can only redeem one; the first redemption activates the subscription and the second will fail with an ineligibility error.
| Feature | One-time-use codes | Custom codes |
|---|---|---|
| Format | Apple-generated alphanumeric string | Your chosen word or short phrase |
| Redemptions per code | 1 (strictly single-use) | Up to 10,000 per offer |
| Quarterly generation cap | 150,000 codes per offer | Not separately capped; redemption limit applies |
| Expiry | 6 months after generation | Date you choose (up to 6 months out) |
| Best suited for | Bulk win-back campaigns, CSV export to CRM | Creator partners, support tickets, live events |
| Shareable without abuse risk | Yes — each code is unique and single-use | No — public sharing can drain your redemption budget fast |
Distribution strategies that actually convert
The mechanics are only half the picture. Where and when you distribute codes determines whether they drive meaningful growth or collect dust in a spreadsheet.
Win-back for churned subscribers
Research from RevenueCat and Phiture consistently identifies voluntary churn win-back as the highest-ROI use case for offer codes. When a subscriber cancels, send them a one-time code within 7–14 days of lapse — a free month or a heavily discounted quarter performs well. Timing is critical: after 30 days, re-engagement response rates drop sharply as the emotional momentum fades. Export your churned cohort from App Store Connect or your attribution platform, generate a matching batch of one-time codes, and map them 1:1 in your email tool. Because each code is tied to a single redemption, you're not exposed to budget leakage from sharing.
Creator and influencer partnerships
Custom codes with a per-creator name (e.g. PAULMAKESAPPS) give each partner a trackable redemption URL to share with their audience. Apple generates a universal redemption link for every custom code — you can also implement a deep link that lands the user directly in your in-app subscription flow, skipping search and navigation entirely. Phiture's mobile growth research suggests creator-driven codes convert significantly better when the code is shown on-screen or read aloud rather than buried in a video description. Set a conservative redemption limit per creator to cap your discount exposure before you issue the code.
Customer support resolutions
When a user emails about a billing issue, a bug that cut short their subscription period, or a poor onboarding experience, offering a complimentary extension via a one-time code is both operationally clean and goodwill-generating. No refund request needs to be filed; no App Store Connect escalation is required. A small pre-generated code bank — say, 50–100 codes per month for a typical indie app — gives your support team the authority to resolve issues immediately without any developer intervention.
Onboarding and time-delayed nudges
If your onboarding captures an email address, consider inserting a custom code in a time-delayed welcome sequence for users who install but don't convert within 48–72 hours. Be careful not to double-discount an audience that would have taken your standard free trial anyway — measure incremental lift carefully before scaling this approach. For a quantitative look at how trial length affects downstream conversion and retention, the trial length comparison post provides a useful baseline.
Limits, gotchas, and things that will bite you
Offer codes are powerful but come with enough edge cases that cataloguing the pitfalls before you build a campaign around them is time well spent.
Users must not have an active subscription. A user with a current paid subscription cannot redeem an offer code. This catches developers off guard during win-back campaigns: if a user re-subscribed before the code arrived, the redemption fails with a generic ineligibility error. Your CRM or email automation must exclude anyone whose subscription status has flipped back to active in the interval between your export and your send.
Introductory offer eligibility is separate from offer code eligibility. A user who has already used their introductory offer for your subscription is still eligible to redeem an offer code — the two eligibility buckets are tracked independently by Apple. However, a user who has never used their introductory offer may find both paths available to them simultaneously. The grandfathering and eligibility post explains how Apple tracks subscription history per Apple ID in more detail.
Family Sharing does not extend to offer codes. An offer code is redeemed by a specific Apple ID. If your subscription supports Family Sharing, the discounted period applies only to the subscribing account — not their family group members.
Custom codes are shareable and that's a double-edged sword. If a creator posts their code in a public forum or screenshot, you could burn through a 10,000-redemption cap in hours. Set a conservative redemption limit per campaign and check daily redemption velocity in App Store Connect during any active creator campaign. You can deactivate a custom offer code at any time, which stops new redemptions immediately without affecting existing active subscriptions.
Minimum iOS version is 14. Offer code redemption requires iOS 14 or later. The universal URL Apple provides will prompt older devices to update first. In 2026 this affects a very small share of active devices — Apple's own figures show iOS 14 adoption above 95% across supported hardware — but it's worth noting for apps serving enterprise or education contexts where update cycles are managed by IT.
Reporting is aggregate, not individual. App Store Connect shows total redemption counts per offer and a time-series chart, but not which Apple ID redeemed which code. If you need user-level attribution — particularly for win-back ROI analysis — a third-party subscription analytics platform that ingests the subscription receipt and tags events by offer identifier is necessary for cohort-level measurement.
Measuring what actually matters
Basic redemption data is available in App Store Connect under My Apps → [App] → Subscriptions → Offer Codes. For deeper analysis, tools like RevenueCat surface the promotional_offer_id and offer_discount_type fields in their subscription event webhooks, letting you track 30-, 60-, and 90-day retention for offer code cohorts against organic sign-up cohorts.
The metric that matters is net revenue per redeemed code at 180 days, not just conversion-to-paid. A win-back campaign that converts 40% of lapsed subscribers but retains only 30% through their first renewal has a fundamentally different LTV profile than one with 20% conversion and 70% six-month retention. Build this cohort view before you scale any campaign — otherwise you may be trading long-term revenue for a flattering conversion rate on a dashboard.
Offer codes sit alongside — not instead of — your standard pricing strategy. Decisions about price points, introductory offer discounts, and subscription tier structure all affect how your offer codes land. For a comprehensive overview of how to structure iOS subscription pricing end to end, the AppsOps pricing tools page is a useful companion.
Sources and further reading
- Apple App Store Connect Help: Set up offer codes
- Apple Developer Documentation: Subscriptions and offers (StoreKit)
- RevenueCat Blog — subscription growth and monetisation research
- Phiture Mobile Growth Stack — App Store growth tactics
- AppFollow Blog — App Store analytics and review management
Share this post
Ready to put this into practice?
AppsOps is the first App Store ops dashboard — PPP-fair pricing for 175 App Store territories, AI metadata localization in 39 languages, AI screenshot localization for 14 Apple device classes, and one-click App Store Connect API push — all from one dashboard, all for $19/month.
Try AppsOps free — no card →