BLOG |
Blink announcements
Add Bitcoin Lightning to your WooCommerce checkout with a custodial API key or, now, with a non-custodial Blink Lightning address where you hold the keys.
WooCommerce runs more than four million live online stores, more than any other platform. Our Blink for WooCommerce plugin has been giving those stores a way to accept Bitcoin at checkout since 2024: Lightning as a payment option next to bank transfer, PayPal, Stripe, or whatever else is in there, with no server and no node to run. The customer picks Lightning, an invoice gets generated for their cart, they pay it, and when the payment is confirmed WooCommerce puts the order into the paid state and marks it ready for processing. That’s the whole idea.
What’s new is that this now works with a non-custodial Blink account. You select non-custodial from the dropdown, enter your Blink Lightning address, and the sats from every sale go straight into your own wallet. We never touch them.
I want to explain why we built the plugin, what is actually different between the two account types, why it only works with a Blink address, what doesn’t work yet, and then walk through the setup for both paths.
Same reason we built the donate button: put Lightning where people already are. E-commerce is dominated by a handful of platforms. The majority of shops use WooCommerce, and the rest use Shopify, PrestaShop, Joomla, or similar. WooCommerce is open source, we’re open source, and there was no good Bitcoin Lightning option for its checkout.
If you already run a BTCPay Server, you’re covered: it has an excellent WooCommerce plugin, and we have a Blink plugin for BTCPay too. But BTCPay means running a server, or knowing somebody who runs one, and most shop owners don’t. This plugin is for them: a way to collect payments from your shop into your Blink account, with nothing to host.
We actually put out a bounty for it in December 2023. A few people tried, nobody finished, so in the end Juan Pablo (dolcalmi) on our team built it and put it on WordPress.org.
And digital commerce is where Bitcoin makes the most sense. For in-person transactions you have many solutions, cash most of all. But for digital commerce your options are basically credit cards and PayPal, which both require a bank account and come with tons of problems anyway. Bitcoin is digital money. Making it work in e-commerce has been an old ambition of Bitcoiners, and a checkout plugin for the most-used shop platform is a practical step toward it.
Until now, you needed an API key from your Blink account, and non-custodial accounts don’t have API keys. That’s not an oversight. An API key is a custodial thing: it lets a piece of software do something with funds we’re holding for you. With a non-custodial account we’re not holding anything, so there’s nothing for a key to act on. If you had migrated your account, you couldn’t use the plugin anymore.
Now you can. The plugin generates invoices through your Blink Lightning address instead of a key, shows the QR code on your own store, and confirms the payment itself. Your customer pays, the sats arrive in your account, and nobody sits in the middle.
Both paths put Lightning at your checkout. The difference is who holds the money and how the shop finds out it got paid.
With a custodial account, the plugin creates invoices through the Blink API, sends your customer to pay.blink.sv to complete the payment, and your Blink dashboard notifies your store by webhook when the payment settles. Blink holds the funds in your account, and you choose which wallet they land in: your Bitcoin Balance or your Dollar Balance.
With a non-custodial account, there’s no API key at all. The plugin works through your Blink Lightning address, renders the QR code on your own site, and confirms the payment on its own. You hold the keys, and payments arrive in sats.
People ask me if they can put a Wallet of Satoshi address in there, or some other wallet. The answer is no, and the reason is technical.
Generating an invoice from a public Lightning address is easy; anybody can do that. The problem is afterwards. When the customer has paid an invoice that was generated on behalf of the merchant, the shop needs to verify that the payment actually succeeded, and for that the wallet’s LNURL server has to implement LNURL verify (LUD-21). Blink implements it. Other wallets we can’t control and can’t guarantee, and Wallet of Satoshi is not open source, so we can’t even check. So the plugin is Blink-only.
The checking part is worth knowing about. The shop asks Blink in the background, again and again, whether the invoice got paid, for as long as the invoice is valid. If it can’t reach the server at that moment, it leaves the order pending instead of cancelling it, because from the shop’s side an unreachable server and an unpaid invoice look the same, and only one of them is a reason to turn a customer away.
That said, if there is an open-source developer out there who wants a project: a general Lightning WooCommerce plugin, one that works with every wallet that implements LNURL verify and not only Blink, would be a real contribution to the ecosystem. Our code is open. Go for it.
With a custodial account you can say where the received funds go, Bitcoin Balance or Dollar Balance, by wallet ID. With a non-custodial account you also have a Dollar Balance, but the plugin can’t route payments there directly yet. It needs a swap, and we’re not the swap provider, so it’s more complex to implement. Maybe later. For now, non-custodial means you receive sats.
If you want dollars anyway, there is a manual way. In the app, go to your Dollar Balance, generate a Lightning invoice, and pay it from your Bitcoin Balance. That moves it over. If you are doing a lot of sales you could automate that with the Breez SDK, and if somebody builds that and open-sources it, I would love to see it.
That’s the story. The setup is below, and after it the questions we get asked most.
This path skips the API key entirely.
1. Install the plugin. In WordPress admin, go to Plugins → Add New, search for “Blink for WooCommerce,” install, and activate.
2. Open the plugin settings in WooCommerce.
3. Select non-custodial from the account-type dropdown and enter your Blink Lightning address (for example, you@blink.sv). No key required.
4. Save, then enable “Pay with Bitcoin Lightning” under WooCommerce → Settings → Payments.
You’ll need a Blink account and a few minutes in the Blink dashboard to create an API key.
1. Install the plugin. In WordPress admin, go to Plugins → Add New and search for “Blink for WooCommerce.” Confirm it’s the one published by Blink, install it, and activate.
2. Open the Blink dashboard. In the plugin settings, click through to the Blink dashboard and sign in with your Blink account using your email or phone, plus your two-factor code. Keep the dashboard handy; you’ll come back to it.
3. Create a receive-only API key. In the dashboard’s API keys section, create a new key. Name it something like “WooCommerce,” and set its scope to read and receive only, not write, so it can accept funds but never send them. Copy the key immediately: Blink shows it once and you won’t see it again, so store it somewhere safe.
4. Paste the key into the plugin. Back in the WooCommerce plugin settings, paste your API key.
5. Pick your wallet. Choose the Bitcoin wallet if you want incoming funds to move with the Bitcoin price, or the Stablesats wallet if you want them to hold their dollar value. Save.
6. Enable the payment method. Go to WooCommerce → Settings → Payments and enable “Pay with Bitcoin Lightning.” Save, and Lightning now appears at your checkout.
From either path, a customer picks Bitcoin at checkout, scans the QR code with any Lightning wallet, and the order is marked paid once the payment lands. I would do a small test order first, just to see the sats land where you expect. If you’d rather watch it done, a shop in Curaçao recorded a full walkthrough: the Bitcoin Curaçao tutorial.
Your server needs WordPress 6.5 or higher, WooCommerce 9.0 or higher, and PHP 8.1 or higher, with the PHP cURL extension enabled. For troubleshooting and the full non-custodial walkthrough, see the merchant setup guide in the plugin repository.
Do I need an API key for a non-custodial account? No. API keys are a custodial feature on Blink. Non-custodial accounts connect with just your Blink Lightning address.
Can I use a non-Blink Lightning address, like Wallet of Satoshi? No, the plugin is Blink-only. The reason is the LNURL verify requirement covered above: not every wallet implements it, so payment confirmation can't be guaranteed with other providers.
Do I need to run a server or a Lightning node? No. Blink handles the Lightning side; you connect your account or address.
Do my customers need Blink? No. Any Lightning wallet can pay the invoice at checkout.
Which balance do payments land in? On a custodial account, you choose the Bitcoin Balance or the Dollar Balance (held in dollars with Stablesats). On a non-custodial account, payments arrive in Bitcoin.
Can I receive to my Dollar Balance on a non-custodial connection? Not yet. Non-custodial payments arrive in Bitcoin for now (see above for the manual route). It may be supported in the future.
Is the plugin open source? Yes. The code is on the plugin repository.
Get started: blink.sv/en/woocommerce
• Blink for WooCommerce landing page
• Blink for WooCommerce on WordPress.org
• Bitcoin Curaçao setup tutorial (video)
• Merchant setup guide (non-custodial)
• We Are Launching Non-Custodial Accounts for Blink Wallet
Start receiving and sending bitcoin now