{"id":174283,"date":"2019-06-07T07:00:31","date_gmt":"2019-06-07T07:00:31","guid":{"rendered":"https:\/\/webkul.com\/blog\/?p=174283"},"modified":"2026-10-22T10:50:28","modified_gmt":"2026-10-22T10:50:28","slug":"laravel-ecommerce-point-of-sale","status":"publish","type":"post","link":"https:\/\/webkul.com\/blog\/laravel-ecommerce-point-of-sale\/","title":{"rendered":"Laravel eCommerce Point of Sale"},"content":{"rendered":"\n<p><a href=\"https:\/\/store.webkul.com\/bagisto-laravel-ecommerce-pos.html\" target=\"_blank\" rel=\"noreferrer noopener\">Laravel eCommerce Point of Sale<\/a> extension offers extensive features for admins, enabling easy creation of multi-stores.<\/p>\n\n\n\n<p>It also allows seamless tracking of daily sales and efficient customer management.<\/p>\n\n\n\n<p>The physical stores will have a POS front-end for which the admin can assign a POS agent who can easily manage the daily sales with their respective customers.<\/p>\n\n\n\n<p>The Bagisto POS system can work in both online and offline mode in case of poor connectivity.<\/p>\n\n\n\n<p>This guide documents the Laravel eCommerce Point of Sale extension for <strong>Bagisto v2.5.0<\/strong>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Compatibility<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Compatibility:<\/strong> Bagisto v2.5.0 (Laravel 13, PHP 8.4 or later)<\/li>\n\n\n\n<li><strong>Bagisto API:<\/strong> <a href=\"https:\/\/github.com\/bagisto\/bagisto-api\/tree\/main\" target=\"_blank\" rel=\"noreferrer noopener\">Bagisto Headless eCommerce<\/a> (the <code>main<\/code> branch, which carries the Bagisto 2.5.0 support) is needed, because the POS terminal communicates with the store entirely over the Bagisto API.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Which printer and scanner support Bagisto POS?<\/strong><\/h2>\n\n\n\n<p>The Bagisto Point of Sale system supports the Epson TM-T82 Thermal POS Receipt Printer.<\/p>\n\n\n\n<p>The paper width and the roll diameter are 79.5 \u00b1 0.5 (W) \u00d7 dia. 83.0; 57.5 \u00b1 0.5 (W) \u00d7&nbsp;dia. 83.0.<\/p>\n\n\n\n<p>Most barcode scanners work with the Bagisto POS system, such as the <strong>Retsol LS450<\/strong>.<\/p>\n\n\n\n<p>Check a brief overview of the POS terminal workflow&nbsp;<\/p>\n\n\n\n<p>7gjobytCnsg<\/p>\n\n\n\n<p>Check a brief overview of the POS backend settings &#8211;&nbsp;&nbsp;<\/p>\n\n\n\n<p>ynAxK7tlmLs<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Features Of Laravel eCommerce Point of Sale<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Creation of several outlets from the back-end.<\/li>\n\n\n\n<li>Sales agents can give a discount on a single cart line or on the whole cart, and apply coupons, from the front-end.<\/li>\n\n\n\n<li>Sales agents can handle customers both online and offline.&nbsp;<\/li>\n\n\n\n<li>Front-end cart hold features.<\/li>\n\n\n\n<li>Barcode generation and printing available at the back-end.<\/li>\n\n\n\n<li>Separate product inventory management by assigning inventory sources to each outlet.<\/li>\n\n\n\n<li>Support for cash, card and split payments at the front-end.<\/li>\n\n\n\n<li>Real-time sync of customers and orders in offline mode.<\/li>\n\n\n\n<li>Capability to place orders with custom products.<\/li>\n\n\n\n<li>Support for various product types: Simple, Configurable, Downloadable, Virtual, Bundle, Grouped and Booking.<\/li>\n\n\n\n<li>Customizable POS sales invoices.<\/li>\n\n\n\n<li>POS sales reporting with extensive filtering options at the admin end.<\/li>\n\n\n\n<li>Barcode prefix option added into module settings.<\/li>\n\n\n\n<li>Reorder \/ Repeat Order&nbsp;\u2013 Quickly recreate a previous order by fetching items into the current cart.<\/li>\n\n\n\n<li>Return Product \u2013 Process a return for a previous order directly at the POS terminal.<\/li>\n\n\n\n<li>Cash drawer management with reports that agents can print and reprint.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Installation of Laravel eCommerce Point of Sale<\/h3>\n\n\n\n<p>The customer will get a <strong>zip folder<\/strong>.<\/p>\n\n\n\n<p><strong>Prerequisite:<\/strong> Install Bagisto v2.5.0 first (<code>php artisan bagisto:install<\/code>), and then install the <a href=\"https:\/\/github.com\/bagisto\/bagisto-api\/tree\/main\" target=\"_blank\" rel=\"noreferrer noopener\">Bagisto API<\/a> on it. The POS terminal uses the Bagisto API, so you cannot use the till without it.<\/p>\n\n\n\n<p>Therefore, the POS terminal uses the Bagisto API, so you cannot use the till endpoints without\nit.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">composer require bagisto\/bagisto-api:dev-main<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">php artisan bagisto-api-platform:install<\/pre>\n\n\n\n<p>Install the API after Bagisto itself is installed. The API installer registers the API Platform providers in <code>bootstrap\/app.php<\/code>, and from then on every command reads the database at start-up, so it needs an installed store.<\/p>\n\n\n\n<p>Follow these steps to install the Bagisto POS Extension:<\/p>\n\n\n\n<p><strong>1. Unzip and Merge Files<\/strong><br>Extract the extension zip file and merge the <code>packages<\/code> folder into your project&#8217;s root directory.<\/p>\n\n\n\n<p><strong>2. Update <code>composer.json<\/code><\/strong><br>Add the following entry under the <code>psr-4<\/code> section in <code>composer.json<\/code>:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">\"Webkul\\\\Pos\\\\\": \"packages\/Webkul\/Pos\/src\"<\/pre>\n\n\n\n<p><strong>3. Update <code>bootstrap\/providers.php<\/code><\/strong><\/p>\n\n\n\n<p>Bagisto v2.5.0 runs on Laravel 13, where you register service providers in <code>bootstrap\/providers.php<\/code>. Add the following lines to that file:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">use Webkul\\Pos\\Providers\\PosServiceProvider;<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">PosServiceProvider::class,<\/pre>\n\n\n\n<p><strong>4. Update <code>config\/concord.php<\/code><\/strong><br>Add the following line under the <code>modules<\/code> section in <code>config\/concord.php<\/code>:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">Webkul\\Pos\\Providers\\ModuleServiceProvider::class,<\/pre>\n\n\n\n<p><strong>5. Run Commands<\/strong><br>From the project root, run the following commands in your terminal, in this order:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">composer dump-autoload<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">php artisan pos:install<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">php artisan storage:link<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">php -d memory_limit=-1 artisan bagisto-api-platform:optimize<\/pre>\n\n\n\n<p>The <code>pos:install<\/code> command runs the POS migrations, seeds the default settings and receipt, publishes the POS assets, configures the storefront key used by the terminal, and clears the application caches. <code>storage:link<\/code> serves the published POS images; skip it if the link already exists.<\/p>\n\n\n\n<p><code>bagisto-api-platform:optimize<\/code> caches the configuration and routes and pre-builds the API metadata. <strong>Do not skip it<\/strong>: without it, every till request rebuilds the metadata of the whole API and the terminal becomes slow or answers <strong>500 Internal Server Error<\/strong>. Run it again after every <code>.env<\/code> change, extension update or <code>php artisan optimize:clear<\/code>.<\/p>\n\n\n\n<p>If your <code>.env<\/code> uses <code>CACHE_STORE=database<\/code>, you can also add <code>API_PLATFORM_CACHE=file<\/code> to <code>.env<\/code>, so the API metadata is read from files instead of the <code>cache<\/code> table, and then run <code>bagisto-api-platform:optimize<\/code> again.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Accessing the POS Front-end<\/h3>\n\n\n\n<p>The POS terminal comes pre-built, and <code>php artisan pos:install<\/code> publishes it. Therefore, you do not need a separate front-end build or preview server.<\/p>\n\n\n\n<p>Once the commands above have completed, open the terminal at:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">https:\/\/example.com\/pos<\/pre>\n\n\n\n<p>Replace <code>example.com<\/code> with your own store domain. The extension registers the POS terminal as a route in your Bagisto application, so it uses the same domain as your store.<\/p>\n\n\n\n<p>You can also open the terminal from the <strong>POS Front<\/strong> button on the <strong>Agents<\/strong> and <strong>Outlets<\/strong> pages in the admin panel.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">POS stays switched off until you enable it<\/h3>\n\n\n\n<p>The installation leaves the extension switched off. Until you turn on <strong>Status<\/strong> under <strong>Configure &gt;&gt; Point Of Sale &gt;&gt; Settings &gt;&gt; General<\/strong>, the <strong>Point Of Sale (POS)<\/strong> menu is hidden in the admin panel and the terminal page returns <strong>404 Not Found<\/strong>.<\/p>\n\n\n\n<p><strong>Note:<\/strong> The terminal keeps selling while the connection is down, as long as the terminal page stays open. Do not reload the page while you are offline, because it cannot be loaded again until the connection returns.<\/p>\n\n\n\n<p>After updating the extension, hard-refresh the terminal so the browser loads the new version instead of the cached one.<\/p>\n\n\n\n<p>Once the extension is installed and its <strong>Status<\/strong> is turned on, you will see the <strong>Point Of Sale (POS)<\/strong> menu on the left-hand side of the admin panel. It contains <strong>Agents<\/strong> (with <strong>Agents<\/strong> and <strong>Outlets<\/strong>), <strong>Barcode Products<\/strong>, <strong>Orders<\/strong>, <strong>Requests<\/strong>, <strong>Banks<\/strong>, <strong>Sales Report<\/strong> and <strong>Receipts<\/strong>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2019\/06\/bagisto-pos-pos-admin-menu.webp\" alt=\"Point Of Sale (POS) menu in the Bagisto admin panel\" loading=\"lazy\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Laravel eCommerce Point of Sale Configuration<\/h2>\n\n\n\n<p>From the admin dashboard, go to <strong>Configure<\/strong>. The <strong>Point Of Sale<\/strong> group is listed right after <strong>General<\/strong> and <strong>Magic AI<\/strong>; open its <strong>Settings<\/strong> card.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2019\/06\/bagisto-pos-configuration-index.webp\" alt=\"Point Of Sale settings card on the Configure page\" loading=\"lazy\" \/><\/figure>\n\n\n\n<p>The <strong>Settings<\/strong> page has four groups: <strong>General<\/strong>, <strong>Barcode<\/strong>, <strong>Products<\/strong> and <strong>POS API<\/strong>. The image below shows the complete page; each group is described after it.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2019\/06\/bagisto-pos-configuration-settings.webp\" alt=\"POS Settings configuration page\" loading=\"lazy\" \/><\/figure>\n\n\n\n<p><strong>General Settings<\/strong><\/p>\n\n\n\n<p>The fields marked <strong>[Default]<\/strong> are set for the default channel, and the fields marked <strong>[English]<\/strong> are set for the English locale.<\/p>\n\n\n\n<p>Let&#8217;s go through the Configuration Settings one by one:<\/p>\n\n\n\n<p><strong>Status&nbsp;<\/strong><\/p>\n\n\n\n<p>Turns the whole extension on or off. While it is off, the admin menu is hidden and agents cannot open the terminal.<\/p>\n\n\n\n<p><strong>Pos Logo<\/strong><\/p>\n\n\n\n<p>Upload the logo that the POS login panel will show.<\/p>\n\n\n\n<p><strong>Heading On Login<\/strong>&nbsp;<\/p>\n\n\n\n<p>Enter the POS heading which will be visible on the POS login panel.<\/p>\n\n\n\n<p><strong>Sub-Heading On Login<\/strong><\/p>\n\n\n\n<p>Enter the sub-heading which will be visible on the POS login panel.<\/p>\n\n\n\n<p><strong>Footer Content<\/strong><\/p>\n\n\n\n<p>Enter the footer content that the POS login panel will show.<\/p>\n\n\n\n<p><strong>Footer Note&nbsp;<\/strong><\/p>\n\n\n\n<p>Enter the footer note.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Barcode&nbsp;<\/h2>\n\n\n\n<p><strong>Print Product Name&nbsp;<\/strong><\/p>\n\n\n\n<p>The admin can turn on this option to print the product name along with the product barcode.<\/p>\n\n\n\n<p><strong>Width<\/strong><\/p>\n\n\n\n<p>Here the admin can add the width of the barcode.<\/p>\n\n\n\n<p><strong>Height<\/strong><\/p>\n\n\n\n<p>Here the admin can add the height of the barcode.<\/p>\n\n\n\n<p><strong>Generate Barcode With<\/strong><\/p>\n\n\n\n<p>The admin can generate the barcode with the <strong>Product Id<\/strong> or with the <strong>Product Sku<\/strong> (stock keeping unit) from the drop-down.<\/p>\n\n\n\n<p><strong>Prefix<\/strong><\/p>\n\n\n\n<p>The admin can also add a barcode <strong>prefix<\/strong> if needed. Leave it blank if you do not want to add a prefix.<\/p>\n\n\n\n<p><strong>Hide Barcode<\/strong><\/p>\n\n\n\n<p>The admin can turn on or turn off this option as per their need.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Products<\/strong><\/h2>\n\n\n\n<p><strong>Allow SKU for Custom Product<\/strong><\/p>\n\n\n\n<p>Once the admin turns on this option, the POS agent enters an SKU for a custom product at the front end while adding it to the customer&#8217;s cart.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>POS API<\/strong><\/h2>\n\n\n\n<p>Bagisto v2.5.0 serves the POS terminal over the Bagisto API, and this section holds the settings for that till API.<\/p>\n\n\n\n<p><strong>Agent Token Lifetime (Days)<\/strong><\/p>\n\n\n\n<p>How many days an agent stays signed in when they tick <strong>Remember Password<\/strong> at login. Leave it empty to use the default of <strong>30<\/strong> days. An agent who does not tick <strong>Remember Password<\/strong> stays signed in for one day.<\/p>\n\n\n\n<p><strong>Storefront Key<\/strong><\/p>\n\n\n\n<p>The storefront key the POS terminal presents when it calls the Bagisto API.<\/p>\n\n\n\n<p>This key is set automatically when you run <code>php artisan pos:install<\/code>, so in most installations it does not need to be changed by hand.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Manage Agent<\/h2>\n\n\n\n<p>Go to <strong>Point Of Sale (POS) &gt;&gt; Agents &gt;&gt; Agents<\/strong> to manage the people who sign in to the terminal.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Agents:<\/strong> Here you can see the list of agents that the admin created.<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2019\/06\/bagisto-pos-agents-list.webp\" alt=\"POS agents list\" loading=\"lazy\" \/><\/figure>\n\n\n\n<p><strong>Create Agent<\/strong><\/p>\n\n\n\n<p>The admin can add agents by clicking on the <strong>&#8220;Create Agent&#8221;<\/strong> button, which opens the <strong>Add Agent<\/strong> screen.<\/p>\n\n\n\n<p>Here, the admin needs to add the below details:<\/p>\n\n\n\n<p><strong>Username<\/strong><\/p>\n\n\n\n<p>The admin can add the username of the agent. This is the username the agent signs in to the POS terminal with.<\/p>\n\n\n\n<p><strong>First Name&nbsp;<\/strong><\/p>\n\n\n\n<p>Here the admin can add the first name of the agent.<\/p>\n\n\n\n<p><strong>Last Name<\/strong><\/p>\n\n\n\n<p>The admin needs to add the last name of the agent.<\/p>\n\n\n\n<p><strong>Email&nbsp;<\/strong><\/p>\n\n\n\n<p>The admin can add the email ID of the agent.<\/p>\n\n\n\n<p><strong>Upload Agent Image<\/strong><\/p>\n\n\n\n<p>Add an image to represent the agent.<\/p>\n\n\n\n<p><strong>Password<\/strong> and <strong>Confirm Password<\/strong><\/p>\n\n\n\n<p>The admin can set the password for the agent and confirm it.<\/p>\n\n\n\n<p><strong>Outlet<\/strong><\/p>\n\n\n\n<p>Select the outlet from the drop-down.<\/p>\n\n\n\n<p><strong>Status<\/strong><\/p>\n\n\n\n<p>The admin can activate or deactivate the agent from the toggle button. A deactivated agent cannot sign in to the terminal.<\/p>\n\n\n\n<p>Lastly, hit the <strong>Save Agent<\/strong> button to save the agent settings correctly.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2019\/06\/bagisto-pos-add-agent.webp\" alt=\"Add Agent screen\" loading=\"lazy\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Manage Outlet<\/strong><\/h2>\n\n\n\n<p>Go to <strong>Point Of Sale (POS) &gt;&gt; Agents &gt;&gt; Outlets<\/strong> to see the list of POS outlets.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2019\/06\/bagisto-pos-outlets-list.webp\" alt=\"POS outlets list\" loading=\"lazy\" \/><\/figure>\n\n\n\n<p>First, the admin can add an outlet by clicking on the <strong>&#8220;Create Outlet&#8221;<\/strong> button, which opens the <strong>Add Outlet<\/strong> screen.<\/p>\n\n\n\n<p>Here, the admin needs to add some details \u2013<\/p>\n\n\n\n<p><strong>Outlet Name<\/strong><\/p>\n\n\n\n<p>The admin needs to add the name of the outlet in the field.<\/p>\n\n\n\n<p><strong>Email<\/strong><\/p>\n\n\n\n<p>Enter the email address of the outlet.<\/p>\n\n\n\n<p><strong>Phone<\/strong> and <strong>Customer Care Number<\/strong><\/p>\n\n\n\n<p>Enter the outlet&#8217;s phone number and the customer care number to print on the receipt.<\/p>\n\n\n\n<p><strong>GST Number<\/strong><\/p>\n\n\n\n<p>Enter the tax registration number of the outlet, if applicable.<\/p>\n\n\n\n<p><strong>Website<\/strong><\/p>\n\n\n\n<p>Enter the website address associated with the outlet.<\/p>\n\n\n\n<p><strong>Status&nbsp;<\/strong><\/p>\n\n\n\n<p>The admin can activate or deactivate the outlet status.<\/p>\n\n\n\n<p><strong>Outlet Address<\/strong><\/p>\n\n\n\n<p>Enter the outlet address, then select the <strong>Country<\/strong> and <strong>State<\/strong>, and enter the <strong>City<\/strong> and <strong>Postcode<\/strong> of the outlet.<\/p>\n\n\n\n<p><strong>Inventory Source<\/strong><\/p>\n\n\n\n<p>The admin has to choose the inventory source for each outlet from the drop-down. The POS uses this source to count the outlet&#8217;s stock.<\/p>\n\n\n\n<p><strong>Low Stock Quantity<\/strong><\/p>\n\n\n\n<p>Set the threshold below which a product is treated as low stock for this outlet. Products under this threshold appear in the agent&#8217;s <strong>Low Stock Products<\/strong> list at the terminal. Agents can also change this value from the terminal, as described under <strong>POS Panel-Product Management<\/strong>.<\/p>\n\n\n\n<p><strong>Receipt<\/strong><\/p>\n\n\n\n<p>The admin selects the receipt template for this outlet from the <strong>Receipt<\/strong> drop-down. The list contains the receipts created under the <strong>Receipts<\/strong> section described later in this article.<\/p>\n\n\n\n<p>Finally, hit the <strong>Save Outlet<\/strong> button to save the outlet settings correctly.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2019\/06\/bagisto-pos-add-outlet.webp\" alt=\"Add Outlet screen\" loading=\"lazy\" \/><\/figure>\n\n\n\n<p>After creating the outlet, click the <strong>Assign Product<\/strong> action on its row, the list icon between the edit and delete icons, to choose which products the outlet sells.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2019\/06\/bagisto-pos-outlet-assign-action.webp\" alt=\"Assign Product action on an outlet row\" loading=\"lazy\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Manage Products<\/strong><\/h3>\n\n\n\n<p>The <strong>Manage Outlet Products<\/strong> page lists your catalog with each product&#8217;s quantity at the outlet. Select the products, open <strong>Select Action<\/strong>, choose <strong>Update Assign<\/strong>, then pick <strong>Assign<\/strong> or <strong>Unassign<\/strong> and confirm. The terminal shows only assigned products, after the agent syncs.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2019\/06\/bagisto-pos-outlet-products-assign.webp\" alt=\"Update Assign mass action on Manage Outlet Products\" loading=\"lazy\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2019\/06\/bagisto-pos-outlet-products.webp\" alt=\"Manage Outlet Products list\" loading=\"lazy\" \/><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">Outlet Stock Rules<\/h4>\n\n\n\n<p><strong>**Note:<\/strong><\/p>\n\n\n\n<p>Each outlet uses its own <strong>Inventory Source<\/strong>, and the POS counts its stock at that source.<\/p>\n\n\n\n<p>Therefore, an outlet can hold a different quantity of the same product from another outlet or from an unassigned warehouse.<\/p>\n\n\n\n<p>In addition, Bagisto shares the stock instead of copying it: a POS sale reduces the quantity at the outlet&#8217;s inventory source.<\/p>\n\n\n\n<p>Also, a change made elsewhere in Bagisto for that source appears at the till after the agent syncs.<\/p>\n\n\n\n<p>For example, for a configurable product, the POS uses the quantity of the <strong>chosen variant<\/strong> at the outlet&#8217;s inventory source, not the parent product.<\/p>\n\n\n\n<p>A configurable parent carries no stock of its own.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Barcode Product List<\/strong><\/h3>\n\n\n\n<p>Go to <strong>Point Of Sale (POS) &gt;&gt; Barcode Products<\/strong>. Here the admin can view the products with their price, quantity and generated barcode.<\/p>\n\n\n\n<p>They can generate product barcodes so the POS agent can add products to the cart by scanning them during checkout.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2019\/06\/bagisto-pos-barcode-products.webp\" alt=\"Barcode Products list\" loading=\"lazy\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Generate Barcode<\/strong><\/h3>\n\n\n\n<p>To generate the barcode for one product, click the barcode icon on its row. To generate several at once, select the products, open <strong>Select Action<\/strong> and choose <strong>Generate Barcode<\/strong>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2019\/06\/bagisto-pos-generate-barcode.webp\" alt=\"Generate Barcode mass action\" loading=\"lazy\" \/><\/figure>\n\n\n\n<p>To print barcode labels for one product, click the printer icon on its row. To print several, select the products; a <strong>Print Barcode<\/strong> button appears above the list.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2019\/06\/bagisto-pos-print-barcode-action.webp\" alt=\"Print Barcode button for the selected products\" loading=\"lazy\" \/><\/figure>\n\n\n\n<p>On the <strong>Print Barcode<\/strong> page, enter in <strong>Qty<\/strong> how many labels to print for each selected product, and click <strong>Print<\/strong>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2019\/06\/bagisto-pos-print-barcode.webp\" alt=\"Print Barcode page\" loading=\"lazy\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Orders<\/strong><\/h3>\n\n\n\n<p>Go to <strong>Point Of Sale (POS) &gt;&gt; Orders<\/strong> to see every order placed at a terminal, with its <strong>Order ID<\/strong>, <strong>Customer Name<\/strong>, <strong>Order Date<\/strong>, <strong>Grand Total<\/strong> and <strong>Status<\/strong>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2019\/06\/bagisto-pos-admin-pos-orders.webp\" alt=\"POS Orders list in the admin panel\" loading=\"lazy\" \/><\/figure>\n\n\n\n<p>Click the view icon on a row to open the order in the store&#8217;s order page. POS orders show an extra <strong>Order Note<\/strong> panel with the note the agent added at the terminal.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2019\/06\/bagisto-pos-admin-order-view.webp\" alt=\"POS order on the admin order page\" loading=\"lazy\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Requests<\/h3>\n\n\n\n<p>Go to <strong>Point Of Sale (POS) &gt;&gt; Requests<\/strong> to see the low stock requests that agents send from the terminal.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2019\/06\/bagisto-pos-admin-requests.webp\" alt=\"POS Requests list\" loading=\"lazy\" \/><\/figure>\n\n\n\n<p>Click the view icon on a request to open <strong>Requested Product Details<\/strong>. The page shows <strong>User Information<\/strong> \u2014 the agent, the outlet and its inventory source \u2014 and <strong>Request Information<\/strong> \u2014 the product, the <strong>Requested Qty<\/strong>, the request date and the agent&#8217;s comment.<\/p>\n\n\n\n<p>Set the <strong>Status<\/strong> to <strong>Complete<\/strong> or <strong>Decline<\/strong> and click <strong>Save<\/strong>. You can also change several requests at once with the <strong>Update Status<\/strong> mass action on the list.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2019\/06\/bagisto-pos-admin-request-view.webp\" alt=\"Requested Product Details\" loading=\"lazy\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Completing a request adds stock<\/h3>\n\n\n\n<p>When you set a request to <strong>Complete<\/strong>, the requested quantity is added to the product&#8217;s stock at the outlet&#8217;s inventory source. The agent sees the request as <strong>Received<\/strong> at the terminal.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Banks<\/h3>\n\n\n\n<p>Go to <strong>Point Of Sale (POS) &gt;&gt; Banks<\/strong> to add the banks that agents choose from when a customer pays by card.<\/p>\n\n\n\n<p>The admin can also see the Bank List in this section.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2019\/06\/bagisto-pos-banks-list.webp\" alt=\"POS banks list\" loading=\"lazy\" \/><\/figure>\n\n\n\n<p>Once the admin clicks on the <strong>&#8220;Create Bank&#8221;<\/strong> button, the <strong>Create New Bank<\/strong> screen opens, where they add the bank details.&nbsp;<\/p>\n\n\n\n<p>General&nbsp;<\/p>\n\n\n\n<p><strong>Name:<\/strong> The admin needs to add the bank name.<\/p>\n\n\n\n<p><strong>Address:<\/strong> Enter the bank address.&nbsp;<\/p>\n\n\n\n<p><strong>Email:<\/strong> Enter the email ID.&nbsp;<\/p>\n\n\n\n<p><strong>Phone:<\/strong> The admin can add the phone number.&nbsp;<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Pos Agent &amp; Bank Status&nbsp;<\/h4>\n\n\n\n<p><strong>Assign Pos Agent:<\/strong> Here the admin can assign the bank to the POS agent.&nbsp;<\/p>\n\n\n\n<p><strong>Bank Status:<\/strong> Select the bank status, Active\/Inactive.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2019\/06\/bagisto-pos-add-bank.webp\" alt=\"Create New Bank screen\" loading=\"lazy\" \/><\/figure>\n\n\n\n<p>Now at the POS outlet, when the customer pays by card, the POS agent selects the bank from the <strong>Bank<\/strong> drop-down on the payment screen, as shown below.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2019\/06\/bagisto-pos-payment-card.webp\" alt=\"Selecting the bank for a card payment\" loading=\"lazy\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Sales Report<\/h3>\n\n\n\n<p>Go to <strong>Point Of Sale (POS) &gt;&gt; Sales Report<\/strong> to see the orders placed at your terminals. Orders placed on the storefront are not included.<\/p>\n\n\n\n<p>Each row shows the <strong>Order ID<\/strong>, <strong>Order Date<\/strong>, <strong>Status<\/strong>, <strong>Grand Total<\/strong>, <strong>Payment Method<\/strong>, <strong>Order Note<\/strong>, <strong>Outlet Name<\/strong> and <strong>Bank Name<\/strong>. You can filter by these columns, for example by bank or payment method, export the list, and click the view icon to open the order.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2019\/06\/bagisto-pos-admin-sales-report.webp\" alt=\"POS Sales Reports\" loading=\"lazy\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Receipts<\/h3>\n\n\n\n<p>Go to <strong>Point Of Sale (POS) &gt;&gt; Receipts<\/strong> to add, edit, preview and delete the receipt templates that outlets print.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2019\/06\/bagisto-pos-receipts-list.webp\" alt=\"POS receipts list\" loading=\"lazy\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Add Receipt<\/h3>\n\n\n\n<p>The admin can add a new receipt by clicking on <strong>&#8220;Create Receipt&#8221;<\/strong>, which opens the <strong>Create New Receipt<\/strong> screen. The screen has four groups: <strong>General<\/strong>, <strong>Logo<\/strong>, <strong>Header<\/strong> and <strong>Footer<\/strong>.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Receipt Title:&nbsp;<\/strong>The admin can add the title of the receipt.<\/li>\n\n\n\n<li><strong>Status:&nbsp;<\/strong>The admin can turn on or turn off the receipt status.<\/li>\n\n\n\n<li><strong>Display Outlet Name:&nbsp;<\/strong>By enabling this, the admin can show the outlet name.<\/li>\n\n\n\n<li><strong>Display Outlet Address:&nbsp;<\/strong>By enabling this, the admin can show the outlet address on the receipt.<\/li>\n\n\n\n<li><strong>Display Date:&nbsp;<\/strong>By enabling this option, the admin can show the date on the receipt.<\/li>\n\n\n\n<li><strong>Display Order ID:&nbsp;<\/strong>The admin can show the order ID on the receipt by enabling this.<\/li>\n\n\n\n<li><strong>Order ID Label:&nbsp;<\/strong>The admin can add the order ID label.<\/li>\n\n\n\n<li><strong>Display Customer Name:&nbsp;<\/strong>By enabling this, the admin can show the customer name on the receipt.<\/li>\n\n\n\n<li><strong>Display Customer Email:&nbsp;<\/strong>By enabling this, the admin can show the customer&#8217;s email address on the receipt.<\/li>\n\n\n\n<li><strong>Display Customer Number:&nbsp;<\/strong>By enabling this, the admin can show the customer&#8217;s phone number on the receipt.<\/li>\n\n\n\n<li><strong>Mask Customer Details:&nbsp;<\/strong>Partially hides the customer&#8217;s details on the printed receipt, so a receipt left at the counter does not expose them.<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\">Totals and Payment Settings<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Display Sub Total:<\/strong>&nbsp;The admin can show the subtotal on the receipt by enabling this.<\/li>\n\n\n\n<li><strong>Sub Total Label:<\/strong> The admin can add the sub-total label.<\/li>\n\n\n\n<li><strong>Display Tax:&nbsp;<\/strong>By enabling this, the admin can show tax on the receipt.<\/li>\n\n\n\n<li><strong>Tax Label:&nbsp;<\/strong>The admin can add the tax label.<\/li>\n\n\n\n<li><strong>Display Credit Amount:&nbsp;<\/strong>By enabling this, the admin can show the credit amount on the receipt.<\/li>\n\n\n\n<li><strong>Credit Amount Label:<\/strong> The admin adds the credit amount label.<\/li>\n\n\n\n<li><strong>Display Change Amount:&nbsp;<\/strong>The admin can show the change amount by enabling this.<\/li>\n\n\n\n<li><strong>Change Amount Label:&nbsp;<\/strong>The admin can add the change amount label.<\/li>\n\n\n\n<li><strong>Display Cashier Name:&nbsp;<\/strong>By enabling this, the admin can show the cashier&#8217;s name on the receipt.<\/li>\n\n\n\n<li><strong>Cashier Name Label:&nbsp;<\/strong>The admin can add the cashier name label.<\/li>\n\n\n\n<li><strong>Grand Total Label:&nbsp;<\/strong>The admin can add the grand total label.<\/li>\n\n\n\n<li><strong>Display Discount Amount:<\/strong> By enabling this, the admin can show the discount amount on the receipt.<\/li>\n\n\n\n<li><strong>Discount Amount Label:&nbsp;<\/strong>The admin can add the discount label.<\/li>\n\n\n\n<li><strong>Show Order Barcode:<\/strong> Prints the order&#8217;s barcode on the receipt, so the order can be scanned back at the counter for a reorder or a return.<\/li>\n\n\n\n<li><strong>Show Print Confirmation:<\/strong> The terminal asks the agent to confirm before it sends the receipt to the printer.<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\">Logo and Print Settings<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Display Logo:<\/strong> By enabling this, the admin can show the logo on the receipt.<\/li>\n\n\n\n<li><strong>Upload Logo \/ Logo Alt \/ Logo Width (in px) \/ Logo Height (in px):<\/strong> The admin can upload the logo, set its alternative text, and set its width and height in pixels.<\/li>\n\n\n\n<li><strong>Header Content \/ Footer Content:<\/strong> The admin can add the header or footer content on the receipt.<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\">Receipt Settings<\/h4>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2019\/06\/bagisto-pos-create-receipt.webp\" alt=\"Create New Receipt screen\" loading=\"lazy\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Laravel eCommerce Point of Sale Front-end<\/h3>\n\n\n\n<p>The agent signs in to the terminal with the <strong>User Name<\/strong> and <strong>Password<\/strong> the admin created. Ticking <strong>Remember Password<\/strong> keeps the agent signed in for the number of days set in <strong>Agent Token Lifetime (Days)<\/strong>; otherwise the sign-in lasts one day.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2019\/06\/bagisto-pos-till-login.webp\" alt=\"POS terminal login page\" loading=\"lazy\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"panel-16\"><strong>POS Cash Drawer Amount<\/strong><\/h3>\n\n\n\n<p>After signing in, the agent is prompted to open the cash drawer. The <strong>Cash Drawer<\/strong> pop-up asks for the <strong>Opening Drawer Amount<\/strong> and <strong>Remarks<\/strong>; clicking <strong>Open Drawer<\/strong> starts the session.<\/p>\n\n\n\n<p>The POS agent adds the opening drawer amount, for example $200 as shown in the image, which is the cash in the drawer at the start of the day.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2019\/06\/bagisto-pos-cash-drawer.webp\" alt=\"Cash Drawer pop-up\" loading=\"lazy\" \/><\/figure>\n\n\n\n<p>After that, the agent reaches the POS panel. It shows the categories and the products that the admin assigned to the outlet, with the cart on the right, where the POS agent manages the customer&#8217;s order.<\/p>\n\n\n\n<p>The POS terminal sidebar gives access to <strong>Home<\/strong>, <strong>Customers<\/strong>, <strong>Cashier<\/strong>, <strong>Orders<\/strong>, <strong>Products<\/strong>, <strong>Reports<\/strong>, <strong>Settings<\/strong> and <strong>Logout<\/strong>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2019\/06\/bagisto-pos-till-home.webp\" alt=\"POS terminal home page\" loading=\"lazy\" \/><\/figure>\n\n\n\n<p>Once you have made any changes at the admin end, make sure you sync the POS front end to reflect the changes.<\/p>\n\n\n\n<p>The terminal keeps its catalog locally for offline sales, so newly assigned products and changed fields reach an agent only after a sync.<\/p>\n\n\n\n<p>You can do this by hitting the sync button at the top right-hand side of the header, or from <strong>Settings &gt;&gt; Sync<\/strong>.<\/p>\n\n\n\n<p>The POS agent can easily <strong>search for<\/strong> any product from the search bar.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2019\/06\/bagisto-pos-product-search.webp\" alt=\"Searching products at the till\" loading=\"lazy\" \/><\/figure>\n\n\n\n<p>POS agents can also look for the products in their categories. Selecting a category shows its sub-categories next to it, as shown in the image below.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2019\/06\/bagisto-pos-product-categories.webp\" alt=\"Browsing products by category\" loading=\"lazy\" \/><\/figure>\n\n\n\n<p>Moreover, the POS agent can add products to the cart by scanning their barcodes. The barcode button in the header (or <strong>Ctrl + B<\/strong>) opens <strong>Enter Barcode<\/strong>, where a scanned or typed barcode adds the product when the agent clicks <strong>Proceed<\/strong>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2019\/06\/bagisto-pos-enter-barcode.webp\" alt=\"Enter Barcode pop-up\" loading=\"lazy\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Reorder \/ Repeat Order Feature<\/h2>\n\n\n\n<p>The Reorder feature allows POS agents to quickly recreate a previous order for a returning customer.<\/p>\n\n\n\n<p>Instead of searching the catalog and adding each product manually, the agent can fetch all items from an existing order and load them directly into the current active cart.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">How to Process a Reorder<\/h3>\n\n\n\n<p>You start a reorder from the order history:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Go to <strong>Orders &gt;&gt; History<\/strong>.<\/li>\n\n\n\n<li>Find the previous order by searching for its <strong>Order ID<\/strong>, and select it. The order details open on the right with the <strong>Return<\/strong>, <strong>Reorder<\/strong> and <strong>Print Invoice<\/strong> buttons.<\/li>\n\n\n\n<li>Click <strong>Reorder<\/strong>. Offline orders that have not synced yet have the same button under <strong>Orders &gt;&gt; Offline Orders<\/strong>.<\/li>\n\n\n\n<li>Select a customer first if none is chosen \u2014 the terminal will prompt with <em>&#8220;Please select a customer first.&#8221;<\/em><\/li>\n\n\n\n<li><em>[System Check]<\/em>&nbsp;If your current active cart already has items, the terminal moves that cart to <strong>Hold Orders<\/strong> so the reorder starts from a clean basket, and confirms with <em>&#8220;Current cart has been moved to hold orders.&#8221;<\/em><\/li>\n\n\n\n<li>The terminal shows a <strong>Reorder Summary<\/strong>. It lists the items added to the cart, the items modified because of stock limits, and the items skipped.<\/li>\n<\/ol>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2019\/06\/bagisto-pos-order-details.webp\" alt=\"Order details with the Return, Reorder and Print Invoice buttons\" loading=\"lazy\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Smarter Cart Recalculations<\/h3>\n\n\n\n<p>Bagisto POS handles the heavy lifting when bringing past items into today&#8217;s checkout cart:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Price &amp; Tax Recalculation:<\/strong>&nbsp;All prices and taxes are updated to their&nbsp;<em>current<\/em>&nbsp;values, so a repeat order is charged at today&#8217;s price rather than the price on the original order.<\/li>\n\n\n\n<li><strong>Smart Variations:<\/strong>&nbsp;For products with several sizes or colors, the system fetches the exact variant bought previously and checks that variant&#8217;s own stock at the outlet.<\/li>\n\n\n\n<li><strong>Partial Reorder Support:<\/strong>&nbsp;If the POS cannot supply an item from the old order, it reports the item in the Reorder Summary. It then loads what is available, so you do not lose the sale. The POS reports an item as skipped when the product was deleted, disabled, or out of stock. It reports an item as modified when only part of the requested quantity is available.<\/li>\n<\/ul>\n\n\n\n<p>In the example below, one item of the old order was added to the cart, and the other was skipped because it is out of stock at the outlet.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2019\/06\/bagisto-pos-reorder-summary.webp\" alt=\"Reorder Summary with a skipped out-of-stock item\" loading=\"lazy\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">&nbsp;Return Product<\/h2>\n\n\n\n<p>Handling returns manually by issuing a refund and creating a completely new order is time-consuming.<\/p>\n\n\n\n<p>The <strong>Return Product<\/strong>&nbsp;feature introduces a dedicated workflow right at the POS terminal, allowing agents to process a return in a single, unified transaction.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">How to Process a Return<\/h3>\n\n\n\n<p>When a customer brings an order back, follow this flow:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Go to <strong>Orders &gt;&gt; History<\/strong> and select the customer&#8217;s original order.<\/li>\n\n\n\n<li>Click <strong>Return<\/strong>. The button appears only while the terminal is online and the order still has items that have not been returned.<\/li>\n\n\n\n<li>The terminal creates the refund straight away and confirms with <em>&#8220;Refund created successfully&#8221;<\/em>. The order&#8217;s status changes to <strong>Closed<\/strong> in the order history and in the admin panel.<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\">A return covers the whole order<\/h3>\n\n\n\n<p><strong>Return<\/strong> refunds every item on the order that has not been returned yet, in one step. The terminal does not ask for a confirmation, you cannot pick individual items or quantities, and a return cannot be undone.<\/p>\n\n\n\n<p>An offline order that has not synced yet can be returned from <strong>Orders &gt;&gt; Offline Orders<\/strong> instead.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2019\/06\/bagisto-pos-order-returned.webp\" alt=\"Return completed at the till\" loading=\"lazy\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Configurable Products at the Till<\/h3>\n\n\n\n<p>When the POS agent opens a configurable product, the terminal shows each configurable attribute \u2014 for example <strong>Color<\/strong> and <strong>Size<\/strong> \u2014 with the options that can actually be sold.<\/p>\n\n\n\n<p>Then, once the agent selects a complete combination, the terminal finds the exact child variant and shows its <strong>Selected Variant Price<\/strong>.<\/p>\n\n\n\n<p>The agent can then set the quantity and click <strong>Add to Cart<\/strong>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2019\/06\/bagisto-pos-configurable-product.webp\" alt=\"Choosing a variant of a configurable product\" loading=\"lazy\" \/><\/figure>\n\n\n\n<p>The terminal checks the quantity against the stock that the <strong>chosen variant<\/strong> has at the outlet&#8217;s inventory source.<\/p>\n\n\n\n<p>The same variant decides the price, the available quantity and the line that reaches the cart.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">POS &#8211; Custom Product<\/h3>\n\n\n\n<p>The POS agent can also add a product to the cart which is not available in their POS catalog but is available in the physical outlet.<\/p>\n\n\n\n<p>The POS agent clicks the add product button in the header, or presses <strong>Ctrl + Alt + N<\/strong>.<\/p>\n\n\n\n<p>The <strong>Add New Product<\/strong> pop-up asks for the <strong>Name<\/strong>, <strong>Price<\/strong>, <strong>Quantity<\/strong> and <strong>Weight<\/strong>, and the <strong>SKU<\/strong> when <strong>Allow SKU for Custom Product<\/strong> is turned on in the configuration. Click <strong>Proceed<\/strong>: the terminal creates the product, adds it to the outlet&#8217;s catalog and puts one in the cart.<\/p>\n\n\n\n<p>Select the customer before you add a custom product. Without a customer, the product is still created, but the terminal reports <em>&#8220;No customer is selected.&#8221;<\/em> and the cart stays empty; add the product from the catalog after choosing the customer.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2019\/06\/bagisto-pos-add-custom-product.webp\" alt=\"Add New Product pop-up\" loading=\"lazy\" \/><\/figure>\n\n\n\n<p>After that, the POS agent can proceed with the order as normal.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">POS \u2013 Cashier Management<\/h3>\n\n\n\n<p>Under the&nbsp;<strong>Cashier<\/strong> section, the POS agent manages the functionalities given below \u2013<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Cash Drawer<\/li>\n\n\n\n<li>Today&#8217;s Sale<\/li>\n\n\n\n<li>Sale History<\/li>\n\n\n\n<li>Drawer Reports<\/li>\n<\/ul>\n\n\n\n<p>After the agent opens the <strong>Cash Drawer<\/strong> tab, they can see the <strong>Drawer Amount Summary<\/strong>. It lists the <strong>Opening Drawer Amount<\/strong>, <strong>Cash Payment Sale<\/strong>, <strong>Other Payment Sale<\/strong>, and <strong>Expected Drawer Amount<\/strong>.<\/p>\n\n\n\n<p>The agent counts the cash in the drawer, enters it in the amount field below the summary, and adds <strong>Remarks<\/strong> describing the counter closure. The terminal then shows the <strong>Difference<\/strong> between the expected amount and the counted amount.<\/p>\n\n\n\n<p>Clicking <strong>Close Drawer<\/strong> closes the counter for that session, and <strong>Print Drawer Report<\/strong> prints the drawer slip. The next sign-in asks for a new opening amount.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2019\/06\/bagisto-pos-drawer-summary.webp\" alt=\"Drawer Amount Summary and closing the drawer\" loading=\"lazy\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Drawer Reports<\/h2>\n\n\n\n<p>Under <strong>Cashier &gt;&gt; Drawer Reports<\/strong>, the agent can review every drawer session that has been opened and closed.<\/p>\n\n\n\n<p>Each row carries the <strong>Report ID<\/strong>, the <strong>Type<\/strong> (Open or Close), the <strong>Print Time<\/strong>, the <strong>Starting Cash<\/strong>, the <strong>Expected Cash<\/strong>, the <strong>Actual Cash<\/strong> and the <strong>Variance Cash<\/strong>.<\/p>\n\n\n\n<p>The agent can narrow the list with <strong>Filters<\/strong>, and print any slip again with the <strong>Print<\/strong> action on its row.<\/p>\n\n\n\n<p>The printed drawer slip shows the POS agent, the opening and closing times, and the opening amount.<\/p>\n\n\n\n<p>It also shows the payment summary, total sales, expected amount, actual closing amount and difference.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2019\/06\/bagisto-pos-drawer-reports.webp\" alt=\"Drawer Reports\" loading=\"lazy\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Today&#8217;s Sale<\/h2>\n\n\n\n<p>Under&nbsp;<strong>Cashier<\/strong>, another option,&nbsp;<strong>Today&#8217;s Sale<\/strong>, is available. It shows the <strong>Opening Drawer Amount<\/strong>, the&nbsp;<strong>Cash Payment Sale<\/strong>&nbsp;and the&nbsp;<strong>Other Payment Sale<\/strong>.<\/p>\n\n\n\n<p>Below them, the <strong>Order ID<\/strong>, <strong>Time<\/strong>, <strong>Order Total<\/strong> and <strong>Payment Mode<\/strong> of each order placed today are listed, and <strong>Filters<\/strong> narrows the list, for example by payment mode.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2019\/06\/bagisto-pos-todays-sale.webp\" alt=\"Today's Sale\" loading=\"lazy\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Sale History<\/h2>\n\n\n\n<p>Under <strong>Cashier &gt;&gt; Sale History<\/strong>, the agent sees their takings day by day: the <strong>Date<\/strong>, <strong>Cash Payments<\/strong>, <strong>Other Payments<\/strong>, <strong>Total Sale<\/strong> and the <strong>Drawer Note<\/strong>. Use <strong>Filters<\/strong> to narrow the list by date range or by amount.<\/p>\n\n\n\n<p>Individual orders, with the <strong>Reorder<\/strong> and <strong>Return<\/strong> actions, are under <strong>Orders &gt;&gt; History<\/strong>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2019\/06\/bagisto-pos-sale-history.webp\" alt=\"Sale History\" loading=\"lazy\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">POS &#8211; Order Management<\/h3>\n\n\n\n<p>The POS agent can manage sales activity such as adding customer details and products to the cart.<\/p>\n\n\n\n<p>They can also put the cart on hold to process it later and take payment for the order from their panel.<\/p>\n\n\n\n<p>Start each sale by choosing the customer. Click <strong>Add Customer<\/strong> at the top of the cart to open the <strong>Customers<\/strong> pop-up, then search the customer by name or email and select them. Customers created while the terminal is offline are listed under the <strong>Offline Customers<\/strong> tab until they are synced.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2019\/06\/bagisto-pos-select-customer.webp\" alt=\"Customers pop-up\" loading=\"lazy\" \/><\/figure>\n\n\n\n<p>To register a new customer, click <strong>Add New<\/strong> in the pop-up, or the <strong>+<\/strong> button next to <strong>Add Customer<\/strong>. The terminal shows the form below.<\/p>\n\n\n\n<p>Fill in the <strong>First Name<\/strong>, <strong>Last Name<\/strong>, <strong>Phone Number<\/strong>, <strong>Email<\/strong>, <strong>Address<\/strong>, <strong>Country<\/strong>, <strong>State<\/strong>, <strong>City<\/strong> and <strong>Pin code<\/strong>, then click <strong>Add Customer<\/strong>. The email and phone number must not already belong to another customer.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2019\/06\/bagisto-pos-add-customer.webp\" alt=\"Add New Customer form\" loading=\"lazy\" \/><\/figure>\n\n\n\n<p>With the customer selected, the POS agent adds the products to the cart by clicking them in the catalog.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2019\/06\/bagisto-pos-cart-two-products.webp\" alt=\"Cart with two products\" loading=\"lazy\" \/><\/figure>\n\n\n\n<p><strong>Cart Drawer<\/strong><\/p>\n\n\n\n<p>The cart works as a drawer that the agent can slide away to see more of the catalog while selling:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Click the arrow at the top right of the cart, next to the customer. When you point at it, it shows <strong>Hide Cart<\/strong>.<\/li>\n<\/ol>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2019\/06\/bagisto-pos-cart-drawer-hide.webp\" alt=\"Hide Cart button at the top of the cart\" loading=\"lazy\" \/><\/figure>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>The cart slides into a small cart on the right, and the product grid widens. The small cart keeps the number of items, the first items, the <strong>Payable Amount<\/strong> and a <strong>Pay<\/strong> button in view, so the agent can still take payment from it.<\/li>\n\n\n\n<li>Click <strong>Show Cart<\/strong>, or the small cart itself, to open the full cart again.<\/li>\n<\/ol>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2019\/06\/bagisto-pos-cart-drawer-small.webp\" alt=\"Small cart with the Show Cart button\" loading=\"lazy\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">POS Panel- Apply Discount<\/h3>\n\n\n\n<p>The POS agent can give a discount on a single cart line, or on the whole cart.<\/p>\n\n\n\n<p>To discount one line, expand the line with the arrow on its left. Enter a percentage in its <strong>Discount<\/strong> field and click the green apply button, as shown below. The largest discount allowed is <strong>99.99%<\/strong>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2019\/06\/bagisto-pos-line-discount.webp\" alt=\"Discount on a single cart line\" loading=\"lazy\" \/><\/figure>\n\n\n\n<p>To discount the whole cart, click <strong>Discount<\/strong> at the bottom of the cart. In the <strong>Apply Discount<\/strong> pop-up, choose <strong>Percent (%)<\/strong> or <strong>$ Fixed<\/strong>, enter the <strong>Discount Amount<\/strong> and click <strong>Apply<\/strong>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2019\/06\/bagisto-pos-cart-discount.webp\" alt=\"Apply Discount pop-up for the whole cart\" loading=\"lazy\" \/><\/figure>\n\n\n\n<p>Next to <strong>Discount<\/strong>, <strong>Coupon<\/strong> applies a coupon code from the store&#8217;s cart rules, and <strong>Note<\/strong> adds an order note to the cart.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Product Checkout<\/h3>\n\n\n\n<p>Once the cart is ready, the POS agent clicks <strong>Proceed<\/strong> in the cart (or presses <strong>Ctrl + Enter<\/strong>) to open the payment screen. It shows the <strong>Payable Amount<\/strong>, the amount <strong>Received<\/strong> and the <strong>Remaining<\/strong> amount, the <strong>Payment Methods<\/strong> \u2014 <strong>Cash<\/strong>, <strong>Card<\/strong> or <strong>Split<\/strong> \u2014 and the <strong>Order Details<\/strong>.<\/p>\n\n\n\n<p>If the customer pays in cash, the agent enters the amount received with the keypad. When the customer pays more than the total, the <strong>Remaining<\/strong> amount turns negative: that is the change to hand back.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2019\/06\/bagisto-pos-payment-cash.webp\" alt=\"Cash payment\" loading=\"lazy\" \/><\/figure>\n\n\n\n<p>In the example above, the <strong>Payable Amount<\/strong> is <strong>$185.01<\/strong> after a 10% line discount. The customer pays <strong>$200.00<\/strong>, so the <strong>Remaining<\/strong> amount is <strong>-$14.99<\/strong>, the change.<\/p>\n\n\n\n<p>Finally, click <strong>Confirm Payment<\/strong>. The terminal shows <strong>Order placed successfully<\/strong> with the <strong>Home<\/strong> and <strong>Print Invoice<\/strong> buttons. When the outlet&#8217;s receipt has <strong>Show Print Confirmation<\/strong> turned on, the terminal asks <em>&#8220;Do you want to print the receipt of last order?&#8221;<\/em> before printing.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2019\/06\/bagisto-pos-order-placed.webp\" alt=\"Order placed successfully\" loading=\"lazy\" \/><\/figure>\n\n\n\n<p>Under <strong>Orders &gt;&gt; History<\/strong>, agents can select any order and click <strong>Print Invoice<\/strong> to print it again.<\/p>\n\n\n\n<p><strong>Print Invoice<\/strong> prints the receipt on the thermal receipt printer, laid out by the outlet&#8217;s receipt template: the outlet&#8217;s details, the date, order ID and cashier, the customer, each product with its options, the totals and how the order was paid. The example below is the receipt of a split payment.<\/p>\n\n\n\n<figure class=\"wp-block-image size-medium\"><img decoding=\"async\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2019\/06\/bagisto-pos-receipt-print.webp\" alt=\"Printed POS receipt\" loading=\"lazy\" \/><\/figure>\n\n\n\n<p>Customers can also pay by card. With <strong>Card<\/strong>, the agent enters the last four digits in <strong>Card Details<\/strong> and selects the <strong>Bank<\/strong> the payment goes through; the whole order total is taken by card. The terminal does not accept a full card number.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">POS Panel- Hold Order<\/h3>\n\n\n\n<p>The POS agent can put a cart&nbsp;<strong>on hold<\/strong>&nbsp;to process it later. To keep a note with the held cart, add it first with <strong>Note<\/strong> at the bottom of the cart; the <strong>Order Note<\/strong> pop-up takes up to 250 characters.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2019\/06\/bagisto-pos-order-note.webp\" alt=\"Order Note pop-up\" loading=\"lazy\" \/><\/figure>\n\n\n\n<p>Then click <strong>Hold Order<\/strong> (or press <strong>Ctrl + Shift + H<\/strong>) and confirm with <strong>Agree<\/strong>. The terminal confirms with <em>&#8220;Order has been hold successfully.&#8221;<\/em> and empties the cart.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2019\/06\/bagisto-pos-hold-order.webp\" alt=\"Confirming Hold Order\" loading=\"lazy\" \/><\/figure>\n\n\n\n<p>After holding the cart, the POS agent can check the held orders from the <strong>Hold Orders<\/strong> button in the header (or <strong>Ctrl + H<\/strong>), or under <strong>Orders &gt;&gt; Orders On Hold<\/strong>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2019\/06\/bagisto-pos-orders-on-hold.webp\" alt=\"Orders On Hold\" loading=\"lazy\" \/><\/figure>\n\n\n\n<p>The above image shows the cart details of the order that has been put on <strong>hold<\/strong>. The note added by the POS agent is also shown under the <strong>Note&nbsp;<\/strong>section.<\/p>\n\n\n\n<p>Here the POS agent can:-<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Click the <strong>&#8220;Resume&#8221;<\/strong>&nbsp;button to bring the held order back into the cart and process it further. If a cart is already in progress, the terminal asks the agent to process the current cart first.<\/li>\n\n\n\n<li>Click the <strong>&#8220;Remove&#8221;<\/strong> button to remove the held order.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Split Payment&nbsp;<\/h3>\n\n\n\n<p>The customer can also split the order payment between <strong>cash and card<\/strong> at checkout, as shown in the image below.<\/p>\n\n\n\n<p>With <strong>Split<\/strong>, the agent enters the cash <strong>Received<\/strong>; the <strong>Remaining<\/strong> amount is taken by card, for which the agent enters the <strong>Card Details<\/strong> and selects the <strong>Bank<\/strong>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2019\/06\/bagisto-pos-payment-split.webp\" alt=\"Split payment between cash and card\" loading=\"lazy\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">POS Panel \u2013 Offline Orders<\/h3>\n\n\n\n<p>While the connection is down, the Wi-Fi icon in the header turns red and the terminal warns the agent that it is in offline mode. The agent keeps selling as usual.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2019\/06\/bagisto-pos-offline-mode.webp\" alt=\"Terminal in offline mode\" loading=\"lazy\" \/><\/figure>\n\n\n\n<p>The sales orders taken in offline mode appear under <strong>Orders &gt;&gt; Offline Orders<\/strong>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2019\/06\/bagisto-pos-offline-orders.webp\" alt=\"Offline Orders\" loading=\"lazy\" \/><\/figure>\n\n\n\n<p>Once the POS system is connected to the internet again, the POS agent can sync offline sales with the online store.<\/p>\n\n\n\n<p>They can use the <strong>Sync Order<\/strong> action in an order&#8217;s details for a single order, or <strong>Sync All Orders<\/strong>, which appears above the list when the terminal is online, to push every pending order at once.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2019\/06\/bagisto-pos-offline-orders-synced.webp\" alt=\"Sync All Orders\" loading=\"lazy\" \/><\/figure>\n\n\n\n<p>After syncing, the offline orders appear with the other orders under <strong>Orders &gt;&gt; History<\/strong>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2019\/06\/bagisto-pos-order-history.webp\" alt=\"Orders History\" loading=\"lazy\" \/><\/figure>\n\n\n\n<p>Under <strong>Orders &gt;&gt; History<\/strong>, the POS agent can &#8211;<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>View the complete list<\/strong>&nbsp;of the orders placed.<\/li>\n\n\n\n<li><strong>View the details<\/strong>&nbsp;of any order from the sales order list.<\/li>\n\n\n\n<li>Search for an order by its <strong>Order ID<\/strong>.<\/li>\n\n\n\n<li>Print the invoice of the order.<\/li>\n\n\n\n<li>Start a <strong>Reorder<\/strong> or a <strong>Return<\/strong> for the order.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">POS Panel-Product Management<\/h3>\n\n\n\n<p>The POS agent can manage their <strong>outlet products<\/strong>&nbsp;under the Products section.<\/p>\n\n\n\n<p>Here POS agents can &#8211;<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Review the products that fall below the outlet&#8217;s low stock threshold under the <strong>Low Stock Products<\/strong> section, as shown in the image below.<\/li>\n\n\n\n<li>Build a <strong>Purchase Request<\/strong> by adding low stock products to it, and then send it with the <strong>Send Request<\/strong> button.<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2019\/06\/bagisto-pos-low-stock-products.webp\" alt=\"Low Stock Products\" loading=\"lazy\" \/><\/figure>\n\n\n\n<p>Clicking a low stock product opens the <strong>Send Quantity Request<\/strong> pop-up.<\/p>\n\n\n\n<p>The POS agent can mention the <strong>Requested Quantity<\/strong> and a <strong>Comment<\/strong>, then click <strong>Add Product<\/strong> to add the product to the request.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2019\/06\/bagisto-pos-request-quantity.webp\" alt=\"Send Quantity Request pop-up\" loading=\"lazy\" \/><\/figure>\n\n\n\n<p>The product is listed in the <strong>Purchase Request<\/strong> panel on the right. When the request is complete, click <strong>Send Request<\/strong>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2019\/06\/bagisto-pos-purchase-request.webp\" alt=\"Purchase Request panel\" loading=\"lazy\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>The POS agent can also check the <strong>sent requests<\/strong> for <strong>low stock products<\/strong> under <strong>Products &gt;&gt; Requested Products<\/strong>, along with the requested quantity, the comment and the request status \u2014 <strong>Pending<\/strong>, <strong>Received<\/strong> or <strong>Declined<\/strong> \u2014 as shown in the image below.<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2019\/06\/bagisto-pos-requested-products.webp\" alt=\"Requested Products\" loading=\"lazy\" \/><\/figure>\n\n\n\n<p>Under <strong>Products &gt;&gt; Settings<\/strong>, the agent can set the <strong>Minimum Qty<\/strong> below which products count as low stock and click <strong>Save<\/strong>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Minimum Qty changes the whole outlet<\/h3>\n\n\n\n<p><strong>Minimum Qty<\/strong> is the outlet&#8217;s <strong>Low Stock Quantity<\/strong>. Saving it at one terminal changes the threshold for every agent at that outlet, and replaces the value set in the admin panel.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">POS Panel- Reports<\/h3>\n\n\n\n<p>Under <strong>Reports<\/strong>, the agent sees charts of their sales for the current <strong>Day<\/strong>, <strong>Week<\/strong> or <strong>Month<\/strong>, or for a date range: <strong>Orders<\/strong>, <strong>Average Order Value<\/strong>, <strong>Average Items Per Order<\/strong>, <strong>Discounted Offers<\/strong>, <strong>Cash Payments<\/strong> and <strong>Other Payment<\/strong>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2019\/06\/bagisto-pos-pos-reports.webp\" alt=\"POS Reports\" loading=\"lazy\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">POS Panel- Settings<\/h3>\n\n\n\n<p>The POS agent can also go to <strong>Settings<\/strong> to edit their account and terminal settings. It has four tabs: <strong>Profile<\/strong>, <strong>Sync<\/strong>, <strong>Shortcuts<\/strong> and <strong>Regional<\/strong>.<\/p>\n\n\n\n<p>Under the <strong>Profile<\/strong> settings, the POS agent will \u2013<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>First Name \u2013<\/strong>&nbsp;add the first name of the POS agent.<\/li>\n\n\n\n<li><strong>Last Name \u2013<\/strong>&nbsp;add the last name of the POS agent.<\/li>\n\n\n\n<li><strong>Email \u2013<\/strong>&nbsp;add the email address.<\/li>\n\n\n\n<li><strong>Old Password \u2013<\/strong>&nbsp;add the current password of the POS account.<\/li>\n\n\n\n<li><strong>New Password \u2013<\/strong>&nbsp;add the new password for the POS account.<\/li>\n\n\n\n<li><strong>Confirm Password \u2013<\/strong>&nbsp;re-add the new password of the POS account to confirm it.<\/li>\n<\/ul>\n\n\n\n<p>And lastly, hit the <strong>Update Profile<\/strong> button to save the settings correctly.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2019\/06\/bagisto-pos-settings-profile.webp\" alt=\"Profile settings\" loading=\"lazy\" \/><\/figure>\n\n\n\n<p>Under the <strong>Regional<\/strong> settings, the POS agent can configure the terminal as shown below.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Select the Locale<\/strong> for the terminal from the drop-down.<\/li>\n\n\n\n<li><strong>Select the Currency<\/strong> for the terminal from the drop-down, then click <strong>Save<\/strong>.<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2019\/06\/bagisto-pos-settings-regional.webp\" alt=\"Regional settings\" loading=\"lazy\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">POS Panel- Sync<\/h3>\n\n\n\n<p>Under <strong>Settings &gt;&gt; Sync<\/strong>, the POS agent refreshes the terminal&#8217;s local data from the server. The screen lists the <strong>Products<\/strong>, <strong>Customers<\/strong>, <strong>Orders<\/strong> and <strong>Cart Rules<\/strong>, each with the number of records fetched and its state as the sync proceeds. Click <strong>Sync<\/strong> to start it.<\/p>\n\n\n\n<p>Because the sync replaces the terminal&#8217;s local catalog, changes made at the admin end reach the agent only after this step.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2019\/06\/bagisto-pos-settings-sync.webp\" alt=\"Sync settings\" loading=\"lazy\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">POS Panel- Keyboard Shortcuts<\/h3>\n\n\n\n<p>The <strong>Shortcuts<\/strong> tab under Settings lists the keyboard shortcuts available at the terminal, grouped under <strong>Header<\/strong>, <strong>Menu<\/strong>, <strong>Customer<\/strong> and <strong>Cart<\/strong>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2019\/06\/bagisto-pos-settings-shortcuts.webp\" alt=\"Keyboard shortcuts\" loading=\"lazy\" \/><\/figure>\n\n\n\n<p>The shortcuts are:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Ctrl + B<\/strong> \u2014 Open Barcode Mode<\/li>\n\n\n\n<li><strong>Ctrl + Alt + N<\/strong> \u2014 Open Product Create Modal<\/li>\n\n\n\n<li><strong>F11<\/strong> \u2014 Toggle Fullscreen<\/li>\n\n\n\n<li><strong>Ctrl + D<\/strong> \u2014 Toggle Dark Mode<\/li>\n\n\n\n<li><strong>Ctrl + H<\/strong> \u2014 Hold Orders<\/li>\n\n\n\n<li><strong>Alt + 1 to Alt + 7<\/strong> \u2014 Go to Home, Customers, Cashier, Orders, Products, Reports and Settings<\/li>\n\n\n\n<li><strong>Ctrl + Shift + C<\/strong> \u2014 Create New Customer<\/li>\n\n\n\n<li><strong>Ctrl + E<\/strong> \u2014 Edit Current Customer<\/li>\n\n\n\n<li><strong>Del<\/strong> \u2014 Delete Current Customer<\/li>\n\n\n\n<li><strong>Ctrl + Shift + U<\/strong> \u2014 Change Current Customer<\/li>\n\n\n\n<li><strong>Ctrl + Alt + Shift + N<\/strong> \u2014 Add Note<\/li>\n\n\n\n<li><strong>Ctrl + Backspace<\/strong> \u2014 Remove Note<\/li>\n\n\n\n<li><strong>Ctrl + Enter<\/strong> \u2014 Proceed to Checkout<\/li>\n\n\n\n<li><strong>Ctrl + Shift + H<\/strong> \u2014 Hold Order<\/li>\n<\/ul>\n\n\n\n<p>That&#8217;s all for the Laravel eCommerce Point of Sale extension for Bagisto v2.5.0. If you still have any issues, feel free to raise a ticket.<\/p>\n\n\n\n<p>Also, let us know your views on making the module Laravel eCommerce Point of Sale better <a href=\"https:\/\/bagisto.uvdesk.com\/en\/\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/bagisto.uvdesk.com\/en\/<\/a><\/p>\n\n","protected":false},"excerpt":{"rendered":"<p>Laravel eCommerce Point of Sale extension offers extensive features for admins, enabling easy creation of multi-stores. It also allows seamless tracking of daily sales and efficient customer management. The physical stores will have a POS front-end for which the admin can assign a POS agent who can easily manage the daily sales with their respective <a href=\"https:\/\/webkul.com\/blog\/laravel-ecommerce-point-of-sale\/\">[&#8230;]<\/a><\/p>\n","protected":false},"author":262,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8396,8929],"tags":[1241,5585],"class_list":["post-174283","post","type-post","status-publish","format-standard","hentry","category-bagisto","category-e-commerce-bagisto","tag-point-of-sale","tag-point-of-sale-system"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Laravel eCommerce Point of Sale | Retail POS Solution - Webkul Blog<\/title>\n<meta name=\"description\" content=\"The laravel eCommerce point of sale modue allows sellers to manage their physical store, multiple outlets and tracking day to day sales.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/webkul.com\/blog\/laravel-ecommerce-point-of-sale\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Laravel eCommerce Point of Sale | Retail POS Solution - Webkul Blog\" \/>\n<meta property=\"og:description\" content=\"The laravel eCommerce point of sale modue allows sellers to manage their physical store, multiple outlets and tracking day to day sales.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/webkul.com\/blog\/laravel-ecommerce-point-of-sale\/\" \/>\n<meta property=\"og:site_name\" content=\"Webkul Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/webkul\/\" \/>\n<meta property=\"article:published_time\" content=\"2019-06-07T07:00:31+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-10-22T10:50:28+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/webkul.com\/blog\/wp-content\/uploads\/2019\/06\/bagisto-pos-pos-admin-menu.webp\" \/>\n<meta name=\"author\" content=\"Prachi Chauhan\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@webkul\" \/>\n<meta name=\"twitter:site\" content=\"@webkul\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Prachi Chauhan\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"40 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/webkul.com\\\/blog\\\/laravel-ecommerce-point-of-sale\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/webkul.com\\\/blog\\\/laravel-ecommerce-point-of-sale\\\/\"},\"author\":{\"name\":\"Prachi Chauhan\",\"@id\":\"https:\\\/\\\/webkul.com\\\/blog\\\/#\\\/schema\\\/person\\\/34823aa1ccd482968bfd7d01acfa7599\"},\"headline\":\"Laravel eCommerce Point of Sale\",\"datePublished\":\"2019-06-07T07:00:31+00:00\",\"dateModified\":\"2026-10-22T10:50:28+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/webkul.com\\\/blog\\\/laravel-ecommerce-point-of-sale\\\/\"},\"wordCount\":6133,\"commentCount\":10,\"publisher\":{\"@id\":\"https:\\\/\\\/webkul.com\\\/blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/webkul.com\\\/blog\\\/laravel-ecommerce-point-of-sale\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/webkul.com\\\/blog\\\/wp-content\\\/uploads\\\/2019\\\/06\\\/bagisto-pos-pos-admin-menu.webp\",\"keywords\":[\"point of sale\",\"point of sale system\"],\"articleSection\":[\"Bagisto\",\"E commerce\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/webkul.com\\\/blog\\\/laravel-ecommerce-point-of-sale\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/webkul.com\\\/blog\\\/laravel-ecommerce-point-of-sale\\\/\",\"url\":\"https:\\\/\\\/webkul.com\\\/blog\\\/laravel-ecommerce-point-of-sale\\\/\",\"name\":\"Laravel eCommerce Point of Sale | Retail POS Solution - Webkul Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/webkul.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/webkul.com\\\/blog\\\/laravel-ecommerce-point-of-sale\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/webkul.com\\\/blog\\\/laravel-ecommerce-point-of-sale\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/webkul.com\\\/blog\\\/wp-content\\\/uploads\\\/2019\\\/06\\\/bagisto-pos-pos-admin-menu.webp\",\"datePublished\":\"2019-06-07T07:00:31+00:00\",\"dateModified\":\"2026-10-22T10:50:28+00:00\",\"description\":\"The laravel eCommerce point of sale modue allows sellers to manage their physical store, multiple outlets and tracking day to day sales.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/webkul.com\\\/blog\\\/laravel-ecommerce-point-of-sale\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/webkul.com\\\/blog\\\/laravel-ecommerce-point-of-sale\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/webkul.com\\\/blog\\\/laravel-ecommerce-point-of-sale\\\/#primaryimage\",\"url\":\"https:\\\/\\\/cdnblog.webkul.com\\\/blog\\\/wp-content\\\/uploads\\\/2019\\\/06\\\/bagisto-pos-pos-admin-menu.webp\",\"contentUrl\":\"https:\\\/\\\/cdnblog.webkul.com\\\/blog\\\/wp-content\\\/uploads\\\/2019\\\/06\\\/bagisto-pos-pos-admin-menu.webp\",\"width\":1600,\"height\":1100},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/webkul.com\\\/blog\\\/laravel-ecommerce-point-of-sale\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/webkul.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Laravel eCommerce Point of Sale\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/webkul.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/webkul.com\\\/blog\\\/\",\"name\":\"Webkul Blog\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/webkul.com\\\/blog\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/webkul.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/webkul.com\\\/blog\\\/#organization\",\"name\":\"WebKul Software Private Limited\",\"url\":\"https:\\\/\\\/webkul.com\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/webkul.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/cdnblog.webkul.com\\\/blog\\\/wp-content\\\/uploads\\\/2021\\\/08\\\/webkul-logo-accent-sq.png\",\"contentUrl\":\"https:\\\/\\\/cdnblog.webkul.com\\\/blog\\\/wp-content\\\/uploads\\\/2021\\\/08\\\/webkul-logo-accent-sq.png\",\"width\":380,\"height\":380,\"caption\":\"WebKul Software Private Limited\"},\"image\":{\"@id\":\"https:\\\/\\\/webkul.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/webkul\\\/\",\"https:\\\/\\\/x.com\\\/webkul\",\"https:\\\/\\\/www.instagram.com\\\/webkul\\\/\",\"https:\\\/\\\/www.linkedin.com\\\/company\\\/webkul\",\"https:\\\/\\\/www.youtube.com\\\/user\\\/webkul\\\/\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/webkul.com\\\/blog\\\/#\\\/schema\\\/person\\\/34823aa1ccd482968bfd7d01acfa7599\",\"name\":\"Prachi Chauhan\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/6c4dc4694029a3232f3acda4259960d69057ed94d263c9483622fcf1462c1fc6?s=96&d=https%3A%2F%2Fcdnblog.webkul.com%2Fblog%2Fwp-content%2Fuploads%2F2019%2F10%2Feva.png&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/6c4dc4694029a3232f3acda4259960d69057ed94d263c9483622fcf1462c1fc6?s=96&d=https%3A%2F%2Fcdnblog.webkul.com%2Fblog%2Fwp-content%2Fuploads%2F2019%2F10%2Feva.png&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/6c4dc4694029a3232f3acda4259960d69057ed94d263c9483622fcf1462c1fc6?s=96&d=https%3A%2F%2Fcdnblog.webkul.com%2Fblog%2Fwp-content%2Fuploads%2F2019%2F10%2Feva.png&r=g\",\"caption\":\"Prachi Chauhan\"},\"url\":\"https:\\\/\\\/webkul.com\\\/blog\\\/author\\\/prachichauhan-bd628\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Laravel eCommerce Point of Sale | Retail POS Solution - Webkul Blog","description":"The laravel eCommerce point of sale modue allows sellers to manage their physical store, multiple outlets and tracking day to day sales.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/webkul.com\/blog\/laravel-ecommerce-point-of-sale\/","og_locale":"en_US","og_type":"article","og_title":"Laravel eCommerce Point of Sale | Retail POS Solution - Webkul Blog","og_description":"The laravel eCommerce point of sale modue allows sellers to manage their physical store, multiple outlets and tracking day to day sales.","og_url":"https:\/\/webkul.com\/blog\/laravel-ecommerce-point-of-sale\/","og_site_name":"Webkul Blog","article_publisher":"https:\/\/www.facebook.com\/webkul\/","article_published_time":"2019-06-07T07:00:31+00:00","article_modified_time":"2026-10-22T10:50:28+00:00","og_image":[{"url":"https:\/\/webkul.com\/blog\/wp-content\/uploads\/2019\/06\/bagisto-pos-pos-admin-menu.webp","type":"","width":"","height":""}],"author":"Prachi Chauhan","twitter_card":"summary_large_image","twitter_creator":"@webkul","twitter_site":"@webkul","twitter_misc":{"Written by":"Prachi Chauhan","Est. reading time":"40 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/webkul.com\/blog\/laravel-ecommerce-point-of-sale\/#article","isPartOf":{"@id":"https:\/\/webkul.com\/blog\/laravel-ecommerce-point-of-sale\/"},"author":{"name":"Prachi Chauhan","@id":"https:\/\/webkul.com\/blog\/#\/schema\/person\/34823aa1ccd482968bfd7d01acfa7599"},"headline":"Laravel eCommerce Point of Sale","datePublished":"2019-06-07T07:00:31+00:00","dateModified":"2026-10-22T10:50:28+00:00","mainEntityOfPage":{"@id":"https:\/\/webkul.com\/blog\/laravel-ecommerce-point-of-sale\/"},"wordCount":6133,"commentCount":10,"publisher":{"@id":"https:\/\/webkul.com\/blog\/#organization"},"image":{"@id":"https:\/\/webkul.com\/blog\/laravel-ecommerce-point-of-sale\/#primaryimage"},"thumbnailUrl":"https:\/\/webkul.com\/blog\/wp-content\/uploads\/2019\/06\/bagisto-pos-pos-admin-menu.webp","keywords":["point of sale","point of sale system"],"articleSection":["Bagisto","E commerce"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/webkul.com\/blog\/laravel-ecommerce-point-of-sale\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/webkul.com\/blog\/laravel-ecommerce-point-of-sale\/","url":"https:\/\/webkul.com\/blog\/laravel-ecommerce-point-of-sale\/","name":"Laravel eCommerce Point of Sale | Retail POS Solution - Webkul Blog","isPartOf":{"@id":"https:\/\/webkul.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/webkul.com\/blog\/laravel-ecommerce-point-of-sale\/#primaryimage"},"image":{"@id":"https:\/\/webkul.com\/blog\/laravel-ecommerce-point-of-sale\/#primaryimage"},"thumbnailUrl":"https:\/\/webkul.com\/blog\/wp-content\/uploads\/2019\/06\/bagisto-pos-pos-admin-menu.webp","datePublished":"2019-06-07T07:00:31+00:00","dateModified":"2026-10-22T10:50:28+00:00","description":"The laravel eCommerce point of sale modue allows sellers to manage their physical store, multiple outlets and tracking day to day sales.","breadcrumb":{"@id":"https:\/\/webkul.com\/blog\/laravel-ecommerce-point-of-sale\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/webkul.com\/blog\/laravel-ecommerce-point-of-sale\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/webkul.com\/blog\/laravel-ecommerce-point-of-sale\/#primaryimage","url":"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2019\/06\/bagisto-pos-pos-admin-menu.webp","contentUrl":"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2019\/06\/bagisto-pos-pos-admin-menu.webp","width":1600,"height":1100},{"@type":"BreadcrumbList","@id":"https:\/\/webkul.com\/blog\/laravel-ecommerce-point-of-sale\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/webkul.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Laravel eCommerce Point of Sale"}]},{"@type":"WebSite","@id":"https:\/\/webkul.com\/blog\/#website","url":"https:\/\/webkul.com\/blog\/","name":"Webkul Blog","description":"","publisher":{"@id":"https:\/\/webkul.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/webkul.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/webkul.com\/blog\/#organization","name":"WebKul Software Private Limited","url":"https:\/\/webkul.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/webkul.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2021\/08\/webkul-logo-accent-sq.png","contentUrl":"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2021\/08\/webkul-logo-accent-sq.png","width":380,"height":380,"caption":"WebKul Software Private Limited"},"image":{"@id":"https:\/\/webkul.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/webkul\/","https:\/\/x.com\/webkul","https:\/\/www.instagram.com\/webkul\/","https:\/\/www.linkedin.com\/company\/webkul","https:\/\/www.youtube.com\/user\/webkul\/"]},{"@type":"Person","@id":"https:\/\/webkul.com\/blog\/#\/schema\/person\/34823aa1ccd482968bfd7d01acfa7599","name":"Prachi Chauhan","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/6c4dc4694029a3232f3acda4259960d69057ed94d263c9483622fcf1462c1fc6?s=96&d=https%3A%2F%2Fcdnblog.webkul.com%2Fblog%2Fwp-content%2Fuploads%2F2019%2F10%2Feva.png&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/6c4dc4694029a3232f3acda4259960d69057ed94d263c9483622fcf1462c1fc6?s=96&d=https%3A%2F%2Fcdnblog.webkul.com%2Fblog%2Fwp-content%2Fuploads%2F2019%2F10%2Feva.png&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/6c4dc4694029a3232f3acda4259960d69057ed94d263c9483622fcf1462c1fc6?s=96&d=https%3A%2F%2Fcdnblog.webkul.com%2Fblog%2Fwp-content%2Fuploads%2F2019%2F10%2Feva.png&r=g","caption":"Prachi Chauhan"},"url":"https:\/\/webkul.com\/blog\/author\/prachichauhan-bd628\/"}]}},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/posts\/174283","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/users\/262"}],"replies":[{"embeddable":true,"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/comments?post=174283"}],"version-history":[{"count":247,"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/posts\/174283\/revisions"}],"predecessor-version":[{"id":561755,"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/posts\/174283\/revisions\/561755"}],"wp:attachment":[{"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/media?parent=174283"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/categories?post=174283"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/tags?post=174283"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}