Getting Started


Welcome to the official documentation for the Advanced POS With Inventory and Accounting. Thank you for purchasing this solution. If you have any questions that are beyond the scope of this help file, please feel free to email via my user page contact form here. Thanks so much!

This guide is designed to help you navigate every aspect of the platform — from initial installation to ongoing updates, configuration, and deployment.

Setting up Quick POS With Inventory Management is very simple. You will receive the following files after extracting project compressed file:

  • Published: It contains the build files for both SQL Server and MySQL Provider which you can directly deploy to your server.
  • Souce Code: It contains the complete source code for front-end and REST API. There are different REST API folders for SQL Server and MySQL database providers.

Hosting


Prerequisites

In Order to host the application on Windows or Linux Server even you don't need to create database manully. you just need to change the connection string and based on you connection setting database will be created automatically once application initialize.

Tip: Always publish a Release build and deploy from the publish output folder, not the raw project source.

Change Connection String

Change the connection in appsettings.json file as describe as below image:

Change connection string example
Figure: Updating appsettings.json connection string

Host on IIS Server:


  • Copy all files and folders from either MySQLProviderBuild or SqlServerProviderBuild from Build Folder and Paste at
    C:\inetpub\wwwroot\{{yoursitename}}
  • Open the IIS
  • Add New Website
  • Enter you site name
  • Copy C:\inetpub\wwwroot\{{yoursitename}} folder path to physical Path.
IIS website configuration
IIS New Website configuration panel
IIS folder permissions
Assigning folder permissions in IIS

Steps to Host .NET 8 API with Nginx and MySQL on Linux Server


Prerequisites Recap

  • Ubuntu/Debian server (root or sudo user)
  • .NET 8 Runtime or SDK installed
  • Nginx installed
  • MySQL installed & secured
  • App published locally

1. Install .NET (if not already)

sudo apt-get update
sudo apt-get install -y wget apt-transport-https software-properties-common
wget https://packages.microsoft.com/config/ubuntu/$(lsb_release -rs)/packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
sudo apt-get update
sudo apt-get install -y dotnet-runtime-8.0    # or dotnet-sdk-8.0

2. Install & Secure MySQL (if needed)

sudo apt-get install mysql-server -y
sudo mysql_secure_installation

3. Create Database & User

sudo mysql -u root -p
CREATE DATABASE posdb;
CREATE USER 'posuser'@'localhost' IDENTIFIED BY '';
GRANT ALL PRIVILEGES ON posdb.* TO 'posuser'@'localhost';
FLUSH PRIVILEGES;
EXIT;

4. Upload Provided Build (No Recompile Needed)

If you have NOT customized the source code, just upload the already compiled Published (or Build) folder included in your purchase package to the server path /var/www/posapp:

