# プルペイメント

# はじめに

従来、Bitcoin 支払いを行うには、受取人が自分の bitcoin アドレスを共有し、送金者が後でそのアドレスに送金します。
この仕組みは、受取人が不在でも送金者が支払いを開始して受取人へ支払いを push するため、Push payment(プッシュペイメント)と呼ばれます。

では、役割を逆にするとどうなるでしょうか。

送金者が支払いを push する代わりに、受取人が都合のよいタイミングで支払いを pull できるようにしたらどうでしょうか。
これが Pull payment(プルペイメント)の考え方です。これにより、次のような新しい用途が生まれます。

  • サブスクリプションサービス(購読者が、サービス側に一定間隔で資金を引き出すことを許可する)
  • 返金(加盟店が、顧客が都合のよい時にウォレットへ返金を引き出せるようにする)
  • フリーランサー向け時間課金(雇用側が、稼働報告に応じてフリーランサーがウォレットへ引き出せるようにする)
  • パトロネージ(支援者が、受取人の活動継続のため毎月引き出せるようにする)
  • 自動売却(取引所の顧客が、毎月自動売却するために取引所へ資金引き出しを許可する)
  • 残高出金システム(大量トランザクションを扱うサービスが、ユーザーの出金要求を受け、固定間隔で多数の支払いをまとめて処理できる)

次の動画も参考にしてください。

# 概念

送金者が Pull payment を設定する際、次のプロパティを設定できます。

  • 開始日
  • 終了日(任意)
  • 期間(任意)
  • 上限額
  • 単位(USD、BTC、時間など)
  • 利用可能な支払い方法

その後、送金者はリンクを使ってプルペイメントを共有でき、受取人は create a payout(ペイアウト作成)を実行できます。
受取人はペイアウトについて次を選択します。

  • 使用する支払い方法
  • 送金先

ペイアウトが作成されると、現在の period における pull paymentlimit に計上されます。
その後、送金者はペイアウトを送る際の 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 はプルペイメントの全機能を公開しているため、送金者は自身の用途に合わせて支払いを自動化できます。

# ユーザーインターフェース

ユーザーインターフェースでは、可能な機能の一部のみを操作できます。

# プルペイメントを作成する

  1. ウォレットページ / Pull Payments に移動します BTCPay Server Pull Payment
  2. Create a new pull payment(新しいプルペイメントを作成)をクリックします BTCPay Server Pull Payment
  3. プルペイメント情報を入力し、Create をクリックします BTCPay Server Pull Payment
  4. View をクリックしてプルペイメントページに移動します
  5. このページを支払いの受取人に共有します BTCPay Server Pull Payment
  6. 受取人として、請求する USD 金額と送金先アドレスを入力します。 BTCPay Server Pull Payment

# ペイアウトを承認して支払う

  1. 受取人が資金を引き出すと、送金者に通知が届きます 6
  2. 通知をクリックすると、未処理ペイアウトの一覧ページに移動します 7
  3. 承認して支払うペイアウトを選択し、確認します 8
  4. その後、BTCPay Server の通常のウォレット UI に移動します

WARNING

Confirm selected payouts をクリックすると、ウォレットのストア設定にある現在の為替レートが使用されます。このレートは、支払いを完了しなくても固定されます。後で行う支払いでも、この以前に確定したレートが使われます。

# プルペイメント機能の追加ユースケース

プルペイメント機能は複数の用途で利用でき、その 1 つが 返金 です。