Posify User Guide
Complete documentation for Posify - your point-of-sale and retail management system. This guide covers licensing, daily shop operations, inventory, purchases, customers, accounting, and desktop setup. After install, follow Business Initialization to set up accounts, products, and opening balances. Latest version: 1.0.18 - see Release Notes for what changed. New: Database Setup for local or shared database (multi-counter).
Quick links
Download Posify → View plans & purchase →Download: github.com/nekores/posify-download · Plans: appfolio.lemonsqueezy.com
Point of Sale
Fast checkout, barcode scanning, held carts, receipts
Inventory
Stock tracking, adjustments, low-stock alerts
Purchases
Vendor bills, stock receiving, returns
Customers
Balances, credit limits, collections
Employees
Staff records, monthly salary, bulk pay
Accounting
Double-entry ledger, cash flow, reports
Desktop App
Offline-ready, native printing, auto-updates
Download Posify
Download the latest Posify installer for your shop computer from our official releases page on GitHub. Posify works on Windows and Mac.
Download from GitHub Releases →Releases page: https://github.com/nekores/posify-download
System requirements
| Supported | Not supported |
|---|---|
| Windows 10 or 11 (64-bit) | Windows 8.1, 8, or 7 |
| Mac with Intel or Apple Silicon (M1/M2/M3) | 32-bit Windows |
| PostgreSQL 14+ (on the database host PC only - see Database Setup) | Tablets/phones as the main Posify app (desktop only) |
Which file do I download?
| Your computer | Download this file |
|---|---|
| Windows 10 / 11 (64-bit) | Posify-Setup-1.0.12.exe (installer) |
| Mac with Apple Silicon (M1/M2/M3) | Posify-1.0.12-arm64.dmg |
| Mac with Intel processor | Posify-1.0.12-x64.dmg |
x.x.x is the version number on the releases page - as of this guide, the latest is 1.0.12. Always pick the newest release.
Download steps
- Open GitHub Releases.
- Click the latest release at the top.
- Under Assets, click the installer for your operating system.
- Wait for the download to finish, then follow Install & Set Up Shop.
Plans & License
Posify is not free. After installing the app, you need a valid license key to use POS, inventory, reports, and all other features. Without an active license, the app stops at the Activate License screen.
Available plans
Choose the plan that fits your shop on our store page. Plans and current prices are listed here:
View plans & subscribe →Store: https://appfolio.lemonsqueezy.com/
| Plan | Best for | What happens |
|---|---|---|
| Trial | Trying Posify before committing | Limited-time access. When trial ends, purchase monthly or yearly to continue. |
| Monthly | Shops that prefer pay-as-you-go | Renews every month. License key sent by email after each purchase/renewal. |
| Yearly | Shops wanting best value | One payment for 12 months. License key valid for the subscription period. |
Exact prices and trial length are shown on the store page when you subscribe.
How to purchase
- Open appfolio.lemonsqueezy.com.
- Select your plan: Trial, Monthly, or Yearly.
- Complete checkout (secure payment via Lemon Squeezy).
- Check your email for the license key and receipt.
- Copy the license key - you will enter it in Posify on the Activate License screen.
Activate your license in Posify
Only the shop Administrator or Manager can enter a license key. Counter staff cannot.
- Download and install Posify on your shop computer.
- Open Posify and sign in with your Administrator or Manager username and password.
- On the Activate License screen, paste your license key from the email.
- Click Activate license.
- When successful, you reach the Dashboard and can start setting up your shop.
You can also view license status or enter a new key under Settings → Activation.
Renewal & expired licenses
When a monthly or yearly plan expires, or a trial ends, Posify shows a renewal screen. You can:
- Subscribe again - Go to the store and purchase or renew
- Enter a new key - If you already received a new license key by email
- Contact support - For billing or activation help
Who can purchase and activate?
| Staff role | Can buy a plan online | Can enter license key |
|---|---|---|
| Administrator | ||
| Manager | ||
| Counter staff | - | - (ask your manager) |
Install & Set Up Shop
Posify runs on your shop computer as a desktop app. Once installed, daily sales work without internet. Internet is needed to download updates and validate your license.
Recommended order for new shops
- Download - Get the installer from GitHub Releases.
- Install - Run the installer (see below for Windows/Mac).
- First launch - Follow the on-screen setup wizard if shown.
- Sign in - Use the Administrator account your provider gave you.
- Activate license - Enter your key from your plan purchase.
- Set up your shop - Store name, logo, printers, products, and stock (steps below).
Install on Windows
- Double-click
Posify-Setup-x.x.x.exe. - Follow the installation wizard (Next → Install → Finish).
- PostgreSQL is not required on this PC to run the installer - database connection is configured on first launch (see Database Setup).
- Open Posify from the Start menu or desktop shortcut.
Install on Mac
- Open the downloaded
.dmgfile. - Drag Posify into the Applications folder.
- Open Posify from Applications (allow if macOS asks for permission).
- On first launch, complete Database Setup if prompted.
Set up your shop (after license is active)
For the full step-by-step guide - chart of accounts, products, opening stock, cash, banks, and customer/vendor balances - see Business Initialization.
- Store details - Settings → Store Info: shop name, logo, address, phone, currency, receipt header/footer.
- Feature modules - Settings → Feature Modules: enable Bank, Tax, Credit Sales, Returns, etc.
- Accounts - Settings → System Setup: click Create All Required Accounts (one-time).
- Printers - Settings → Printer Management: assign receipt printer and run a test print.
- Products - Add products under Products → List Products (SKU, prices, barcode).
- Stock & opening balances - Follow Business Initialization for opening stock, cash, banks, and dues.
- Staff - Users → System Users: create accounts for counter staff.
Staff login accounts
Your shop Administrator creates usernames and passwords for each staff member under Settings → User Management. Ask your manager if you do not have login details.
Change passwords regularly. Do not share Administrator passwords with counter staff.
Database Setup
Posify stores all shop data (products, sales, customers, accounts) in a PostgreSQL database. You choose where that database runs - on the same PC or on another computer on your network.
When Database Setup appears
- First launch after installing Posify on a new PC
- Configure Database on the splash screen if the saved connection fails
- After changing database server or credentials (Admin/Manager workflow via support)
Database Setup fields
| Field | Main PC (database on this computer) | Second counter (shared database) |
|---|---|---|
| Host | 127.0.0.1 | IP address of the main PC (e.g. 192.168.1.10) |
| Port | 5432 (default) | 5432 (same as main PC) |
| Database name | posify | posify (same database) |
| Username | postgres (or your DB user) | Same as main PC |
| Password | Your PostgreSQL password | Same as main PC |
- Enter host, port, database name, username, and password.
- Click Test connection.
- Click Save & continue when the test succeeds.
- Wait for the loading screen, then sign in.
Typical shop layouts
| Layout | Where PostgreSQL runs | Host on each Posify PC |
|---|---|---|
| Single counter | Same PC as Posify | 127.0.0.1 |
| Two or more counters, one database | Main PC only | Main: 127.0.0.1 · Others: main PC IP |
| Remote / cloud database | Your server or hosting provider | Server hostname or IP |
Main PC - allow other counters to connect
If a second counter cannot connect, the database on the main PC is usually not reachable on the network yet. Your IT person or support provider should check:
- PostgreSQL is installed and the service is running on the main PC
- PostgreSQL accepts network connections (
listen_addressesinpostgresql.conf) pg_hba.confallows your shop LAN (e.g.192.168.1.0/24)- Windows Firewall on the main PC allows inbound TCP port 5432 from other shop PCs
- The main PC uses a fixed LAN IP (or hostname) so other counters do not break when the IP changes
Find the main PC IP: on that computer, open Command Prompt and run ipconfig - use the IPv4 Address (e.g. 192.168.1.10).
First database on the main PC
- Install PostgreSQL 14+ on the main shop computer and start the service.
- Install Posify on that same PC.
- On first launch, Database Setup: host
127.0.0.1, port5432, databaseposify, postgres user and password. - Posify creates the
posifydatabase automatically if it does not exist (when the user has permission). - Complete license activation and shop setup on this PC first.
- Install Posify on additional counters and point them at the main PC IP - see table above.
Changing the connection later
If Posify cannot connect at startup, use Configure Database on the error screen, update the settings, test, and save. The app restarts with the new connection.
First Login
- Open Posify and sign in with your username and password.
- If no license is active, you will see Activate License. Choose a plan at appfolio.lemonsqueezy.com if you do not have a key yet. Only Administrator or Manager can activate.
- After activation, managers see the Dashboard. Counter staff go directly to POS.
- Set up your receipt printer under Settings → Printer Management before your first sale.
- Complete Business Initialization - accounts, products, stock, and opening balances - before going live on POS.
Business Initialization
Set up your business inside Posify after installation and license activation. This guide covers chart of accounts, products, opening stock, cash, banks, customer dues, and vendor payables. It does not cover installing the app or database setup - see Install & Set Up Shop and Database Setup.
Recommended order (both scenarios)
- Settings → Store Info - shop name, logo, address, phone, email, currency.
- Settings → Feature Modules - enable Bank Management, Tax, Credit Sales, Returns, etc.
- Settings → System Setup - click Create All Required Accounts (do this before stock, journals, or purchases).
- Settings → Printer Management - receipt layout and test print.
- Products → Manage Categories and Manage Brands.
- Products → List Products - add manually or Import from CSV/Excel (sample template in import dialog).
- Opening balances - cash, banks, stock, customers, vendors (see below).
- Users → System Users - create counter logins.
- Reports → Finance - confirm trial balance and account balances.
- POS - start selling.
Step 1 - Chart of accounts
Menu: Settings → System Setup → Create All Required Accounts
| Code | Account | Type | Used for |
|---|---|---|---|
| 1001 | Cash in Hand | Asset | Counter cash, cash sales, cash expenses |
| 1002 | Bank Account | Asset | Template; each bank you add gets its own account |
| 1003 | Accounts Receivable | Asset | Customer credit / money owed to you |
| 1004 | Inventory | Asset | Stock value on hand |
| 2001 | Accounts Payable | Liability | Vendor credit / money you owe suppliers |
| 2002 | Tax Payable | Liability | Sales/purchase tax (if tax module enabled) |
| 2003 | Loans Payable | Liability | Business loans |
| 3001 | Owner's Capital | Equity | Owner investment; default offset for opening balances |
| 3002 | Retained Earnings | Equity | Accumulated profit (builds over time) |
| 4001 | Sales Revenue | Income | POS and sales income |
| 4003 | Inventory Adjustment Gain | Income | Stock found during counts |
| 5001 | Cost of Goods Sold | Expense | Cost when items are sold |
| 5200 | Inventory Loss / Shrinkage | Expense | Loss, damage, theft, count shortages |
| 5100–5199 | Various expenses | Expense | Rent, salaries, utilities, etc. |
Most opening entries use Owner's Capital (3001) as the other side to keep books balanced while bringing real balances into Posify.
Step 2 - Products
Add products manually from Products → List Products, or bulk-import via Import using the sample CSV/Excel template (see Products).
For each product, set at minimum: Name, SKU (required), barcode (optional), category, brand, cost price, and sale price.
Stock quantity is not set on the product form - record it with Opening stock or Purchases (Step 3).
Step 3 - Inventory (stock on hand)
Option A - Opening stock (existing inventory)
Use when: You already have products on hand and do not need purchase invoice history in Posify.
Menu: Inventory → + Stock Adjustment
| Field | What to enter |
|---|---|
| Product | The item |
| Type | Add |
| Reason | Opening stock |
| Quantity | Units currently on shelf |
| Unit cost | Cost per unit (required; updates weighted average cost) |
Accounting: Debit Inventory (1004) · Credit Owner's Capital (3001)
Option B - Purchases (vendor bills)
Use when: Stock came from suppliers and you want vendor history and payment tracking.
Menu: Purchases → New Purchase
- Select Vendor and add product lines (quantity, unit cost, freight, tax if applicable).
- Choose payment: Cash (Cash in Hand 1001), Bank, or Credit / unpaid (Accounts Payable 2001).
Accounting (simplified): Stock received: Dr Inventory (1004) · Cr AP (2001). If paid immediately: Dr AP · Cr Cash or Bank.
| Your situation | Use |
|---|---|
| Existing shop, stock already paid for | Opening stock |
| New shop, buying stock now with cash/bank | Purchases (paid) |
| Buying on credit from vendor | Purchases (unpaid / partial pay) |
| Mix of old stock + new purchases | Opening stock for old items + Purchases for new receipts |
Step 4 - Opening money balances
Cash in hand
Menu: Accounts → Journal Entry → mode Cash → direction Credit → contra Owner's Capital (3001).
Entry: Debit Cash in Hand (1001) · Credit Owner's Capital (3001).
Bank accounts
Menu: Banks → Manage → Add Bank - enter name and opening balance.
Entry: Debit Bank account · Credit Owner's Capital (3001). Set default bank and POS/purchase visibility as needed.
Banks with transaction history must be archived, not deleted. Banks with a balance cannot be archived or deleted until the balance is transferred out.
Customers who owe you
Menu: Users → Customers → Add Customer - set Opening Balance.
Entry: Debit Accounts Receivable (1003) · Credit Owner's Capital (3001).
Vendors you owe
Menu: Accounts → Journal Entry → mode Single Entry:
- Debit Owner's Capital (3001)
- Credit Accounts Payable (2001)
Then create the vendor under Users → Vendors and track future purchases normally.
Scenario A - Existing business
You have real stock, cash, banks, customer dues, and vendor payables today.
- Store Info and Feature Modules configured
- Create All Required Accounts
- Categories, brands, and all sellable products added
- Opening stock (with unit cost) or purchases for inventory
- Cash in Hand journal entry for drawer cash
- Each bank added with correct opening balance
- Each customer with dues - opening balance set
- Each vendor you owe - journal entry + vendor record
- Finance report reviewed; test sale on POS
| Real-world item | Example | How to record |
|---|---|---|
| Stock on shelves | 8,500,000 | Opening stock adjustments → Inventory (1004) |
| Cash in drawer | 50,000 | Journal: Cash · Credit Owner's Capital |
| Bank balance | 450,000 | Banks → Add Bank, opening balance |
| Customers owe you | 120,000 | Customers → opening balance per customer |
| You owe vendors | 80,000 | Journal: Dr Owner's Capital · Cr AP; create vendors |
Scenario B - New business
You have capital to invest and will purchase products to sell.
- Create All Required Accounts
- Record owner capital (cash journal + bank opening balances)
- Add categories, brands, and products
- Buy initial stock via Purchases (paid) or Opening stock (owner-funded)
- Add customers and vendors as needed (opening balances usually zero)
- Create counter users; test purchase and test sale
- Go live on POS
| Step | Action |
|---|---|
| 1 | Owner invests 2,000,000 in bank → Add bank with opening balance |
| 2 | Owner keeps 100,000 cash → Journal into Cash in Hand |
| 3 | Buy 1,500,000 stock on credit → New Purchase, unpaid |
| 4 | Pay vendor later → Suppliers → Pay |
| 5 | Sell on POS → revenue, COGS, and cash/bank update automatically |
Verification before going live
Use Reports → Finance and confirm:
- Trial balance - total debits equal total credits.
- Inventory (1004) - close to physical stock value (qty × average cost).
- Cash in Hand (1001) - matches counter cash you expect.
- Bank accounts - match real bank balances.
- Accounts Receivable (1003) - matches customer dues.
- Accounts Payable (2001) - matches vendor payables.
- Run one test sale and one test purchase; verify stock and ledger.
Opening entry cheat sheet
| What you are recording | Menu path | Debit | Credit |
|---|---|---|---|
| Cash in drawer | Accounts → Journal Entry (Cash · Credit) | Cash in Hand 1001 | Owner's Capital 3001 |
| Bank balance | Banks → Add Bank | Bank account | Owner's Capital 3001 |
| Stock (no purchase) | Inventory → Opening stock | Inventory 1004 | Owner's Capital 3001 |
| Customer owes you | Customers → Opening Balance | Accounts Receivable 1003 | Owner's Capital 3001 |
| You owe vendor | Accounts → Journal Entry | Owner's Capital 3001 | Accounts Payable 2001 |
| Buy stock on credit | Purchases → New Purchase (unpaid) | Inventory 1004 | Accounts Payable 2001 |
| Pay vendor | Suppliers → Pay | Accounts Payable 2001 | Cash 1001 or Bank |
Common mistakes
- Skipping Create All Required Accounts - opening stock, purchases, and journals will fail.
- Entering stock twice - opening stock plus purchase for the same units.
- Products without stock - POS shows zero quantity until opening stock or purchase.
- Opening stock without unit cost - unit cost is required for opening stock.
- Deleting banks with history - archive inactive banks instead.
- Expecting product import - use Products → Import with the sample file; stock still needs opening stock or purchases.
initialization.md for printing or sharing offline.
Staff Roles & Permissions
| Feature | User | Manager | Administrator |
|---|---|---|---|
| POS checkout | |||
| Customers (view/add) | |||
| Sales (own counter, counter staff) | |||
| Dashboard & back office | - | ||
| Products, inventory, purchases | - | ||
| Reports & accounts | - | ||
| User management | - | * | |
| Revert collections & manual transactions | - | - | |
| Recalculate customer balances | - | ||
| See cash/bank balances on refunds | - | ||
| Employees & payroll | - | ||
| Bank & counter settlements | - | ||
| License activation | - | ||
| Bypass return time limit | - | † | † |
* Manager cannot create or manage Administrator accounts.
† With a confirmation warning.
Point of Sale (POS)
The POS screen is the main checkout interface for daily sales.
Completing a sale
- Search products by name, SKU, or barcode and add to cart.
- Adjust quantity, apply line discount, or change price (if Cart Price Change module is enabled).
- Select a customer (Walk-in is default) or leave as walk-in.
- Choose payment type: Cash, Card, Bank, or partial Credit.
- Enter amount received. For credit sales, enter partial payment; remainder becomes customer due.
- Optionally collect payment toward customer's previous balance (after current bill is fully paid).
- Click Complete Sale (or Sale Now on some layouts). Receipt prints automatically if enabled.
Previous balance & store credit on screen
When you select a registered customer:
- Positive balance (customer owes you) shows as Previous Balance.
- Negative balance (you owe the customer / store credit) shows as Store Credit and reduces what they pay on the current bill.
- POS totals are rounded to 2 decimal places for display and checkout.
Payment types
| Type | Description |
|---|---|
| Cash | Paid from Cash in Hand. Full or partial payment. |
| Card | Recorded as card payment (same cash flow as cash unless configured otherwise). |
| Bank | Requires selecting a bank account. Creates an unsettled bank payment until manager verifies. |
| Credit | Remaining amount added to customer balance. Requires Credit Sale module and registered customer. |
Hold cart
Click Hold to save the current cart locally. Resume it later from the held carts list. Useful when a customer steps away mid-checkout.
Walk-in customers
Multi-Counter Sales (Stock & Customers)
When several staff use POS at the same time, Posify validates stock and customer balances on the server when each sale is completed - not when items are added to the cart. For multiple counters to share stock and customers, each PC must connect to the same PostgreSQL database - see Database Setup.
Adding a second counter (summary)
- PostgreSQL stays on the main PC only (unless you use a remote server).
- Install Posify on the second PC - no local PostgreSQL required.
- On first launch, Database Setup: host = main PC IP, same port, database, user, and password as the main setup.
- Create a staff login under Settings → User Management.
- Set up the receipt printer on that PC - see Printer Setup → Multiple counters.
Receipt printing on each counter
Sales data is shared through the database, but printing always happens on the PC where the sale was completed - to the printer plugged into (or installed on) that computer.
- Counter A completes a sale → receipt prints on Counter A's printer.
- Counter B completes a sale → receipt prints on Counter B's printer.
- Reprints from Recent Sales print on the PC where you click reprint.
Printer settings are saved in the shared database (store name, paper width, receipt layout). The printer name saved in Settings is matched against printers installed on that PC. See Multiple counters for the recommended setup when each counter has different hardware.
Same product, low stock (e.g. only 1 left)
- Adding to cart does not reserve stock. Each counter sees stock from when POS loaded the product list.
- Both counters can add the same item to their carts.
- On Complete Sale, the server checks real inventory. The first completed sale wins.
- The second counter gets an error such as Insufficient stock - Available: 0, Requested: 1. No silent overselling.
Same customer, two counters
- Counter A may show Previous balance 82 from when the customer was selected.
- If Counter B completes a credit sale or collection first, the live balance changes.
- When Counter A clicks Complete Sale, credit limit and collection rules use the current database balance.
- The sale is blocked if credit limit would be exceeded, or if collection exceeds outstanding balance.
- Otherwise the sale succeeds and the customer balance is updated correctly - the on-screen "new balance" preview may have been stale.
Returns & Exchanges
Requires the Refund/Exchange feature module to be enabled.
Processing a return
- On POS, click Return / Exchange.
- Enter the original invoice number and look up the sale.
- Select items and quantities to return (cannot exceed originally sold qty).
- Choose Refund only or Exchange.
- Select refund method: Cash in Hand or a Bank account (same as sales).
- Complete the return. Stock is restored automatically.
Refund payment (cash vs bank)
Cash refunds come from Cash in Hand. Bank refunds come from the bank account you select. Posify checks that the chosen account has enough balance before completing the refund.
- Administrator / Manager see available Cash in Hand and bank balances in the return dialog.
- Counter staff (User) do not see account balances. If funds are insufficient, they see a generic message: Balance is less than the refund amount.
Return settlement rules
- Cash-paid original sale → Customer receives cash/bank refund. Customer balance is NOT credited again.
- Credit original sale → Customer balance is reduced (AR credit). No cash refund unless a cash portion was originally paid.
- Partial credit sale → Refund is split proportionally between cash refund and balance credit.
Exchange
Return items from the original invoice, then apply return credit to a new sale. Settlement order:
- Return credit is applied to the customer's previous balance first (clears old debt).
- Any remaining credit goes toward the new sale total.
- Customer pays any difference in cash/bank, or receives a cash/bank refund if return value exceeds the new sale.
Receipts for returns, exchanges & refunds
- Receipts show correct labels: REFUND, EXCHANGE, return credit, balance cleared, and refund amount - not a credit sale.
- Refund-only transactions print merchant and customer copies with item details.
- Exchange receipts show return credit, old balance cleared, cash refund (if any), and link to the original invoice.
Accounting (returns & exchanges)
Return time limit
Configurable in Settings → System (default 30 days). Admin/Manager can override with a warning.
Dashboard - Counter Cash
Admin and Manager see Counter Cash on the main Dashboard - the sum of unsettled cash at all cashier counters (since each staff member's last settlement). This is not the same as the full ledger Cash in Hand balance while counters are still open.
- When counters are still open, this is the total cash still attributed to staff shifts.
- After you settle all counters, this shows 0; the subtitle then shows the ledger Cash in Hand balance (total shop cash in the books).
- Counter staff (User) do not see the main Dashboard - they see only their own counter cash on Recent Sales.
Sales (Counter Staff)
Available to all roles from the sidebar: Sales. Counter staff (User) see only their own counter sales and summary cards scoped to their station.
Shows the logged-in user's sales, expenses, and cash summary since their last counter settlement. Used by counter staff to review their shift activity.
Admin/Manager settle counters from Accounts → Counter Collection. See Counter Collection.
Sales History
Back-office view of all sales at Sales menu (Admin/Manager).
- Filter by today, week, month, or custom date range
- View sale details, profit, payment type
- Print receipt, export to CSV/PDF/Excel
- Distinguish forward sales from returns
- Bulk delete (Administrator)
Products
Manage your product catalog at Products or via sidebar shortcuts.
Importing products (CSV / Excel)
Bulk-add products from Products → List Products → Import. Upload a .csv or .xlsx file using the same column layout as the sample files.
../samples/products-import-sample.csv../samples/products-import-sample.xlsx
/samples/products-import-sample.csv when Posify is running.)
| Column | Required | Notes |
|---|---|---|
| Name | Yes | Display name on POS |
| SKU | Yes | Must be unique |
| Barcode | No | Auto-generated from SKU if empty; duplicate barcodes are skipped |
| Category | No | Matched by name; created if missing |
| Brand | No | Matched by name; created if missing |
| Cost | No | Cost price (default 0) |
| Price | No | Sale price (default 0) |
| Min stock | No | Low-stock alert level |
| Tax % | No | 0–100 for product-wise tax |
| Description | No | Optional |
- Go to Products → List Products and click Import.
- Download the sample CSV or Excel file and fill in your products using the same columns.
- Upload your file, review the preview, and click Import.
- Review the Import Results screen - successful and failed rows are listed separately.
- Fix any failed rows (duplicate SKU/barcode, missing name, etc.) and re-import those rows if needed.
- Add opening stock from Inventory before selling on POS.
Creating a product (manual)
- Name - Display name on POS and receipts
- SKU - Unique stock code (required)
- Barcode - For scanner; auto-generate available
- Category / Brand / Unit - Organization
- Cost Price - Used for profit and COGS calculations
- Sale Price - Default POS price
- Pack Price / Pack Size - Optional bulk pricing
- Min Stock - Low-stock alert threshold
- Tax Rate - Per-product tax when tax mode is product-wise
Barcode labels
Print barcode or QR labels from the product list. Layout controlled in Settings → Printer Management → Barcode Labels.
Inventory
View stock levels and movement history at Inventory.
Stock movements
| Event | Stock | Notes |
|---|---|---|
| Purchase | Increases ↑ | Updates cost price (weighted average) |
| Sale | Decreases ↓ | - |
| Sale return | Increases ↑ | - |
| Purchase return | Decreases ↓ | Sent back to vendor |
| Manual adjustment | ± | Add/subtract with reason note |
| Opening stock | Sets initial | No purchase record; see accounting note |
Manual adjustment
Use Inventory → Stock Adjustment to add or subtract stock. Each manual adjustment also posts a matching journal entry so stock and accounts stay aligned.
- Go to Inventory and click + Stock Adjustment.
- Select product, Add or Subtract, and a reason.
- Enter quantity and notes (required for loss/theft).
- Confirm - stock updates and a ledger entry is posted automatically.
| Reason | Stock | Ledger entry |
|---|---|---|
| Loss / damage / theft | Subtract | Debit Inventory Loss · Credit Inventory |
| Stock count - short | Subtract | Debit Inventory Loss · Credit Inventory |
| Stock count - found extra | Add | Debit Inventory · Credit Inventory Adjustment Gain |
| Opening stock | Add | Debit Inventory · Credit Owner's Capital (enter unit cost) |
Unit cost uses the product weighted average cost (same as sale COGS), except opening stock where you enter cost per unit. On Inventory → Adjustment History, use the filter: Manual (opening stock, loss, count - affects accounts) vs From deleted sales (stock put back when a sale was deleted - does not use Loss/Gain accounts). Footer totals follow the active filter. Deleting a manual row reverts stock and the linked ledger entry. System rows from deleted sales cannot be deleted here.
Low stock alerts
Triggered when quantity ≤ product's minStock or global threshold in System Settings. Notifications appear in the bell icon.
Categories & Brands
Organize products under Settings → Categories and Settings → Brands.
- Categories support parent/child hierarchy
- Inactive categories/brands are hidden from selection
- Customer types can have automatic discount percentages applied at POS
Purchases
Record stock received from vendors at Purchases → New Purchase.
Creating a purchase
- Select vendor.
- Add line items: product, quantity, unit price, freight-in, tax.
- Enter discount and payment: cash, bank, or credit (unpaid portion).
- Save. Stock increases; vendor balance increases if amount is due.
Accounting entry (purchase)
Deleting a purchase
Example: You had 10 units from before, purchased 3 (total 13), sold 11 (2 left). Delete is blocked because 2 < 3.
Purchase Returns
Return goods to a vendor at Purchases → Purchase Return.
Return types
| Payment type | Vendor balance | Cash/Bank |
|---|---|---|
| Credit (no cash refund) | Reduced - vendor credit | No movement |
| Cash / Bank refund | Unchanged | Refund received |
Cannot return more quantity than currently in stock. Inventory and Accounts Payable are reversed on return.
Vendors
Manage suppliers at Vendors.
- View vendor balance (positive = you owe them)
- View purchase history and ledger
- Cannot delete vendor with outstanding balance
Vendor Payments
Pay vendors at Vendors → Pay Vendor or from vendor detail page.
- Select vendor and enter payment amount (cannot exceed balance).
- Choose cash or bank source.
- Confirm. Balance reduces; payment allocates to oldest open purchase invoices (FIFO).
Employees & Payroll
Manage staff at Employees (Administrator and Manager only).
Employee records
- Add employees with name, CNIC, phone, address, and base salary.
- Active/inactive status - inactive employees stay in history but are excluded from bulk pay.
- Search, filter, export (CSV, Excel, PDF), and customize columns on the employee list.
Recording salary
Open an employee’s detail page to record monthly salary:
- Click Record Salary.
- Enter amount and paid date (salary month is taken from the paid date).
- Posify posts an expense automatically (Dr Salary Expense, Cr Cash in Hand or bank).
Salary history appears on the employee page with full export support. Removing a salary record reverts its expense and ledger entries - history is kept as reversal rows, not deleted.
Pay all salaries
On the main Employees page, click Pay Salaries to pay the base salary for every active employee with a base salary set. Choose paid date and optional notes. Each employee gets one salary record and expense entry for that month.
Customer Management
Manage customers at Customers.
Customer fields
- Name, phone, business name, CNIC, region
- Customer type - Auto discount at POS
- Credit limit - 0 = unlimited; blocks sale if exceeded
- Opening balance - Amount customer owed before using Posify
Walk-in customer
System default customer for anonymous sales. Cannot receive credit. Always pays in full.
Customer detail page
View balance, full ledger (including reversal rows when a collection is reverted), sales history, and record collections.
Administrator and Manager see Recalculate Balance on the customer page to rebuild balance from remaining sales and collections. See Recalculate Balance.
Deleting sales (Administrator)
When a sale or return is deleted from Sales, Posify:
- Restores inventory
- Removes payments and customer ledger rows linked to that sale
- Reverses general ledger entries
- Recalculates the customer balance so credit from a deleted sale does not remain
Recalculate Customer Balance
Administrator and Manager can fix customer balances that look wrong after deleting sales, returns, or collections - especially on databases upgraded from older versions.
Where to find it
- Customers page → Recalculate Balances (all customers)
- Customer detail page → Recalculate Balance (one customer)
- Opening a customer's Ledger tab also runs the same repair automatically
What it does
Rebuilds each customer's balance from:
It also cleans up stale data:
- Orphan ledger rows - customer ledger entries pointing to sales that were already deleted
- Stale collections - collection ledger rows whose payment record is missing (fixes "Active" collections that cannot be deleted)
- GL/collection mismatches - collections reverted in accounts but not on customer side
What it does NOT remove
- Valid sales still on file
- Active collections that still have a payment record (use Cash Collections → Revert to undo those)
- Opening balance you entered when creating the customer
Collections
Recording payment toward a customer's previous balance (not the current sale).
Two ways to collect
- At POS - After current bill is fully paid, enter collection amount from excess cash received.
- Standalone - Customer detail page or Customers → Cash Collections; cash or bank deposit.
Cash Collections list
At Customers → Cash Collections, see all collection payments with Active or Reverted status. Reverted collections show a strikethrough amount and cannot be reverted again.
Reverting a collection
Administrator can Revert a collection (from the list or customer ledger). This:
- Reverses the general ledger entry on the same account used when collecting:
- Cash collection → reduces Cash in Hand
- Bank collection → reduces that bank account
- Posts: Dr Accounts Receivable · Cr Cash in Hand (or Bank) - opposite of the original collection
- Adds a matching reversal row on the customer ledger - the original collection row stays for audit
- Recalculates the customer balance (customer owes you that amount again)
If you collected 500 into HBL ten days ago, that 500 has been sitting in the HBL account balance in your books. Reverting the collection removes 500 from HBL and restores the customer's outstanding balance - it does not automatically pick Cash in Hand unless that is where the money was recorded.
Reversal entries use today's date. Original collection date stays visible in history.
- Current bill must be fully paid before applying payment to old balance (at POS).
- Collection cannot exceed customer's outstanding balance.
- Posts: Dr Cash/Bank, Cr Accounts Receivable.
Credit Sales & Limits
Requires Credit Sale module enabled.
- Customer must be registered (not walk-in)
- Partial or full payment allowed; remainder becomes due
- Due amount increases customer balance
- Credit limit checked at sale time using live balance (inside transaction)
- Previous balance shown on POS is a snapshot; server re-validates on Complete Sale
- Ledger: Dr Accounts Receivable, Cr Sales Revenue
Expenses
Track operating costs at Expenses - rent, utilities, salaries, supplies, and other day-to-day costs you pay from cash or bank.
Recording an expense
- Click + Add Expense.
- Select an Expense account (required) - e.g. Rent Expense, Utilities Expense, Miscellaneous Expense.
- Optionally pick a Category for filtering (Rent, Utilities, etc.) - categories are labels only and do not change the ledger account.
- Enter Amount, description, and reference (invoice/receipt number).
- Choose Payment Type:
- Cash - paid from Cash in Hand (your main counter cash account, code 1001). This represents all cash at the counter.
- Bank - select which bank account from your bank list. The expense is deducted from that bank's balance.
Payment types
| Payment type | Paid from | Notes |
|---|---|---|
| Cash | Cash in Hand (1001) | Uses your single main counter cash account. Insufficient cash balance blocks the save. |
| Bank | Selected bank account | You must choose a bank from Banks. Insufficient bank balance blocks the save. |
Categories
Use Manage Category to add, edit, or delete expense categories. Categories with existing expenses cannot be edited or deleted until those expenses are removed or recategorized.
Filters & list
- Filter by date (Today, This Week, custom range, etc.)
- Filter by category, payment type (Cash / Bank), or expense account
- Search by description, category, or reference
Accounting entries
- Editing an expense reverses the old ledger entry and reposts with the updated details.
- Reverting (deleting) an expense posts reversal entries - bank or Cash in Hand is restored; original rows stay in the ledger for audit.
- Amount and required fields are validated when you click Create or Update.
Transactions
At Accounts → Transactions - view all manual and system-linked journal activity in a searchable grid.
List features
- Tabs: All, Manual, Linked (from sales, purchases, expenses, etc.)
- Search, column visibility, density, and export (CSV, Excel, PDF)
- Summary cards: total entries, manual count, linked count, and net movement
- Debit and credit columns with a visual arrow between them
Revert (not delete)
Posify keeps full accounting history. Manual entries can be Reverted - this posts equal and opposite reversal lines and marks the original as reverted. Linked entries must be reverted from their source (e.g. revert an expense on the Expenses page, or a collection on Cash Collections).
Banks & Settlements
Requires Bank Management module.
Manage Banks
- Add bank accounts with opening balance
- Set default bank; show/hide in POS and Purchases
- Deposit to Bank - move cash from Cash in Hand into a selected bank account (ledger: Dr Bank, Cr Cash in Hand)
Deposit to Bank
At Banks → Manage Banks → Deposit to Bank, enter the amount physically taken from the counter to the bank. Available amount is the Cash in Hand ledger balance. This is a guided transfer - not the same as a manual journal entry, but posts the same accounting movement. A pending item appears under Settlements until a manager verifies it.
Cash in Hand is one ledger account for all counter cash. Individual cashier totals are tracked separately until you settle their shift under Counter Collection.
Settlements
At Banks → Settlements, managers verify:
- Counter deposits - Cash moved from counter to bank (Deposit to Bank)
- POS bank payments - Bank sales awaiting verification
Close a staff member's shift (counter settlement) at Accounts → Counter Collection.
Accounts & Ledger
Posify uses double-entry bookkeeping. Every financial transaction has equal debit and credit entries.
Default chart of accounts
| Code | Account | Type |
|---|---|---|
| 1001 | Cash in Hand | Asset - single account for all counter cash in the ledger |
| 1002 | Cash at Bank | Asset |
| 1003 | Accounts Receivable | Asset |
| 1004 | Inventory | Asset |
| 2001 | Accounts Payable | Liability |
| 2002 | Tax Payable | Liability |
| 3001 | Owner's Capital | Equity |
| 4001 | Sales Revenue | Income |
| 5001 | Cost of Goods Sold | Expense |
Pages
- Primary Accounts - Reference guide to account types
- Secondary Accounts - Full chart with balances
- Ledger - All journal entries
- Transactions - View, search, export, and revert manual entries (see Transactions)
- Journal Entry - Manual cash receipt/payment, transfer, single entry
- Counter Collection - Review unsettled cash per counter and settle staff shifts (see below)
Counter Collection
At Accounts → Counter Collection (Admin/Manager only).
Use this to close a cashier's shift and reset their counter reporting period. This is not the same as depositing cash to the bank.
What you see
A table of all active cashier (User) accounts with unsettled activity since their last settlement:
- Cash sales, collections, expenses, returns
- Cash in hand for that counter
- Period start date
Settle
- Review the counter row.
- Click Settle to close that staff member's current period.
- Their counter totals reset to zero for reporting; a new period starts.
- Counter Collection → Settle - closes shift reporting only. Does not move money in the ledger.
- Banks → Deposit to Bank - moves Cash in Hand to a bank account in the books.
After all counters are settled, the main Dashboard counter cash total shows 0; the subtitle shows ledger Cash in Hand if cash remains in the shop.
How Money Flows
Sale (cash)
Sale (credit)
Customer collection
Exchange refund (cash/bank to customer)
Purchase (credit from vendor)
Vendor payment
Deposit counter cash to bank
Expense (operating cost)
Loans
Requires Loan Management module.
- Record borrowed funds (principal, lender, received into cash/bank)
- Track repayments (principal + interest)
- Posts to Loan Payable liability and Interest Expense
Reports
Overview (/reports)
Sales, purchases, inventory, expenses summary with charts. Filter by date range. Export available.
Cash Flow (/reports/cashflow)
Cash in/out summary, POS cash details, counter activity.
Finance (/reports/finance)
Trial balance, income statement, and balance sheet from ledger data.
Tax Management
Requires Tax Management module.
Tax calculation mode set in Settings → System:
- Product-wise - Each product's tax rate applied per line
- Sale total - Store tax rate applied to sale subtotal
Tax Management page shows tax collected by period with daily/monthly breakdown.
Settings
| Tab | What you configure |
|---|---|
| Store Info | Name, logo, address, phone, currency, receipt header/footer |
| Printer Management | Receipt, barcode, default printers; label layout |
| Categories / Brands | Product organization |
| User Management | Staff accounts and roles |
| System | Tax, date format, theme, auto-print, sounds, low stock threshold, return days (counter settlement is under Accounts → Counter Collection) |
| Feature Modules | Enable/disable Tax, Bank, Loan, Credit Sale, Cart Price Change, Returns |
| Backup & Restore | Database backup and restore |
| Activation | License key and status |
| Updates | Check and install software updates (desktop) |
| Setup | Initialize chart of accounts |
Printer Setup
Configure at Settings → Printer Management.
Receipt printer
- Select your system printer (the desktop app lists all installed printers).
- Customize header, footer, logo, and which store fields appear on the receipt under Settings → Receipt Customization.
- Assign the printer and run a Test print from Settings → Printer Management.
- Thermal receipt printers (Epson TM series, Star, Bixolon, etc.) are supported via silent print in the desktop app.
- Receipts print automatically after Complete Sale when auto-print is enabled in System settings.
Receipt paper width
Under Printer Management → Receipt paper, choose the roll width that matches your printer:
| Preset | Typical use |
|---|---|
| 58 mm | Narrow portable / mobile thermal printers |
| 70 mm | Some wide compact models |
| 80 mm | Epson TM-T88 and most shop counter thermals (most common) |
The paper width in Posify must match the width set in your printer driver. On Windows, open Devices and Printers → your receipt printer → Printing preferences and set paper size to the same width (often 80 mm). Set driver margins to 0 or minimum if the driver allows it.
Receipt print quality settings
- Print density - Light, Normal, or Dark. Use Dark if text looks faint on your thermal paper.
- Top spacing trim (mm) - If the receipt starts too far down the roll (blank space at the top), increase this in 0.5 mm steps. Try 2–4 mm on Windows Epson and similar thermals. The live preview in Receipt Customization updates after you save.
Long receipts (many items)
Posify sizes each receipt to fit all line items, totals, and footer - including sales with many products (50+ lines). The full receipt should print on one continuous roll without the bottom being cut off. If an older build cropped long receipts, update to the latest version.
Barcode / label printer
- Configure label size, orientation, gap, content (price, SKU, name)
- Zebra ZPL raw printing supported in desktop app
- Print from product list or barcode preview
- Posify sets page margins to zero in the app. Some thermal drivers still add a small top feed - use Top spacing trim to compensate.
- Match roll width in Posify and in the Windows/Mac printer driver.
- Use Test print after changing paper width or top trim.
- Reprint a past sale from Recent Sales to verify a long receipt after setup.
Multiple counters (different printers)
When two or more PCs share one database, each counter usually has its own physical receipt printer. On Complete Sale, Posify prints silently to the receipt printer selected in Settings → Printer Management, using the printers installed on that PC.
How it works
| What | Shared (database) | Local (each PC) |
|---|---|---|
| Products, stock, sales | Same for all counters | - |
| Receipt layout, paper width, store logo | Same settings | - |
| Printer name in Settings | One saved name | Matched to local Windows/Mac printers |
| Physical print on sale | - | Prints on the PC that completed the sale |
Recommended setup (different printer models)
You do not need to keep changing the printer name in Posify every time you switch counters. Use the same Windows printer name on each computer, then select that name once in Posify:
- On Counter 1, open Windows Devices and Printers and rename the receipt printer to e.g. Posify Receipt.
- On Counter 2, rename its receipt printer to the same name: Posify Receipt (even if the hardware is different - Epson on one desk, Star on another).
- In Posify on either counter: Settings → Printer Management → Receipt Printer → choose Posify Receipt → Test print on each PC.
- Enable auto-print under Settings → System if you want receipts after each sale.
When Counter 1 completes a sale, Windows sends the job to Counter 1's Posify Receipt queue. When Counter 2 completes a sale, it uses Counter 2's local Posify Receipt queue. Same name in Posify; different physical printers on each desk.
If print fails on one counter
- Run Test print on that PC from Printer Management.
- Confirm the receipt printer is online and the name matches what is saved in Settings.
- Check the printer appears in Windows Devices and Printers on that PC only.
Backup & Restore
At Settings → Backup & Restore.
- Create backup - Saves database snapshot to local backup folder.
- Restore - Select a backup file to restore. App restarts after restore.
- Upload restore - Restore from a backup file copied from another machine.
Feature Modules
Toggle optional features at Settings → Feature Modules.
| Module | When enabled |
|---|---|
| Tax Management | Tax settings + Tax Management page |
| Bank Management | Banks menu, bank payments at POS, settlements |
| Loan Management | Loans menu |
| Credit Sale | Partial/full credit sales at POS |
| Cart Price Change | Edit unit price on POS cart |
| Refund / Exchange | Return and exchange on POS |
Release Notes
Summary of changes by version. Download installers from GitHub Releases.
Version 1.0.18 Latest
Database setup on first launch - local or shared network database; PostgreSQL no longer required at Windows install time.
Database & installation
- Windows installer no longer blocks if PostgreSQL is missing on the PC - configure the database on first launch.
- Database Setup supports local (
127.0.0.1) or remote host (main PC IP, server, or cloud). - Multi-counter: install Posify on extra PCs without local PostgreSQL; point them at the same database on the main computer.
- Configure Database on the splash screen if the connection fails later.
Version 1.0.12
Returns & exchanges accounting, customer balance repair, collection fixes, refund receipts, and POS improvements.
Returns, exchanges & refunds
- Cash refunds post from Cash in Hand; bank refunds from the bank account you select (with balance check).
- Exchange settlement applies return credit to previous customer balance first, then new sale, then cash/bank refund.
- Refund and exchange receipts show correct labels (REFUND / EXCHANGE), return credit, balance cleared, and original invoice - not "credit sale".
- Refund-only prints merchant + customer copies with line items.
- Counter staff cannot see cash/bank balances on refund dialog; Manager/Admin can.
- POS shows Store Credit when customer balance is negative.
Customer balances & collections
- New Recalculate Balance button on customer detail page and Recalculate Balances on Customers list (Admin/Manager).
- Fixes orphan ledger rows after deleted sales, stale collections, and incorrect negative balances.
- Deleting a sale now fully recalculates customer balance - credit from deleted sales should not stick.
- Collection revert fixed when payment record is missing (common after upgrades).
- Collection delete/revert always hits the original cash or bank account recorded at collection time.
Accounting & reports
- Exchange return and old-balance credit posting corrections in general ledger.
- Sales reports exclude return invoices from forward sales totals.
- Counter cash totals include exchange cash refunds.
- POS totals rounded to 2 decimals (fixes tiny float differences on screen).
Updates & database
- Desktop app runs database migrations on startup - schema updates apply without wiping shop data.
- Settings and transactions are preserved when updating to a new version.
Version 1.0.2
Employees & payroll, ledger history, expenses, counter cash, collections, printing, and desktop updates.
Employees & payroll
- New Employees module - staff records with CNIC, contact details, and base salary.
- Record Salary on each employee - posts salary expense and updates cash/bank automatically.
- Pay Salaries - bulk pay base salary for all active employees in one step.
- Salary history grid with search, export, and revert (reversal entries, not deletion).
Ledger history & revert
- Financial corrections use Revert everywhere - sales, purchases, expenses, salaries, collections, loans, and manual journal entries.
- Reversal rows are posted; originals are marked reverted - full audit trail is preserved.
- Accounts → Transactions redesigned: tabs (All / Manual / Linked), search, export, equal stat cards, Revert action for manual entries.
- Collection revert syncs customer ledger and balance (cash and bank collections).
- Cash Collections shows Active / Reverted status; reverted amounts are struck through.
- Customer balance recalculation includes bank collections - list balance matches ledger.
Expenses
- New Expenses module under the main menu - record rent, utilities, salaries, supplies, and other operating costs.
- Payment types: Cash (from Cash in Hand) or Bank (select a bank account). Card payment removed.
- Expense account required on every entry; Category optional for filtering.
- Manage Category - add, edit, or delete expense categories.
- Edit and revert reverse the ledger entry and restore bank or Cash in Hand balances.
- Bank and cash payments validate sufficient balance before saving.
Counter cash & settlement
- Counter Collection moved to Accounts → Counter Collection (no longer under Settings → System).
- Dashboard (Admin/Manager): Counter Cash shows the sum of unsettled cashier counters; shows 0 when all counters are settled.
- Deposit to Bank at Banks → Manage Banks - moves cash from Cash in Hand to a bank (Dr Bank, Cr Cash in Hand).
- Counter staff see only their own counter on POS → Recent Sales.
Accounting & business rules
- Sale returns: correct customer balance and general ledger for cash vs credit originals.
- Purchase returns: supplier balance, inventory, and accounts payable handled correctly.
- Vendor payments allocate to purchase paid/due amounts.
- Customer collections capped at outstanding balance; credit limit enforced at Complete Sale.
- Multi-counter: stock checked on Complete Sale (first sale wins); customer balance re-read live at checkout.
Receipt printing (Windows & Mac desktop)
- Long receipts (50+ line items) print in full - totals and footer no longer cut off.
- Improved top spacing - zero page margins; use Top spacing trim in Printer Management if your thermal driver adds blank space.
- Match roll width (58 / 70 / 80 mm) in Posify and in the printer driver.
Software updates (desktop app)
- Settings → Updates shows clearer errors when install fails (including Mac code signing issues).
- Warning if Posify is not running from the Mac Applications folder.
- Manual download dialog when automatic install cannot finish.
- Mac in-app updates require every release to use the same Apple Developer ID signature - if update fails, install the DMG manually from GitHub.
Version 1.0.0
- Initial public release - POS, inventory, purchases, customers, banks, loans, accounts, reports, license activation, backup & restore, printer management, and automatic updates.
About the App
Posify is installed on your shop computer and keeps all your sales and inventory data locally - your data stays in your shop. Current release: v1.0.12.
- Works offline - Daily sales do not need internet
- Receipt printing - Connects to your thermal or regular printer
- Barcode scanning - Use a USB barcode scanner at POS
- Automatic updates - New versions available from Settings → Updates
- Backup - Save your shop data from Settings → Backup & Restore
Supported computers
Windows 10 or 11 (64-bit) and Mac (Intel and Apple Silicon). Windows 8.1 and older are not supported. See Download Posify → System requirements.
Software Updates
Current release: 1.0.12. You can update Posify in two ways:
Option 1 - Inside the app (recommended)
- Go to Settings → Updates.
- Confirm Current version at the top of the panel.
- Click Check for updates.
- If an update is available, click Download and wait.
- Click Install update, then Restart now in the dialog.
On Mac, keep Posify in your Applications folder. If the Updates tab shows a warning that Posify is not in Applications, move the app there first.
If an error appears in red on the Updates tab, read the message - common Mac issues include code signing mismatch (install the DMG manually) or needing to quit fully with Cmd+Q before retrying.
Mac in-app updates use a signed .zip file. Every release must be built with the same Developer ID Application certificate and notarized. If signatures do not match, macOS shows a code signing error and the version number will not change - install the DMG manually instead.
Option 2 - Download latest installer
If in-app update fails, download the newest version from GitHub Releases and install over your existing Posify. Your shop data is preserved.
- Windows: run
Posify-Setup-1.0.12.exe(or latest version) and finish the installer. - Mac: open
Posify-1.0.12-arm64.dmgorPosify-1.0.12-x64.dmg, drag Posify into Applications, and replace the existing app.
Important Business Rules
| Rule | Detail |
|---|---|
| Walk-in credit | Walk-in customers cannot buy on credit |
| Collection order | Current bill must be fully paid before collecting old balance |
| Return settlement | Cash refund vs balance credit based on original payment split |
| Purchase delete | Blocked if current stock < purchased quantity per line |
| Purchase return | Cannot return more than available stock |
| Vendor payment | Cannot exceed vendor outstanding balance |
| Collection cap | Cannot exceed customer outstanding balance |
| Credit limit | Enforced at Complete Sale; 0 = unlimited |
| Multi-counter stock | Stock checked on Complete Sale; first sale wins if only one left |
| Multi-counter customer | Live balance and credit limit on Complete Sale; UI preview may be stale |
| Sale delete | Recalculates customer balance; removes linked ledger and payments |
| Balance recalculate | Admin/Manager: rebuilds balance from sales + collections; removes orphan ledger |
| Collection revert account | Reverses same Cash in Hand or bank account used at collection |
| Refund account | Cash refund from Cash in Hand; bank refund from selected bank |
| Negative customer balance | Store credit (shop owes customer) - shown on POS as Store Credit |
| Expense payment | Cash or Bank only; bank account required for bank; revert posts reversal entries |
| Ledger corrections | Revert only - reversal rows posted; originals kept for audit |
| Collection revert | Restores customer balance and cash/bank; original ledger rows kept |
| Salary revert | Reverses expense and ledger; salary record marked reversed, not deleted |
| Counter settlement | Accounts → Counter Collection; does not move cash to bank |
| Dashboard counter cash | Sum of unsettled cashier counters (Admin/Manager) |
| Opening stock | Adjusts quantity only; use Purchases for full accounting |
| Bank POS sales | Start unsettled until manager verifies in Settlements |
Troubleshooting
App won't start or shows database error
- Restart the computer and open Posify again.
- Click Configure Database on the splash/error screen (or complete Database Setup on first launch).
- Main PC: confirm PostgreSQL service is running; host is usually
127.0.0.1. - Second counter: confirm host is the main PC IP, not
127.0.0.1, and the main PC is on and reachable on the shop network. - Check username, password, database name (
posify), and port (5432). - On the main PC, ensure firewall allows port 5432 from other shop computers if using multiple counters.
- See Database Setup for full steps.
- Contact your Posify support provider if the problem continues.
Second counter cannot connect to database
- You do not need to install PostgreSQL on the second PC - only Posify.
- Host must be the IP of the computer where PostgreSQL runs (run
ipconfigon that PC). - Both PCs must be on the same shop network (same Wi‑Fi/LAN).
- PostgreSQL on the main PC must allow remote connections - see Database Setup → Main PC.
- Use Test connection in Database Setup before saving.
Receipt not printing
- Check a receipt printer is assigned in Settings → Printer Management.
- Run Test print from Printer Management.
- Ensure the printer is online, has paper, and is not paused in Windows.
- Confirm auto-print is enabled under Settings → System if receipts should print after each sale.
- Use the desktop app for silent printing - browser mode opens the system print dialog instead.
Receipt has too much blank space at the top
- In Settings → Printer Management, increase Top spacing trim by 0.5 mm at a time (try 2–4 mm on Windows Epson / Star thermals).
- On Windows, set the printer driver paper size to match Posify (usually 80 mm) and margins to minimum.
- Save settings, run Test print, and adjust trim until the receipt starts at the top of the roll.
Receipt is cut off or missing items at the bottom
- Update to the latest Posify version - long receipts (many line items) need current print sizing.
- Confirm paper width in Posify matches the driver (wrong width can cause layout issues).
- Reprint from Recent Sales to test after updating.
- If only part of the receipt prints, check the driver is not set to a fixed short page length.
Update failed or stuck
- Check your internet connection.
- On Mac, Posify must be in the Applications folder - not Downloads, Desktop, or opened from a DMG. Drag Posify.app into Applications, quit completely (Posify menu → Quit or Cmd+Q), then open from Applications.
- If you see "Restarting to install update" but nothing happens, wait 15 seconds - Posify may show a manual download dialog. Otherwise quit with Cmd+Q and install manually.
-
Download the latest installer from
GitHub Releases:
Posify-Setup-x.x.x.exeon Windows, orPosify-x.x.x-arm64.dmg(Apple Silicon) /Posify-x.x.x-x64.dmg(Intel) on Mac. Install over the existing app - your shop data is kept.
Mac update: "code signature" or "code requirement" error
This means macOS rejected the downloaded update because it is not signed the same way as your installed copy. Restarting Posify will not fix it.
- Quit Posify completely (Cmd+Q).
-
Download the DMG for your Mac from
GitHub Releases
(
arm64for Apple Silicon,x64for Intel). - Open the DMG, drag Posify into Applications, and replace the existing app.
- Open Posify from Applications only.
If Gatekeeper blocks the app: in Terminal run
xattr -cr /Applications/Posify.app, then open again from Applications.
For shop owners: ask whoever publishes Posify releases to rebuild and upload using the same
Apple Developer ID certificate for every version. Developers: run
npm run clean && npm run electron:publish:mac with
CSC_* and APPLE_* env vars set.
Insufficient stock at Complete Sale
- Another counter may have sold the last unit - reduce quantity or remove the item.
- Refresh POS or search the product again for updated stock.
Negative stock warning
- Review recent sales and adjustments in Inventory history
- Use Inventory → Adjust to correct count with a note
Customer balance wrong after deleting sales
- Go to Customers → open the customer → click Recalculate Balance.
- Or use Recalculate Balances on the Customers list for all customers.
- Check Cash Collections for Active collections that were not reverted - delete/revert those if needed.
- Deleting sales should auto-fix balance on current versions; recalculate fixes older databases upgraded mid-stream.
Collection shows Active but won't delete
- Update to the latest version (1.0.12+), then try revert again.
- Or run Recalculate Balance on that customer - stale collection rows are repaired automatically.
Account balances don't match
- Run Finance report for trial balance
- Ensure opening stock was recorded via Purchases or journal entry
- Check unsettled bank payments in Settlements
Frequently Asked Questions
What version of Posify is current?
The latest release is 1.0.12. Check Settings → Updates in the desktop app or GitHub Releases. See Release Notes for changes in each version.
Where do I download Posify?
From our official releases page: github.com/nekores/posify-download. See Download Posify.
Can I use Posify on Windows 8.1?
No. Posify requires Windows 10 or 11 (64-bit). Windows 8.1, 8, and 7 are not supported and the app may not install or may crash. Upgrade the PC or use a newer computer; see System requirements.
Each counter has a different printer - will receipts print correctly?
Yes, if you set it up correctly. Printing always happens on the PC that completed the sale, using that PC's installed printers. Use the same Windows printer name (e.g. Posify Receipt) on each counter, then select that name once in Settings → Printer Management. Do not save a different printer name on each PC - settings are shared in the database. Full steps: Printer Setup → Multiple counters.
Do I need PostgreSQL on every counter computer?
No. PostgreSQL is required only on the PC that hosts the database (usually your main counter). Additional counters install Posify only and connect to that PC using its network IP. See Database Setup.
Can I use Posify without internet?
Yes for daily sales. Internet is needed to download the app, purchase or renew a license, and install updates.
How do I buy a license? What plans are available?
Visit appfolio.lemonsqueezy.com to choose Trial, Monthly, or Yearly plans. Your license key arrives by email. See Plans & License.
Is Posify free?
No. A license (trial, monthly, or yearly) is required for each shop computer.
Can I delete a purchase after selling some items?
Only if current stock is still at least equal to the purchased quantity for each product. Otherwise deletion is blocked.
What's the difference between counter settlement and bank deposit?
Counter settlement (Accounts → Counter Collection) closes a staff member's shift report. Bank deposit (Banks → Deposit to Bank) physically moves cash from the counter to a bank account in the ledger.
Where do I settle a cashier counter?
Accounts → Counter Collection. Select the counter and click Settle. This is no longer under Settings.
Two counters added the same product but only one is in stock - what happens?
Both can add it to cart. When each clicks Complete Sale, the server checks real stock. The first sale succeeds; the second gets an insufficient stock error.
Customer balance on POS looks wrong after another counter made a sale
The balance shown when you select a customer is a snapshot. Clicking Complete Sale uses the live balance from the database, so the books stay correct. Re-select the customer to refresh the display.
Receipt has blank space at the top or cuts off at the bottom
Match paper width in Posify and your printer driver (usually 80 mm on Windows). Use Top spacing trim in Printer Management for extra blank space at the top. For long sales, update to the latest app version so the full receipt prints. See Printer Setup and Troubleshooting.
What happens when I revert a collection or expense?
Posify does not remove ledger rows. A Revert posts opposite entries and marks the original as reverted. For collections, cash or bank is reduced on the same account used when money was received (Cash in Hand or the bank you chose). Customer balance increases by the reverted amount. You can still see both the original and reversal in the ledger and on Cash Collections (Active / Reverted status).
Which account is affected when I delete a collection?
The account you selected when recording the collection: Cash in Hand for cash collections, or the specific bank account for bank collections. Money collected ten days ago has been in that account's balance since collection day; reverting removes it from that same account today.
Customer balance still wrong after deleting all sales
Standalone Cash Collections are separate from sales - deleting sales does not remove them. Revert active collections or use Recalculate Balance (Admin/Manager). See Recalculate Balance.
What is Cash in Hand for expenses?
When you record an expense as Cash, it is paid from your main Cash in Hand account (counter cash). Posify uses one Cash in Hand account for all counter cash - not separate tills in the ledger. Choose Bank if the expense was paid by bank transfer or cheque from a specific bank account.
How do I give a customer credit?
Enable Credit Sale module, register the customer, set a credit limit if needed, then at POS pay less than the total - the remainder becomes due on their balance.
Can multiple staff use Posify at once?
Yes. Each user logs in with their own account. User role staff see only their counter period data; Admin/Manager see everything.