Skip to content

Taking bitcoin payments

You take a bitcoin payment the same way everywhere: you show the customer a QR code, they scan it with their wallet, and the sale closes on its own once they have paid. It works on your terminal, in My Musqet in your web browser, and in the Musqet wallet app on your phone. You do not choose a rail for each sale. Your business settings decide which rails are available, and Musqet’s servers pick one and build the QR. The rest of this page explains the rails, the exchange rate, when a payment counts as paid, and the few cases that need a second look.

Which bitcoin rails you can take is set per business by Musqet, so your menu may show some of these and not others.

  • Lightning. The everyday rail. Payment is instant and the sale closes the moment the customer pays. This is the rail behind most bitcoin sales.
  • On-chain. A payment on the bitcoin blockchain itself. Slower than Lightning because it waits for the network to confirm, and better suited to larger amounts. See When a bitcoin payment is settled.
  • Ecash. A Cashu payment, handy for very fast, small, in-person amounts. Instant, like Lightning. Ecash is accepted from a set of trusted mints. A payment from any other mint is declined before any funds move, and the customer keeps their ecash.

Three more rails exist, but the customer never has to know about them because each one looks like an ordinary Lightning payment when they scan the QR:

  • Spark settles a Lightning payment into your Spark wallet. You connect the wallet in My Musqet and manage its receiving address in the wallet app. See Spark and connected wallets.
  • A connected wallet (NWC) routes the sats straight into a wallet you have connected, set up in My Musqet. See Spark and connected wallets.
  • Accept bitcoin, settle in pounds takes the payment in bitcoin and converts it to your currency automatically. See Take bitcoin but bank pounds.

On the terminal and in the wallet app you key the amount on a keypad, then start the sale. You can enter the amount in your own currency or in bitcoin: a toggle switches the keypad between the two, and the screen shows the running conversion so you can check it before you start.

Starting the sale puts a QR code in front of the customer to scan. On the terminal this is a full-screen code with a per-rail toggle, so if your business accepts more than one rail the customer can pick the one their wallet supports. In the wallet app the QR fills the screen at full brightness and keeps the screen awake while the customer pays. In My Musqet the code appears in a window on the payment you just created.

When you price a sale in pounds, Musqet converts it to bitcoin using a live rate. The figure on screen while you are keying the amount is an estimate and can move with the market. The rate is only fixed when you start the sale and the invoice is created: from that point the sats the customer owes are locked for the life of that invoice.

The underlying rate is refreshed at most every five minutes, so the estimate you see is never more than a few minutes old. If a customer takes too long and the invoice lapses, the sale is re-priced at the current rate when a fresh invoice is made, so you are never left holding an out-of-date price. See When a payment expires.

The rails do not all settle the same way, and this matters most when you are deciding whether it is safe to hand over the goods.

  • Lightning, ecash, Spark and connected-wallet payments settle instantly. The moment the customer pays, the sale shows as complete. There is nothing more to wait for.
  • On-chain payments wait for the network. The blockchain has to confirm the payment before it counts. A payment is settled once it has one confirmation, which is the point at which the sale is marked complete. Until then the terminal shows the payment as unconfirmed and keeps checking every couple of minutes, so do not release the goods on an on-chain sale until it says confirmed.

A bitcoin invoice does not stay open forever. A Lightning invoice carries its own expiry time, set when it is made. An on-chain or ecash payment that has no Lightning invoice stays open for 24 hours before it lapses.

What you see when one lapses depends on where you are:

  • On the terminal, an expired invoice shows an Invoice has expired message with a Retry option that starts a fresh sale.
  • In the wallet app, a lapsed invoice is replaced automatically with a new one at the current rate, so an in-person sale keeps going rather than dead-ending. This repeats a limited number of times while the customer is still trying to pay.
  • In My Musqet, a single payment that was never paid simply never completes. A payment link instead shows an Expired badge; a link lasts seven days by default and you can change that when you make it.

Only on-chain payments can come in for the wrong amount. Lightning and ecash payments are for a fixed sum by design, so the customer either pays exactly what was asked or the payment does not go through.

  • Underpaid on-chain. The sale stays open and unpaid. The customer can send the rest to the same address, or you cancel and start again.
  • Overpaid on-chain. The payment is recorded and the sale completes. My Musqet marks the transaction as overpaid so you can see it came in high.
  • Ecash. An ecash payment for too little is rejected outright, and one for too much has the change returned to the customer, so an ecash sale is always for the exact amount.

On a terminal in kiosk mode, a customer can pay in bitcoin with no one serving. The QR, the waiting screen and the receipt work exactly as they do for an attended sale, and the receipt prints on its own when the payment lands. Kiosk mode has to be enabled for your business.

If your business is set up for it, you can accept bitcoin and have it converted to your currency automatically. When a payment settles, Musqet gets a live sell quote and converts the bitcoin to pounds for you, so you take bitcoin at the till but your balance grows in your own currency.

This automatic conversion runs through Musqet’s exchange partner and is a per-business setting, so it applies only when it is switched on for you. On every other rail the bitcoin stays as bitcoin in your wallet. You manage the exchange connection under My Musqet.

These two are Lightning payments with a different destination, and the customer never sees the difference.

  • Spark is a fast settlement rail that lands the payment in your own Spark wallet. The payer scans an ordinary Lightning QR; the sats arrive in your Spark wallet moments later. You connect your Spark wallet when you set up bitcoin acceptance in My Musqet, and you can change the receiving Spark address later in the Musqet wallet app, which asks you to confirm it is you first. Once your Spark wallet is connected, your new Lightning sales start arriving in it automatically, with no switch-over needed from Musqet. You can raise a Spark sale from the Create a payment page in My Musqet, the same Lightning option as any other Lightning business. That page has no on-chain option: on-chain receiving into a Spark wallet is being rebuilt, and returns on its own once it is ready. Lightning is unaffected in the meantime.
  • A connected wallet uses Nostr Wallet Connect (NWC) to route the sats straight into a wallet you already run. You paste the connection from your wallet into My Musqet once, and from then on Lightning payments land there.
What you seeWhat it meansWhat to do
The terminal still says unconfirmed after the customer paidThe payment was on-chain and the network has not confirmed it yetWait for one confirmation; the terminal checks every couple of minutes and updates on its own. Do not hand over goods until it says confirmed
The bitcoin amount changed while I was keying the saleThe on-screen figure is a live estimate until you start the saleThe amount is fixed once the invoice is created; start the sale, then the sats are locked for that invoice
The invoice expired before the customer paidThe invoice ran past its timeOn the terminal, tap Retry. In the wallet app a fresh invoice appears on its own. Ask the customer to scan the new code
A bitcoin rail I expected is not on the menuThat rail is not enabled for your businessWhich rails you can accept is set by Musqet; contact support if you expected a rail to be live
The customer paid the wrong amountOnly on-chain payments can come in wrongUnderpaid sales stay open for the rest; an overpaid sale completes and is marked overpaid
I took bitcoin but my balance is in poundsYour business has automatic conversion switched onThis is the accept-bitcoin, settle-in-pounds setting working as intended