Commerce Point of Sale (POS)
A complete Point of Sale system for Drupal Commerce that enables in-person transactions with cash registers, cashier management, and end-of-day reporting.
commerce_pos
Install
composer require 'drupal/commerce_pos:8.x-2.6'
Overview
Commerce Point of Sale (POS) provides a comprehensive Point of Sale interface for Drupal Commerce, enabling brick-and-mortar stores to process in-person transactions directly through their Drupal website. The module integrates seamlessly with Commerce to share products, customers, and orders between online and physical store operations.
The POS system features a touch-friendly cashier interface optimized for tablets, laptops, and desktops. It supports multiple payment methods including cash, credit, debit, and gift cards, along with the ability to process returns and refunds. The module includes a dedicated cashier login system, register management with float tracking, and an order parking feature for temporarily holding orders.
Key capabilities include real-time product search with Search API integration, UPC/barcode scanning support, customer lookup and creation, and comprehensive order management. The system supports multiple registers and locations, making it suitable for stores of various sizes. End-of-day reporting functionality helps reconcile cash drawers and track daily sales by payment method.
Features
- Touch-friendly POS interface optimized for tablets, laptops, and desktops
- Multiple payment gateway support: Cash, Credit, Debit, and Gift Card
- Full integration with Drupal Commerce for shared products, customers, and orders
- Dedicated cashier login system with recent cashiers quick-select
- Register entity management with float tracking and store association
- Order parking feature to temporarily hold orders for later retrieval
- Real-time product search using Search API with autocomplete
- UPC/barcode field support for product variations
- Customer lookup by name, email, or phone number with auto-create capability
- Order comments and activity logging using Commerce Log
- Custom POS order workflow with Draft, Parked, Completed, Canceled, and Returned states
- Price adjustment support including custom fees, promotions, and tax
- Unit price modification permission for authorized users
- Return and refund processing with negative price items
- End-of-day reporting with declared vs expected amount reconciliation
- Receipt printing and email functionality
- Product label generation and printing
- Camera-based barcode scanning capability
- Real-time customer-facing display (experimental)
- Touch-friendly numeric keypad with currency denomination support
Use Cases
Retail Store Point of Sale
A brick-and-mortar retail store uses Commerce POS to process walk-in customer transactions. Cashiers log in through the dedicated login page, select their register, and begin ringing up customers. Products are added via barcode scanning or search, payments are processed through cash or card, and receipts are printed for customers.
Multi-Register Store
A larger store with multiple checkout lanes creates separate registers in POS for each lane. Each terminal is assigned to a specific register, allowing accurate end-of-day reconciliation per register. Managers can view reports for individual registers or across the entire store.
Order Parking for Complex Transactions
When a customer needs to step away to get additional items or payment, the cashier parks the order. The order is saved in a parked state and can be retrieved later from the Parked Orders tab, allowing the register to continue serving other customers.
Processing Returns
A customer returns a previously purchased item. The cashier looks up the original order, opens it in POS, and adds the item as a return. The return item has a negative price, reducing the order total. Payment processing handles the refund back to the customer.
End-of-Day Cash Reconciliation
At the end of a shift, the cashier accesses the End of Day report, counts the cash drawer, and enters declared amounts for each payment type. The system compares declared amounts to expected (calculated from transactions) and shows any over/short. The register is closed and a report can be printed for records.
Product Label Printing
Store staff use the Print Labels feature to generate price labels with barcodes for products. They search for products, add them to a print queue with quantities, and print labels in batch for shelf pricing or inventory tagging.
Customer Account Creation
A new customer makes their first purchase. The cashier enters the customer's email address in the customer field. When the order is completed, a new customer account is automatically created and the customer receives a welcome email with account credentials.
Tips
- Configure Search API with a product variation index including the commerce_store field for proper store filtering in product searches.
- Use the UPC field on product variations for faster checkout with barcode scanners.
- Set up the pos_cashier role with appropriate permissions for cashier accounts to limit access to only necessary POS functions.
- Enable the Phone Number field on user accounts to allow customer lookup by phone number.
- Use order parking to hold complex orders while serving other customers - parked orders persist across sessions.
- Configure the default payment gateway in POS settings to speed up checkout by pre-selecting the most common payment method.
- Use the Look and Feel settings to customize the cashier login background and accent colors for a branded experience.
- For barcode scanning, ensure your site is served over HTTPS as most browsers require secure connections for camera access.
- The jQuery.print library is required for receipt and label printing - install it in the /libraries directory.
- Product types can be hidden from POS search by editing the product type and selecting Hide in the Point of Sale settings.
Technical Details
Admin Pages 15
/admin/commerce/config/pos
Main configuration hub for Point of Sale settings, register management, and related configurations.
/admin/commerce/config/pos/settings
Configure core POS functionality including product search settings, order lookup limits, and visual customization options.
/admin/commerce/config/pos/registers
Manage POS registers including creating new registers, editing existing ones, and viewing their status.
/admin/commerce/config/pos/register/add
Create a new POS register with name, store assignment, and default float configuration.
/admin/commerce/pos
Main POS operations hub providing access to the register interface, order lookup, parked orders, and reports.
/admin/commerce/pos/main
The main POS register interface for processing customer orders. Features product search, customer selection, adjustments, and payment processing in a touch-friendly layout.
/admin/commerce/pos/orders
Search and view completed POS orders by order number, customer name, or email. Provides quick access to edit orders in the POS interface.
/admin/commerce/pos/orders/parked
View and retrieve orders that have been parked (temporarily saved) for later completion.
/admin/commerce/pos/close-register
View register status and access end-of-day reporting to close out the register.
/admin/commerce/pos/register
Select or change the active register for the current session.
/commerce_pos/login
Dedicated login page optimized for fast cashier authentication with recent cashiers quick-select feature.
/admin/commerce/config/pos/receipt
Configure header and footer text for printed receipts.
/admin/commerce/pos/reports
Access POS reporting functionality including end-of-day reports.
/admin/commerce/pos/reports/end-of-day
Generate end-of-day reports to reconcile register totals. Compare declared amounts against expected amounts for each payment type, track over/short, and close registers.
/admin/commerce/pos/labels
Generate and print product labels with barcodes for POS items.