Skip to main content

SalePro – Inventory Management System with POS, HRM, Accounting

Updated Aug 21, 2026 32,716 words 164 min read 244 sections

SalePro is an all-in-one business management software designed to simplify and automate day-to-day operations for retail, wholesale, pharmacy, electronics, and manufacturing businesses. It combines a powerful POS system with advanced inventory management, HRM, and full accounting features—making it a complete solution for modern businesses.

With a clean user interface, robust reporting tools, and reliable performance, SalePro helps businesses track stock accurately, manage sales, control expenses, handle employees, monitor finances, and make smarter decisions—all from one unified platform.

Whether you run a small shop or a multi-branch business, SalePro delivers the flexibility, scalability, and efficiency needed to manage everything seamlessly.

Support#

We provide support for issues within SalePro and also offer customization services. Please submit support requests through the official Support channel shown with your purchase. To keep each request traceable and secure, please do not use CodeCanyon comments, WhatsApp, or unrelated channels for technical support. Support

For installation-specific errors, include your SalePro purchase code, the affected URL, a clear description of the problem, and screenshots or error messages. If support needs temporary hosting or administrator access to investigate, share temporary credentials only through the official support channel and revoke or change them after the issue is resolved. If your CodeCanyon support period has expired, renew support before requesting installation assistance.

Thank you and best wishes from LionCoders.

Getting Started#

0.0 How to Use This Documentation#

This guide is written for business owners, managers, cashiers, storekeepers, accountants, HR staff, production teams, and administrators. You do not need programming knowledge to use the operational chapters.

Each feature is explained in practical terms: what it is for, what you should prepare first, the steps a user follows, what SalePro changes automatically, and the reports or records you can check afterward.

Menu names and available actions can vary by role, enabled module, business mode, and installation. If a button or menu is missing, first check the user role/permission and whether that module or setting is enabled.

  1. Install SalePro and sign in as the administrator.
  2. Configure General Settings, currency, tax, date format, invoice settings, and business identity.
  3. Create warehouses/locations and billers, then create roles and individual user accounts.
  4. Create units, categories, brands, taxes, and products.
  5. Create suppliers and customers, then record opening stock through the appropriate stock/purchase workflow.
  6. Configure operational payment accounts and payment methods before taking real payments.
  7. Test one complete purchase, one sale, one payment, one return, and the related reports before going live.
  8. Configure optional modules such as Restaurant, Manufacturing, Repair, eCommerce, Tailoring, Social Commerce, WhatsApp, or HRM only if the business uses them.

The Core Business Flow#

For most inventory businesses, the everyday flow is: Supplier → Purchase/Receive Stock → Warehouse Stock → Sale/POS → Customer Payment → Return/Exchange when needed → Accounting → Reports. SalePro links these steps so stock, customer/supplier dues, payments, and accounting remain connected.

0.1 Server Requirements#

Overview#

This article explains the exact hardware and software specifications required to host and run SalePro successfully.

SalePro is a web-based business management application built on the Laravel PHP framework. Because it is self-hosted, it must be installed on a web server before you or your staff can log in and use it. Ensuring your server meets these requirements is the very first step in your deployment journey. If your server is missing a required component, the installation will fail or the software will experience critical errors during daily operations.

Prerequisites#

Before evaluating your server requirements, you should have:

A purchased domain name (e.g., yourbusiness.com).

Access to a web hosting account (shared hosting, VPS, or dedicated server).

Your hosting should provide a control panel or equivalent tools for uploading files, creating/importing databases, changing PHP settings, and managing file permissions. This guide uses cPanel-style screens because they are familiar to most non-technical users.

Access to your hosting control panel (such as cPanel) to verify PHP settings.

Step-by-Step Instructions#

Verifying your server meets the requirements is generally done through your hosting provider's control panel.

Log in to your hosting control panel. The exact name varies by provider; common examples include cPanel, DirectAdmin, Plesk, or a custom hosting dashboard.

Locate the PHP Selector: Search for a tool named "Select PHP Version", "MultiPHP Manager", or "PHP Configuration".

Verify the PHP Version: Ensure the active version is set to PHP 8.3.

Enable Required Extensions: In the PHP Selector interface, switch to the "Extensions" tab. Check the boxes next to all required extensions listed in the "Software Requirements" section below.

Save Changes: If a save button is present, click it. Most cPanel environments save extension toggles automatically.

Step:1

SalePro interface screenshot

Step2:

SalePro interface screenshot

*Screenshot: Select PHP 8.3 dropdown *

SalePro interface screenshot

Screenshot: Cpanel Extension tab

Explanation of Specifications#

Supported Web Servers#

SalePro can run on common PHP web-server environments such as Apache, Nginx, LiteSpeed, and OpenLiteSpeed, provided PHP, database access, URL rewriting/routing, file permissions, and the required PHP extensions are configured correctly.

WARNING: SalePro is not compatible with Microsoft IIS (ASP/.NET) web servers.

Software Requirements#

Your server must have the following software installed and active:

PHP: Version 8.3 (Strict requirement. Older or newer versions may cause syntax errors).

MySQL: Version 5.7 or higher (Required for database management).

Mod Rewrite: Must be enabled (Required for clean URLs and API routing).

Required PHP Extensions#

The Laravel framework requires specific PHP extensions to handle tasks like security, file management, and string manipulation. Ensure the following are enabled:

OpenSSL: Used for secure data encryption and HTTPS connections.

PDO (PHP Data Objects): Used to securely connect to the MySQL database.

Fileinfo: Used to determine the file type of uploaded images and documents.

Mbstring: Required to properly process non-English characters and multi-byte text.

Tokenizer: Used by the framework to read and compile the underlying code.

Zip Archive: Required to extract the installation files and process software updates.

GD (or Imagick): Required for image processing (e.g., uploading site logos, product images, and resizing).

cURL: Required for making outbound API requests (e.g., SMS gateways, Payment gateways).

XML: Required for parsing certain document types and server responses.

Business Workflow#

Choosing the right server environment impacts your entire business:

Select Server → Verify PHP 8.3 & Extensions → Install SalePro → Daily Operations run smoothly without crashes.

Examples#

Small Retail Shop: A standard shared hosting plan with cPanel (using Apache) is usually sufficient to run SalePro for 1-5 concurrent users.

Large Supermarket or Pharmacy: A VPS (Virtual Private Server) running Nginx is recommended to handle the higher transaction volume and simultaneous database queries from multiple POS registers.

Tips#

Check your limits: In your php.ini file, increase your memory_limit to at least 512M and your max_execution_time to 300. This ensures that large database imports (like during installation) do not time out.

Warnings#

Never attempt to bypass a missing PHP extension. If an extension is disabled, the software might appear to install correctly but will fail later when trying to execute a specific task (like uploading a product image).

Troubleshooting#

Problem: You see a "500 Internal Server Error" during installation.

Possible Cause: URL rewriting/routing is not configured correctly, the required rewrite module/rules are unavailable, or the web root is pointing to the wrong directory.

Solution: Ask your hosting provider to confirm the correct document root and enable the rewrite/routing rules required by Laravel for your chosen web server.

Problem: You receive a "syntax error, unexpected token" message.

Possible Cause: Your server is running an outdated version of PHP (e.g., PHP 7.4).

Solution: Upgrade your PHP version to 8.3 in your cPanel.

Problem: The installation wizard says a folder is "Not Writable".

Possible Cause: The server file permissions are too restrictive.

Solution: Change the permissions of the storage and bootstrap/cache directories to 775.

See also:

0.2 Installation Guide (Local & Online)

0.4 Updating the Software

21.27 Backup Database

0.2 Installation Guide (Local & Online)#

Overview#

This article provides step-by-step instructions on how to install SalePro. Because SalePro is a self-hosted PHP application, you must install it on a web server before anyone can access it.

You can choose to install SalePro on an online hosting provider (like cPanel) so it is accessible from anywhere in the world, or you can install it on your local computer (Localhost) using software like XAMPP or WAMP for testing or offline use.

This guide covers both methods and explains the installation wizard that sets up your database and creates your primary administrator account.

Prerequisites#

Before beginning the installation, you must have:

The downloaded SalePro installation .zip file.

A server environment that fully complies with 0.1 Server Requirements (PHP 8.3, Apache/Nginx, required extensions).

For Online Hosting: Access to your cPanel or hosting dashboard.

For Localhost: XAMPP, WAMP, or Laragon installed and running on your computer.

Step-by-Step Instructions: Online Hosting (cPanel)#

Installing on a live server is the most common deployment method.

Step 1: Create a Database#

Before SalePro can install, it needs a database to store all your business information.

Log in to your cPanel.

Navigate to MySQL Databases or MySQL Database Wizard.

Create a new database and note the Database Name.

Create a new user with a strong password and note the Database Username and Database Password.

Add the user to the database and ensure you grant All Privileges.

*Step 1: *

SalePro interface screenshot

Step2:

SalePro interface screenshot

Step3:

SalePro interface screenshot

SalePro interface screenshot

Step 2: Upload and Extract Files#

In cPanel, navigate to the File Manager.

Open the public_html directory (or the specific folder where you want to install SalePro).

Click Upload and select the SalePro .zip file from your computer.

Once the upload reaches 100%, return to the File Manager, right-click the .zip file, and select Extract.

WARNING: Crucial Step for cPanel Users: By default, cPanel hides "dot files" (files that start with a period, like .env and .htaccess). If you extract the files into a subfolder and then move them to public_html, the hidden files will often be left behind. You must click "Settings" in the top right of your File Manager and check "Show Hidden Files" to ensure these critical files are moved to the correct directory. Without them, the installation will immediately fail.

Step 3: Run the Installation Wizard#

