Payment Link Flow
No code. Create a product, share a link, get paid in Bitcoin.
Flow Overview
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.
Sequence Diagram
Step-by-Step Detail
Merchant Setup
Log In & Create Product
The merchant logs into the SatsRail Dashboard and navigates to Products → Create Product. They fill in:
- Product name: displayed on the checkout page (e.g., "Monthly Subscription")
- Description: shown below the product name
- Price (USD): the fiat amount to charge (converted to sats at payment time)
- Image: optional product image displayed on checkout
Connect Lightning Wallet
The merchant connects their Lightning wallet to receive payments directly. Supported connection methods:
- LNDHub: Compatible with BlueWallet, Zeus, and others
- LNURL: Universal Lightning address (e.g., user@wallet.com)
- Connection string: Direct LND/CLN node connection
Get Payment Link
SatsRail generates a unique product slug and payment link:
https://satsrail.com/pay/prod_abc123def456
The dashboard also provides:
- QR code: downloadable QR code encoding the payment link URL
- Embed snippet:
<script>tag for embedding a pay button on any website
Distribute the Link
The merchant shares the payment link through any channel:
- Email / SMS: Paste the URL directly
- Social media: Post on Twitter, Instagram, etc.
- WhatsApp / Telegram: Share in chat
- Printed QR: Print the QR code for in-store or event use
- Website: Add as a simple hyperlink
Customer Payment
Customer Opens Link
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.
Customer Info
If the merchant configured customer info collection:
- Customer fills in email, name, phone, and/or shipping address (as configured)
If no customer fields are configured, this step is skipped entirely — straight to QR code.
Invoice Generated & QR Displayed
SatsRail converts USD → sats at the real-time exchange rate, requests a Lightning invoice from the merchant's wallet, and displays:
- Product name, description, and image
- Price in USD and sats
- QR code encoding BOLT-11 invoice
- Copy button for desktop wallets
- 15-minute countdown timer
Customer Pays via Lightning
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.
Confirmation
The checkout page updates to show "Paid ✓". Based on configuration:
- Redirect to merchant's custom success URL
- Show a receipt with transaction details
- Trigger digital delivery (download link, license key, etc.)
Webhooks fire asynchronously if configured. Transaction is logged in the merchant's dashboard with amount, timestamp, exchange rate, and payment hash.
Error Paths
| 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 |
Start selling with a link
Create a product, share the URL, and accept Bitcoin — zero code required.