# プルペイメント
# はじめに
従来、Bitcoin 支払いを行うには、受取人が自分の bitcoin アドレスを共有し、送金者が後でそのアドレスに送金します。
この仕組みは、受取人が不在でも送金者が支払いを開始して受取人へ支払いを push するため、Push payment(プッシュペイメント)と呼ばれます。
では、役割を逆にするとどうなるでしょうか。
送金者が支払いを push する代わりに、受取人が都合のよいタイミングで支払いを pull できるようにしたらどうでしょうか。
これが Pull payment(プルペイメント)の考え方です。これにより、次のような新しい用途が生まれます。
- サブスクリプションサービス(購読者が、サービス側に一定間隔で資金を引き出すことを許可する)
- 返金(加盟店が、顧客が都合のよい時にウォレットへ返金を引き出せるようにする)
- フリーランサー向け時間課金(雇用側が、稼働報告に応じてフリーランサーがウォレットへ引き出せるようにする)
- パトロネージ(支援者が、受取人の活動継続のため毎月引き出せるようにする)
- 自動売却(取引所の顧客が、毎月自動売却するために取引所へ資金引き出しを許可する)
- 残高出金システム(大量トランザクションを扱うサービスが、ユーザーの出金要求を受け、固定間隔で多数の支払いをまとめて処理できる)
次の動画も参考にしてください。
# 概念
送金者が Pull payment を設定する際、次のプロパティを設定できます。
- 開始日
- 終了日(任意)
- 期間(任意)
- 上限額
- 単位(USD、BTC、時間など)
- 利用可能な支払い方法
その後、送金者はリンクを使ってプルペイメントを共有でき、受取人は create a payout(ペイアウト作成)を実行できます。
受取人はペイアウトについて次を選択します。
- 使用する支払い方法
- 送金先
ペイアウトが作成されると、現在の period における pull payment の limit に計上されます。
その後、送金者はペイアウトを送る際の rate を設定して承認し、支払いを進めます。
送金者向けには、BTCPay 内部ウォレット から複数のペイアウトをまとめて支払える、使いやすい方法を提供しています。
+----------+ +-------------------+ +------------+
| | | | | |
| Sender | | BTCPay Server | | Receiver |
| | | | | |
+----------+ +-------------------+ +------------+
| | |
| | |
| Create | |
+--------------------------->+ |
| Pull payment | |
| | |
| | |
| Share | |
+-------------------------------------------------------->+
| Pull payment | |
| | |
| | Create |
| +<---------------------------+
| | Payout |
| | |
| Approve | |
+--------------------------->+ v
| Payout |
| |
| Pay |
+--------------------------->+
| Payout |
| |
| |
v v
BTCPay Server はペイアウトを自動で承認・支払いしない点に注意してください。将来のリリースでは、適切な条件下で自動支払いされるペイアウトを検討予定です。
代わりに送金者へ通知が表示され、送金者がペイアウトを承認して支払うかを選択します。
# Greenfield API
送金者と受取人の両方に対して、インスタンスの /docs ページ(または 公開リンク (opens new window))で確認できる完全な API を提供しています。
この API はプルペイメントの全機能を公開しているため、送金者は自身の用途に合わせて支払いを自動化できます。
# ユーザーインターフェース
ユーザーインターフェースでは、可能な機能の一部のみを操作できます。
# プルペイメントを作成する
- ウォレットページ /
Pull Paymentsに移動します
Create a new pull payment(新しいプルペイメントを作成)をクリックします
- プルペイメント情報を入力し、
Createをクリックします
Viewをクリックしてプルペイメントページに移動します- このページを支払いの受取人に共有します

- 受取人として、請求する
USD金額と送金先アドレスを入力します。
# ペイアウトを承認して支払う
- 受取人が資金を引き出すと、送金者に通知が届きます

- 通知をクリックすると、未処理ペイアウトの一覧ページに移動します

- 承認して支払うペイアウトを選択し、確認します

- その後、BTCPay Server の通常のウォレット UI に移動します
WARNING
Confirm selected payouts をクリックすると、ウォレットのストア設定にある現在の為替レートが使用されます。このレートは、支払いを完了しなくても固定されます。後で行う支払いでも、この以前に確定したレートが使われます。
# プルペイメント機能の追加ユースケース
プルペイメント機能は複数の用途で利用でき、その 1 つが 返金 です。