アプリの ROAS は Apple と Google が返金した購入をまだ数えている。だから純 ROAS で入札する
返金が広告プラットフォームに戻ることはほとんどなく、ROAS は Apple と Google がすでに返金した購入を成果として数え続けます。Firebase、Google Ads、AdAttributionKit のどこで返金が抜け落ちるのか、それがいくらの損失になるのか、そしてアプリの純 ROAS をどう組み立てるかを解説します。

要点
- Firebase が自動収集する app_store_refund イベントは、Google Play がアプリ内購入を返金したときにだけ発生します。Google はこれを Android のみと明記しているため、App Store の返金によって Firebase が記録した in_app_purchase の収益が減ることはありません。
- Google Ads は Android アプリの Google Play アプリ内購入を自動でトラッキングし、購入額をコンバージョン値として報告します。定期購入の場合、記録されるのは初回購入と初回の支払い額だけです。
- Google Ads のコンバージョン調整では、コンバージョン値を修正したり、ゼロに取り消したりできます。Google によると、オンラインコンバージョンを調整できるのは、トランザクション ID 付きで送信された場合だけです。
- Apple の AdAttributionKit には、初回起動後に 0 から 2 日目、3 から 7 日目、8 から 35 日目の 3 つのコンバージョン期間があり、詳細なコンバージョン値が含まれるのは最初のポストバックだけです。
- 純 ROAS は、広告に帰属する収益からその購入の返金を差し引き、広告費で割ったものです。購入者の返金が多いキャンペーンは、総 ROAS が高くても純 ROAS では順位が下がることがあります。
- 返金のシグナルが届くのはデベロッパーのサーバーで、広告ネットワークではありません。Apple は REFUND の App Store サーバー通知を送り、Google Play はリアルタイム デベロッパー通知と Voided Purchases API で無効化された購入を報告します。後者は過去 30 日分をさかのぼれます。
- デベロッパーが証拠を提出できる返金フローは 2 つだけです。12 時間以内に応答する Apple の CONSUMPTION_REQUEST と、24 時間以内に orders.reviewrefund で応答する Google Play のチャージバック審査です。
広告ダッシュボードはアプリ内購入をその瞬間に計上し、ほとんどの場合それを取り消しません。後で Apple や Google がその購入を返金すると、お金は支払額から消えますが、キャンペーンの収益には残ります。そのため ROAS は、その販売をもたらした広告を評価し続けます。純 ROAS、つまり返金後の収益を広告費で割った数字こそが、どのキャンペーンが本当に利益を生んだかを示します。これは自分で組み立てる必要があります。返金のシグナルは広告ネットワークではなく、あなたのサーバーに届くからです。
返金を除外しないと ROAS が収益を過大に示す理由
ROAS は帰属収益を広告費で割ったものです。収益側は通常、購入時に一度だけ、端末上の SDK かストアからのコンバージョンのインポートによって書き込まれます。返金はその後、端末の外で、顧客と Apple または Google の間で起きる出来事です。何かがそれを同じキャンペーンに戻さない限り、購入は数えられたままです。
返金がまれで均等に分散しているなら、問題はありません。しかし、たいていはそうではありません。アプリの実力以上を約束するクリエイティブ、誤ったオーディエンスに表示されたオファー、盗難カードだらけのトラフィックソースは、特定のキャンペーンに返金を集中させます。総 ROAS はまさにその差を隠します。
純 ROAS とは?
純 ROAS は同じ比率から返金を差し引いたものです。キャンペーンに帰属する収益から、その購入に対する返金を差し引き、キャンペーンの費用で割ります。ストア手数料や税金も差し引くチームもあります。ほかに何を差し引くにせよ、どのキャンペーンが勝つかを変えるのは返金です。
ストアと広告ダッシュボードの間で返金が抜け落ちる場所
Firebase は Google Play の返金を記録するが、App Store の返金は記録しない
Google の自動収集イベントの一覧には in_app_purchase が含まれます。これは、Apple App Store または Google Play で処理されたアプリ内購入(初回の定期購入を含む)をユーザーが完了したときに発生します。対になる返金イベントの app_store_refund は、Google Play がアプリ内購入を返金したときに発生し、Google はこれを Android のみと明記しています。app_store_refund も自動の定期購入イベントも、BigQuery にはエクスポートされません。
同じページには、アナリティクスは有料アプリの購入収益と返金を自動では測定しないこと、報告される収益は Google Play Developer Console と異なる場合があることも書かれています。iOS では、Firebase がすでに記録した購入から App Store の返金を自動で差し引く仕組みはありません。
Google Ads は購入額をコンバージョン値として計上する
アプリ内課金を使う Android アプリでは、Google Ads は広告をクリックした人のアプリ内購入を、アプリにコードを追加せずにトラッキングできます。Google によると、購入額は自動でコンバージョン値として報告されます。定期購入の場合、コンバージョンとして記録されるのは初回購入だけで、記録される支払い額も初回分だけです。このヘルプ記事は返金に触れていません。
Google Ads には修正ツールがあります。コンバージョン調整では、件数を変えずにコンバージョン値を修正することも、コンバージョンを取り消して値を 0.00 にすることもでき、CPA と ROAS の両方の入札戦略に反映されます。Google によると、オンラインコンバージョンを調整できるのはトランザクション ID を使った場合だけで、取り消したコンバージョンは再調整できません。このページはアプリのコンバージョンに触れていないため、調整を前提に仕組みを作る前に、自分のコンバージョン設定が調整に対応しているか確認してください。
Apple の広告ポストバックは、多くの返金が届く前に締め切られる
AdAttributionKit には、ユーザーが初めてアプリを起動した時点から始まる 3 つのコンバージョン期間があります。0 から 2 日目、3 から 7 日目、8 から 35 日目です。アプリは期間が終わるまでコンバージョン値を更新できます。その後 Apple はランダムな遅延の後にポストバックを送ります。1 回目は 24 から 48 時間、2 回目と 3 回目は 24 から 144 時間です。アプリが早めに値をロックすると、システムはその期間内のそれ以降の更新を無視します。
詳細なコンバージョン値が含まれるのは最初のポストバックだけです。それ以降のポストバックには、せいぜい大まかな値しか含まれません。1 日目の購入を Apple が 10 日目に返金しても、その購入はもう変更できないポストバックで報告済みです。
| 計測の仕組み | 購入時に記録される内容 | 購入が返金されたときに起きること |
|---|---|---|
| Firebase in_app_purchase、Android と iOS | 商品 ID、価格、値、通貨、数量 | Android:app_store_refund が発生。iOS:自動の返金イベントなし |
| Google Ads、Google Play コンバージョン、Android | 購入額をコンバージョン値として記録、定期購入は初回の支払いのみ | 記載なし。調整でトランザクション ID 付きで送信されたオンラインコンバージョンを修正または取り消し可能 |
| AdAttributionKit ポストバック、iOS | 期間ごとに 1 つのコンバージョン値、詳細な値は最初のみ | その期間のポストバックが準備された時点で確定 |
| 自社のサーバー | すべてのトランザクションを、自社のユーザー ID にひも付けて記録 | Apple の REFUND 通知、Google Play の無効化された購入のシグナル |
アプリの返金はいつ届き、誰が決めるのか
返金のタイミングはばらばらです。購入から数時間以内に届くものもあれば、数か月後のものもあります。キャンペーンのレポートが確定したように見えた後も、コホートの ROAS が下がり続けるのはそのためです。
| 返金の経路 | ストア自身の説明によるタイミング | 決定者 | サーバーに届くシグナル |
|---|---|---|---|
| Google Play の返金リクエスト | 48 時間以内なら顧客が Google に依頼。それ以降は Google が顧客をデベロッパーに案内 | Google、その後はあなた | RTDN と Voided Purchases API による無効化された購入 |
| Google Play のデベロッパーによる返金 | あなたが実行したとき | あなた | 無効化された購入(権利を取り消した場合) |
| Google Play の不正請求の報告 | 取引から 120 日以内 | 無効化された購入 | |
| Apple の返金 | reportaproblem.apple.com でリクエストし、24 から 48 時間で状況が更新 | Apple | revocationReason 付きの REFUND 通知 |
| Apple の消費情報リクエスト | あなたが 12 時間以内に応答 | Apple、あなたのデータに基づく | CONSUMPTION_REQUEST |
| Google Play のチャージバック審査 | あなたが 24 時間以内に orders.reviewrefund で応答 | 銀行、あなたの証拠を見た後 | チャージバックが認められた場合は無効化された購入 |
返金を見ない ROAS はいくらの損失になるのか
予算が同じ 2 つのキャンペーンを例にします。以下の数字は説明のためのもので、ベンチマークではありません。
| 項目 | キャンペーン A | キャンペーン B |
|---|---|---|
| 広告費 | $10,000 | $10,000 |
| 帰属購入収益 | $14,000 | $12,500 |
| 総 ROAS | 1.40 | 1.25 |
| その収益のうち返金された割合 | 18% | 4% |
| 返金後の収益 | $11,480 | $12,000 |
| 純 ROAS | 1.15 | 1.20 |
総 ROAS は A に予算を移せと言います。純 ROAS は、1 ドルあたりで多く残したのは B だと示します。入札が総額に基づいていると、アルゴリズムは A のような購入者をさらに探し続けます。彼らが返金を求めたことを、何も伝えていないからです。
広告費は最初の請求書にすぎません。返金した顧客は、ほかにも次のコストを残します。
- 報酬の支払い。購入ごとに支払うアフィリエイト、クリエイター、インフルエンサーとの契約は、契約で別に定めない限り、返金を差し引いた額ではなく販売額に対して支払われるのが一般的です。
- コンピューティング、API 呼び出し、ストレージ。返金したユーザーは、アクセスが取り消されるまで、あなたのサーバー、有料のサードパーティ API、ストレージを使っていました。その請求は返ってきません。
- チャージバックのコスト。2026 年 8 月 3 日以降、Google はチャージバックの購入代金と銀行手数料をデベロッパーに負担させています。そのため紛争の多い Android のトラフィックソースは、失う収益以上のコストがかかります。
- ターゲティングの悪化。返金された購入で学習した価値ベースの入札は、返金を受けた人に似た人をさらに探しに行きます。

