Quick start — document to upload-file to reconciled
A narrative walkthrough of the bookkeeping flow from the staff side. By the end you'll have moved one client through one full month — documents in, journal batch reviewed, upload file generated and posted to the accounting platform, bank statement reconciled, unreconciled items resolved with the client. Every section links into the matching how-to runbook for click-by-click detail and into the troubleshooting page that covers the most common stumble at that step.
The story below follows one client end to end. We'll use Mason Industries Pte Ltd — a hypothetical 12-staff industrial supplies trader on your firm's portfolio. Mason runs Xero with SGD as base currency and a SGD 50 materiality threshold. They send roughly 60 invoices and receipts per month through a mix of WhatsApp photographs and a shared Google Drive folder. Anchor the steps on whichever client you're actually running; the surfaces are identical.
NOTE
If you're a new staff user finding your way around, start with the dashboard tour first. The tour names every sidebar surface this page sends you to.
Cast of characters
| Role | Plays |
|---|---|
| Platform Admin | Sets up the client record once — chart of accounts, vendor master, ingestion channels, materiality threshold |
| Bookkeeper | Reviews entries, runs reconciliation, generates upload files day to day |
| Senior Accountant | Overrides flagged entries, signs off on exceptions, manages chart-of-accounts changes |
| Client contact | One contact at Mason who receives the unreconciled-items link and uploads supporting documents |
0. Confirm the client is configured
A bookkeeping client needs:
- Enabled products including Bookkeeping
- A bookkeeping config with the target accounting platform (Xero / QuickBooks / Zoho / Tally), base currency, and reviewer email
- A materiality threshold in the firm's reporting currency — Mason ships at SGD 50
- A chart of accounts with keyword triggers for auto-classification
- A vendor master for HIGH-confidence auto-classification (optional but recommended)
- One or more ingestion channels for WhatsApp / Drive / SharePoint / Dropbox (optional — manual upload always works)
Open Clients in the staff dashboard sidebar, click into Mason. The setup health panel shows green when the essentials are in place. Anything missing is the first thing to fix before you ingest documents.
→ Onboard a bookkeeping client for the cold-start path. → Configure chart of accounts and keyword triggers → Add vendors to vendor master → Set up an ingestion channel
1. Where documents come from
Documents arrive through one of four paths:
- Manual upload — drag a file onto the Mason client detail page. Useful for one-offs and for documents the client hands you in person.
- WhatsApp — Mason's accounts assistant photographs receipts and sends them to a configured WhatsApp number; the platform polls inbound messages and ingests automatically.
- Google Drive / SharePoint / Dropbox folder sync — the platform polls a configured folder on a schedule (default hourly) and ingests new files as they appear.
- Email drop (future) — not in MVP.
Whichever path the document takes, it hits the OCR pipeline (Vision + Claude in production) and the classify-and-draft worker turns it into a journal entry — debit + credit, with a chart-of-accounts code chosen by:
| Priority | Match | Confidence | Default entry status |
|---|---|---|---|
| 1 | Vendor master exact match | HIGH | DRAFT — usually safe to approve |
| 2 | Chart-of-accounts keyword match | MEDIUM | DRAFT |
| 3 | Keyword without a vendor match | LOW | FLAGGED with KEYWORD_MATCH_ONLY |
| 4 | Nothing matched | UNCLASSIFIED | FLAGGED with REVIEWER_ATTENTION_REQUIRED |
Mason's SP Group electricity bill matches the vendor master exactly → HIGH confidence, DRAFT. A new vendor — MetalCo Trading Pte Ltd — has no entry in the vendor master and no keyword in the chart of accounts → FLAGGED, awaiting review.
→ Upload a document manually → Set up an ingestion channel → A document didn't appear in any batch when something you sent isn't showing up. → Vendor-master match isn't firing when a vendor you added isn't classifying.
2. Review the journal batch
Open Journal batches in the sidebar. Mason's open April-2026 batch shows up at status DRAFT. Click in.
You'll see one entry per ingested document, each with a status, a confidence band, and any flags. A typical Mason batch by mid-month:
| Reference | Status | Confidence | Flags |
|---|---|---|---|
INV-SPG-202604 (SP Group electricity) | APPROVED | HIGH (vendor exact) | none |
INV-METALCO-04221 (MetalCo Trading) | FLAGGED | UNCLASSIFIED | REVIEWER_ATTENTION_REQUIRED, NO_VENDOR_MATCH |
UBER-20260408-0001 (Uber trip) | FLAGGED | MEDIUM (keyword) | KEYWORD_MATCH_ONLY |
FIGMA-SUB-202604 (Figma USD subscription) | DRAFT | HIGH (vendor exact) | NON_BASE_CURRENCY |
For each entry you can:
- Edit — reassign the debit / credit account, fix the date, change the amount, override the description.
- Approve — accept it as-is. Status moves to
APPROVED. The audit log captures who approved and when. - Reject — remove the entry from the batch with a reason. Status moves to
REJECTED. - Escalate — flag for senior review. Status moves to
ESCALATED.
A FLAGGED entry can be cleared to APPROVED only by a Senior Accountant or Platform Admin via the Override journal flag action — bookkeepers can edit and re-approve drafts but can't clear a flag. This is by design: low-confidence classifications need a senior eye before they enter the upload file.
NOTE
When a journal batch first transitions to UNDER_REVIEW, the platform sends a Journal batch ready for review email to the configured reviewer.
- Subject: Journal batch ready for review: Mason Industries Pte Ltd (2026-04-01 → 2026-04-30)
- Body: entry count, flagged count, and a single Review batch button into the batch.
When every entry in the batch is APPROVED or REJECTED, the batch advances DRAFT → UNDER_REVIEW → APPROVED. While it sits in UNDER_REVIEW, no fresh DRAFT entries can enter — the next ingested document spills into the next month's batch.
→ Review a journal batch → Override a flagged journal entry — Senior Accountant only.
3. Generate the upload file
Mason's batch is now APPROVED. Click Generate upload file. You get a platform-specific artifact:
- Xero → CSV
- QuickBooks → IIF or CSV depending on edition
- Zoho → CSV
- Tally → XML
Mason runs Xero, so you get a CSV. Download it, batch moves to EXPORTED.
Now you manually post the file into Xero — the platform doesn't push via API in MVP. Confirm the upload landed, return to the batch, click Mark closed. Batch moves EXPORTED → CLOSED and is sealed.
4. Bank reconciliation — upload the statement
Open Bank reconciliations in the sidebar (or the same surface from inside Mason's client detail). Click Upload bank statement and drop in Mason's UOB current-account statement for April — PDF or CSV.
The parser runs and produces a list of bank transactions. If parsing succeeds you see the run move to PENDING with parsed transactions ready for matching.
If parsing fails the statement lands in a parse-failed state and an exception event is logged. Common cause: the bank changed its export format. See Bank statement won't parse.
5. Run the matcher
Click Start reconciliation with the parsed statement. The run moves PENDING → MATCHING → AWAITING_REVIEW. The matcher pairs each bank transaction against the client's APPROVED journal entries:
- EXACT — date + amount + reference all align. Auto-confirmed on display, no human action needed.
- PROPOSED — amount + date within the run's date-tolerance window. Needs your confirmation.
- No match — creates an unreconciled item.
For Mason's April statement a typical result is something like:
- 28 EXACT matches (most recurring vendors hit this)
- 4 PROPOSED matches (timing differences, one FX-converted entry)
- 6 unreconciled (an ATM withdrawal, two customer payments without a matching invoice in the period, a small bank fee, and two transactions for which the supporting document hasn't reached you yet)
→ Run a bank reconciliation → Reconciliation matcher missed an obvious match when something you expected to match didn't.
6. Confirm proposed matches
Open the run detail. Walk through each PROPOSED row:
- The Uber trip — date is two days off because the bank settled later. Amount and reference are right. Confirm → flips to
CONFIRMED. The match counter increments. - The Figma USD subscription — bank shows SGD 101.25 against a journal entry for USD 75. The platform displays the FX arithmetic alongside the row. Confirm if the conversion is right.
- A coincidental amount match — two different vendors happened to invoice the same SGD amount in the same week. Reject the proposed match; the bank transaction falls back to unreconciled and you'll handle it via the client portal in the next step.
7. Dispatch unreconciled items to the client
Six items remain unreconciled on Mason's run. Click Dispatch to client. The platform creates a fresh portal session for Mason's configured contact and emails them.
- Subject: Action needed: 6 unreconciled bank items for Mason Industries Pte Ltd
- Body: the bank account reference, the period covered, the count and total value of unreconciled items, the link expiry, and a single Open the reconciliation portal button.
The run moves to AWAITING_CLIENT. The link expires in 48 hours; if it lapses without response, reissue from the run.
→ Dispatch unreconciled items to the client → Verify an email was sent if the client says nothing arrived.
8. Client portal — what they see
The Mason contact opens the link and lands on a stripped-down portal view: a list of the six transactions, each with two response options:
- Upload supporting — they attach a photo or PDF. The item moves to
CLIENT_RESPONDEDand feeds back into the classify pipeline so a journal entry is drafted just like any other ingested document. - No supporting document — they declare it with a short note. If the amount is above the materiality threshold, the item is flagged for senior review; if below, it can auto-resolve to a default account (typically a suspense or sundry expense line, configured per client).
The client portal doesn't show staff-side detail — no batch lifecycle, no chart of accounts, no audit log. It is designed so a non-accountant client contact can clear their queue in a few minutes from a phone.
The client can respond in multiple sittings — progress is saved automatically and the same link continues to work until expiry.
9. Resolve the exception queue
Once Mason's contact responds, items move to CLIENT_RESPONDED. As the staff reviewer, open Exception queue in the sidebar to see everything that needs your judgment, filtered by client or surfaced as a global queue:
- Pending with paired flagged entry — the bank line is small but the matched entry is
FLAGGED. Decide whether to clear or reject. - Client responded above materiality — the client said no supporting on a SGD 500 ATM withdrawal that exceeds Mason's SGD 50 threshold. You must classify and approve manually.
- Client uploaded supporting — a draft journal entry has been generated from the new document. Review it like any other entry.
For each item: pick a chart-of-accounts code (Drawings, Misc Expense, Suspense, etc.), add a note, click Resolve. The item moves to RESOLVED and its associated journal entry threads into the next month's batch (or the current one if it's still open).
→ Resolve client responses on unreconciled items
10. Complete the reconciliation
When every item is matched or resolved, click Complete reconciliation. The run moves to COMPLETE. The platform generates a reconciliation report — a PDF / xlsx summarising matched, proposed-confirmed, client-responded, and reviewer-resolved items. Both you and Mason's contact get a copy.
What you've just done
You've shipped Mason Industries through one full bookkeeping cycle: documents ingested through multiple channels, journal batch reviewed and approved, upload file generated and posted to Xero, bank statement reconciled, unreconciled items dispatched to the client and resolved on response. Every action is in the Activity log sidebar entry, and per-batch / per-run audit tabs are available on each detail page.
Where to go next
- Run a real flow — open Journal batches in the sidebar, pick the next client whose batch is approaching the cutoff, and follow this same arc.
- Run the payroll flow — Quick start — payroll.
- Understand the status machines — Journal batch · Journal entry · Reconciliation run.
- Read the SOP this flow implements — Bookkeeping SOP.
- See every email this flow sends — Notifications catalog.
Cheat sheet — what to do when X
| If… | Open… | Do… |
|---|---|---|
| OCR didn't extract a vendor | Batch detail | Override the entry's account code manually; add the vendor to the master so next month is HIGH confidence — see Add vendors |
| You can't approve a flagged entry | Batch detail | Senior Accountant must use Override journal flag — see Override a flagged journal entry |
| A document you sent didn't appear in any batch | Exception queue or client detail | See Document didn't appear — usually a channel-config or batch-state issue |
| Bank statement won't parse | Bank reconciliations | See Statement won't parse — usually a bank export-format change |
| Reconciliation matcher missed an obvious match | Run detail | See Matcher missed match — typically a date-tolerance or reference mismatch |
| Client portal link expired | Run detail | Reissue from the run — the previous link is invalidated, the client gets a fresh 48-hour one |
| Two PROPOSED matches contend for the same bank line | Run detail | Pick one to confirm; the other auto-falls-back to unreconciled |
| Materiality threshold seems wrong | Client detail → settings | The threshold lives on the client record — open Clients, edit Mason, update the materiality value |
| Vendor-master match isn't firing | Vendor master tab on client | See Vendor match not firing — usually a name normalisation or country-code mismatch |
| You took a wrong action | Activity log | Every state change is logged — see Recover from a mistake |