Introducing BTCPay Payment Request — Get paid in Bitcoin by sharing a URL

I regularly pay freelancers with bitcoin. When we agree on the price in fiat, due to volatility, the numbers never add up. I have to pay again, or they have to refund me. If we agree on the amount a few days in advance, someone is always at financial or time loss. Making sure they don’t re-use the address is a story for another day, but you feel the pain. (GitHub #314 )

BTCPay Server is a free and open-source cryptocurrency payment processor. In this article, we would like to share how we addressed the above problem for our users.

The Problem

Our good old client Satoshi wants to pay us for a logo we designed.

Satoshi needs to ask for the exact amount.

  • Satoshi needs our address
  • Satoshi needs to make sure there is no address re-use since that’s a huge privacy issue
  • Satoshi’s ISP may block the email if he mentions Bitcoin.
  • Satoshi does not have enough BTC, he needs to repeat the same process
  • All this time the rates change
  • Satoshi has no invoice confirmation to print for his accountant

The solution

Introducing — Payment Requests, a new type of time-sensitive invoice pages built into BTCPay that allow you to get paid in cryptocurrency just by sharing a simple URL.

  • The seller creates an invoice, adds an expiration date, customizes it and shares as a regular link.
  • Buyer can pay invoice whenever preferred. The exchange rates update accordingly.
  • Buyer can pay right away or later, on-chain or via the Lightning Network. The invoice can even be paid partially with LN and partially on-chain, or even with multiple coins.
  • The exchange rate is determined when a buyer tries to pay the invoice.
  • Buyer can print the paid invoice.
  • The seller can export all the relevant data as CSV later and send it to an accountant.
  • Since they’re using BTCPay, money goes directly from one wallet to another, no custodians, no fees.

How does it work?

  1. Create a payment request (enter the amount, the expiration time, and description)
  2. Customize the design (optional)
  3. Share the URL.

We’ve added lots of flexibility, so you can use custom CSS, or add a ready-made BootStrap theme.

You can save the invoice for later and preview it, or publish it right away and send it to your customers.

Features

  • Set the expiration time
  • Printer-friendly mode
  • Customizable design (CSS/theme)
  • Custom or fixed amount
Printer-friendly mode lets your customers easily print paid invoices.

Roadmap

We plan to further develop and improve the payment requests based on your feedback.

Short term improvements we plan to implement are:

  • One-Time or Recurring requests (subscriptions)
  • Send a request automatically via an e-mail (SMTP integration)

Try it out

Excited? Here’s how you can create a payment request quickly:

  1. Register on our demo server (you can self-host BTCPay or use a third-party host)
  2. Create a store and connect your wallet (no private keys required).
  3. Payment Requests > Create.

We’re very proud of this feature. In order to improve it further, we need more people to use it. Give it a try, and share your invoices and experiences with us on Twitter.


Originally published at blog.btcpayserver.org on February 22, 2019.