Webkul
Services
Technologies Bagisto QloApps
iOS Android SAP BigCommerce Wix
Trusted by
Samsung Intel Toyota Walmart Disney Nokia Nestlé Decathlon
See all customers
Back to Top
DOC

Laravel eCommerce Multi-Tenant SaaS POS Module

Laravel eCommerce Multi-Tenant SaaS POS lets every tenant of your Bagisto SaaS platform run its own physical stores. Each tenant creates outlets, gives each outlet its own agents and products, and sells from a point-of-sale till that keeps working when the connection drops.

The till runs on the tenant’s own domain at /pos, for example https://yourstore.example.com/pos. Everything a tenant sets up, its outlets, agents, customers, orders and settings, belongs to that tenant alone: one tenant never sees another’s POS data, and an agent can only sign in on their own tenant’s domain.

Note: This is an add-on for the Laravel eCommerce Multitenant SaaS module and requires the Bagisto POS module.

Features

  • Each tenant runs its own POS: outlets, agents, banks, receipts, orders and reports are kept separately for every tenant.
  • The super admin decides which subscription plans include POS.
  • Create multiple outlets, each with its own inventory source, receipt and low-stock threshold.
  • Assign several agents to an outlet, and choose which products each outlet sells.
  • Sell simple, configurable, bundle, grouped, downloadable, virtual and booking products, and products that exist only at the till.
  • Take cash, card and split payments, with the bank recorded for card payments.
  • Apply a discount to a line or to the whole order, enter coupons, and let the store’s cart rules apply automatically.
  • Put orders on hold and resume them later.
  • Keep selling offline: sales and new customers are saved on the till and sync once the connection is back.
  • Open and close the cash drawer, with drawer reports for every session.
  • Return orders and reorder them from the till’s order history.
  • Request stock for low-stock products, and complete the requests from the admin panel.
  • Generate and print product barcodes, and scan them at the till.
  • Design your own receipts for 58, 80 or 104 mm paper.
  • Handle EU right-of-withdrawal requests at the till, for authorised agents.
  • Follow sales in the admin panel’s Orders, Sales Report and Drawer Sessions, and in the till’s own Reports.

Requirements

  • Bagisto 2.5.0
  • Bagisto SaaS 2.5.0
  • Bagisto POS 2.5.0
  • Bagisto API for Bagisto 2.5
  • PHP 8.4

Note: Follow the POS SaaS installation steps below. Do not follow the installation steps in the Bagisto POS README.

Installation

Step 1: Unzip and merge the files

Unzip the extension and merge its packages folder into the project root directory.

Step 2: Update composer.json

Add these lines under the psr-4 section:

"Webkul\\Pos\\": "packages/Webkul/Pos/src",
"Webkul\\PosSaas\\": "packages/Webkul/PosSaas/src"

Step 3: Update bootstrap/providers.php

Add these lines to the providers array:

Webkul\Pos\Providers\PosServiceProvider::class,
Webkul\PosSaas\Providers\PosSaasServiceProvider::class,

Step 4: Update config/concord.php

Add these lines to the modules array. The PosSaas line must be the last entry, after the SAASCustomizer module:

Webkul\Pos\Providers\ModuleServiceProvider::class,
Webkul\PosSaas\Providers\ModuleServiceProvider::class,

Step 5: Update .env

APP_DEBUG=false

Step 6: Run the commands

Run these commands from the project root directory:

composer dump-autoload
php artisan saas-pos:install

saas-pos:install sets up POS for every existing tenant: it adds the POS settings, a ready-made receipt titled Preview Receipt, and the till’s connection key. Tenants who register later get the same setup automatically.

Include POS in a subscription plan

POS is a plan module. A tenant can only switch POS on when their plan includes it; if their plan changes to one without POS, POS is switched off for them.

  1. In the super admin panel, go to Subscription >> Plans.
  2. Open the plan you want to change, or create a new one.
  3. In the Module Assignment section, select Pos in Allow Modules.
  4. Save the plan.

The Module Assignment section appears when the subscription payment module is switched on in the super admin configuration.

Configure POS for a tenant

