POS Ledger and Stock Processing
Starting from ERPNext Version 13, the Point of Sale (POS) system was redesigned to improve performance and scalability. Instead of updating the Stock Ledger and General Ledger immediately after every retail transaction, ERPNext temporarily stores POS transactions in a separate POS sub-ledger. The actual stock and accounting entries are created only after the POS session is closed.
This approach significantly reduces the number of ledger entries generated throughout the day, allowing the POS interface to remain fast even when processing a large number of retail transactions.
POS Sub-Ledger Concept
When a sale is completed through the POS interface, ERPNext creates an intermediate POS Invoice instead of immediately updating inventory and accounting records.
The POS Invoice acts as a temporary transaction record and stores sales information until the active POS session is closed.
Using a separate POS sub-ledger provides several advantages:
- Retail transactions are processed much faster.
- The General Ledger remains lightweight during business hours.
- Large volumes of POS invoices can be handled without affecting system performance.
- Stock and accounting entries are generated only once during session closing.
How POS Transactions are Processed
The POS workflow in ERPNext follows the sequence below:
- Each sale made from the POS screen creates an intermediate POS Invoice.
- The POS Invoice does not immediately update the Stock Ledger or General Ledger.
- All POS Invoices created during the session are stored in the POS sub-ledger.
- When the POS session is closed using a POS Closing Entry, ERPNext merges all intermediate POS Invoices into a single consolidated Sales Invoice.
- The consolidated Sales Invoice updates the Stock Ledger and General Ledger in one operation.
System Behavior
Stock movements and accounting entries are created only after the POS session is closed. Until then, all retail transactions remain stored in the POS sub-ledger.
Benefits of Consolidated Ledger Entries
Instead of creating accounting entries for every individual POS transaction, ERPNext combines all transactions into a single Sales Invoice during session closing.
This approach offers several operational benefits:
- Greatly reduces the number of Stock Ledger and General Ledger entries.
- Improves overall system performance during peak retail hours.
- Reduces database load and improves scalability.
- Allows businesses to process thousands of POS invoices efficiently.
For example:
- In the older workflow, every POS Invoice generated multiple ledger entries.
- In the current workflow, an entire day’s POS transactions typically generate only a few consolidated ledger entries.
Stock Tracking During an Active POS Session
Although Stock Ledger entries are postponed until the POS session is closed, ERPNext continues tracking stock reservations throughout the active session.
Instead of immediately reducing stock in the Stock Ledger, ERPNext reserves inventory internally so that the same stock cannot be sold multiple times across different POS sessions.
Stock Projected Quantity Report
During an active POS session, stock availability can be monitored through the Stock Projected Quantity Report.
Navigate to:
Home > Stock > Stock Reports > Stock Projected Quantity
The report displays multiple stock quantities, including:
- Actual Quantity – The physical stock currently recorded in the Stock Ledger.
- Reserved for POS Transactions – Stock reserved by active POS sessions that have not yet been closed.
- Projected Quantity – The available stock after considering reservations for POS transactions, production, purchase orders, and other commitments.
Although Stock Ledger quantities remain unchanged until session closing, the Projected Quantity reflects reserved inventory, allowing businesses to monitor actual stock availability more accurately.
Stock Availability in POS
Within the POS interface, ERPNext validates stock availability before allowing an item to be sold.
The system considers stock already reserved by all active POS sessions across the organization.
As a result:
- Items with insufficient available stock cannot be sold.
- Reserved quantities from one POS session reduce the available quantity for every other active POS session.
- Stock expected from pending Purchase Orders or Goods Receipts is not treated as available inventory until it is physically received.
This ensures that inventory cannot be oversold even though Stock Ledger entries have not yet been posted.
Operational Note
ERPNext manages inventory reservations globally across all active POS sessions. If stock has already been reserved in one open session, the same quantity will not be available for sale in another session until inventory is replenished or the session is closed.
Key Summary
ERPNext’s Version 13 POS architecture improves retail performance by temporarily storing transactions in a POS sub-ledger and postponing Stock Ledger and General Ledger updates until the POS session is closed. During the active session, inventory is reserved internally and reflected in the Projected Quantity Report, ensuring accurate stock validation while maintaining a fast and scalable Point of Sale experience.