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

BTCPay Server
Feb 22, 2019 · 3 min read

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.

Image for post
Image for post

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.

Image for post
Image for post
  • 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.
Image for post
Image for post

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.
Image for post
Image for post

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

Image for post
Image for post

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


  • Set the expiration time
  • Printer-friendly mode
  • Customizable design (CSS/theme)
  • Custom or fixed amount
Image for post
Image for post


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 on February 22, 2019.

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store