Accountant Workflow
Moonlight is a financial control system. Data arrives from external sources (SDK, Telegram bots, Ingest API). The accountant does not create entries. They verify, categorise, reconcile and clear operational exceptions.
The accountant's work spans two sections of the application: Entries (data verification) and Accounting (categorisation, exception handling and sync to an external accounting system).
This workflow describes how Moonlight is operated by the accountants in pilot setups today. Moonlight is in active development, so some buttons and screens are being polished, and a few labels in your build may differ slightly from the screenshots and step names below.
Overview
Stage 1: Entries — Data Verification
The accountant opens the Entries section and works through incoming records.
Daily routine
-
Filter entries — by date range (current month), status, type (Income/Expense), "Not Reconciled" to see what still needs attention.
-
Check documents — each entry needs supporting documents:
- Basis (invoice, contract, purchase order)
- Payment Proof (bank transfer confirmation, receipt)
- If documents are missing, use Request Document to ask the responsible person to upload them.
- When uploaded, Approve or Reject each document.
- The completeness indicator shows whether all required documents are present.
-
Verify data — check that description, amount, date, and parties are correct.
- If wrong, use Edit to fix the entry.
- If the entry is a duplicate or the operation was cancelled, use Void.
- Use the Activity Timeline in the entry detail page to understand document actions, review events, sync problems, notes, and related entries in one place.
-
Add notes — leave comments for yourself or colleagues: "verified against bank statement 2026-03-15", "waiting for vendor confirmation".
-
Mark Reconciled — after verifying the entry against a bank statement or external records, mark it as reconciled. Use the "Not Reconciled" filter to track what still needs verification.
-
Send to Accounting Review — once the entry is verified and reconciled, send it to the accounting review queue. Select a Connection (QuickBooks, another provider, or Manual).
Exceptions
| Action | When to use |
|---|---|
| Void | Entry is a duplicate, data error that cannot be fixed, or the operation was cancelled. Permanently marks the entry as VOIDED. If synced, void propagates to the external system. |
| Refund | A customer returned money. Creates a new reverse entry and voids the original. The refund entry goes through the same review cycle. |
| Reimburse | An employee paid from personal funds. Creates a new reimbursement entry linked to the original expense. Also goes through the full cycle. |
Export
Use Export CSV to download entries with current filters applied — for your own spreadsheets, audits, or management reports.
Stage 2: Accounting — Categorization and Sync
The accountant switches to the Accounting section to process the review queue, exception queues, and synchronization. The section has eight tabs: Dashboard, Reviews, Exceptions, Operations, Chart of Accounts, Connections, Mappings, and Periods.
Dashboard
The Dashboard tab provides a high-level overview of the current accounting state. It is read-only — no actions are performed here, only monitoring.
Review Queue summary — shows the number of reviews in each status:
| Counter | What it means |
|---|---|
| Queued | Entries waiting to be picked up by an accountant |
| In Review | Currently being reviewed (assigned to someone) |
| Approved | Reviews that have been approved and are ready for sync |
| Rejected | Entries rejected during review |
| Changes Requested | Entries sent back for corrections |
Sync Status summary — shows the number of sync records in each status:
| Counter | What it means |
|---|---|
| Pending | Sync initiated but not yet completed |
| Synced | Successfully pushed to the external system |
| Failed | Push failed — check error details, will auto-retry |
| Stale | Entry was modified after sync — needs re-push |
| Conflict | Data conflict between systems — requires manual resolution |
Connections list — shows all configured connections with their provider type, sync mode, active/inactive status, and last sync date. If no connections are set up, a prompt directs the user to the Connections tab.
Use the Dashboard to quickly assess workload (how many reviews are queued), spot problems (failed syncs, conflicts), and verify that connections are active.
The dashboard also includes an Operational Exceptions section with counts for failed syncs, stale syncs, conflicts, requested documents, unreconciled entries, rejected reviews, and change requests.
Review queue
The Reviews tab shows all entries awaiting accounting review.
| Action | What it does |
|---|---|
| Take | Assign the review to yourself. Status changes from QUEUED to IN_REVIEW. |
| Approve | Approve the entry and assign an accounting category from the Chart of Accounts (e.g., "Office Supplies" under Expenses). This determines which account the entry maps to in the external system. |
| Reject | Reject with a note explaining what's wrong. The entry returns to the Entries section for rework. |
| Request Changes | Ask for specific changes with a note. The entry returns to Entries. |
| Batch Approve / Reject | Select multiple reviews and approve or reject them at once. |
Exceptions
The Exceptions tab is the accountant's operational workbench for degraded or blocked records.
Typical queues:
- Failed Syncs — records that could not be pushed to the external accounting system
- Stale Syncs — entries modified after a successful sync
- Conflicts — sync records requiring manual resolution
- Awaiting Documents — entries with requested but missing documentation
- Unreconciled Entries — entries still waiting for external verification
Use this tab to work exception queues directly inside Moonlight instead of reconstructing them from generic lists.
Operations
The Operations tab is a lighter inbox for follow-up work:
- requested documents
- changes requested by reviewers
- rejected reviews requiring correction
This is useful when accountants and operational staff share responsibility for fixing records.
What happens after Approve
Depends on the Connection's sync mode:
| Sync Mode | Behavior |
|---|---|
MANUAL | No external system. Entry is approved and stays in Moonlight. Accountant uses CSV export for their own records. |
MANUAL_PUSH | Accountant manually triggers push to the external system for each approved entry. |
AUTO_PUSH | Entry is automatically pushed to the external system immediately after approval. |
BIDIRECTIONAL | Auto push + periodic pull from the external system. |
Chart of Accounts
The Chart of Accounts tab manages accounting categories used during review approval:
- Categories have types: ASSET, LIABILITY, EQUITY, REVENUE, EXPENSE
- Hierarchical structure (parent/child)
- Can be created manually or pulled from an external system (e.g., QuickBooks)
- Each category can have external mappings per provider
Connections
The Connections tab manages links to external accounting systems:
- QuickBooks (Intuit) — full push/pull with OAuth2
- Manual — no external system, review-only workflow
- Custom providers — implement the
AccountingProviderinterface for any system
Each connection is configured with:
| Setting | Description |
|---|---|
| Sync Mode | MANUAL, MANUAL_PUSH, AUTO_PUSH, or BIDIRECTIONAL |
| Require Review | Whether entries must go through the review queue before sync |
| Require Completeness | Whether entries must have all documents approved before sync |
| Project Routing | Which projects' entries sync through this connection |
Available actions per connection:
| Action | Description |
|---|---|
| Pull Chart of Accounts | Import categories from the external system |
| Queue Entries for Review | Backfill — queue all existing entries that don't have a review yet |
| Activate / Deactivate | Enable or disable the connection |
Mappings
The Mappings tab links Moonlight data to external system entities:
- Party Mappings — which Moonlight party corresponds to which Vendor/Customer in the external system. Select a connection, then create mappings between Moonlight parties and external IDs (Vendor/Customer type + external name).
Tax Mappings are planned but not yet available in the UI. Tax rate mappings can be configured via the API (/accounting/mappings/taxes).
Periods
The Periods tab manages accounting periods:
- Create periods (e.g., "Q1 2026", "March 2026")
- Close a period to prevent changes to entries within that date range
- Reopen if corrections are needed
Connection between Entries and Accounting
| Action in Entries | Effect in Accounting |
|---|---|
| Send to Review | Creates a Review in QUEUED status in the review queue |
| Edit entry while in review | Review is automatically invalidated (reset to QUEUED), needs re-review |
| Void entry | Void propagates to the external system if synced |
| Refund entry | New refund entry is created and goes through the full review cycle |
Working without an external system
If no external accounting system is connected (MANUAL mode):
- Entries arrive from external sources
- Accountant verifies data and documents in the Entries section
- Marks entries as reconciled after checking against bank statements
- Sends to Review with a Manual connection
- Approves with a category for internal classification
- Uses Export CSV to transfer data to their own accounting system
The full review workflow still applies — the only difference is that no automatic sync happens.
Typical daily checklist
- Open Entries, filter by current month + "Not Reconciled"
- For each entry: check documents, verify data, add notes, mark reconciled
- Send verified entries to Accounting Review
- Switch to Accounting > Reviews tab
- Take reviews from the queue, approve with category (or reject/request changes)
- Check Dashboard for sync status — resolve any failed or conflicting syncs
- At month end: Export CSV for reporting, Close Period when finalized
Related Pages
- Accounting Review — review statuses and lifecycle
- Accounting Integration — sync modes and provider configuration
- Entries — entry statuses and structure
- Completeness — completeness rules checked during review