The platform

One core. The whole business on it.

How Root works underneath. Point of sale, accounting, customers, and AI read and write one database, with no integration layer between them, so a single charge writes one record that posts to the books, updates the customer, and moves analytics at once. This is the foundation the whole business runs on.

The connected flow

One action
moves everything.

A charge anywhere, at the bar, the spa, retail, or a room, becomes one order record. From that single record, four things happen at once.

Nothing to wire together. No nightly sync. Every event is idempotent, so a retry never double-counts.

One charge · spa · $180.00

1 · It posts to the general ledger

The order becomes a balanced journal entry. Debits equal credits, validated to the cent, the instant the charge clears.

2 · It updates the customer

The profile records the visit and the spend. Any house-account or AR balance moves with it, in the same record.

3 · It flows into live analytics

Revenue, covers, and margin update as the charge lands. There is no overnight roll-up and no export to wait on.

4 · It is watched by AI

Root AI reads the same live record and flags anything that looks wrong, the moment it happens rather than at month-end.

The folio

Every revenue center,
one folio.

For multi-outlet operations, a charge across food and beverage, spa, retail, activities, or a room posts to one guest or member folio. Drill it by name, by room, or by member number. In real time, never an overnight batch.

Folio · room 412 · A. Reyes
Add a charge from any outlet. Every one lands on this single folio.
Folio balance$0.00
Each charge posted a balanced entry to the books ✓

The differentiator

Real books,
built in.

Root keeps a true double-entry general ledger. Every transaction posts a balanced journal entry, with debits equal to credits, validated to the cent. Trial balance and period close happen inside the system, not in a tool you export to.

Accounts payable and accounts receivable run as subledgers. Bank reconciliation lives here too. Gift cards are held as a liability until redeemed, then recognized as revenue. A tax engine applies effective-dated rates, so a rate change never leaves a double-count or a gap.

No QuickBooks. No Restaurant365. No month-end spreadsheet.

Accounting· Trial balance, MayBalanced ✓
AccountDebitCredit
Sales revenue1,284,902
Cost of goods436,120
Gift card liability52,840
Accounts receivable18,305
Debits = credits$2.41M ✓
General ledgerEvery transaction, a balanced entry
Trial balance & closePeriod close inside the system
Accounts payableBills, terms, payment runs
Accounts receivableHouse accounts, invoicing, aging
Bank reconciliationMatched against the ledger
Revenue recognitionGift cards held, then recognized
Tax engineEffective-dated rates, no gaps
Audit trailAppend-only, who changed what

Foundations

Built to be trusted.

The platform holds money, so it is built the way a financial system has to be: tenant-isolated rows, idempotent events, an append-only audit trail, and amounts stored as integer cents. These are not features. They are the floor.

Per-business data isolation

Every record is scoped to its tenant by row-level security. One business cannot read or touch another's data.

Idempotency first

A retried or duplicated event is a no-op. The books never double-count, no matter what the network does.

Complete audit trail

Every change is recorded append-only and immutable: who changed what, and when. Nothing is overwritten or erased.

Exact integer cents

Money is handled as exact integer cents, never floating point. A fraction of a cent cannot appear or disappear.

Card data never lands here

Payment card numbers are tokenized at the point of capture. They never touch Root's servers, so there is nothing to leak.

Credentials encrypted

Stored credentials are encrypted with AES-256, at rest, so a copy of the data is not a copy of the keys.

Always-on integrity

The system
checks its own work.

Root runs more than thirty background reconcilers and detectors, continuously. The platform is always proving its own numbers are right, so a problem surfaces the day it starts rather than the day you find it.

Bank reconciliation· Operating · MayBalanced ✓
Auto-matched
142 / 146
Cleared
$284k
To review
4
Card batch · Jun 24
Deposit · $12,840
Matched ✓
Sysco Foods
Check #4021 · $4,820
Matched ✓
ACH · unidentified
Credit · $310
Review
Statement = books$0.00 ✓
Bank-reconciliation staleness Ledger exception triage AR drift detection Chart-of-accounts coverage Cash-in-transit aging Gift-card liability checks Tax-rate boundary checks Duplicate-charge detection Unbalanced-entry alerts 30+ more, always running

Security and compliance

Handled the way
it should be.

EncryptionIn transit and at rest
SOC 2In progress
GDPRData export and redaction
Sensitive actionsRequire dual approval
Customer dataNever used to train AI models

A day on Root

From open to close,
on one system.

No switching tools, no end-of-day stitching. The first order at open and the bank match at close write to the same ledger.

7:00 · Open

The first orders ring in. The books open themselves, with nothing to reconcile from yesterday, because last night already closed.

12:30 · The rush

Two stations work one check without colliding. The kitchen display routes each course, and every tender posts to the ledger as it lands.

16:00 · A quiet regular

Root notices a regular has gone quiet and drafts a win-back message. You read it, tap approve, and move on.

21:00 · Close

Tips are reconciled, the deposit is matched, and the day is squared away without a spreadsheet.

Month-end · nothing to dread

There is no scramble. The books have been closing themselves all month, so the period is already done.