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.
- In the super admin panel, go to Subscription >> Plans.
- Open the plan you want to change, or create a new one.
- In the Module Assignment section, select Pos in Allow Modules.
- 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
- Go to Configure >> Point Of Sale >> Settings.
- In the General section, switch Status on.
- Click Save Configuration.

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
| Setting | What it does |
|---|---|
| Status | Switches POS on for the channel. Agents cannot sign in while it is off. |
| Pos Logo | The logo on the till’s sign-in page. JPEG, PNG or SVG. |
| Heading On Login | The heading on the sign-in page, up to 50 characters. |
| Sub-Heading On Login | The line under the heading, up to 50 characters. |
| Footer Content | Text or HTML shown under the sign-in form, up to 250 characters. |
| Footer Note | A 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.
| Setting | What it does |
|---|---|
| Print Product Name | Prints the product name under each barcode. |
| Width | Barcode width in pixels. |
| Height | Barcode height in pixels. |
| Generate Barcode With | Product Sku or Product Id: what the barcode encodes. |
| Prefix | Up to 6 characters added in front of every barcode. The till adds it to a scanned code that lacks it. |
| Hide Barcode | Hides 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
| Setting | What 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 Key | The 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.

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.

Create a receipt
- Go to Point Of Sale (POS) >> Receipts.
- Click Create Receipt.
- Enter the Receipt Title and choose the Paper Width: 58 mm, 80 mm or 104 mm.
- 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.
- Switch on Mask Customer Details to hide part of the customer’s details on the printed receipt.
- In Logo, switch on Display Logo and upload the logo.
- Enter the Header Content and Footer Content.
- Switch Status on.
- Click Save Receipt.

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
- Go to Point Of Sale (POS) >> Agents >> Outlets.
- Click Create Outlet.
- Switch Status on. An outlet saved with Status off is inactive, and its agents cannot sign in.
- Enter the Outlet Name, Email, Phone, Website and Customer Care Number, and the GST Number if you have one.
- In Receipt, choose the receipt the outlet prints.
- Enter the Outlet Address: Address, Country, State, City and Postcode.
- In Inventory, choose the Inventory Source and enter the Low Stock Quantity.
- Click Save Outlet.


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.
- Go to Point Of Sale (POS) >> Agents >> Outlets.
- In the outlet’s row, click the Assign Product icon.
- 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.

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
- Go to Point Of Sale (POS) >> Agents >> Agents.
- Click Create Agent.
- Enter the Username, First Name, Last Name and Email. The username and email must be unique within your store.
- Switch Status on.
- Switch Can Handle EU Withdrawals on if this agent may handle EU withdrawal requests.
- Choose the agent’s Outlet.
- Enter the Password, at least 6 characters, and Confirm Password.
- Optionally, upload a picture in Upload Agent Image.
- Click Save Agent.

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

Banks
Banks appear at the till when an agent takes a card or split payment, so the payment is recorded against the right bank.
- Go to Point Of Sale (POS) >> Banks.
- Click Create Bank.
- Enter the bank’s Name, Address, Email and Phone. The name can contain letters, spaces, apostrophes, full stops and hyphens, but no digits.
- Switch Bank Status on.
- In Assign Pos Agent, choose the agent who uses this bank.
- Click Save Bank.


Barcode products
Go to Point Of Sale (POS) >> Barcode Products to give products a barcode the till can scan.
Generate barcodes
- Select the products.
- Choose Select Action >> Generate Barcode.
- Click Agree.
To generate one product’s barcode, click the Generate Barcode icon in its row.

Print barcodes
- Click the Print Barcode icon in a product’s row, or select several products and click Print Barcode.
- Enter the Qty: how many copies of each barcode to print, from 1 to 100.
- Click 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.

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.

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.

Complete a request
- Go to Point Of Sale (POS) >> Requests.
- Click the view icon in the request’s row.
- Check the User Information and Request Information, including the agent’s Comment.
- Set Status to Complete or Decline.
- Click Save.

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.

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
- Open
/poson your store’s domain. - Enter the agent’s User Name and Password.
- Tick Remember Password to stay signed in longer.
- Click Login.

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.
- Enter the Opening Drawer Amount: the cash in the drawer at the start of the shift.
- Enter the Remarks.
- Click Open Drawer.
Add a customer and products
Every sale needs a customer, so select one before adding products.
- Click Add Customer at the top of the cart.
- Search for the customer by name or email and click them, or click Add New to register one.

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.

Sell a product that is not in the catalogue
- Click the Add New Product button in the header.
- Enter the Name, Price, Quantity and Weight, and the SKU if the field is shown.
- Click Proceed.

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.

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
- Click Proceed.
- Choose the payment method: Cash, Card or Split.
- For Cash, enter the amount received. The till shows the change to give.
- For Card, enter the last four digits of the card and choose the Bank.
- For Split, enter the cash part, then the card’s last four digits and the Bank for the rest.
- Click Confirm Payment.



When the order is placed, click Print Invoice to print the receipt, or Home to start the next sale.
Hold an order
- Click Hold Order in the cart.
- 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.

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.

- Click Add New Customer.
- Enter the First Name, Last Name and Email, and optionally the Phone Number and address.
- Click Add Customer.

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.
- Count the cash in the drawer and enter the amount.
- Enter the Remarks.
- Click Close Drawer.

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.

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

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

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.

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.

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
- Go to Products >> Low Stock Products.
- Click the product.
- Enter the Requested Quantity, from 1 to 1000.
- Enter a Comment.
- Click Add Product. The product joins the Purchase Request list.
- Repeat for other products.
- Click Send Request.

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

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 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.



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
Be the first to comment.