Developer Guide
Wallet Deep Linking
When you display a Lightning invoice in your application, you can offer links such as Pay with Cash App or Pay with Strike so customers can open the invoice directly in their wallet.
Voltage’s Checkout (Beta) already handles Cash App links for you. If you build your own payment interface, you can create these links using a Lightning invoice generated by Voltage. Hosted checkout is not required.

Link formats
Section titled “Link formats”In each format, replace {bolt11Invoice} with the complete BOLT11 invoice string from Voltage. Do not include the surrounding braces.
| Wallet | Link format | Network |
|---|---|---|
| Cash App | https://cash.app/launch/lightning/{bolt11Invoice} | Mainnet |
| Strike | strike:{bolt11Invoice} | Mainnet |
| Voltage demo wallet | https://demo.wallet.voltage.cloud/launch/lightning/{bolt11Invoice} | Mutinynet |
| Any Lightning wallet | lightning:{bolt11Invoice} | Depends on the wallet |
Use the invoice itself in the Cash App, Strike, and demo wallet formats, without a lightning: prefix.
Add the link to your application
Section titled “Add the link to your application”- Generate a Lightning invoice using a Voltage wallet on the network the destination wallet supports. See Receiving for the invoice creation flow.
- Build the link using the format for that wallet.
- Use the resulting URL for a Pay with… link in your payment interface.
For example, once your application has the invoice:
function createCashAppLink(bolt11Invoice) { return `https://cash.app/launch/lightning/${bolt11Invoice}`;}
function createStrikeLink(bolt11Invoice) { return `strike:${bolt11Invoice}`;}
// bolt11Invoice is the complete mainnet invoice generated by Voltage.const cashAppLink = document.createElement("a");cashAppLink.href = createCashAppLink(bolt11Invoice);cashAppLink.textContent = "Pay with Cash App";
const strikeLink = document.createElement("a");strikeLink.href = createStrikeLink(bolt11Invoice);strikeLink.textContent = "Pay with Strike";
document.body.append(cashAppLink, strikeLink);Keep the invoice and its QR code available for customers who want to pay with another Lightning wallet.
Test with the Voltage demo wallet
Section titled “Test with the Voltage demo wallet”Cash App only supports mainnet. Mutinynet invoices cannot be paid through the Cash App link.
To test deep linking without spending real bitcoin, use the Voltage demo wallet. It accepts the same /launch/lightning/{bolt11Invoice} path as Cash App, but pays Mutinynet invoices.
- In your staging or development environment, generate an invoice using a Mutinynet Voltage wallet.
- Link to
https://demo.wallet.voltage.cloud/launch/lightning/{bolt11Invoice}. - In production, switch the origin to
https://cash.appand use mainnet invoices. The rest of the link stays the same.
// Use the demo wallet with Mutinynet invoices outside production.const walletOrigin = environment === "production" ? "https://cash.app" : "https://demo.wallet.voltage.cloud";
const walletUrl = new URL(`/launch/lightning/${bolt11Invoice}`, walletOrigin);The demo wallet asks signed-out users to sign in, then returns them to the same invoice. The user reviews the invoice and taps Pay to send it.
General Lightning links
Section titled “General Lightning links”You can also use lightning:{bolt11Invoice} as a general-purpose link that opens any Lightning wallet installed on the customer’s device.
Results vary by device and platform. For example, iOS usually opens the most recently installed Lightning wallet instead of letting the customer choose one. Where possible, offer wallet-specific links alongside the invoice and QR code.
Confirm payment
Section titled “Confirm payment”Opening a link does not mean the invoice has been paid. Verify completion on your server through the Voltage API or Webhooks before marking an order as paid or delivering a product.