Last week I shipped a small button with a green outline and the text "Pay with Bitcoin" on PythonStarter. On the surface it doesn't look like a big change.
But underneath the apparent simplicity, there is a lot more going on than meets the eye.
Watch my demo video to see Bitcoin Lightning payments in action:
The Strike API integration, webhook handling (for the paywall), edge cases around failed payments and timeouts, and the UX of guiding a customer through the QR scan and Lightning confirmation stages.
None of this is simply "let an AI write it for me". Modern AI coding tools help, but you still need real UI and UX judgement to make a payment flow feel trustworthy.
But, the reason I built it has very little to do with the button or even the complex backend code operating behind the scenes. It has to do with two groups of customers that traditional checkout flows quietly lock out.
The first group: roughly 1.4 billion adults
Around 1.4 billion adults worldwide are unbanked, and many more can't get a credit card that works for international purchases.
If your customer is a developer in Argentina dealing with capital controls, or a freelancer in Nigeria where international card auth routinely fails, or someone in a country where Stripe simply doesn't operate — your "global" SaaS isn't really global. It's a SaaS for people who happen to live where the card networks work well.
Bitcoin's Lightning network closes that gap. Anyone with a Lightning wallet — including huge and growing populations in Latin America, Africa, and Southeast Asia — becomes a potential paying customer. You also pick up the cohort of people who actively want to pay in Bitcoin: technical, early-adopter, often exactly the audience for indie developer tools.
The second group: AI agents
This is the one I didn't even fully realise until I shipped the feature.
AI agents can't pass KYC. They can't open a bank account. And they can't be issued a credit card. Every payment rail built since the 1970s assumes the customer is a human being with a passport and a verifiable address.
Bitcoin's Lightning network makes none of those assumptions. A wallet is just a public / private key pair. Give an agent a wallet with some sats in it, and the agent can autonomously pay for products and services on the open internet — research APIs, code execution, hosting, datasets, digital tools, whatever it needs to finish a task.
For indie founders and developers, this is powerful. The next generation of "customers" may not be humans with credit cards. They may be agents acting on behalf of humans, with budgets attached, transacting in real time. If your checkout requires a card and a billing address, you're invisible to that entire layer of demand. If you accept Lightning, you're already there.
This isn't speculative — it's already starting. Anthropic's MCP and the broader agentic ecosystem are pushing toward agents that can transact.
Bitcoin Lightning is the path of least resistance for machine-to-machine micropayments. You can easily send 1 cent or even less between Lightning wallets, but you can't do that on Stripe or other credit card processors as there is a 30/40 cent minimum fee.
How the feature works
First I decided to keep the price stays listed in dollars. USD is still the global unit of account, and humans and agents alike understand it intuitively.
When the customer clicks "Pay with Bitcoin," they get a QR code — or, for an agent, a Lightning invoice string. They open any Lightning wallet, scan or pay the invoice, and approve. The payment confirms in a few minutes over the Lightning Network — fast and cheap, even for tiny amounts. In my test runs I was sending payments of about 1 cent — roughly 19 sats.
I built it on the Strike API, which handles the conversion automatically. By default the funds land in my Strike account in GBP, since I'm in the UK — but that's fully configurable. You can take 50/50 GBP and Bitcoin, or 100% Bitcoin if you'd rather stack sats. That's your call.
The build itself was not trivial. The Strike API has its own surface area — invoice creation, currency targeting, switching between test and live environments, signing. The webhook layer was harder still: verifying events, handling races where the customer is still on the QR screen, unlocking the product, and creating the customer's account before they've signed in. Plenty of edge cases.
And on top of that, the user-facing flow — what the customer sees while the payment settles, what happens if they navigate away, how they recover their account afterward — is exactly the kind of UX that AI tools don't get right on their own.
The takeaway
Most indie devs assume the checkout flow is "solved." Stripe handles it. Move on.
But the moment you accept Bitcoin Lightning, your customer base shifts — to the billion-plus adults the card networks ignore, and outward, to the rapidly growing population of AI agents that need to pay for things and have no other way to do it.
If you're shipping a digital product in 2026 and you haven't seriously considered Bitcoin Lightning as a payment option, it's worth a fresh look — for the reach and for the differentiation.
If you'd like a head start, PythonStarter is a secure Flask foundation with login / auth, Stripe, Postgres, and S3 already wired up — and now an optional Bitcoin Lightning checkout via Strike, including the webhook logic, QR generation, and product-unlock pattern. So instead of building all of this from scratch, you can drop it in and ship.