Apple の Send Consumption Information が求める項目は十二個から五個になりました。以下で一つずつ解説します
顧客が Apple に返金を申請するとき、Send Consumption Information のペイロードがあなたの返答になります。Apple はこれを十二個の項目から五個へ、必須三個と任意二個に削減しました。以下では各項目、それぞれが受け付ける値、そして送信すべき 12 時間の猶予について説明します。

要点
- Apple の Send Consumption Information ペイロードは、これまでの十二個から減って、現在は五個の項目を持ちます。必須は三個で、customerConsented、deliveryStatus、sampleContentProvided、任意は二個で、consumptionPercentage と refundPreference です。
- customerConsented は厳格な関門です。Apple 自身の指針では、顧客が消費データの共有に同意していない場合、ペイロードそのものを送信しません。
- deliveryStatus は最も強いシグナルを担います。DELIVERED は購入が正常に機能したことを示し、四つの UNDELIVERED の値は、顧客が使える製品を一度も受け取らなかったことを Apple に伝えます。
- consumptionPercentage は、従来の四段階の consumptionStatus 列挙を、milliunits 単位の正確な数値に置き換えました。100,000 milliunits はアイテムが完全に消費されたことを意味します。
- refundPreference は今や数値ではなく文字列です。三つの値は DECLINE、GRANT_FULL、GRANT_PRORATED で、これは決定ではなく希望を表します。裁定するのは依然として Apple です。
- ペイロードは、トランザクション id をキーとして Send Consumption Information エンドポイントへ PUT で送信し、Apple は空のボディで 202 Accepted を返します。猶予は CONSUMPTION_REQUEST の後 12 時間です。
- 自動更新サブスクリプションについては、Apple が経過時間から消費を自ら算出するため、consumptionPercentage は消耗型および非更新の購入向けです。
顧客が返金を望むときに Apple があなたへ求める事実の一覧は、大幅に短くなりました。Send Consumption Information ペイロード、つまり開発者が App Store の返金判断へ送り込める唯一の返答は、かつて十二個の項目を持っていました。今は五個です。Apple は WWDC24 前後にこれを整理し、旧来のアカウントプロファイリング的な質問の大半を、二つの簡潔な質問と一つの数値へまとめました。項目が減ったのは些細な変更ではありません。Apple がどの証拠を重んじるかを変え、あなたが絶対に誤ってはならない項目がどれかを変えます。
これが単なるスキーマの注記ではなく、あなたが注目すべき理由をここで述べます。このペイロードは、Apple の返金において、あなたの側の主張が判断に届く唯一の瞬間です。消耗型の返金は、あなたが実際に費用をかけて提供した収益を取り消します。そしてこの五個の項目こそ、製品が提供され使用されたと Apple に伝える手段です。12 時間の猶予を逃すか、いずれかの項目を誤って埋めると、Apple は顧客の主張だけで裁定します。
What Send Consumption Information is
Send Consumption Information は、Apple がサーバーへ CONSUMPTION_REQUEST 通知を送った後にあなたが呼び出す App Store Server API のエンドポイントです。この通知は、ある顧客がアプリ内購入について Apple に返金を申請し、Apple が裁定の前にあなたの意見を求めていることを意味します。あなたは、小さな JSON ボディ、すなわち ConsumptionRequest をそのエンドポイントへ PUT して答えます。Apple はそれを読み、顧客の履歴と併せて検討し、判断を下します。返金を決めるのは決してあなたではありません。あなたは事実を提供します。
この body がインターフェースのすべてです。別のフォームも、不服申し立ても、二度目として数えられる送信もありません。その一回のペイロードで送るものが、あなたの主張のすべてです。ですから各項目の意味は、項目数が示唆する以上に重要です。
The five fields Apple asks for now
現在の ConsumptionRequest には五個のメンバーがあります。三個が必須で、二個が任意です。Apple がかつて顧客のアカウントについて尋ねていたすべて、つまりアカウント年数、生涯支出、生涯返金、プレイ時間は、あなたが送信する内容から取り除かれました。
| 項目 | 必須 | 型 | 何を担うか |
|---|---|---|---|
| customerConsented | はい | Boolean | 顧客が消費データを Apple と共有することに同意したか |
| deliveryStatus | はい | String | あなたのアプリが使える製品を提供したか |
| sampleContentProvided | はい | Boolean | 購入前に無料サンプルまたは試用を提供したか |
| consumptionPercentage | いいえ | Integer | 購入がどれだけ消費されたか、milliunits 単位 |
| refundPreference | いいえ | String | その返金要求に対してあなたが望む結果 |
customerConsented is the gate
customerConsented は Boolean で、あなたが何かを送信するかどうかを決める項目です。これは、顧客があなたに消費データを Apple と共有させることに同意したかどうかを記録します。Apple の指針は明快です。顧客が同意していなければ、消費情報を送信しないこと。ですからこれは、自分の主張を強めるために true に切り替える項目ではありません。あなたがすでに握っているはずの本当の是非を反映し、ここが false であれば、ペイロードの残りは送信すべきではありません。
deliveryStatus is the field that moves refunds
deliveryStatus は文字列の列挙で、あなたが持つ最も強いてこです。これは、あなたのアプリが実際に使えるアプリ内購入を提供したかどうかを Apple に伝えます。一つの値は「はい」を示します。他の四つは「いいえ」を示し、それぞれ理由が異なり、いずれも顧客に正当な不満があることを Apple に伝えます。
| 値 | Apple に何を伝えるか |
|---|---|
| DELIVERED | アプリは使えるアプリ内購入を提供した |
| UNDELIVERED_QUALITY_ISSUE | 品質上の問題により購入が提供されなかった |
| UNDELIVERED_WRONG_ITEM | 顧客は誤ったアイテムを受け取った |
| UNDELIVERED_SERVER_OUTAGE | サーバー障害が提供を止めた |
| UNDELIVERED_OTHER | 別の理由で購入が提供されなかった |
sampleContentProvided answers a fairness question
sampleContentProvided は Boolean です。これは、顧客が購入する前に、無料サンプル、試用、あるいはその購入が何をするかについての明確な情報を与えたかどうかを記録します。ここが true であることは小さな公平性のシグナルです。顧客は、自分が何を買っているのかを知る機会を持っていました。それ自体で何かを決めるわけではありませんが、わずか三個の必須項目の一つであり、Apple が明らかにすべての返答にそれを求めていることが分かります。
consumptionPercentage is a number now, not a status
これは最も大きく変わった項目です。旧ペイロードには consumptionStatus という四段階の列挙がありました。UNDECLARED、NOT_CONSUMED、PARTIALLY_CONSUMED、FULLY_CONSUMED です。新しいペイロードはこれを consumptionPercentage、milliunits で測る整数に置き換えます。100,000 milliunits はアイテムが完全に消費されたことを意味し、50,000 は半分、0 は手つかずです。正確な数値は四択の区分に勝ります。なぜなら、顧客がクレジットパックの九割を使い切ったと言えるからで、部分消費へ切り下げずに済みます。
人がつまずきがちな注意点が一つあります。自動更新サブスクリプションについては、Apple が経過時間から消費を自ら算出するため、consumptionPercentage は消耗型および非更新の購入向けです。当てはまる場合には送信し、当てはまらない場合は Apple に導き出させてください。

