BTCPay Server: accept bitcoin payments with no middleman
A free payment processor you host yourself, with every payment landing in a wallet only you control.
BTCPay Server is a free, open-source, self-hosted Bitcoin payment processor released under the MIT license. It creates invoices, runs a point of sale, and plugs into WooCommerce and Shopify, while payments go to your own wallet and not to a company. You connect that wallet with its extended public key (xpub) from a hardware wallet, so the server never holds a private key. The software costs nothing, and you pay for hosting and your own time to run it.
What BTCPay Server does, and who it is for
Most payment processors sit between you and your customer, take a fee, and hold the money for a while. BTCPay Server removes that middle step. Its FAQ calls it a non-custodial invoicing system and says the project community does not hold or have access to the funds of any store using the software. There are no subscriptions and no transaction fees. For a bitcoiner, that is the point: no processor holds your funds or sees your sales.
It fits a small shop, a freelancer who invoices clients, or a site that takes donations. The Apps section covers a web-based point of sale for a counter or market stall, a crowdfunding page, and embeddable payment buttons for tips and donations. For online stores there is a WooCommerce plugin and a Shopify integration.
For a few payments a year, a plain wallet address is simpler. BTCPay Server earns its keep when each customer needs a separate invoice.
Where the money goes: a wallet you control
BTCPay Server only needs your wallet's extended public key to produce a fresh address for each payment. An xpub can generate addresses and watch for payments but cannot spend anything, so the server runs as a watch-only wallet. The FAQ says private keys are not required to use BTCPay with an existing wallet, and that even if your server is hacked, your on-chain funds stay safe. The exceptions are a hot wallet on the server and a Lightning node running there.
That gives one rule for this guide: never put a seed phrase on the server. When you set up a store, BTCPay offers to create a new wallet, and if you enable it as a hot wallet it signs with a seed stored on the server. I would skip that option for anything beyond testing.
Instead, connect a hardware wallet. BTCPay has built-in hardware wallet support through the BTCPay Vault app, and the docs say your private keys never leave the device. If your wallet is Sparrow, the docs have a PSBT walkthrough: create the spend in BTCPay, sign it in Sparrow with your hardware wallet, then broadcast. My Sparrow guide covers the wallet side.
If you add an xpub by hand, make sure the account key path matches your wallet. The docs warn that a wrong path means you will not be able to spend.
Where to host it
BTCPay Server is a web app that has to stay online and reachable by your customers. The deployment page lists the routes. They differ mainly in who controls the machine.
| Option | What it is | Trade-off |
|---|---|---|
| Your own node on StartOS or umbrelOS | A one-click app, BTCPay Server on the Umbrel App Store, and a StartOS package that needs your Bitcoin node running | Easiest if you already run a node, but a home server is not reachable from outside. Umbrel says remote apps such as Shopify or WordPress fail to connect unless you set up BTCPay's dynamic DNS feature |
| A VPS with the official Docker deployment | A rented Linux server running the official Docker setup, with HTTPS handled for you | Reachable from anywhere. Your server is on the public internet and you maintain it |
| A third-party host | Someone else runs the server and gives you a store on it | Least work, most trust. See the warning below |
I'd pick your own node if you already run a Bitcoin node (see Start9 vs Umbrel), and a VPS if the shop must be online from day one.
The docs say hosts can act as a custodian if you use a hot wallet on their server, and that a malicious host could swap your xpub for its own so that later payments go to the host. Use xpub-only wallets and treat third-party hosting as a way to test and learn. If a host asks for a private key or pre-generates one for you, it is a scam. If orders show as paid but nothing arrives in your wallet, the addresses were replaced.
Setting up BTCPay Server on a VPS
The standard deployment bundles BTCPay Server, PostgreSQL, NBXplorer, Bitcoin Core, Nginx with automatic HTTPS, and Tor. Check the server specifications first: as of November 2026, a small Bitcoin-only, pruned setup is listed with a starting point of 4 GB of RAM, 2 virtual cores, and 50 GB of SSD, and that storage figure is a bare minimum. For the current commands, follow BTCPay's Docker installation guide.
- 1Rent a Linux VPS sized to those specs and point a domain name at it. Automatic HTTPS needs DNS records for your domain pointing to the server and the web ports open to the internet.
- 2Run the official setup on the server for a Bitcoin-only deployment on mainnet, with Lightning off, your domain, and a storage-saving (pruned) option. It installs what is missing, registers BTCPay Server to start at boot, and starts the services.
- 3Open your domain in a browser and register the first account right away. It becomes the server administrator, so do not leave a fresh install sitting unclaimed.
- 4Wait for Bitcoin Core and NBXplorer to finish syncing, which the BTCPay interface shows, before you accept a payment.
- 5Create a store, connect your hardware wallet or xpub, and make a small test invoice that you pay yourself.
The StartOS and Umbrel routes skip most of this: install the app, open it, and make the first account and store.
Altcoin plugins and Lightning
BTCPay Server is Bitcoin-first, and its altcoin FAQ says Bitcoin is the only focus of the project and its core developers. Other coins are opt-in integrations that their own communities maintain. This site recommends Bitcoin-only setups, and so do I: leave every altcoin plugin off. Most altcoins are scams, and each one is more attack surface on a server that faces the internet.
Lightning is optional and the setup above turns it off. The docs lay out custodial services, Boltz swaps, Liquidity Service Providers, or your own node, and say that running your own means you manage channels and liquidity. A custodial Lightning service puts funds at risk if the provider goes bankrupt or runs off with them. I would start with on-chain payments only. The backup docs warn that broadcasting a revoked (old) channel state can lose all funds in that channel.
What it costs, and the honest risks
The software is free. You pay for hosting and spend your own time. The deployment page puts a VPS at $10 to $70 a month depending on the provider, and its LunaNode guide quotes about US$15.80 a month for a server running Bitcoin and Lightning. A home node you already own adds electricity and nothing else.
- A public-facing server is an attack target. The 2.4.7 release notes list 85 security findings fixed, one of them rated critical, so apply updates promptly.
- The first account is the administrator. Register it the moment the install finishes.
- Back up before you rely on it. The backup script leaves out blockchain data and archives the app's data volumes, generated secrets, and database dumps.
- Keep seeds off the server. A hot wallet or a Lightning node on the box is where the "safe even if hacked" promise ends.
- Taxes and accounting are on you. A sale paid in bitcoin is still a sale, so keep records and ask a tax professional how your country treats it.
- If the server is offline, customers cannot pay.
Frequently asked questions
Is BTCPay Server free?
Yes. It is MIT-licensed open-source software with no subscription and no transaction fees. You pay for the server it runs on, and your time.
Is BTCPay Server custodial?
No. The project says it is a non-custodial invoicing system, and payments go to a wallet you connect. A third-party host or a hot wallet on the server changes that, so connect a hardware wallet by xpub instead.
Do I need to run a Bitcoin node to use BTCPay Server?
The Docker deployment includes its own Bitcoin Core node, and the StartOS package needs your Bitcoin node running. As of November 2026, a pruned Bitcoin-only setup is listed at 4 GB of RAM and 50 GB of SSD. A third-party host runs the node for you, with the trust that adds.
Can I use BTCPay Server with a hardware wallet?
Yes. BTCPay has built-in hardware wallet support through the BTCPay Vault app, and the docs say private keys never leave the device. You can also add your xpub by hand and sign PSBTs elsewhere, such as in Sparrow.
Does BTCPay Server work with Shopify and WooCommerce?
Yes. As of November 2026, WooCommerce uses the BTCPay for WooCommerce V2 plugin, which needs PHP 8.0 or newer. Shopify needs at least a Basic plan, a free Shopify Partner account, and BTCPay Server 2.0.6 or later.