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 (opens new window) )
BTCPay is 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 (opens new window) the email if he mentions Bitcoin.
- Satoshi does not have enough BTC, he needs 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.
- Seller creates an invoice, adds 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 buyer tries to pay the invoice.
- Buyer can print the paid invoice.
- Seller can export all the relevant data as CSV later and send it to accountant.
- Since they’re using BTCPay, money goes directly from one wallet to another, no custodians, no fees.
# How it works?
- Create a payment request (enter the amount, the expiration time, and description)
- Customize the design (optional)
- Share the URL.
Creating a payment request in BTCPay:
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.
- Set the expiration time
- Printer-friendly mode
- Customizable design (css/theme)
- Custom or fixed amount
Print invoices with ease:
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:
- Register on our demo server (opens new window) (you can self-host (opens new window) BTCPay or use a third-party host (opens new window))
- Create a store (opens new window) and connect your wallet (no private keys required).
- 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 (opens new window).