8000 GitHub - lnbits/tpos: Secure, mobile-ready, instant and shareable point of sale · GitHub
[go: up one dir, main page]

Skip to content
lnbitsPublic

About

Secure, mobile-ready, instant and shareable point of sale

Resources

Stars

19 stars

Watchers

3 watching

Forks

Latest commit

 

History

314 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

LNbits

OpenSats Supported License: MIT Built for LNbits tip-hero Explore LNbits TPoS Stripe Tap-to-Pay Wrapper

TPoS — LNbits extension

A shareable Bitcoin Lightning Point of Sale that runs directly in your browser.
No installation required — simple, fast, and safe for any employee to use.

One Checkout · Two Payment Rails with the optional Stripe Tap-to-Pay Wrapper for Android.
Take card (fiat) via Stripe and Lightning payments side by side from a single TPoS flow.

For video content about the TPoS extension, watch the official demo.


Quick Links

Features

  • Create invoices — instant Lightning QR invoices
  • Tipping — percentages or rounding, split to a tip wallet
  • Item management — products, cart, JSON import/export
  • OTC ATM — LNURL withdraw limits and cooldown
  • Stripe fiat payment integration — accept tap-to-pay via Stripe
  • Cash settlement & fiat wallet — cash and card sales booked to a LNbits fiat wallet
  • Tax settings — global/per-item, inclusive or exclusive

Overview

TPoS lets you take Lightning payments right from the browser. Every TPoS runs isolated from your main wallet for safer staff use and multi-branch setups, and you can create as many terminals as you need.

Usage

  1. Enable the extension.

  2. Create a TPoS.

    Create a TPoS
  3. Open TPoS in the browser.

    Open TPoS
  4. Present the invoice QR to the customer.

    Invoice QR

Cash Settlement & Fiat Wallet

Set the terminal to a fiat currency, enable cash settlement or select an enabled card provider, and choose an active fiat wallet you own in that currency. Create a wallet from LNbits Wallets if you need one. Your LNbits admin controls fiat wallet creation and which accounts can use each card provider.

Anyone with the public terminal link can confirm a cash checkout when cash settlement is enabled. Share the link with the people you trust to record cash sales. Card sales settle when the configured provider verifies the payment.

Both types of sale credit the selected fiat wallet. Cash uses an internal accounting record. Tips from fiat sales stay in that wallet. Lightning sales continue to use the terminal’s Lightning wallet.

Before upgrading, finish any outstanding cash checkouts on the old version. Select a fiat wallet for each cash or card terminal after upgrading. New cash and card sales pause until a valid wallet is selected. The upgrade preserves terminal settings and historical payments.

On-chain payments

Enable on-chain payments and select an LNbits on-chain wallet or a Watchonly wallet you own. Finish wallet setup and confirm any required backup first. TPoS reserves a new receive address per checkout. With zero-conf disabled, it waits for the first confirmation. The sale and any tip go to the receiving Bitcoin wallet, and the terminal's Lightning balance stays unchanged. On-chain tips stay in the receiving Bitcoin wallet even when a separate Lightning tip wallet is configured.

Before upgrading, finish or reconcile pending Watchonly checkouts on the old version. Any legacy checkout still pending at upgrade is closed for manual reconciliation. Historical receipts remain available. The new version records sales in TPoS and stops crediting the Lightning wallet for Watchonly sales. Back up the database before upgrading. For custom mempool endpoints, the LNbits administrator must approve the exact base URL for the selected network.

After checkout expires, a sale observed fully funded before expiry can finish confirming. Reconcile partial or late funds in the receiving wallet. TPoS resumes paid sales with fulfilment still pending after a restart. If fulfilment stopped in processing, order, or inventory, check the tab, order, and stock before completing the outstanding steps manually. An interrupted request may already have changed the order or inventory.

