BTCPayServer

BTCPayServer

Official

Docker app from Raccommode's Repository

Overview

BTCPay Server is a free and open-source Bitcoin payment processor for self-hosted stores, invoices, checkout, wallets, point-of-sale flows, plugins, and webhooks without third-party payment processor fees.

BTCPay Server

BTCPay Server

Accept Bitcoin payments ₿

BTCPay Server is a free and open-source Bitcoin payment processor which allows you to accept bitcoin without fees or intermediaries.

"This is lies, my trust in you is broken, I will make you obsolete" 💚

View Demo · Report a bug · Request a feature · FAQ

💼 Table of Contents

🎨 Features

  • Direct, peer-to-peer Bitcoin payments
  • No transaction fees (other than the network fee)
  • No fees, middleman or KYC
  • Non-custodial (complete control over the private key)
  • Enhanced privacy & security
  • Self-hosted
  • SegWit support
  • Lightning Network support (LND, Core Lightning (CLN), Eclair)
  • Tor support
  • Share your instance with friends (multi-tenant)
  • Invoice management and Payment requests
  • Apps: Point of sale, crowdfunding, donation button
  • Full-node reliant wallet with hardware wallet integration and SegWit support
  • Bitcoin-only build, separate community-maintained altcoin build (supported altcoins)

🚀 Getting Started

Firstly, decide if you want to host an instance yourself or use a third-party host. If you've chosen to self-host, there are plenty of documented ways to deploy BTCPay Server.

After successful deployment, make sure to check our getting started and walkthrough guides. In case you would like to use Lightning Network, see Lightning guide.

📗 Documentation

Please check out our official website, complete documentation and FAQ for more details.

If you have trouble using BTCPay Server, consider joining communities listed on the official website to get help from other contributors. Only create a GitHub issue for technical issues you can't resolve through other channels or feature requests you've validated with other members of the community.

🤝 Contributing

BTCPay Server 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 join our community chat or start a GitHub discussion to get early feedback, discuss the best ways to tackle the problem, and ensure there is no work duplication.

There are many other ways to get involved with the project. Check our contribution guidelines. To get the big-picture of the project development, visit our evolving roadmap.

🧑‍💻 Developing

To begin developing locally, visit our local development guide. There are also several video-tutorials:

How to build

While the documentation advises using docker-compose, you may want to build BTCPay Server yourself.

First, install .NET SDK v10.0 as specified by the Microsoft website.

On Powershell:

.\build.ps1

On linux:

./build.sh

How to run

Use the run scripts to run BTCPay Server, this example shows how to print the available command-line arguments of BTCPay Server.

On Powershell:

.\run.ps1 --help

On linux:

./run.sh --help

How to debug

If you want to debug, use Jetbrain's Rider or Visual Studio 2022.

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.

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.

Other dependencies

For more information, see the documentation: How to deploy a BTCPay Server instance.

🧪 API

BTCPay Server has two APIs:

The Greenfield API is our brand-new API which is still in development. Once complete, it will allow you to run BTCPay Server headlessly. The Legacy API, is fully compatible with BitPay's API. It has limited features, but allows instant migration from BitPay.

💚 Community

Our community is the ❤️ of the project. To chat with other community members in real-time, join our Mattermost chat. We're also on GitHub discussions.

📝 License

BTCPay Server software, logo and designs are provided under MIT License.

🙏 Supporters

The BTCPay Server Project is proudly supported by these entities through the BTCPay Server Foundation.

Spiral OpenSats Tether Human Rights Foundation LunaNode Wallet of Satoshi Coincards IVPN Unbank

If you'd like to support the project, please visit the donation page.

Media gallery

Install BTCPayServer on Unraid in a few clicks.

Find BTCPayServer in Community Apps on your Unraid server, review the template, and click Install. Unraid handles the Docker app or plugin setup from the published template.

Open the Apps tab on your Unraid server Search Community Apps for BTCPayServer Review the template variables and paths Click Install

Requirements

This template runs the BTCPay Server application container only. The officially supported deployment is a Docker Compose stack with Postgres, NBXplorer, and a Bitcoin full node, plus optional reverse proxy and Lightning services. Configure those services separately and point the Postgres, Explorer, and Bitcoin variables below at them before using BTCPay with real funds. If using container names such as postgres or nbxplorer, place all containers on the same custom Docker network.