The tenant admin sets up POS from the tenant’s own admin panel. POS starts switched off, and the Point Of Sale (POS) menu stays hidden until it is switched on for at least one channel.

Switch POS on

  1. Go to Configure >> Point Of Sale >> Settings.
  2. In the General section, switch Status on.
  3. Click Save Configuration.
Point Of Sale settings: General, Barcode, Products, POS API, EU Withdrawals and Customers sections

Settings marked with a channel or language badge are saved per channel or per language. Choose the channel and language at the top of the page before you change them.

General

SettingWhat it does
StatusSwitches POS on for the channel. Agents cannot sign in while it is off.
Pos LogoThe logo on the till’s sign-in page. JPEG, PNG or SVG.
Heading On LoginThe heading on the sign-in page, up to 50 characters.
Sub-Heading On LoginThe line under the heading, up to 50 characters.
Footer ContentText or HTML shown under the sign-in form, up to 250 characters.
Footer NoteA second footer line, such as a copyright notice, up to 100 characters.

Barcode

These settings apply to every channel of the tenant, except Hide Barcode, which is set per channel. Changing them does not change barcodes already generated: generate the barcodes again.

SettingWhat it does
Print Product NamePrints the product name under each barcode.
WidthBarcode width in pixels.
HeightBarcode height in pixels.
Generate Barcode WithProduct Sku or Product Id: what the barcode encodes.
PrefixUp to 6 characters added in front of every barcode. The till adds it to a scanned code that lacks it.
Hide BarcodeHides the barcode button from the till.

Products

Allow SKU for Custom Product: shows a SKU field when an agent adds a product that exists only at the till.

POS API

SettingWhat it does
Agent Token Lifetime (Days)How long an agent who ticked Remember Password stays signed in. Leave it empty for 30 days. Without Remember Password, a sign-in lasts one day.
Storefront KeyThe key the till uses to reach your store. It is filled in automatically; leave it unchanged.

EU Withdrawals

Handle EU Withdrawals on POS: lets authorised agents handle EU right-of-withdrawal requests at the till. EU withdrawals must also be enabled under Configure >> Sales >> EU Withdrawals for the same channel, and the agent must be allowed to handle them, which you set on the agent (see Agents below).

Customers

Email New Customers a Password Setup Link: customers registered at the till receive an email with a link to set their own password. It is on by default.

Payment method titles

Go to Configure >> Point Of Sale >> Payment Methods to change the Title and Description of Pos Cash Payment, Pos Card Payment and Pos Split Payment. These names appear on orders and in the sales report.

Payment Methods configuration for Pos Cash, Card and Split Payment

Receipts

A receipt is the template the till prints after a sale. Each outlet uses one receipt, and every tenant starts with a receipt titled Preview Receipt.

Receipts list with the Preview Receipt template

Create a receipt

  1. Go to Point Of Sale (POS) >> Receipts.
  2. Click Create Receipt.
  3. Enter the Receipt Title and choose the Paper Width: 58 mm, 80 mm or 104 mm.
  4. Switch on what the receipt shows, such as Display Outlet Name, Show Order Barcode, Display Date, Display Order ID, Display Customer Name, Display Tax and Display Cashier Name, and change the labels printed beside them.
  5. Switch on Mask Customer Details to hide part of the customer’s details on the printed receipt.
  6. In Logo, switch on Display Logo and upload the logo.
  7. Enter the Header Content and Footer Content.
  8. Switch Status on.
  9. Click Save Receipt.
Receipt form with display switches, labels, logo, header and footer

Click Preview in the receipts list to see a receipt as it prints. A receipt that an outlet uses cannot be deleted.

Outlets

An outlet is a physical store. It sells from its own inventory source and prints its own receipt.

Create an outlet

  1. Go to Point Of Sale (POS) >> Agents >> Outlets.
  2. Click Create Outlet.
  3. Switch Status on. An outlet saved with Status off is inactive, and its agents cannot sign in.
  4. Enter the Outlet Name, Email, Phone, Website and Customer Care Number, and the GST Number if you have one.
  5. In Receipt, choose the receipt the outlet prints.
  6. Enter the Outlet Address: Address, Country, State, City and Postcode.
  7. In Inventory, choose the Inventory Source and enter the Low Stock Quantity.
  8. Click Save Outlet.