Receiving Tips

  1. Create or edit a TPoS and activate Enable tips.

    Enable tips
  2. Fill in:

    • Wallet to receive tips
    • Tip percentages (press Enter after each)
    • If no values are set, a default Rounding option is available
  3. In TPoS, set an amount and click OK.

    Enter amount
  4. A tip dialog appears.

    Tip selection dialog
  5. Select a percentage or Round to.

    Select tip or round
  6. Present the updated invoice to the customer.

    Invoice with tip
  7. After payment the tip is sent to the defined wallet (e.g., employee wallet) and the rest to the main wallet.

    Tip distribution

LN Address Funding

Some deployments require sharing revenue from every payment made through a TPoS.
This feature allows you to automatically forward a defined percentage of each received payment
to a specific Lightning Address.

This is especially useful when:

  • You host an LNbits server and give a TPoS to a vendor, and you want to receive a host fee / revenue share, or
  • Two participants share one TPoS, and a portion of each incoming payment should automatically go to a partner, co-owner, or collaborator.

In these cases, the function helps identify the initial TPoS initiator and forward their share without manual reconciliation.

How it works

  1. Open or edit a TPoS.
  2. Enable LN Address Funding.
  3. Enter:
    • Lightning Address of the recipient (e.g., alice@yourdomain.com)
    • Percentage share (e.g., 10 for 10%)
      Bildschirmfoto 2025-11-25 um 04 02 20

When a customer pays:

  • TPoS receives the full Lightning payment.
  • The extension splits the amount automatically.
  • The defined percentage is forwarded to the configured Lightning Address.

This happens instantly, with no extra setup and no additional wallets required.

Adding Items to PoS

You can add items to a TPoS and use an item list for sales.

  1. After creating or opening a TPoS, click the expand button.

    Expand items

    Then you can:

    • Add items
    • Delete all items
    • Import or export items via JSON
  2. Click Add Item and fill in details (title and price are mandatory).

    Add item dialog
  3. Or import a JSON with your products using this format:

[
  {
    "image": "https://image.url",
    "price": 1.99,
    "title": "Item 1",
    "tax": 3.5,
    "disabled": false
  },
  {
    "price": 0.99,
    "title": "Item 2",
    "description": "My cool Item #2"
  }
]

After adding products, the TPoS defaults to the Items View (PoS view):

Items view

Click Add to add to a cart / total:

Add to cart

Click Pay to show the invoice for the customer. To use the regular keypad TPoS, switch via the bottom button.

Regular TPoS also supports adding to total: enter a value and click +, repeat as needed, then click OK.

Add custom value

OTC ATM Functionality

  1. Create or edit a TPoS and activate Enable selling bitcoin. Configure:
    • Maximum withdrawable per day
    • Cooldown between withdrawals (min. 1 minute)
ATM settings
  1. Open the TPoS, then tap the ATM button.
ATM button

Warning

The red badge centered at the top indicates you are in ATM mode.

ATM mode badge
  1. Set the amount to sell and present the LNURLw QR to the buyer.
Withdraw QR
  1. After a successful withdrawal, a confirmation appears and TPoS exits ATM mode.
Withdrawal success

Note

OTC ATM requires a signed-in account. When sharing a TPoS, be signed in or have the login details ready.

  • Today: If you are not signed in, you will see a Not logged in error.
  • Coming soon: A feedback dialog will appear and prompt you to sign in.
Not logged in feedback

Tax Settings

By default, tax is included in price. Set a default tax rate (%) (e.g., 13). Items can override this with their own tax value.

  • Tax Exclusive — tax is applied on top of the unit price.
  • Tax Inclusive — unit price already includes tax.

In the keypad PoS, the default tax is used and is always included in the value.

Tax settings

Powered by LNbits

LNbits empowers developers and merchants with modular, open-source tools for building Bitcoin-based systems — fast, free, and extendable.

Visit LNbits Shop Try myLNbits SaaS Read LNbits News Explore LNbits Extensions tip-hero

About

Secure, mobile-ready, instant and shareable point of sale

Resources

Stars

19 stars

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages

0