Download Statistics

4,062,231
Total Downloads

Related apps

Details

Repository
btcpayserver/btcpayserver:latest
Last Updated2026-06-15
First Seen2026-06-05

Runtime arguments

Web UI
http://[IP]:[PORT:49392]
Network
bridge
Shell
sh
Privileged
false

Template configuration

Web UI PortPorttcp

BTCPay Server web interface and internal API port. Container port: 49392.

Target
49392
Default
49392
Value
49392
DataPathrw

Persistent BTCPay Server data directory. Back this directory up before processing real payments.

Target
/datadir
Default
/mnt/user/appdata/btcpayserver
Value
/mnt/user/appdata/btcpayserver
PluginsPathrw

Persistent BTCPay Server plugins directory.

Target
/root/.btcpayserver/Plugins
Default
/mnt/user/appdata/btcpayserver/plugins
Value
/mnt/user/appdata/btcpayserver/plugins
Bind AddressVariable

Address and port BTCPay binds to inside the container.

Target
BTCPAY_BIND
Default
0.0.0.0:49392
Value
0.0.0.0:49392
NetworkVariable

Bitcoin network. Use mainnet, testnet, signet, or regtest.

Target
BTCPAY_NETWORK
Default
mainnet
Value
mainnet
ChainsVariable

Comma-separated crypto chains enabled in BTCPay. This template defaults to Bitcoin only.

Target
BTCPAY_CHAINS
Default
btc
Value
btc
Public HostVariable

Optional public hostname, for example btcpay.example.com. Use a reverse proxy for HTTPS when exposing BTCPay outside your LAN.

Target
BTCPAY_HOST
Root PathVariable

BTCPay root path when served from a subpath. Use / for normal deployments.

Target
BTCPAY_ROOTPATH
Default
/
Value
/
Postgres ConnectionVariable

Required Postgres connection string for the BTCPay Server database.

Target
BTCPAY_POSTGRES
Default
User ID=postgres;Host=postgres;Port=5432;Application Name=btcpayserver;Database=btcpayservermainnet
Value
User ID=postgres;Host=postgres;Port=5432;Application Name=btcpayserver;Database=btcpayservermainnet
Explorer Postgres ConnectionVariable

Required Postgres connection string for NBXplorer data, used by BTCPay to read explorer state.

Target
BTCPAY_EXPLORERPOSTGRES
Default
User ID=postgres;Host=postgres;Port=5432;Application Name=btcpayserver;MaxPoolSize=80;Database=nbxplorermainnet
Value
User ID=postgres;Host=postgres;Port=5432;Application Name=btcpayserver;MaxPoolSize=80;Database=nbxplorermainnet
BTC Explorer URLVariable

Required NBXplorer URL for Bitcoin, for example http://nbxplorer:32838/ on a custom Docker network or http://UNRAID-IP:32838/.

Target
BTCPAY_BTCEXPLORERURL
Default
http://nbxplorer:32838/
Value
http://nbxplorer:32838/
Docker Deployment ModeVariable

Marks this BTCPay instance as Docker-deployed. Use true or false.

Target
BTCPAY_DOCKERDEPLOYMENT
Default
true
Value
true
No Default ChainVariable

Prevents BTCPay from assuming a chain without explicit chain variables. Use true or false.

Target
BTCPAY_NODEFAULTCHAIN
Default
true
Value
true
Update URLVariable

Release URL used by BTCPay to check for new versions.

Target
BTCPAY_UPDATEURL
Default
https://api.github.com/repos/btcpayserver/btcpayserver/releases/latest
Value
https://api.github.com/repos/btcpayserver/btcpayserver/releases/latest
Debug LogVariable

Debug log filename under the BTCPay data directory.

Target
BTCPAY_DEBUGLOG
Default
btcpay.log
Value
btcpay.log
Lightning ConnectionVariable

Optional Bitcoin Lightning connection string. For example, type=clightning;server=unix://etc/clightning_bitcoin/lightning-rpc, or leave blank to configure later in BTCPay.

Target
BTCPAY_BTCLIGHTNING