Stripe で手数料を取る投げ銭プラットフォームの設計
概要
以前作ったことがあった投げ銭プラットフォームを Stripe Connect で構築したときの設計について書きました。
具体的な実装は書いていません。Strip Connect を用いたユースケースとして読んでいただけると良いと思います。
サービス概要
アーティストがファンから投げ銭を受け取るためのプラットフォームです。
以下の説明では便宜上、投げ銭する人を応援者、投げ銭を受け取る人を活動者と呼ぶことにします。
活動者はそのプラットフォームで特にオンラインライブをするとかではなく、ただ登録しているだけで良いです。活動のためのプラットフォームではなく、投げ銭を行うだけのプラットフォームとして作りました。
当時のサービス機能とコンセプトはもっと複雑だったのですが、今回は Stripe Connect の利用に焦点を当てるためこのように簡略化します。
ビジネスモデル
会社は投げ銭手数料を 30%取る。投げ銭されたユーザーは手数料を差し引いた金額が売上になる
- 応援社は推しを応援できて嬉しい
- 活動者はいつもの行動にファンからお金がもらえて嬉しい
- 会社は手数料をもらえてうれしい
というようなスキームです。
用語定義
名前 | 説明 |
---|---|
投げ銭 | ユーザーがユーザーに対して金銭を支払うこと |
投げ銭手数料 | 会社が投げ銭の売上から取る手数料 |
応援者 | 投げ銭を行うユーザー |
活動者 | 投げ銭を受け取るユーザー |
前提条件
- Stripe Connect を利用する
- Stripe Connect のアカウントタイプは Custom を利用する (https://stripe.com/docs/connect/accounts)
- Stripe の当時のバージョンは v72 (2020-2021 年代)
- 活動者はサービスのユーザー登録時に Stripe Connect アカウントを作成する
考慮すべき条件
- Stripe Connect の手数料(Custoom)
- ユーザーへの入金 手数料は 250 円+0.25%
- 入金のあった 1 アカウントごとに月額 200 円
参考: https://stripe.com/jp/connect/pricing
要件
- 会社は投げ銭の手数料を 30% 取る
- 入金するとき 300 円の手数料を取る
- Stripe の 250 円の手数料の分を活動者が負担する
フロー
Stripe Connect のデスティネーション支払いを用いて行います。
簡単にいうとプラットフォームを経由して手数料を取った後に活動者に送金するという流れです。関税ですね。
使った Stripe API は以下
- PaymentIntent
- Transfer
- PayOut
- Charge
※ 2020-2021 の Strtipe v72 のときの API 仕様ですので一部やり方が違うかもしれません。
応援者が活動者に対して 5000 円投げ銭を行ったときの流れ
PaymentIntent API を利用してプラットフォームの売上を作成し、その売上から投げ銭手数料(30%)を差し引いた金額を活動者に送金する流れです。
このとき、Stripe の決済手数料の請求は点線で表現しています、実際の処理は非同期で行われます。
活動者が売上金を受け取るまでの流れ
活動者が売上金を受け取るまでの流れです。
PayOut API を利用してプラットフォームの売上を活動者の口座に送金処理を行います。
このとき、即時に入金はされずに週一回のペースで入金されます。(https://stripe.com/docs/payouts?locale=ja-JP)
そのため、ユーザーからは入金のステータスが確認できるような UI にする必要がありました。
書いていないけど行っていたこと
- Connect アカウントの作り方、タイミング
- Connect アカウントの詳細登録タイミング
- オーソリを用いた決済
- 第三勢力(活動者の事務所)が介入するケース
- 活動者を斡旋してくれる事務所が存在し、プラットフォームの売上の一部を事務所にも転送するというケースです。
参考資料
- Stripe Connect: https://stripe.com/jp/connect
- Stripe Connect 利用料金: https://stripe.com/jp/connect/pricing
- Stripe Connect アカウントタイプ: https://stripe.com/docs/connect/accounts
- デスティネーション支払い: https://stripe.com/docs/connect/destination-charges?locale=ja-JP
- Payment Intents API: https://stripe.com/docs/payments/payment-intents?locale=ja-JP
- 支払いと送金別方式の作成: https://stripe.com/docs/connect/separate-charges-and-transfers?locale=ja-JP
- 入金: https://stripe.com/docs/payouts?locale=ja-JP
Discussion