Skip to content

Features

Wallet Payment Options

Offer Copy invoice on both mobile and desktop so customers can paste a Lightning invoice into their wallet. Provide a QR code as an optional way to transfer the same invoice.

Use a Lightning invoice generated by Voltage in your own payment interface, or use hosted Checkout.

You need a mainnet Lightning invoice and a Cash App account that can send Lightning payments. Cash App cannot pay Mutinynet invoices.

Keep Copy invoice available on every device. Let customers choose copying or scanning on both mobile and desktop.

  1. Select Copy invoice in checkout to copy the complete BOLT11 invoice string.
  2. Open Cash App and select Money → Bitcoin.
  3. Select the transfer arrows, then Send.
  4. Paste the invoice, review the payment details and available funding options, and confirm payment in Cash App.
  5. Return to checkout to check the payment status.

Copy the invoice string without a lightning: prefix or a wallet launch URL. Keep the full invoice selectable for customers who need to copy it manually.

After copying, show a message such as: “Invoice copied. Open Cash App, paste it into the Bitcoin send flow, and confirm payment.”

Cash App’s screen labels can vary by app version. See Cash App’s Bitcoin guidance for its current sending instructions.

If the invoice is visible on another screen, customers can open Cash App’s QR scanner and scan it. They then review the payment details and confirm payment in Cash App.

Encode the same complete BOLT11 invoice in the QR code that Copy invoice copies. Keep copying available alongside the QR code.

  1. Generate an invoice on the network your customer’s wallet supports. See Receiving.
  2. Show the amount, invoice expiration, and a Copy invoice button.
  3. Offer the full invoice as selectable text and an optional QR code.
  4. Show Waiting for payment until your server verifies receipt.

For example, once your application has the invoice:

// bolt11Invoice is the complete invoice generated by Voltage.
const invoice = document.createElement("textarea");
invoice.value = bolt11Invoice;
invoice.readOnly = true;
invoice.setAttribute("aria-label", "Lightning invoice");
const copyButton = document.createElement("button");
copyButton.type = "button";
copyButton.textContent = "Copy invoice";
const copyStatus = document.createElement("p");
copyStatus.setAttribute("role", "status");
copyButton.addEventListener("click", async () => {
try {
await navigator.clipboard.writeText(invoice.value);
copyStatus.textContent =
"Invoice copied. Open Cash App, paste it into the Bitcoin send flow, and confirm payment.";
} catch {
invoice.focus();
invoice.select();
copyStatus.textContent = "Copy the selected invoice manually.";
}
});
document.body.append(invoice, copyButton, copyStatus);

Clipboard access requires HTTPS or localhost and can be denied by the browser. The selectable invoice provides a manual fallback.

For wallets that support invoice links, you can offer a link alongside copying and the QR code. These links are optional and do not replace the Cash App instructions above.

Replace {bolt11Invoice} with the complete BOLT11 invoice string from Voltage. Do not include the surrounding braces.

  • Strike (mainnet): strike:{bolt11Invoice}.
  • Voltage demo wallet (Mutinynet): See Test with the Voltage demo wallet.
  • Other compatible Lightning wallets: lightning:{bolt11Invoice}. Network support depends on the wallet.

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

  1. Generate a Lightning invoice on the network the destination wallet supports.
  2. Build an optional link using a format supported by that wallet.
  3. Keep Copy invoice and the QR code available alongside the link.

For example, to add a Strike link:

// bolt11Invoice is the complete mainnet invoice generated by Voltage.
const strikeLink = document.createElement("a");
strikeLink.href = `strike:${bolt11Invoice}`;
strikeLink.textContent = "Pay with Strike";
document.body.append(strikeLink);

Use the Voltage demo wallet with Mutinynet invoices to test optional wallet links without spending real bitcoin.

  1. In your staging or development environment, generate an invoice using a Mutinynet Voltage wallet.

  2. Build a link using this format:

    https://demo.wallet.voltage.cloud/launch/lightning/{bolt11Invoice}

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.

Testing the demo wallet does not verify Cash App’s payment flow. Cash App requires mainnet invoices and the manual payment steps above.

You can use lightning:{bolt11Invoice} to request a compatible wallet installed on the customer’s device.

Support and wallet selection vary by device and platform. Keep copying and QR scanning available. Do not present a general Lightning link as a supported Cash App handoff.

Copying an invoice, scanning a QR code, opening a wallet, or returning to checkout does not confirm payment. Verify completion on your server through the Voltage API or Webhooks before marking an order as paid or delivering a product.

If an invoice expires, check the existing payment state before creating a replacement. Keep order fulfillment idempotent so repeated status checks or webhook deliveries cannot fulfill the same order twice.