Skip to content

FOR POS COMPANIES

Add Bitcoin Lightning
to your POS.

Give your merchants a Lightning payment option inside the POS they already use. Your backend uses two endpoints: one requests an invoice, the other tells you when it's paid. You keep the sale, the order and the customer; the bitcoin goes straight to the merchant's wallet.

Open a free account

Or email hello@satsrail.com. For iOS, Android, desktop and web POS software. No new hardware: it runs on your existing screen and internet connection. Ready to build? Read the integration guide. Setting your merchants up for them? See the reseller program.

YOUR POS

Sale #1042

$25.00

Choose a payment method

Card Cash
Bitcoin Lightning
Payment confirmedYour POS completes the sale.
Illustrative payment screen and confirmation.
Your team designs the experience inside your POS.
Keep your POS Merchants are paid directly 0% SatsRail transaction fees Free account · test with a small live payment

WHY ADD LIGHTNING

Good for your merchants.
Simple for you.

No chargebacks

A Lightning payment is final once it settles. There is no card to dispute and no reserve held back.

Settles in seconds

The customer approves in their own wallet and the merchant's wallet receives it moments later, not days.

No cut of each sale

Merchants pay SatsRail a flat monthly plan, free up to — a month in bitcoin payments, and 0% per payment. See pricing.

Nothing for you to hold

Funds go straight to each merchant's wallet, so your company never touches the money. There is no card network or acquirer to integrate, and SatsRail charges your company nothing to build it.

THE INTEGRATION

Lightning POS integration:
two endpoints on your backend.

  1. Request a payment with the sale total. SatsRail asks the merchant's wallet provider for a Lightning invoice and returns it.
  2. Show the invoice as a QR. The customer scans it with their wallet.
  3. Check the status until paid is true, then close the sale and print your receipt. Optional payment.received webhooks can notify your backend too.
Read the POS integration guide
# 1. Request a payment for the sale total
POST /api/v1/m/payment_requests
{ "payment_request": {
    "amount_cents": 2500,
    "payment_method": "lightning" } }
→ 201 { "id": "4e14…", "payment_request": "lnbc…" }

# 2. Check it, then close the sale
GET /api/v1/m/invoices/4e14…/status
→ 200 { "status": "paid", "paid": true }
Abbreviated from the integration guide. Amounts are in the merchant's currency.
  • Retries. Send an Idempotency-Key: a retry with the same key gets the first response back for 24 hours. Create one payment per sale at a time.
  • Keys. Keep the secret key on your backend, never in the terminal app.
  • Limits. Per key, the same on every plan: — requests a minute and — an hour (plans).
  • Checking status. Stop when the payment screen closes, and share one check across terminals. Let payment.received webhooks tell you, or check about every 30 seconds: a QR left open for 15 minutes and checked every 10 seconds would use 90 of the hour's — requests.

AT THE COUNTER

One more way to pay.
The same familiar checkout.

  1. 01

    The cashier picks Lightning

    One more payment button in the POS they already use. No new device, and nothing for the cashier to install.

  2. 02

    The customer pays from their wallet

    Any Lightning wallet, or an exchange app that pays Lightning invoices, scans the same QR. The customer approves the amount on their phone.

  3. 03

    Your POS prints its receipt

    As soon as the payment confirms. The bitcoin is already in the merchant's wallet: no batch to settle and no payout to wait for.

Customer wallet → merchant wallet

The bitcoin goes directly to the merchant. SatsRail never holds the funds.

Your POS stays the source of truth: catalog, basket, tax, stock, customer details and receipts stay in your system. There is no catalog migration or basket sync; SatsRail keeps only the payment record. On-chain is in early access through the API; ask us for its notes.

WHAT THE INTEGRATION INVOLVES

Integration requirements.
On the hardware you use.

Your team builds

  • A Lightning option on the payment screen.
  • A backend connection to request invoices and check status.
  • A QR display and payment confirmation.
  • Recovery when a terminal reconnects or an invoice expires.

This is a custom software integration. It requires access to your POS code or a supported extension point.

Your merchants connect

  • A SatsRail merchant account.
  • A compatible Lightning wallet, connected by Lightning Address.
  • An internet-connected terminal that can display a QR code.
  • A supported country: amounts are in the merchant's own currency.