Open your web browser and navigate to your domain (e.g., https://yourbusiness.com).

The SalePro Installation Wizard will automatically appear.

Follow the on-screen prompts, which will verify your server requirements and ask for your database credentials.

Step-by-Step Instructions: Localhost (XAMPP / WAMP)#

Installing locally is excellent for learning the software without needing to pay for web hosting.

Step 1: Prepare the Files#

Open your Localhost directory. (For XAMPP, this is C:\xampp\htdocs. For WAMP, this is C:\wamp\www).

Create a new folder (e.g., salepro).

Extract the contents of the SalePro .zip file directly into this folder.

Step 2: Create a Local Database#

Open your browser and go to http://localhost/phpmyadmin.

Click the Databases tab.

Enter a database name (e.g., salepro_db) and click Create.

Step 3: Run the Installation Wizard#

Open your browser and navigate to http://localhost/salepro (replacing salepro with the folder name you chose in Step 1).

The SalePro Installation Wizard will appear. Follow the prompts.

SalePro interface screenshot

Screenshot: The first screen of the SalePro Installation Wizard

Explanation of Every Field (Installation Wizard)#

When you reach the Database Setup screen in the wizard, you must fill out the following fields precisely:

Database Host: The server address where your database lives. For 99% of hosts and all localhost setups, you must enter localhost or 127.0.0.1.

Database Name: The exact name of the database you created in Step 1.

Database Username: The user you assigned to the database. (On localhost via XAMPP, this is usually root).

Database Password: The password for the database user. (On localhost via XAMPP, this is usually left completely blank).

On the final screen, you will create your primary user:

Admin Username: The name you will use to log in.

Admin Email: Your contact email. This is used for password resets and system notifications.

Admin Password: A strong password to secure your entire business management system.

Business Workflow#

The installation process fits into your business deployment like this:

Files Uploaded → Database Created → Wizard Executed ↓ The system automatically generates over 100 database tables. ↓ The system populates dummy data (sample products, sales, and customers) so you can test the software immediately. ↓ The Admin account is created, and you are redirected to the Login screen.

Examples#

Retail Chain: A retail chain installing SalePro on a cloud VPS will follow the Online Hosting steps, ensuring their database host is set securely and SSL certificates are installed prior to running the wizard.

Solo Entrepreneur Testing: A small business owner might use XAMPP to install SalePro locally to test out the Point of Sale interface with their specific barcode scanner before purchasing a live domain.

Tips#

Use Google Chrome: For the best experience during installation and daily use, we highly recommend using Google Chrome.

Secure your directory: Once installation is complete on a live server, ensure directory browsing is disabled in your cPanel to prevent unauthorized users from seeing your file structure.

Warnings#

Do not refresh the page during the final step of the installation wizard. The system is writing thousands of lines of data to your database, and interrupting it may cause a corrupted installation.

Troubleshooting#

Problem: The installation wizard immediately shows a "500 Internal Server Error".

Possible Cause: A required hidden file was not uploaded, URL rewriting is not active, or the domain points to the wrong application directory.

Solution: Enable "Show Hidden Files", confirm the required hidden files were uploaded, and ask the hosting provider to verify the domain document root and Laravel rewrite/routing configuration.

Problem: "Maximum execution time exceeded" or a blank white screen during the final installation step.

Possible Cause: Your server timed out while trying to import the database.

Solution: Edit your server's php.ini file and increase memory_limit to 512M and max_execution_time to 300.

Problem: "Database Connection Failed".

Possible Cause: The Database Name, Username, or Password you entered into the wizard does not perfectly match what you created in cPanel.

Solution: Double-check your credentials. Ensure you assigned the user to the database with "All Privileges".

See also:

0.1 Server Requirements

0.3 Changing Domain & Hosting (Migration)

0.5 Quick Start & First Login

2.1 System Settings & Localization

0.3 Changing Domain & Hosting (Migration)#

Overview#

This article explains how to migrate your existing SalePro installation to a new domain name or an entirely new hosting provider.

Businesses change domains for rebranding purposes or upgrade their hosting servers as their operations grow. Changing your domain or host requires moving your physical files and database, and then updating SalePro's configuration file so it knows where it currently lives.

Prerequisites#

Before beginning a migration, you must have:

Full access to your old hosting control panel (cPanel, PHPMyAdmin).

Full access to your new hosting control panel.

A complete backup of your files and database (See 21.27 Backup Database).

Step-by-Step Instructions#

Step 1: Export Your Database from the Old Host#

Log in to your old cPanel and open phpMyAdmin.

Select your SalePro database from the left sidebar.

Click the Export tab at the top.

Leave the method as "Quick" and the format as "SQL", then click Go. This will download a .sql file to your computer.

Step 2: Compress Your Files#

Open the File Manager in your old cPanel.

Ensure "Show Hidden Files" is enabled in your File Manager settings.

Select all files and folders in your SalePro installation directory (including .env and .htaccess).

Right-click and select Compress. Choose the Zip format. Download this .zip file to your computer.

Step 3: Import to the New Host#

Log in to your new cPanel.

Create a new database, database user, and assign the user to the database with all privileges (just like a fresh installation).

Open phpMyAdmin on the new host, select the new database, click Import, and upload the .sql file you downloaded in Step 1.

Open the File Manager on the new host, navigate to the new public directory, and upload the .zip file you created in Step 2.

Extract the .zip file. (Again, ensure hidden files are extracted).

Step 4: Update the Configuration File (.env)#

The new installation must be told how to connect to the new database and what its new URL is.

In your new host's File Manager, locate the .env file in the root of your SalePro directory.

Right-click the .env file and select Edit.

Update the configuration fields (explained below) and click Save Changes.

SalePro interface screenshot

SalePro interface screenshot

Screenshot: cPanel File Manager editing the .env file, highlighting the DB_ and APP_URL lines

Explanation of Every Field (The .env File)#

When editing the .env file during a migration, you must update the following specific lines:

APP_URL=: Update this to your new domain name (e.g., APP_URL=https://newdomain.com). Make sure to include https:// and do not put a trailing slash / at the end.

DB_HOST=: Usually remains 127.0.0.1 or localhost, unless your host provides a remote database URL.

DB_DATABASE=: The exact name of the new database you created on the new host.

DB_USERNAME=: The exact username you created on the new host.

DB_PASSWORD=: The exact password for the database user on the new host.

Business Workflow#

The migration workflow ensures continuity: Old Server Online → Scheduled Downtime → Files & Database Transferred → Config Updated → New Server Online.

Examples#

Upgrading Servers: A business grows from processing 100 sales a day to 5,000 sales a day. Their shared hosting is crashing. They purchase a dedicated VPS. They follow these migration steps to move their data identically to the new, more powerful server without losing a single transaction.

Tips#

Clear application caches after migration using the method provided by your hosting environment or SalePro deployment instructions. If you are not comfortable running server commands or deleting cache files, ask your hosting provider or developer to do this safely.

Warnings#

Do Not Change Other .env Lines: Only change the APP_URL and DB_ lines. Changing the APP_KEY or other encryption keys will permanently break all encrypted data (like saved passwords) in your database.

Troubleshooting#

Problem: The site loads but looks completely broken (no CSS/styling).

Possible Cause: The APP_URL in the .env file is incorrect.

Solution: Check the .env file and ensure the APP_URL exactly matches your new domain name, including https://.

Problem: "Database Connection Error" when visiting the new domain.

Possible Cause: The DB_ credentials in the .env file do not match the new database you created.

Solution: Double-check the spelling of the database name, user, and password in the .env file. Ensure the user has privileges.

See also:

0.2 Installation Guide (Local & Online)

21.27 Backup Database

0.4 Updating the Software#

Overview#

This article explains how to safely update your SalePro installation to the latest version.

Our development team frequently releases updates on CodeCanyon to introduce new features, improve performance, and patch security vulnerabilities. Keeping your software up to date ensures you have access to the latest tools to run your business and protects your data.

Prerequisites#

Before attempting an update, you must:

Verify that your support license is active on CodeCanyon.

Take a complete backup of your files and database (See 21.27 Backup Database). Do not skip this step.

Step-by-Step Instructions#

Updating the software involves replacing the core system files with the new ones provided by the developers.

Step 1: Download the Update#

Log in to your Envato/CodeCanyon account.

Navigate to the Downloads section.

Locate SalePro in your CodeCanyon Downloads page and download the current SalePro package supplied for installation/update. Do not use a WordPress-specific package; SalePro is a Laravel application.

Download the .zip file to your computer.

Step 2: Upload and Replace Files#

Log in to your hosting cPanel and open the File Manager.

Navigate to your SalePro installation directory (e.g., public_html).

Upload the newly downloaded .zip file into this directory.

Right-click the .zip file and select Extract.

When prompted, choose to Overwrite existing files.

Step 3: Run the Update Script (If Applicable)#

Some major updates require database changes.

Open your web browser.

Navigate to your domain and append the update route (e.g., https://yourdomain.com/update).

If an update script exists for this version, the page will guide you through running the database migrations. If you see a "404 Not Found" or are redirected to the dashboard, no database update is required for this specific version.

Business Workflow#

Updates are a standard part of software maintenance: New Version Released → Full Backup Taken → Files Overwritten → Update Script Executed → Business Resumes on latest version.

Examples#

Security Patch: You receive an email that a critical security patch was released in version 4.1. You take a backup, download the 4.1 zip, upload it over your 4.0 files, and secure your system.

Tips#

Schedule Updates During Downtime: Always perform updates when your business is closed or experiencing low traffic to minimize disruption.

Warnings#

WARNING: Custom Code Will Be Lost: If you or a developer have manually edited the core PHP or CSS files of SalePro (hardcoding changes), those changes will be permanently erased and replaced by the update files. This is why you must maintain a backup. If you need customizations, use the Custom CSS fields in settings or build an addon rather than editing core files.

Troubleshooting#

Problem: After updating, the site crashes or shows a "500 Server Error".

Possible Cause: The update files were incomplete, or the server cached old files.

Solution: Clear the application/server cache using your hosting or deployment tools, then reload the site. If the error remains, restore the verified backup and contact support with the exact error message.

Problem: Some features are missing or look distorted.

Possible Cause: Your browser is caching the old Javascript or CSS files.

Solution: Perform a "Hard Refresh" in your browser (Ctrl + F5 on Windows, Cmd + Shift + R on Mac) to clear the browser cache.

See also:

0.3 Changing Domain & Hosting (Migration)

21.27 Backup Database

0.5 Quick Start & First Login#

Overview#

This article guides you through your very first moments using SalePro immediately after completing the installation.

When you install SalePro, the developers have intentionally populated the database with "dummy data"—fake products, fake customers, and fake sales. This allows you to explore the software, generate reports, and see how the Point of Sale works without risking real business data. Once you are comfortable, you will empty the database and begin configuring the system for your actual business.

Prerequisites#

You have successfully installed SalePro on a local or live server.

You remember the Admin Username and Admin Password you created during the installation wizard.

Step-by-Step Instructions#

Step 1: Log In#

Navigate to your domain (e.g., https://yourbusiness.com). You will be greeted by the login screen.

Enter the Admin Username and Admin Password you defined during installation.

Click Login.

Picture 11

Screenshot: The SalePro Login Screen

Step 2: Explore the Dummy Data#

You will land on the Dashboard. Notice the charts and graphs are populated with fake revenue data.

Use the left-hand navigation sidebar to explore.

Click Product > Product List to see the sample inventory.

Click Sale > POS to explore the cash register interface. Try ringing up a fake sale.

Step 3: Empty the Database#

Once you are done exploring and are ready to input your real business data, you must wipe the system clean.

Look at the top-right corner of the screen (the top navigation bar).

Click on your Username (or profile picture).

A dropdown menu will appear. Click Empty Database.

A warning prompt will appear asking you to confirm. Click Yes.

SalePro interface screenshot

Screenshot: The top navigation dropdown menu highlighting the "Empty Database" button

Explanation of Every Field#

(Not applicable for this workflow, as there are no form fields to fill out).

Business Workflow#

The Quick Start workflow is the bridge between installation and real configuration: Install SalePro → Explore Dummy Data to learn the UI → Empty Database → Begin actual business configuration (Settings, Products, Users).

Examples#

Learning the Ropes: A new business owner logs in for the first time. They are afraid of "breaking" the system. The dummy data allows them to click buttons, process fake sales, and print fake receipts to learn how the software behaves safely. After 30 minutes of practice, they click "Empty Database" and start fresh.

Tips#

Do Not Skip Exploring: Take at least 15 minutes to play with the dummy data. Seeing how products look when they are fully configured makes it much easier to understand how to create your own products later.

Warnings#

CAUTION: Emptying the database is irreversible. Clicking "Empty Database" deletes ALL sales, purchases, products, customers, and accounting entries. It leaves only the core structural settings and your Admin user account. Do NOT click this button after you have started entering real business data.

Troubleshooting#

Problem: I clicked "Empty Database" but my products are still there.

Possible Cause: The system failed to process the request, or your browser cached the page.

Solution: Hard refresh your browser (Ctrl+F5). If they remain, you may have a database permission issue preventing the delete command from executing. Check your server logs.

Problem: I forgot my Admin password from the installation wizard.

Possible Cause: Typo during setup.

Solution: Click the "Forgot Password" link on the login screen. An email will be sent to the Admin Email address you provided during setup (Requires Mail Server to be configured first).

See also:

0.2 Installation Guide (Local & Online)

2.1 System Settings & Localization

5.3 POS (Point of Sale)

1. Dashboard#

The Dashboard is the first operational summary page after login. It presents sales, purchasing, returns, expenses, profit, charts, recent activity, and best-selling products. What a user can see depends on that user's role permissions; some dashboard cards and charts may be hidden for staff roles.

Accessing and Filtering the Dashboard#

The Dashboard opens automatically after login. Use the date-range field at the top to select a custom start and end date. If you have access to more than one warehouse, choose a warehouse from the warehouse selector to limit the KPI cards to that location. By default, the KPI cards use the latest 30 calendar days, including today. Changing either filter refreshes the KPI cards for the selected period and warehouse.

Picture 15

KPI Cards#

The top cards summarize the currently selected date range and warehouse. Opening-balance records and deleted sales or purchases are excluded from the main sales and purchase totals.

  • Sale: Net sales amount — sales grand total minus shipping cost, then sale returns are deducted.
  • Sale Due: Outstanding amount still due on sales within the selected filters.
  • Sale Return: Total value of customer sales returns for the selected filters.
  • Expense: Total expense entries for the selected date range and warehouse.
  • Purchase: Net purchase amount — purchase total minus purchase returns.
  • Purchase Due: Outstanding amount still due to suppliers for purchases within the selected filters.
  • Purchase Return: Total value of returns made to suppliers for the selected filters.
  • Profit: Revenue minus product cost of goods sold and expenses. Revenue is net sales plus recorded income.

Navigation: Sale opens the Sale List; Sale Return opens the Sale Return List; Purchase opens the Purchase List; and Purchase Return opens the Purchase Return List. The due, expense, and profit cards are summary cards rather than direct links.

Cash Flow Chart#

Compares Payment Received and Payment Sent month by month for the latest six months. Payment Received includes payments against sales plus purchase-return amounts. Payment Sent includes payments against purchases, sale-return amounts, expenses, and payroll payments.

SalePro interface screenshot

Monthly Summary#

A donut chart summarizing the current calendar month, comparing Purchase, Revenue, and Expense. Revenue is calculated from sales after sale returns, with recorded income added; it excludes shipping cost from sales.

Yearly Report#

Compares purchased amount and sold amount for each month of the current calendar year — useful for comparing monthly purchasing and sales trends at a glance.

Recent Transaction#

Displays the latest five records. Use the tabs to switch between Sale, Purchase, Quotation, and Payment. Table columns change by tab: sales and purchases show date, reference, customer/supplier, status, and grand total; payments show date, reference, amount, and payment method.

Best Seller Panels#

Three Top 5 best-seller lists are shown: the current month's products by quantity, the current year's products by quantity, and the current year's products by grand-total sales value.

TIP: Use the dashboard as a summary, then open the relevant Sale, Purchase, Return, Expense, or Report page for transaction-level detail. If a staff user cannot see a card or chart, check that role's dashboard permissions.


2. People#

The People module manages every human relationship in the business — customers who buy from you, suppliers you buy from, staff who use the system, sales agents who earn commission, and billers who issue invoices.

2.1 Customer List#

A quick retail transaction can be assigned to a generic "Walk-in Customer", but regular clients and B2B partners should have dedicated profiles. Categorizing customers into Customer Groups (VIP, Wholesale, etc.) lets you automate group pricing.

Creating a Customer Group#

  • Navigate to Setting > Customer Group.
  • Enter the Name (e.g., Wholesale, VIP Member, and Employee).
  • Click Submit.

SalePro interface screenshot

Adding a Customer#

  • Navigate to People > Customer List and click Add Customer.
  • Select the Customer Group they belong to.
  • (Optional) Enter their Tax Number for B2B invoicing.
  • Fill contact details and click Submit.

Picture 17

Customer List Columns#

  • Customer Group — the pricing group assigned to the customer.
  • Customer Details — name, company, contact information, address.
  • Discount Plan — any discount plan applied to the customer.
  • Reward Points — current point balance (when Reward Points is enabled).
  • Deposited Balance — available advance money (total deposit minus amount used).
  • Total Due — outstanding amount (opening due + sales, less payments and returns).

Action Menu#

  • Customer Details — open sales, payments, returns, and due summary.
  • Edit — change group, name, contact, WhatsApp number, credit limit, payment term, customer type, custom fields.
  • Due Report — open the customer's due report.
  • Clear Due — record a payment against outstanding sales.
  • Add Deposit / View Deposit — record and review advance money.
  • WhatsApp Notification — message the customer via Cloud API or WhatsApp Web.
  • Add Point / View Points — manage Reward Points manually.
  • Delete — marks the customer inactive; historical transactions are preserved.

Clearing a Customer Due#

  • Click Action > Clear Due.
  • Enter Received Amount and Paying Amount (Change is calculated automatically).
  • Select the payment method (Cash, Gift Card, Credit Card, Cheque, PayPal, Deposit, Reward Points).
  • Enter Payment Receiver / Note if needed and enable Print Payment Receipt if required.
  • Click Submit.

NOTE: Deleting/deactivating a customer removes the customer from normal active selection but historical transactions must remain available for reporting. If a customer asks for personal details to be removed, use an approved anonymization/privacy process rather than deleting historical business records.

TIP: Import Customers: use People > Customer > Import Customer by CSV for bulk uploads.

See also: 2.3 User List • 21.8 Customer Group • 21.9 Reward Point Setting

2.2 Supplier List#

Overview#

The Supplier module allows you to manage the individuals or companies that provide products for your business. Maintaining accurate supplier profiles is essential for generating purchase orders, tracking inventory costs, and managing accounts payable to ensure you always know who you owe money to. SalePro links these profiles directly to your purchases, so you can easily track expenses, due balances, and payment histories per vendor.

Step-by-Step Instructions#

Part 1: Creating a Supplier#

  • Navigate to People > Add Supplier.
  • Enter the Name of the contact person and the Company Name.
  • (Optional) Enter the VAT Number for B2B tax compliance.
  • Fill in the Email and Phone Number for communication.
  • Provide the Address, City, State, Postal Code, and Country for delivery routing.
  • Click Submit to save the supplier.

Picture 19

Part 2: Using the Supplier in a Purchase#

  • Navigate to Purchase > Add Purchase.
  • Select the Warehouse.
  • Select the required Supplier from the dropdown list.
  • Add the products you are buying and complete the purchase details.
  • Click Submit. SalePro will now automatically link this purchase (and any due balance) to the selected supplier.

Part 3: Managing the Supplier List#

  • Navigate to People > Supplier List.
  • Use the Search field to quickly find a supplier by name, company, or phone number.
  • Review the Supplier Details and Total Due columns to monitor outstanding balances.
  • Use the export toolbar to export the visible list to PDF, Excel, or CSV, or print it.

Picture 18

Detailed Action Menu Breakdown#

Click Action beside a Supplier to open the available options:

  • Edit: Opens the Update Supplier dialog. Change the company name, contact details, VAT number, or address, then click Submit.
  • View Payment: Opens the payment history for this supplier, showing a complete list of all past transactions and cleared dues.
  • Clear Due: Allows you to record a payment against unpaid purchases. Enter the Paying Amount, select a payment method, add a note, and click Submit.
  • Delete: Removes the supplier from the active list. SalePro marks the supplier inactive rather than permanently deleting the historical purchase data.

Explanation of Fields#

  • Name: The primary contact person for the vendor.
  • Company Name: The official business name of the vendor or manufacturer.
  • VAT Number: The tax identification number, required for formal purchase orders and tax reporting.
  • Email / Phone Number: Used for sending digital purchase orders and communication.
  • Address / City / State / Postal Code / Country: The physical location of the supplier, useful for calculating shipping times and freight costs.

How the Supplier Workflow Works in SalePro#

  • An administrator or manager creates a Supplier profile in People > Add Supplier.
  • When stock is running low, a user creates a new purchase in Purchase > Add Purchase and selects that supplier.
  • If the purchase is not paid in full, SalePro automatically adds the unpaid amount to the supplier's Total Due.
  • Later, the administrator goes to the Supplier List, clicks Action > Clear Due, and records the payment to settle the account.

Tips / Warnings#

Tip: Create your primary suppliers before logging your first inventory purchases. This ensures all your opening stock is correctly linked to the right vendors.

Tip: Use the "View Payment" action frequently to reconcile your bank statements with SalePro's accounts payable records.

NOTE: Removing a supplier from active use should not remove historical purchase records. When a supplier is no longer used, keep the historical transactions intact and make the supplier inactive or clearly mark the profile as inactive.

2.3 User List#

Overview#

The User module controls who can log in to SalePro and what they can do once inside. Every login is tied to a Role that defines its permission level, and staff logins can also carry a default Biller and Warehouse so sales are recorded against the right entity and location automatically. Keeping individual accounts per employee — rather than one shared login — lets you trace every sale, edit, or deletion back to the person who made it.

Step-by-Step Instructions#

Part 1: Managing the User List#

Navigate to People > User List. Use this page to find users, review their assigned role, control login status, and manage accounts.

  • Columns shown: Username, Email, Company Name, Phone Number, Role, Status, and Action.
  • Status switch: turn it ON to allow login, or OFF to block login without deleting the user.
  • Use the Search field to quickly find a user.
  • Use the toolbar to export the visible list to PDF, Excel, or CSV, print it, choose visible columns, or select multiple users for bulk delete.

Picture 20

Part 2: Creating a User by Role#

  • Click Add User.
  • Enter Username, Password, Email, Phone Number, and Role.
  • Username and Email must be unique. Use Generate to create a temporary password if required.

Staff User: When you select a staff-type role, also select the default Biller and Warehouse. These determine the normal invoice entity and POS location for that user.

Create the Biller first if needed: Managing Suppliers & Billers

Create the Warehouse first if needed: Multi-Warehouse Management

Picture 22

Customer Login: When you select the Customer role, the form shows Customer Group, customer name, address, tax number, city, and postal code. Saving creates both a User login and a Customer profile.

Create the Customer Group first: Customer Management & Groups

Picture 21

Active: Keep this selected to allow the new user to log in. Clear it to create the account without login access.

Waiter / Service Staff: Use this only for restaurant or service staff when your business uses that workflow.

If Mail settings are configured, SalePro sends the new user's login details by email. Setup reference: Mail, SMS, and WhatsApp Configuration

Part 3: Using the User Action Menu#

Edit: Change user details, role, default biller, default warehouse, active state, or password.

Delete: Soft-delete the user and block login. Prefer the Status switch for a former employee when you may need to reactivate the account later.

Part 4: Editing a User and Resetting a Password#

  • From User List, click Action > Edit.
  • Update the required information and click Submit.
  • To reset a password, enter a new password or use Generate, then submit the form.
  • The user should receive the new password securely.

Explanation of Every Field (Add User Form)#

Username: The unique name the person will type into the login screen (e.g., johnsmith or cashier1).

Password: The password they will use to log in. You can provide a temporary one and ask them to change it later.

Email: The email address associated with the account (used for password resets).

Phone Number: The user's contact number.

Role: CRITICAL FIELD. Select the permission level for this user (e.g., Cashier, Manager). This determines what they can see and do.

Biller: If your business has multiple billing entities, select the default biller for this user.

Warehouse: Select the default warehouse this user works at. When they log in and open the POS, this warehouse will be pre-selected automatically.

Warehouse access is also a security boundary. Operational staff are restricted to their authorized warehouse/location for supported transactions, reports, and direct record access; administrator-level roles can work across locations. A staff user without a valid assigned warehouse should not be treated as having global access.

TIP: When moving an employee to another branch, update the user’s warehouse assignment before the next shift and verify the POS, stock report, purchase list, and sale list all show the intended location.

Is Active: Check this box to allow the user to log in. Uncheck it to disable their account.

Generate Password: Creates a temporary numeric password in the password field.

Waiter / Service Staff: Marks a user for restaurant or service-staff workflows when applicable.

Customer Role Fields: Customer Group and the customer profile fields appear when creating a Customer login.

Biller and Warehouse: These fields are shown for applicable staff roles and are used as that user's defaults.

Business Workflow#

New Hire Process: HR creates Employee Profile → HR creates User Account linked to a Role → Employee is given credentials → Employee logs in and processes sales under their name.

Examples#

Cashier Shift Turnover: A retail store has three cashiers. They create three User accounts: alice, bob, and charlie. When Alice starts her shift, she logs in as alice. Every sale she makes is stamped with her user ID. At the end of the day, the manager generates a sales report specifically filtered by Alice to balance her cash drawer.

Tips#

  • Never Share Logins: Never have a generic cashier login that multiple people use. If money goes missing or a product is deleted, you will have no way of knowing who did it. Always create individual accounts.
  • Employee and User: Create an Employee profile for HRM records and a User account for software access. They are managed separately in the current system.

Warnings#

WARNING: When staff leave, first turn off their Status so they cannot log in. Delete performs a soft delete and removes the user from the active User List; historical transaction data remains.

Troubleshooting#

Problem: An employee forgot their password.

Possible Cause: Normal human error.

Solution: An Admin can go to People > User List, click Edit on that user, type a new password in the Password field, and click Submit. Alternatively, the user can click "Forgot Password" on the login screen if the Mail Server is configured.

Problem: A user logs in but sees sales from the wrong store location.

Possible Cause: Their default warehouse is set incorrectly.

Solution: Edit their User profile and change the Warehouse dropdown to their correct physical location.

See also: 21.1 Role Permission • 11.10 Payroll

2.4 Sale Agents#

Menu: People → Sale Agents

Overview#

Sale Agents are employees who earn commission based on the sales they complete. In SalePro, each agent can have one or more sales-target tiers. Commission is calculated during payroll based on sales recorded under the agent's linked User account.

Prerequisites#

  • You need permission to access Sale Agents. Set it in: Understanding User Roles & Permissions
  • To calculate commission, the Sale Agent must have a linked User login. See: Managing Users & Employees
  • If the agent's User needs a default POS location, create it first: Multi-Warehouse Management
  • If the agent's User needs a default invoice entity, create it first: Managing Suppliers & Billers

Creating a Sale Agent#

  1. Navigate to People > Sale Agents.
  2. Click Add Sale Agent.
  3. Enter the agent's Name, Email, Phone Number, Address, and City.
  4. (Optional) Upload a profile Image and enter the Country.
  5. Set the Sales Target and commission tiers.
  6. (Optional) Check Add User to create a login account for the agent.
  7. Select the Role and, when creating a login, assign the Warehouse and Biller.
  8. Click Submit.

Picture 23

Sale Agent List Columns#

  • Image — profile image of the sale agent.
  • Name — agent's name.
  • Email — registered email address.
  • Phone Number — contact phone number.
  • Department — department assigned to the agent, when applicable.
  • Address — agent's address.
  • Staff ID — unique staff identification number.
  • Action — available actions such as Edit and Delete.

NOTE: Department and Staff ID are not currently settable from the Add or Edit Sale Agent screens — there is no input field for either on this page, so these columns will normally show empty. If you need them filled in, they must be set elsewhere (e.g., via the regular HRM Employee record).

Sales Target & Commission#

Each Sale Agent can have multiple commission tiers based on their total sales amount.

  • Total Sales Amount From — starting sales amount for the tier.
  • Total Sales Amount To — maximum sales amount for the tier.
  • Commission Percent — commission percentage applied when the tier matches.
  • Add More — create an additional commission tier.
  • Cancel — remove an entered tier.

Example:

  • 0 to 50,000 = 2%
  • 50,001 to 100,000 = 3%
  • 100,001 and above = 5%

IMPORTANT: Do not create overlapping commission ranges. The From amount must be lower than the To amount, and the next tier should start after the previous tier ends.

Picture 24

Action Menu#

  • Edit — update the agent's profile information, User account settings, or sales-target tiers.
  • Delete — remove the agent from the active Sale Agent list.
  • Add User — create a login account and link it with the Sale Agent for sales tracking and payroll commission.

How Commission Is Calculated#

During payroll processing, SalePro totals the linked User's sales for the selected payroll month. The total is compared against the configured sales-target tiers.

If a tier matches, the commission is calculated as:

Commission = Total Sales × Commission Percent ÷ 100

If more than one configured tier matches the sales total, SalePro uses the highest calculated commission.

No Commission: Commission remains zero when the agent has no linked User, has no sales during the payroll period, or no configured target tier matches the sales total.

Continue with payroll processing here: Payroll, Attendance & Holidays

Editing a Sale Agent#

  1. Navigate to People > Sale Agents.
  2. Find the required agent using Search.
  3. Click Action > Edit.
  4. Update the profile information or sales-target tiers.
  5. Click Submit.

Deleting a Sale Agent#

  1. Navigate to People > Sale Agents.
  2. Click Action > Delete for the required agent.
  3. Confirm the deletion.

WARNING: Delete a Sale Agent only when they should no longer be active. Before deleting, verify that their historical sales and payroll records are not required for ongoing operations.

Tips and Warnings#

TIP: Use clear, sequential, and non-overlapping sales-target ranges so commission calculations are easy to verify.

WARNING: Always make sure the Sale Agent selects or uses their own linked User account when making sales. Sales recorded under another User are not included in that agent's commission.

TIP: Create and link the User account before the agent starts making sales so their transactions can be correctly included in payroll commission calculations.

2.5 Biller #

Menu: People → Biller List

Overview#

The Biller module allows you to manage the official profiles (such as branches, stores, or company representatives) that issue invoices to your customers. Maintaining accurate biller profiles is essential because this information — including company name, VAT number, and contact details — is printed on your sales receipts and invoices. By creating multiple billers, you can easily manage and track sales across different physical store locations or corporate entities.

Step-by-Step Instructions#

Part 1: Creating a Biller

  1. Navigate to People > Biller List > Add Biller.
  2. Enter the Name of the representative and the Company Name.
  3. (Optional) Upload a profile Image for this biller.
  4. (Optional) Enter the VAT Number if you are required to print tax identification on your invoices.
  5. Fill in the Email and Phone Number for official contact purposes.
  6. Provide the Address, City, State, Postal Code, and Country to define the physical location of this branch.
  7. Click Submit to save the biller profile.

If Mail settings are configured, SalePro automatically emails a confirmation to the biller's contact address when the profile is created.

SalePro interface screenshot

Part 2: Using the Biller in a Sale

  1. Navigate to Sale > Add Sale (or the POS screen).
  2. Select the required Biller from the dropdown list.
  3. Select the customer and add the products you are selling.
  4. Click Submit. SalePro will now use this biller's information on the generated invoice and link the sale to this specific branch/representative for reporting.

Part 3: Managing the Biller List

  1. Navigate to People > Biller List.
  2. Use the Search field to quickly find a specific biller by name, company, or phone number.
  3. Review the list columns (Name, Company Name, VAT Number, Email, Phone Number, Address) to verify the contact information.
  4. Use the export toolbar to export the visible list to PDF, Excel, or CSV, or print it.

Picture 26

Part 4: Importing Billers by CSV

  1. Navigate to People > Biller List.
  2. Click Import Biller.
  3. Click Download beside Sample File to get the CSV template.
  4. Prepare the CSV using the exact column order provided in the template.
  5. Select your file in Upload CSV File.
  6. Click Submit to bulk import the billers.

NOTE: Re-importing a CSV using a Company Name that already exists updates that biller's details instead of creating a duplicate.

Detailed Action Menu Breakdown#

Click Action beside a Biller to open the available options:

  • Edit: Opens the Update Biller dialog. Change the company name, contact details, VAT number, or address, then click Submit.
  • Delete: Removes the biller from the active list. SalePro marks the biller inactive rather than permanently deleting historical sales data associated with them.

Explanation of Fields#

  • Name: The name of the store manager or representative.
  • Company Name: The official business or branch name that will appear on invoices.
  • Image: An optional profile picture or logo for this biller.
  • VAT Number: The tax identification number required for legal invoicing.
  • Email / Phone Number: The official branch contact details printed on receipts.
  • Address / City / State / Postal Code / Country: The physical location of the branch.

How the Biller Workflow Works in SalePro#

  1. An administrator creates a Biller profile for a new store branch in People > Add Biller.
  2. A cashier logs in at that branch and selects this Biller during a POS transaction.
  3. The customer receives a receipt that clearly displays this Biller's specific company name, address, and VAT number.
  4. The administrator can later pull a Biller Report to see exactly how much revenue was generated by this specific branch.

Tips / Warnings#

TIP: If you only have one store, you only need to create one Biller profile. Just select it by default for all your sales.

NOTE: A biller that is no longer used should be made inactive or clearly renamed rather than altering historical invoices. Existing sales must continue to retain their original biller information for audit and reporting.

See also: 5.4 Add Sale • 21.20 Invoice Settings


3. Product#

The Product module is the master catalog for everything SalePro sells or stocks — including categorization, units of measure, barcode printing, and stock adjustment tools.

3.1 Category#

Menu: Product → Category

Categories group your products into families (e.g., "Electronics", "Beverages") for easier browsing, filtering, and POS navigation. Categories can be nested (a Parent with Subcategories).

  1. Navigate to Product > Category and click Add Category.
  2. Enter the Category Name.
  3. (Optional) Select a Parent Category to make this a subcategory, and upload an Image for the POS grid.
  4. Click Submit.

Import: Product > Category > Import Category lets you bulk-add categories from a CSV with just two columns — Name and Parent Category.

WARNING: Deleting a category does not just remove it from the list — it automatically deactivates (hides) every product currently assigned to that category, everywhere in the system. Reassign those products to another category first, or rename the category to "Discontinued" instead of deleting it.

Picture 35

Picture 36

3.2 Brand#

Menu: Product → Brand

Brands group products by manufacturer or trademark, making it easier to find and report on specific brands.

  1. Navigate to Product > Brand and click Add Brand.
  2. Enter the Brand Name and (optionally) upload a logo Image.
  3. Click Submit.

Import: Product > Brand > Import Brand by CSV bulk-uploads brands (Title, Image columns).

NOTE: Unlike Category, deleting a Brand does not touch the products linked to it — those products stay active and visible, they just lose their brand label. This is safer than deleting a Category, but it's still best to reassign products to a new brand first so nothing shows as "no brand."

Picture 34

3.3 Unit#

Menu: Product → Unit

Units define how inventory is measured and sold (Piece, Box, Kilogram, Dozen…). A product can have a Base Unit and one or more Sub Units that convert into it — e.g., purchase in Boxes, sell in Pieces.

Creating a Base Unit

  1. Navigate to Product > Unit and click Add Unit.
  2. Enter the Unit Code (e.g., pc) and Unit Name (e.g., Piece).
  3. Leave Base Unit blank — this makes it a primary/base measurement.
  4. Click Submit.

Creating a Sub Unit (Conversion)

  1. Click Add Unit and enter a Unit Code and Unit Name (e.g., bx / Box).
  2. Select the Base Unit this converts into (e.g., Piece).
  3. Select the Operator — this is a simple multiply or divide, there are no other options.
  4. Enter the Operation Value (e.g., 1 Box = 12 Pieces → Operator × , Value 12; 1 Gram = 1/1000 KG → Operator ÷, Value 1000).
  5. Click Submit.

The conversion is applied the same way everywhere stock moves (sales, purchases, returns): quantity in base unit = quantity × value (for ×) or quantity ÷ value (for ÷). If you leave Base Unit blank while still picking an Operator, SalePro just treats the unit as its own base (× 1).

Picture 33

3.4 Product List#

Menu: Product → Product List

The Product List page is the central hub for managing your entire inventory — monitor stock levels, check pricing, filter by criteria, and access actions like viewing product history or editing details.

Top Menu Buttons

  • Add Product: Click to create a new product.
  • Import Product: Bulk-upload products using a CSV file.
  • All Product In Stock: Quickly show only items currently available in inventory.
  • Filter Products: Toggles advanced filtering options (e.g., Warehouse, Product Type, Stock status).

Viewing Product Details Quickly

Click anywhere on a product's row to open the Product Details popup — showing tax rates, cost, and stock across warehouses without leaving the page.

Action Menu

  • Product History: A log of movements, purchases, and sales related to this product.
  • Print Barcode: Sends the product's code to the barcode printing module (see 3.6).
  • Delete: Removes the product. Products with existing sales/purchases attached cannot be deleted.

Key Columns

  • Quantity: Total current stock across all warehouses.
  • Cost: Your purchase price (often hidden from cashiers depending on role permissions).
  • Stock Worth (Price/Cost): Total value of stock on hand, at selling price and at purchase cost.

Picture 32

3.5 Add Product#

Overview#

Menu: Product → Add Product

The Create Product page is the most detailed form in SalePro. It controls how a product is tracked in inventory, calculated at the POS, and (if enabled) displayed on your eCommerce store. The form dynamically shows or hides fields based on the Product Type and the checkboxes you enable.

  1. 1. Mandatory Fields
  • Product Name: The display name for customers and cashiers.
  • Product Code: The unique identifier (SKU/Barcode) — type it manually or auto-generate it.
  • Category: Used for grouping (see 3.1).
  • Product Unit: The base measurement unit (see 3.3).
  • Product Price: Your standard selling price.
  1. 2. Product Type

There are four Product Types, and choosing one changes the rest of the form:

  • Standard: A physical stocked item — shows Product Cost, Alert Quantity, and Warehouse tracking.
  • Combo: Bundles several Standard products together (e.g., a "Gaming PC Kit"). Hides Product Cost/Alert Quantity and instead shows a Search Product bar to add the bundled items — the combo's cost is calculated automatically from them.
  • Digital: A non-physical good (software, eBook, PDF). Hides physical tracking fields and shows a file-upload field for the digital file the customer receives.
  • Service: For services rather than goods — like Digital, this also skips physical stock tracking (cost/unit fields).
  1. 3. Advanced Features & Checkboxes

Promotional Price: If you enter a promotional price, you must also set a Promotion End Date.

WARNING: Only the End Date is actually enforced — the system checks that today's date hasn't passed the End Date, but it does NOT check the Start Date at all. If you set a Start Date in the future, the promotional price will still apply immediately once the box is checked, not wait for that date. Don't rely on the Start Date to delay a promotion — enable the promotion only when you actually want it to go live.

Has Variant: For products with options (e.g., T-Shirts in S/M/L). Checking this opens a variant table generated from the options/values you enter — for every combination you must set a unique Item Code, Additional Cost, and Additional Price.

Has IMEI / Serial Number: For electronics or high-value items. With this on, both the Purchase screen and the POS/Sale screen require picking or typing a specific IMEI per unit, and the system blocks the same IMEI being used twice.

Has Batch: Tracks batch number and expiry date. Both become required fields at the time of Purchase.

Featured: Gets priority placement on the POS product grid, not just the online store — useful for best-sellers cashiers search for often.

Embedded Barcode: Turn this on only for products sold by weight, sourced from a deli-style scale that prints its own barcode. See 3.6 for how this works.

Sell Online / In Stock: These two toggles only appear at all if the eCommerce module is active on your installation. If you don't see them, your setup isn't using the eCommerce add-on.

  1. 4. Financial, Tax & Warranty

Tax Method: "Exclusive" adds the Order Tax % on top of the Product Price at checkout. "Inclusive" works backward from the Product Price so the customer pays exactly that price, tax included.

Guarantee & Warranty: Enter a numeric warranty period and choose Days, Months, or Years. SalePro uses the sale date and this period to show the product warranty period on the customer invoice/receipt. This records the warranty period only; it does not by itself create a warranty claim or service-request workflow.

Daily Sale Objective: An internal daily sales target for reporting.

Recipes (Manufacturing) — separate from this form

NOTE: There is no "Is Recipe" option on this Add Product form. Recipes are set up separately, from the Manufacturing module's own Recipe screen, where you attach a list of raw-material ingredients to an existing Standard or Combo product. Important: flagging a product as a recipe does NOT by itself make a sale deduct ingredient stock — that only happens for products whose Type is Combo. For a Standard product, selling it deducts only its own quantity, regardless of any recipe attached; ingredients are only consumed through the separate Manufacturing "Production" feature, which is a manual batch-conversion step, not something that happens automatically at the POS.

Picture 31

3.6 Barcodes, Labels & Weight Scales#

Menu: Product → Print Barcode

This covers physically labeling inventory for scanning, and integrating barcode-printing weight scales for businesses that sell by weight (delis, supermarkets, butchers).

Many products arrive with a manufacturer barcode already printed. Items you produce or break down yourself need custom labels — SalePro includes a built-in barcode generator. It also natively supports weight-embedded barcodes printed by deli scales, so a cashier can scan a bag of produce and have the correct weight-based price ring up automatically.

Prerequisites

  • Products must already be created in the system.
  • A standard printer or a dedicated label printer (e.g., Dymo, Zebra).
  • For weight scales: a scale that prints 13-digit barcodes, and the product's "Embedded Barcode" toggle turned on (see 3.5).

Printing Standard Barcodes

  1. Navigate to Product > Print Barcode.
  2. Search and select the product(s) you want to label — you can add several different products to the same print job.
  3. Set the Quantity of labels for each product.
  4. Choose your paper size (A4 or a specific label roll).
  5. Choose what to print on the label (Name, Price, Promotional Text).
  6. Click Submit — a PDF of the barcodes is generated for printing.

How Weight-Embedded Barcodes Work

A weight-embedded barcode is always 13 digits, broken down like this:

  • Digits 1–7: the Product Code — this is what SalePro looks up to identify the item.
  • Digits 8–12: the Weight in grams. SalePro divides this by 1000 to get the quantity (e.g., in kilograms) added to the cart.
  • Digit 13: not used by SalePro — no separate check-digit validation is performed.

The barcode itself never encodes a price — SalePro calculates the price by multiplying the scanned weight/quantity by the product's normal selling price (including any active promotion or tax rules).

WARNING: Scale Product-Code Matching: For this to work, the product's Product Code in SalePro must exactly match the 7-digit code programmed into your physical scale. If they don't match, the POS will show "Product Not Found" when the label is scanned.

Examples

The Boutique: Generates random Product Codes for handmade jewelry, then uses Print Barcode with a label printer to make small price tags for the display case — no weight scale involved.

The Supermarket: The deli scale weighs a steak at 0.55 kg and prints a 13-digit barcode where the first 7 digits are the steak's product code and the next 5 digits encode "00550" (550 grams). The cashier scans it; SalePro identifies the steak, converts 00550 → 0.55 kg, and multiplies that by the steak's price-per-kg to ring up the correct total.

Tips & Troubleshooting

TIP: If printing on standard A4 paper, wait until you have a full page of labels (usually 40+) rather than printing one or two at a time and wasting the sheet.

Problem: Printed barcodes scan incorrectly or not at all.

  • Solution: In the browser's print dialog, make sure Scale is set to "Default"/"100%", not "Fit to Printable Area" — scaling the PDF warps the barcode lines.

Problem: The POS treats a scale barcode as a normal product and says "Not Found".

  • Solution: Check that the product's Embedded Barcode toggle (3.5) is turned on, and that the scanned code is exactly 13 digits with the first 7 matching the product's code.

3.7 Adjustment List#

Overview#

Menu: Product → Quantity Adjustment

Stock Adjustment corrects inventory quantities when physical stock doesn't match what SalePro has recorded — for damaged, lost, expired, or otherwise unaccounted-for items, or general stock-count corrections.

  1. Navigate to Product > Quantity Adjustment.
  2. Select the Warehouse where the stock needs correcting.
  3. Search and add the Product(s) — you can add several different products to one adjustment, each with its own quantity and direction.
  4. For each product, choose Addition or Subtraction and enter the Quantity.
  5. Enter a clear Reason/Note.
  6. Click Submit.

WARNING: Stock adjustments directly change inventory quantities. Only authorized users should perform adjustments, and every adjustment should include an accurate reason.

TIP: Never use Adjustments instead of Purchases. Do not use an Addition adjustment to record new stock arriving from a supplier — use the Purchase module instead, so supplier transactions and payables are tracked correctly.

SalePro interface screenshot

3.8 Stock Count#

Menu: Product → Stock Count

Stock Count lets you compare the actual physical quantity of products in a warehouse against what SalePro has recorded, and correct any differences.

Starting a Count

  1. Navigate to Product > Stock Count and click Add Stock Count.
  2. Select the Warehouse you're counting.
  3. (Optional) Filter by Category and/or Brand if you only want to count part of your inventory today rather than everything.
  4. Click Submit. SalePro generates a CSV snapshot of the expected stock for the scope you chose.

NOTE: Whether a count is treated as "Full" or "Partial" isn't something you pick from a dropdown — it's decided automatically by whether you filtered by Category/Brand. Leave both blank for a full-warehouse count; choose either one and it becomes a partial count of just that scope.

Picture 28

Processing the Physical Count

  1. From the Stock Count list, click Action > Initial File to download the CSV of expected quantities.
  2. Physically count the items and fill in the actual numbers in the CSV.
  3. Click Action > Finalize and upload your completed CSV.
  4. SalePro compares your counted numbers to the system quantities. If everything matches, the count is marked reconciled automatically — no further action needed.
  5. If there are differences, click Add Adjustment to open a Quantity Adjustment form that's already pre-filled with the correct product, warehouse, and +/− quantities for every discrepancy.
  6. Review the pre-filled form and click Submit to actually apply the correction — the stock only changes once you submit this step, not automatically when you finalize.

WARNING: Verify before submitting the adjustment: always physically recount before correcting a discrepancy. Once the pre-filled adjustment is submitted, the stock change is permanent.

TIP: Perform regular counts, especially for high-value, fast-moving, or easily damaged products, to keep inventory and financial reports accurate.

3.9 Damage List#

Menu: Product → Damage List

Damage records stock that's been lost, broken, or spoiled and needs to come out of inventory. Unlike Adjustment, Damage only ever removes stock — there's no add/subtract choice, because damage is always a reduction.

  1. Navigate to Product > Damage List and click Add Damage.
  2. Select the Warehouse and the Date.
  3. Search and add the Product(s) — Unit Cost fills in automatically; enter the Quantity damaged for each.
  4. (Optional) Attach a Document (e.g., a photo of the damaged goods).
  5. Enter a Note explaining what happened.
  6. Click Submit. Stock is deducted immediately — there is no approval step.

Picture 27

List Columns & Action Menu

List columns: Date, Reference, Warehouse, Products (with quantity and cost), Note, Action.

  • Edit: Change the quantities or details — SalePro correctly restores the old stock impact and re-applies the new one.
  • Delete: Removes the damage record and restores the deducted stock. Bulk delete is also available for multiple records at once.

WARNING: Damage entries take effect on your stock immediately when submitted, with no approval step in between. Double-check quantities before clicking Submit.


4. Purchase#

Creating a Purchase is how you get physical stock into your warehouses. A purchase does two things simultaneously: it increases physical inventory counts and logs a financial expense (or debt, if unpaid) in the accounting ledger.

Prerequisites: at least one Warehouse (21.4), at least one Supplier (2.2), and Products already created (3.5).

4.1 Purchase List#

Overview#

The Purchase List page is the central hub for managing your incoming inventory. Here you can view all purchase invoices, track what you owe suppliers, and manage payment statuses.

Viewing Purchase Details#

Simply click anywhere on a purchase row in the data table. This triggers an event that instantly opens a Purchase Details Modal. This popup displays the full invoice, including the list of items purchased, discounts, taxes, and payment history, without needing to load a new page.

Top Navigation & Filters#

  • + Add Purchase: Redirects to the form to create a new purchase.
  • Import Purchase: Upload purchases in bulk via CSV.
  • Deleted Purchases: View purchases that were removed (acts as a recycle bin).
  • Filter Purchases: Clicking this button toggles a hidden filter panel.
  • – Note: You can filter the query by Date range, Warehouse, Purchase Status (Received, Pending, Ordered), and Payment Status (Paid, Due, Partial).

Action Menu Breakdown#

Click the Action button on any row to access specific tasks for that purchase:

  • View: Opens the Purchase Details Modal (same as clicking the row).
  • Duplicate: Copies the data of this purchase into a new "Add Purchase" form, saving you time if you are re-ordering the exact same items from the supplier.
  • Edit: Opens the purchase form to modify quantities, prices, or statuses.
  • Add Purchase Return: Creates a return invoice linked directly to this purchase if you need to send damaged goods back to the supplier.
  • View Payment: Opens a modal showing the history of all payment installments made against this specific invoice.
  • Add Payment: Opens a modal to record a new payment.
  • – Note: If the Payment Status is already fully "Paid", the system will prevent you from adding excess payments, and this button may be disabled or hidden.
  • Delete: Removes the purchase from the system.
  • – Note: Deleting a purchase triggers a calculation that automatically deducts those items from your physical stock count to ensure inventory remains accurate.

Ties to General Settings#

This page relies heavily on your global system configurations:

  • Show products in purchase list: In General Settings, you can toggle this option to "Show" or "Hide". If set to "Show", an extra column will appear directly in the Purchase List data table displaying the exact names of the products bought in that invoice, saving you from having to open the details modal.
  • Currency & Exchange Rate: The values displayed in the "Grand Total", "Paid", and "Due" columns are formatted according to the default currency defined in your General Settings.
  • Date Format: The visual format of the "Date" column is controlled globally via system settings.
  • Reference Prefix: The "Reference" number (e.g., pr-20260815) uses the specific Purchase Reference prefix defined in your system settings.

4.2 Add Purchase#

Overview#

The Add Purchase page records inventory received or ordered from suppliers. SalePro calculates totals as you enter the purchase and, when you save it, updates stock and financial records according to the Purchase Status and Payment Status you selected.

Mandatory & Basic Fields#

Warehouse — Select the warehouse where the purchased stock will be stored.

Supplier — Select the supplier you are purchasing from. This is used to track supplier payables and dues.

Search Product — Search by product name/code or use a barcode scanner to add products.

Search Product Condition — The product search field requires a Warehouse to be selected first. If no warehouse is selected, the search may remain disabled or display an error.

Order Table & Live Calculations#

When a product is added, it appears as a row in the Order Table. SalePro uses JavaScript to calculate the financial values instantly without reloading the page.

Quantity, Cost, Discount & Tax — Changing the quantity or unit cost automatically recalculates the row subtotal.

Global Order Tax — Applies tax to the overall purchase.

Global Discount — Applies a discount to the overall purchase.

Shipping Cost — Adds shipping or transportation charges to the purchase.

Grand Total — JavaScript dynamically recalculates the final purchase amount based on all applicable values.

Purchase Status & Stock Logic#

The Purchase Status determines whether the purchased products are added to physical inventory.

Received — The physical goods have arrived. When the purchase is submitted, SalePro automatically increases the product quantity in the selected warehouse.

Pending / Ordered — The purchase order has been placed, but the goods have not yet arrived. The purchase is saved, but the products are not added to warehouse stock.

TIP: When a Pending / Ordered purchase arrives, edit the purchase and change its status to Received so the stock is added to the warehouse.

Payment Status & Payment Fields#

The Payment Status controls how the supplier payment is recorded.

Pending / Due — The supplier has not been paid. Payment fields remain hidden, and the Grand Total is recorded as an outstanding due amount.

Paid / Partial — A payment is being recorded for the purchase. The payment form becomes available.

When the payment form is displayed, you can enter:

Amount — The amount being paid.

Paying By — The payment method.

Account — The account from which the payment will be deducted, such as Cash or Bank.

Payment Note — Optional information about the payment.

When a payment is recorded, SalePro validates the amount, links it to the purchase and supplier, and posts the payment to the selected operational account so the purchase due and accounting records stay synchronized.

General Settings#

The Add Purchase page is affected by several General Settings.

Default Profit Margin Value — When the Unit Cost of a product is changed during purchase entry, the system may use the configured default profit margin to suggest a new selling price.

Currency & Exchange Rate — Purchase costs, discounts, taxes, and totals use the configured currency and exchange rate.

Date Format — The purchase invoice date follows the global date format configured in the system.

Step-by-Step Workflow#

Select the Warehouse and Supplier.

Set the Purchase Status to Received or Pending / Ordered.

Search for and add the required products.

Enter the quantities and unit costs.

Apply product-level or global discounts and taxes if required.

Enter the Shipping Cost if applicable.

Select the Payment Status.

If Paid / Partial, complete the payment fields.

Click Submit.

If the purchase status is Received, the system updates warehouse stock.

If payment is recorded, the system updates the selected account balance and supplier payment records.

4.3 Import Purchase By CSV#

For bulk purchases, import a spreadsheet instead of adding items manually.

  • Navigate to Purchase > Import Purchase By CSV.
  • Select Warehouse, Supplier, and Purchase Status.
  • Ensure Currency and Exchange Rate are correct.
  • (Optional) Attach Document.
  • Click Download Sample File for the template.
  • Fill in the CSV following the exact column order below.
  • Upload the CSV, add any Order Tax / Discount / Shipping Cost, and click Submit.

Required CSV Columns (exact order)#

  • product_code* — exact product code (Required)
  • quantity* — number of items received (Required)
  • purchase_unit_code* — must match a Unit created in Settings (Required)
  • cost* — buying price per unit (Required)
  • discount_per_unit* — discount per unit; use 0 if none (Required)
  • tax_name* — must match a Tax created in Settings; use 0/blank if none (Required)
  • profit_margin* — markup percentage or flat amount (Required)
  • profit_margin_type* — 'percentage' or 'flat' (Required)
  • price* — final selling price (Required)
  • imei_number — comma-separated serials, if applicable (Optional)

WARNING: Most CSV import errors happen because a required column is empty or the Product Code doesn't exactly match SalePro's records.

4.4 Purchase Return#

If items arrive damaged, incorrect, or need to go back to the supplier, use Purchase Return. It removes returned items from warehouse stock and handles the financial refund from the supplier in the accounting ledger.

  • Navigate to Purchase > Purchase Return and click Add Return.
  • Enter the Purchase Reference number of the original invoice (required).
  • Click Submit — the system loads the original purchase details.
  • Check the box in the "Choose" column for each product being returned.
  • If the product uses IMEI/Serial numbers, select the exact numbers being returned in the popup.
  • Adjust the Quantity (cannot exceed the originally purchased quantity).

Processing the Refund#

  • Refund Amount — automatically calculated from the returned quantity, tax, and discount.
  • Account — select which bank/cash account receives the refund.

WARNING: Never delete a Received purchase just because one item is broken — always use Purchase Return. Ensure your role has the purchase-return-add permission if the Add Return button is missing.

See also: 2.2 Supplier List • 20.20 Purchase Report • 20.25 Supplier Due Report


5. Sale#

5.1 Sale List#

Overview#

The Sale List page is the command center for outgoing inventory and sales revenue. It allows you to view customer invoices created from both the standard Add Sale page and the POS screen. You can track sales, manage customer dues, process returns, and coordinate deliveries.

Viewing Sale Details#

Simply click anywhere on a sale row in the data table to view the invoice.

Note: Clicking the sale row instantly opens the Sale Details Modal. The popup displays the complete invoice, including products sold, discounts, taxes, and payment history, without requiring the page to reload.

Top Navigation & Filters#

+ Add Sale — Redirects to the standard form for creating a new sale invoice.

POS — Redirects directly to the Point of Sale interface for fast retail transactions.

Filter Sales — Opens or hides the sales filter panel.

TIP: Use the Payment Status filter and select Due to quickly find all unpaid customer invoices.

Action Menu Breakdown#

Click the Action button on any sale row to access the available actions.

View / Print — Opens the Sale Details Modal or generates a printable invoice.

Duplicate — Copies the existing sale information into a new Add Sale form. This is useful when a customer re-orders the same products.

Edit — Opens the sale form so you can modify quantities, prices, or other sale information.

Add Sale Return — Creates a return invoice linked directly to the original sale when a customer returns damaged or unwanted products.

Add Delivery — Opens a modal to create a delivery record or delivery challan for the sale. You can assign a delivery person and track statuses such as Packing, Delivering, and Delivered.

View Payment / Add Payment — Allows you to view payment history or record a payment against an outstanding customer due.

Delete — Removes the sale from the system.

Note: If the Payment Status is already fully Paid, the system prevents excess payments from being added, and the Add Payment option may be disabled.

WARNING: Deleting a sale automatically restores the sold products to the physical stock count. Do not delete a sale unless it was created by mistake. If the customer actually returned the products, use Add Sale Return instead.

General Settings#

The Sale List page is affected by several General Settings.

Show Products in Sales List — When enabled, an additional column appears in the Sale List table showing the exact product names included in each invoice.

Currency & Exchange Rate — The Grand Total, Paid, and Due values are displayed according to the default currency and exchange rate configured in General Settings.

Reference Prefix — The sale invoice Reference number, such as sr-20260815, uses the Sale Reference prefix configured in the system settings.

5.2 Instalment List#

Overview#

The Installment List page is the central dashboard for tracking all customer installment plans. Whenever you create a sale with an installment payment option, the plan is automatically recorded here.

This page helps you monitor who owes money, how much they have paid, how much remains, and when their next payment is due.

Understanding the Installment Table#

The main table provides a quick summary of all active and completed installment plans.

Plan Name — The custom name given to the installment plan during the sale, such as 12 Months EMI.

Reference — The unique invoice number of the original sale, such as sr-2026-xxx. This allows you to trace the installment plan back to the original sale.

Customer — The name of the customer associated with the installment plan.

Total Amount — The total financial value of the installment plan, including the sale price and any additional processing fees or interest.

Paid — Shows the customer's payment progress. For example, 3 / 12 means the customer has paid 3 out of 12 scheduled installments.

Remaining — Shows the number of installments the customer still needs to pay.

Next Due Date — Automatically displays the date when the customer's next installment payment is due.

TIP: Check the Next Due Date column regularly, or sort the table by this column, to quickly identify customers who need to be contacted for upcoming payments.

Action Menu#

Click the Action button on any row to manage a specific installment plan.

View Details — Opens the detailed view of the selected customer's installment plan.

Inside the details page, you can:

View the complete installment schedule.

See the payment status of each installment.

Check upcoming and completed payment dates.

Click Add Payment to record an installment payment when the customer makes a payment.

Exporting & Reporting#

The top of the Installment List provides standard export and printing options.

PDF — Export the installment list as a PDF file.

CSV — Export the installment data as a CSV file for further analysis or accounting.

Print — Print the complete installment list directly.

TIP: Use the export options to help your accounting team track expected future revenue, upcoming installment payments, and outstanding customer debts.

5.3 POS (Point of Sale)#

The POS module (/pos) is the most important and powerful interface in SalePro. It is built for frontline staff/cashiers to process retail transactions quickly — touch-screen friendly, with large visual buttons, barcode scanning, and a simple payment workflow.

The interface looks simple, but a lot of hidden logic runs behind it — General Settings and POS Settings together control the behaviour of the entire POS page.

SalePro interface screenshot

Prerequisites

  • Products must exist in stock (added via Purchase).
  • A barcode scanner (optional, but highly recommended).
  • Warehouse, Biller, and Customer should already be created.

Processing a Sale#

  • Click Sale > POS from the sidebar (opens full-screen).
  • Select the Customer (defaults to "Walk-in Customer").
  • Add items — scan with the Barcode Scanner to add directly to the cart, or click a product image from the Category/Brand filter.
  • Adjust the cart quantity with the + / – buttons.
  • Click Cash, Credit Card, or Multiple Pay to take payment.
  • The receipt prints automatically (if configured) and the screen clears for the next sale.

Interface Areas#

Top Navigation Bar

  • Dashboard/Product/Sale/Purchase/Transfer List dropdown (menu icon) — quick navigation links, visibility is permission-based.
  • Keyboard Shortcut icon — shows the full list of quick-key shortcuts (see Keyboard Shortcuts below).
  • Calculator icon — a full on-screen calculator popup inside POS (AC, CE, +, -, ×, ÷).
  • Sale Return — a shortcut form to jump straight to the return page using a reference number.
  • Full Screen icon — makes the browser window fullscreen.
  • Customer Display (Monitor) icon — opens a secondary customer-facing monitor that live-syncs with the cart (via localStorage).
  • Print Last Receipt — shortcut to reprint the most recent sale's receipt.
  • Cash Register icon — (if enabled in POS Setting) shows the register's current details.
  • Notification icon — shows low-stock alerts plus an unread notification count badge.
  • Offline Cloud icon — Online/Offline status indicator with a pending offline-sale count badge.
  • Profile menu — Profile, Add Expense, Add Payment, Today's Sale, Today's Profit, POS Setting, General Setting, My Transaction, My Holiday, Logout.

Left Side — Cart Area

  • Date Choice — a calendar dropdown to change the sale date (permission-controlled).
  • Warehouse / Biller dropdown — selectable from a collapsible panel if the user doesn't have a fixed warehouse/biller.
  • Currency panel — select sale currency and exchange rate.
  • Customer selection — searchable; a "+" icon next to it lets you add a new customer directly (modal, including WhatsApp number).
  • Price Option — Retail/Wholesale price toggle (in non-restaurant mode).
  • Restaurant mode fields (when restaurant POS is active) — Service (Dine In/Take Away/Delivery), Table select (with a visual floor-plan modal), Waiter select.
  • More Options (collapsible) — Account selection, Sale Reference No (auto-generated or manual), Custom Fields.
  • Product Search Bar — includes a barcode scan button; searches by IMEI/name/code with an auto-suggestion dropdown.
  • Cart Table — Product, Price, Quantity (+/-), Subtotal, Delete; a pencil/edit icon allows price and discount override (requires manager permission).
  • Totals Section — Items count and Total (subtotal); Discount (Flat or Percentage); Coupon (enter a code to apply); Order Tax (select a tax rate from a dropdown); Shipping Cost (manual input).

Right Side / Bottom — Product Grid & Payment

  • Category / Brand / Featured filter buttons.
  • Product Grid — visual tiles; clicking adds directly to the cart. If the product has variants, a separate Variant Selection modal opens (with stock/price for each variant row).
  • Payment actions — the cashier can use the enabled payment methods (for example Cash or Card), Multiple Payment for split tender, Credit Sale when credit is allowed, Instalment when instalments are enabled, Draft to save without finalizing, Cancel to clear the current cart, and Recent Transaction to reopen recent sales or drafts. The exact buttons depend on POS Settings and permissions.

Payment Modal (Finalize Sale)

Payment method tiles are shown dynamically based on what is enabled in POS Setting:

  • Cash, Card, Cheque, Gift Card, Deposit, Points (if reward points are active).
  • Third-party gateways — mpesa (STK push + QR), mtnmomo (Request-to-Pay + QR), PayHere, Stripe — all support a polling + QR-code checkout flow.
  • Razorpay — UPI-only flow; requires customer name/email/phone.
  • Paying Amount, Paid By, and Cash Received fields.
  • Add More Payment — allows multiple payment rows to be added (multiple pay).
  • Payment Receiver, Payment Note, Sale Note, Staff Note.
  • The right side always shows Total Payable, Total Paying, Change, and Due.
  • Complete Sale button, along with Print Invoice and Send WhatsApp Message checkboxes.

WARNING: By default, an out-of-stock item throws an error and blocks the sale. To allow overselling ("Negative Inventory"), an Admin must enable it in Setting > General Setting.

TIP: Click the Keyboard icon on the POS top bar to see quick-key shortcuts for search, discounts, and fast checkout.

Keyboard Shortcuts#

Clicking the keyboard icon on the top bar shows the full shortcut list. Some default shortcuts:

Shortcut

Action

Shift+C

Customer select

Shift+D

Draft sale

Shift+E

Order discount focus

Shift+F

Open payment modal

Shift+K

Coupon code focus

Shift+P

Print last receipt

Shift+Q

Shipping cost focus

Shift+R

Cash register details

Shift+S

Product search focus

Shift+X

Order tax focus

Shift+T / Shift+W

Table / Waiter select (restaurant mode)

Settings That Affect POS#

General Setting’s → Effect on POS

Setting

Effect

Sale without stock (Overselling)

If "No", an item with 0 stock cannot be sold (hidden guard). If "Yes", Negative Inventory is enabled.

Currency & Decimals

All prices in POS are displayed in this format.

POS Page CSS

Custom CSS injection can completely change the POS UI (button color/size/layout).

Invoice Format (GST)

Selecting "Indian GST" auto-calculates CGST/SGST/IGST and shows them separately on the receipt.

POS Settings → Effect on POS

After saving POS Settings, reload the POS if necessary so the latest options are visible to the cashier.

Field

Effect

Default Customer / Biller / Warehouse

The POS top bar is auto pre-filled — Walk-in customer checkout is possible in 2 clicks.

POS Mode

Regular / Restaurant / Ask Every Time — decides which layout loads (pos.blade or restaurant_pos.blade).

Displayed Number of Product Row (product_number)

How many tiles are shown at once in the product grid.

Payment Options

A comma-separated list; duplicates are not allowed ("Payment options must be unique" error) — this list decides which buttons appear in the payment modal.

Touchscreen Keyboard (keybord_active)

When on, a virtual keyboard appears as soon as a text field is clicked.

Table Management (is_table)

When enabled, POS switches to "restaurant mode" — Table/Waiter/Service become mandatory.

Send SMS After Sale (send_sms)

Clicking Submit triggers the SMS API in the background; the cashier doesn't need to do anything.

Cash Register (cash_register)

When enabled, POS stays locked until "Cash in Hand" is declared; every sale is bound to that register (for end-of-day balancing).

Play Sound (play_sound)

A beep sound plays when a product is added/scanned.

Show Print Invoice (show_print_invoice)

Controls whether the "Print Invoice" checkbox is shown in the checkout modal.

Payment Gateways & Dynamic Checkout#

Whichever options (Stripe, PayPal, Cash, Instalment, Points, mpesa, mtnmomo, PayHere, Razorpay, etc.) are checked in POS Setting, exactly those buttons are dynamically generated in the checkout modal.

  • Multiple Pay — a bill can be split, e.g. $50 Cash + $50 Card on a $100 bill.
  • Points Integration — if the customer has loyalty points, their cash value is calculated and can be used as a payment method.
  • Credit Sale — due date is auto-calculated from the pay term (days/months); Customer Credit Limit is validated via CustomerCreditService.
  • Instalment — a schedule preview is generated from down payment, number of months, and additional amount; a separate payment method can be selected.

Accounting Integration (Payment Account)#

When a sale or payment is finalized, SalePro automatically creates the required accounting entries. The cashier does not need to create a journal manually.

  • Only active operational payment accounts that are valid for receiving money should be offered at checkout. This prevents a cashier from posting a customer payment to an inappropriate account.
  • If an older installation still uses legacy account behavior, available account choices may differ until its accounting configuration is upgraded or reconciled.
  • If an expected payment account is missing, an administrator should review the accounting/payment-account configuration rather than bypassing the restriction.

POS Offline / Online Auto Sync#

Overview#

The POS can continue working even if the internet connection drops. When the internet is available, the system prepares the POS by saving product information in the browser. If the connection is lost, the cashier can still add products and complete a sale. The sale is saved temporarily on that computer. When the internet comes back, the system automatically sends the saved sale to the server.

POS Screens#

Online POS Screen#

Below is the POS screen while the system is online. The cloud icon in the top bar shows that the POS is connected.

SalePro interface screenshot

Offline POS Screen#

Below is the POS screen while the system is offline. The cloud icon is red, showing disconnected status, and a warning toast notification indicates offline mode.

SalePro interface screenshot

Auto Sync Flow#

Online: POS loads products and prepares them for offline use.

Offline: POS detects connection loss and switches to offline mode automatically.

Local Save: Completed sales are saved on the same computer/browser.

Pending Count: The cloud badge shows how many sales are waiting to sync.

Back Online: POS detects the connection and sends pending sales to the server automatically.

Completed: Synced sales become normal sales in the system.

How It Works#

1. While Online#

The POS loads normally.

Product information is saved in the browser for offline use.

The cloud icon shows online status.

Sales are submitted directly to the server.

Stock, payment, invoice, reports, and accounting are updated immediately.

2. When Internet Is Lost#

The POS automatically detects the connection loss.

The system switches to offline mode.

Online-only options are hidden.

The cashier can continue using the available cached product list.

The cloud icon changes to offline mode.

The cashier does not need to manually turn on offline mode. It happens automatically.

3. Saving a Sale Offline#

The sale is not sent to the server immediately.

The sale is saved safely in the browser on that same computer.

The cloud badge shows how many sales are waiting to sync.

The cashier can print an offline receipt if needed.

The POS cart is cleared so the cashier can continue the next sale.

From the cashier's side, the process feels almost like a normal sale. The main difference is that the sale waits locally until the internet comes back.

4. When Internet Comes Back#

The POS automatically detects that the system is online again.

It checks whether there are any pending offline sales.

If pending sales exist, it starts syncing automatically.

Sales are sent to the server one by one.

Successfully synced sales are removed from the pending list.

If any sale fails to sync, it remains pending and can be retried later.

No manual upload is needed from the cashier.

5. After Sync Is Completed#

It becomes a normal sale in the system.

Stock is updated.

Payment information is saved.

Reports are updated.

Accounting-related records are processed.

The sale can be viewed from the regular sales list.

Important Notes#

Receipts vs Records: Offline receipt printing is available, but the final server record is created after sync.

Browser Dependency: Offline sales are saved on the same computer and browser where the sale was made.

Sync Environment: That same browser needs to come back online for the pending sales to sync.

Data Loss Warning: If browser storage is cleared before syncing, pending offline sales may be lost.

Initialization Requirement: The POS should be opened online first so product data can be prepared for offline use.

WARNING: Offline sales are tied to the same computer/browser that made them. If browser storage is cleared before syncing, pending offline sales may be lost. The POS should be opened online first so the product data is cached and ready for offline use.

Table Management (Restaurant Mode)#

When "Table Management" is enabled in POS Setting (or POS Mode = Restaurant):

  • POS switches to the restaurant ordering layout, where service type, table, waiter, and kitchen workflow become part of the order.
  • The cashier/waiter must select a specific Table (from a visual floor-plan modal — available shown in green, occupied in red), a Service Type (Dine In/Take Away/Delivery), and a Waiter.
  • Instead of an immediate checkout, the order stays as a "Draft" until the meal is finished and the bill is paid.
  • Clicking an occupied table resumes that sale's draft.

Restaurant features depend on configuration. Floors/tables, waiter users, kitchens/KDS routing, and product modifiers should be prepared before staff begin taking live restaurant orders.

  1. Finalizing the sale updates the sale, payment, stock, and accounting records once. The kitchen workflow must not create a second stock deduction.
  2. When the customer is ready to pay, open the table/order, review the final bill, apply authorized discount/tax if needed, and collect payment through the normal POS payment flow.
  3. The waiter/cashier can continue adding items to the same table/order while the kitchen processes the existing items.
  4. Kitchen-routed items appear in the Kitchen Display System (KDS), where kitchen staff work through the configured preparation statuses.
  5. Add menu items. When a product has configured modifiers/options, select the required choices before sending/finalizing the item.
  6. For Dine In, select the floor/table and waiter. An occupied table can be reopened to continue the same order.
  7. Choose the service type: Dine In, Take Away, or Delivery.

Restaurant Order-to-Kitchen Workflow#

Catalog QR#

A Catalog QR Code feature for shops and restaurants: each table can have its own unique QR code. Customers scan it with their phone to view the digital menu, browse products, and place orders directly — no physical menus or staff needed.

Business Workflow Examples#

Example: The cashier logs in → opens POS → scans 5 items → the customer hands over $50 → the cashier clicks "Multiple Pay" and enters $50 in the Cash field → the system calculates the change → clicks Submit → the cash drawer opens, the receipt prints, and stock is deducted.

Split Payment example: The bill is $100. The customer wants to pay $30 cash and the rest on a Visa card. The cashier clicks "Multiple Pay" → enters $30 in the Cash row → clicks "Add Payment Row" → selects Credit Card → enters $70. The system accepts the split transaction and the daily accounting ledger balances perfectly.

Troubleshooting#

Issue

Possible Cause

Solution

Barcode scan shows "Product Not Found"

The item is completely out of stock in that warehouse, or the physical barcode doesn't match the database.

Go to Product > Product List and verify stock and barcode.

Nothing happens on the Credit Card button

A payment gateway like Stripe isn't configured, or the API key is wrong.

Check Payment/Gateway settings, or use "Multiple Pay" with an offline terminal method.

Out-of-stock item can't be sold

Overselling (Negative Inventory) is disabled.

Go to General Setting and enable "Sale without stock".

Offline sale isn't syncing

Internet hasn't returned yet, or browser storage was cleared.

Check connectivity; open POS online again to refresh the product cache.

Payment options won't save

A duplicate option was selected.

Select each payment method only once.

  • Customer Management & Groups
  • Payments, Gateways, and Installments
  • Hardware Configuration (Printers & Displays)
  • General Settings & POS Settings (Admin Panel)
  • Accounting Engine & Account Mapping

5.4 Add Sale#

Overview#

This guide provides a complete breakdown of every input field on the Add Sale page. It explains how different fields interact with each other, which fields automatically hide or show based on your selections, and how the system calculates your final invoice.

Section 1: Basic Information Fields#

Date — Automatically fills with today's date.

Customer — Required. Select the buyer from your customer list.

Warehouse — Required. Select where the physical products are located.

Note: The Select Product search bar remains locked, hidden, or disabled until you choose a warehouse.

Biller — Required. Select the employee or company profile issuing the sale.

Section 2: Product Search & Order Table#

Added products appear in the Order Table with the following adjustable fields for each item:

Quantity — Change the amount being sold.

Net Unit Price — The selling price of a single item.

Discount — Apply a discount specifically to the selected product line.

Tax / VAT — Select a specific tax rate, such as 5% or 10%, for the product.

WARNING: If you try to sell a quantity greater than the available stock in the selected warehouse, the system will instantly alert you.

Section 3: Global Sale Modifiers#

Order Tax / VAT — Applies a global percentage tax to the entire subtotal.

Order Discount — Applies a flat discount amount to the final bill.

Shipping Cost — Adds a delivery fee to the final bill.

Attach Document — Upload any related documents.

Sale Status — Select Completed, Pending, or Draft.

TIP: Use Draft if you want to prepare the invoice now but process it later. Drafts do not deduct physical stock.

Section 4: Payment Information#

The Payment Status controls which payment fields are displayed.

Payment Status — Select Pending, Due, Partial, or Paid.

Note: If you select Pending or Due, the system hides all payment fields. If you select Paid or Partial, the payment fields automatically appear.

Payment Fields#

Amount — Automatically fills with the Grand Total when Paid is selected, or allows you to enter a lower amount when Partial is selected.

Paying By — Select the payment method.

Note: This field is dynamic. If you select Cheque, a Cheque Number field appears. If you select Credit Card, the required card details appear.

Account — Select the bank or cash account that receives the payment.

Section 5: Installment Plan#

Click the Installment Plan button to open a popup window with the following fields:

Plan Name & Price — Enter the plan name. The Price automatically displays the invoice total.

Additional Amount — Add processing fees, interest, or other additional charges.

Down Payment — Enter the amount the customer is paying upfront.

Months — Enter the number of months for the installment plan.

Note: Entering the number of months automatically generates a Schedule Preview showing the exact dates and amounts due for each upcoming installment.

TIP: The Installment Plan is useful for retaining customers who make large purchases but need flexible payment options over time.

Ties to General Settings#

This page is directly affected by several global configurations:

Default Selections — General Settings can define default Customer, Biller, and Warehouse values. These fields will already be selected when the Add Sale page is opened.

Currency & Date Format — Financial totals use the default currency symbol, while the Date picker follows the system's global date format.

WARNING: A Pending sale does NOT reserve inventory — a cashier can still sell those same units on the POS. Only Completed sales protect stock counts.

5.5 Import Sale By CSV#

Navigate to Sale > Import Sale to bulk-import sales from another system. Before uploading, select Customer, Warehouse, Biller, and Currency & Exchange Rate.

Required CSV Columns (exact order)#

  • product_code — exact product code matching inventory.
  • quantity — quantity sold.
  • sale_unit_code — unit code (e.g. pc, kg); use 'n/a' for digital products.
  • price — unit price.
  • discount_per_unit — discount per individual unit.
  • tax_name — must match a Tax setting, or leave blank.

5.6 Deliveries, Challans & Packing #

Overview#

This article explains how to manage the physical dispatch of goods after a sale is completed.

In a retail store, the customer takes the item immediately. In e-commerce, furniture sales, or B2B supply, the goods must be delivered. SalePro includes a Delivery module that allows you to generate Packing Slips (Delivery Challans) for your drivers, track the status of shipments, and log exactly who signed for the package.

Prerequisites#

A sale must already exist in the system (either from the POS or the Add Sale menu).

The sale must have a status of "Completed" (Meaning the goods are legally the customer's and are ready to be moved).

Step-by-Step Instructions#

5.7 Delivery list#

Step 1: Create a Delivery Order#

From the left sidebar, navigate to Sale > Sale List.

Locate the sale that requires delivery.

Click the dropdown arrow in the Action column.

Select Add Delivery.

A modal window will appear. The system automatically pulls the customer's address from their profile.

Fill in the delivery details.

Change the Status to Packing or Delivering.

Select the Courier Name.

Click Submit.

Screenshot: The Add Delivery modal showing Address, Driver, and Status fields

5.8 Packing Slip#

Step 1: Print the Packing Slip (Challan)#

Navigate to Sale > Delivery List. (This is your master dispatch list).

Locate the delivery you just created.

Click anywhere on the delivery row (except the Action column) to open the Delivery Details window. Click the Print button at the top left of the window.

A PDF will generate. This document lists the items to be delivered but hides all prices. Print this and give it to your driver.

Step 2: Mark as Delivered#

When the driver returns and confirms the package was dropped off, navigate back to Sale > Delivery List.

Click Edit on that specific delivery.

Change the Status to Delivered.

(Optional) Type the name of the person who signed for the package in the "Received By" field. (Use the "Delivered By" field for the driver's name).

Click Submit.

Explanation of Every Field (Add/Edit Delivery)#

Delivery Reference: An auto-generated tracking number for internal use.

Sale Reference: A link back to the original financial invoice.

Customer / Address: Where the goods are going.

Delivered By: The name of your staff member or the 3rd party courier (e.g., FedEx, Driver John).

Status:

Packing: Warehouse staff is currently boxing the items.

Delivering: The box is on the truck.

Delivered: The package has reached the customer.

File Attachment: Use this to upload a scanned copy of the physical paper receipt containing the customer's signature.

Business Workflow#

Customer buys a Fridge on POS → Cashier asks for address and finalizes sale → Warehouse manager sees the sale in Sale List, clicks Add Delivery, sets status to "Packing" → Prints Packing Slip → Driver takes fridge and slip → Customer signs slip → Driver returns paper → Manager edits Delivery, uploads photo of signature, sets status to "Delivered".

Examples#

Third-Party Logistics: A business sells online. They pack 50 boxes a day. They create 50 Deliveries in SalePro, setting "Delivered By" to DHL and typing the DHL Tracking Number into the Notes field. This allows customer service to easily find the tracking number if a customer calls asking where their package is.

Tips#

Use the Attachment Feature: In dispute resolution (e.g., a customer claims they never received a $5,000 piece of equipment), having a digital scan of their signature attached directly to the SalePro Delivery record is invaluable.

Warnings#

WARNING: Deliveries Do Not Affect Stock: Creating a delivery does NOT subtract stock from your warehouse. The stock was already subtracted the moment the Sale was marked "Completed". The Delivery module is purely a logistical tracking tool.

Troubleshooting#

Problem: I can't find the "Add Delivery" button for my sale.

Possible Cause: The sale status is set to "Draft" or "Pending".

Solution: Deliveries can only be generated for "Completed" sales. Edit the sale and change the status.

See also:

6.3 Standard Sales & Quotations

5.3 POS (Point of Sale)

5.9 Gift Card List#

Creating and Selling a Gift Card#

  1. Navigate to Sale > Gift Card and click Add Gift Card.
  2. A random Card No is generated. If you have physical plastic cards with magnetic stripes or barcodes, scan the physical card into this field instead.
  3. Enter the Amount and optionally assign it to a Customer.
  4. Click Submit.

SalePro interface screenshot

WARNING: Creating a gift card record does not itself deposit money in your bank — you must still ring up the customer for the amount on the POS or record the payment on the backend.

Redeeming on the POS#

  1. Add items to the cart.
  2. Click the Multiple Pay button.
  3. Select Gift Card as the Paying Method.
  4. Type or scan the Card No. The system deducts the money from the card's balance.

Business Workflow#

Examples#

Warnings#

WARNING: Gift Card Accounting: Selling a gift card creates a "Liability" in accounting terms (you have cash, but owe goods). Be sure your accountant understands how to pull the Gift Card balance reports to properly balance your end-of-year books.

5.10 Coupon List#

Creating a Coupon#

  1. Navigate to Sale > Coupon and click Add Coupon.
  2. Type a Coupon Code (e.g., BLACKFRIDAY). You can also click Generate for a random code.
  3. Select the Type (Percentage or Fixed Amount).
  4. Enter the Value (e.g., 20 for 20%).
  5. Enter a Minimum Amount (e.g., 50). The coupon will only work if the cart total is above $50.
  6. Enter an Expired Date.
  7. Click Submit.

SalePro interface screenshot

Redeeming on the POS#

  1. Add items to the cart.
  2. Click the Coupon button at the bottom of the cart.
  3. Type the coupon code. The discount is applied.

Explanation of Key Fields#

  • Coupon Type – Percentage: A 10% coupon on a $100 cart gives a $10 discount. On a $200 cart, it gives a $20 discount.
  • Coupon Type – Fixed Amount: A $10 coupon gives a $10 discount regardless of whether the cart is $50 or $500.

Business Workflow#

Tips#

Warnings#

WARNING: Gift Card Accounting: Selling a gift card creates a Liability in accounting terms (you have cash, but owe goods). Be sure your accountant understands how to pull the Gift Card balance reports to properly balance your end-of-year books.

Troubleshooting#

Problem: A coupon code isn't working on the POS.

Possible Cause: The coupon has expired, the usage limit was reached, or the cart total is below the "Minimum Amount" threshold set during creation.

Solution: Check the coupon settings in Sale > Coupon.

5.11 Courier List#

Step 1: Create a Delivery Order#

From the left sidebar, navigate to Sale > Sale List.

Locate the sale that requires delivery.

Click the dropdown arrow in the Action column.

Select Add Delivery.

A modal window will appear. The system automatically pulls the customer's address from their profile.

Fill in the delivery details.

Change the Status to Packing or Delivering.

Select the Courier Name.

Click Submit.

5.12 Sale Return#

Processing a return puts the item back into warehouse inventory and records a financial deduction (refund) in the accounting ledger.

  • Navigate to Sale > Sale Return > Add Return, or use Action > Add Return from the Sale List.
  • Ensure the returned Quantity matches what the customer is handing back.
  • If the item is unsellable, process the return normally, then perform a Quantity Adjustment (subtraction) separately.
  • Select the Paying Method used for the refund (Cash, Bank, etc.).
  • Click Submit.

Key Fields#

  • Return Note — visible reason for the return (useful for management review).
  • Staff Note — private, admin-only note.
  • Order Tax / Order Discount — must mirror the original sale's discount, or the refund amount will be incorrect.

WARNING: If the customer originally paid by card, SalePro only records the accounting side of the refund — you must still process the actual refund through your card terminal or gateway.

5.13 Sale Exchange#

An exchange returns one or more previously purchased items and gives the customer new item(s) in their place. SalePro automatically calculates the returned value, new products total, grand total, and whether the customer owes money or receives a refund.

Method A — With a Sale Reference Number#

  • Go to Sale > Sale Exchange and enter the Sale Reference Number, then click Continue to Exchange.
  • The system loads Customer, Store, Biller, Account, and the original product list.
  • Check the boxes for products being exchanged; adjust return quantities as needed.
  • Add new product(s) via New Select Product.
  • Fill Order Tax, Return Discount, Return Note, Staff Note as needed.
  • Review the Exchange Calculation and click Submit.

Method B — Without a Reference Number#

  • Click Continue Without Reference.
  • Select the Customer and Store/Warehouse.
  • Add returned product(s) via Return Select Product.
  • Add new product(s) via New Select Product.
  • Review the calculation and click Submit.

Exchange Calculation Outcomes#

  • Even Exchange — return value equals new value; Balance = 0.00.
  • Customer Owes Money — new products total is higher; customer pays the difference.
  • Customer Receives a Refund — returned value is higher; the balance is refunded.

See also: 5.12 Sale Return • 5.1 Sale List


6. Quotation#

A Quotation is a formal price offer for a corporate or B2B client. It does NOT deduct stock and does NOT record revenue until it is converted into a sale.

6.1 Quotation List#

Navigate to Quotation > Quotation List to review all quotations and their status. From the Action dropdown you can Email a PDF copy to the client, or Create Sale to convert an accepted quote.

Converting a Quotation to a Sale#

  • Find the accepted quote in Quotation > Quotation List.
  • Open the Action dropdown and select Create Sale.
  • The system transports all data into the Add Sale form.
  • Review details, set the Payment Status, and click Submit.

6.2 Add Quotation#

  • Navigate to Quotation > Add Quotation.
  • Fill out the form like a Standard Sale (Customer, Products).
  • Select the Quotation Status (e.g., Pending, Sent).
  • Click Submit.

WARNING: Emailing a quotation requires the customer to have a saved email address and SMTP to be configured in Setting > Mail Setting.

See also: 5.4 Add Sale • 2.2 Mail, SMS, and WhatsApp Configuration


7. Transfer#

Stock Transfer moves inventory between warehouses — for example, redistributing goods from a main distribution warehouse to individual retail-store locations, or consolidating stock before closing a location.

7.1 Transfer List#

Completing a Transfer

  1. Navigate to Transfer > Transfer List.
  2. Find the pending transfer and click Edit.
  3. Confirm the received quantities and destination warehouse.
  4. Change the Status to Complete.
  5. Click Submit. The stock is then officially added to the destination warehouse.

Transfer Status

  1. Draft / Pending — the transfer is planned, but stock has not officially left the warehouse.
  2. In Transit — stock has left the source warehouse and is currently being transported.
  3. Completed — the stock has arrived and is officially added to the destination warehouse.

7.2 Add Transfer#

Use Add Transfer to move stock from one warehouse to another. Select the source and destination warehouses, add the products and quantities, choose the transfer status, and enter shipping cost when applicable.

  1. Navigate to Transfer > Add Transfer.
  2. Select the From Warehouse (where the stock is currently held).
  3. Select the To Warehouse (where the stock is going).
  4. Search for the products being moved and select them.
  5. Enter the Quantity of each item being transferred.
  6. Select the Status (usually Pending or Sent).
  7. Enter the Shipping Cost if a third-party carrier is used.
  8. Click Submit to save the transfer.

7.3 Import Transfer By CSV#

Transfers can be prepared in bulk using CSV import when the required import feature is enabled. Use the import template provided by SalePro and ensure product codes, warehouse references, quantities, and other required fields are valid before uploading.

Important

Do not transfer more stock than is available in the From Warehouse. The source warehouse must have sufficient stock before the transfer can be processed.

See also: 4.1 Multi-Warehouse Management • 4.3 Creating & Managing Products • 5.2 Creating & Importing Purchases


8. Expense#

While SalePro automatically tracks revenue from sales and costs from purchases, running a business involves other financial transactions. The Expense module records overhead costs so the Profit & Loss report stays accurate.

8.1 Expense Category#

Navigate to Expense > Expense Category to create categories such as Utilities, Rent, or Office Supplies before recording expenses — this is a prerequisite for the Add Expense form.

8.2 Expense List#

Menu: Expense > Expense List

Shows Date, Reference No, Warehouse, Category, Amount, Note, and Action columns. Filter by date range, and (for admin/manager roles) Warehouse or Expense Category.

From the Action dropdown: View Document (only shown if a receipt was attached), Edit, and Delete. A bulk delete option is available via row checkboxes.

WARNING: Deleting an expense automatically reverses its accounting entry — the amount is credited back to the linked account, not just removed from the list.

8.3 Add Expense#

  • Navigate to Expense > Add Expense.
  • Select the Expense Category.
  • Select the Warehouse the expense applies to.
  • Enter the Amount.
  • Select the Account the money was paid from (e.g., Petty Cash, Main Bank).
  • Enter a Note describing the expense.
  • Click Submit.

WARNING: Do not log Inventory Purchases as Expenses. Use Purchase > Add Purchase for stock — logging it as an Expense deducts the bank balance without ever adding the physical goods to your warehouse.

TIP: Attach a photo or PDF receipt to each expense so your accountant has proof for tax deductions.

See also: 8.2 Double-Entry Accounting Setup & Mapping (10.1–10.5 Accounting)


9. Income#

Income records miscellaneous revenue outside standard product sales (e.g., service fees, rental income, or refunds received). Recorded income is added to Revenue on the Dashboard's Monthly Summary and Profit calculations.

9.1 Income Category#

Menu: Income > Income Category

Create categories (e.g., Rental Income, Interest, Refunds) before recording income entries. Each category has a Code (auto-generatable via the Generate button) and a Name. Deleting a category only deactivates it — historical income records that used it stay intact.

9.2 Income List#

Menu: Income > Income List

Columns: Date, Reference No, Warehouse, Category, Amount, Note, Action. Filter by date range and, for admin/manager roles, Warehouse or Income Category. Actions: Edit and Delete.

WARNING: Deleting an income record reverses its accounting entry — the credited amount is removed from the account balance.

9.3 Add Income#

Menu: Income > Income List > Add Income

Fields: Date (defaults to today), Income Category (required), Warehouse (required), Amount (required), Account (optional — defaults to the Default account), Note (optional). There is no receipt/document upload here.

On submit, the amount is posted as a credit to the selected account, immediately affecting that account balance and any reports/dashboard figures that read from it — it does not touch product stock or sales revenue.

See also: 1. Dashboard — Profit & Revenue calculations


10. Accounting#

SalePro uses double-entry accounting: every time money moves, it leaves one place and enters another. Accounts represent real-world bank accounts, cash drawers, and credit cards, so you can see exactly where company money is sitting at any moment.

10.1 Account List#

Navigate to Accounting > Account List to view all accounts and their current balances. Turn on the Default toggle next to your primary account so it is used automatically at checkout.

10.2 Add Account#

  • Navigate to Accounting > Account and click Add Account.
  • Enter the Account No (e.g., last 4 digits of a real bank account).
  • Enter the Name (e.g., Main Chase Checking, Store 1 Cash Register).
  • Enter the Initial Balance — the real-world amount currently in the account.
  • Click Submit; repeat for every distinct pool of money the business controls.

How Balances Update#

  • Sale (Cash) — increases the Cash Register account.
  • Purchase (Bank Transfer) — decreases the Main Bank account.
  • Expense (Petty Cash) — decreases the Petty Cash Box account.
  • Payroll — decreases the designated paying account.

WARNING: Do not delete an Account with a balance. Use Money Transfer to zero it out first if a real-world bank account is closed.

TIP: Create separate accounts for physical cash and digital gateways (e.g., a "Pending Stripe Funds" account) since card payments take a few days to reach your real bank.

10.3 Money Transfer#

Use Money Transfer (a Journal Entry) to record money physically moved between your internal accounts — for example, when a manager deposits register cash into the bank.

  • Navigate to Accounting > Money Transfer and click Add Transfer.
  • Select the From Account (where money is leaving).
  • Select the To Account (where money is going).
  • Enter the Amount.
  • Click Submit — a Reference Number is generated automatically.

WARNING: Match the transfer date to the date the money actually hit your bank, to keep monthly reports aligned.

10.4 Balance Sheet#

Navigate to Accounting > Balance Sheet for a real-time snapshot of all account balances — used to verify that Money Transfers were logged correctly and that SalePro's figures match real-world bank statements.

10.5 Account Statement#

Menu: Accounting > Account List > (row Action) > Statement

Shows a running ledger for one account over a chosen date range: Date, Reference No, Related Transaction, Credit, Debit, and a running Balance. The first row is always an Opening Balance, computed from every transaction on that account before your selected start date — not just the account's original Initial Balance.

Credit entries include sale payments received, purchase-return refunds, incoming Money Transfers, and Income entries. Debit entries include purchase payments, Expenses, Payroll, outgoing Money Transfers, and sale-return refunds paid out. A Start Date and End Date are required to generate the statement.

10.6 What SalePro Posts Automatically#

SalePro’s accounting is connected to operational transactions. Users should create the real business transaction first; SalePro then posts the corresponding balanced accounting entry automatically.

  • Sales and sale payments update customer receivables, revenue/payment accounts, and related accounting records.
  • Purchases and supplier payments update supplier payables and the selected payment accounts.
  • Sale returns and purchase returns reverse the financial effect of the related transaction and record any refund/payment movement.
  • Expenses, income, payroll, transfers, Repair billing/payments, and other integrated modules post through the same accounting engine.

IMPORTANT: Do not create a second manual accounting entry for a transaction that SalePro already posts automatically. Doing so would double-count the business event.

10.7 Corrections, Edits and Deletions#

Accounting history is designed to remain auditable. When an integrated transaction is legitimately edited or deleted, SalePro reverses the previous accounting effect and posts the corrected effect instead of silently changing old journal history.

For a real customer return, use Sale Return. For a real supplier return, use Purchase Return. For a mistaken transaction that never happened, use the permitted correction/delete workflow. This distinction keeps stock, dues, refunds, and accounting aligned.

10.8 Inventory Cost and Periodic Profit#

SalePro uses periodic inventory accounting for financial COGS/profit calculations. Day-to-day sales reduce operational stock quantities, while the accounting cost-of-goods position is finalized through the inventory close/profitability process for the relevant period.

Because of this, a cashier does not manually post COGS at POS checkout. Managers/accounting users should rely on the approved profitability and inventory-close workflow rather than creating their own duplicate cost journal entries.

10.9 Accounting Health and Reconciliation#

Use the Accounting Health/reconciliation tools available to administrators to identify configuration or balance mismatches before relying on financial statements. A healthy result means the configured mappings and integrated balances reconcile; warnings should be investigated rather than ignored.

Recommended month-end check: verify customer dues, supplier dues, payment accounts, cash register totals, inventory/profitability, and financial statements for the same date range. Resolve any discrepancy before closing the reporting period.

See also: 8.3 Add Expense • 11.10 Payroll


11. HRM#

Human Resources tools help track when employees work and how much they are paid — logging attendance, scheduling holidays, and processing payroll, all tied into financial reporting.

11.1 Department#

Menu: HRM > Department

Departments group employees for organizational and reporting purposes (e.g. Sales, Warehouse, Accounts).

Navigate to HRM > Department.

Click Add Department, enter a Name, and Save.

The department becomes available in the Department dropdown on the Employee form.

A department name must be unique among active departments. Deleting one only deactivates it.

11.2 Designation#

Menu: HRM > Designation

Designations represent an employee's job title (e.g. Cashier, Manager).

Navigate to HRM > Designation.

Click Add Designation, enter a Name, and Save.

The designation appears in the Designation dropdown on the Employee form.

Like Department, a designation name must be unique among active designations, and deleting one only deactivates it — existing employee assignments are unaffected.

11.3 Shift#

Menu: HRM > Shift

A Shift defines an employee's expected working schedule.

Navigate to HRM > Shift > Add Shift.

Enter Name, Start Time, End Time, and optional Grace-In / Grace-Out minutes (default 0 if left blank).

Submit. The shift is now selectable on the Employee form.

TIP: Attendance's on-time/late status is calculated from the global check-in time in HRM Setting (21.22), not from the individual employee's assigned Shift start time — Shift is mainly a reference/organizational field rather than an enforced attendance rule.

11.4 Employee#

An Employee profile is an HRM record for attendance, department assignment, and payroll — separate from a User login account. Navigate to HRM > Employee > Add Employee to create one, filling in Name, Email, Phone, Address, and Department.

WARNING: Payroll is tied to the Employee profile, not the User login — a person created only as a User will not appear in the Payroll dropdown.

11.5 Attendance#

  • Navigate to HRM > Attendance and click Add Attendance.
  • Select the Employee.
  • Select the Date.
  • Enter Check-In and Check-Out time.
  • Add notes if relevant and click Submit.

TIP: Enforce daily discipline — checking staff in/out immediately, rather than backdating attendance at month end, keeps payroll accurate.

11.6 Holiday#

  • Navigate to HRM > Holiday and click Add Holiday.
  • Select start and end dates.
  • Add a description (e.g., New Year's Day, Company Retreat).
  • Click Submit.

Employees logging in during a holiday see a notification, and attendance is not expected.

11.7 Overtime#

Menu: HRM > Overtime

Overtime records extra hours worked by an employee beyond normal shift hours, for payroll purposes.

Navigate to HRM > Overtime > Add Overtime.

Select Employee, Date, Hours worked, and Rate (amount per hour).

Submit — Amount is calculated automatically (Hours × Rate).

Review submitted entries and change Status to Approved or Rejected.

Only overtime marked Approved is pulled into Payroll — when generating payroll for a month, approved overtime hours/amount for that employee within the selected month are added as a payroll component.

11.8 Leave Type#

Menu: HRM > Leave Type

Leave Types are categories of leave (e.g. Sick Leave, Casual Leave) that define entitlement rules.

Navigate to HRM > Leave Type > Add Leave Type.

Enter Name, Annual Quota (days allowed per year), Encashable (whether unused leave can be paid out), and Carry Forward Limit (days that roll into next year).

Submit. The leave type becomes selectable when submitting a Leave request.

11.9 Leaves#

Menu: HRM > Leaves

Leaves are individual employee leave requests, tracked against a Leave Type.

Navigate to HRM > Leaves > Add Leave.

Select Employee, Leave Type, Start Date, and End Date.

Submit — Days is calculated automatically (End Date minus Start Date plus 1), status starts as Pending.

Approve or reject the request from the list.

TIP: Only leaves with status Approved are counted toward the leave totals shown in Payroll.

11.10 Payroll#

  • Navigate to HRM > Payroll and click Add Payroll.
  • Select the Employee.
  • Select the Month being processed.
  • Select the Account the money is drawn from.
  • Enter the Amount and the Paying Method (Cash, Cheque, or Credit Card).
  • Add a Note if relevant and click Submit.

WARNING: Editing a payroll (Edit action) recalculates the amount and automatically reverses the old accounting entry, posting a corrected one. Deleting a payroll also reverses its accounting entry.

See also: 2.4 Sale Agents — commission calculation • 10.2 Add Account


12. Manufacturing#

The Manufacturing module enables complete management of the product creation process. It consists of two main parts — Recipe and Production. In Recipe, you define which ingredients are needed to produce a product. In Production, products are manufactured according to the Recipe, added to stock, and the consumed ingredient stock is automatically deducted.

Module Overview#

Two Parts of the Manufacturing Module#

Recipe — Stores the formula specifying which ingredients and what quantities are required to produce a product.

Production — Records the actual manufacturing process according to a Recipe; adds the finished product to warehouse stock and deducts ingredient stock accordingly.

General Workflow#

Go to Recipe from the Manufacturing menu and create a Recipe for the product.

Go to Production from the Manufacturing menu and create a new Production entry.

Select a Recipe — the ingredient list will load automatically.

Fill in quantity, cost, and other details, then click Submit.

The finished product stock will be added to the warehouse, and ingredient stock will be deducted.

SalePro interface screenshot

Recipe Module#

What is a Recipe?#

A Recipe is the formula or blueprint for manufacturing a product. For example: to make 'Biscuit', you need 500g flour, 200g sugar, 100g butter — this information is stored as a Recipe.

Viewing the Recipe List#

Clicking Recipe from the Manufacturing menu opens the Recipe list. It shows the products that already have a manufacturing recipe, together with their product details and available actions.

Product name and image

Category

Unit

Cost

Price

Action buttons — View, Edit, Delete

Creating a New Recipe#

Click the Add Recipe button on the Recipe list page to open the Recipe creation form.

SalePro interface screenshot

Step 1 — Select a Product#

From the Select Recipe dropdown, choose the product for which you want to create a Recipe. Only active Standard and Combo type products are shown here.

Step 2 — Add Ingredients#

Type the ingredient product name or code in the search field and select from the autocomplete list. Each added ingredient creates a row in the table below with the following fields:

Wastage Percent — What percentage of this ingredient will be wasted during production.

Quantity — How much of the ingredient is needed and in which unit (kg, pcs, litre, etc.).

Unit Cost — Cost per unit.

Unit Price — Price per unit.

Sub Total — Quantity × Price.

Step 3 — Save the Recipe#

After adding all ingredients, click Add Recipe. SalePro saves the formula and makes that product available for the Production workflow.

📌 Example — Chocolate Cake (1 piece)Ingredient 1: Flour — Qty: 200g, Price: 8.00, Wastage: 5%Ingredient 2: Sugar — Qty: 150g, Price: 7.00, Wastage: 0%Ingredient 3: Cocoa Powder — Qty: 50g, Price: 15.00, Wastage: 2%Ingredient 4: Butter — Qty: 100g, Price: 12.00, Wastage: 0%Once saved, the Chocolate Cake's Cost will be updated to 42.00 in the product record.

Editing a Recipe#

Click the Edit button from the action menu in the list. The existing ingredients will appear in the table. You can change quantities, prices, and wastage, add new ingredients, or remove existing ones using the X button. Click Save to store changes.

Deleting a Recipe#

Click Delete from the action menu to remove the manufacturing recipe. The product itself remains in SalePro, but it will no longer appear as a recipe product until a new recipe is created.

Wastage Percent Calculation#

Wastage Percent is the percentage of an ingredient that gets wasted or becomes unusable during the production process. It is stored as Recipe reference information — it does not directly affect stock deduction in Production, but is important for cost planning.

📌 Example — Raw Vegetables: Qty: 1 kg, Wastage: 20%Meaning: Out of 1 kg of vegetables, 200g will be lost during trimming/cutting.Effective usable quantity = 800g.The Recipe shows the total wastage across all ingredients (e.g., Total Wastage = 22%).

Production Module#

What is Production?#

Production is the recording of the actual manufacturing process according to a Recipe. When a Production entry is created — the finished product stock is added to the warehouse, and the used ingredient stock is deducted from the warehouse.

Viewing the Production List#

Clicking Productions from the Manufacturing menu opens the Production list page. Each row shows:

Date

Reference Number

Status badge (Completed)

Total Cost

Finished product name

Quantity

Warehouse

Total Tax, Shipping Cost, Production Cost

Grand Total

Action buttons — View, Delete

Filtering the Production List#

Starting Date / Ending Date — View Productions within a specific date range.

Warehouse — Filter Productions by a specific warehouse.

Status — Filter by status.

Search bar — Search by reference number or product name.

Creating a New Production#

Step 1 — Fill in Basic Information#

SalePro interface screenshot

Date — The Production date. Defaults to today's date.

Warehouse — The warehouse where the product will be manufactured and stock added.

Product — Select a product that has a Recipe. The ingredient list will load automatically upon selection.

Total Qty — How many units of the product will be manufactured. This quantity will be added to the product's stock.

Step 2 — Verify the Ingredient List#

After selecting a product, the ingredient list from the Recipe loads automatically. For each ingredient, the following information is available:

Wastage Percent — Ingredient waste percentage (comes from Recipe, can be modified).

Quantity + Unit — Ingredient quantity and unit selection. Changing the unit triggers automatic conversion.

Unit Price — Price per unit.

Sub Total — Quantity × Price.

⚠️  Note: Ingredient current stock will not be visible unless a warehouse is selected.

⚠️  A warning will appear if the entered ingredient quantity exceeds available stock.

⚠️  If you change the unit, the warehouse deduction will use the converted quantity.

Step 3 — Fill in Cost and Other Details#

Production Cost — Labor or other costs involved in manufacturing.

Shipping Cost — Transportation cost for bringing raw materials.

Note — Any internal remarks.

Document — Attached document (optional).

Step 4 — Submit#

Clicking the Submit button will automatically trigger the following actions:

A reference number will be generated (e.g., production-20250506-143022).

The specified quantity of the finished product will be added to the total product stock.

The product quantity will be added to the selected warehouse stock.

Each ingredient's quantity will be deducted from the warehouse.

The Production record will be saved.

Calculation Details — With Examples#

Sub Total Calculation#

Sub Total for each ingredient = Converted Quantity × Unit Price.

Unit Conversion Rules:

If operator is * — Converted Qty = Quantity × operation_value

If operator is / — Converted Qty = Quantity ÷ operation_value

📌 Example 1 — Flour: Qty: 5 kg, Unit: kg (operator=*, operation_value=1)Converted Qty = 5 × 1 = 5 kg | Unit Price = 40.00 | Sub Total = 5 × 40 = 200.00Example 2 — Milk: Qty: 2 litre, Unit: ml (operator=/, operation_value=1000)Converted Qty = 2 ÷ 1000 = 0.002 (base unit) | Unit Price = 80.00/litre | Sub Total = 2 × 80 = 160.00

Total Calculation#

Total = Sum of all ingredients Sub Totals.

📌 Example:Ingredient 1 (Flour) Sub Total:  200.00Ingredient 2 (Sugar) Sub Total:   90.00Ingredient 3 (Oil)   Sub Total:  150.00────────────────────────────────Total = 200 + 90 + 150 = 440.00

Grand Total Calculation#

Grand Total = Total + Shipping Cost + Production Cost

📌 Example:Total (Ingredient Cost)  = 440.00Shipping Cost        =  60.00Production Cost      = 100.00────────────────────────────────Grand Total = 440 + 60 + 100 = 600.00

Stock Deduction Calculation#

When a Production is submitted, each ingredient's stock is deducted as follows:

Deduction = Input Qty × Unit operation_value (when operator is *)

Deduction = Input Qty ÷ operation_value (when operator is /)

📌 Example — Product: Biscuit — 100 pcs to be produced.Ingredient 1: Flour — 5 kg (unit: kg, operator=*, operation_value=1)→ Deduction = 5 × 1 = 5 kg → Warehouse flour stock decreases by 5 kg.Ingredient 2: Sugar — 2 kg (unit: kg, operator=*, operation_value=1)→ Deduction = 2 × 1 = 2 kg → Warehouse sugar stock decreases by 2 kg.Result: Biscuit stock in warehouse increases by 100 pcs.Flour: Previous stock 50 kg → Now 45 kg.Sugar: Previous stock 20 kg → Now 18 kg.

Complete Example — A Single Production#

Item

Description

Value

Finished Product

Chocolate Cake

50 pcs

Warehouse

Main Warehouse

Ingredient 1

Flour — 2 kg

80.00

Ingredient 2

Sugar — 1 kg

50.00

Ingredient 3

Cocoa Powder — 0.5 kg

75.00

Ingredient 4

Butter — 1 kg

120.00

Total

Sum of all ingredients

325.00

Production Cost

Labor & other costs

200.00

Shipping Cost

Transportation

75.00

Grand Total

Total amount

600.00

Stock Added

Chocolate Cake

+50 pcs

Stock Deducted

Flour

−2 kg

Stock Deducted

Sugar

−1 kg

Stock Deducted

Cocoa Powder

−0.5 kg

Stock Deducted

Butter

−1 kg

Viewing Production Details#

Click the View button from the action menu in the Production list to open the Production Detail modal. It shows:

Date and Reference Number

Status

Warehouse name

Attached document (if any)

List of all ingredients — name, quantity, unit cost, price, sub total

Total Tax, Total Cost, Shipping Cost, Grand Total

Notes and creator name

Deleting a Production#

Click the Delete button from the action menu. A confirmation dialog will appear. Upon confirmation, the system will automatically:

Subtract the specified quantity from the finished product's total stock.

Reduce the finished product's stock in the warehouse.

Restore all ingredient stock back to the warehouse.

Delete the Production record.

⚠️  Important: If the current stock of the finished product is less than the Production quantity, deletion will not be permitted.

⚠️  Deletion is also blocked if the warehouse stock is insufficient.

⚠️  This safety mechanism prevents stock from going negative.

Production with Variant Products#

If an ingredient is a product with Variants, the specific Variant stock is also deducted separately during Production.

📌 Example — Ingredient: Fabric — Red Color (Variant)Using 5 meters of 'Fabric — Red' in Production:→ Red Fabric Variant stock: decreases by 5 meters.→ Red Fabric warehouse stock: decreases by 5 meters.→ The total stock of the parent product 'Fabric' also decreases.

Permissions#

Manufacturing Module Access#

The following conditions must be met to access the Manufacturing module:

manufacturing addon active — The manufacturing addon must be enabled in the system.

products-index — Permission to view the Recipe list.

products-add — Permission to create and edit Recipes.

products-edit — Permission to edit Recipes.

products-delete — Permission to delete Recipes.

13. Repair Addon#

The Repair Addon manages repair and service jobs — device and vehicle records, job status tracking, parts and billing, and technician assignment, from intake to delivery.

View Repair Dashboard#

Gain immediate insight into your repair business performance by viewing the Repair Dashboard. This provides a summary of total, pending, in-progress, and completed jobs, along with revenue collected, outstanding dues, and overdue alerts. Access the Repair section to see these key metrics and get a quick overview of operations.

SalePro interface screenshot

Dashboard Filters#

Filter the dashboard data by date range to view performance for a specific period. Use the date range picker at the top of the dashboard to set a custom start and end date. The KPI cards, charts, and recent jobs table will update automatically to reflect the selected period. The dashboard also shows a top technicians summary based on completed jobs within the selected date range.

Service Job Management#

View Service Job List#

Review all service jobs by viewing the Service Job List. This displays a table detailing each job's reference number, customer name, service type, title, status, priority, warehouse, total amount, and due amount. Navigate to the Service Jobs section to see the full list, search for specific jobs, filter by status or type, or add a new one.

SalePro interface screenshot

Create New Service Job#

Create a new service job for a customer by opening the Add Service Job form. Select the customer, warehouse, and service type (Device or Vehicle). Enter a job title, set the expected delivery date, choose a priority level and status, and optionally assign a technician. Fill in the device or vehicle details in the relevant section, add any internal notes, and submit the form to create the job.

SalePro interface screenshot

Submit Options

At the bottom of the create form, three action buttons control what happens after saving:

Save & Go to Parts and Billing — saves the job and immediately proceeds to add parts and charges.

Save — saves the job and returns to the Service Job list.

Cancel — discards the form and returns to the list without saving.

Update Existing Service Job#

Update the details of an existing service job by editing the job. Modify the title, status, priority, assigned technician, expected delivery date, warehouse, or device and vehicle details. Select the job you wish to change from the Service Jobs list and click Edit, adjust the required fields, and save the changes to update the job record.

View Service Job Details#

Access a service job's complete information by opening the job detail page. Select a job from the Service Jobs list and click View to display all its information. The detail page is divided into two columns.

SalePro interface screenshot

Left Column — Job Information and Records#

Job Info Card

Displays the job title, reference number, and current status and priority badges at the top. The card shows two info panels side by side: the left panel lists the customer name, customer phone, assigned warehouse, and assigned technician; the right panel lists the date created, expected delivery date, delivered-on date (if applicable), and the user who created the job. Any description or internal note added to the job is shown below the panels.

Device Details Card (shown when service type is Device)

Displays the device type, brand, model, serial number, and IMEI in a table on the left. The right side shows the password or unlock hint and accessories received, followed by the issue reported by the customer and the physical condition notes on arrival.

Vehicle Details Card (shown when service type is Vehicle)

Displays the vehicle type, brand, model, year of manufacture, and registration number on the left. The right side shows the engine number, chassis number, mileage in kilometres, and fuel level, followed by any condition notes.

Parts and Items Used Card

Lists all spare parts and products added to the job in a table showing the item number, product name and code, quantity, unit price, and line total. The table footer shows the running totals: parts total, service charge, discount, tax, grand total, paid amount, and the current due balance.

Right Column — Billing, Status, and Activity#

Billing Summary Card

Provides a concise summary of all financial figures: parts total, service charge, discount (shown in red), tax, grand total, paid amount, and the due balance. The due amount row is highlighted in red when there is an outstanding balance and green when the job is fully paid.

Quick Status Update Widget (hidden when printing)

Allows you to change the job status directly from the detail page without opening the full edit form. Select the new status from the dropdown (Pending, Diagnosed, In Progress, Completed, Delivered, or Cancelled), optionally enter a note explaining the change, and click Update Status. The change is saved and the page refreshes to reflect the new status.

Activity Timeline Card

Shows the complete status history of the job as a vertical timeline. Each entry displays the date and time of the change, the new status as a badge, the name of the user who made the change, and any note attached to that update.

Delete Service Job#

Remove a service job from the system by deleting it. Deleting a job automatically restores any parts stock that was deducted and removes the linked sale record. Select the job from the Service Jobs list and click Delete, then confirm the action to permanently remove the job.

Device Details#

Enter Device Information#

When the service type is set to Device, fill in the device details section of the job form. Select the device type and brand from the dropdowns, enter the model name, serial number, and IMEI if applicable. Provide the customer's password or unlock hint, list any accessories received with the device, describe the issue as reported by the customer, and note the physical condition of the device on arrival.

SalePro interface screenshot

Add New Device Type#

Add a new device type without leaving the service job form by clicking the plus button next to the Device Type dropdown. Enter the name of the new device type (for example Smart Watch or Tablet) in the modal that appears and submit. The new type is saved immediately and automatically selected in the dropdown.

Add New Brand#

Add a new brand without leaving the service job form by clicking the plus button next to the Brand dropdown. Enter the brand name in the modal that appears and submit. The new brand is saved and automatically selected in both the device and vehicle brand dropdowns.

Vehicle Details#

Enter Vehicle Information#

When the service type is set to Vehicle, fill in the vehicle details section of the job form. Select the vehicle type and brand, enter the model, year of manufacture, registration number, engine number, and chassis number. Record the current mileage in kilometres and the fuel level on arrival, and add any notes on the vehicle's physical condition.

SalePro interface screenshot

Add New Vehicle Type#

Add a new vehicle type without leaving the service job form by clicking the plus button next to the Vehicle Type dropdown. Enter the name of the new vehicle type (for example Motorcycle or Truck) in the modal that appears and submit. The new type is saved and automatically selected in the dropdown.

Customer Management#

Select Existing Customer#

Select the customer for a service job from the Customer dropdown on the job form. The dropdown supports live search, allowing you to type part of the customer's name or phone number to quickly find and select them.

Add New Customer#

Add a new customer without leaving the service job form by clicking the plus button next to the Customer dropdown. Fill in the customer's group, name, phone number, and optionally their email, WhatsApp number, address, and city. Submit the modal form to save the new customer, who is then automatically selected for the current job.

Parts and Billing#

View Parts and Billing Page#

Access the Parts and Billing page for a service job to manage the products used in the repair and set the final charges. Navigate to the Service Jobs list and click Parts and Billing from the action menu, or click Save and Go to Parts and Billing when creating a new job.

The page header shows the job reference number, customer name, warehouse, and current status and priority badges. Quick-access buttons at the top right let you view the full job details, return to the all-jobs list, or open the print modal.

Left Column — Parts, Charges, and Payments#

Parts and Items Used Section

Contains a product search bar and the parts table. The search field uses live autocomplete — type a product code or name to see matching results. When a product is selected, it is added to the job automatically and its stock is deducted from the assigned warehouse.

If a product that is already on the job is searched and selected again, the existing row flashes to indicate the duplicate and a notice appears instead of adding a second line.

The parts table shows each item with a quantity stepper (minus and plus buttons with a manual input field), an editable unit price field, and the calculated line total. Changes to quantity or price are saved automatically after a short delay. A delete button on each row removes the part and restores its stock to the warehouse.

Service Charges Section

Contains three input fields below the parts table: Service Charge (for labour or service fees), Discount (amount to deduct from the total), and Tax (amount to add to the total). Click Save Charges to update the grand total. The summary panel on the right updates immediately after saving.

Payments Received Section

Shows the payment collection form and the payment history table. The collection form contains fields for:

Payment amount

Payment method (Cash, Cheque, Card, bKash, Nagad, Rocket, or Bank Transfer)

Account to credit — searchable dropdown

Optional payment reference note

Click Collect Payment to record the payment. The system validates that the amount does not exceed the current due balance before saving. The payment history table lists each recorded payment with its date, amount, method badge, reference, and note. A delete button on each row removes the payment and recalculates the due balance automatically.

Right Column — Summary and Job Info#

Billing Summary Panel

Displays a live summary of all financial figures: parts total, service charge, discount, tax, grand total, paid amount, and due balance. The due row is highlighted in red when there is an outstanding balance and green when the job is fully paid. A status badge at the bottom shows either Fully Paid or Amount Due depending on the current balance.

Job Info Panel

Shows a compact table of key job details: reference number, service type, job title, customer name, warehouse, current status badge, and expected delivery date.

Add Part or Product#

Type the product code or name into the search field on the Parts and Billing page, select the correct product from the autocomplete results, and the item is added to the parts table at a quantity of one with its default price. Stock is automatically deducted from the warehouse assigned to the job.

Update Part Quantity or Price#

Update the quantity or unit price of a part already added to a job directly within the parts table. Use the minus and plus stepper buttons or type a value into the quantity field to change the quantity. Click into the unit price field and enter a new value to change the price. Both changes save automatically after a short delay and the line total updates immediately. Stock is adjusted accordingly based on the difference.

Remove Part#

Remove a part from the service job by clicking the delete button next to it in the parts table. Confirm the action when prompted. The part is removed from the bill and its quantity is returned to the warehouse stock automatically.

Set Service Charge, Discount, and Tax#

Set the order-level charges using the fields in the Service Charges section. Enter a service charge for the labour or service fee, a discount amount to deduct, and a tax amount to add. Click Save Charges to apply the changes. The grand total is calculated automatically as the sum of all parts plus the service charge, minus the discount, plus the tax.

Payment Management#

Record a Payment#

Record a payment for a service job from the Parts and Billing page. Enter the payment amount, select the payment method, choose the account to credit from the searchable account dropdown, and optionally add a payment reference note. Click Collect Payment to save the record. The paid amount and due amount update immediately in the billing summary panel. Multiple partial payments can be recorded against a single job, provided each amount does not exceed the remaining due balance.

SalePro interface screenshot

Delete a Payment#

Remove an incorrectly recorded payment by clicking the delete button next to the payment entry in the payments table. Confirm the action when prompted and the payment is removed. The due amount is recalculated automatically and the billing summary panel updates immediately.

Payment and Sale Synchronization#

Every payment recorded in the Repair Module is automatically synchronized with the SalePro sales system. A linked sale record is created or updated whenever a payment is added or removed, ensuring all repair revenue appears correctly in the main sales and financial reports.

Technician Assignment#

Assign Technician to Job#

Assign a technician to a service job by selecting them from the Assigned To dropdown on the job create or edit form. The dropdown lists all active users in the system. Select the technician responsible for carrying out the repair and save the job to record the assignment.

View Jobs by Technician#

Review the workload of a specific technician by filtering the Service Jobs list. Use the search or filter options on the Service Jobs page to view only the jobs assigned to a particular technician. The Repair Dashboard also shows a top technicians summary based on completed jobs within the selected date range.

Device and Vehicle Type Management#

View Device Type List#

Review all configured device and vehicle types by viewing the Device Types list. This displays a table of each type's name, category, description, and status. Navigate to the Device Types section under Repair to see the full list, search for a specific type, or add a new one.

SalePro interface screenshot

Add New Device or Vehicle Type#

Add a new device or vehicle type to the system by opening the Add Type form. Enter the type name, select the category as either Device or Vehicle, and optionally add a description. Submit the form to save the type, which will then be available in the relevant dropdown on the service job form.

Edit Device or Vehicle Type#

Update the details of an existing device or vehicle type by editing it. Select the type from the Device Types list and click Edit, modify the name, category, or description, and save the changes to update the type.

Import Device Types#

Import multiple device or vehicle types at once by uploading a CSV file. Prepare a CSV file with columns for name, category, and description. Navigate to the Device Types section, click Import, select your CSV file, and submit. The types are created or updated in bulk based on the file contents.

Job Status Management#

Update Job Status#

Update the current status of a service job as it progresses through the repair workflow. You can do this in two ways:

Open the job detail page and use the Quick Status Update widget on the right side to change the status and add an optional note without leaving the page.

Open the full edit form and select the new status from the Status dropdown.

Either method logs the change automatically in the job's activity timeline.

View Status History#

Review the complete status history of a service job by viewing the Activity Timeline on the job detail page. Each status change is recorded with the date and time, the new status displayed as a badge, the name of the user who made the change, and any note added at the time. This provides a full audit trail of the job's progress.

Available Statuses#

Service jobs can be assigned one of the following statuses:

Pending — newly created, awaiting action.

Diagnosed — issue has been assessed.

In Progress — repair work is underway.

Completed — repair is finished.

Delivered — device or vehicle has been returned to the customer.

Cancelled — the job has been cancelled.

Priority Management#

Set Job Priority#

Set the urgency level of a service job by choosing a priority when creating or editing the job:

Low — routine jobs with flexible timelines.

Medium — standard jobs that should be completed within the expected timeframe.

High — urgent jobs requiring immediate attention. High priority jobs that are not yet completed are flagged on the Repair Dashboard.

Print a receipt or job summary directly from the Parts and Billing page or the Service Job Detail page by clicking the Print button in the top action bar. A print modal opens showing the site name, job reference number, service type, status, priority, expected delivery date, customer details, warehouse, technician, device or vehicle details, parts table with all totals, and the job title with the created-by information.

Click the Print button inside the modal to open a formatted print view in a new window. The print view uses a clean, printer-friendly layout with a bordered parts table and properly aligned columns. Use your browser's print function to print or save the document as a PDF.

SalePro interface screenshot

14. Project Management#

14.1 Project#

Menu: Project Management > Project

Manage client/internal projects, track progress, and collaborate via discussions, bugs, files, and tasks attached to each project. (Available only when the Project module is enabled for your account.)

Add Project fields: Title (required), Project Category (optional), Customer (required), Start/End Date (required), Priority (Low/Medium/High/Highest), Assigned Employees (multi-select, required), Status (Not Started/In Progress/Completed/Deferred), Summary and Description. Optional checkboxes send a WhatsApp notification to assigned employees and/or the customer.

TIP: WhatsApp notifications only send if WhatsApp Settings (18.1) are configured — otherwise the project still saves, the notification is just silently skipped.

Project List columns: Project Name, Priority, Assigned Employees, Customer, Start Date, End Date, Status, Actions.

The Project Details page has 6 tabs: Details (summary/description plus a progress-percent form), Discussion (threaded comments with attachments), Bug (bug reports), Task (tasks scoped to this project), Files, and Notes. There is no automatic Kanban/board view — progress percent is set manually on the Details tab, it does not roll up from completed Tasks.

14.2 Project Category#

Menu: Project Management > Project Category

A simple lookup table used to categorize Projects — just a Name field and an Active toggle. Standard add/edit/delete list.

14.3 Task#

Menu: Project Management > Task

Tasks always belong to a Project — there is no standalone task creation outside a project context.

Add Task fields: Task Name (required), Project (required), Assigned Employees (multi-select, required), Estimated Task Hours (required), Start/End Date (required), Description. An optional Notify checkbox sends a WhatsApp message to assigned employees.

Task Status: Not Started, Ongoing, Completed — a different set of values than Project Status. Tasks have no priority field and no checklist/subtask feature.

Task List columns: Task Name (with linked project), Start Date, End Date, Status, Assigned Employee, Created By, Actions. The Task Details page has 4 tabs: Discussion, Progress (hours/status update), Files, Notes.

15. eCommerce#

SalePro's eCommerce module (and the dedicated SalePro eCommerce addon) manages the storefront-facing content and configuration for online selling.

15.1 Sliders#

Menu: eCommerce > Sliders

Sliders are the rotating banner images shown on the storefront homepage. (This whole eCommerce menu is only visible when the eCommerce module is enabled.)

Click Add Slider to expand the form.

Enter a Title and a Link (the URL the slide opens when clicked).

Set the Order (controls display sequence).

Upload the Image (Desktop) — required, auto-resized to 1900×970px.

Optionally upload Image (Tab) and Image (Mobile) for responsive breakpoints.

Click Save.

15.2 Menu#

Menu: eCommerce > Menu

The storefront navigation builder — create one or more named menus (e.g. a main nav) and populate them with links to categories, collections, brands, pages, blog posts, or custom URLs.

Click Add Menu, enter a Title, choose Location (Main Navigation / Other), and Save.

Click the eye icon on a menu row to open its item builder and attach categories, collections, brands, pages, blog posts, or custom links as menu items.

WARNING: Deleting a menu also deletes all of its menu items.

15.3 Collections#

Menu: eCommerce > Collections

Collections are curated, manually-built groups of products for the storefront (e.g. "Summer Sale," "Staff Picks") — distinct from Category, which is a structural classification used elsewhere in SalePro.

Click Add Collection.

Enter Collection Name (required) — the Permalink auto-fills.

Optionally set Meta Title and Meta Description for SEO.

Search and select Products to include.

Click Save as Draft or Publish.

15.4 Pages#

Menu: eCommerce > Pages

Manages static CMS content for the storefront (About Us, Terms of Service, Contact, and even the Home page), with a page builder for homepage-style layouts.

Click Add Page. Enter Page Name (required) — the Permalink auto-fills.

Choose a Template: Default, Home, Contact, or FAQ.

For Default/Contact/FAQ templates, write the body in the WYSIWYG Description editor.

For the Home template, use the drag-and-drop Page Layout builder instead (Text, Banners, Product Category, Category Slider, Product/Tabbed Collections, Brand Slider, Hero Video Banner, Masonry Product Grid, Deal of the Day, Recent Blog Posts widgets).

Fill optional Meta/OG fields for SEO and social sharing, then Save as Draft or Publish.

TIP: Only one page serves as the homepage — chosen under eCommerce > Settings (Home Page dropdown), not on the page itself.

15.5 Widgets#

Menu: eCommerce > Widgets

Separate from the Pages layout builder — these are site-wide content blocks placed into fixed storefront zones: Footer Top, Footer, and Product Details Sidebar.

Drag an available widget type (Text, Custom Menu, Site Features, and others) into a zone, fill its inline form, and save. Drag to reorder within a zone.

15.6 Faq Category#

Menu: eCommerce > Faq Category

Groups FAQ entries (15.7) under named categories for the storefront FAQ page. Add a Name and a numeric Order (controls display sequence).

WARNING: Deleting a FAQ category also deletes every FAQ assigned to it.

15.7 Faqs#

Menu: eCommerce > Faqs

The actual question/answer entries shown on the storefront FAQ page, each linked to a Faq Category.

Click Add FAQ.

Enter Question and Answer.

Choose a Category, or click the + button to create one inline.

Set Order and Save.

Menu: eCommerce > Social Links

Manages the social media icon links shown in the storefront header/footer. Add a Title, destination Link, and choose an Icon from the built-in platform list (Facebook, Twitter, Pinterest, Instagram, YouTube, LinkedIn, Vimeo, Amazon, TikTok). Set Order and Save.

15.9 Blog#

Menu: eCommerce > Blog

Manages blog posts shown on the storefront blog.

Click Add Post.

Enter Post Title (required) — the Permalink auto-fills.

Upload an optional Post Thumbnail image.

Write the body in the Description WYSIWYG editor.

Optionally set Meta/OG fields for SEO, then Save as Draft or Publish.

15.10 Payment Gateways#

Menu: eCommerce > Payment Gateways

This link points to the same core screen documented under Settings > Payment Gateways (21.18) — it is not a separate eCommerce-only payment configuration.

TIP: Configuring or activating a gateway here (e.g. Stripe, PayPal, Razorpay) applies globally across SalePro, not just to the online store. See 21.18 for field-level details.

15.11 Settings#

Menu: eCommerce > Settings

The eCommerce-specific storefront configuration screen — separate from the core General Setting chapter (21.2). Controls branding, theme defaults, homepage, and marketing/tracking codes.

Key fields: Site Logo and Favicon, Site Title, Theme (Default/Fashion) and Font, Theme Color, RTL toggle, Home Page (which Page from 15.4 is used as the homepage), Warehouse and Biller that online orders are attributed to, store Phone/Email/Address/Contact Form Email, Free Shipping From threshold and Flat Rate Shipping amount, Custom CSS/JS/Chat Code, Analytics/Facebook Pixel/TikTok Pixel codes, Gift Card and WhatsApp Order toggles, and per-currency QR Code uploads for QR-based payment display.

TIP: The Theme dropdown here only offers Default/Fashion. If a third theme is installed on the server, activate it from the dedicated Theme screen (15.15) instead.

15.12 Product Review#

Menu: eCommerce > Product Review

Displays and moderates customer product ratings/reviews submitted from the storefront. Columns: Customer Name, Product, Review text, Rating (1-5 stars), Status, Date.

Every review starts unapproved when a customer submits it — it is not shown on the storefront until you approve it. The Status column is a clickable toggle (Pending/Approved). There is no admin-facing "Create Review" form; reviews only originate from storefront customers.

15.13 Newsletter#

Menu: eCommerce > Newsletter

A simple subscriber list of emails collected via the storefront newsletter signup form. Shows Email and Subscription Date, with a delete action per row. The only export option is the generic PDF/CSV/Print buttons that ship with every list table in SalePro — there is no built-in campaign-email feature or manual add-subscriber option.

15.14 Delivery Areas#

Menu: eCommerce > Delivery Areas

Defines named geographic delivery zones with a shipping charge and estimated delivery time, used to compute shipping cost at storefront checkout.

Click Add Area.

Fill Name (required), City, Zone, Delivery Charge (required), Estimated Days (required), Active toggle, and an optional Note.

Save.

TIP: Use Bulk Edit to edit multiple delivery areas inline as a spreadsheet-style grid and save all changes in one submission.

15.15 Theme#

Menu: eCommerce > Theme

A storefront theme switcher — scans the installed theme folders on the server and lets you activate one with a single click. Click Activate on any inactive theme card to switch the live storefront theme immediately.

Accent color and font are set separately on the eCommerce > Settings screen (15.11), not here.

See also: 22. Addons — SalePro eCommerce, SalePro WooCommerce


16. Tailoring#

Tailoring manages made-to-measure work from customer and measurement selection through garment pieces, materials, production stages, payments, delivery, and customer communication.

The Tailoring module supports custom-order businesses (measurements, made-to-order production) as a distinct Sale Type alongside POS, eCommerce, and Social Commerce.

16.1 Dashboard#

Menu: Tailoring > Dashboard

Filterable by date range, status, garment, staff, priority, overdue-only, material readiness, payment status, invoice state, and customer.

KPI cards: Active Orders, Active Pieces, Overdue Pieces, Due Soon (within 7 days), Ready for Handover, Outstanding Due, Unassigned Pieces, Material Attention count, Open Alterations, Trials Today.

Below the cards: exception lists (Overdue pieces, Upcoming deliveries, Attention Required), a Stage Summary (piece counts per workflow stage), a Staff Summary, a Material Summary, and top Garment Activity.

16.2 Orders#

Menu: Tailoring > Orders

Filter by search (order code/garment/customer), customer, status, garment, assigned staff, priority, overdue, payment status, invoice status, material readiness, order/delivery date range, and trial status.

The list shows, per order: customer, item/piece count, staff, payment paid/due, trial info, and delivery date, with links to view/edit.

WARNING: Orders with production, payments, invoices, or delivery records already attached cannot be deleted.

16.3 Create Order#

Menu: Tailoring > Create Order

An order can contain multiple garment-piece line items.

Fields: Customer (required); per piece — select the Garment Type, attach the customer’s matching Measurement Profile, assign staff, set trial/expected delivery dates, and enter making amount, extras, discount, tax, and selling price as applicable. Fabric Source is chosen per piece: Shop fabric uses stock from the selected warehouse; Customer fabric records material supplied by the customer. Order-level information includes priority, delivery date, notes, and an optional advance payment.

The order code is auto-generated (e.g. TLR-20260817-00001). New orders always start at status Ordered.

WARNING: Shop-sourced fabric/materials are checked against real-time available stock (on-hand minus reservations from other orders) at save time — insufficient stock blocks order creation.

16.4 Measurements#

Menu: Tailoring > Measurements

Reusable per-customer measurement profiles, created independently and then attached to order line items.

Fields: Customer (required), Profile Name (required), Garment Type (required), Style Name (optional), 8 measurement fields in inches (Shoulder, Chest, Sleeve, Length, Waist, Hip, Cuff, Bottom), Style Options (free key/value), Notes, a "Set as default" toggle (one default per customer + garment type), and up to several reference photos.

Each save is versioned, with a PDF export available. When an order item references a profile, a snapshot of its measurements is stored on the order for historical accuracy, even if the profile is edited later.

16.5 Production Board#

Menu: Tailoring > Production Board

A Kanban-style board grouping garment pieces (not whole orders) into columns by stage: Order received → In progress → Ready → Complete. Allowed moves are forward, or one step back from In progress/Ready — Complete is final and cannot be moved backward.

Starting production requires garment info and, if shop materials are attached, a warehouse with reserved quantities — starting automatically consumes the reserved materials from stock. Marking a piece Ready requires all reserved materials to already be consumed.

The board supports filtering by staff, customer, status, search, priority, and rework-only, plus drag-and-drop staff assignment.

16.6 Notifications#

Menu: Tailoring > Notifications

An editable message-template library, plus a Send action available from an order's page.

Five default events, each with an editable title/body/channel: Order Created (confirmation with total/due), Trial Reminder, Order Ready (pickup notice with remaining due), Delivery Completed, and Payment Due Reminder. Templates support placeholders like {order_code}, {customer}, {total}, {due}, {trial_date}, {delivery_date}.

WARNING: Sending is a manual, per-order action, not automatic — and only the WhatsApp channel actually delivers (it opens a pre-filled WhatsApp link for staff to send). SMS and Email channels are logged in the notification history but have no live send integration.

There is also a public, no-login customer order-tracking page keyed by order code, useful for sharing a tracking link with customers.

16.7 Reports#

Menu: Tailoring > Reports

Three CSV-exportable report views: Production (per garment piece — item code, order, customer, garment, staff, priority, status, due date, overdue days, material readiness, payment/invoice status), Delivery (per order — piece count, production readiness, delivery state, grand total, paid, due), and Garment Activity (grouped by garment type — piece count, order count, sales value, average selling price).

A per-order Profit Estimate view is also available, showing estimated margin against materials cost.


17. AI Assistant#

17.1 Overview and Access#

Menu: AI Assistant (top-level sidebar item)

The AI Assistant is a structured business Q&A tool — it is not a general-purpose chatbot. It answers a fixed set of business questions by querying your own SalePro data directly; it does not call any external AI API, so there is no API key setup and no external cost.

The screen is a chat-style page: a left-hand conversation history sidebar (start/rename/delete conversations) and a right-hand chat panel with a prompt box.

17.2 Using the Assistant#

Type or click a suggested question. The system matches it against a fixed library of built-in skills; if nothing matches, you get a "not sure how to help with that" reply — there is no free-form natural-language understanding.

Built-in skills cover: Sales Summary, Purchase Summary, Daily Business Snapshot, Expense Summary, Low Stock Alert, Top Selling Products, Slow Moving Products, Customer Due Summary, Supplier Due Summary, and Cash and Bank Summary.

Answers are automatically restricted to the logged-in user's assigned warehouse(s) and, for staff with "own records only" access, to their own records.

TIP: Because matching is phrase-based, stick close to the suggested prompt buttons on the empty-state screen (e.g. "today's sales," "show low stock products," "customer due summary") rather than open-ended conversational questions.


18. WhatsApp#

SalePro integrates with the WhatsApp Cloud API (Meta) to send invoices, order confirmations, payment requests, and delivery updates directly to customers.

18.1 WhatsApp Settings#

Creating a Meta App#

  • Go to developers.facebook.com/apps and click Create App.
  • Select "Other" as the app type, then click Next.
  • Select "Business" as the app type, then click Next.
  • Type the app name.
  • Select the Business portfolio (the WhatsApp Cloud Message account).
  • Click Create.

Adding the WhatsApp Product#

  • On the app dashboard, scroll to "Add products to your app".
  • Find WhatsApp and click Set up.

API Setup & Adding a Phone Number#

  • On the API Setup page, open the From dropdown under "Select phone numbers" and choose + Add phone number.
  • Type the Business name, select the country, and type the business website.
  • Click Next.

Assigning Assets (Meta Business Manager)#

  • Switch to business.facebook.com and open Settings (gear icon).
  • Under Users, click System users and select the relevant system user.
  • Open the three-dot menu and click Edit.
  • In Edit assets: select Apps, enable Full control for the app; then select WhatsApp accounts, enable Full control for the WhatsApp Business Account.
  • Click Assign assets.

Generating a Permanent Access Token#

  • With the system user selected, click Generate token.
  • Select the app from the dropdown.
  • Set Token expiration to Never.
  • Under Assign permissions, select whatsapp_business_messaging and whatsapp_business_management.
  • Click Generate token, then copy the token.

Entering Credentials in SalePro#

  • Go to the SalePro dashboard and navigate to WhatsApp Settings.
  • Fill in Permanent Access Token, Phone Number ID, and Business Account ID.
  • Click Submit.

WhatsApp Setting Fields#

  • Phone Number ID — the unique ID for the connected phone number in the Meta app.
  • Business Account ID — the WhatsApp Business Account ID from the Meta Developer portal.
  • Permanent Access Token — the non-expiring token generated in Meta Business Settings.

18.2 Message Templates#

This screen (WhatsApp > Templates) displays the message templates already approved in your Meta Business Manager account — name, language, category, and status — synced live via the WhatsApp Business API. Templates cannot be created or edited inside SalePro; use the "Manage Templates" link to open Meta Business Manager, then return and refresh to see updates. Templates can be deleted directly from SalePro. (This is a separate feature from Settings > SMS Template, which manages plain SMS messages, not Meta-approved WhatsApp templates.)

18.3 Send Message#

Send WhatsApp notifications to customers from the Customer List Action menu (only shown if the customer has a saved WhatsApp number; falls back to a wa.me link if Cloud API credentials aren’t configured). Separately, when the Social Commerce module is active, the Sale List Action menu offers one-click, staff-triggered WhatsApp links — Order Confirmation, Payment Request, Delivery Update — for that sale; these are manual actions, not automatically sent on order events. Message text for these three uses the templates configured in Social Commerce > Settings (19.4), not the Meta-approved templates in 18.2.

See also: 2.2 Mail, SMS, and WhatsApp Configuration • 2.1 Customer List


19. Social Commerce#

Social Commerce is one of SalePro's Sale Types (alongside POS, eCommerce, and Tailoring) for managing orders originating from social channels.

19.1 Dashboard#

Menu: Social Commerce > Dashboard

Shows performance for a selected date range (Last 7/30/365 Days, All Time, or custom). Four summary cards: Total Revenue (net of returns and shipping), Total Orders, Total Clicks, and Published Products.

Below the cards: a Performance by Social Channel table (orders, revenue, clicks by WhatsApp/Facebook/Instagram/Telegram) and a Top 5 Social Commerce Products table.

TIP: Clicks are counted only when a customer opens a shared product link, not when an order is placed — use it to gauge interest per channel versus actual conversion (Orders).

19.2 Catalog#

Menu: Social Commerce > Catalog

Choose which products are visible on social channels and generate shareable links for them. This is a different feature from the POS "Catalog QR" (5.3), which is a per-table digital menu for in-store ordering — the Social Commerce Catalog instead publishes individual products for sharing on WhatsApp, Facebook, Telegram, and Instagram, and for inclusion in the Meta product feed (19.3).

Filter the product list by All, Published, Not Published, Missing Image, or Out of Stock. Publishing requires the product to have an image and a name. Once published, each product gets a public link plus one-click share buttons (WhatsApp, Facebook, Telegram), a Copy Link button, and a QR code for that product's page.

WARNING: Unpublishing a product does not delete its social title/description/image — it only hides the public link and removes it from the Meta Feed.

19.3 Meta Feed#

Menu: Social Commerce > Meta Feed

Generates a CSV product feed formatted for Meta Commerce Manager (Facebook/Instagram Shops), containing only Published products from the Catalog.

The page displays a unique, token-secured Feed URL and instructions to paste it into Meta Commerce Manager under Data Sources > Data Feed > Scheduled Feed. A Feed Statistics panel shows Status, Sync Status, Last Generated time, and Included/Excluded product counts.

Queue Refresh Now regenerates the CSV on demand; Regenerate Token issues a new secure feed URL.

WARNING: Regenerating the token immediately invalidates the old feed URL — Meta Commerce Manager will fail to sync until you update it with the new URL there.

19.4 Settings#

Menu: Social Commerce > Settings

Module Status: Enable Social Commerce, Fallback Landing Page (lets customers check out on a minimal built-in page when no other integration is set), and Preferred Link Target for "Buy Now" links (Fallback Landing Page, eCommerce Add-on, or QR Menu/WhatsApp Store).

Sharing Defaults: Default WhatsApp Number and a Default Social Share Text Template.

WhatsApp Templates: three plain-text message templates used by the Sale List's "WA: …" actions (18.3) — Order Confirmation, Payment Request, and Delivery Update.

TIP: These three WhatsApp text templates are separate from the Meta-approved WhatsApp Templates in 18.2 — these are simple find-and-replace strings stored here, not templates registered with Meta.

See also: 18. WhatsApp • 5.1 Sale List — Sale Type filter


20. Reports#

SalePro automatically aggregates every sale, purchase, expense, and payroll entry into comprehensive, real-time reports. Use Date Range, Warehouse, or Customer/Supplier filters at the top of most reports, then export to CSV or PDF.

20.1 Activity Log#

Tracks actions performed within the system — who created, updated, or deleted sales, purchases, and quotations — providing full transparency and easy auditing of key operations.

20.2 Profit/Loss Report#

The most important report for an owner, giving a macro view of business health over a selected period.

  • Revenue — total money generated from Sales.
  • Cost of Goods Sold (COGS) — what you paid suppliers for the items you sold.
  • Gross Profit — Revenue minus COGS.
  • Expenses — overhead costs (rent, utilities, payroll).
  • Net Profit — Gross Profit minus Expenses (actual take-home money).

WARNING: This report is only accurate if correct Product Cost is entered on every purchase. Costs left at $0 will make the report show 100% profit, which is misleading.

20.3 Profit by Product#

A profitability breakdown of the main Profit/Loss report, segmented by product.

20.4 Profit by Category#

A profitability breakdown of the main Profit/Loss report, segmented by category.

20.5 Profit by Brand#

A profitability breakdown of the main Profit/Loss report, segmented by brand.

20.6 Profit by Customer#

A profitability breakdown of the main Profit/Loss report, segmented by customer.

20.7 Profit by Location#

A profitability breakdown of the main Profit/Loss report, segmented by location.

20.8 Profit by Invoice#

A profitability breakdown of the main Profit/Loss report, segmented by invoice.

20.9 Best Seller#

Visualizes top-performing products via a bar or pie chart of items generating the most revenue or highest quantity sold in a given period — useful for reorder decisions.

20.10 Product Report#

WARNING: This report lists the history of every single item and can be slow to load with large sales datasets — always use Warehouse or Date Range filters first.

20.11 Stock Report#

Menu: Reports > Stock Report

A real-time snapshot of current inventory per product/variant/warehouse: Code, Product, Variant, Category, Warehouse, Unit Cost, Unit Price, Stock qty, Stock Value by Cost, Stock Value by Price, and Profit. Filterable by Warehouse, Category, and Stock Status (In Stock/Low Stock/Out of Stock/Negative).

TIP: Cost value uses each product's weighted-average purchase cost, not the flat Cost field on the product, so totals may differ slightly from a simple quantity × cost calculation.

20.12 Daily Sale#

A calendar view of the current month showing total revenue generated per day — useful for spotting trends (e.g., strongest sales days).

20.13 Monthly Sale#

Menu: Reports > Monthly Sale — Aggregates the Daily Sale figures into 12 monthly totals for a chosen year: discount, order discount, tax, order tax, shipping cost, and grand total per month, filterable by warehouse. Useful for spotting seasonal trends without stepping through Daily Sale one month at a time.

20.14 Daily Purchase#

A calendar view of the current month showing total money spent on inventory per day.

20.15 Monthly Purchase#

Menu: Reports > Monthly Purchase — Same structure as Monthly Sale but for purchasing: month-by-month totals for discount, order discount, tax, order tax, shipping cost, and grand total, filterable by warehouse.

20.16 Sale Report#

Menu: Reports > Sale Report — Unlike the Sale List (5.1), which lists individual invoices, this rolls up sold amount, quantity, tax, and current in-stock quantity per product across all invoices in a date range, filterable by warehouse and category. Use it to see which products drove revenue over a period rather than reviewing invoice by invoice.

20.17 Challan Report#

Menu: Reports > Challan Report — Lists closed delivery challans (packing slips) in a date range: Challan No, Order No, Order/Delivery Date, Sales Amount, Cash/Online/Cheque Payment, Shipping Income, Delivery Charge, Net, and Net Cash. Only challans with status Close appear — open/in-transit challans are excluded.

20.18 Sale Report Chart#

Menu: Reports > Sale Report Chart — A line chart of sales over time, grouped Weekly or Monthly, filterable by date range, Warehouse, and a comma-separated list of specific product codes. Useful for visualizing trend direction rather than reading exact figures — use Sale Report (20.16) for precise per-product totals.

20.19 Payment Report#

Menu: Reports > Payment Report — A combined ledger of every payment recorded in the date range, covering both sale payments and purchase payments/refunds. Columns: date, Payment Reference, Sale Reference, Purchase Reference, Paid By, Amount, Created By. Filterable by date range and payment method.

20.20 Purchase Report#

Menu: Reports > Purchase Report — The purchasing counterpart to Sale Report: shows quantity purchased per product (and variant) within a date range, filterable by warehouse and category — rolled up per product rather than the invoice-level view in the Purchase List.

20.21 Customer Report#

Menu: Reports > Customer Report — Pick a customer and date range to see their full activity across four tabs: Sale, Payment, Quotation, and Return, each with reference, amount, paid, and due. This is a per-customer activity log — for outstanding balances specifically, use Customer Due Report (20.23) instead.

20.22 Customer Group Report#

Menu: Reports > Customer Group Report — Same Sale/Payment/Quotation/Return tab layout as Customer Report, but scoped to a Customer Group (21.8) instead of a single customer — useful for comparing activity between pricing tiers (e.g. wholesale vs. retail).

20.23 Customer Due Report#

Lists every customer who owes money (sales marked Due or Partial) — used by billing/collections teams.

20.24 Supplier Report#

Menu: Reports > Supplier Report — Mirrors the Customer Report for suppliers: pick a supplier and date range to see Purchase, Payment, Return, and Quotation tabs with reference, amount, paid, and due.

20.25 Supplier Due Report#

Lists every supplier the business owes money to — used to pay bills on time and maintain good credit terms.

20.26 Warehouse Report#

Menu: Reports > Warehouse Report — Per-warehouse activity for a date range across five tabs: Sale, Purchase, Quotation, Return, Expense, each with reference-level detail and totals. This differs from Warehouse Stock Chart (20.27), which only charts current stock value by warehouse — Warehouse Report covers transactional activity, not stock levels.

20.27 Warehouse Stock Chart#

A pie chart showing total item count and financial value of inventory in each warehouse — useful for insurance valuation by location.

20.28 Product Expiry Report#

Critical for grocery and pharmacy businesses: lists all batches and their expiration dates, sorted soonest-first, so items nearing expiry can be discounted and moved before they must be discarded.

20.29 Product Quantity Alert#

Lists every product across all warehouses where current stock has fallen below its configured Alert Quantity — the key report for purchasing managers to prevent stockouts.

WARNING: If a product never appears here despite being out of stock, its Alert Quantity was likely left at 0 when the product was created.

20.30 Daily Sale Objective Report#

Shows products that failed to meet their set minimum daily sale objective. Requires a correctly configured cPanel cron job (run once daily at midnight) to check the previous day's performance automatically.

20.31 User Report#

Select a specific user (cashier) to see every sale, purchase, and return they processed over a period — useful for commission calculation and for spotting unusually high return rates (training or fraud indicator).

20.32 Biller Report#

Menu: Reports > Biller Report — Pick a biller (2.5) and date range to see their Sale, Quotation, and Payment activity with reference, amount, paid, and due.

WARNING: The page also shows Purchase, Transfer, Expense, and Payroll tabs, but only Sale, Quotation, and Payment currently load data — don't expect the other tabs to populate.

20.33 Instalment Report#

Menu: Reports > Instalment Report — Adds a Pending/Overdue status filter and a date range on top of the Installment List (5.2), plus an Overdue Amount column that flags installments past due in red. Use this report to chase late payments rather than scanning the full Installment List.

20.34 Cash Register#

Menu: Reports > Cash Register — Lists every past cash register session (opened at POS login when the Cash Register POS setting is on, see 5.3) across all users and warehouses: User, Warehouse, Cash in Hand, Closing Balance, Actual Cash, Opened at, Closed at, Status. Clicking a row opens a details modal breaking the session into total sales, payments by method, refunds, sale returns, and expenses recorded during that session — for reconciling the drawer.

For a manager, the practical check is: identify the user and warehouse session, compare the register’s recorded activity with the physical/digital money collected, review refunds/returns/expenses that explain differences, and investigate any unexplained variance before treating the shift as reconciled.

NOTE: The exact detail available depends on the current cash-register implementation and enabled payment methods. Do not assume a payment-method breakdown exists unless it is shown in the register detail for that installation.

WARNING: Only Admin-level users can access this report; other roles are redirected with a not-permitted message.

TIP: Export any report to CSV and open it in Excel or Google Data Studio to build custom pivot tables and dashboards beyond SalePro's built-in charts.

See also: 1. Dashboard • 10.4 Balance Sheet

21. Settings#

This is the configuration hub of SalePro — from staff permissions and localization to payment gateways, hardware, and messaging integrations.

21.1 Role Permission#

A Role is a collection of permissions. Instead of assigning individual permissions to every employee, create a Role (e.g., "Cashier", "Store Manager") and assign it to users — they automatically inherit the correct access level.

Creating and Editing a Role#

  • Navigate to Settings > Role Permission and click Add Role.
  • Enter a descriptive Role name (e.g., Sales Associate) and click Submit.
  • To edit permissions: Action > Change Permission, then check/uncheck the permission matrix and click Submit. Changes normally take effect immediately, without needing to log out. (If a menu item doesn’t appear/disappear right after saving, this is a known caching edge case — ask your administrator to clear the application cache.)
  • To edit name/description: Action > Edit.

Key Permission Categories#

  • Products — View/Add/Edit/Delete; cashiers should generally only have View.
  • Purchases — controls who can add stock and see supplier costs; usually managers only.
  • Sales — Add is essential for cashiers; Edit/Delete is highly sensitive and should be restricted to managers to prevent theft.
  • POS — Access POS grants the cash register interface.
  • Reports — controls who can see the business's financial health; typically Owners/Accountants only.

WARNING: Never edit the Default Admin Role incorrectly — the system needs at least one role with full access. Accidentally removing your own admin permissions may require direct database intervention to fix.

TIP: Start restrictive: it's safer to give an employee too few permissions than too many.

21.2 General Setting#

Configures how the entire system behaves — business identity, currency, timezone, and date format. Navigate to Setting > General Setting, fill the fields, and Submit.

Key Fields#

  • Site Title — appears on login screen, browser tab, and reports.
  • Company Name — legal name (appears on invoices).
  • VAT Registration Number — business tax/VAT number.
  • Site Logo — shown on dashboard and invoices.
  • Currency — must be created first if not listed (see 21.10 Currency).
  • Currency Position — symbol before or after the amount.
  • Timezone — critical for accurate sales, reports, and cron job timing.
  • Date Format — dd-mm-yyyy, mm/dd/yyyy, etc.
  • Staff Default Warehouse / Staff Default Biller — configured under Settings > POS Settings.

WARNING: Do not change Timezone after you start selling — it can shift daily/monthly financial reports and cause accounting discrepancies.

21.3 Languages#

Translations & Languages lets you localize the SalePro interface for Bengali or other languages used by your staff and customers.

21.4 Warehouse#

A Warehouse represents any physical location where inventory is stored — a retail storefront, a stockroom, or even a delivery van. Multiple warehouses let you track stock per location and prevent cashiers at one store from selling another store's inventory.

  • Navigate to Setting > Warehouse and click Add Warehouse.
  • Fill Name, Phone, Email, Address.
  • Click Submit.

WARNING: Deleting a warehouse deactivates it rather than erasing its data — its stock records remain in the database but become inaccessible from the app, and there is no built-in way to reactivate a warehouse. Any receipt printer assigned to that warehouse is permanently deleted. Do not delete a warehouse you may need again.

TIP: Create a "Quarantine"/"Damaged" warehouse to remove broken items from active sales inventory without deleting their financial value.

21.5 Tables#

Menu: Settings > Tables

Defines the dine-in tables used by the POS Table Management feature (5.3). Each table can be linked to a floor when the Restaurant module is installed; without that module, tables still work but aren't placed on a visual floor plan.

Fields: Name, Number of Person (seating capacity), Description (optional), and Floor (only shown when the Restaurant module is active).

Deleting a table deactivates it and, if the Restaurant module is active, removes it from its floor's layout.

21.6 Discount Plan#

A Discount Plan applies to a specific customer or group of customers; it can be created, edited, and made inactive at any time (either during creation or later via Edit).

21.7 Discount#

Discounts can be created and edited, and require at least one Discount Plan to attach to. A Discount can apply to all products or a specific one, and can be limited to specific days (e.g., Friday only).

21.8 Customer Group#

Overview#

Customer Group lets you classify customers into business categories such as Retail, Wholesale, VIP, or Employee. SalePro uses the selected group when you create a customer, create a customer login, add a customer in POS, or create a profile that is both a customer and supplier.

Each group includes a Percentage value. SalePro applies this value as a price adjustment when you select a customer from that group during a sale. A value of 0 keeps the default product price. Use Customer Groups to maintain consistent category-based pricing and make customer reporting easier.

Step-by-Step Instructions#

Part 1: Creating a Customer Group#

Navigate to Settings > Customer Group.

Click Add Customer Group.

Enter a unique Name, such as Retail, Wholesale, VIP, or Employee.

Enter Percentage (%).

Enter 0 in Percentage (%) when customers in this group should receive the default product price.

Click Submit to save the Customer Group.

Part 2: Assigning a Group to a Customer#

Navigate to People > Add Customer.

Select the required Customer Group.

Enter the remaining customer information.

Click Submit.

When you create a sale in POS or another sale screen, select that customer to apply the group’s price adjustment.

Part 3: Managing the Customer Group List#

Navigate to Settings > Customer Group.

Use the Search field to find a group by name.

Review the Name and Percentage columns.

Use the export toolbar to export the visible list to PDF, Excel, or CSV, print it, or choose visible columns.

Select rows from the first column when you need to use the bulk-delete option.

Part 4: Importing Customer Groups by CSV#

Navigate to Settings > Customer Group.

Click Import Customer Group.

Click Download beside Sample File to download the CSV template.

Prepare the CSV using this exact column order: name, percentage.

Select the file in Upload CSV File.

Click Submit to import the groups.

Detailed Action Menu Breakdown#

Click Action beside a Customer Group to open the available options.

Edit: Opens the Update Customer Group dialog. Change the Name or Percentage (%), then click Submit.

Delete: Removes the group from the active Customer Group list. SalePro marks the group inactive rather than permanently deleting the record.

Explanation of Fields#

Name: The unique title used to identify the group throughout SalePro, such as Retail or VIP.

Percentage (%): The customer-group price adjustment percentage. Enter 0 to sell products at the default price.

Upload CSV File: Selects the CSV file used to import multiple Customer Groups.

Sample File: Downloads the supported CSV template.

How Customer Group Works in SalePro#

An administrator creates a Customer Group.

The administrator assigns the group when creating or editing a customer.

A cashier selects that customer during a POS sale.

SalePro reads the customer’s assigned group and applies its configured Percentage to the product price.

SalePro saves the sale against the selected customer, allowing the business to review group-based customer activity in Reports > Customer Group Report.

Tips / Warnings#

Tip: Create Customer Groups before adding customers. This ensures every customer receives the correct pricing category from the first sale.

Tip: Use clear names such as Retail, Wholesale, and VIP so cashiers can select the correct customer quickly.

WARNING: Enter 0 in Percentage (%) when you want default pricing. A non-zero percentage changes the sale price for customers assigned to that group.

WARNING: Do not delete a Customer Group before checking which customers use it. Deletion makes the group inactive, so it no longer appears as an active option for new assignments.

21.9 Reward Point Setting#

This article explains how to configure and use the built-in customer loyalty program.

Retaining an existing customer is cheaper than acquiring a new one. SalePro includes a Reward Points system that automatically grants customers points based on how much money they spend. Customers can then redeem these points on future purchases to receive a discount.

Prerequisites#

Customers must be added to the database. (Walk-in customers cannot accrue points, as there is no profile to attach them to).

Step-by-Step Instructions#

Part 1: Configuring the Point Values#

Before you can award points, you must define what a point is worth.

Navigate to Setting > Reward Point Setting.

Active reward point You MUST check this box to activate the loyalty program.

Sold Amount Per Point: How much the customer must spend to earn 1 point (e.g., $10).

Min Earned Point: The minimum points a customer must accrue before they are allowed to redeem them (e.g., 50).

Per Point Value: How much a point is worth when redeemed (e.g., $0.50).

Click Submit.

SalePro interface screenshot

Screenshot: Reward Point Setting form showing the conversion rate fields

Part 2: Earning & Redeeming Points (POS)#

On the POS screen, select a specific Customer (Do not use Walk-in Customer).

Add items to the cart and process the sale normally.

The system automatically calculates the points earned and adds them to the customer's profile.

To Redeem: The next time that customer comes in, select their name. Their available point balance will appear at the top of the POS screen.

In the cart, click the Use Points button (or apply them via the Multiple Pay modal).

The POS calculates the monetary value of those points and subtracts it from the Grand Total.

Part 3: Managing Points Manually If you need to manually give points to a customer (e.g., as a special          gift or compensation), or check their point history:

Navigate to People > Customer List.

Locate the specific customer and click the Action dropdown.

Click Add Point to manually increase their balance.

Click View Points to see a detailed history of how they earned and spent their points.

SalePro interface screenshot

Explanation of Key Fields#

The Math: If Sold Amount Per Point = $10, and Per Point Value = $1. A customer who buys a $100 jacket earns 10 points. The next time they shop, those 10 points give them a $10 discount. Essentially, this is a 10% cashback loyalty program.

Business Workflow#

Admin configures point values → Cashier selects "Jane Doe" at checkout → Jane buys $50 worth of goods → Jane earns 5 points → Next week, Jane buys a $20 item → Cashier clicks "Redeem Points" → System applies a $5 discount → Jane pays $15.

Examples#

The Coffee Shop Punched Card: A coffee shop wants to mimic a "Buy 10 coffees, get 1 free" system. A coffee costs $3. They set "Sold Amount Per Point" to $3, and "Per Point Value" to $0.30. After 10 coffees, the customer has 10 points (worth $3.00), which buys them exactly one free coffee.

Tips#

Use Points to Drive Registration: Train your cashiers to say, "If you give me your phone number to create a profile, you'll earn $5 in reward points today." This is the easiest way to build a marketing database.

Warnings#

WARNING: Changing Values Retroactively: If you change the "Per Point Value" in the settings from $1.00 to $0.10, you instantly devalue every point your customers have already earned. This can lead to very angry customers. Plan your loyalty economics carefully before launching the program.

Troubleshooting#

Problem: A customer spent $100 but their receipt says they earned 0 points.

Possible Cause: The customer was rung up as a "Walk-in Customer", or the system settings are configured so that points are only awarded on purchases over $200.

Solution: Verify the Reward Point Settings. Ensure cashiers are actually selecting the customer's profile before finalizing the sale.

See also:

2.1 Customer List

5.3 POS (Point of Sale)

21.10 Currency#

Add and edit currencies from Setting > Currency. The base currency is typically your primary currency (e.g., 1 USD); other currencies are set with an exchange rate relative to it (e.g., BDT at 121 means a $2 product shows as ৳242).

WARNING: Set exchange rates carefully — an incorrect rate makes product pricing in that currency wildly wrong.

21.11 Tax#

Create, edit, and CSV-import unlimited tax rates (VAT, GST, State Sales Tax, etc.) from Setting > Tax.

  • Tax Name — appears on customer receipts (e.g., "VAT 20%").
  • Tax Rate (%) — the numeric percentage only, no % symbol.

WARNING: Do not delete a tax that has been used on past sales — historical invoices may fail to render correctly. Simply stop assigning it to new products instead.

TIP: Use descriptive, versioned names (e.g., "VAT 20%" then "VAT 21%" for a rate change) rather than editing a rate that's already been used historically.

21.12 User Profile#

Edit your own profile information and change your password from Setting > User Profile.

21.13 Mail Setting#

Connects SalePro to an SMTP mail server so it can email PDF invoices, password reset links, and notifications.

  • Mail Driver — SMTP (industry standard).
  • Mail Host — e.g., smtp.gmail.com.
  • Mail Port — 587 (TLS) or 465 (SSL).
  • Mail Address — the sending email address.
  • Mail From Name — display name in the recipient's inbox.
  • Username — usually identical to Mail Address.
  • Password — for Gmail/Office365 this must be an App-Specific Password, not the normal login password.
  • Encryption — TLS or SSL, matching the port.

WARNING: Gmail requires 2-Factor Authentication and an App Password — normal username/password login no longer works for external apps.

TIP: Test your mail setup immediately: log out, click Forgot Password on the login screen, and confirm the reset email arrives.

21.14 SMS Setting#

Send Bulk SMS via Twilio or Clickatell. Fields (example — Twilio): Gateway, Account SID, Auth Token, Twilio Number. Always include the country code when sending to customer numbers.

21.15 Create SMS#

Send SMS to one or many customers — search and select the customer and SalePro automatically uses their saved phone number.

21.16 SMS Template#

Create, edit, and delete reusable SMS templates to save time on repeat messaging.

21.17 POS Settings#

Configure default Customer, Biller, and Warehouse for the POS, how many Featured products display, and checkboxes for which payment options appear at checkout (Stripe, Razorpay, Pesapal, M-Pesa, MTN MoMo, PayHere, etc.). These checkboxes only control which methods are offered — the actual API keys/credentials for each gateway are entered separately on Payment Gateways (21.18).

21.18 Payment Gateways#

Supported gateways include PayPal, Stripe, RazorPay, PayStack, Mollie, Xendit, Bkash, SSLCommerz, Mpesa, Pesapal, MtnMoMo, PayHere, and Moneipoint — use any one or several by providing credentials. Stripe and Razorpay also have simple on/off checkboxes on POS Setting (21.17), but their actual API keys are entered here.

Configuring Stripe (example)#

  • Navigate to Setting > Payment Gateway > Stripe tab.
  • Enter Stripe Publishable Key and Stripe Secret Key from your Stripe Developer Dashboard.
  • Enter your Currency Code and click Save.

WARNING: Ensure you are using LIVE API keys, not Test/Sandbox keys, before processing real customer payments — test keys print receipts but transfer no real money.

21.19 Receipt Printers#

SalePro supports direct ESC/POS printer communication, or standard browser-based printing as a simpler alternative.

Adding an ESC/POS Printer#

  • Navigate to Setting > Receipt Printer > Add Printer.
  • Enter Printer Name and Connection Type (Network, Windows, or Linux).
  • For Network: enter the IP Address and Port (usually 9100).
  • For Windows/Linux: enter the SMB path or device path.
  • Submit, then set it as default in Setting > Invoice Setting.

Browser-Based Printing (Alternative)#

Install printer drivers on the local computer, leave the Receipt Printer menu unconfigured, and use the browser's standard Print Dialog (Ctrl+P) at checkout, selecting the thermal printer and 80mm/58mm paper size with no margins.

Customer Display Screen#

Connect a second monitor set to Extend (not Duplicate), open the POS, click the Monitor icon to open the customer-facing tab, and drag it to the second monitor in full screen. It updates live as items are scanned.

TIP: Browser printing is the easiest route for non-technical setups — it works with virtually any USB thermal printer instantly.

21.20 Invoice Settings#

Fully customizable invoice settings: create, update, or delete invoice templates, and set the default. Also used to configure the printed invoice logo and add custom footer/terms text to receipts.

21.21 Barcode Settings#

Customize your product's barcode format and printed label layout from Barcode Settings.

21.22 HRM Setting#

Set default Check-In and Check-Out times for the HRM/Attendance module.

21.23 All Notification#

View the full list of all notifications sent to customers.

21.24 Send Notification#

Notify customers and staff about something special via the User field to select recipients.

21.25 Notification Settings#

Menu: Settings > Notification Settings

A per-event control matrix determining how the system alerts people when something happens (e.g. a new sale, a low-stock event). For each event, independently toggle four delivery channels — In-App, WhatsApp, SMS, and Email — choose Target Recipients (Admins, Customers, Suppliers), and edit a custom message template for WhatsApp/SMS/Email separately.

Message templates support placeholders: [customer], [reference], [amount], [product], [qty].

NOTE: This page only controls whether and how notifications are sent for each event — it does not configure the underlying WhatsApp/SMS/Email provider credentials; those live on the WhatsApp/SMS/Mail Setting pages.

21.26 Custom Field List#

Add custom fields for Product, Sale, Purchase, and Customer forms — editable and deletable as needed.

21.27 Backup Database#

A built-in database backup utility that downloads a complete MySQL database copy with a single click. This tool backs up the database only — not physical files like uploaded images, which must be backed up separately via cPanel.

Taking a Backup#

  • Navigate to Setting > Backup Database.
  • Click Backup Database — the system generates a .sql file.
  • Click the Download button (arrow icon) to save it locally.

Restoring a Backup#

  • Locate the backup in the list.
  • Click the Restore button (circular arrow icon).
  • Confirm — the system overwrites the current database with the backup.

WARNING: Restoring is irreversible: it completely drops the current database and replaces it with the backup. Any changes made after the backup was taken are permanently lost.

TIP: Always download backup’s off-site (external drive, Google Drive, Dropbox) — a backup left only on the server dies with the server.

See also: 0.3 Changing Domain & Hosting (Migration) • 0.4 Updating the Software


22. Addons#

SalePro's core functionality can be extended with official Commerce, SaaS, and industry-specific add-ons available through the addon list in the left sidebar.

SalePro WooCommerce#

Synchronizes an existing WooCommerce website with SalePro — orders sync from WooCommerce to SalePro, and products/categories sync from SalePro to WooCommerce. SalePro taxes must be mapped to WooCommerce taxes.

  • Go to the addon list in the left sidebar and click Buy Now to purchase.
  • After purchasing on CodeCanyon, click Install.
  • Type the purchase key from Envato and click Submit — if correct, the addon installs automatically and a new WooCommerce menu appears.
  • Use the WooCommerce section to sync categories, products, taxes, and orders (products can also be synced individually from the product create/edit page).

SalePro eCommerce#

A dedicated storefront addon with its own separate installation and documentation (SalePro eCommerce Docs).

SAAS Addon#

Note the important distinction between the SalePro SAAS Addon (turns an existing SalePro installation into a multi-tenant platform) and the standalone SalePro SAAS version.

WARNING: The SaaS Addon requires SalePro to be installed in the root directory (public_html) — it will not function correctly in a sub-directory or sub-domain. Installing it over an existing SalePro installation may overwrite current data — back up your database first. To keep your existing installation as a tenant, install the SaaS module first, then add the existing SalePro as a tenant per the SaaS documentation.

  • After purchasing from CodeCanyon, click Install.
  • Enter the purchase key from Envato.
  • Click Submit — you'll be redirected to the SaaS installation page.

Repair Addon#

Manage repair and service jobs — see the full Repair chapter (13. Repair) for detailed usage.

Manufacturing Addon#

Manage the product creation process via Recipe and Production — see the full Manufacturing chapter (12. Manufacturing) for detailed usage.

See also: 13. Repair • 12. Manufacturing • 15. eCommerce

23. Glossary — Common SalePro Terms#

This glossary explains SalePro terms in plain business language.

Warehouse#

A stock location or branch. Stock quantities, purchases, sales, transfers, and many reports are tied to a warehouse.

Biller#

The business/branch identity that issues the invoice. Biller information can appear on receipts and reports.

Customer Due / Supplier Due#

Customer Due is money a customer still owes you. Supplier Due is money you still owe a supplier.

Payment Account#

The cash, bank, card-clearing, mobile-money, or other operational account that receives or sends money for a transaction.

Variant#

A version of the same product, such as a shirt in Black / XL. Variant stock is tracked separately.

Batch / Expiry#

A group of units received together, optionally with an expiry date. Useful for food, pharmacy, and other expiry-sensitive inventory.

IMEI / Serial Number#

A unique identifier for an individual physical unit, commonly used for phones, electronics, appliances, and other serialized products.

Return vs Exchange#

A Return reverses all or part of a sale/purchase. A Sale Exchange replaces or swaps customer items and settles any price difference.

Credit Sale#

A sale that is not fully paid at checkout. The unpaid amount becomes customer due, subject to the configured credit rules.

Instalment#

A sale/payment arrangement where the amount is collected according to a planned schedule rather than as one immediate payment.

Recipe / Production#

Recipe defines what materials are needed to make a product. Production records the actual manufacturing event that consumes ingredients and adds finished stock.

Service Job#

A Repair-module work order for a customer device or vehicle, including intake details, technician/status, parts, charges, payments, and delivery.

Tailoring Piece#

One garment item inside a tailoring order. A single customer order can contain multiple pieces, each with its own garment, measurements, staff, materials, production stage, and delivery information.

Draft#

A transaction saved for later completion. It is not the same as a finalized paid sale.

Journal / Double-Entry#

The accounting record created when a business event affects finances. Double-entry means every posted amount has matching debit and credit effects so the books remain balanced.

Need a hand?

Our support team can help you continue.

Tell us which step you are on and include a screenshot when possible.

All documentation Originally published Mar 15, 2026