Skip to content

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.

In each format, replace {bolt11Invoice} with the complete BOLT11 invoice string from Voltage. Do not include the surrounding braces.

WalletLink formatNetwork
Cash Apphttps://cash.app/launch/lightning/{bolt11Invoice}Mainnet
Strikestrike:{bolt11Invoice}Mainnet
Voltage demo wallethttps://demo.wallet.voltage.cloud/launch/lightning/{bolt11Invoice}Mutinynet
Any Lightning walletlightning:{bolt11Invoice}Depends on the wallet

Use the invoice itself in the Cash App, Strike, and demo wallet formats, without a lightning: prefix.

  1. Generate a Lightning invoice using a Voltage wallet on the network the destination wallet supports. See Receiving for the invoice creation flow.
  2. Build the link using the format for that wallet.
  3. 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.

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.

  1. In your staging or development environment, generate an invoice using a Mutinynet Voltage wallet.
  2. Link to https://demo.wallet.voltage.cloud/launch/lightning/{bolt11Invoice}.
  3. In production, switch the origin to https://cash.app and 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.

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.

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.