Accept Bitcoin with your Lightning Address combines two Lightning features in one plugin:
- WooCommerce Lightning payments. A checkout gateway that pays to your merchant Lightning Address using LNURL-pay, verifies settlement server-side with LUD-21, optionally detects payment faster in the browser via NIP-57 zap receipts and WebLN, and converts fiat order totals to sats using Yadio exchange rates.
- Lightning Address / NIP-05 discovery. Keeps your root domain on WordPress while a separate
LaWallet instance serves wallet discovery: the plugin registers rewrite
rules for the relevant
/.well-known/routes and redirects them (HTTP 307) to the LaWallet gateway you configure.
Payments: how an order is processed
- At checkout the plugin resolves your merchant Lightning Address (LNURL-pay) and requests an invoice for the order total.
- The customer pays by scanning a QR code, opening their wallet via a
lightning:link, or using WebLN. - Your server confirms settlement with the LUD-21
verifyURL before the order is marked paid. Zap receipts and WebLN only speed up detection in the browser – they never settle an order by themselves. - Pending Lightning orders are re-checked by WordPress cron; expired unpaid invoices cancel the order automatically.
- For non-BTC store currencies, order totals are converted using Yadio BTC exchange rates, or a manual sats-per-unit rate you set yourself.
Discovery: which requests are redirected
Only the wallet discovery routes under /.well-known/ are touched (for example
/.well-known/lnurlp/… and /.well-known/nostr.json). They are redirected with HTTP 307
(method-preserving) to the LaWallet gateway endpoint you configure under
Settings -> LaWallet. The endpoint is verified before discovery is enabled.
External services
This plugin talks to the following external services. No data is sent anywhere until you configure the related feature.
Your merchant Lightning Address endpoint (LNURL-pay)
When a customer checks out, the plugin contacts the LNURL-pay endpoint of the Lightning Address
you configured (the domain after the @ of your own address) to request an invoice for the order
amount, and later calls its LUD-21 verify URL to confirm settlement. Order amounts and invoice
identifiers are sent. The terms of that service are the ones of your own wallet provider.
LaWallet gateway
If you enable discovery, requests to your site’s /.well-known/ wallet discovery routes are
redirected to the LaWallet gateway endpoint you configure, and the plugin probes
/.well-known/lawallet.json on that endpoint to verify it. See the
LaWallet terms and privacy policy.
Yadio exchange rates
For stores not priced in BTC, the plugin converts the order total to satoshis using a Bitcoin
exchange rate from Yadio, a free public rate API. It sends a single server-side
GET request to https://api.yadio.io/rate/{CURRENCY}/BTC whenever a fresh rate is needed, where
{CURRENCY} is your WooCommerce store currency code (for example USD or ARS). Results are
cached for 5 minutes. Only that three-letter currency code is sent – no customer, order, account,
or site data ever leaves your server.
This request is optional. Stores priced in BTC/SAT need no conversion, and any store can avoid Yadio entirely by setting a fixed “manual sats-per-unit” rate in the gateway settings.
Yadio is a free, public, no-account API. Because the request is made from your server, Yadio receives your store server’s IP address (which, per its privacy policy, it logs to monitor for abuse) and the three-letter currency code – nothing else. This service is provided by Yadio; see the Yadio terms of service and privacy policy. Yadio’s role as the rate provider for the LaWallet ecosystem is also disclosed in the LaWallet privacy policy.
Nostr relays (optional)
If your wallet provider supports NIP-57 zap receipts, the customer’s browser subscribes to the Nostr relays advertised by the wallet to detect payment faster. Only the public invoice/zap request data is exchanged. Relays are operated by third parties chosen by your wallet provider.