Add Outlet form with general details, receipt, address and inventory
Outlets list

Click POS Front to open the till in a new tab.

Stock is shared with your online store

An outlet sells from the inventory source you choose, the same stock your online store sells from. A sale at the till lowers the stock online, and an online sale lowers the stock at the till. Each inventory source can belong to only one outlet.

The Low Stock Quantity decides which products the till lists as low in stock. The agent can change it at the till under Products >> Settings.

Assign products to an outlet

An outlet sells only the products you assign to it. New products are not assigned automatically.

  1. Go to Point Of Sale (POS) >> Agents >> Outlets.
  2. In the outlet’s row, click the Assign Product icon.
  3. For each product, set the POS Status to Active. To assign or unassign several products at once, select them and use Select Action >> Update Assign.
Manage Outlet Products with every product set to Active

The quantity shown is the stock in the outlet’s inventory source.

Deleting an outlet

An outlet that still has agents cannot be deleted. Move its agents to another outlet, or delete them, first.

Agents

An agent is a person who sells at the till. Each agent belongs to one outlet.

Create an agent

  1. Go to Point Of Sale (POS) >> Agents >> Agents.
  2. Click Create Agent.
  3. Enter the Username, First Name, Last Name and Email. The username and email must be unique within your store.
  4. Switch Status on.
  5. Switch Can Handle EU Withdrawals on if this agent may handle EU withdrawal requests.
  6. Choose the agent’s Outlet.
  7. Enter the Password, at least 6 characters, and Confirm Password.
  8. Optionally, upload a picture in Upload Agent Image.
  9. Click Save Agent.
Add Agent form with general details, outlet, status and password

The agent receives a registration email. Changing an agent’s password later signs them out of the till.

Agents list

Banks

Banks appear at the till when an agent takes a card or split payment, so the payment is recorded against the right bank.

  1. Go to Point Of Sale (POS) >> Banks.
  2. Click Create Bank.
  3. Enter the bank’s Name, Address, Email and Phone. The name can contain letters, spaces, apostrophes, full stops and hyphens, but no digits.
  4. Switch Bank Status on.
  5. In Assign Pos Agent, choose the agent who uses this bank.
  6. Click Save Bank.
Create New Bank form
Banks list

Barcode products

Go to Point Of Sale (POS) >> Barcode Products to give products a barcode the till can scan.

Generate barcodes

  1. Select the products.
  2. Choose Select Action >> Generate Barcode.
  3. Click Agree.

To generate one product’s barcode, click the Generate Barcode icon in its row.

Barcode Products list with a barcode for each product

Print barcodes

  1. Click the Print Barcode icon in a product’s row, or select several products and click Print Barcode.
  2. Enter the Qty: how many copies of each barcode to print, from 1 to 100.
  3. Click Print.
Print Barcode page with a product barcode ready to print

A product without a barcode cannot be printed: generate its barcode first.

Orders

Go to Point Of Sale (POS) >> Orders to see every till sale with its customer, agent, outlet, date, total and status. Click the eye icon to open the order in Sales >> Orders, where POS orders also show the Order Note the agent added.

POS orders list with customer, agent and outlet

Sales report

Go to Point Of Sale (POS) >> Sales Report to see each sale with its outlet, agent, payment method, bank and order note. Use Filter to narrow the list, and Export to download it.

Sales Reports list with payment method, outlet, agent and bank

Product requests

When an outlet runs low, its agent sends a request from the till. Go to Point Of Sale (POS) >> Requests to see them.

Requests list with a pending request for a low-stock product

Complete a request

  1. Go to Point Of Sale (POS) >> Requests.
  2. Click the view icon in the request’s row.
  3. Check the User Information and Request Information, including the agent’s Comment.
  4. Set Status to Complete or Decline.
  5. Click Save.
Requested Product Details with user and request information

Completing a request adds the requested quantity to the outlet’s inventory source, and cannot be undone. A request can be declined only while it is pending. A request for a configurable product cannot be completed: ask the agent to request a specific variant.

To update several requests at once, select them and use Select Action >> Update Status.

Drawer sessions

