I first came across BTCPay Server in very early days, I remember seeing the now famous tweet which effectively announced the project. In 2018 I’ve even tried to get Bitstamp, my employer at the time, to support BTCPay Server and integrate Bitstamp as an offramp for merchants. Sadly that never went anywhere, but it was when I first talked to (yes, we had a voice call like neandarthals) everyones favorite uncle. Tho it was another year before we actually meet in person - over lots of rakija one night in Room 77, celebrating The Lightning Conference in Berlin. The glory days. The moment we all thought lightning network will eat everything.

Since then I ran many btcpay instances. I’ve even given some shit to rockstar and his bash-fu at some point after Berlin. But it has been only now, more than 7 years later, that I’ve finally developed something for BTCPay server. It was Breez’s time2build hackathon that finally kicked me in the ass.

I’ve been asked how to accept LN payments many times. Its also a question that tends to be very annyoing to answer because it always starts with “it depends on..”. BTCPay is obviously a suggestion that comes up a lot, specially when people want to have a bit more functionality. And similarly than lnbits, btcpayserver is also taking the kitchen sink approach with functionality. It has a lot of it. Theres plugins for nostr, podcast hosting and serving the whitepaper. And everything else in between. But its also quite heavy to run. You need a bitcoind (technically you can use a remote one if you already run it somewhere else), nbxplorer, database, app server, database, lightning node etc. It adds up. Its also annoying to use at first start.

First you’ll need to wait for the bitcoind to sync. If you’re using external one then you’ll at least need to wait for LN node to sync. Then you’ll need to open or buy some channels. Swap out to get some inbound liquidity. After all of that you can start accepting payments. You are very sovereign that way, but its a lot of work. Specially if you just want to accept some payments here and there. Or if you don’t really enjoy managing infrastructure and your lightning node. Because the point of payments is to accept payments, not to manage infrastructure.

Which brings us to why did I even bother making a plugin for BTCPay Server in the first place. I wanted something lightweight to suggest to people who want to accept occasional donation for their project, or sell the odd t-shirt or coffee. Something that just works, with minimal setup and maintenance.

And thats where Breez comes in. I’ve been a fan of nodeless approach Breez has taken from the start. Which is kinda funny because I’m also the guy who started a lightning node management company. Or maybe its because of that, who knows. I’ve experimented with the first edition of nodeless sdk, built some proof of concepts and even a small woocommerce compatible api. One that could replace btcpayserver for this exact purpose. But you still needed to run it somewhere, and the swaps complicated things a bit. So when Breez announced time2build hackathon I thought its the perfect opportunity to burn some tokens and pretend I know C#.

And here it is - BTCPay Server Breez Nodeless Lightning backend. A lightweight backend to accept lightning payments in your BTCPay server. No liquidity management, no deployment of your own funds to be able to accept payments. No waiting for nodes to sync. Deploy and start accepting payments immediately. Its still under heavy development so expect things to improve and more features to come. But its already usable for basic payments. Automated treasury management is coming soon so you’ll be able to sweep out funds to your cold wallet (or a different lightning node) when the balance on spark wallet reaches a threshold. Yes, it uses Spark’s statechain so the risk profile is different than running your own node. But risk is about tradeoffs. And risks can be managed. For starters its much better than using a fully custodial kyc’d solution. Which is what many people end up doing when they want to accept LN payments without running their own node. I think enabling more people to accept LN payments with a lightweight solution is a net positive for bitcoin and bringing as many possible solutions for different use cases is a good thing. Bitcoin is for payments. Lets make it easy to accept them.