L

LibrePOS

๐Ÿช

Your Business,
Simplified.

Professional POS capabilities in your pocket. Offline-ready and free.

Default PIN: 1234

โšก๏ธ Offline First
Works without internet
๐Ÿ“Š Smart Reports
Track sales instantly
๐Ÿช

Business Setup

Let's get your business configured

Business Information

Initial cash amount in your register

{{ businessForm.tax_type==='VAT' ? 'Sales will include 12% VAT.' : 'No VAT will be calculated.' }}

Today's Balance
โ‚ฑ{{ formatMoney(metrics.balance) }}
๐Ÿ’ฐ
Sales
โ‚ฑ{{ formatMoney(metrics.sales) }}
Expenses
โ‚ฑ{{ formatMoney(metrics.expenses) }}

Quick Actions

Recent Activity

No transactions yet.
  • {{ t.type==='sale' ? '๐Ÿงพ' : '๐Ÿ’ธ' }}
    {{ t.type==='sale' ? 'Sale #' + (t.or_number || '---') : t.description }}
    {{ new Date(t.created_at).toLocaleTimeString([], {hour: '2-digit', minute:'2-digit'}) }}
    {{ t.type==='sale' ? '+' : '-' }}โ‚ฑ{{ formatMoney(t.total||t.amount) }}

New Sale

Step {{ state.posStep }} of 3
1. Select Items
2. Confirm
3. Receipt
๐Ÿ”
{{ cart.items.reduce((sum, item) => sum + item.qty, 0) }} item{{ cart.items.reduce((sum, item) => sum + item.qty, 0) !== 1 ? 's' : '' }}
๐Ÿ“ฆ

No items found

Try searching for something else or add new items.

Total Amount
โ‚ฑ{{ formatMoney(posGrandTotal) }}
{{ cart.items.length }} items selected

{{ customization.product.name }}

โ‚ฑ{{ formatMoney(customization.product.price) }}
{{ group.name }}
Total โ‚ฑ{{ formatMoney(customizationTotal) }}

Order Summary

Cart is empty
{{ item.name }}
+{{ m.name }}
{{ item.qty }}
โ‚ฑ{{ formatMoney(actions.lineTotal(item)) }}
Subtotal โ‚ฑ{{ formatMoney(posSubtotal) }}
Service Charge โ‚ฑ{{ formatMoney(posService) }}
Subtotal (VAT Excl) โ‚ฑ{{ formatMoney(posSubtotal) }}
Order Discount ({{ pos.discount.description }}) ({{ pos.discount.type==='percent' ? pos.discount.value+'%' : 'โ‚ฑ'+pos.discount.value }}) - โ‚ฑ{{ formatMoney( (cart.items.reduce((s, ci) => s + actions.lineTotal(ci), 0)) - posTotal ) }}
VAT ({{ settings.tax_type==='Non-VAT' ? '0%' : settings.vat_rate + '%' }}) โ‚ฑ{{ formatMoney(posVAT) }}
Total Due โ‚ฑ{{ formatMoney(posGrandTotal) }}
Payment Method
Cash Tendered
โ‚ฑ
Change: โ‚ฑ{{ formatMoney(changeDue) }}
Insufficient cash
Reference Number
#
๐ŸŽ‰

Sale Completed!

Transaction successfully recorded.

Change: โ‚ฑ{{ formatMoney(lastSaleData?.change || 0) }}

Expenses

Track your spending

๐Ÿ’ธ

Add New Expense

โ‚ฑ

History

{{ expenses.length }} records
๐Ÿ’ธ

No expenses recorded yet.

  • {{ e.category.split(' ')[0] }}
    {{ e.description }}
    {{ e.category.split(' ').slice(1).join(' ') }} โ€ข {{ new Date(e.created_at).toLocaleDateString() }}
    -โ‚ฑ{{ formatMoney(e.amount) }}
    Tap to view

Reports & Analytics

Sales overview and daily reads

๐Ÿ“œ Z-Read History

No Z-Reads generated yet.
  • ๐Ÿ“…
    {{ new Date(z.created_at).toLocaleDateString(undefined, {weekday:'short', month:'short', day:'numeric'}) }}
    {{ z.or_start }} - {{ z.or_end }}
    โ‚ฑ{{ formatMoney(z.total_sales) }}
    {{ new Date(z.created_at).toLocaleTimeString([], {hour:'2-digit', minute:'2-digit'}) }}

Audit & compliance

Inventory

Manage your products

๐Ÿ“ฆ Product List {{ products.length }} items

๐Ÿ“ฆ

No products yet

Get started by adding your first product to the inventory.

{{ p.name.charAt(0).toUpperCase() }}
{{ p.name }}
โ‚ฑ{{ formatMoney(p.price) }}
{{ p.modifiers.length }} modifier groups

Settings

Configure your POS

๐Ÿข Business & Tax

๐Ÿงพ Receipt Customization

๐Ÿ–จ๏ธ Hardware

โ–ผ

๐Ÿ” Security

LibrePOS
v1.1.0 โ€ข Professional Edition
๐Ÿ’ก Feature Request

Designed for small businesses. Open Source & Free.

