Card paywalls cannot sell a $0.60 article unlock. The fees eat it, and the reader needs an account, a card, and patience. Lightning fixes the math: a payment of 1,000 sats settles in seconds, costs almost nothing to receive, and needs no reader account at all.
This guide sets up a real per-article paywall on WordPress using the Coinsnap Bitcoin Paywall plugin. It is the exact stack we shipped on NeverLoseBitcoin for a paid research report: 1,000 sats unlocks the full article for 24 hours. No BTCPay server required, no code, about 20 minutes end to end.
What you need
- A WordPress site where you can install plugins
- An email address for the Coinsnap account
- A Lightning address to receive payouts (for example a Coinos, Wallet of Satoshi, or Alby address). If your wallet gives you an address that looks like an email, you have one.
Step 1: Create the Coinsnap account and store
Coinsnap is the payment gateway behind the plugin. It creates the Lightning invoices, watches for payment, and forwards the money to your Lightning address.
- Register at coinsnap.io. Sign-up is passwordless: you log in with a code sent to your email.
- Create a store. You give it a name (ours is "Never Lose Bitcoin") and enter the Lightning address where payouts should land. Every paywall payment is forwarded to that address.
- In the store settings, copy the Store ID and the API key. You will paste both into WordPress in the next step.
That is the whole backend. There is no server to run, which is the main reason to pick Coinsnap over a self-hosted route. If you already run a BTCPay Server, keep it in mind for step 2, because the plugin supports it as an alternative gateway.
Step 2: Install and connect the plugin
- In WordPress, go to Plugins, Add New, and search for "Coinsnap Bitcoin Paywall". Install and activate it (we run v1.3.2).
- Open the plugin settings and choose your payment gateway: Coinsnap or BTCPay Server.
- With Coinsnap selected, paste the Store ID and API key from step 1 and save. The plugin can now create invoices against your store.
Step 3: Create a paywall and get the shortcode
A paywall is a reusable price tag. You create it once and drop it into any post.
In the plugin's paywall section, create a new paywall and set:
- Name: internal only, so make it descriptive ("Report unlock, 24h")
- Description: internal notes for you or your editors
- Button text: what the reader sees, for example "Unlock for 1,000 sats"
- Price: we set 1,000 sats
- Currency: the unit the price is displayed in
- Activation duration: how long one payment unlocks the content. We set 24 hours
- Color scheme: light or dark, to match your theme
Save it, and the plugin gives you a shortcode:
[paywall_payment id="2241"]
(The ID will differ. Use yours.)
Step 4: Place the shortcode in your article
Write your article as usual, then place the shortcode at the exact point where free ends and paid begins. Everything after the shortcode is locked until the reader pays. Everything before it is your preview.
Placement is the whole game. On the Custody Anxiety Index report, the introduction and the first finding are free, and the paywall sits right after them. The reader has seen enough real substance to know the rest is worth 1,000 sats, and not a paragraph more.
You can use the same paywall shortcode in as many posts as you like, or create different paywalls with different prices and durations for different content types.
Step 5: Test it like a reader
Do not trust the logged-in view. WordPress shows admins everything, and caching plugins can lie to you in both directions.
- Open the article in a private window, logged out.
- Confirm the preview shows and the rest of the article is hidden.
- Click the pay button. You land on a payment page showing the amount in sats and a QR code.
- Pay with any Lightning wallet and watch the article unlock.
- Revisit the article later in the same window and confirm your access lasts for the full duration you set.
We ran exactly these checks on the live report before announcing it. The anonymous view is the only view that counts.
How it works under the hood
The flow is simple, which is why it is robust:
- The reader clicks pay, and the plugin asks Coinsnap for an invoice for your store.
- Coinsnap shows a payment page with the amount and a Lightning QR code.
- The reader pays from any Lightning wallet. No account, no card, no personal data.
- Coinsnap detects the settled payment and tells the plugin, which unlocks the content for that reader for the configured duration.
- The sats are forwarded to the Lightning address on your store. On our setup, that is a Coinos address, so the money lands in a wallet we control.
Readers never touch your site's user system, and you never touch card data. The paywall is a payment check, not a membership system.
Gotchas from a real deploy
- Preview length is a pricing decision. Too short and nobody pays. Too long and nobody needs to. One strong section free worked for us.
- Test the expiry, not just the unlock. If your duration is wrong, your best readers find out before you do.
- Watch your page cache. Aggressive full-page caching for anonymous visitors can serve a locked reader the unlocked version or the reverse. Exclude paywalled posts if yours misbehaves.
- Price in sats, think in seconds. The reader's decision is impulse-sized. If paying takes longer than reading the preview, the funnel is broken.
The result
The report at the top of this guide is live with this exact setup: https://neverlosebitcoin.com/custody-anxiety-index/
Introduction and first finding free, then a 1,000 sat paywall, 24 hours of access, payouts straight to a Lightning address. Total infrastructure: one WordPress plugin and one gateway account.
Resources
- Plugin: Coinsnap Bitcoin Paywall on wordpress.org (https://wordpress.org/plugins/coinsnap-paywall/)
- Source code and docs: https://github.com/Coinsnap/Coinsnap-Paywall
- Coinsnap: https://coinsnap.io
- Live example: https://neverlosebitcoin.com/custody-anxiety-index/
- Companion guide on Lightning News: How to Accept Bitcoin Donations (https://lightning.news/how-to-accept-bitcoin-donations/)
If you publish writing behind a card paywall today, try one article on Lightning. The first time a reader unlocks your work in five seconds from another continent, with no account and no card, the old model starts to look very heavy. And if a paywall is more than your content needs, the same stack takes donations instead: Lightning News walks through that setup in its guide to accepting Bitcoin donations, linked above.










Top comments (0)