Payments settle in bitcoin, to the merchant's Lightning wallet or, for on-chain (early access), to fresh addresses from the merchant's own watch-only key. Bank conversion, if needed, is handled separately through an exchange. See wallet setup options

Merchants subscribe to SatsRail directly. 0% per payment.

Free up to — a month in bitcoin payments, then Starter at — a month with no cap, or Pro at — (coming soon); prices by business category. Your company never sits in the money flow. Wallet, network and conversion costs may apply separately.

See pricing

BEFORE YOU BUILD

POS integration FAQ.
Does it fit your POS?

What does it cost us?

Nothing. A SatsRail account and the API are free. Testing the paid state takes a small real payment, which lands in the merchant's own wallet. Each merchant pays its own SatsRail plan, free up to — a month in bitcoin payments, with 0% per payment.

Do merchants need to verify their business?

Only to go above — a month in bitcoin payments. The free plan needs no business verification; paid plans require it (KYB).

How do merchants connect to our POS?

Each merchant opens a SatsRail account, connects a Lightning wallet by Lightning Address, and creates a secret API key that can create payment requests and read invoice status. Your backend stores that key for the merchant and makes the calls.

How long does an integration take?

The API side is small: two endpoints on your backend. Most of the work is your payment screen and the edge cases, such as an invoice that expires or a terminal that reconnects. The integration guide lists every state to test before going live.

Do we need to use SatsRail's POS?

No. Your merchants keep using your POS. SatsRail provides the payment connection behind the Lightning option you add. (Merchants without a POS can use SatsRail's browser POS.)

Does it work on Android terminals and iPads?

Yes, if your app can talk to your backend and display a QR code. Your backend holds the merchant's secret API key and calls SatsRail; never put the key in the app. The same approach works for iOS, desktop and web POS software.

What happens when a merchant outgrows the free plan?

Only the free plan has a monthly cap. Once a merchant on it passes — in a month, new payment requests get HTTP 429 with the error volume_limit_exceeded until it chooses a paid plan. It is not the rate limit, which sends a Retry-After header: retrying won't clear it before the month ends, so tell the cashier the merchant's SatsRail plan needs an upgrade. Status checks on open invoices (GET /api/v1/m/invoices/:id/status) keep working, and SatsRail emails the merchant at 80% and 100% of the cap. Paid plans have no cap.

How do we test the integration?

Payment requests are always live, whichever API key you use: each one returns a real invoice from the merchant's wallet. So test the whole flow, paid state included, with a small real payment; it lands in the merchant's own wallet. For building screens alone, the orders API with a test key (sk_test_) returns simulated invoices, which are never paid. Either way, the merchant account must be set up first, with a Lightning wallet connected and the agreements accepted.

Do we have to move orders or customer data?

No. Send the final amount and keep the link between the payment and your sale in your own system. SatsRail creates a minimal internal order for the payment record; it does not need your basket or customer details.

What if a terminal loses its connection?

SatsRail keeps monitoring the invoice. When the terminal reconnects, your system checks the saved invoice ID and updates the sale. Your integration must handle this recovery before showing a final result.

Can we onboard our merchants for them?

Yes, as a SatsRail reseller. From your reseller area, your team creates each merchant's account (its owner gets an invitation), follows its setup and KYB, and answers its support tickets first. Each merchant still connects its own wallet and subscribes to SatsRail directly, so you never sit in the money flow. See the reseller program.

May we build SatsRail into our product?

Yes, the way this page describes: each merchant opens its own SatsRail account, accepts the Terms and subscribes directly, and your backend calls the API with that merchant's key. What the Terms (section 13.3) don't allow without a separate agreement is reselling or sublicensing SatsRail itself, for example selling SatsRail access inside your own plans. For a different arrangement, .

Can merchants still accept cards and cash?

Yes. Lightning is an additional payment method in your POS. Customers who choose it need bitcoin in a Lightning-compatible wallet.

Can we offer on-chain bitcoin?

Yes, in early access, through the API (payment_method: "onchain"); its notes aren't in the public reference yet, so . Your integration must show the address or QR code and a "payment seen" state while the payment waits for confirmation. On-chain has no test mode: it needs a live key. The SatsRail POS app itself is Lightning only.

LET'S LOOK AT YOUR POS

Bring Lightning
to your merchants.

Tell us what your POS runs on and how your checkout works. We'll help you map the integration and reply within 24 hours, or email hello@satsrail.com.