I posted this guide on Reddit a while ago, I thought it would be useful to have it here
Not long ago I made a post about finding a way to accept Bitcoin payments to my online store, directly, with no third-party processors, no intermediates.
The post got plenty of love from r/Bitcoin, but I also received plenty of questions from other merchants who would like to explore the possibility of shifting towards a self-sovereignty way of accepting Bitcoin and other coins. The best solution I found is BTCPay.
This guide assumes you’re a merchant who already understands the benefits and the risks of accepting Bitcoin. It's not technical at all. The goal is just to explain plainly what is BTCPay, how it works and cover advantages and disadvantages.
What is BTCPay and why should you care? BTCPay Server is an Open Source payment processor, written in C#, that conforms to the invoice API of Bitpay. This allows easy migration of your code base to your own, self-hosted payment processor. source.
The programmer behind the open-source project is Nicolas Dorier, Bitcoin Core contributor. Nicolas decided to fork BitPay processor and create a better solution. With BTCPay it's similar like with Bitcoin. You are your own bank; you control your funds, the payment processor can't just shut you down just because they do not like your business model.
Difference between the BTCPay and the third-party payment processorThink of BTCPay as a server which allows you to accept bitcoin without intermediates. The payment processors act as a server as well, but your customer's data, IP addresses go through them. Furthermore, most of the payment processors hold your crypto payments, and you’d have to withdraw it or convert it, similar to what exchanges do. The advantages
Benefits- You are running a full node and helping the network
- You are protecting the privacy of your customers
- You’re using Bitcoin the way it’s supposed to be used, p2p, directly
- You’re avoiding fees that all payment processors have (monthly subscription/fees per transaction usually 1-2%)
- You can accept payments directly to your hardware wallet (currently integrated with Ledger very well) and you’re the immediate owner of those assets
- You can be a host and help other smaller shops accept payments through their stores
- You can accept other cryptocurrencies through BTCPay (Litecoin currently)
- You will be able to accept Lightning Network payments (feature still in development)
- Multiple merchants can have the same server and host their stores there, though this raises the issue of trust
Disadvantages- It currently costs around 50-70$ per month (the cost varies depending on the server you’re using)
- It takes a bit more time to setup and configures to fit your store needs, (took 3-4 hours for myself, I’m not particularly tech-savvy).
- You can not convert to fiat currency right away like with some payment processors, though in my personal opinion, the immediate conversion ruins the whole point of accepting bitcoin and does not increase the adoption.
ELI5 how BTCPay works?Currently, there are three basic elements of the puzzle :
- The server
- The plugin
- The wallet
You’re running your own
server which has the
full node running; the server is called BTCPay Server. Once installed it will be connected to your website subdomain. The plugin connects your server to your Woocommerce Store. In the plugin settings, you can set most of the stuff. A bit more advanced setting can be configured on the server. Your receive payments to your wallet (it’s possible to configure Ledger Nano S right out of the box).
This means that the buyer, pays directly to you in cryptocurrency and that the payment does not go anywhere else, the IP address is not leaked, the buyer data is not shared with a third party in any way. You will see the payment in your ledger wallet.
BTCPay is not the only solution to accept cryptocurrency directly, but after months of trying out, I found it the safest and the easiest to configure.
Getting StartedI am not nearly as smart as Nicolas Dorier who forked the BitPay plugin to bring us this payment system, so I will not go into technical details on how to set the server up. The entire document is available on the Github
Summary of this step is that you have to register with Microsoft Azure server. Upon registration, you'll get 200$ free credits which will be enough for the first few months of for running the server, so basically, there are no upfront costs. Be aware that BTCPay is free; it does not cost a dime, you're paying Microsoft here for the server which will keep your node online 24/7.
After you buy the server, there is a single one-click deploy button you have to click. It will take you to your Azure VM and configure everything for you. There are few things you have to change yourself. Besides documentation, Nicolas made an easy to follow video for this.
The next step is to connect your domain and your server, which is again very easy to follow up in the videos and documents.
The third step is to connect your Woocommerce store by installing the Woo plugin (plugin is free).
The final step is to configure your hardware wallet and set the derivation path. I was amazed that Ledger configuration took only a few seconds. Nicolas did a great job with this one.
When you set up your store, it is highly recommended to test it out. Post any issues that you might find on the Github and if you have any questions, feel free to ask on Slack.
FAQBefore I answer some of the questions I got from merchants, I'd like to tell that if you're a merchant and have any question, feel free to ask it here. If you're having trouble setting up your BTCPay server, [join the community on Slack](. There are developers and merchants there ready to help you.
Q: Where can I see the example of how BTCPay works and looks?A: BTCPay website and if you want to see it live you can check my store
Q: Where can I get help/support?A: BTCPay is an open-source project. The best way to ask questions is through the Slack group.
Q: Can the costs of running BTCPay be cheaper?A: it can. Currently, the one-click deployment requires Azure Virtual Machine, but if you’re a programmer or understand VM’s you can deploy one on a different VM. Furthermore, the changes in the Bitcoin Core 0.16.0 (BIP159) make it possible to run the full node in pruned mode to save more disk space.
Also, once the full node is synchronized to the network, you can downgrade the machine on Azure to take a less expensive one.
Penny-pinching cost is a manual process which involves trial and error.
Q: I have a Shopify store, can I use BTCPay?A: At this moment, no. Shopify is a closed system a company opposed to an open-source project like WordPress, so it’s harder to communicate to them and create a solution. Luckily there are developers in BTCPay community working on it. While I can’t give you precise information, I assume it will eventually be possible.
Q: Can I have more stores connected to my BTCPay server.A: Absolutely, you can host multiple stores on the same server. The stores can operate and configure settings separately and receive payments separately.
Q: Why use BTCPay vs. just having a BTC address up on your site?A: The most important reason - the privacy of your customers and your business. BTCPay will generate the new address for each invoice. You just need to select the derivation path for the address (in my case I used Ledger Nano S). The second reason is user-experience. BTCPay integrates as a payment method to your store, so you're customers can checkout with a few clicks.
List of merchants using BTCPayNote: If you're a merchant accepting BTCPay and would like to be listed here, just comment. The list is in alphabetical order.
- 9bravos.com
- bitcoinshirt.co
- Coincards.ca
- CryptoAsylum.com
- halongmining.com
- ludvigart.com
- ynotek.com
Useful LinksFull disclosure, I am not in any way related to BTCPay project. I am just the guy who discovered it and fell in love with the community and the good vibes among the users. I wrote this post to help merchants understand it better and to help with promoting this exceptional project. Since I have no skills to contribute by coding, I thought I could help this way.I understand that this post is long and will not be attractive to anyone except for the merchants, but please share it for the visibility so that we can spread the word. BTCPay is an open-source project, and they accept the donations if you can please support it.