Go to Point Of Sale (POS) >> Drawer Sessions to see every cash drawer an agent opened: who opened it, at which outlet, when it opened and closed, the opening and closing amounts, and the remarks. Use Export to download the list.

Drawer Sessions list with an open drawer

Selling at the till

Agents use the till at /pos on the tenant’s domain, or from POS Front in the admin panel. The till works on desktops, tablets and phones.

Sign in

  1. Open /pos on your store’s domain.
  2. Enter the agent’s User Name and Password.
  3. Tick Remember Password to stay signed in longer.
  4. Click Login.
Till sign-in page

After signing in, the till downloads the outlet’s products, customers, orders and cart rules, then opens the home screen. The heading, logo and footer come from Configure >> Point Of Sale >> Settings.

Open the cash drawer

Before the first sale, the till asks the agent to open the cash drawer. The pop-up cannot be closed until a drawer is open.

  1. Enter the Opening Drawer Amount: the cash in the drawer at the start of the shift.
  2. Enter the Remarks.
  3. Click Open Drawer.

Add a customer and products

Every sale needs a customer, so select one before adding products.

  1. Click Add Customer at the top of the cart.
  2. Search for the customer by name or email and click them, or click Add New to register one.
Customers pop-up for choosing the customer of the sale

Then add products to the cart:

  • Click a product to add it. Products with options, such as a size or a booking date, open a pop-up first.
  • Search by product name or SKU in Search products….
  • Browse categories in the bar above the products.
  • Scan a barcode, or click the barcode button and enter the code.
  • Filter by availability, type and price, or sort by name or price.
Till home screen with products and three items in the cart

Sell a product that is not in the catalogue

  1. Click the Add New Product button in the header.
  2. Enter the Name, Price, Quantity and Weight, and the SKU if the field is shown.
  3. Click Proceed.
Add New Product pop-up for a product sold only at the till

The product is saved and one unit is added to the cart. The till must be online.

Discounts, coupons and notes

Under Add at the bottom of the cart:

  • Coupon — enter a coupon code.
  • Discount — give the whole order a discount, as a percentage or a fixed amount. It is shared across the lines in proportion to their value.
  • Note — add an order note. It appears on the order and in the sales report.
Apply Discount pop-up with percent and fixed options

To discount a single line, open the line in the cart and enter its discount. A discount cannot exceed 99.99%. The store’s cart rules apply on their own, and their names appear under Discount in the totals.

Take payment

  1. Click Proceed.
  2. Choose the payment method: Cash, Card or Split.
  3. For Cash, enter the amount received. The till shows the change to give.
  4. For Card, enter the last four digits of the card and choose the Bank.
  5. For Split, enter the cash part, then the card’s last four digits and the Bank for the rest.
  6. Click Confirm Payment.
Payment screen with Cash selected and the keypad
Payment screen with Card selected, card digits and bank
Payment screen with Split selected

When the order is placed, click Print Invoice to print the receipt, or Home to start the next sale.

Hold an order

  1. Click Hold Order in the cart.
  2. Click Agree.

Held orders are listed under Orders >> Orders On Hold, or from Hold Orders in the header. Click Resume to bring an order back into the cart, which must be empty first, or Remove to discard it.

Orders On Hold with a held order and its items

Customers at the till

The Customers screen lists the store’s customers, and under Offline Customers those registered while the till was offline. Search by name or email.

Customers screen at the till
  1. Click Add New Customer.
  2. Enter the First Name, Last Name and Email, and optionally the Phone Number and address.
  3. Click Add Customer.
Add New Customer form at the till

If Email New Customers a Password Setup Link is on, the customer receives an email to set their password. A customer registered at one outlet can only have their email changed at that outlet.

Cashier

The Cashier screen has four tabs.

Cash Drawer: close the drawer

Cash Drawer shows the Opening Drawer Amount, the Cash Payment Sale and Other Payment Sale of the session, the Expected Drawer Amount and the Difference.

  1. Count the cash in the drawer and enter the amount.
  2. Enter the Remarks.
  3. Click Close Drawer.
Cash Drawer tab with the drawer summary and closing form

Click Print Drawer Report to print the session’s summary. After closing, the till asks for a new opening amount before the next sale.

