BTCPay Server is a free and open-source cryptocurrency payment processor which allows you to receive payments in Bitcoin and altcoins directly, with no fees, transaction cost or a middleman.
BTCPay is a non-custodial invoicing system which eliminates the involvement of a third-party. Payments with BTCPay go directly to your wallet, which increases the privacy and security. Your private keys are never uploaded to the server. There is no address re-use, since each invoice generates a new address deriving from your xpubkey.
The software is built in C# and conforms to the invoice API of BitPay. It allows for your website to be easily migrated from BitPay and configured as a self-hosted payment processor.
You can run BTCPay as a self-hosted solution on your own server, or use a third-party host.
The self-hosted solution allows you not only to attach an unlimited number of stores and use the Lightning Network but also become the payment processor for others.
Thanks to the apps built on top of it, you can use BTCPay to receive donations, start a crowdfunding campaign or have an in-store Point of Sale.
Table of Contents
- Getting Started
- How to build
- How to run
- How to debug
- Direct, peer-to-peer Bitcoin and altcoin payments
- No transaction fees (other than those for the crypto networks)
- No processing fees
- No middleman
- No KYC
- User has complete control over private keys
- Enhanced privacy
- Enhanced security
- SegWit support
- Lightning Network support (LND and c-lightning)
- Tor support
- Full compatibility with BitPay API (easy migration)
- Process payments for others
- Easy-embeddable Payment buttons
- Point of sale app
- Crowdfunding app
- Payment requests
If you have trouble using BTCPay, consider joining communities listed on official website to get help from BTCPay community members. Only file Github issue for technical issues you can't resolve through other channels or feature requests you've validated with other members of community.
Main community chat is located on Mattermost.
BTCPay is built and maintained entirely by volunteer contributors around the internet. We welcome and appreciate new contributions.
If you're a developer looking to help, but you're not sure where to begin, check the good first issue label, which contains small pieces of work that have been specifically flagged as being friendly to new contributors.
Contributors looking to do something a bit more challenging, before opening a pull request, please create an issue or join our community chat to get early feedback, discuss best ways to tackle the problem and to ensure there is no work duplication.
You also have an awesome video of our contributors which explains you how to get started.
How to build
While the documentation advises to use docker-compose, you may want to build BTCPay yourself.
First install .NET Core SDK v2.1.9 as specified by Microsoft website.
How to run
run scripts to run BTCPayServer, this example shows how to print the available command line arguments of BTCPayServer.
How to debug
If you want to debug, use Visual Studio Code or Visual Studio 2017.
You need to run the development time docker-compose as described in the test guide.
You can then run the debugger by using the Launch Profile
Docker-Regtest on either Visual Studio Code or Visual Studio 2017.
If you need to debug ledger wallet interaction, install the development time certificate with:
# Install development time certificate in the trust store dotnet dev-certs https --trust
Then use the
Docker-Regtest-https debug profile.
For more information, see the documentation: How to deploy a BTCPay server instance.
Bitcoin is the only focus of the project and its core developers. However, opt in integrations are present for several altcoins:
- Bitcore (BTX)
- Dash (DASH)
- Dogecoin (DOGE)
- Feathercoin (FTC)
- Groestlcoin (GRS)
- Litecoin (LTC)
- Monacoin (MONA)
- Polis (POLIS)
- Viacoin (VIA)
- BGold (BTG) (also known as Bitcoin Gold)
- BPlus (XBC) (also known as Bitcoin Plus)
Altcoins are maintained by their respective communities.