Chapter 15

Destination Charges - Disputes

Toru Furukawa
Toru Furukawa
2021.12.15に更新

今日は、Destiation Charge の後で、チャージバックが発生したときの、データと資金フローを見ていく。

ベースの Destination Charge

下の API 呼び出しを、ベースの Destination charge として想定する。

request
curl https://api.stripe.com/v1/payment_intents \
  -d amount=1000 \
  -d application_fee_amount=200 \
  -d "transfer_data[destination]"="acct_xxxx" \
  -d payment_method=pm_card_createDisputeProductNotReceived \
  ...

資金フローは、下図のようになる。

Buyer           Platform                    .       Seller
Card            Bank                        .       Bank
 :                                          .
Payment Method  Platform Account            .       Connected Account
 |               ^    |       ^             .             ^
 |               |    |       | 200         .             |
 |               |    |       |             .             |
 |               |    |   [TXN3][Application Fee]<-+      |
 |               |    |                     .      |      |
 | 1000      964 |    | 1000                .  200 |      | 800
 v               |    |                     .      |      |
[Charge]         |    v                     .      |      |
[TXN1]-----------+  [TXN2]      1000        .  [TXN4]-----+
 |                  [Transfer]---------->[Charge2]
 | 36                                       .
 v                                          .
Stripe

収支は下表のようになる。

Transaction Payment Methond Platform Account Connected Account Stripe
Charge -1000 +964 0 36
Transfer 0 -1000 1000 0
Applecation Fee 0 +200 -200 0
収支 -1000 +164 +800 +36

チャージバック

Platform の外部でチャージバックが発生し、Stripe のデータや残高に変更が発生する。Webhook、API、ダッシュボードなどで確認すると分かる。

チャージバックが発生すると、Platform の残高から返金と費用回収をする。

request
curl https://api.stripe.com/v1/disputes \
  -d payment_intent=pi_xxxx \
  -G \
  ...
response
{
  "id": "dp_xxxx",
  "object": "dispute",
  "amount": 1000,
  "balance_transactions": [
    {
      "id": "txn_xxxx",
      "amount": -1000,
      "fee": 1500,
      "net": -2500,
      ...
    }
  ],
  ...
}

支払金額の 1000 円と、チャージバック手数料 1500 円が、Platform Account から引かれる。

資金フローは下図のようになる。

Buyer              Platform                         .   Seller
Card               Bank                             .   Bank
 :                                                  .
Payment Method   Platform Account                   .  Connected Account
       ^          |                                 .
  1000 |          | 2500                            .
       |          v                                 .
      [Dispute][TXN]👈                              .
       :          |                                 .
  [Charge]        |      [Transfer]             [Charge]
                  |
                  v 1500
                Stripe

収支は下表のようになる。返金の場合と同じく、Platform Account の残高だけが減る。

Transaction Payment Methond Platform Account Connected Account Stripe
Charge -1000 +964 0 36
Transfer 0 -1000 1000 0
Applecation Fee 0 +200 -200 0
Dispute +1000 -2500 0 +1500
収支 0 -2336 800 +1536

Transfer と Application Fee を回収

返金と同じく、次の API 呼び出しで Transfer の資金を戻せる。

request
curl https://api.stripe.com/v1/transfers/tr_xxxx \
  -d "expand[]"=balance_transaction \
  ...
response
{
  "id": "trr_xxxx",
  "amount": 1000,
  "balance_transaction": {
    "id": "txn_xxxx",
    "amount": 1000,
    "fee": 0,
    "net": 1000,
    ...
  },
  "destination_payment_refund": "pyr_xxxx",
  ...
}

資金フローは下図のようになる。API 呼び出しは省略するけれど、Connected Account の残高から、Platform Account の残高に資金を戻す。

Buyer              Platform                         .   Seller
Card               Bank                             .   Bank
 :                                                  .
Payment Method   Platform Account                   .  Connected Account
       ^          |         ^                       .     |
  1000 |          | 2500    | 1000                  .     | 1000
       |          v         |                       .     |
      [Dispute][TXN]     [TXN]               1000   .     v
       :          |      [Transfer Reversal]<----[Refund][TXN]
       :          |            :        👆        : .  👆
  [Charge]        |      [Transfer]              [Charge]
                  |
                  v 1500
                Stripe

収支は下表のようになる。

Transaction Payment Methond Platform Account Connected Account Stripe
Charge -1000 +964 0 +36
Transfer 0 -1000 1000 0
Applecation Fee 0 +200 -200 0
Dispute +1000 -2500 0 +1500
Reversal 0 +1000 -1000 0
収支 0 -1336 -200 +1536

Platform Account が、手数料の 1500 円を被ったまま。これでいい場合もあるし、回収したい場合もあるだろう。回収の方法は、また今度見ていこう。

Application Fee の 200 円を、Platform Account から Connected Account に戻すこともできる。昨日の記事と同じだ。

まとめ

Destination Charge で発生したチャージバックと、後処理のデータと資金フローを見た。明日は、Separate Charges and Transer を見ていく。