Skip to content

Implementation verdict

Audit date21 July 2026 Code reviewedAPI · Web · Android Reference set4 supplied manuals

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.

Accounting corePilot readyControlled production scope
QuickBooks parityPartialKey integrations outstanding
Payroll coverageNot availableSeparate product required
Overall decisionConditional goAccounting pilot only

The replacement verdict remains no-go for general QuickBooks migration because four material product gaps remain:

  1. 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.
  2. Banking is file-based, not connected. OFX/QIF import, matching, rules and reconciliation exist, but there is no live financial-institution feed.
  3. 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.
  4. 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.
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.

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.

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).
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 4142; 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.
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.
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.
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.
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.
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.

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.ts asserts 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.

  1. Create and test a versioned fresh-database baseline; prove empty-environment deployment, rollback and restore.
  2. 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.
  3. 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.
  4. 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”
  1. Add a supported bank-feed provider with consent, refresh, error recovery and duplicate protection.
  2. Complete gateway-backed invoice payment and portal Pay, including webhook idempotency, fees, refunds and reconciliation.
  3. Implement realised FX gain/loss on settlement.
  4. Complete India compliance integrations (IRN/e-invoicing, e-way bills and credentialed filing) for the intended market.
  5. Add guided master/opening-data import and attachment/receipt OCR.
  1. Add report favourites, saved custom views, scheduling and delivery history.
  2. Expand report breadth based on customer demand rather than matching the manuals’ report count mechanically.
  3. Decide whether inventory must offer FIFO in addition to weighted average.
  4. Publish a supported integration API/webhook catalogue and operational runbooks.

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.

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.

  • Migrations. The report cites schema “migrations through 42-gl-balance-view-base.sql”. The tree now carries 45 migration files, 02 through 46: 43-common-masters.sql and 44-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.ts mounted 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.

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.

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 grants time-entries:read/:write.
  • Settings → Common Masters was invisible to non-admin roles. Fixed by migration 46, which grants common-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.

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 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.

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.