Implementation verdict
Executive verdict
Section titled “Executive verdict”WorkSquares Accounts has a substantial, well-structured accounting core and is a credible controlled-production candidate for organisations that do not require payroll or live bank/payment integrations. It is not yet a complete QuickBooks Online replacement.
The strongest areas are double-entry posting, receivables and payables, document workflows, manual statement import and reconciliation, reporting, projects/time, budgets, India-oriented GST reporting, auditability, approvals and mobile access. Several capabilities go beyond the supplied small-business manuals: revenue recognition, fixed assets, dunning, configurable workflows, approval processes, accounting dimensions and base-currency reporting.
The replacement verdict remains no-go for general QuickBooks migration because four material product gaps remain:
- Payroll is absent. There are no employee payroll records, pay schedules, pay runs, payslips, leave accrual, superannuation, Single Touch Payroll (STP), payroll reports or payroll-to-GL journal generation.
- Banking is file-based, not connected. OFX/QIF import, matching, rules and reconciliation exist, but there is no live financial-institution feed.
- Online collection is incomplete. Documents can be rendered and emailed and a customer portal exists, but no configured payment gateway completes the portal “Pay” journey.
- Migration and deployment are not turnkey. There is no general customer, vendor, item or opening-data import workflow, and the SQL migrations are an overlay rather than a verified empty-database baseline.
Decision by use case
Section titled “Decision by use case”| Use case | Verdict | Reason |
|---|---|---|
| Core bookkeeping, AR/AP and financial statements | Proceed with controlled pilot | The end-to-end accounting path is implemented and tested; reconcile converted opening balances before cutover. |
| Multi-currency accounting | Pilot with restrictions | Base-currency primary reports are implemented, but realised FX on settlement remains missing. |
| India GST operations | Pilot after tax review | GST components, tax summary, GSTR-1 and GSTR-3B are present; IRN/e-invoicing, e-way bills and credentialed filing are not. |
| Australian payroll/STP organisation | Do not replace | The supplied payroll baseline is not implemented. Use a separate payroll product/integration. |
| Fully automated banking and online payments | Do not replace yet | Live bank feeds and a working payment gateway are missing. |
| Unattended greenfield deployment | Do not release yet | A reproducible fresh-database baseline and deployment rehearsal are still required. |
How the comparison was made
Section titled “How the comparison was made”The manuals are treated as a capability baseline, not as a requirement to copy QuickBooks screens or implementation choices. The audit used the PDF page number shown by the file reader; printed page numbers can differ.
Statuses mean:
- Implemented — backend workflow and a usable web or mobile surface were found.
- Partial — material parts exist, but the manual’s end-to-end outcome is not met.
- Missing — no product implementation was found outside dependencies/generated files.
- Different by design — the business outcome exists through a different accounting method.
Evidence was checked in mounted API routes, web navigation/router entries, Android screens/models, migrations and automated tests. A route name alone was not treated as proof of production readiness.
Reference baseline
Section titled “Reference baseline”The supplied documents cover these major expectations:
10 QuickBooks SMB user manual-02.pdf— GST, multi-currency, data import, inventory, online banking, invoices, expenses/bills, purchase orders, payroll, reconciliation and reports (contents on PDF pp. 3–6; payroll pp. 83–98).Global QuickBooks Online User Guide 2019.pdf— multi-currency (p. 22), import (p. 23), inventory (p. 25), banking (pp. 27–35), sales and purchases (pp. 36–47), budgets/projects (pp. 48–54), reconciliation (pp. 55–59), GST (pp. 60–63) and reporting (pp. 64–73).QBO Client Training 2021-2022.pdf— setup/import (pp. 8–36), navigation, recording transactions (course starting p. 66), reporting (pp. 161–212), payments/online invoices (pp. 220–237), payroll (pp. 238–253) and app integrations (pp. 254–259).9 payroll powered by emplyoment hero user guide.pdf— employees and pay history, schedules/automation, STP, superannuation, pay-run creation/finalisation, employee portal/timesheets and payroll reports (contents pp. 2–4; workflows pp. 6–27).
Capability comparison
Section titled “Capability comparison”Foundation and accounting controls
Section titled “Foundation and accounting controls”| Manual capability | Status | Implementation evidence | Finding |
|---|---|---|---|
| Company users and access control | Implemented | routes/users.ts, routes/roles.ts, middleware/rbac.ts; Roles UI |
Central authentication, tenant scoping and route-wide RBAC are present. Production defaults fail closed unless explicitly overridden. |
| Chart of accounts and journals | Implemented | routes/glAccounts.ts, routes/journalEntries.ts, services/posting.ts; GL and journal UI |
Manual and document-generated journals share a posting seam; balance and reversal controls are implemented. |
| Closing the books | Implemented | routes/fiscalPeriods.ts; Fiscal Periods UI |
Module-aware period locks reject posting into closed periods. |
| Audit trail | Implemented | middleware/audit.ts, routes/auditLog.ts; Activity Log web/Android screens |
Successful mutations and explicit auth/approval actions are recorded in an append-oriented log. |
| Multi-currency | Partial | routes/exchangeRates.ts, routes/fxRevaluations.ts, migrations 41–42; baseCurrencyReports.test.ts |
Booked rates, unrealised revaluation and base-currency primary reports exist. Realised FX on settlement is still absent. |
| Data migration/import | Partial | Bank statement import and document APIs exist; no bulk-import route in contacts.ts or items.ts |
OFX/QIF statements can be imported, but guided CSV import for master/opening data and a complete QuickBooks cutover flow are missing. |
Sales and receivables
Section titled “Sales and receivables”| Manual capability | Status | Implementation evidence | Finding |
|---|---|---|---|
| Customers and contacts | Implemented | routes/contacts.ts, routes/contactPersons.ts; Contacts web/Android screens |
Customer/vendor identities, people, addresses, currency and statements are supported. |
| Estimates to orders to invoices | Implemented | routes/estimates.ts, routes/salesOrders.ts, routes/invoices.ts; matching web/Android flows |
Quote/order conversion, partial order invoicing, taxes, item lines, price lists and status transitions are present. |
| Invoice delivery and statements | Implemented | services/pdf/invoicePdf.ts, services/pdf/statementPdf.ts, services/email.ts |
PDFs and email delivery are real transport seams; production still requires ACS email configuration. |
| Customer payments, credits and retainers | Implemented | routes/customerPayments.ts, routes/creditNotes.ts, routes/creditRefunds.ts, routes/retainerInvoices.ts |
Allocation, unapply/void, refunds, advances and GL/bank effects are represented. |
| Recurring billing and reminders | Implemented | routes/recurringInvoices.ts, routes/dunning.ts, routes/dunningPolicies.ts |
Template generation and escalation runs exist and are designed for scheduler invocation. |
| Customer portal and online payment | Partial | routes/portal.ts; Portal web page |
Token-scoped document access is present, but a payment-gateway-backed Pay action is not. |
Purchases and expenses
Section titled “Purchases and expenses”| Manual capability | Status | Implementation evidence | Finding |
|---|---|---|---|
| Vendors, bills and bill payment | Implemented | routes/bills.ts, routes/vendorPayments.ts, routes/vendorCredits.ts |
AP documents, settlement, credits, PDF vouchers and accounting effects are present. |
| Expenses and attachments | Implemented | routes/expenses.ts, routes/attachments.ts; expense web/Android flows |
Categorised expenses and receipt/file attachment storage exist. Receipt OCR is not implemented. |
| Purchase orders and conversion | Implemented | routes/purchaseOrders.ts; PO web/Android flows |
Approval/status flow and conversion to bills exist. Quantity-level partial billing remains less mature than QuickBooks’ documented partial-PO workflow. |
Banking, tax, inventory and operations
Section titled “Banking, tax, inventory and operations”| Manual capability | Status | Implementation evidence | Finding |
|---|---|---|---|
| Statement import, matching and rules | Implemented | services/statementParsers.ts, routes/bankStatementLines.ts, routes/bankRules.ts |
OFX/QIF parsing, de-duplication, matching and optional rule application are implemented. |
| Live bank feeds | Missing | No feed provider/connection implementation in banking routes | Users must upload files or enter transactions; nightly/direct institution feeds from the manuals are not available. |
| Bank reconciliation | Implemented | routes/bankReconciliations.ts; web and Android reconciliation screens |
Reconciliation lifecycle and reports are represented. |
| GST/tax | Partial | routes/taxCodes.ts, services/gstr.ts, report endpoints /tax-summary, /gstr-1, /gstr-3b |
Strong India-oriented tax calculation/reporting exists. Credentialed filing, e-invoicing IRN/e-way bills and the manuals’ Australian BAS/STP compliance journeys are not equivalent. |
| Inventory | Different by design | services/inventory.ts, services/stockLedger.ts, routes/stockAdjustments.ts; stock reports |
Quantity, reorder, valuation, COGS and stock movement are implemented using weighted-average costing. The QBO training baseline specifies FIFO. |
| Projects and billable time | Implemented | routes/projects.ts, routes/timeEntries.ts; project/time web and Android screens |
Time can be tracked to projects and invoiced through the ordinary invoice engine. |
| Budgets and budget vs actual | Implemented | routes/budgets.ts, /reports/budget-vs-actual; approval migration 40 |
Budget grids, reporting and optional approval gates are present. |
| Fixed assets, revenue recognition and approvals | Implemented beyond baseline | fixed-asset, revenue-recognition and approval route groups/UI | These enterprise controls exceed the core workflows described by the supplied SMB guides. |
Reporting and channels
Section titled “Reporting and channels”| Manual capability | Status | Implementation evidence | Finding |
|---|---|---|---|
| Core financial reports | Implemented | routes/reports.ts |
Trial balance, P&L, balance sheet, cash flow, GL, day book and AR/AP aging are available. |
| Operational and tax reports | Implemented | 17 mounted report endpoints; report pages in accountsui/src/pages/reports |
Sales, expenses, stock, budget and GST reports cover the main operational needs. |
| Report customisation, scheduling and breadth | Partial | Date/comparison/dimension filters and CSV export exist | The manuals advertise 40–65+ reports, favourites, custom and scheduled reports. WorkSquares has a smaller curated set and no equivalent report scheduler/designer. |
| Mobile accounting | Implemented, scoped | Android screens for invoices, bills, expenses, banking/reconciliation, projects/time, approvals, reports and stock | The native app covers high-value field and review workflows, but not every web administration surface. |
| Ecosystem/add-ons | Partial | WorkSquares suite integration and webhook workflows exist | Internal CRM/CPQ/shared-data integration is an advantage, but there is no QuickBooks-style public app marketplace in this implementation. |
Payroll comparison
Section titled “Payroll comparison”| Employment Hero / QBO payroll requirement | Status | Finding |
|---|---|---|
| Employee payroll profile, tax and bank details | Missing | Accounts users/contacts are not payroll employees. |
| Pay categories, schedules and automated pay runs | Missing | No payroll domain, route, schema or UI was found. |
| Leave accrual and employee requests | Missing | Time entries are billable project time, not attendance/leave payroll records. |
| Pay-run calculation, warnings and finalisation | Missing | No gross-to-net calculation or payroll finalisation workflow exists. |
| Payslips and employee payroll portal | Missing | The customer portal does not provide employee payroll access. |
| Superannuation and payment automation | Missing | No super fund, contribution or clearing-house integration exists. |
| STP/ATO events and payroll reports | Missing | GSTR reports are accounting tax reports, not Australian payroll compliance. |
| Payroll journal export to the GL | Missing | Journals can be posted manually, but there is no payroll subledger that generates them. |
Payroll verdict: 0 of the eight end-to-end payroll capability groups is implemented. Payroll must be explicitly excluded from product claims until a separate payroll service or integration is delivered.
Engineering and verification evidence
Section titled “Engineering and verification evidence”The implementation has meaningful automated coverage rather than only route scaffolding:
- Backend: 38 TypeScript test files across unit and integration suites.
- Web: 63 Playwright specification files plus TypeScript/Vite build checks.
- Android: model/serialization tests and dedicated screens for major accounting workflows.
- Database: schema linting plus migrations through
42-gl-balance-view-base.sql. - Multi-currency:
tests/integration/baseCurrencyReports.test.tsasserts that a USD 100 posting at INR 83 reports INR 8,300 across primary report families.
This evidence raises confidence in the accounting engine, but it does not by itself prove operational readiness. Production email/storage configuration, external compliance credentials, backup/restore, monitoring, load behaviour and a clean-environment deployment rehearsal require environment-specific acceptance.
Release blockers and recommended sequence
Section titled “Release blockers and recommended sequence”P0 — before broad production release
Section titled “P0 — before broad production release”- Create and test a versioned fresh-database baseline; prove empty-environment deployment, rollback and restore.
- Decide the payroll strategy: build it, integrate a payroll provider, or publish payroll as an explicit non-goal. Never market current time tracking as payroll.
- Add migration tooling for customers/vendors, chart of accounts, items, opening AR/AP, opening journals and reconciliation state, with dry-run validation and a signed cutover report.
- Run accountant-led golden-ledger acceptance across sales, purchasing, credits, inventory, tax, FX, period close and reconciliation.
P1 — required for QuickBooks-class day-to-day parity
Section titled “P1 — required for QuickBooks-class day-to-day parity”- Add a supported bank-feed provider with consent, refresh, error recovery and duplicate protection.
- Complete gateway-backed invoice payment and portal Pay, including webhook idempotency, fees, refunds and reconciliation.
- Implement realised FX gain/loss on settlement.
- Complete India compliance integrations (IRN/e-invoicing, e-way bills and credentialed filing) for the intended market.
- Add guided master/opening-data import and attachment/receipt OCR.
P2 — product breadth
Section titled “P2 — product breadth”- Add report favourites, saved custom views, scheduling and delivery history.
- Expand report breadth based on customer demand rather than matching the manuals’ report count mechanically.
- Decide whether inventory must offer FIFO in addition to weighted average.
- Publish a supported integration API/webhook catalogue and operational runbooks.
Final assessment
Section titled “Final assessment”Approve Accounts for a tightly scoped accounting pilot; do not approve it as a full QuickBooks Online + Employment Hero replacement. The ledger and operational accounting implementation are materially stronger than a prototype and several enterprise capabilities exceed the supplied SMB baseline. The decisive deficits are product-scope deficits—not cosmetic ones: payroll, connected banking, online payments, migration tooling and reproducible greenfield deployment.
Reassess the replacement verdict after the P0 items are independently demonstrated and after at least one representative business completes parallel books and a period close without unreconciled differences.
What changed since the audit
Section titled “What changed since the audit”Everything above is the 21 July 2026 report as filed. This section is the delta, re-verified against the repositories on 24 July 2026. It does not restate the verdict — it records where the evidence has moved and where a row above should now be read with a qualifier.
Evidence counts
Section titled “Evidence counts”- Migrations. The report cites schema “migrations through
42-gl-balance-view-base.sql”. The tree now carries 45 migration files,02through46:43-common-masters.sqland44-common-master-seed.sql(the Common Masters lookup engine) plus the two RBAC grants described below. - Backend tests. The 38 TypeScript test files are now 43 (23 unit, 20 integration) — the additions cover login lockout, Common Masters, the dashboard monthly series, user profiles and the projects route contract.
- Web tests. Still 63 Playwright specification files. Unchanged.
- Report endpoints. The “17 mounted report endpoints” figure was an undercount
on the day it was written, not a number that has since grown:
routes/reports.tsmounted 18 report endpoints on the audit date and mounts 18 today — trial balance, P&L, balance sheet, AR aging, AP aging, dashboard, budget vs actual, tax summary, GSTR-1, GSTR-3B, stock valuation, stock reorder, general ledger, day book, sales by item, sales by customer, expenses by category and cash flow. No report endpoint has been added or removed since the audit.
Inventory and FIFO
Section titled “Inventory and FIFO”The Different by design inventory row and P2 item 3 (“decide whether inventory must offer FIFO in addition to weighted average”) are now answered — outside this application. The separate WorkSquares Inventory product shipped its stock core on 22 July 2026 with both FIFO cost layers and rolling weighted average, and it posts its stock movements into this ledger through the live Accounts journal API: a receipt or an adjustment made there lands here as a posted journal, and the Inventory Asset balance on this trial balance ties to the Inventory valuation.
Accounts’ own built-in stock ledger is still weighted-average only, so the row above remains accurate for Accounts alone — the FIFO requirement is met at suite level, by a different application.
RBAC — the clean row needs a qualifier
Section titled “RBAC — the clean row needs a qualifier”The foundation row is right that the middleware fails closed in production. The seeded role data had drifted: route groups that shipped after the migration-26 role backfill were never granted to the standard Accountant and Tester roles, so those roles hit 403s and hidden navigation on features they legitimately own. Two such gaps were reported against the live app after this audit and fixed by migration:
- An Accountant could open a project but got a 403 on its time entries. Fixed by
migration
45, which grantstime-entries:read/:write. - Settings → Common Masters was invisible to non-admin roles. Fixed by migration
46, which grantscommon-masters:read/:write.
The same drift remains for six groups in all — estimates, sales-orders,
price-lists, bank-reconciliations, audit-log and auto-numbering — and is
tracked separately. Read the clean RBAC row as the gate works, not the grants
are complete. Security covers what that means
when you assign a role.
Post-audit hardening
Section titled “Post-audit hardening”Login now has brute-force protection: five consecutive failures lock the account for
a window (defaults of 5 attempts / 15 minutes, both environment-overridable), the
lock is evaluated before the password so it holds against a correct one, a clean
sign-in clears the counter, and a locked account answers 429 ACCOUNT_LOCKED.
The mobile gap has widened, not narrowed
Section titled “The mobile gap has widened, not narrowed”The Android application has not changed since 15 July 2026 — before this audit ran. Every change listed above is server- and web-side. The Implemented, scoped mobile row must not be read as web/mobile parity, and the gap is larger now than on the audit date.
Still true
Section titled “Still true”Re-checked and unchanged: no payroll domain of any kind, no live bank-feed provider, no payment gateway behind the portal Pay journey, no guided master/opening-data import, and no realised FX gain/loss on settlement (revaluation remains unrealised only). The four material gaps in the executive verdict all stand.