๐Ÿท๏ธ {{ discountForm.targetIndex !== null ? 'Item Discount' : 'Order Discount' }}

{{ state.selectedActivity?.type==='sale' ? 'Transaction Details' : 'Expense Details' }}

{{ state.selectedActivity.or_number }}
๐Ÿ“…
Date & Time
{{ new Date(state.selectedActivity.created_at).toLocaleDateString(undefined, {weekday:'long', year:'numeric', month:'long', day:'numeric'}) }}
{{ new Date(state.selectedActivity.created_at).toLocaleTimeString() }}
Items Purchased
  • {{ item.name }} x{{ item.qty }}
    +{{ m.name }}
    โ‚ฑ{{ formatMoney(item.price * item.qty) }}
Subtotal โ‚ฑ{{ formatMoney(state.selectedActivity.subtotal) }}
Service Charge โ‚ฑ{{ formatMoney(state.selectedActivity.service) }}
VAT โ‚ฑ{{ formatMoney(state.selectedActivity.vat) }}
Total Amount โ‚ฑ{{ formatMoney(state.selectedActivity.total) }}
Payment Method
{{ state.selectedActivity.payment_method }}
Change
โ‚ฑ{{ formatMoney(state.selectedActivity.change) }}
Description
{{ state.selectedActivity.description }}
Category
{{ state.selectedActivity.category }}
Amount
โ‚ฑ{{ formatMoney(state.selectedActivity.amount) }}

๐Ÿ“‹ What's New

LibrePOS Version History

v1.1.0 Current
Latest Update
โœจ Major UI Overhaul
  • Modern, card-based interface for all sections.
  • Add-Ons & Modifiers: Customize items with extras like sugar level or size.
  • X & Z Reports: Generate shift (X-Read) and end-of-day (Z-Read) reports.
  • Printer Improvements: Persistent Bluetooth connection for faster printing.
  • Discounts: Apply item-level or order-level discounts (Fixed or %).
  • Simplified VAT/Non-VAT setup.
v1.0.0
Initial Release
๐Ÿš€ Core Features
  • Fast POS system with 3-step checkout
  • Item management with inventory tracking
  • Expense tracking and categorization
  • VAT-inclusive pricing calculations
  • Service charge support
  • Receipt printing (ESC/POS compatible)
  • Multiple payment methods (Cash, Card, GCash, Maya)
  • Offline-first PWA support
๐Ÿ”’ Security & Settings
  • PIN-based authentication
  • Business settings management
  • Customizable receipt header/footer

LibrePOS is Open Source Software.

{{ itemForm.id ? 'Edit Product' : 'New Product' }}

Manage item details

โ‚ฑ

Modifiers & Add-ons

Customize this product

๐Ÿจ

No modifiers (e.g. Sugar, Toppings) added.

โ‚ฑ

{{ reportDialog.title }}

Snapshop Report

End of Day

{{ reportDialog.message }}
Sales Total
โ‚ฑ{{ formatMoney(reportDialog.data.total) }}
{{ reportDialog.data.count }} transaction{{ reportDialog.data.count !== 1 ? 's' : '' }}
Total Discounts โ‚ฑ{{ formatMoney(reportDialog.data.totalDiscount) }}
โฑ๏ธ Generated at {{ reportDialog.data.date.toLocaleTimeString() }}
โš ๏ธ

This action will close the current sales day and reset the daily sales counter. Proceed?

Total Sales โ‚ฑ{{ formatMoney(reportDialog.data.total_sales) }}
Transaction Count {{ reportDialog.data.tx_count }}
Total Discounts - โ‚ฑ{{ formatMoney(reportDialog.data.total_discount) }}
OR Sequence Range
{{ reportDialog.data.or_start }} โžœ {{ reportDialog.data.or_end }}

{{ new Date(reportDialog.data.zRead.created_at).toLocaleDateString() }}

{{ reportDialog.data.zRead.or_start }} - {{ reportDialog.data.zRead.or_end }}
Orders
{{ reportDialog.data.rangeTx.length }}
Sold Items
{{ reportDialog.data.items.reduce((s,i)=>s+i.qty, 0) }}
Discounts
โ‚ฑ{{ formatMoney(reportDialog.data.zRead.total_discount) }}
Item Sales Breakdown
Item Qty Total
{{ item.name }} {{ item.qty }} โ‚ฑ{{ formatMoney(item.total) }}
No items sold in this period.
Total Sales โ‚ฑ{{ formatMoney(reportDialog.data.zRead.total_sales) }}
โœ“

Day Closed Successfully

Sales data has been reset.

Gross Sales โ‚ฑ{{ formatMoney(reportDialog.data.total_sales) }}
Voided Amount โ‚ฑ{{ formatMoney(reportDialog.data.total_void) }}
Total Discount โ‚ฑ{{ formatMoney(reportDialog.data.total_discount) }}
Net Sales โ‚ฑ{{ formatMoney(reportDialog.data.total_sales - reportDialog.data.total_void) }}
{{ notification.type==='success' ? 'โœ…' : notification.type==='error' ? 'โš ๏ธ' : notification.type==='warning' ? '๐Ÿ””' : 'โ„น๏ธ' }}
{{ notification.message }}