For accounting firms
A real double-entry company file for every client. Payroll that computes to the cent. Money that moves on your own ACH, under your own brand — and a seat for each client so they do the daily work while you review and close.
No card. $19 a client a month; payroll adds $20 a client and $6 an employee.
Most firms run this stack. Every one of them is priced per client, and none of them talks to the others without an export.
Every client scored on the state of their books: uncategorised lines, money parked in suspense, unreconciled accounts, close status, what is due. Ranked by what is actually wrong.
Chart of accounts, journal, trial balance, period lock. Bank feeds with rules that learn from your corrections. Invoices, bills, approvals, aging, statements, sales tax, fixed assets.
Pub 15-T percentage method, FICA to the wage base, additional Medicare, FUTA with the state credit, SUTA at your client's assigned rate. Every figure on a stub carries a trace saying how it was derived.
They invoice their customers, snap receipts, explain a charge, approve a bill, sign off on payroll. It lands in the ledger you are closing — no import, no second system.
941, 940, W-2 and W-3, 1099-NEC — computed from the pay runs themselves, never re-keyed, with the deposit calendar from your lookback period.
Logo, colour, type, domain, sender, footer and templates. A firm trading under more than one name gets more than one brand, assigned per client.
Gusto holds the money. Bill.com holds the money. We do not. Payroll and collections originate on your own ACH — your originator agreement, your exposure limits, your credentials — and the platform never appears in the funds flow. Nothing your client sees carries our name.
Nothing originates. We produce the register and the amounts; you pay from your own portal. The default, because bank paperwork takes weeks and you should be useful in week one.
We write the origination file — headers, entry details, control records, hash totals — and your bank takes it. Tax deposits carry a TXP addenda.
Your own account carries invoice collection from your clients' customers. It is not a payroll origination rail: no TXP addenda, and no pay-run adapter ships for it yet.
Dwolla, Modern Treasury, Column, Increase, Moov — whatever you already use.
Returns are not notifications — they have consequences, and the engine applies them: R01 reverses the run and reopens the liability, a bad account moves that employee to a cheque, a revocation stops anything else originating. Impound is available per client, with a real per-client trust sub-ledger that reconciles daily. And originating on your clients’ behalf makes you a Third-Party Sender under the NACHA rules — your bank has to register you, and we tell you so during setup rather than after.
The weekly sweep is the reason a partner keeps this open: which client has a problem, ranked, with the reason and the journal lines behind it.
Everything here has a deterministic core that works with no model configured — a bookkeeping engine that stops when an API key expires is not a bookkeeping engine.
Each client’s documents live in their own retrieval namespace, and the access check runs inside the index query — never as a filter applied afterwards, which is the difference between isolation and a hopeful convention. Identifiers are encrypted at rest, write-only through the API, and displayed as the last four digits.
Staff, client and AI actions land in one audit trail.
A reviewer reads, staff book, a manager closes and approves, a partner configures the rails.
Your AI policies and the kill switch reach into pay runs and posted entries.
A client with no activity in a month is not counted. Mark it up to your own clients however you like — your margin shows in settings before you save a price.
Books, reporting, the portal seat, and Quill.
The engine, the filings, the deposit calendar.
Contractors counted the same way.
Volume bands at 25, 50 and 100 clients. Portal seats included.
The last three rows are the honest ones. A firm should know them before it moves a single client.
| Accounting Firm | The usual stack | |
|---|---|---|
| A real double-entry file per client | ||
| Payroll engine with the filings | Gusto, separately | |
| Money moves on YOUR bank | the vendor holds the funds | |
| Your brand end to end, several brands | their brand, their portal | |
| Client does the day-to-day in your portal | the client logs into theirs | |
| Recurring work and capacity | Karbon, separately | |
| AI that reads every client weekly | ||
| All fifty states of withholding | we ship 11 today, and refuse the rest out loud | |
| Deep inventory and manufacturing | light inventory only | |
| Two decades of integrations | we are new |
Your client, and you to the extent you have agreed with them. We compute the amounts, prepare the returns and track the deposits; filing on a client's behalf needs a Reporting Agent authorization on Form 8655, which is your paperwork with the IRS.
Florida first, then the eight other states with no wage withholding, then Pennsylvania and Illinois. Everywhere else the engine refuses the pay run and names the gap. Federally we carry 2025 and 2026, and every threshold is checked against the schedule Publication 15-T actually prints. A wrong withholding number is worse than an honest one you can plan around.
No. Origination is on your own ACH, and impounded funds sit in your own clearing account with a per-client sub-ledger that reconciles daily. We never touch a dollar.
A full import with history: chart of accounts, customers, vendors, items, every transaction with its native type, open receivables and payables — and payroll history, without which every wage base restarts from zero. The imported trial balance is compared to QuickBooks' own at every period end, and any differences are named.
Their file is archived, never deleted — retention rules outlive the engagement — and their data exports.
Only if you leave the attribution toggle on. Turn it off and every portal page, invoice, pay stub, report and email is yours.