1 回の支払いから複数の連結アカウントに、または支払い時に特定のユーザーが不明な場合に売上を送金するには、「支払いと送金別方式」を作成します。プラットフォームアカウントでの支払いは、連結アカウントへの送金から切り離されます。この支払いタイプの特徴は以下のとおりです。
プラットフォームのアカウントで支払いを作成し、売上を連結アカウントに送金します。この支払いは、ご自身のアカウントでの支払いとして表示され、さらに連結アカウントへの送金も表示されます (金額はご自身で決定します)。この金額はアカウント残高から引き落とされます。 複数の連結アカウントに売上を送金できます。 Stripe の手数料、返金、チャージバックは、お客様のアカウント残高から引き落とされます。 この支払いタイプは、レストランのデリバリープラットフォームである DoorDash のように、複数の当事者間で支払いを分割する必要があるマーケットプレイスに最適です。
Stripe は、以下の地域で支払いと送金別方式に対応しています。
多くのシナリオでは、プラットフォームと連結アカウントは同じ地域に所在している必要があります。許可されていない国境を越えて送金しようとすると、エラーが返されます。複数地域にわたる場合のサポートについては、海外送金 をご覧ください。送金は、支払い 、トップアップ 、および手数料 の許可されたユースケースと併用する場合にのみ使用する必要があります。
Stripe Checkout を使用して、Stripe がオンラインで提供する決済ページにリダイレクトします。この実装と、Stripe の他の実装タイプとの比較 をご覧ください。
接続方法のタイプ Stripe がオンラインで提供する決済ページにリダイレクトする
試してみる
まず、Stripe アカウントを登録 します。
アプリケーションから Stripe API にアクセスするには、Stripe の公式ライブラリを使用します。
A Checkout Session controls what your customer sees in the payment form such as line items, the order amount and currency, and acceptable payment methods. Add a checkout button to your website that calls a server-side endpoint to create a Checkout Session.
< html >
< head >
< title > Checkout </ title >
</ head >
< body >
< form action = "/create-checkout-session" method = "POST" >
< button type = "submit" > Checkout </ button >
</ form >
</ body >
</ html >
サーバー側で Checkout セッションを作成し、レスポンスで返された URL に顧客をリダイレクトします。
curl https://api.stripe.com/v1/checkout/sessions \
-u "sk_test_4eC39HqLyjWDarjtT1zdp7dc
:" \
-d "line_items[0][price_data][currency]" = usd \
-d "line_items[0][price_data][product_data][name]" = "Restaurant delivery service" \
-d "line_items[0][price_data][unit_amount]" = 10000 \
-d "line_items[0][quantity]" = 1 \
-d "payment_intent_data[transfer_group]" = ORDER100 \
-d mode = payment \
- -data -urlencode success_url = "https://example.com/success?session_id={CHECKOUT_SESSION_ID} "
line_items
: この属性は、顧客が購入しようとしているアイテムを表します。このアイテムは Stripe がオンラインで提供する購入ページに表示されます。payment_intent_data[transfer_group]
: 一意の文字列を transfer_group
として使用し、相互に関連付けるオブジェクトを識別します。Stripe は、transfer_group
値を指定して PaymentIntent の支払いを自動的に作成する際、同じ値を支払いの transfer_group
に割り当てます。success_url
: Stripe は、顧客が支払いを完了した後に成功時の URL にリダイレクトし、{CHECKOUT_SESSION_ID}
の文字列を Checkout セッションの ID に置き換えます。この ID を使用して Checkout セッションを取得し、ステータスを確認して、顧客に表示する内容を決定してください。自社で使用するクエリパラメーターを追加することもできます。このパラメーターはリダイレクトプロセス全体にわたって存続します。詳細については、Stripe がオンラインで提供するページでリダイレクトの動作をカスタマイズする をご覧ください。サーバーで、Transfer (送金) を作成し、使用する transfer_group
を指定することで、アカウントから連結アカウントに送金します。
curl https://api.stripe.com/v1/transfers \
-u "sk_test_4eC39HqLyjWDarjtT1zdp7dc
:" \
-d amount = 7000 \
-d currency = usd \
-d destination = \
-d transfer_group = ORDER100
送金額と支払い金額が一致している必要はありません。1 回の支払いを複数の送金に分割したり、複数の支払いを 1 回の送金に含めることができます。以下の例では、同じ transfer_group
に関連付けられた追加の送金を作成しています。
curl https://api.stripe.com/v1/transfers \
-u "sk_test_4eC39HqLyjWDarjtT1zdp7dc
:" \
-d amount = 2000 \
-d currency = usd \
-d destination = {{OTHER_CONNECTED_ACCOUNT_ID}} \
-d transfer_group = ORDER100
カード番号 シナリオ テスト方法 4242 4242 4242 4242 カード支払いは成功し、認証は必要とされません。 クレジットカード番号と、任意の有効期限、セキュリティコード、郵便番号を使用してクレジットカードフォームに入力します。 4000 0025 0000 3155 カード支払いには認証 が必要です。 クレジットカード番号と、任意の有効期限、セキュリティコード、郵便番号を使用してクレジットカードフォームに入力します。 4000 0000 0000 9995 カードは、insufficient_funds
などの拒否コードで拒否されます。 クレジットカード番号と、任意の有効期限、セキュリティコード、郵便番号を使用してクレジットカードフォームに入力します。 6205 5000 0000 0000 004 UnionPay カードは、13 ~ 19 桁の可変長です。 クレジットカード番号と、任意の有効期限、セキュリティコード、郵便番号を使用してクレジットカードフォームに入力します。
実装内容をテストするためのその他の情報については、テスト をご覧ください。
売上処理加盟店を指定する 売上処理加盟店は、アカウントに設定されたケイパビリティ と支払いの作成方法によって決まります。売上処理加盟店は、支払いの作成に誰の情報を使用するかを決定します。これには、その支払いに使用される顧客のクレジットカードまたは銀行口座の明細に表示される明細書表記 (プラットフォームまたは連結アカウントのもの) が含まれます。
売上処理加盟店を指定することにより、誰に対して支払いを作成するかをより明確にすることができます。たとえば、一部のプラットフォームは最終顧客がプラットフォーム (オンデマンドプラットフォームなど) と直接やり取りすることを理由として、売上処理加盟店となることを希望します。ただし、これと異なり最終顧客と直接やり取りする連結アカウントが存在するプラットフォームもあります (E コマースプラットフォーム上のストアなど)。こうしたシナリオでは、連結アカウントを売上処理加盟店にするのが合理的です。
連結アカウントの ID に on_behalf_of
パラメーターを設定して、そのアカウントを支払いの売上処理加盟店にすることができます。on_behalf_of
を使用すると、以下のようになります。
連結アカウントの国と売上処理通貨 を使用して、支払いが売上として処理 されます。 連結アカウントの国の手数料体系が使用されます。 連結アカウントの明細書表記が顧客のクレジットカード明細書に表示されます。 連結アカウントがプラットフォームと異なる国に所在する場合、連結アカウントの住所と電話番号が顧客のクレジットカード明細書に表示されます。 入金前の保留中の残高 が保持される日数は、連結アカウントの delay_days 設定によって異なります。 on_behalf_of
が省略された場合、プラットフォームが取引に関する金銭的責任を負います。
注意 on_behalf_of
パラメーターは、card_payments ケイパビリティが設定された連結アカウントのみでサポートされています。受取人の利用規約 の対象であるアカウントは、card_payments
をリクエストできません。
curl https://api.stripe.com/v1/checkout/sessions \
-u "sk_test_4eC39HqLyjWDarjtT1zdp7dc
:" \
-d "line_items[0][price_data][currency]" = usd \
-d "line_items[0][price_data][product_data][name]" = "Restaurant delivery service" \
-d "line_items[0][price_data][unit_amount]" = 10000 \
-d "line_items[0][quantity]" = 1 \
-d "payment_intent_data[on_behalf_of]" = \
-d "payment_intent_data[transfer_group]" = ORDER100 \
-d mode = payment \
- -data -urlencode success_url = "https://example.com/success "
手数料を回収する 支払いと送金別方式を使用する場合、プラットフォームは、宛先アカウントに送金する金額を減らすことで、支払いの手数料を回収できます。レストランと運転手への支払いを行うレストランのデリバリーサービス取引の例を考えてください。
顧客は 100 USD を支払います。 Stripe は、3.20 USD の手数料を回収して、残りの 96.80 USD をプラットフォームアカウントの保留中の残高に加算します。 プラットフォームは、レストランの連結アカウントに 70 USD を送金して、運転手の連結アカウントに 20 USD を送金します。 6.80 USD のプラットフォーム手数料がプラットフォームアカウントに残されます。 Connect を使用した複数通貨での支払いの処理について、詳細は複数通貨の処理 をご覧ください。
送金可能な金額 デフォルトの動作では、プラットフォームアカウントの利用可能残高から送金されます。利用可能残高を超える送金を試行すると、エラーが返されます。この問題を回避するには、送金を作成するときに、source_transaction
パラメーターとして支払い ID を指定することで、既存の支払い に関連付けます。source_transaction
を使用すると、利用可能残高に関係なく送金リクエストは成功します。ただし、関連する支払いの資金がプラットフォームアカウントからの送金に利用できるようになるまで、送金先アカウントで資金を利用できません。
元の支払いに transfer_group
値が指定されている場合、Stripe は、同じ値を送金の transfer_group
に割り当てます。そうでない場合は、Stripe は、group_
と関連する PaymentIntent ID の形式 (例: group_pi_2NHDDD589O8KAxCG0179Du2s
) で文字列を生成します。この文字列は、支払いと送金の両方の transfer_group
として割り当てられます。
注 送金の作成時に source_transaction
を指定する必要があります。この属性は後で更新できません。
curl https://api.stripe.com/v1/transfers \
-u "sk_test_4eC39HqLyjWDarjtT1zdp7dc
:" \
-d amount = 7000 \
-d currency = usd \
-d source_transaction = \
-d destination =
PaymentIntent から支払い ID を取得できます。
PaymentIntent の latest_charge 属性 を取得します。この属性は、PaymentIntent に関連付けられた最新の支払いの ID です。 リクエストで payment_intent
を指定して支払いのリストをリクエスト します。この方法では、PaymentIntent に関連付けられているすべての支払いの詳細なデータが返されます。 このパラメータを使用するときは、以下のことを確認してください。
送金金額は、元の支払いの金額を超えることはできません 送金の合計が元の支払いを超えない限り、同じ source_transaction
で複数の送金を作成できます 送金により、関連する支払いが保留状態になります。支払いからの売上が N 日後に利用可能になるとすると、送金先 Stripe アカウントが送金から受け取る支払いも N 日後に利用可能になります。 Stripe は自動的に transfer_group
を作成します 支払いに関連付けられている取引残高の通貨は、送金の通貨と同じである必要があります ACH などの非同期の決済手段 が、後続の送金リクエストの実行後に失敗する場合があります。これらの支払いでは、source_transaction
を使用しないでください。代わりに、charge.succeeded イベントがトリガーされるまで待ち、その後で売上を送金するようにしてください。これらの支払いで source_transaction
を使用する必要がある場合は、支払いの失敗を管理する機能を実装する必要があります。
source_transaction
として使用される支払いが失敗すると、プラットフォームのアカウント残高からの売上が連結アカウントに送金され、支払いを補填します。これらの売上を回収するには、失敗した source_transaction
に関連する送金を差戻し します。
送金オプション transfer_group
文字列には任意の値を指定できますが、1 つのビジネスアクションを示す必要があります。また、関連する支払いや transfer_group
の指定がない送金を作成することもできます。これはたとえば、プロバイダーに支払いをする必要があるが、それに関連付けられた顧客の支払いがない場合などです。
注 transfer_group
は、関連付けられているオブジェクトのみを識別します。標準の機能は影響を受けません。関連する支払いの資金が利用可能になる前に送金されないようにするには、送金の source_transaction
属性を使用します。
送金額と支払い金額が一致している必要はありません。1 回の支払いを複数の送金に分割したり、複数の支払いを 1 回に送金に含めることができます。送金と支払いは任意の順序で実行できます。
デフォルトでは、金額がプラットフォームのアカウントの利用可能残高 を超えていると送金リクエストが失敗します。代わりに、支払いを送金の source_transaction として指定 することで、関連する支払いに対して送金額を有効にすることができます。その場合、送金リクエストは自動的に成功しますが、その支払いの資金がプラットフォームアカウントで利用可能になるまで実行されません。
注 支払いと送金別方式を使用する場合は、入金 スケジュールを計画する際に考慮が必要です。自動入金は、source_transaction
が定義されていない送金に支障をきたす場合があります。
返金する プラットフォームで作成された支払いは、シークレットキー を使用して返金できます。ただし、支払いの返金は関連するどの送金にも影響しません。以降の送金額の減額、または送金の差戻し によって返金される金額の調整はプラットフォームの責任で行います。
curl https://api.stripe.com/v1/refunds \
-u "sk_test_4eC39HqLyjWDarjtT1zdp7dc
:" \
-d charge =
送金を差戻す Connect は、連結アカウントに対して行われた送金の全額または一部金額 (amount
値で指定) を差戻す 機能をサポートしています。
curl https://api.stripe.com/v1/transfers//reversals \
-u "sk_test_4eC39HqLyjWDarjtT1zdp7dc
:" \
-d amount = 7000
送金差戻しにより、プラットフォームの利用可能残高に指定された金額 (または全額) が戻されて追加され、それに応じて連結アカウントの利用可能残高が減少します。連結アカウントの利用可能残高が差戻し額よりも大きい場合、または連結されたリザーブ が有効になっている場合のみ、送金を差戻すことができます。
送金差戻しに通貨の換算が必要な場合、換算後に差戻し額で残高がゼロになるとエラーが返されます。
参照情報