Chapter 03

Availability

Toru Furukawa
Toru Furukawa
2021.12.02に更新

利用可能 / Availablity

Payment Intent を使って、Payment Method (≒ クレカ)から Stripe Account 資金を移動するところまできた。

Buyer                                                  Seller
Card                                                   Bank
  :
Payment Method -> [Charge] -> [Balance Transaction] -> Account
                     :                |
               [Payment Intent]       v fee
                                    Stripe

この資金を銀行口座に移動できるまでに時間がかかる。Visa/Mastercard/American Express は 4 営業日、JCB/Discover/Diners は 30 暦日かかる。

JCB/Discover/Diners の支払いを、4 営業日または 10 営業日後にする料金オプションのベータ版があるっぽい。

銀行口座に移動できることを、available (利用可能)であるという。available になる時刻は、Balance Transaction が持っている。

curl https://api.stripe.com/v1/payment_intents/pi_xxxx \
  -u sk_xxxx: \
  -d "expand[]"=charges.data.balance_transaction \
  -G

{
  "id": "pi_xxxx",
  "charges": {
    "data": [
      {
        "id": "ch_xxxx",
        "balance_transaction": {
          "id": "txn_xxxx",
          "net": 1000,
          "available_on": 1634655600, # 2021-10-19 03:00:00 UTC
          "created": 1634193764, # 2021-10-14 06:42:44 UTC
          ...

Balance Transaction の available_on がそれだ。上の例では、2021 年 10 月 14 日(木)の決済で増えた残高は、19 日(火)に available となる。

たとえば、以下の表のような Balance Transaction があったとする。

id net available_on
txn_1 1,000 2021-10-19 00:00:00
txn_2 2,000 2021-10-28 00:00:00

2021-10-25 の時点では、txn_1 は available だが、txn_2 は available でない。だから、txn_1 の 1,000 円だけを銀行口座に移動できる。

月末の 2021-10-30 の時点では、両方とも available なので、合計 3,000 円を銀行口座に移動できる。

Balance Transaction を取得する別の方法

Balance Transaction のリストを取得できる。

curl https://api.stripe.com/v1/balance_transactions/ \
  -u sk_xxxx:

現時点のアカウントの残高のうち、available な残高と、available ではない残高を知ることもできる。ただし、呼び出した時点でのスナップショットであり、明日どうなっているか、は分からない。

curl https://api.stripe.com/v1/balance \
  -u sk_xxxx:

{
  "object": "balance",
  "available": [
    {
      "amount": 1519969,
      "currency": "jpy",
      "source_types": {
        "card": 1519969
      }
    }
  ],
  "livemode": false,
  "pending": [
    {
      "amount": 5236,
      "currency": "jpy",
      "source_types": {
        "card": 5236
      }
    }
  ]
}

まとめ

決済完了後、available の考え方と、確認のしかたが分かった。明日は、銀行口座に移動させる話へすすむ。