Skip to content

Every sale posts its own journal entry, and every report reads it back.

Debits have to equal credits or the write is rejected. 13 accounts are created with your organisation, corrections are reversals rather than edits, and all 52 reports run off the same posted lines.

Every sale posts its own journal entry

Not a summary assembled at month-end — a double-entry posting written when the bill saves. Minimum two lines, and the debits have to equal the credits exactly or the write is rejected.

What a sale actually posts
It debits the accounts the payments landed in — cash into Cash, card and bank transfer into Bank, and whatever the customer left unsettled into Accounts Receivable, which is the khata case — credits Sales Revenue for the net and Tax Payable for the tax, then debits Cost of Goods Sold and credits Inventory at what those exact batches cost.
Debits equal credits, or nothing is written
An entry needs at least two lines and has to balance to the rupee; an unbalanced write is refused. Underneath that, a database check constraint makes it physically impossible for one line to carry both a debit and a credit, or to carry a negative — the rule holds even against a write that goes straight at the table.
A retried sale cannot post twice
A partial unique constraint allows one active entry per source record. The same bill posting a second time is refused by the database, not caught later by someone reading a report and noticing the revenue doubled.
Corrections are reversals, not edits
A wrong entry is corrected with a mirror entry — every line the same, debit and credit swapped. The original stays exactly as it was posted, so the record shows both what happened and what was done about it.
13 accounts and 11 journal source types on day one
Cash, Bank, Accounts Receivable, Inventory, Accounts Payable, Goods Received Not Invoiced, Tax Payable, Store Credit Liability, Owner Equity, Sales Revenue, Cost of Goods Sold, Discounts Given and Operating Expenses are created with your organisation. 12 of them are bound to system keys, so postings resolve an account by its role rather than by a name someone typed. Every entry is stamped with one of 11 source types — sale, customer payment, purchase receipt, refund, expense accrual, reversal and the rest.

The entry a single sale writes for itself

One PKR 53,100 bill, settled across cash, card and bank transfer. Polaris posts this the moment the bill saves — and it does not save unless the two columns match.

Journal entry
Source: sale · INV-2437
Posted
12 Aug 2026
AccountDebitCredit
1000Cash
Cash leg of the split
20,000
1010Bank
Card + bank transfer
33,100
4000Sales Revenue
Net of GST
45,000
2100Tax Payable
GST 18%
8,100
5000Cost of Goods Sold
Cost of the batches sold
31,500
1200Inventory
Cost of the batches sold
31,500
Total, in PKR84,60084,600
Entry statusPosted · balanced

Debits 84,600, credits 84,600. An entry that does not balance to the rupee is rejected, and no single line can carry a debit and a credit at once.

6 lines · one active entry per source record
Sample data · as of 12 Aug 2026

And the report your accountant rebuilds in Excel every month

Receivables Aging as Polaris draws it — every unpaid bill lands in one of 5 buckets the moment it posts, no spreadsheet in between.

Report
Receivables Aging
Total outstanding
PKR 320,000
Current
4 customers
PKR 138,300
1–30 days
3 customers
PKR 77,500
31–60 days
2 customers
PKR 26,200
61–90 days
1 customer
PKR 24,000
90+ days
1 customer
PKR 54,000

PKR 54,000 has been outstanding past 90 days. That column is this week’s call list.

5 customers · 5 buckets
Sample data · as of 12 Aug 2026

All 52 reports sit in the same place, sorted into 8 categories:

  • Financial
  • Tax & GST
  • Customers
  • Suppliers
  • Inventory
  • Operations
  • Employees
  • Advanced analytics

What the books give you today

The plain version, because an accountant will ask in the first meeting. Polaris posts a real ledger and produces one statement from it. The other two are not built yet, and one account carries more than its share.

Profit and loss, straight off the posted lines
Revenue, cost of goods sold and operating expenses for any date range, each account listed under its own code. It reads posted journal lines and excludes reversed entries, so it agrees with the ledger by construction rather than by reconciliation.
No trial balance, no balance sheet
Neither is in the app. Polaris produces a profit and loss statement and nothing else in statement form, so today your accountant assembles the other two outside Polaris from the posted lines.
Every expense posts to Operating Expenses
Expense categories exist, and expense reports group by them. The ledger side does not: rent, electricity and salaries all debit the one Operating Expenses account. The category lives on the expense record, not in the chart of accounts.

Expenses, recurring bills and payroll

The other direction of the ledger. Money going out is posted the same way money coming in is, in two moves rather than one.

