No code. Create a product, share a link, get paid in Bitcoin.
The Payment Link is the simplest SatsRail integration — zero code. A merchant creates a product in the dashboard, gets a shareable URL (
satsrail.com/pay/your-product
), and distributes it anywhere. When a customer opens the link, a checkout session is auto-created and they pay via Lightning. Funds settle directly to the merchant's wallet.
The merchant logs into the SatsRail Dashboard and navigates to Products → Create Product. They fill in:
The merchant connects their Lightning wallet to receive payments directly. Supported connection methods:
SatsRail generates a unique product slug and payment link:
https://satsrail.com/pay/prod_abc123def456
The dashboard also provides:
<script> tag for embedding a pay button on any websiteThe merchant shares the payment link through any channel:
Customer clicks the link or scans the QR code. The browser navigates to
satsrail.com/pay/prod_abc123. SatsRail looks up the product by slug, validates it's active, and auto-creates a CheckoutSession. The customer is redirected to the checkout page.
If the merchant configured customer info collection:
If no customer fields are configured, this step is skipped entirely — straight to QR code.
SatsRail converts USD → sats at the real-time exchange rate, requests a Lightning invoice from the merchant's wallet, and displays:
Customer scans the QR with their wallet app, copies the invoice to a desktop wallet, or pays via WebLN browser extension. Payment routes through Lightning channels and settles instantly to the merchant's wallet.
The checkout page updates to show "Paid ✓". Based on configuration:
Webhooks fire asynchronously if configured. Transaction is logged in the merchant's dashboard with amount, timestamp, exchange rate, and payment hash.
| Error | Trigger | User Experience | Recovery |
|---|---|---|---|
| 404 Not Found | Product slug doesn't exist or product is deactivated | Customer sees a "Product not found" error page | Merchant reactivates product or shares correct link |
| Wallet Disconnected | Merchant's Lightning wallet connection is broken or expired | Customer sees "Merchant cannot receive payments at this time" | Merchant reconnects wallet in Dashboard settings |
| Invoice Expired | 15-minute countdown reaches zero | Checkout shows "Expired" with option to regenerate | Customer clicks "Generate New Invoice" — new rate applied |
| Routing Failure | No Lightning route to merchant's node | Error shown on checkout page | Customer retries payment |
Create a product, share the URL, and accept Bitcoin — zero code required.