すべての記事
Playbook読了まで 7 分

同じサブスクリプションで二重請求された顧客は、たいてい2つのプラットフォームで支払っている。そして返金できるのはその片方だけ

顧客が同じサブスクリプションで二重請求されるのは、たいてい一方を App Store で、もう一方を Google Play かあなたのウェブサイトで購入したケースです。それぞれを誰が返金できるのか、どれだけのコストがかかるのか、2回目の請求をどう防ぐのかを解説します。

机の上に iPhone と Android スマートフォンが並び、その横に同額の請求が2件記載された銀行の明細書が置かれている。同じサブスクリプションで二重請求された顧客を表している

要点

  • 同じサブスクリプションで二重請求された顧客は、たいてい App Store と Google Play のように別々のストアで購入しています。各ストアは自分の購入分だけを独立して請求し、返金します。
  • 開発者は App Store の購入を返金できません。判断するのは Apple です。顧客は reportaproblem.apple.com か、アプリが StoreKit の beginRefundRequest で開く返金シートから申請します。Apple によれば、承認か却下までに最大48時間かかります。
  • Google Play では、開発者が Play Console の Order management か orders.refund API で注文を返金できます。ただしこの API は3年より前の注文を返金できません。
  • Google Play サブスクリプションの最新の注文を返金すると、サブスクリプションは即座に削除され、以後の更新もキャンセルされます。それより前の注文を返金した場合、サブスクリプションは有効なままです。
  • Apple は自動更新サブスクリプションを含むあらゆる商品タイプの返金リクエストについて CONSUMPTION_REQUEST を送信します。顧客が同意している場合、開発者は12時間以内に Send Consumption Information で応答できます。
  • 2026年8月3日以降に発生した Google Play の注文では、チャージバック1件につき、購入金額から Play のサービス手数料を差し引いた額に、銀行のチャージバック手数料を加えた金額が開発者の負担になります。
  • Apple の購入には appAccountToken を、Google Play の購入には難読化したアカウント ID を設定しておけば、2回目の請求が起きる前に、2つのストアのサブスクリプションの背後にいる同じ顧客をサーバーで把握できます。

Apple と Google の課金システムには、同じ人が同じ月にあなたのサブスクリプション代を両方に支払うことを止める仕組みがありません。顧客が同じサブスクリプションで二重請求された場合、ほぼ間違いなくこれが原因です。iPhone で登録し、その後 Android タブレットかあなたのウェブサイトでもう一度登録した。そしてアプリが最初のプランを認識できなかった。顧客は2件の請求に気づき、あなたに連絡してきます。問題は、あなたが自分で返金できるのはそのうち1件だけで、しかもそれが Apple 経由の購入でない場合に限られることです。ここでは、それぞれの仕組み、重複がもたらすコスト、そして再発を防ぐ方法を説明します。

顧客が同じサブスクリプションで二重請求される理由

購入はそれぞれのストアが管理しています。App Store のサブスクリプションは Apple が、Google Play のサブスクリプションは Google が、ウェブのプランはあなたの決済代行会社が請求します。どれも他の存在を知りません。2つの購入が出会える場所はあなたのサーバーだけです。それも、両方が同じアカウントに結びつく ID を持っている場合に限ります。

二重請求に至る典型的なパターンは次のとおりです。

  • 顧客が iOS から Android へ、あるいはその逆へ機種変更し、新しいアプリにペイウォールが表示されたので再度登録する。
  • 顧客がウェブサイトで登録した後、アプリをインストールしたがサインインしておらず、アプリがさらにストアのサブスクリプションを販売してしまう。
  • 顧客がアプリをアンインストールし、それでプランが終わったと思い込む。Google のヘルプによれば、アプリをアンインストールしても Google Play のサブスクリプションはキャンセルされません。App Store のプランも、Apple アカウントでキャンセルされるまで更新され続けます。

「アプリとウェブサイトが連携していないのは明らかですよね」

サポートメールで目にするのはこうした苦情です。顧客の立場からすれば、もっともな言い分です。買ったのは1つの製品なのに、もう一度支払えと言われる。双方にとって偶然の出来事でも、罠のように感じられます。最も早く落ち着かせる方法は、どの購入ならあなたが返金でき、どの購入は Apple に申請してもらう必要があるのかを、はっきり伝えることです。