refundPreference states a preference, not a verdict
refundPreference は任意の文字列で、あなたが望む結果を Apple に伝える場所です。これも形が変わりました。旧項目は prefer-grant、prefer-decline、no-preference のような値を持つ数値でした。新しいものは三つの値を持つ名前付きの文字列です。
| 値 | あなたが求めているもの |
|---|---|
| GRANT_FULL | Apple が全額返金することを望む |
| GRANT_PRORATED | 使用分を反映した一部返金を望む |
| DECLINE | Apple が返金を拒否することを望む |
What Apple dropped, and why it matters
旧 ConsumptionRequest には十二個の項目がありました。そのうち七個が、あなたが送信する内容から消えました。accountTenure、lifetimeDollarsPurchased、lifetimeDollarsRefunded、playTime、userStatus、platform、appAccountToken は、ペイロードのうちアカウントプロファイリングの半分を成していました。顧客がどれだけ長くアカウントを持っているか、いくら使ったか、いくら返金されたか、どれだけアプリを使ったかで区分するよう求める項目です。
Apple がそれらを削ったのには、留意すべき理由があります。それらの項目は、開発者に顧客のプロファイルを差し出すよう求めており、大半の開発者は未申告のままにするか、当て推量で埋めていました。残る五個は購入と提供に関するもので、あなたが自分のシステムから実際に確認できる事実です。この転換は、顧客が誰かから、この特定の購入で何が起きたかへの移行です。
| 旧ペイロード | 現在のペイロード | |
|---|---|---|
| 項目総数 | 12 | 5 |
| 必須項目 | 実質的に強制なし | 3 |
| 消費シグナル | consumptionStatus、四区分 | consumptionPercentage、正確な milliunits |
| 返金の希望 | 数値の列挙 | 名前付き文字列、3 つの値 |
| アカウントプロファイリング | 年数、生涯支出、返金、プレイ時間、状態 | 削除 |
The endpoint and the clock
ペイロードは、係争中の購入のトランザクション id をキーとして、HTTP PUT で Send Consumption Information エンドポイントへ送信します。PUT /inApps/v1/transactions/consumption/{transactionId} です。成功すると 202 Accepted が返り、レスポンスボディは空です。その空の返答は想定どおりであって、不具合ではありません。Apple があなたのデータをキューに入れたことを確認するもので、最終的な結果については何も伝えません。結果は後に REFUND または REFUND_DECLINED 通知として届きます。
時計は、あなたが引き延ばせない部分です。Apple は CONSUMPTION_REQUEST から 12 時間の返答時間をあなたに与えます。使われるのは最初の返答だけなので、最初のペイロードが完全かつ正確でなければなりません。Apple は同じ購入について CONSUMPTION_REQUEST を複数回送ることがありますが、それぞれの締め切りは固定であり、手作業のレビューがタイムゾーンや週末をまたいで 12 時間に収まることはめったにありません。
What a mishandled field costs you
The money left the building before the refund did
消耗型の返金は、きれいな取り消しではありません。顧客がクレジットのパックや AI 生成のひとまとまりについて返金を求める頃には、あなたはすでにその提供に費用をかけています。リクエストごとの GPU 推論、トークン単位で課金される第三者モデルの API 呼び出し、生成物のためのストレージ、そしてその使用に紐づくクリエイターやパートナーへの支払いです。ストアの価格は顧客に戻ります。あなたの提供コストは戻ってきません。ですから、争えたはずの返金は損益ゼロの出来事ではなく、そのアカウントに応えるために支払ったすべての純損失です。
The five fields are how you avoid paying twice
deliveryStatus を DELIVERED に設定し、consumptionPercentage が高いことは、顧客が製品を受け取り使用したと Apple に伝える二つの事実です。それらは、計算資源、API 呼び出し、ストレージがいずれも役目を果たしたという、あなたの証拠です。ペイロードを送らずにおけば、Apple はそれを一切聞きません。顧客の主張から裁定し、返金は通りやすくなり、あなたは取り消された収益と、その裏にある提供コストの両方をかぶることになります。
Chargebacks are the worse door, and silence points to it
Apple の返金フローで満足を得られなかった顧客は、なお自分の銀行にその請求への異議を申し立てられます。カードのチャージバックは最終的で、定額の異議申し立て手数料がかかり、決定を Apple とあなたの手から奪います。CONSUMPTION_REQUEST に的確に応じることで、争いは Apple のシステム内にとどまり、そこであなたは発言権を持ちます。それを無視すれば、際どい案件を、あなたが発言権を持たない唯一の経路へ押しやることになります。
How RefundHalt handles it
この五個の項目は、12 時間以内に、あらゆる CONSUMPTION_REQUEST に対し、正しいトランザクションをキーとして、正確に埋めなければならないとなると、単純ではなくなります。RefundHalt は通知を捕捉し、その購入についてのあなた自身の提供および使用の記録を読み取り、猶予が閉じる前に自動でペイロードを送信します。deliveryStatus はあなたのログが実際に示すものを反映し、consumptionPercentage は当て推量ではなく実際の使用に基づき、refundPreference は一度設定した方針に従います。あなたが得るのは、証拠とともに審査される争える返金であって、逃した締め切りとあなた抜きで下された決定ではありません。
よくある質問
- Apple の Send Consumption Information には現在いくつの項目がありますか。
- 五個です。必須は三個で、customerConsented、deliveryStatus、sampleContentProvided、任意は二個で、consumptionPercentage と refundPreference です。ペイロードの以前のバージョンには十二個の項目があり、Apple は accountTenure、lifetimeDollarsPurchased、userStatus のようなアカウントプロファイリング系のものを削除しました。
- 消費リクエストにおいて deliveryStatus は何を意味しますか。
- deliveryStatus は、あなたのアプリが使えるアプリ内購入を提供したかどうかを Apple に伝えます。DELIVERED は提供したことを意味します。四つの UNDELIVERED の値、UNDELIVERED_QUALITY_ISSUE、UNDELIVERED_WRONG_ITEM、UNDELIVERED_SERVER_OUTAGE、UNDELIVERED_OTHER は、それぞれ明示された理由で提供しなかったことを示します。ペイロードで最も強いシグナルなので、あなた自身のログと一致していなければなりません。
- consumptionPercentage は百分率ですか、それとも生の数値ですか。
- 普通の百分率ではなく、milliunits で測る整数です。100,000 milliunits は顧客が購入を完全に消費したことを意味し、50,000 は半分、0 は手つかずです。旧来の consumptionStatus 列挙を置き換えたもので、そちらは未消費から完全消費までの四区分しかありませんでした。
- refundPreference を DECLINE に設定すると返金は止まりますか。
- いいえ。refundPreference はあなたが望む結果を表すもので、何かを決めるわけではありません。DECLINE は返金しないほうがよいと Apple に伝え、GRANT_FULL や GRANT_PRORATED はその逆を伝えますが、Apple はあなたの希望を顧客の履歴と自らの方針と併せて検討し、最終的な判断を下します。
- 顧客が消費データの共有に同意しなかった場合はどうなりますか。
- その場合、ペイロードを送信すべきではありません。customerConsented は必須の Boolean で、Apple の指針では、顧客が消費データの共有に同意していなければ、CONSUMPTION_REQUEST にまったく応答しません。同意は、あなたがすでに握っているはずの本当の是非であって、自分の主張を助けるために true に設定する値ではありません。
- 消費情報を送るまでにどれだけの時間がありますか。
- Apple が CONSUMPTION_REQUEST 通知を送ってから 12 時間です。Send Consumption Information エンドポイントへ PUT で応答し、成功すると空のボディで 202 Accepted が返ります。使われるのは最初の返答だけなので、最初のペイロードが完全でなければならず、手作業のプロセスがその猶予に収まることはめったにありません。
出典と参考資料
- Apple Developer: ConsumptionRequest
- Apple Developer: Send Consumption Information
- Apple Developer: Send Consumption Information V1
- Apple Developer: deliveryStatus
- Apple Developer: consumptionPercentage
- Apple Developer: refundPreference
- Apple Developer: Explore App Store server APIs for In-App Purchase (WWDC24)
RefundHalt
App Store と Google Play の返金を自動処理
続きを読む
顧客の App Store 返金履歴をまるごと返すエンドポイントが一つあり、それが何を返すのかを解説する
Apple の Get Refund History エンドポイントは、顧客の完全な App Store 返金履歴を署名付きトランザクションとして返します。すべてのフィールド、revision トークンによるページングの仕組み、なぜアプリ単位ではなく顧客単位なのか、そして見逃した返金がいくらの損失になるのかを解説します。
アプリはアプリ内で返金リクエストシートを表示できます。顧客が送信をタップした後にAppleが何をするかを解説します
Appleのアプリ内返金リクエストは、顧客がアプリを離れることなく、Appleが構築して審査するシート上で返金を申請できる仕組みです。beginRefundRequestが何を返すか、サーバー上で開始するCONSUMPTION_REQUESTと48時間のタイマー、そしてこのボタンを出荷する価値があるかを解説します。