Offer Codes Planner
Offer codes give away or discount a subscription or an in-app purchase. Apple caps how many offers can be live, how many codes you can mint a quarter, how big a batch has to be, and how long a code lives — and kills every code at the start of its expiration date. Plan against all of it here.
These are not promo codes, and none of the promo code numbers apply
An app promo code gives someone a free copy of the app: 100 per version of each platform, valid four weeks from the day it was generated. That is a different tool. An offer code gives someone a free or discounted subscription or in-app purchase: up to 10 active offers, up to 1,000,000 codes per app per quarter, batches of 500 to 25,000, and a maximum life of 6 months. Not one figure carries across. If you are trying to hand a journalist a free copy of a paid app, you want the other page.
A code dies at the start of its expiration date, not the end
Codes expire at 12:00 a.m. PT on the expiration date.
— Apple, stated for one-time-use, custom and sandbox codes on both help pages
12:00 a.m. is midnight opening that date. Set an expiration of the 1st and the codes are dead the moment the 1st starts in Los Angeles — the last day anyone can redeem is the 31st. Every offer below shows that last redeemable day rather than the date you typed, and converts the cutoff into your own time zone, because for a developer in London or Tokyo that instant lands partway through a working day rather than at midnight.
This page makes no network requests of any kind and everything you type stays in this browser. It cannot see your offers, your redemptions or your revenue — those live in App Store Connect and nowhere public. There is deliberately no redemption rate, no benchmark, no recommended discount and no estimate of what an offer does to conversion, retention or churn, because nobody publishes any of it.
Your offers
Nothing planned yet. Add an offer and this will check it against Apple’s documented limits — batch bounds, the active-offer ceiling on whichever unit applies to it, the six-month maximum, and the day the codes really stop working.
Apple’s rules
Subscription offer codes and in-app-purchase offer codes are documented on separate pages and are not the same in every respect. Switch between them — the differences are real and several of them change a plan.
1 million codes per app, per quarter
Both pages state the ceiling, shared across all your subscriptions or all your in-app purchases. Apple’s wordings disagree on what is counted — the subscription page’s opening line says “1 million redemptions”, its bullets and the IAP page say “1 million codes”. Its deactivation step settles it in the strict direction: unredeemed codes “will not be reapplied to the 1,000,000 quarterly limit”.
10 active offers per subscription SKU
subscriptions onlyApple: “You can have up to 10 active offers per subscription SKU at a time in App Store Connect.” Per SKU — so each subscription you sell carries its own ten.
One-time-use batches: 500 minimum, 25,000 maximum
Apple: “You must select a minimum of 500 and a maximum of 25,000. If you need more than 25,000 codes, you can create multiple batches of codes for the same offer.” There is no small batch — 500 is the floor even if you only need six.
Custom codes: up to 64 characters, up to 25,000 redemptions at a time
Apple: “Enter a custom code up to 64 characters and without any special characters”, with a redemption limit “of up to 25,000 at a time. If you need more, use the same custom code multiple times for the same offer.”
Six months maximum, and the code dies at the START of that day
Apple: one-time-use codes “can be valid for a maximum of six months”, custom codes the same when an expiration is set, and “Codes expire at 12:00 a.m. PT on the expiration date.” 12:00 a.m. is midnight opening that date — so the last day anyone can redeem is the day before it.
Custom codes can have no end date at all
Apple: “An expiration date isn’t required for custom codes… To create codes with no expiration date, choose No End Date from the date picker.” Such a code stays live until its redemption limit is reached or you deactivate it. “Expiration dates can’t be edited.”
One code per offer, per customer
Apple states it for both code types: “Customers are limited to redeeming one code per offer.” Handing the same person a second code for the same offer does nothing.
Where a subscription code can be redeemed
subscriptions onlyOne-time-use codes: a redemption URL, the App Store code redemption flow, or inside your app. Custom codes: a redemption URL or inside your app — Apple does not list the App Store flow for custom codes. In-app redemption needs iOS 14, iPadOS 14 or macOS 15 or later plus the StoreKit method; Apple’s subscriptions page gives iOS 14.2, iPadOS 14.2 and macOS 15 or later for redeeming on the App Store.
Your app must be Ready for Sale
subscriptions onlyApple: “In order for customers to redeem codes, your app must be in the Ready for Sale state.”
An offer cannot be edited once created
Apple: “Once you create an offer, you won’t be able to edit it. If changes to customer eligibility are needed, create a new offer.” Which is why eligibility is worth getting right on paper first — that is what this page is for.
Up to an hour before a code works
Apple: “It may take up to an hour before codes are redeemable by customers.” Do not create a batch and hand it out in the same minute.
Deactivating does not give the quarter back
Apple: on deactivation “The codes will expire immediately… Unredeemed codes will also expire and will not be reapplied to the 1,000,000 quarterly limit.” Deactivating an offer is also permanent — it “can’t be reactivated later” and all its codes are invalidated, though people who already redeemed are unaffected.
A custom code belongs to one offer
Apple: custom codes “can’t be used for other offer campaigns or subscriptions for the app. To create a custom code that’s already being used by a different offer for the same app, you must first deactivate the code.” To extend one, create a new batch with the same code and a later date — Apple: “The system always redeems from the earliest non-expired batch first.”
Priced across 175 countries and regions
Apple: “App Store Connect provides comparable prices for all 175 App Store countries and regions, taking into account taxes and foreign exchange rates.” You choose where the offer is available before you choose the price.
Role: Account Holder, Admin, App Manager, or Marketing
Both pages list the same roles. If Offer Codes is missing from your App Store Connect sidebar, that is usually why.
What you find out afterwards
Nothing on this page can read a redemption — every figure you typed above is your own bookkeeping. Apple reports redemptions in your own account, and it is worth knowing what that report does and does not contain before you design the campaign.
Apple’s Subscription Offer Redemption Report carries these columns:
You cannot attribute a redemption to an individual one-time-use code. Apple defines the Offer Code column as “The custom code you created in App Store Connect. In the case of one-time use code redemptions, this field is blank.” So a custom code is traceable and a one-time-use code is not — if you need to know which channel a redemption came from, that is an argument for giving each channel its own custom code rather than a slice of one batch.
Redemptions are reported per day and per territory, against the offer’s reference name — which is why Apple will not let you change that name later. Apple’s promotional code types reference adds one code, FREE: “Redemption of a subscription offer code with a free pricing type. The customer price and proceeds are 0 for the duration of the offer period.”
That report is documented for subscriptions. The Reporting reference section carries no in-app-purchase equivalent, so what an IAP offer’s reporting looks like is not something this page will assert. Apple’s subscriptions page also notes that to be notified of redemptions as they happen you need App Store Server Notifications set up.
Before you print the code
A custom code cannot be typed into the App Store. Apple lists the App Store code redemption flow for one-time-use codes and, on both help pages, gives custom codes a redemption URL or in-app redemption only. A custom code on a flyer with no URL beside it and no StoreKit support in the app is a code nobody has anywhere to enter.
For one-time-use codes Apple says to build the redemption URLs yourself: “copy the example link from your offer details page, then add each code to the end of the URL”, and that those URLs are also included in the downloadable file. Apple’s subscriptions page describes one-time-use codes as 18-digit unique codes.
Existing subscribers are more constrained than the eligibility checkbox implies. Apple: “Existing subscribers can only redeem codes that are an upgrade from or at the same level as their current subscription”, and “Depending on your subscription setup, existing subscribers may be able to redeem more than one offer if the offers are in different subscription groups.”
And Apple handles the redemption screen itself — your icon (or the subscription’s promotional image, if you set one), the display name, the duration and the price. In order for a code to be redeemed at all, your app must be available on the App Store. Someone who does not have it is prompted to download it first.
Sandbox codes
Not part of the plan above, because they never reach a customer. Apple documents them with figures of their own and they are easy to confuse with the real thing.
- Sandbox codes are one-time-use codes for testing. Apple’s subscription page sets a batch at a minimum of 10 and a maximum of 10,000; its in-app-purchase page states up to 10,000 sandbox codes per app per quarter, shared across all In-App Purchases.
- Apple: sandbox test accounts have no redemption limits, and “If redemptions are blocked, clear the purchase history for the sandbox Apple account and retest.”
- Sandbox codes carry the same 12:00 a.m. PT expiry wording and the same six-month maximum. They are not counted anywhere in this planner, because they never reach a customer.
Where these numbers come from
Every limit on this page was read from Apple’s Set up offer codes and Create offer codes for In-App Purchases on 2026-08-25, with the reporting details from the Subscription Offer Redemption Report and promotional code types references the same day. The two mechanisms are modelled separately because Apple documents them differently — different active-offer units, different eligibility vocabularies, different minimum OS versions for in-app redemption, and a redemption report for one and not the other.
Apple does not say when the quarter resets. Both pages say “per quarter” and the deactivation step says “the 1,000,000 quarterly limit”, and nothing states whether that is a calendar quarter, Apple’s fiscal quarter or a rolling window. The grouping above is calendar quarters and is labelled as an assumption wherever it appears.
Apple’s own two sentences about the ceiling disagree. The subscription page opens with “a maximum of 1 million redemptions per app, per quarter” while its bullets and the in-app-purchase page both say 1 million codes. The deactivation step breaks the tie in the strict direction — unredeemed codes “will not be reapplied to the 1,000,000 quarterly limit” — so this page counts codes created and states both wordings rather than quietly picking one.
Deliberately absent, because Apple publishes none of it: any redemption rate, conversion figure, retention or churn effect, revenue estimate, recommended discount or recommended number of codes. Whether an offer worked is visible only in your own App Store Connect. There is no claim that offer codes affect ranking or featuring — Apple documents no such factor. And unlike promo codes, where Apple states outright that a recipient cannot rate or review the app, Apple says nothing either way about offer code redeemers; that absence is reported as absence rather than filled in.
Two smaller readings are this page’s rather than Apple’s, and are marked where they appear: six calendar months from the 31st of a month is clamped to the last day of the target month, which Apple does not document; and “without any special characters” is enforced as letters and digits only, because Apple does not publish the list. Roles are Apple’s: Account Holder, Admin, App Manager, or Marketing.
Giving away the app itself instead? The promo code tracker covers that mechanism and its separate allowance. Timing a campaign around a moment in the app? In-app events have their own limits, and campaign links tag whatever you send people to.
How do you give away a subscription or an in-app purchase?
Not with a promo code. Promo codes give away the app itself — 100 per version of each platform, four weeks from generation. Giving away or discounting a subscription or an in-app purchase is a separate mechanism called offer codes, and not one of those numbers carries across: up to 10 active offers, up to 1 million codes per app per quarter, batches of 500 to 25,000, and a maximum life of six months.
This plans a set of offers against those limits. It checks batch bounds, the active-offer ceiling on whichever unit applies, the six-month maximum and the quarterly ceiling, and it reads Apple’s expiry sentence literally — codes expire at 12:00 a.m. PT on the expiration date, which is the instant that day begins, so the last day anyone can redeem is the day before. Everything stays in your browser and no code you would actually hand out is ever stored here.
How it works
- 1Add an offer and say whether it hangs off an auto-renewable subscription or an in-app purchase. The two are documented separately by Apple and differ in more than the name, so the eligibility options, the OS versions needed for in-app redemption and the active-offer unit all change with that choice.
- 2Pick eligibility from Apple’s own options. Subscriptions offer new, existing and expired subscribers, counted against the subscription group. In-app purchases offer never purchased, purchased in the last 30 days, and purchased more than 30 days ago. Apple will not let you edit an offer after creating it — changing eligibility means a whole new offer — which is the reason to settle it on paper first.
- 3Choose one-time-use codes (a batch of 500 to 25,000, each redeemable once) or a custom code you name yourself, up to 64 characters, redeemable by up to 25,000 people at a time.
- 4Set the creation and expiration dates. The page shows the last day the codes really work, converts Apple’s 12:00 a.m. PT cutoff into your own time zone, and flags anything past the six-month maximum.
- 5Active offers are counted on Apple’s unit — 10 per subscription SKU, but 10 per app for in-app purchases — and codes are counted against the million-a-quarter ceiling. Export the plan as CSV or copy it as text.
What it cannot tell you
- It cannot see a single redemption. Nothing here talks to App Store Connect and no public API exposes an offer’s state; every redemption figure on the page is one you typed after reading your own reports.
- There is no redemption rate, no conversion figure, no retention or churn effect and no revenue estimate — not because they were left out, but because nobody publishes them. Whether an offer worked is visible only inside your own account.
- No recommended discount, batch size or number of codes, and no benchmark to compare against. What a discount should be depends on price, product and audience, none of which this page can see.
- Apple never says when its quarter starts. Both help pages say “per quarter” and neither defines the period, so the grouping here is calendar quarters and is labelled as an assumption. App Store Connect is the authority on what has actually been counted.
- Apple’s own two sentences about the ceiling disagree — one says 1 million redemptions, the others say 1 million codes. This page counts codes created, the stricter reading, because Apple also states that unredeemed codes are not credited back to the quarterly limit.
- You cannot attribute a redemption to an individual one-time-use code. Apple’s Subscription Offer Redemption Report leaves the Offer Code column blank for one-time-use redemptions, so per-channel attribution needs a separate custom code per channel.
- Nothing here claims offer codes affect ranking or featuring, because Apple documents no such factor. And unlike promo codes, where Apple states outright that a recipient cannot rate or review the app, Apple says nothing either way about offer code redeemers — that silence is reported rather than filled in.
Frequently asked questions
What is the difference between a promo code and an offer code?
A promo code gives someone a free copy of the app: Apple documents 100 per version of each platform, valid four weeks from generation. An offer code gives a free or discounted subscription or in-app purchase, with completely different limits — 10 active offers, 1 million codes per app per quarter, batches of 500 to 25,000 and a six-month maximum life. Use the promo code tracker for the first and this page for the second.
How many offer codes can I create?
Apple documents up to 1 million codes per app, per quarter, shared across all your subscriptions or all your in-app purchases. One-time-use codes come in batches of 500 to 25,000, and you can create several batches against the same offer. Apple does not publish when that quarter starts or resets.
When exactly does an offer code expire?
Apple states that codes expire at 12:00 a.m. PT on the expiration date. Read that literally: 12:00 a.m. is midnight opening that date, so a code with an expiration of the 1st is already dead when the 1st begins in Los Angeles and the last usable day is the 31st. For anyone outside Pacific Time that moment falls partway through their own day, which is why this page converts it into your time zone.
How many active offers can I have at once?
Ten, but Apple counts them against different things. For subscriptions it is 10 active offers per subscription SKU, so each subscription you sell has its own ten. For in-app purchases it is 10 active offers per app, shared across every IAP. Deactivating an offer frees a slot but is permanent — Apple says it cannot be reactivated and all its codes are invalidated.
Who is eligible to redeem an offer code?
You choose, from Apple’s own options, and the options differ by mechanism. Subscriptions offer new subscribers (never subscribed to anything in the group), existing subscribers (including those in billing retry or a grace period with auto-renew on) and expired subscribers. In-app purchases offer never purchased, purchased in the last 30 days, and purchased more than 30 days ago. Apple also notes that existing subscribers can only redeem codes that are an upgrade from or at the same level as their current subscription.
Can someone type a custom code into the App Store?
No. Apple lists the App Store code redemption flow for one-time-use codes only; custom codes are redeemed through a redemption URL or inside your app with the StoreKit method. A custom code printed on a flyer with no URL beside it and no StoreKit support in the app is a code nobody has anywhere to enter.
Is my offer plan uploaded anywhere?
No. This page makes no network requests of any kind. Everything is stored in your browser’s local storage, there is no account and no sync. It also never stores the one-time-use codes themselves — only the shape of the batch — because those stay in the file App Store Connect gives you.
Launch, press & community
Or browse every free App Store optimization tool.