各請求を返金できるのは誰か

サポートの返信が間違えやすいのはここです。約束できるのは、自分がコントロールできることだけです。

重複分の購入先返金を判断するのは誰かプランの更新を止める方法あなたが関与できること
App StoreApple のみ。reportaproblem.apple.com またはアプリ内の返金シートから顧客が自分の Apple アカウントでキャンセルするCONSUMPTION_REQUEST。顧客が同意していれば12時間以内に応答
Google Play、購入から48時間以内顧客が Google に申請するか、あなたが返金する最新の注文を返金すると以後の更新がキャンセルされるGoogle のセルフサービス返金には関与できない
Google Play、48時間経過後あなた。Play Console または orders.refund で最新の注文を返金すると以後の更新がキャンセルされるあなたが判断する
あなたのウェブサイトあなた。決済代行会社を通じてあなたの側でキャンセルするあなたが判断する

開発者は App Store のサブスクリプションを返金できるか

できません。App Store の返金はすべて Apple が扱います。あなたにできるのは、顧客の手間を減らすことです。StoreKit の beginRefundRequest を使えば、購入情報と理由の一覧があらかじめ入力された Apple の返金シートをアプリ内で開けます。Apple のドキュメントによれば、App Store がリクエストを承認または却下するまでに最大48時間かかります。アプリの外では、顧客が reportaproblem.apple.com にサインインし、「Request a refund」(返金をリクエスト)を選び、理由を選択して、該当のサブスクリプションを選びます。

Google Play 側は自分で返金する

Google Play では主導権はあなたにあります。Play Console で Order management を開き、注文を選択して返金します。Play Console のヘルプはサブスクリプションについて明確です。最新の注文を返金すると、サブスクリプションは即座に削除され、以後の更新もキャンセルされます。それより前の注文を返金すると、サブスクリプションは有効なままです。自動化する場合は orders.refund API が同じ処理を行います。revoke フラグでアクセスを即時に終了でき、3年より前の注文は受け付けません。

重複サブスクリプションのコスト

重複分は、もともと手元に残せる収益ではありません。お金の問題は、返金に加えてどれだけ余計にかかるかです。

シンプルなケース

ある顧客が App Store と Google Play の両方で月額 $9.99 を3か月払い続け、その後に気づいたとします。重複請求は合計 $29.97 です。Google Play の3件の注文をあなたが自分で返金すれば、返すのは $29.97 で、問題はその日のうちに終わります。顧客が代わりに App Store 側を Apple に申請した場合、返金額は Apple が決め、あなたはサーバー通知で結果を知るだけです。いずれにせよ、片方のプラットフォームの3か月分の収益は戻ることになります。

高くつくケース

本当の損失が生じるのは、顧客がサポートを諦めて銀行に連絡したときです。銀行が判断すれば、チャージバックは確定します。Google Play には反論の機会が1度だけあります。チャージバックのレビューで、orders.reviewrefund を通じて24時間以内に応答します。2026年8月3日以降に発生した Google Play の注文では、チャージバックに負けると、購入金額から Play のサービス手数料を差し引いた額に、銀行のチャージバック手数料を加えた金額があなたの負担になります。1分で処理できたはずの $29.97 の返金が、$29.97 にあなたがコントロールできない手数料を加えた額に変わるのです。

その間も払い続けるコスト

両方のプランが有効な間、バックエンドは1人にサービスを提供しながら、サブスクリプションを2件として扱います。サブスクリプション単位でシート数を数えたり、データを同期したり、有料のサードパーティ API を呼び出したりしているなら、1人の顧客のためにコンピューティング、ストレージ、API 呼び出しの費用を二重に払っている可能性があります。2つのレコードを統合すれば、それは止まります。

ノートパソコンでカスタマーサポートの受信トレイを確認する開発者。横にはスマートフォンがあり、重複サブスクリプションの返金に対応している

サポートでの二重請求への対応

