Offer codes let you give someone your paid features on the App Store for free or at a discount. Below: what they cover in 2026, Apple's published limits, the setup in App Store Connect, and what the person on the other end sees. Every number comes from Apple's own pages, checked on 27 Oct 2026.
What offer codes cover in 2026
Offer codes started with auto-renewable subscriptions. On 29 Oct 2025 Apple announced that they now work for every in-app purchase type:
- consumables,
- non-consumables (a lifetime unlock, for example),
- non-renewing subscriptions,
- auto-renewable subscriptions, including offers that do not renew when the free period ends.
The same post said that from 26 Mar 2026 you can no longer create promo codes for in-app purchases in App Store Connect. Promo codes for a free download of a paid app still exist. If your app costs money up front, an offer code cannot make the download free; that is still a job for app promo codes. The differences are in App Store promo codes in 2026.
An offer can be free or paid (a discount). Each customer can redeem one code per offer.
The three kinds of code
| One-time use | Custom | Sandbox | |
|---|---|---|---|
| What it is | Random unique codes, each redeemable once | A code you name, such as SUMMER25 | One-time codes for testing |
| Batch size | 500 to 25,000 per batch; make more batches if you need more | Redemption limit up to 25,000 per batch | 10 to 10,000 |
| Expiry | Required, at most 6 months | Optional, at most 6 months if set | Optional, at most 6 months |
| Where people redeem (in-app purchases) | Redemption URL, the App Store, or your app | Redemption URL or your app | Sandbox account settings on a device |
One-time codes suit giveaways where each person should get their own code. Custom codes suit a podcast read or a newsletter, where one easy word goes to many people, but anyone who sees that word can use it until the limit runs out. Custom codes can be up to 64 characters with no special characters.
Limits from Apple's documentation
- Up to 10 active offers per app at a time for in-app purchases. For subscriptions, Apple's subscription page puts the limit at 10 active offers per subscription.
- Up to 1 million codes per app per quarter, shared across all in-app purchases (and, on the subscription page, across all subscriptions).
- Up to 10,000 sandbox codes per quarter.
- Codes expire at 12:00 a.m. Pacific time on the expiry date.
- New codes can take up to an hour before they redeem.
- You cannot edit an offer after you create it. To change eligibility or price, create a new offer. Expiry dates cannot be edited either.
- If you deactivate codes, they expire at once. People who already redeemed keep what they got. Unredeemed codes do not go back into your quarterly limit.
To extend a custom code, create a new batch with the same code and a later expiry date. Apple redeems from the earliest batch that has not expired first.
Before you start
- You can create offers at any time, but to generate one-time or custom codes your app must be Ready for Distribution and the in-app purchase must be Approved.
- People can only redeem codes while your app is Ready for Distribution, in other words live on the App Store.
- You need the Account Holder, Admin, App Manager or Marketing role.
Create an offer for an in-app purchase
This covers consumables, non-consumables and non-renewing subscriptions.
- In App Store Connect, open Apps and select your app.
- In the sidebar, click In-App Purchases, then the product.
- Scroll to Offer Codes and click Create Offer. For a non-renewing subscription, scroll to Non-Renewing Subscriptions, click Manage, then Create.
- Enter a reference name and pick who is eligible: people who never bought in your app, people who bought in the last 30 days, people who bought more than 30 days ago. Select all three to make it available to everyone.
- Pick the countries or regions.
- Choose Free Offer or Paid Offer. For a paid offer, set the price in a base country and review the comparable prices Apple fills in for the other storefronts.
- Check the summary and click Confirm.
The reference name is permanent, and you cannot reuse one that another offer in the same app already has. It is also how the offer shows up in Sales and Trends reports, so make it readable ("Newsletter Nov 2026" tells you more than "offer3").
Create an offer for an auto-renewable subscription
- Open your app, click Subscriptions in the sidebar, then the subscription group and the subscription.
- In Subscription Prices, click the add button (+), then Create Offer Codes.
- Enter a reference name and choose eligibility: new subscribers, existing subscribers, expired subscribers, or any mix.
- Decide what happens with your introductory offer if you have one (see below), pick the countries, then the offer type (Free, Pay as you go, Pay up front), the duration and the price.
- Confirm.
If the subscription has an introductory offer, you choose between two paths. With Yes, the customer gets the introductory offer first and then moves on to the code's offer. With No, the code applies first and the subscription then renews at the standard price, and the customer stays eligible for the introductory offer if they cancel and come back later. There is also a box that stops the subscription from renewing at the end of the offer. Tick it and you get a trial with no commitment, but only free offers are allowed then.
How intro offers, promotional offers, win-back offers and codes fit together (and Google Play's versions of each) is in introductory offers on both stores.
Create, download and share the codes
Open the offer by its reference name. For one-time codes, click Create One-Time Use Codes, choose the number and the expiry date, and click Create. When they are ready, click Download to get a CSV file. For custom codes, click Create Custom Codes and enter the code, the redemption limit and the expiry date.
Apple does not publish a fixed URL template in its help pages. The offer's page in App Store Connect shows an example redemption link; you add each code to the end of it. For subscription offers, Apple says the one-time code download includes the links too.
If you create codes often, the App Store Connect API has endpoints for both in-app purchase offer codes and subscription offer codes: create an offer, create one-time or custom codes, and list the one-time code values.
What people see when they redeem
People can redeem a code in three places:
- The redemption link, which opens the App Store with the code filled in.
- The App Store itself: account page, then the redeem code option (custom codes for in-app purchases are the exception; they work only through the link or your app).
- Inside your app, if you add Apple's redemption sheet.
If the person does not have your app, the App Store asks them to download it as part of the redemption. A redeemed code counts as a purchase, so your app has to deliver the product. Codes for subscriptions work on iOS 14.2, iPadOS 14.2, macOS 15 and visionOS 1.0 or later. Codes for consumables, non-consumables and non-renewing subscriptions need iOS 16.3, iPadOS 16.3, macOS 15 or visionOS 1.0 or later.
Support codes inside your app
The redemption sheet is optional but Apple recommends it. In SwiftUI, use the offerCodeRedemption(options:isPresented:onCompletion:) modifier. In UIKit or AppKit, call AppStore.presentOfferCodeRedeemSheet(from:options:). On iOS 16 and earlier only subscription codes are supported, through presentCodeRedemptionSheet().
Codes redeemed outside your app arrive as transactions too, so listen to Transaction.updates from launch and check Transaction.unfinished and Transaction.currentEntitlements when the app opens. A redeemed code shows up with an offer type of code on the transaction. Test it with sandbox codes on a device or with a StoreKit configuration file in Xcode before you send real codes out.
The Android side
Google Play has its own promo codes, created in Play Console. They work differently: separate quotas, CSV download only, and custom codes limited to subscriptions. The full walkthrough is in Google Play promo codes for developers. If you give away codes, plan both stores at the same time, so Android users are not left waiting.
Where to give codes away
Your own channels come first: your mailing list, your social accounts, your website, your support replies. Code-sharing sites and communities work too, with one caution: a public custom code spreads fast and can be used up by people who never open your app again. One-time codes handed out one per person hold up better.
Premium App Drops is one more option from 27 Nov 2026: a weekly drop on the web where developers list App Store and Google Play codes and each person claims one. Details for developers are on the developers page.
Whatever channel you use, never tie a code to a rating or review. Apple's App Review Guidelines warn that manipulating reviews or rankings with "paid, incentivized, filtered, or fake feedback" can get you removed from the Apple Developer Program. The only review request that belongs in your app is Apple's own prompt, never linked to a code.
A side note on pricing. Offer prices are set per country. If you also want to rethink your regular prices country by country, App Store Connect lets you do it by hand. PricePush (pricepush.app) is another way: it sets local prices on both stores. Disclosure: I make PricePush, and it is one tool among several.
Questions people ask
Can an offer code make a paid app free to download?
No. Offer codes apply to in-app purchases and subscriptions. For a paid app, App Store Connect still has app promo codes for free downloads.
Can one person redeem the same offer twice?
No. Apple allows one code per offer per customer. You can make a second offer, but eligibility rules still apply.
Why does a new code not work yet?
Apple says codes can take up to an hour before they redeem. Also check that the app is live and that the person's App Store country is one you picked for the offer.
Do unused codes come back to my quota?
No. Apple says unredeemed codes you deactivate are not added back to the quarterly limit.