Features Pricing Knowledge base
Start free trial Log in
live feedconnecting
Knowledge baseAccount, billing and referrals

Paying with Bitcoin through BTCPay

Checkout, the invoice page, what "processing" means, confirmations, expiry, the Refresh status button and how the price is worked out.

Starting a checkout

  1. Open Pricing or Account > Billing and pick a plan and period (monthly or yearly). The checkout URL has the form /checkout/<plan>?period=monthly or ?period=yearly.
  2. Enter a coupon code if you have one. The page shows the list price, the discount, any account credit applied and the total.
  3. Click to pay. An invoice is created in the operator's BTCPay Server and you are sent to its checkout page, which shows the amount in BTC, a QR code and the address. The amount is fixed in USD; the BTC rate is locked for the life of the invoice.
  4. Pay from any Bitcoin wallet. Lightning is available when the operator has enabled it on their BTCPay store.
  5. After payment BTCPay sends you back to Account > Billing with the invoice marked.

If the total is zero (a 100% coupon, or enough referral credit), no BTCPay invoice is created and the plan activates immediately.

The price

list     = plan price for the period
discount = the larger of (coupon, referral 15% on a first invoice)   # not both
credit   = min(your credit balance, list - discount)
total    = list - discount - credit                                   # minimum 0

Coupons stack with credit but not with the referral discount: the single best discount wins. Credit comes from the referral programme; see Referral programme.

Invoice statuses

Status Meaning
new Created, waiting for payment. Nothing is active yet.
processing Your transaction has been seen on the network (or received on Lightning) but has not reached the number of confirmations the operator requires. The subscription is not active yet.
settled Confirmed. The subscription is activated for the full period from this moment and shows as active on your Account page.
expired The invoice was not paid within its time limit (60 minutes by default). Start a new checkout; the BTC rate will be re-quoted.
invalid The payment was late, short, or otherwise rejected by BTCPay. Contact support with the invoice id; BTCPay keeps the funds visible to the operator.
void Cancelled by the operator.

Confirmations and "processing"

A Bitcoin on-chain payment is seen within seconds but is counted as settled only after the confirmations configured on the store, typically one to three blocks, which is 10 to 30 minutes on average and longer when the network is busy. During that time the invoice reads processing. You do not need to do anything; the status updates by itself when BTCPay notifies the platform.

Paying with a low fee can leave a transaction unconfirmed for hours. If your wallet supports it, use a normal priority fee for subscription payments.

Refresh status

BTCPay notifies the platform through a webhook. If a notification is delayed or lost, open Account > Billing and click Refresh status next to the invoice. The platform asks BTCPay for the current state and applies it, including activation when the invoice has settled in the meantime.

Common questions

  • I paid but the invoice expired. A payment that arrives after expiry is marked invalid or late by BTCPay. Contact support with the invoice id and the transaction id; the operator can see the payment and grant the plan manually.
  • I paid slightly less. BTCPay treats underpayment as invalid. Support can resolve it.
  • Can I pay for several periods at once? Pay the yearly price, or run two checkouts: each settled invoice extends the expiry date.
  • Receipts. Each invoice row on Account > Billing shows the plan, period, amounts, status, dates and the BTCPay invoice link, which doubles as a receipt.

Note: the platform never sees your wallet or keys. It only receives the invoice status from BTCPay.