インドの決済方法が重要な理由
UPI Dominance
UPIは月間200億件を超える取引を処理しており、多くのインドの顧客は国際カードを持っていません。
Low-Value Payments
UPIは、高取引量・低単価の取引に適しています。
Subscription Support
ほとんどの代替決済手段とは異なり、Visa、Mastercard、RuPayを含むUPIおよびインド発行カードは、RBI mandateを通じた継続支払いをサポートしています。
対応している決済手段
この表では、各決済方法とサブスクリプションに対応しているかどうかを示します。
*サブスクリプションには、特別な処理ルールが適用されるRBI準拠のmandateが必要です。インド発行のすべてのカード、UPI、Apple Payでの定期請求には、48時間の処理遅延が適用されます。
INRで請求される決済金額は、₹5.00以上で、かつ米ドルの最低金額相当額以上である必要があります。1回限りの決済は$0.50、サブスクリプションは$1.00です。最低金額をご覧ください。
設定
API Method Types
次の値をallowed_payment_method_typesに渡します。
例:インド向けCheckout
このセッションでは、インドの顧客に対して、INRで請求するUPI、カード、Apple Payを提供します。UPIの要件
次のすべての条件を満たす場合にのみ、CheckoutにUPIが表示されます。- 請求先国がインドである(
IN)。 - 請求通貨がINRである。
- インド国外のMerchantによるサブスクリプションの場合、Adaptive Currencyが有効になっている。商品価格がINRで設定されている場合、1回限りのCheckoutには不要です。
RBI Mandateを使用したサブスクリプション
UPIまたはインド発行カードで支払うサブスクリプションは、RBI(Reserve Bank of India)のmandateに基づいて処理されます。これには、他の決済手段にはないルールが追加されます。RBI Mandateの仕組み
顧客はサブスクリプション登録時にmandateを承認します。その後、更新時の各請求では、事前引き落とし通知から48時間待機してから、銀行が資金を引き落とします。Mandateの種類
Mandateの種類は、サブスクリプション金額とmandate floorの比較によって決まります。
顧客の銀行に登録される金額は
max(mandate_floor, billing_amount)です。請求金額がfloorを下回る場合、floorが顧客に表示される承認上限になります。
プラン変更: アップグレードによって既存のmandate上限を超える請求が発生すると、請求は失敗し、顧客は再度承認する必要があります。
設定可能なMandate Floor
mandate_min_amount_inr_paiseフィールドを使用して、INR e-mandateのmandate floorをINR paiseで設定します(₹1 = 100 paise)。
システムデフォルトの₹15,000は、次の3つのレベルで上書きできます。
Dodo Paymentsは、設定されている値のうち、リクエスト単位の上書き、Merchant設定、システムデフォルトの順で最初の値を使用します。
floorを設定するには、Checkout sessionを作成するときに、リクエスト本文の
mandate_min_amount_inr_paiseに値を渡します。非推奨のCreate Subscription endpointでも同じフィールドを使用できます。
floorを高くすると、プランのアップグレードや使用量ベースの超過料金など、後で高額な一回限りの請求を行う際に、顧客へ再承認を求めずに済みます。floorを低くすると顧客の承認額を実際の請求額に近づけられますが、将来の変動請求に使える余裕は小さくなります。
48時間の処理遅延
インドのカードまたはUPIでの更新請求は、更新日から約48時間後に完了します。これは国際カード決済との最も重要な違いです。1
Charge Initiated (Day 0)
予定された更新日に、Dodo Paymentsは銀行に請求を開始します。
2
Pre-Debit Notification
顧客の銀行は、予定されている引き落としについて顧客に通知します。
3
48-Hour Window
この期間中、顧客は銀行アプリでmandateをキャンセルできます。
4
Debit Completed (~48-51 Hours)
48時間後、さらに銀行処理に最大3時間かかってから、銀行が資金を引き落とします。
5
Webhook Sent
Dodo Paymentsは、請求開始時ではなく実際の引き落とし後に
payment.succeeded webhookを送信します。48時間の待機期間への対応
更新日ではなく、payment webhookを起点にアクセスを付与します。インドのサブスクリプション向けWebhook Events
UPIまたはインド発行カードで支払われるサブスクリプションでは、次のeventsを処理します。テスト
UPI Test IDs
test modeで、各結果をシミュレートするために次のUPI IDを入力します。インドのカードのテスト番号
次のインド発行テストカードを使用します。ベストプラクティス
Plan for the 48-hour delay
Plan for the 48-hour delay
請求開始から実際のpaymentまでの間隔に対応できるよう、アプリケーションを構築します。次の点を検討してください。
- サブスクリプションアクセスの猶予期間
- 処理時間について顧客に明確に伝えること
- 日付ではなくwebhookを起点にしたfulfillment
Handle mandate cancellations
Handle mandate cancellations
顧客はいつでも銀行アプリでmandateをキャンセルできます。
subscription.on_hold webhookを監視し、再度サブスクリプションに登録するか、payment methodを更新するよう顧客に促します。Set appropriate mandate amounts
Set appropriate mandate amounts
使用量ベースの請求などの変動価格では、mandate floor(デフォルト₹15,000)のon-demand mandateで最大請求額をカバーできるか確認します。超過する可能性がある場合は、
mandate_min_amount_inr_paiseでfloorを引き上げます。そうしないと、顧客は新しいmandateを承認する必要があります。Offer UPI prominently
Offer UPI prominently
インドの顧客には、UPIを主要な決済オプションにします。UPIは使い慣れており、手間も少ないため、多くの顧客はカードよりUPIを好みます。
トラブルシューティング
UPI not appearing at checkout
UPI not appearing at checkout
確認事項:
- 請求先国は
INに設定されていますか? - 請求通貨は
INRに設定されていますか? - インド国外のMerchantの場合、Adaptive Currencyは有効になっていますか?
upi_intentはallowed_payment_method_typesに含まれていますか?
country: "IN"とbilling_currency: "INR"を設定します。Adaptive Currencyが無効の場合、APIはbilling_currencyを無視するため、代わりに商品価格をINRで設定します。Subscription charge failed after upgrade
Subscription charge failed after upgrade
原因: 新しい請求額が既存のmandate上限を超えています。上限はmandate floor(デフォルト₹15,000)または、それを上回る場合はサブスクリプション金額です。解決策: 顧客はpayment methodを更新し、正しい上限で新しいmandateを設定する必要があります。
Subscription on hold but customer claims they didn't cancel
Subscription on hold but customer claims they didn't cancel
原因: 顧客が48時間の待機期間中にmandateをキャンセルしたか、銀行が引き落としを拒否した可能性があります。解決策: 顧客はmandateを再度承認するか、payment methodを更新する必要があります。
Payment deduction delayed beyond 48 hours
Payment deduction delayed beyond 48 hours
原因: Bank APIの遅延により、処理が2~3時間延長される場合があります。解決策: これは想定される動作です。合計で約51時間までの遅延に対応できるよう、システムを構築してください。
Mandate cancelled but subscription still active
Mandate cancelled but subscription still active
原因: RBI規制における特殊なケースです。処理期間中にmandateをキャンセルしても、サブスクリプションはすぐにはキャンセルされません。解決策: 次回の請求は失敗し、サブスクリプションは
on_holdに移行します。payment.failedのwebhookを監視してください。関連ページ
Payment Methods Overview
対応しているすべての決済手段を確認します。
Subscriptions
RBI mandateを含む、サブスクリプションに関する完全なドキュメントです。
Webhooks
payment eventのWebhook処理について説明します。
Testing Process
UPI IDやインドのカードを含むすべてのテストデータです。