アカウントの債務を管理する非公開プレビュー
連結アカウントのクレジット支出、ライフサイクル、および残高を追跡します。
連結アカウントの CreditPolicy を有効にすると、Stripe は FundingObligation を作成します。これにより、クレジット期間全体におけるアカウントの債務額を追跡できます。各期間の最初に、新しい FundingObligation
が自動的に作成され、issuing_
イベントがトリガーされます。
FundingObligation
は、決済された取引のみを追跡し、保留中のオーソリは含まれません。保留中のオーソリについては、すべてのオーソリの一覧表示をご覧ください。
CreditPolicy
が設定された連結アカウントにプラットフォームの資金を適用するプロセスを示すために、Barbell (Gymbox の連結アカウントの 1 つ) に 1,000 USD のクレジット限度額が設定されていて、一連のウエイトを購入して 100 USD 支出した場合を考えます。以下の表は、Stripe でのイベントシーケンスを簡単に示したものです。
アクション | Barbell の Issuing 残高 | Gymbox に対する Barbell の FundingObligation | Gymbox の Issuing 残高 |
---|---|---|---|
Barbell は残高が 0 USD で、以前の支出がない状態から開始します。Gymbox は 100 USD の残高から開始します | 0 USD | 0 USD | 100 USD |
カード保有者が 100 USD の取引を行い、Gymbox には十分な残高があるためオーソリされます。オーソリの保留の結果、Gymbox の Issuing アカウントは 100 USD 減ります。 | -100 USD | 0 USD | 0 USD |
オーソリの決済時 (通常は翌日)、Stripe は以下を行います。
| 0 USD | 100 USD | 0 USD |
Barbell のクレジット期間の最後に、Barbell が Gymbox に対する FundingObligation を返済します。 | 0 USD | 0 USD | 0 USD |
FundingObligation のライフサイクルを追跡する
現在のクレジット期間が終了すると、Stripe は、連結アカウントに新しい FundingObligation
を作成します。たとえば、Barbell のクレジット期間が 1 カ月で、クレジット期間が毎月 15 日に終了するものとします。この場合、毎月 15 日に Stripe は以下を行います。
- 現在の
FundingObligation
のamount_
を確定するtotal - 新しい期間の新しい
FundingObligation
を作成する
FundingObligation のステータス
すべての FundingObligation
のステータスは、CreditPolicy
で設定されたクレジット期間と、 Stripe および銀行と同意した書面によるクレジットまたは回収のポリシーに基づいて変更されます。
FundingObligation
は、以下のいずれかのステータスになります。
- Pending:
FundingObligation
は現在のクレジット期間で支出を累積中であり、amount_
は変化する可能性があります。total - Unpaid:
finalized_
タイムスタンプが示すように、at FundingObligation
のamount_
は確定されています。アカウントはtotal due_
タイムスタンプまでにこの債務を全額返済する必要があります。at - Paid:
FundingObligation
は連結アカウントによって全額返済されています。 - Past due:
FundingObligation
が全額返済されておらず、due_
タイムスタンプを過ぎています。Stripe は期日が過ぎたat FundingObligations
を銀行パートナーに報告する場合があります。 - Charged off :
FundingObligation
が、書面によるクレジットまたは回収に関するポリシーで指定されたチャージオフまでの日数を超えています。プログラムを設定すると、Stripe は、書面によるクレジットポリシーに関する書類と照合して、この値を確認した後、チャージオフまでの日数を設定します。FundingObligation
がチャージオフの状態に達した後も、連結アカウントから返済の回収を継続できます。 Stripe は、期日を過ぎたFundingObligations
を銀行パートナーに報告する場合があります。 Stripe のコンプライアンスチームに連絡するには、変更リクエストフォームを使用して、リクエストを以下に送信してください。- ポリシーに関するドキュメントに記載されている通り、チャージオフまでの日数を変更する
- チャージオフの売却を計画する
- Needs refund:
FundingObligation
のamount_
がマイナスになっており、プラットフォームは連結アカウントに対して債務があります。これが生じるのは、連結アカウントが返金を受け取った場合、または不審請求の申請で主張が認められ、その金額がクレジット期間全体の支出金額を超えた場合です。total
FundingObligation
の due_
フィールドは、FundingObligation
の credit_
フィールドおよび CreditPolicy
の days_
フィールドによって決定されます。
FundingObligation を取得する
時間が経過すると、連結アカウントには、複数の返済済み (または past_
) の FundingObligation
インスタンスが生じ、保留中の FundingObligation
は多くても 1 つとなります。現在の期間の FundingObligation
を取得するには、次のコマンドを実行します。
レスポンスの例
[ { "id": "ifo_123", "livemode": true, "created": 1654628149, "amount_total": 10000, "amount_outstanding": 10000, "amount_paid": 0, "currency": "usd", "status": "unpaid", "due_at": 1654714851, "owed_to": "acct_123", "credit_period_starts_at": 1654625149, "credit_period_ends_at":1654713851, "paid_at": nil, "finalized_at": 1654713860, }, ]
特定のステータスの FundingObligations
を取得するには、FundingObligations
のリストをリクエストする際に特定のステータス値を渡します。次の API コールでは、status
が past_
の FundingObligations
を取得します。
FundingObligation の取引を取得する
連結アカウントの FundingObligation
に関連した取引のリストを取得するには、次のように List all Transaction API リクエストで funding_obligation_for_account パラメーターを渡します。
レスポンスの例
{ "object": "list", "url": "/v1/issuing/transactions", "has_more": false, "data": [ { "id": "ipi_123", "object": "issuing.transaction", // various other fields "funding_obligation_for_platform": "ifo_123", "funding_obligation_for_account": "ifo_456", // various other fields }, { "id": "ipi_123", "object": "issuing.transaction", // various other fields "funding_obligation_for_platform": "ifo_789", "funding_obligation_for_account": "ifo_456", // various other fields }, {...} ] }
Webhook のサマリー
次の 4 つの Webhook を監視できます。
issuing_
:credit_ policy. created CreditPolicy
が作成されるたびにトリガーされます。これは、連結アカウントのケイパビリティがリクエストされたときに生じます。issuing_
:credit_ policy. updated CreditPolicy
が更新されるたびにトリガーされます。これは、プラットフォームで連結アカウントのポリシーが更新されたときに生じることがあります。issuing_
:funding_ obligation. created FundingObligation
が作成されるたびにトリガーされます。これは、連結アカウントの新しいクレジット期間のはじめに生じます。issuing_
:funding_ obligation. updated FundingObligation
が更新されるたびにトリガーされます。これは、資金追加の義務のステータスまたは金額のフィールドが変更されるか、返済を示すように更新されるたびに生じます。
アカウントの FundingObligation を返済する
FundingObligation
では、クレジット期間末時点における連結アカウントの債務額が示されますが、連結アカウントから返済を回収する責任はお客様にあります。Stripe の Payment Intents API を使用して、連結アカウントの外部銀行口座からの引き落としを設定します (または Stripe Checkout または Stripe Invoicing によるカード決済を受け付けます)。
必ず、アカウントの FundingObligation
で連結アカウントから受け付けた決済をすべて記録して、利用可能なクレジットを正確に反映してください。Stripe では、アカウントの利用可能なクレジットに基づいて、オーソリを承認するかどうかを決定します。Stripe は期日を過ぎたチャージオフの FundingObligations
を銀行パートナーに報告する場合があります。
返済を回収する
エンドユーザーから返済を回収するのに最適なメカニズムを選択できます。ただし、Stripe の支払い API を使用して、Stripe 内にすべてのレコードを保管し、各ユーザーのカード支出と返済の照合を改善することをお勧めします。返済を回収できた場合は、必ず FundingObligation
を更新してそれを反映してください。Stripe の支払い API を使用する場合、このステップは自動的に実行されません。Stripe は、CreditPolicy
に設定されている days_
パラメーターに基づいて past_
を決定します。Stripe は、past_
の支払い義務が charged_
になってからの日数を定義する、お客様の書面によるクレジットまたは回収ポリシーに基づいて charged_
を決定します。
FundingObligation で返済を記録する
連結アカウントから返済を回収した後に、FundingObligation
を更新してその返済を反映させます。unpaid
、past_
、または charged_
の状態の FundingObligations
があると、連結アカウントでの支出で利用可能な資金に影響が出ます。たとえば、Barbell のクレジット限度額が 1,000 USD で、900 USD のランニングマシンを購入したとします。Barbell の FundingObligation
の債務の amount_
は 900 USD で、債務の返済を開始するまで、支出で利用可能なクレジットは残り 100 USD になります。
クレジット期間末時点で、Barbell が 500 USD を Gymbox に返済したとします。Gymbox は Barbell の FundingObligation
を更新してこの返済を反映させる必要があります。この更新により、FundingObligation
の amount_
が 400 USD に減るため、Barbell の利用可能なクレジットが 100 から 600 USD に増加します。
Barbell のクレジット規約で、FundingObligation
の amount_
がチャージオフされる期間として、due_
から 90 日後が指定されているとします。90 日を経過して past_
になると、Barbell の amount_
の 400 USD がチャージオフされます。FundingObligation
の amount_
をチャージオフしてから 30 日後に、Gymbox は Barbell から 100 USD の支払いを受け取ります。Gymbox は、FundingObligation
のチャージオフされた amount_
を減らすために、/pay
エンドポイントでこの返済を記録する必要があります。これにより、利用可能なクレジットが 600 から 700 USD に増加します。Gymbox が Barbell のクレジットラインを閉鎖し、全額を回収する前にその理由を報告した場合、チャージオフされた amount_
は持続し、その後回収された金額を amount_
の減額に適用することはできません。
レスポンスの例
{ "id": "ifo_123", "status": "unpaid", "amount_total": 90000, "amount_outstanding": 40000, "amount_paid": 50000, "owed_to": "acct_123", // other fields }
この API コールにより、FundingObligation
で amount_
が増え、amount_
が減ります。FundingObligation
で amount_
になると、Stripe は以前の状態が unpaid
、past_
、または charged_
であったかどうかに関係なく、債務のステータスを paid
に更新します。この更新により、issuing_
イベントがトリガーされます。
返済を回収するプロセスと FundingObligation
を更新するプロセスの両方を自動化し、両プロセスを一連のコールに組み込むことをお勧めします。そのようにすることで、返済の回収直後に連結アカウントの FundingObligation
を更新して Stripe に通知し、利用可能なクレジットを増やすことができます。
FundingObligation で返済済みの金額を更新する
間違った返済したなどの理由で連結アカウントの amount_
を更新する場合は、amount_
フィールドを指定して /pay
エンドポイントを使用します。
レスポンスの例
{ "id": "ifo_789", "status": "unpaid", "amount_total": 90000, "amount_outstanding": 45000, "amount_paid": 45000, "owed_to": "acct_123", // other fields }
これにより、issuing_
イベントが送信されます。
FundingObligations のメタデータを更新する
FundingObligation
のメタデータを更新し、追加データを FundingObligation
に関連付けることができます。たとえば、返済に対応する OutboundPayment ID の記録が必要になる場合があります。
レスポンスの例
{ "id": "ifo_789", "status": "unpaid", "amount_total": 90000, "metadata": { "repayment_id": "obp_1NUy3y2eZvKYlo2C15gktUET" }, "owed_to": "acct_123", // other fields }
これにより、issuing_
イベントが送信されます。
利用可能なクレジット
現在、Stripe では連結アカウントで利用可能なクレジット残高を示すフィールドを用意していません。ただし、この数値は次の式で計算できます。
利用可能なクレジット = credit_ - sum(FundingObligation. )1 |
CA が常時支出に利用できる資金は、利用可能なクレジットと Issuing 残高です。
1_「sum(FundingObligation.
)」_は、連結アカウントのすべての FundingObligations
の amount_
を合計した金額です。
資金のフローを追跡する
連結アカウントが入金口座を利用できるようにするのは必須ではありませんが、連結アカウントがプラットフォームから提供された資金を使用する場合は、作成されたオーソリ、取引、送金の状態の追跡が必要になる場合があります。
次の開始状態を想定します。
Account | Issuing 残高 |
---|---|
Gymbox の Issuing アカウント (プラットフォーム) | 70 USD |
Barbell の Issuing 残高 (連結アカウント) | 0 USD |
オーソリ
Barbell には、Gymbox が設定する $100 の credit_
を指定した CreditPolicy
があり、$10 を支出しました。この結果、Barbell のアカウントでは $10 のオーソリが行われます。
{ "id": "iauth_1JVXl82eZvKYlo2CPIiWlzrn", "object": "issuing.authorization", "amount": 1000, "currency": "usd", "approved": true, "authorization_method": "online", "balance_transactions": [ { "id": "txn_1234XYZ", "object": "balance_transaction", "amount": -1000, "type": "issuing_authorization_hold", ... } ], "card": {...}, ... }
同時に、同じ金額の Gymbox の Issuing 残高が保留され、Gymbox の他の連結アカウントが取引に使用できないように資金がリザーブされます。
{ "id": "txn_1Mgr6fXpL7qsPGZtDwrMkq3S", "object": "balance_transaction", "amount": -1000, "available_on": 1677682692, "created": 1677682692, "currency": "usd", "description": "Platform hold for authorization (account: acct_1MgC5JRcH5icH3Nz, authorization: iauth_1Mgr6dRcH5icH3NzezZCHnJF)", "exchange_rate": null, "fee": 0, "fee_details": [], "net": -1000, "reporting_category": "issuing_authorization_hold", "source": { "id": "iph_1Mgr6eXpL7qsPGZtAMb7x0N6", "object": "issuing.platform_hold", "amount": 1000, "currency": "usd", "originating_account": "acct_1MgC5JRcH5icH3Nz", "originating_authorization": "iauth_1Mgr6dRcH5icH3NzezZCHnJF", "originating_balance_transaction": "txn_1Mgr6dRcH5icH3NzYGRkgcn7" }, "status": "available", "type": "issuing_authorization_hold" }
現在の残高:
Account | Issuing 残高 |
---|---|
Gymbox の Issuing アカウント (プラットフォーム) | 60 USD |
Barbell の Issuing 残高 (連結アカウント) | -10 USD |
送金と取引のキャプチャー
Issuing オーソリがキャプチャーされ、Issuing 取引が作成される前に、売上は連結アカウントに送金されます。その後、プラットフォームからリザーブがリリースされます。
Barbell のアカウントで、オーソリが更新されクローズされ、リザーブされていた売上がリリースされます。
{ "id": "iauth_1JVXl82eZvKYlo2CPIiWlzrn", "object": "issuing.authorization", "amount": 1000, "currency": "usd", "approved": true, "authorization_method": "online", "balance_transactions": [ { "id": "txn_1234XYZ", "object": "balance_transaction", "amount": -1000, "type": "issuing_authorization_hold", ... }, { "id": "txn_4t355646t54w2", "object": "balance_transaction", "amount": 1000, "type": "issuing_authorization_release", }, ], "card": {...}, "status": "closed", "transactions": [ { "id": "ipi_1032HU2eZvKYlo2CEPtcnUvl", "object": "issuing.transaction", "amount": -1000, "authorization": "iauth_1JVXl82eZvKYlo2CPIiWlzrn", "balance_transaction": "txn_1345r1KCr4trgtrg0WfNdUCbG1w", ... } ... }
プラットフォームのアカウントでリザーブされていた売上もリリースされます。
{ "id": "txn_1Mgr6fXpL7qsPGZtDwrPz7bA", "object": "balance_transaction", "amount": 1000, "available_on": 1677682692, "created": 1677682692, "currency": "usd", "description": "Released platform hold for authorization (account: acct_1MgC5JRcH5icH3Nz, authorization: iauth_1Mgr6dRcH5icH3NzezZCHnJF)", "exchange_rate": null, "fee": 0, "fee_details": [], "net": 1000, "reporting_category": "issuing_authorization_hold", "source": { "id": "iph_1Mgr6eXpL7qsPGZtAMb7m8Z3", "object": "issuing.platform_hold", "amount": -1000, "currency": "usd", "originating_account": "acct_1MgC5JRcH5icH3Nz", "originating_authorization": "iauth_1Mgr6dRcH5icH3NzezZCHnJF", "originating_balance_transaction": "txn_1Mgr6dRcH5icH3NzYGR7bA4c" }, "status": "available", "type": "issuing_authorization_hold" }
Stripe は Gymbox から Barbell の Issuing アカウントに資金を送金し、Transfer (送金) オブジェクトが作成されます。
{ "id": "tr_3JeQsp2eZvKYlo2C13DagtB0", "object": "transfer", "amount": 1000, "amount_reversed": 0, "balance_transaction": "txn_1032HU2eZvKYlo2CEPtcnUvl", "created": 1646912059, "currency": "usd", "description": null, "destination": "acct_1032D82eZvKYlo2C", "livemode": true, "metadata": {}, "reversals": { "object": "list", "data": [], "has_more": false, "url": "/v1/transfers/tr_3JeQsp2eZvKYlo2C13DagtB0/reversals" }, "reversed": false, "source_transaction": null, "issuing_transaction": "ipi_1032HU2eZvKYlo2CEPtcnUvl", "metadata": {}, "source_balance": { "type": "issuing", }, // New destination_balance returned field links to the BT on the connected account side "destination_balance": { "type": "issuing", "issuing": { "balance_transaction": "txn_123", }, }, // ... other fields ... }
一連のリザーブ、リリース、送金は Stripe が関連する Issuing 取引を作成する前に発生します。現在の残高は次のようになります。
現在の残高:
Account | Issuing 残高 |
---|---|
Gymbox の Issuing アカウント (プラットフォーム) | 60 USD |
Barbell の Issuing 残高 (連結アカウント) | 0 USD |
取引に元のオーソリがなく、連結アカウントに充当する十分な残高がない場合でも、プラットフォームの残高送金と取引作成のフローは発生します。
返金
連結アカウントが返金を受け取ると、Stripe はその返金が、連結アカウントの残高またはプラットフォームのアカウントから資金追加された取引に関連しているかを特定します。連結アカウントの残高から資金追加されたと判断すると、その売上は連結アカウントの残高に戻されます。取引がプラットフォームのアカウントから (たとえば、連結アカウントのクレジット限度額から) 資金追加されている場合、その金額分、連結アカウントの FundingObligation
が減ります。プラットフォームは連結アカウントに代わって取引の金額を Stripe にすでに支払っているため、返金はプラットフォームのアカウントに送られます。
Barbell に 100 USD の FundingObligation
があるとします。その金額が返金されると、次のようになります。
- Barbell の
FundingObligation
が 100 から 0 USD に減る - 100 USD が Gymbox の Issuing アカウントに送られ、プラットフォーム残高が 100 USD 増える
FundingObligation
の amount_
がマイナスになることもあります。これが生じるのは、クレジット期間における取引が返金のみで、他にカードによる支出がない場合です。FundingObligation
は「Needs refund」のステータスを示します。マイナスの FundingObligation
は、カードによる支出はあるが、カードによる総支出より合計返金額の方が大きい場合に生じます。
不審請求の申請
顧客が連結アカウントでのクレジット支出取引に対して不審請求の申請を行った場合、Issuing の不審請求の申請で記載されているプロセスに沿って進められます。不審請求の申請で主張が認められなかった場合は、何も行われません (連結アカウントに入金されません)。不審請求の申請で主張が認められた場合は、返金セクションで説明されているのと同様に連結アカウントに入金されます。
オーソリの拒否
CreditPolicy
が設定された連結アカウントで行われたオーソリは、次の理由で拒否されることがあります。
- 連結アカウントが利用可能なクレジット限度額を超えて支出しようとしている。この場合、連結アカウントに未払いの
FundingObligations
があり、利用可能なクレジットが減っていることがあります。Authorization
の拒否を防止するために、必ず連結アカウントのFundingObligations
を最新の状態に維持してください。 - 利用可能なプラットフォームの Issuing アカウントがゼロになり、利用可能な連結アカウントの Issuing 残高もゼロになっている。支払い拒否を回避するために、Issuing アカウントに十分な資金をトップアップしてください。