App Store Connect オファーコードの作り方:プロモコードの代わり
著者:Mehdi Azizi
公開・8 分
2026年3月以降、App内課金のプロモコードはオファーコードに置き換わりました。ワンタイムコードかカスタムコードを作り、リンク、App Store、アプリ内で引き換えてもらいます。
App Store Connectでは、サブスクリプションやApp内課金のプロモコードは、いまは「オファーコード」(offer code)と呼ばれています。2026年3月26日以降、AppleはApp内課金用のプロモコードを作成できなくしました。プロモコードは有料アプリのダウンロードを無料で提供する用途にしか使えません。まず商品にオファーを作り、次にワンタイムコードかカスタムコードを発行します。受け取った人は、リンク、App Store、またはアプリ内で直接コードを引き換えます。
僕のアプリはダウンロード無料で、サブスクリプションを販売しています。なのでアプリのプロモコードは僕には意味がありません。そこでTradaZenのコードでは、紹介の報酬をオファーコードで渡していて、コードの引き換え画面もアプリ自身が開きます。この記事では、何が変わったのか、Appleのオファー一覧表、コードの作成、引き換え方法、そしてガイドライン3.1.1で禁止されていることを順に説明します。
プロモコードとオファーコード:2026年に何が変わったか
Appleは2025年10月29日にデベロッパ向けニュースで発表しました。オファーコードは今後すべてのApp内課金に対応します。自動更新サブスクリプションに加えて、消耗型、非消耗型、自動更新なしのサブスクリプションも対象になりました。その結果、2026年3月26日以降はApp内課金のプロモコードを作れません。それ以前に作ったコードは、有効期限まで使えます。
一方、アプリのプロモコードは今も残っています。App Store Connectヘルプによると、有料アプリを無料で1本提供するものです。各コードは1回限りで、有効期間は4週間です。アプリのサイドバーにあるPromo Codesから、バージョンごと・プラットフォームごとに最大100個までリクエストできます。コードを使った人は、アプリの評価もレビューもできません。
サブスクリプションを販売する無料アプリでは、アプリのプロモコードは何も提供しません。提供すべきはサブスクリプションで、それにはオファーコードを使います。
Appleのオファー:対象者と入手方法
サブスクリプション関連のAppleのオファーに、アプリのプロモコードを加えた一覧です。僕が選ぶときに手元に置いている表です。
| オファーの種類 | 対象者 | 入手方法 |
|---|---|---|
| 導入オファー | グループの新規登録者 | 購入時に自動適用 |
| ワンタイムオファーコード | 特定の1人 | リンク、App Store、アプリ |
| カスタムコード | キャンペーン、特定の層 | リンクまたはアプリ内で入力 |
| プロモーションオファー | 現在または過去の登録者 | アプリから提示 |
| ウインバックオファー | 過去の登録者 | 設定、App Store、アプリ |
| アプリのプロモコード | 有料アプリのみ | App Storeで入力 |
オファーコードは、あなた自身がアプリの外で配るためのものです。メール、自分のサイト、イベント、コンテンツクリエイターなどで配ります。ほかのオファーは、あなたが決めたルールに従って、主に自動で、またはアプリ内に表示されます。無料トライアルにあたる導入オファーには専用のガイドがあります:導入オファーと無料トライアル。
サブスクリプションのオファーコードを作成する
サブスクリプションのオファーコードに関するヘルプの手順は2段階です。オファーを作り、次にコードを作ります。ラベルはAppleのヘルプのものです。
1. オファー。 Subscriptionsでグループを開き、サブスクリプションを開きます。Subscription Pricesでプラスボタンをクリックし、Create Offer Codesをクリックします。続いて:
- 参照名を付けます。売上レポートに表示される名前です。
- オファー終了後にサブスクリプションを更新するかを選びます。更新しない場合は、無料オファーしか選べません。
- 対象者にチェックを入れます。グループの新規登録者、現在の登録者、過去の登録者です。
- サブスクリプションに導入オファーがある場合、先に導入オファーを受けてからコードのオファーを受けるか、コードのオファーだけにするかを選びます。
- 国を選び、無料、前払い、都度払いのいずれかを、期間と価格とともに選びます。
作成したオファーは編集できません。対象者を変えたいときは、新しいオファーを作ります。
2. コード。 オファーのページから、2種類のコードを生成できます。
- ワンタイムコード:1人に1コード。500から25,000個の単位でまとめて作成します。有効期限は作成から最長6か月です。コードとそのリンクが入ったファイルをダウンロードします。
- カスタムコード:自分で決めた単語で、特殊文字なしの最大64文字。たとえばBACKTOSCHOOL(架空の例)です。使える人数を1回の発行につき最大25,000人まで設定でき、終了日も任意で設定できます。
共通の上限は、アプリごと四半期ごとに100万コード、サブスクリプションごとに有効なオファー10件、1人につきオファーごとに1コードです。コードが使えるようになるまで最大1時間かかることがあります。そして何より、コードを引き換えるにはアプリが販売中である必要があります。リリース前にサブスクリプションを無料提供することはできません。
テスト用に、Appleはサンドボックスコードを用意しています。1回に10から10,000個で、iOS 16.3以降のサンドボックスアカウントの設定から引き換えます。
買い切りやクレジットのオファーコード
App内課金のオファーコードのページも同じ考え方です。In-App Purchasesで課金アイテムを開き、Offer CodesセクションのCreate Offerを選びます。対象者はアプリ内の購入履歴で決まります。一度も購入していない、過去30日以内に購入した、30日以上前に購入した、のいずれかです。オファーは無料または有料です。
コードを生成するには、アプリが販売中で、課金アイテムが承認済みである必要があります。1つのアプリで同時に有効なオファーは最大10件です。アプリ内での引き換えにはiOS 16.3以降が必要です。
ユーザーがコードを引き換える方法
StoreKitのドキュメントには3つの方法が書かれています。
- 引き換えリンク。 App Store Connectのオファーのページにサンプルリンクがあるので、そこにコードを付け加えます。アプリが未インストールなら、まずダウンロードを促されます。
- App Store。 ワンタイムコードは、アカウントのRedeem Gift Card or Codeページで入力します。カスタムコードは、リンクかアプリ経由です。
- あなたのアプリ。 Swiftでは、SwiftUIなら
offerCodeRedemption、UIKitならpresentOfferCodeRedeemSheetです。ExpoアプリでRevenueCatを使う場合はpresentCodeRedemptionSheetです。
RevenueCatのドキュメントには、リンクの形式が載っています:https://apps.apple.com/redeem?ctx=offercodes&id={apple_app_id}&code={code}。また、Appleの引き換えシートはリリース当初からかなり不安定だと注意しており、予備としてリンクを勧めています。TypeScriptでの基本形はこうです。
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); // シートが失敗したときの予備
}
}
シートは結果を何も返しません。権利は購入後と同じように、アプリにすでにあるaddCustomerInfoUpdateListenerリスナー経由で届きます。RevenueCatにこれらのコードの売上を正しく計上させるには、In-App Purchaseキーが必要です。
これがTradaZenのコードで用意した構成です。紹介の報酬を使うときは、コード入力済みのリンクをアプリが開きます。コードを書き写す必要があるシートより確実だからです。受け取ったコードを入力するときは、ネイティブのシートを開き、予備としてApp Storeの引き換えページを開きます。どこに入力すればいいか分からないコードは役に立ちません。App Storeのアカウントページは奥まった場所にあり、どこにも案内がありません。アプリに「コードをお持ちの方」ボタンを置けば解決します。
プロモーションオファーとウインバックオファーの概要
この2つは、あなたが配るコードを使うものではありません。ただ、登録者を呼び戻す、または引き留めるという同じ目的に応えます。
プロモーションオファーは、現在または過去の登録者が対象です。表示するタイミングはアプリ側で決めます。たとえば解約しようとしている人に見せます。プロモーションオファーのヘルプによると、サブスクリプションごとに有効なものを10件まで持てます。サブスクリプションの全提供国で適用され、すでに導入オファーを受けた人も対象になります。オファーの署名にはIn-App Purchaseキーが必要です。
ウインバックオファー(win-back)は、過去の登録者が対象です。ウインバックオファーのヘルプに条件が詳しく書かれています。有料登録の最低期間、終了からの経過時間、オファー間の待機期間です。Appleはサブスクリプション管理ページに自動で表示し、iOS 18以降ではアプリ内にも表示します。共有用のリンクも生成されますが、対象者だけに送ってください。App Storeに表示させるには、承認済みのサブスクリプション画像で宣伝する必要があり、その画像にアイコンやスクリーンショットを流用してはいけません。詳しくはサブスクリプションのプロモーション画像のガイドで書いています。
ガイドライン3.1.1で禁止されていること
ガイドライン3.1.1は、機能やコンテンツのロック解除にApp内課金を使うことを義務づけています。ライセンスキーやQRコードのような独自の仕組みは禁止です。自分で作ったコードをアプリの入力欄に入れてプレミアムを解除する仕組みは、無料提供であっても3.1.1でリジェクトされるおそれがあります。Appleのオファーコードは、App内課金を経由するので問題ありません。ルールの全体はガイドライン3.1.1のガイドにまとめています。
もう1点、紹介の仕組みについて。ガイドライン5.1.2は、報酬(コードを含む)を受け取る条件として、通知、位置情報、トラッキングの許可を求めることを禁止しています。つまり報酬をこれらの許可に依存させることはできません。詳細はガイドライン5.1.2のガイドにあります。
ツールを間違えずにサブスクリプションを無料提供する
リリース前にアプリを無料で試してもらうなら、TestFlightを使います。購入はテスト環境を通るので、課金されません。リリース後はオファーコードを使います。サブスクリプション自体の構築はiOSサブスクリプションのためのRevenueCatで解説しています。
iOS & Android Kitは、僕のアプリのスターターコードがベースです。オンボーディング、ペイウォール、サブスクリプションはすでに実装済みで、3つ目のステップ「お金の仕組みをつなぐ」で設定方法を案内します。全体の流れはiOSのApp内サブスクリプションのページにあります。初めてのリリースを準備しているなら、無料の診断を受けてください。手順を正しい順番に整理し、僕のApple向けリジェクト対策チェックリストを送ります。
よくある質問
App Store Connectでプロモコードを発行するには?
有料アプリなら、アプリのサイドバーでPromo Codesを開きます。バージョンごとに最大100個、有効期間は4週間です。サブスクリプションやApp内課金なら、Create Offer CodesまたはCreate Offerで商品にオファーを作り、ワンタイムコードかカスタムコードを生成します。
プロモコードとオファーコードの違いは?
プロモコードは有料アプリのダウンロードを無料で提供します。オファーコードは、サブスクリプションやApp内課金を、無料または割引価格で、選んだ期間だけ提供します。2026年3月26日以降、App内課金に作成できるのはオファーコードだけです。
オファーコードはいくつ作れますか?
全商品合計で、アプリごと四半期ごとに最大100万個です。ワンタイムコードは500から25,000個の単位で作成し、カスタムコードは1回の発行につき最大25,000回使えます。1つのサブスクリプションで同時に有効なオファーは最大10件です。
アプリのリリース前にオファーコードは使えますか?
いいえ。コードを引き換えるにはアプリが販売中である必要があります。リリース前は、テスターにはTestFlightを、アプリ内での引き換えのテストにはサンドボックスコードを使ってください。
現在の登録者もオファーコードを使えますか?
はい、オファーの対象者で現在の登録者にチェックを入れていれば使えます。Appleのサブスクリプションのページによると、引き換えられるのは現在のサブスクリプションと同じレベル以上のコードだけです。
ユーザーはどこでオファーコードを入力しますか?
引き換えリンク、ワンタイムコードならApp StoreアカウントのRedeem Gift Card or Codeページ、または引き換えシートを組み込んだあなたのアプリです。カスタムコードはリンクかアプリ経由です。