Today’s Sale

The day’s cash and other payments, and every sale of the day with its order ID, time, total and payment mode. Use Filters to narrow the list.

Today's Sale tab

Sale History

Cash payments, other payments and total sales for each day.

Sale History tab with daily totals

Drawer Reports

Every drawer session, with its starting, expected and actual cash. Click Print to print a session’s report.

Drawer Reports tab

Orders at the till

The Orders screen has three tabs: History, Orders On Hold and Offline Orders.

In History, search by order ID and click an order to see its lines, totals and payment. From there you can:

  • Return — refund every item still left on the order. This cannot be undone, and the till must be online.
  • Reorder — add the order’s items to a new cart. A cart in progress is put on hold first.
  • Print Invoice — print the receipt again.
Order history with an order selected

Offline Orders lists the sales made while the till was offline. They sync on their own when the connection returns; click Sync All Orders to send them right away.

Offline Orders tab

Products at the till

The Products screen has three tabs:

  • Low Stock Products — products at or below the outlet’s low-stock quantity.
  • Requested Products — the requests sent, with their status: Pending, Received or Declined.
  • Settings — the outlet’s Minimum Qty for low stock. Click Save after changing it.

Request stock for a low-stock product

  1. Go to Products >> Low Stock Products.
  2. Click the product.
  3. Enter the Requested Quantity, from 1 to 1000.
  4. Enter a Comment.
  5. Click Add Product. The product joins the Purchase Request list.
  6. Repeat for other products.
  7. Click Send Request.
Low Stock Products tab with the purchase request panel

The request appears in the admin panel under Point Of Sale (POS) >> Requests.

Products Settings tab with the minimum quantity

Reports at the till

The Reports screen charts the outlet’s orders, average order value, average items per order, discounts, cash payments and other payments. Choose Day, Week or Month, or pick the dates.

Till reports with orders, average order value and payments

Till settings

  • Profile — the agent’s name and email, and a new password. Click Update Profile.
  • Sync — download the products, customers, orders and cart rules again.
  • Shortcuts — the keyboard shortcuts, such as Ctrl + B to scan a barcode and Ctrl + H for held orders.
  • Regional — the till’s Locale and Currency. Click Save.
Profile tab in the till settings
Regional tab with locale and currency
Shortcuts tab listing keyboard shortcuts

EU withdrawals at the till

When EU withdrawals are switched on for the channel in both places, and the agent is allowed to handle them, a Withdrawals item appears in the till’s menu. There the agent can:

  • Record Withdrawal — record a request for an online order, using the Order Number and the Customer Email.
  • Decline — close a request as declined, with a reason.
  • Refund — refund the withdrawn items, through the Original payment method or as Cash from the drawer.

Sales made at the till cannot be withdrawn; EU withdrawal applies to online orders.

Working offline

The till keeps working when the internet connection drops. The indicator in the header shows Online or Offline.

Offline, an agent can still browse and scan products, build carts, apply discounts and cart rules, hold and resume orders, take payment, register customers and print receipts. Each sale is saved on the till and sent to the store as soon as the connection is back, and no sale is recorded twice.

Some actions need a connection: signing in, opening and closing the drawer, adding a product that is not in the catalogue, returns from the order history, low-stock requests, reports, the profile and withdrawals.

Before signing out, the till checks for sales that have not reached the store yet and asks the agent to sync them first.

Support

That is all about the User Guide of Laravel eCommerce Multi-Tenant SaaS POS. For any queries or doubts, reach out to us at [email protected].

You can also raise a ticket at our HelpDesk System.

Please explore our Laravel Development Services and Quality Bagisto Extensions.

Current Product Version - 2.4.8

Supported Framework Version - Bagisto v2.4.8

Blog Version - Bagisto v2.4.8
  • Version Bagisto v2.4.8
  • Version Bagisto v2.1.2
  • Version Bagisto v1.2.0
. . .

Leave a Comment

Your email address will not be published. Required fields are marked*


Be the first to comment.

Back to Top

Message Sent!

If you have more details or questions, you can reply to the received confirmation email.

Back to Home
IN THIS ARTICLE

Table of Content

Back to top