An accrual and a payment, posted separately
Recording an expense debits Operating Expenses and credits Accounts Payable. Paying it debits Accounts Payable and credits the account the money actually left from. An unpaid expense therefore sits in payables where it belongs, and settling it never touches the expense line again.
Recurring expenses generate on schedule
Rent, utilities and retainers are set up once as a template and generate on their own schedule. A fixed monthly cost stops being a monthly reminder someone has to honour.
Payroll lands in the books through the expense path
Each employee carries a base salary and a salary expense category, and a salary payment generates its own expense record — so wages post exactly like every other cost. Processing payroll is its own permission, classified high-risk, separate from viewing payroll or drafting it.

52 reports across 8 categories

Financial, Tax & GST, Customers, Suppliers, Inventory, Operations, Employees and Advanced analytics. Every one runs on bills and entries you have already posted, which is why month-end is running a report rather than rebuilding one.

Receivables Aging
Every customer's unpaid bills grouped into Current, 1–30, 31–60, 61–90 and 90+ days, with a total per customer and a total per bucket. The oldest column is the week's call list — balances that have sat more than 90 days, each with the customer and the amount beside it.
Gross Margin and Discount Impact
Selling price against cost, per product and per category, over any date range — the product topping the sales chart can sit at the bottom of this one. Discount Impact puts what discounting cost next to the volume it moved, which is the difference between buying new sales and giving away margin on sales that would have happened anyway.
BCG Matrix
Two axes, both read off the window you pick: each product's share of total revenue, and its revenue against the immediately preceding window of the same length. High share with growth is a star, high share without growth is a cash cow, low share with growth is a question mark, and the rest are dogs. Profit sits on every row as well, so you can see what a dog costs to keep on the shelf.
RFM segmentation and Product Affinity
Customers scored on how recently they bought, how often, and how much they spend — a regular whose last visit is drifting past their usual gap surfaces while a WhatsApp message can still bring them back. Product Affinity shows which products land on the same bill, which decides what sits together on the shelf.
Sales Heatmap and Comparative Sales
Sales by day of week and hour of day in one grid, so the Friday-evening rush and the Tuesday-afternoon dead zone become numbers you can staff around. Comparative Sales sets one period against another, per product or per category — this Ramzan against last Ramzan, not against the quiet month before it.
Tax Summary, Tax Register, WHT Summary and FBR Annexure C
GST collected and paid, totalled for the period in the summary and itemised bill by bill in the register — the two agree because both read the same records. WHT Summary totals the withholding deducted from your B2B sales — the buyer holds it back from what they pay you — with the certificate number and the net receivable against each bill. Annexure C exports the period's sales in the FBR layout, all 13 columns, as CSV under your STRN. You still file it — Polaris does not talk to FBR yet.

Dead stock, graded with an instruction

Stock with no recorded sale inside the threshold window, ranked by how long it has been still and how much money is standing in it. The report does not stop at the list.

No sale in 180 days with more than PKR 10,000 tied up: liquidate
Graded critical. 6 months without a sale and more than PKR 10,000 of inventory value standing in it means the shelf is costing more than the stock is worth — the instruction is a liquidation sale or a return to the supplier. Below that value threshold, the same age gets a clearance promotion instead.
120 to 180 days: 30% to 40% off
4 months without a sale is graded high, and the instruction is a discount at that depth or a bundle promotion — deep enough to move it, shallow enough to keep most of the cost back.
90 to 120 days: promote it, or watch it 30 more days
A slow mover carrying more than PKR 5,000 of inventory value gets a featured promotion or a bundle offer — a lower bar than the PKR 10,000 critical cut-off, because it is a shorter wait. Everything else goes on watch for another 30 days before anyone marks it down, since one quiet quarter is not yet a dead product.
A dead-stock rate above 20% is flagged unhealthy
The grade is on the portfolio, not the product: when more than 20% of your products qualify as dead stock, the report says so and says it plainly, rather than leaving you to count rows and decide whether that is normal.

Reports that arrive without anyone running them

7 report types on a schedule you set, delivered by email as PDF, CSV, or both, to a list of addresses.

Daily, weekly by day, or monthly on a day from 1 to 28
The monthly window stops at the 28th deliberately: no schedule drifts or skips because February is short. The send time is stored with an explicit timezone — Asia/Karachi against a server running on UTC — so eight in the morning means eight in the morning at the shop, in both halves of the year.
A 1,000-row cap that tells you it capped
A scheduled run attaches at most 1,000 rows. When a report is longer than that, the email states how many rows were omitted — rather than sending a short report that looks complete and quietly is not.
Last sent, last error, next run, and Run Now
Each schedule carries when it last went out, what failed if it failed, and when it goes next. Run Now covers the case the schedule does not: your accountant asking for it today.
Any report exports on demand, without a schedule
Every report exports the moment you ask for it, as a branded PDF or as CSV — the full data set, or only the filtered view you have on screen. Nothing has to be scheduled first to get a file out.

Post next month’s sales into books that balance.

Double-entry on every bill, expenses split into an accrual and a payment, and 52 reports reading the same ledger.

14 days free, no card.