scp -r ./Published/* user@your-server-ip:/var/www/posapp/

If you DID customize the code, then first publish locally:

dotnet publish -c Release -o publish
scp -r ./publish/* user@your-server-ip:/var/www/posapp/

Finally set ownership (required for the service user):

sudo chown -R www-data:www-data /var/www/posapp

5. Nginx Site Config

sudo nano /etc/nginx/sites-available/posapp
server {
    listen 80;
    server_name yourdomain.com;

    add_header X-Content-Type-Options nosniff;
    add_header X-Frame-Options SAMEORIGIN;
    add_header X-XSS-Protection "1; mode=block";

    location / {
        proxy_pass http://127.0.0.1:5000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection keep-alive;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_cache_bypass $http_upgrade;
        proxy_read_timeout 120;
    }

    access_log /var/log/nginx/posapp-access.log;
    error_log  /var/log/nginx/posapp-error.log;
}

Enable & Test

sudo ln -s /etc/nginx/sites-available/posapp /etc/nginx/sites-enabled/
sudo rm /etc/nginx/sites-enabled/default
sudo nginx -t
sudo systemctl restart nginx

6. systemd Service

sudo nano /etc/systemd/system/posapp.service
[Unit]
Description=posapp .NET 8 Web API
After=network.target
Wants=network-online.target

[Service]
WorkingDirectory=/var/www/posapp
ExecStart=/usr/bin/dotnet /var/www/posapp/POS.API.dll
Environment=ASPNETCORE_ENVIRONMENT=Production
Environment=ASPNETCORE_URLS=http://127.0.0.1:5000
Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false
User=www-data
Group=www-data
Restart=on-failure
RestartSec=10
KillSignal=SIGINT
SyslogIdentifier=dotnet-posapp
NoNewPrivileges=true
ProtectSystem=full
ProtectHome=true
AmbientCapabilities=

[Install]
WantedBy=multi-user.target

Enable Service

sudo systemctl daemon-reload
sudo systemctl enable --now posapp.service
systemctl status posapp.service
journalctl -u posapp -f

7. (Optional) HTTPS via Certbot

sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d yourdomain.com

8. Verification

curl -I http://127.0.0.1:5000
curl -I http://yourdomain.com

Host .NET 8 API with Apache and MySQL on Linux Server


Prerequisites:

  • A Linux server (Ubuntu/Debian/CentOS, etc.)
  • Apache installed on your Linux server
  • .NET 8 installed on your server
  • MySQL server installed
  • SSH access to the server

1. Install .NET 8 SDK/Runtime on the Server

a. Update the package lists:

sudo apt-get update

b. Install dependencies:

sudo apt-get install -y wget apt-transport-https software-properties-common

c. Add the Microsoft package signing key:

wget https://packages.microsoft.com/config/ubuntu/$(lsb_release -rs)/packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb

d. Install the .NET SDK or Runtime:

For the SDK:

sudo apt-get update
sudo apt-get install -y dotnet-sdk-8.0

For the runtime only:

sudo apt-get install -y dotnet-runtime-8.0

2. Install MySQL

a. Install MySQL server:

sudo apt-get install mysql-server

b. Secure the MySQL installation:

Run the MySQL secure installation script to secure your MySQL installation. Follow the prompts to configure root password and security settings.

sudo mysql_secure_installation

c. Log in to MySQL as root:

sudo mysql -u root -p

3. Create a MySQL Database and User

a. Create a new database:

CREATE DATABASE posdb;

b. Create a new MySQL user and grant privileges:

CREATE USER 'posuser'@'localhost' IDENTIFIED BY '';
GRANT ALL PRIVILEGES ON posdb.* TO 'posuser'@'localhost';
FLUSH PRIVILEGES;

c. Exit MySQL:

EXIT;

4. Upload Provided Build (No Recompile Needed)

Use the ready-made Published (or Build) folder shipped with the product and upload its contents:

scp -r ./Published/* user@your-server-ip:/var/www/posapp/

Only if you modified the source run a local publish first:

dotnet publish -c Release -o publish
scp -r ./publish/* user@your-server-ip:/var/www/posapp/

Then fix ownership:

sudo chown -R www-data:www-data /var/www/posapp

5. Install Apache

If Apache isn't installed, install it with the following commands (Ubuntu):

sudo apt update
sudo apt install apache2

6. Install and Configure mod_proxy

a. Enable the necessary modules for Apache to proxy requests to your .NET app:

sudo a2enmod proxy
sudo a2enmod proxy_http
sudo a2enmod proxy_wstunnel

b. Restart Apache to apply changes:

sudo systemctl restart apache2

7. Configure Apache to Reverse Proxy to Your .NET App

a. Create a new Apache virtual host file:

sudo nano /etc/apache2/sites-available/posapp.conf

b. Add the following configuration to proxy traffic from Apache to your .NET app:

<VirtualHost *:80>
    ServerName yourdomain.com
    ProxyPreserveHost On
    ProxyPass / http://127.0.0.1:5000/
    ProxyPassReverse / http://127.0.0.1:5000/

    RequestHeader set X-Forwarded-Proto expr=%{REQUEST_SCHEME}
    RequestHeader set X-Forwarded-For "%{REMOTE_ADDR}s"

    Header always set X-Content-Type-Options "nosniff"
    Header always set X-Frame-Options "SAMEORIGIN"
    Header always set X-XSS-Protection "1; mode=block"

    ErrorLog ${APACHE_LOG_DIR}/posapp-error.log
    CustomLog ${APACHE_LOG_DIR}/posapp-access.log combined
</VirtualHost>

c. Enable the new virtual host and disable the default one:

sudo a2ensite posapp.conf
sudo a2dissite 000-default.conf
sudo a2enmod headers
sudo systemctl reload apache2

8. Create systemd Service (same as Nginx instructions)

a. Use a process manager like systemd to ensure the app runs in the background. Create a service file for your app:

sudo nano /etc/systemd/system/posapp.service

b. Add the following content:

[Unit]
Description=posapp .NET Web API
After=network.target

[Service]
WorkingDirectory=/var/www/posapp
ExecStart=/usr/bin/dotnet /var/www/posapp/POS.API.dll
Restart=always
# Restart service after 10 seconds if the dotnet service crashes:
RestartSec=10
KillSignal=SIGINT
SyslogIdentifier=dotnet-posapp
User=www-data
Environment=ASPNETCORE_ENVIRONMENT=Production

[Install]
WantedBy=multi-user.target

c. Reload systemd and start your app:

sudo systemctl daemon-reload
sudo systemctl enable --now posapp.service
journalctl -u posapp -f

9. (Optional) HTTPS

sudo apt install certbot python3-certbot-apache -y
sudo certbot --apache -d yourdomain.com

10. Verify

Visit http://yourdomain.com or http://your-server-ip in your browser. You should see your .NET API responding and interacting with the MySQL database.


Summary

You have successfully:

  • Installed .NET 8 SDK/Runtime on your Linux server.
  • Installed and secured MySQL, and created a database and user.
  • Published and deployed your .NET 8 API to the server.
  • Installed and configured Apache as a reverse proxy for your application.
  • Set up a systemd service to manage your .NET application.
  • Configured your application to connect to the MySQL database.

Your application is now up and running, accessible via your domain or server IP.

Activate License


To activate your Production license, please follow the instructions below:

  • Please enter the purchase code from your CodeCanyon account for this item. Click here to find your purchase code.
  • Click on the "Activate License" button below.
  • Login with codecanyon purchase account or already login then click on approve.
  • The system will redirect you to the login page. Kindly login again to continue.
  • Enjoy full access to all features of Quick POS.
  • Important: After activating the production license for a specific domain or sub-domain, token regeneration for another domain or sub-domain will not be permitted.

License Activation Video Tutorial

Video tutorial: How to activate your Quick POS license

Running local copy


Prerequisites - .Net

.NET CORE 8 SDK and VISUAL STUDIO 2022, SQL SERVER or MySql 8 +

  • Based on your requirement choose the SQL or MySQL API in respective folder of source.
  • Open solution file POS.sln from .Net core folder into visual studio 2022.
  • Right click on solution explorer and Restore nuget packages.
  • Change database connection string in appsettings.Development.json in POS.API project.
  • From Solution Explorer, Right click on POS.API project and click on Set as Startup Project from menu.
  • To run project Press F5.

Prerequisites - Angular

Although POS can be run without any development experience, it would be much easier if you already have some experience. The following instructions allow you to run a local copy on your machine.

Install tools

If you have not yet installed nodejs, please Download and globally install nodejs : https://nodejs.org
Note: download Recommended For Most Users version

A detailed instruction on how to install NodeJS is available here.

Note: Make sure you have Node version >= 4.0 and NPM >= 3 . Also globally installed typescript.

Installing Angular-CLI globally is as simple as running this simple command: npm install -g @angular/cli

After the tools is installed, go inside of the Angular directory and run below command to install dependencies:

Run npm install -f to install node dependencies defined in package.json.

Running local copy

To run a local copy in development mode, replace REST API URI (apiUrl) variable in environment file inside src --> environments -->environment.ts

execute ng serve and go to http://localhost:4200 in your browser.

To run the local copy in production mode and build the sources, execute ng build. This will builds a production version of the application. All html,css and js code is minified and put to dist folder. The contents of this folder you can to put to your production server when publishing the application.

Configuration


  • Users:
    In the initial Script two user has been created as below: [email protected] is Admin user and using this account you can add more users.
  • SMTP Settings:
    In order to send email You need to configure the Default SMTP Settings under the Admin Area.
  • Company Settings:
  • Change Title, Currency, Billing Address, Phone Number and Email from Company Profile inside the Setting.
    Company Profile Settings UI
    Company Profile settings where branding & billing info are configured

Re-deploy the Changes After Customization on the server.


Build .Net Project

  • Publish the dotnet project.
  • For the front-end, create the ClientApp folder inside the Publish folder.
Build Angular Project
  • Run npm run build that will create dist/posadminportal foder.
  • copy all the files & folders inside dist/posadminportal and past it into ClientApp(created in step-2) folder.
  • Now, Copy Publish Folder into your server.

.Net Core Project Structure


The project structure is as follows:

POS.sln/                * Projects Solution
│   │
│   ├──POS.API                  * REST API Controller, Dependancy configuration, Auto mapper profile 
│   │
│   ├──POS.MediatR              * Command handler, Query handler, Fluent API validation
│   │
│   ├──POS.Repository           * Each entity repository
│   │
│   ├──POS.Domain               * Entity framework dbContext 
|   |
│   ├──POS.Common               * Generic repository and Unit of work patterns
│   │ 
│   ├──POS.Data                 * Entity classes and DTO classes
│   │
│   ├──POS.Helper               * Utility classes

POS Accounting Entry Documentation

This document explains how accounting entries in the POS system work in a simple, user-friendly way. Each section includes:

  • What happens in the business scenario
  • Which accounts are affected (Debit and Credit)
  • Easy-to-understand explanation
  • Real-life example

The goal is to make it clear for both accounting and non-accounting staff to understand the impact of each transaction.

POS Accounting Entries

Account Types

  • Asset
  • Liability
  • Equity
  • Income
  • Expense

Chart of Accounts

Asset (1) Liability (2) Equity (3) Income (4) Expense (5)
1151 – Input - Sales Tax 2151 – Output - Sales Tax 5555 – Opening Balance Adjustment 5401 – Stock Adjustment (Gain) 5100 – Cost of Goods Sold
1152 – Input - Tax 2152 – Output - Tax 3100 – Income Summary 4200 – Discount Received 6100 – Salary Expense
1153 – Input - Tax 2153 – Output - Tax 3200 – Retained Earnings 4100 – Sales Revenue 6190 – Other Staff Expense
1154 – Input - Excise Tax 2154 – Output - Excise Tax 4150 – Sales Return 6110 – Bonus Expense
1150 – Input 2200 – Salary Payable 6140 – Travel Allowance Expense 5400 – Stock Adjustment (Loss)
1050 – Cash 2100 – Accounts Payable 5300 – General Expense 5900 – Round Off
1100 – Accounts Receivable 2150 – Output 5200 – Discount Given 6120 – Commission Expense
1200 – Inventory 7010 – Loan Payable 6130 – Festival Bonus Expense
1060 – Bank 6160 – Food Bill Expense
6170 – Advance Salary Expense
6150 – Mobile Bill Expense
6160 – Food Bill Expense
7000++ Loan Interest Account On
6170 – Advance Salary Expense

1. Purchase Order

Main Purchase of Goods

What happens: When goods are purchased from a supplier on credit.

Debit (Inventory 1200): Stock increases (you now have more goods to sell).

Credit (Accounts Payable 2100): Liability increases (you owe the supplier).

Example: Buy goods worth $1,000 on credit → Inventory +$1,000, Payable +$1,000.

Input Tax on Purchase

What happens: Tax paid on purchases which is claimable as Input Tax Credit.

Debit (Input Tax 1150): Claimable tax is recorded as an asset.

Credit (Accounts Payable 2100): Increases liability to supplier.

Example: Purchase $1,000 goods + $100 tax → Input Tax +$100, Payable +$100.

Discount Received

What happens: Supplier gives you a discount.

Debit (Accounts Payable 2100): You owe less money to supplier.

Credit (Discount Received 4200): Recorded as income because you saved money.

Example: $50 discount → Payable -$50, Discount Income +$50.

Round-Off Adjustment

Sometimes totals are rounded to nearest value. Two cases:

  • Positive Round-Off: Payable decreases, income increases.
  • Negative Round-Off: Payable increases, expense increases.

Example: Final bill is $999.70, rounded to $1,000 → Round-Off Expense +$0.30.

Purchase Order Accounting Table

Scenario Debit Account Credit Account When it happens
Main Purchase Inventory (1200) Accounts Payable (2100) Main purchase of goods
Input Tax on Purchase Input Tax (1150) Accounts Payable (2100) Tax paid on purchase (claimable)
Discount Received Accounts Payable (2100) Discount Received (4200) When supplier gives discount
Round-Off Positive Accounts Payable (2100) Round Off (5900) If round-off reduces payable
Round-Off Negative Round Off (5900) Accounts Payable (2100) If round-off increases payable

2. Purchase Return

Goods Returned

What happens: Return goods purchased earlier to supplier.

Debit (Accounts Payable 2100): Liability decreases.

Credit (Inventory 1200): Stock decreases.

Example: Return goods worth $200 → Inventory -$200, Payable -$200.

Reverse Input Tax

Debit (Accounts Payable 2100): Payable decreases.

Credit (Input Tax 1150): Input Tax decreases.

Example: Return goods with $20 tax → Input Tax -$20, Payable -$20.

Reverse Discount Received

Debit (Discount Received 4200): Income decreases.

Credit (Accounts Payable 2100): Liability increases.

Example: $10 discount earlier, now reversed → Discount Income -$10, Payable +$10.

Purchase Return Accounting Table

Scenario Debit Account Credit Account When it happens
Goods Returned Accounts Payable (2100) Inventory (1200) Goods returned to supplier
Reverse Input Tax Accounts Payable (2100) Input Tax (1150) Reverse Tax claim
Reverse Discount Received Discount Received (4200) Accounts Payable (2100) Reverse supplier discount
Round-Off Positive Accounts Payable (2100) Round Off (5900) If round-off reduces payable
Round-Off Negative Round Off (5900) Accounts Payable (2100) If round-off increases payable

3. Sales Order

Main Sale

What happens: Goods sold to customer on credit.

Debit (Accounts Receivable 1100): Customer owes money.

Credit (Sales Revenue 4100): Revenue increases.

Sell goods $500 → Receivable +$500, Revenue +$500.

Output Tax on Sale

Debit (Accounts Receivable 1100): Customer owes tax.

Credit (Output Tax 2150): Liability increases.

Sale $500 + $50 tax → Receivable +$550, Output Tax +$50.

Cost of Goods Sold

Debit (COGS 5100): Expense increases.

Credit (Inventory 1200): Stock decreases.

Goods cost $300 → COGS +$300, Inventory -$300.

Sales Discount Given

Debit (Sales Discount 5200): Expense increases.

Credit (Sales Revenue 4100): Revenue decreases.

$20 discount → Sales Discount +$20, Revenue -$20.

Round-Off Adjustment

Positive → Receivable increases, Round-Off income recorded.
Negative → Receivable decreases, Round-Off expense recorded.

Invoice $499.60, rounded to $500 → Round-Off +$0.40.

Sales Order Accounting Table

Scenario Debit Account Credit Account When it happens
Main Sale Accounts Receivable (1100) Sales Revenue (4100) Main Sale Entry
Output Tax on Sale Accounts Receivable (1100) Output Tax (2150) Tax liability collected
Cost of Goods Sold COGS (5100) Inventory (1200) Record cost of goods sold
Sales Discount Given Sales Discount (5200) Sales Revenue (4100) Discount given to customer
Round-Off Increase Accounts Receivable (1100) Round Off (5900) Receivable increases due to rounding
Round-Off Decrease Round Off (5900) Accounts Receivable (1100) Receivable decreases due to rounding

4. Sales Return

Main Sales Return

What happens: Customer returns goods, reversing the original sale.

Debit (Sales Revenue 4100): Revenue decreases.

Credit (Accounts Receivable 1100): Customer owes less.

Example: Return $100 goods → Revenue -$100, Receivable -$100.

Reverse Output Tax

Debit (Output Tax 2150): Liability decreases.

Credit (Accounts Receivable 1100): Customer owes less tax.

Example: Return $10 tax → Output Tax -$10, Receivable -$10.

Reverse COGS

Debit (Inventory 1200): Stock increases.

Credit (COGS 5100): Expense decreases.

Returned goods costing $60 → Inventory +$60, COGS -$60.

Reverse Discount Given

Debit (Sales Revenue 4100): Revenue increases (discount removed).

Credit (Sales Discount 5200): Discount expense decreases.

$5 discount reversed → Revenue +$5, Sales Discount -$5.

Sales Return Accounting Table

Scenario Debit Account Credit Account When it happens
Main Sales Return Sales Revenue (4100) Accounts Receivable (1100) Reverse original sale
Reverse Output Tax Output Tax (2150) Accounts Receivable (1100) Reverse collected tax
Reverse COGS Inventory (1200) COGS (5100) Restock returned goods
Reverse Discount Given Sales Revenue (4100) Sales Discount (5200) Revert discount given to customer
Round-Off Increase Accounts Receivable (1100) Round Off (5900) Receivable increases due to rounding
Round-Off Decrease Round Off (5900) Accounts Receivable (1100) Receivable decreases due to rounding

5. Payments

Purchase Payment

What happens: Pay supplier for purchased goods.

Debit (Accounts Payable 2100): Liability decreases.

Credit (Cash/Bank): Asset decreases.

Pay $500 to supplier → Payable -$500, Cash -$500.

Sales Collection

What happens: Customer pays for goods sold.

Debit (Cash/Bank): Asset increases.

Credit (Accounts Receivable 1100): Receivable decreases.

Customer pays $300 → Cash +$300, Receivable -$300.

Purchase Refund

What happens: Supplier refunds us for returned purchase.

Debit (Cash/Bank): Asset increases.

Credit (Accounts Payable 2100): Liability decreases.

Supplier refunds $200 → Cash +$200, Payable -$200.

Sales Refund

What happens: Customer refunds us for returned goods.

Debit (Accounts Receivable 1100): Asset increases.

Credit (Cash/Bank 1050/1060): Asset decreases.

Customer refund $150 → Receivable +$150, Cash -$150.

Payment Accounting Table

Scenario Debit Account Credit Account When it happens
Purchase Payment Accounts Payable (2100) Cash/Bank (1050/1060) Pay supplier
Sales Collection Cash/Bank (1050/1060) Accounts Receivable (1100) Customer payment received
Purchase Refund Cash/Bank (1050/1060) Accounts Payable (2100) Supplier refund received
Sales Refund Accounts Receivable (1100) Cash/Bank (1050/1060) Customer refund settlement

6. Stock Adjustments

Stock Gain (Extra Found)

What happens: Extra stock found physically.

Debit (Inventory 1200): Asset increases.

Credit (Stock Adjustment 5400): Income recorded.

Extra stock worth $100 → Inventory +$100, Stock Adjustment +$100.

Stock Loss / Damage

What happens: Stock lost, damaged, or expired.

Debit (Stock Adjustment 5400): Expense increases.

Credit (Inventory 1200): Asset decreases.

Lost goods worth $50 → Stock Adjustment +$50, Inventory -$50.

Stock Adjustment Accounting Table

Scenario Debit Account Credit Account When it happens
Stock Gain Inventory (1200) Stock Adjustment (5400) Extra stock found
Tax on Stock Gain Input Tax (1150) Accounts Payable (2100) Tax liability on stock gain
Stock Loss / Damage Stock Adjustment (5400) Inventory (1200) Lost or damaged stock

7. Stock Transfer

What happens: Stock is moved from one branch to another. Accounting is recorded in two ways:

  • Sending branch records a Sale of stock (like sales order).
  • Receiving branch records a Purchase of stock (like purchase order).

Example: Branch A sends goods worth $1,000 to Branch B → Branch A records Sale, Branch B records Purchase.

Sending Branch (Sale Entry)

Scenario Debit Account Credit Account When it happens
Main Sale Accounts Receivable (1100) Sales Revenue (4100) Record sale to receiving branch
Output Tax on Sale Accounts Receivable (1100) Output Tax (2150) Tax liability collected
Cost of Goods Sold COGS (5100) Inventory (1200) Record cost of goods sold (reduce stock)
Sales Discount Given Sales Discount (5200) Sales Revenue (4100) Discount given to receiving branch
Round-Off Increase Accounts Receivable (1100) Round Off (5900) Receivable increases due to rounding
Round-Off Decrease Round Off (5900) Accounts Receivable (1100) Receivable decreases due to rounding

Receiving Branch (Purchase Entry)

Scenario Debit Account Credit Account When it happens
Main Purchase Inventory (1200) Accounts Payable (2100) Record purchase from sending branch
Input Tax on Purchase Input Tax (1150) Accounts Payable (2100) Tax paid on purchase (claimable)
Discount Received Accounts Payable (2100) Discount Received (4200) When discount is applicable from sending branch
Round-Off Positive Accounts Payable (2100) Round Off (5900) If round-off reduces payable
Round-Off Negative Round Off (5900) Accounts Payable (2100) If round-off increases payable

8. Expense Entries

Recording Expense

What happens: Book expense for utility, rent, etc.

Debit (Expense 5300): Expense increases.

Credit (Cash/Accounts Payable): Asset decreases or liability increases.

Pay $200 utility bill in cash → Expense +$200, Cash -$200.

Expense Accounting Table

Scenario Debit Account Credit Account When it happens
Expense Paid General Expense (5300) Cash (1050) / Accounts Payable (2100) Payment for expenses
Input Tax on Expense Input Tax (1150) Cash / Accounts Payable Tax credit claimed on expense

9. Payroll

Salary Expense

What happens: Record salary liability for employees.

Debit (Salary Expense 6100): Expense increases.

Credit (Salary Payable 2200): Liability increases.

Record $1,000 salaries → Salary Expense +$1,000, Salary Payable +$1,000.

Salary Payment

What happens: Salary paid to employees via cash/bank.

Debit (Salary Payable 2200): Liability decreases.

Credit (Cash/Bank 1050/1060): Asset decreases.

Pay $1,000 salary via bank → Salary Payable -$1,000, Bank -$1,000.

Payroll Accounting Table

Scenario Debit Account Credit Account When it happens
Salary Expense Salary Expense (6100) Salary Payable (2200) Record salary liability
Bonus Expense Bonus Expense (6110) Salary Payable (2200) Record bonus payable
Commission Expense Commission Expense (6120) Salary Payable (2200) Record commission payable
Festival Bonus Festival Bonus Expense (6130) Salary Payable (2200) Record festival bonus
Travel Allowance Travel Allowance (6140) Salary Payable (2200) Record travel allowance
Mobile Bill Allowance Mobile Bill Allowance (6150) Salary Payable (2200) Record mobile allowance
Food Bill Allowance Food Bill Allowance (6160) Salary Payable (2200) Record food allowance
Advance Salary Advance Salary (6170) Salary Payable (2200) Record advance salary
Other Staff Expenses Other Staff Expense (6190) Salary Payable (2200) Record other staff-related expenses
Salary Payment Salary Payable (2200) Cash/Bank (1050/1060) Salary paid to employees

10. Loan Module Accounting

Main Loan Transactions (Borrower Perspective)

Loan Received from Bank

What happens: You take a loan from the bank.

Debit (Bank): Asset increases (cash received).

Credit (Loan Payable): Liability increases (you owe the bank).

Example: Loan of $1,000 received → Bank +$1,000, Loan Payable +$1,000.

Loan Repayment - Principal

What happens: You repay part of the loan principal to the bank.

Debit (Loan Payable): Liability decreases (you owe less).

Credit (Bank): Asset decreases (cash leaves your account).

Example: Repay $500 principal → Loan Payable -$500, Bank -$500.

Loan Repayment - Interest

What happens: You pay interest on the loan.

Debit (Interest Expense): Expense increases (interest cost).

Credit (Bank): Asset decreases (cash leaves your account).

Example: Pay $50 interest → Interest Expense +$50, Bank -$50.

Chart of Accounts

Loan Accounting Entries

Scenario Debit Account Credit Account When it happens
Loan Received from Bank Bank (Asset increases) Loan Payable (Liability increases) When you take a loan from the bank
Loan Repayment - Principal Loan Payable (Liability decreases) Bank (Asset decreases) When you pay back part of the principal
Loan Repayment - Interest Interest Expense (Expense increases) Bank (Asset decreases) When you pay interest on the loan

Troubleshooting


Concise diagnostic guide for IIS (Windows) and Linux (systemd + Nginx / Apache).

1. Quick Checklist

  • Service / App Pool running?
  • App responds locally (curl 127.0.0.1:5000)?
  • Reverse proxy config test passes?
  • Database reachable with same credentials?
  • No port conflicts or permission errors?

2. Linux Diagnostics

Service & Logs

systemctl status posapp
journalctl -u posapp -f --since "15 min ago"

Test Kestrel

curl -I http://127.0.0.1:5000
ss -tulpen | grep 5000

If not listening, verify ASPNETCORE_URLS in service file.

Nginx

sudo nginx -t
sudo tail -f /var/log/nginx/posapp-error.log

Apache

apachectl configtest
sudo tail -f /var/log/apache2/posapp-error.log

Permissions

sudo chown -R www-data:www-data /var/www/posapp
sudo find /var/www/posapp -type f -exec chmod 640 {} \;
sudo find /var/www/posapp -type d -exec chmod 750 {} \;

3. IIS Diagnostics

Event Viewer

Application Log → Source: ASP.NET Core Module V2. 500.30 = startup failure.

Temporary stdout Log

<aspNetCore stdoutLogEnabled="true" stdoutLogFile=".\\logs\\stdout" />

Disable again after capturing crash details.

Port / Binding

netstat -ano | findstr :5000

4. Database Connectivity

mysql -u posuser -p
grep -i connection /var/www/posapp/appsettings*.json

Check firewall / host resolution if remote DB.

5. Common Issues

  • Crash Loop: Wrong DLL name or missing dependency – redeploy clean build.
  • 502 / 503: Kestrel down or proxy upstream mismatch.
  • DB Auth Fail: Credential mismatch or server bind-address.
  • Permission Denied: Ownership not set to www-data.
  • High Memory: Large unbounded queries – add pagination.

6. Recovery

  1. Keep previous release folder.
  2. Rollback: swap symlink / rename folders.
  3. Restart service or recycle App Pool.
  4. Re-test locally, then externally.

7. Command Cheat Sheet

# Linux
systemctl status posapp
journalctl -u posapp -f
curl -I http://127.0.0.1:5000
sudo nginx -t
apachectl configtest

# IIS (PowerShell)
Get-EventLog -LogName Application -Source "ASP.NET Core Module V2" -Newest 20
Get-WebAppPoolState -Name "YourPool"
Restart-WebAppPool -Name "YourPool"

8. Escalate With

  • Platform & version (OS, proxy)
  • Error message / stack trace
  • Recent changes
  • Relevant log excerpts (first failure)

Support and Feedback


All questions you can send via the contact form HERE.

I will answer all questions within 24-48h in the order they were received.

Please do not panic if I do not answer too long – I love my buyers and I’ll answer for all questions ;)

Support for my items includes:

  • Answering questions about how to use the item.
  • Answering technical questions about the item (and included third party assets).
  • Help with defects in the item or included third party assets.
  • Item updates to ensure ongoing compatibility and to resolve security vulnerabilities.

Item support does not include:

  • Installation of the item.
  • Hosting, server environment, or software.
  • Support for third party plug-ins.
  • Plugins integration.
  • Support for issues caused by user modifications in the solution’s code, styling and general functionality.

More information about the terms of support you can see here: https://themeforest.net/page/item_support_policy

Conclusion


Thank you for your purchase!

Thanks for reading the Instruction, hope it’s been really helpful and resolved most of your concerns.


Don’t forget to rate Rating stars if you enjoy the product! It is very important for us to have certain goal.