1 つのキャンペーンで返金率が高いのは、不正か、約束違いか?
多くの場合、約束の問題です。Apple の revocationReason は、返金がどちらの理由によるものかを示します。0 は、たとえば誤購入など、その他の理由で App Store がトランザクションを返金したことを意味します。1 は、アプリ内の実際の問題、またはユーザーが問題と感じたことを理由に返金したことを意味します。1 つのキャンペーンから 1 がまとまって出ていれば、たいていは広告クリエイティブか、その先のオンボーディングに原因があります。Google Play で不正請求の報告がまとまって出ていれば、原因はトラフィックソースです。
アプリの純 ROAS の組み立て方
始めるのに新しいツールは要りません。必要なのは、あなたのデータがおそらくまだ行っていないいくつかの結合です。
- キャンペーンをユーザーにひも付ける。インストール時にアトリビューション結果を自社のユーザー ID と一緒に保存し、後のどのトランザクションもキャンペーンまでたどれるようにします。
- トランザクションをユーザーにひも付ける。iOS の購入には appAccountToken を、Google Play の購入には難読化したアカウント ID を設定し、すべてのストアイベントを推測なしでユーザーに対応付けます。
- サーバーで返金を受け取る。App Store Server Notifications V2 による Apple の REFUND 通知と、Google Play の無効化された購入の通知を処理します。Voided Purchases API は過去 30 日分の無効化しか返さないため、予備として定期的に問い合わせます。
- 総額と純額を購入コホート別に並べて報告する。各返金は、返金が現れた日ではなく、その購入を生んだキャンペーンと購入日に計上します。
- プラットフォームが受け付ける場合は修正を送る。Google Ads のコンバージョンにトランザクション ID が付いているなら、返金されたものを修正または取り消します。修正を受け付けないプラットフォームでは、代わりに純額の数字で予算を動かします。
- 2 つの証拠リクエストに期限内に応答する。RefundHalt は Apple の CONSUMPTION_REQUEST に 12 時間の期限内で、Google Play のチャージバック審査に 24 時間以内で応答します。反論できる返金には、あなたの側の言い分が届きます。
返金は購入日と返金日のどちらで計上すべきか?
キャンペーンの判断には購入日です。返金はある購入についての事実であり、その購入はあるキャンペーンに属します。経理は返金日で計上するため、ROAS のレポートと支払額はどの日を取っても一致しません。両方の見方を残し、それぞれにラベルを付けてください。
コホートの純 ROAS はいつ確定するのか?
段階的に確定します。Google のセルフサービス返金の期間は 48 時間で締め切られ、Apple は返金リクエストの状況が 24 から 48 時間で更新されると顧客に案内しています。そして Google Play の不正請求の報告は、取引から 120 日以内まで届く可能性があります。初期の数字は暫定値として扱い、後で同じコホートを確認し直してください。
よくある質問
- Firebase はアプリ内購入の収益から返金を差し引きますか?
- Google Play の場合だけです。Firebase が自動収集する app_store_refund イベントは Google Play がアプリ内購入を返金したときに発生し、Google はこれを Android のみと明記しています。App Store の返金には自動の対応イベントがなく、Google はアナリティクスが有料アプリの購入収益と返金を自動では測定しないと説明しています。
- Google Ads は返金されたアプリ内購入をコンバージョンから除外しますか?
- Google Play コンバージョンに関する Google 自身の記事には、そうするとは書かれていません。購入額がコンバージョン値として報告されるとあるだけで、返金には触れていません。Google Ads のコンバージョン調整でコンバージョンを修正または取り消すことはでき、Google によるとオンラインコンバージョンを調整できるのはトランザクション ID 付きで送信された場合だけです。
- AdAttributionKit のポストバックに返金は反映されますか?
- そのコンバージョン期間のポストバックが準備される前に返金が起きた場合だけです。期間は初回起動後の 0 から 2 日目、3 から 7 日目、8 から 35 日目で、期間が終わるか値がロックされると、Apple はその期間内の以降の更新を無視します。
- アプリの純 ROAS はどう計算しますか?
- キャンペーンに帰属する収益から、その購入に対する返金を差し引き、キャンペーンの広告費で割ります。Apple の REFUND 通知と Google Play の無効化された購入のシグナルを返金の記録として使い、各返金をその購入を生んだ購入コホートに計上します。
- ROAS を下げる返金に反論できますか?
- できるのは 2 種類だけです。Apple の CONSUMPTION_REQUEST では 12 時間以内に消費データを送れます。orders.reviewrefund による Google Play のチャージバック審査では 24 時間あります。Google Play の 48 時間以内の返金、サポートによる返金、無効化された購入はあなた抜きで決まり、銀行のチャージバックは最終的なものです。
出典と参考資料
- Firebase Help: [GA4] Automatically collected events
- Google Ads Help: Measure app conversions with Google Play
- Google Ads Help: About conversion adjustments
- Apple Developer Documentation: Receiving postbacks in multiple conversion windows
- Apple Developer Documentation: notificationType
- Apple Developer Documentation: revocationReason
- Google Play Developer API: Voided Purchases API
- Google Play Help: Apps, games, and in-app purchases refund policies
- Google Play Help: Learn about Google Play refund policies
- Apple Support: Request a refund for apps or content that you bought from Apple
RefundHalt
App Store と Google Play の返金を自動処理
続きを読む
顧客のレシートにある App Store の注文 ID を見れば、何を買ったのか、Apple がすでに返金したのかがわかる
Apple の Look Up Order ID エンドポイントは、顧客の App Store レシートにある注文 ID を、返金日と返金理由を含む署名付きトランザクションに変換します。返金メールへの使い方、できないこと、Google Play の注文 ID との違いを解説します。
iOS のウェブ決済の返金は Apple ではなくあなたの担当に。銀行への不審請求も同じです
米国の iPhone アプリは、購入者をウェブ決済へ誘導できるようになりました。Apple はこうした販売の返金には対応できないとしており、返金対応、チャージバック、$15 の不審請求手数料はあなたの側に移ります。何が変わるのか、いくらかかるのか、不審請求をどう減らすかを解説します。