早く、1通のメッセージで答えてください。やり取りが1往復増えるごとに、銀行への異議申し立ての可能性が高まります。

  • 顧客が連絡に使ったメールアドレスではなく、顧客のアカウントで両方の購入を検索する。
  • どちらのプランを残したいかを尋ねる。たいていは今使っている端末のほうです。
  • 重複分が Google Play かあなたのウェブサイトにあるなら、自分で返金し、完了したことを伝える。
  • 重複分が App Store にあるなら、reportaproblem.apple.com か、実装済みであればアプリ内の返金ボタンへ案内し、Apple アカウントの設定でキャンセルするよう伝える。
  • その後 Apple から CONSUMPTION_REQUEST が届き、顧客が同意している場合は、12時間以内に正確な利用データで応答する。一度も使われていない重複プランなら、Apple は承認しやすくなります。

2回目の請求を未然に防ぐ方法

予防はどんな返金よりも安く済み、そのための仕組みはすでに両方のストアにあります。

すべての購入を自社のアカウント ID に結びつける

iOS では、アカウントごとに UUID を生成し、appAccountToken 購入オプションとして渡します。Apple はトランザクションとサブスクリプションの更新情報で同じ値を返します。購入がアプリの外で行われた場合でも、Set App Account Token エンドポイントで後からトークンを付与または更新できます。Android では、64文字以内のハッシュ化したアカウント ID を setObfuscatedAccountId に渡します。生の個人データは決して渡さないでください。

ペイウォールを表示する前に利用権を確認する

ペイウォールを表示する前に、サインイン中のアカウントがいずれかのプラットフォームで有効なプランをすでに持っているかを、自社のサーバーに問い合わせます。先にサインインを促し、ペイウォールは有効なプランを持たないアカウントにだけ表示します。

1つのアカウントに2つの有効なプランがないか監視する

ストアをまたいで複数の有効なサブスクリプションを持つアカウントがないか、毎日チェックします。1週目で見つければ、返金は3か月分ではなく1か月分で済み、チャージバックではなく短いメール1通で片づきます。

RefundHalt は App Store と Google Play のサブスクリプションをあなた自身のアカウント ID に紐づけて追跡します。そのため、二重に支払っている顧客は、銀行が気づく前に「2つのプランを持つ1人の顧客」として表示されます。

よくある質問

顧客が同じサブスクリプションで二重請求されたのはなぜですか?
たいていは、App Store と Google Play、あるいはストアとあなたのウェブサイトのように、2つのプラットフォームで購入したためです。各ストアは自分のサブスクリプションだけを請求し、もう一方の存在を知らないので、どちらかがキャンセルされるまで両方が更新されます。
顧客の App Store サブスクリプションを返金できますか?
できません。App Store の購入を返金できるのは Apple だけです。StoreKit の beginRefundRequest でアプリ内に Apple の返金シートを開くか、顧客を reportaproblem.apple.com に案内できます。Apple によれば、承認か却下までに最大48時間かかります。
重複した Google Play サブスクリプションはどう返金しますか?
Play Console の Order management で注文を返金するか、orders.refund API を呼び出します。最新の注文を返金すると、サブスクリプションは即座に削除され、以後の更新もキャンセルされます。この API は3年より前の注文を返金できません。
サブスクリプションを返金すると、キャンセルもされますか?
Google Play では、最新の注文を返金すると以後の更新がキャンセルされますが、それより前の注文を返金してもサブスクリプションは有効なままです。App Store では、返金は Apple の判断で、サブスクリプションのキャンセルは顧客が自分の Apple アカウントから行います。
iOS と Android をまたいだ二重登録を防ぐにはどうすればよいですか?
すべての購入に自社のアカウント ID を付与します。Apple では appAccountToken、Google Play では難読化したアカウント ID を使います。そのうえで、ペイウォールを表示する前に、いずれかのプラットフォームで有効なプランがないかサーバーで確認し、先にサインインしてもらいます。

出典と参考資料

RefundHalt

App Store と Google Play の返金を自動処理

続きを読む

次の返金リクエストは、すでに向かってきています。

異議を申し立てられなかった返金について、もう 1 通のサポートメールを読む時間で RefundHalt を設定できます。