Document workspaces for bookkeeping teams
Client uploads need review.
WorkStorage operator view: all practices (tenants), usage, and billing overrides. Refresh reloads the tenant table, then scrolls here. Suspend, Activate, and Edit billing reload the table and scroll here too.
| Practice | Code | Status | Plan | Seats | Clients | Files | Storage |
|---|
No practices found.
Limit team members and read-only auditors to specific client folders. Members with no assignments have full library access. Auditors must be assigned folders and do not use a billable seat. Changing Account role saves immediately, refreshes the team directory and billing seat usage, and scrolls here. Click a client folder name to open it in the library, or Browse folder to run scoped practice search for that client tree. Refresh reloads the full team directory (pending, approved, folder access, billing), updates Folder grants, then scrolls here. Save access reloads the team directory and scrolls here (grant counts update on Approved team). Changing Team member or auditor reloads the grants list and scrolls to this panel.
Auditors can preview and download in assigned client folders only. They cannot upload, edit, or delete.
This member currently has access to the entire practice library. Check folders below to restrict access.
Give each client a secure link to drop files into a designated inbox folder (default: Client uploads). Links work without a staff login. When a client uploads, files appear in Client intake queue (banner at top of the hub when anything is pending). Use Review intake on a row to jump to that client in the queue. When files are waiting for review, use Search pending to open practice search on that inbox. Open inbox is available even when the upload link is off. Click the Pending count for the same search. Browse inbox scopes practice search to the uploads folder. Click Status (Active/Off) to search portal uploads in that inbox. Click Portal, Email, or Scan/API under Other channels to search other intake sources in the same inbox (not the portal link on this row). Refresh reloads upload links and pending counts, then scrolls here. Enable, Disable, and New link reload the table and scroll here too. Copy link scrolls here after a successful copy.
| Client folder | Inbox | Status | Upload link | Pending | Other channels |
|---|
No client folders yet.
When you stop serving a client, close their folder to block uploads and edits. Optionally archive files to cloud storage and set a retention date for your records. For closed clients, use Search archived to open practice search in that folder with Archived only. Browse folder runs scoped practice search on the client tree; Find duplicates opens the duplicate report. When intake or processing work is pending, use Search intake or Search processing (same as at-a-glance). Click the Files column to browse active clients or search archived files for closed clients. Click the Client folder name to open that folder in the library. Click Intake or Processing when work is queued (same as at-a-glance). Click Portal, Email, or Scan/API under Intake channels to filter practice search on that inbox by source. Open inbox is available when a client uploads folder exists. Use Retention due only or click the retention banner to focus on overdue, due-soon, or missing retention dates (the table scrolls into view after filtering). Refresh reloads the lifecycle table and retention banner, then scrolls here. Close client and Reopen reload the table and scroll here too.
| Client folder | Status | Files | Intake | Processing | Intake channels | Retention until |
|---|
No client folders yet.
After a client uses their portal upload link, new files appear here and the Client uploads need review banner shows at the top of the hub. Files from the client portal, email intake, and integration/scanner uploads (not staff hub uploads) stay Pending intake until an admin marks them reviewed. Use Search pending to open the inbox in practice search with that filter, or Open oldest to review the longest-waiting file in the workspace. Mark oldest reviewed clears just that file from the queue (then scrolls to this panel). Click the Client folder or Inbox name to open that folder in the library. Browse inbox runs scoped practice search on the client uploads folder. Click the Pending count to open practice search with the pending intake filter. Click the Oldest file name to open that document in the workspace. Click the Source label under the oldest file to filter practice search on that inbox by intake channel. Click Portal, Email, or Scan/API under Intake channels to filter practice search on that inbox by source. Refresh reloads the intake queue, processing queue, and reminder schedule, then scrolls here. Admins can also use Mark reviewed on a file in the library list; that scrolls here after reload.
| Client folder | Inbox | Pending | Oldest file | Intake channels |
|---|
No pending intake files.
Files awaiting ledger posting (processing_status=pending). Mark processed from the library or via the
integration API. Use Search pending on a row to open that folder in practice search with the
pending processing filter, or Open workspace to review the file.
Click the File name to open the workspace; click Client, Folder, or Source to navigate or filter practice search.
Browse folder scopes practice search to the client folder tree.
Use Mark processed on the row after posting to the ledger (then scrolls to this panel).
Admins can also use Mark processed on a file in the library list; that scrolls here after reload.
| File | Client | Folder | Source | Uploaded |
|---|
No pending processing files.
One summary for practice admins: pending intake, bookkeeping processing queue, and closed-client retention
due within 30 days. Copy for email or Send webhook when
PRACTICE_WEEKLY_DIGEST_WEBHOOK_URL is set (defaults to INTAKE_REMINDER_WEBHOOK_URL).
Schedule via POST /api/cron/practice-weekly-digest with X-Cron-Secret.
Copy weekly digest scrolls here after a successful copy; Send webhook does the same after notify.
Nudge your team when pending intake sits longer than the threshold. Copy a digest for email or call
Send webhook when INTAKE_REMINDER_WEBHOOK_URL is set (e.g. Power Automate on a schedule).
Rows with pending files include Search pending, Open inbox, Browse inbox, Open oldest, and Mark oldest reviewed (same as the intake queue above).
Click the Pending count to run the same search, or the Oldest file name to open the workspace.
Click the Source under the oldest file to search that channel in the inbox.
Click Portal, Email, or Scan/API under Intake channels to filter practice search on that inbox by source.
Save, Enable, and Disable reload the schedule and scroll to this panel; Send webhook does the same after notify.
Copy digest scrolls here after a successful copy.
| Client folder | Pending | Oldest file | Intake channels | Remind after (days) | Due |
|---|
Provision an integration client per client folder that can upload into the
Client uploads inbox (scanners, Power Automate, custom apps). See
docs/INBOUND_INTAKE.md in the repository for curl examples.
Refresh reloads email webhooks and integration API tables, then scrolls here.
Point your mail provider’s inbound parse / Power Automate flow at the webhook URL for each client. Attachments are stored in Client uploads. Optional sender allowlist (domains or emails). Use Search pending to review unreviewed intake in practice search. Click the Pending count for the same shortcut. Open inbox is available even when email intake is disabled. Click Email intake status to search email uploads in that inbox. Use Other channels to search portal or Scan/API uploads in the same inbox (not email on this row). Row actions that change settings reload the table and scroll to this panel. Copy URL scrolls here after a successful copy.
| Client folder | Email intake | Webhook | Pending | Other channels |
|---|
After provisioning, scanners and automation upload via the integration API into the client inbox.
Search pending opens practice search when files still need intake review.
Click the Pending count for the same shortcut.
Browse inbox scopes practice search to the client uploads folder.
Click the Integration name to search uploads from that client in the inbox (source_app matches the integration client name).
Use Webhooks in the row actions to manage outbound subscriptions.
Other channels links search portal or email uploads in the same inbox (not the integration client on this row).
Set up inbound and Rotate credentials scroll here after reload.
| Client folder | Inbox | Integration | Pending | Other channels |
|---|
No client folders yet.
Subscribe bookkeeping apps to document.created,
document.updated, and/or document.deleted for files in granted
folders (upload, portal, email intake, save-in-place, admin delete). Verify payloads with
the signing secret (X-Office-Signature). Folder scope is clickable when set to a single folder.
Use Browse folder on scoped subscriptions or deliveries to open practice search.
Use Deliveries to review attempts and open the related file or folder.
Idempotency keys lists upload dedupe mappings with links to each file; opening the list or Release on a row scrolls here after reload.
Refresh reloads clients and subscriptions, then scrolls here.
Add webhook and row actions that update subscriptions reload the table and scroll here too.
Changing Integration client reloads the subscription table and scrolls here.
Add webhook, Idempotency keys…, and idempotency export without a client selected scroll here and focus the client dropdown.
| Target URL | Folder scope | Events | Status | Deliveries |
|---|
No webhooks for this client.
Per-client storage, intake review queue, and bookkeeping processing queue. Sorted by items needing attention first. Use Search intake or Search processing to jump into practice search; closed clients also offer Search archived. Find duplicates scans that client folder tree for identical files. Click an Intake, Processing, Files, or Storage count to run the matching practice search. Click an Intake channels label (Portal, Email, Scan/API) to filter practice search on that inbox by source. Click the Client name to open that folder in the library. Open inbox and Browse folder jump to the client uploads inbox or scoped practice search. Refresh reloads the table, then scrolls here.
| Client | Status | Files | Storage | Intake | Processing | Intake channels |
|---|
No client folders yet.
File bytes stored in WorkStorage for each client folder (includes subfolders). Click Practice total to open the library root, or Other library areas to search files stored outside client folder trees. Click the Client folder name to open it, or click Files, Storage, Intake, or Processing to jump into practice search when counts are non-zero. Click Portal, Email, or Scan/API under Intake channels to filter practice search on that inbox by source. Row actions offer the same shortcuts plus Open inbox, Browse folder, and Find duplicates. Refresh reloads totals and the table, then scrolls here. Backfill file hashes and Backfill version hashes reload the summary and scroll here after each run.
| Client folder | Files | Storage | Intake | Processing | Intake channels |
|---|
No client folders yet. Create client folders to see per-client usage.
Company plan covers your practice library (giant folder). Seats are each team member who can sign in. Refresh reloads billing, pending and approved team lists, the folder-access member list, and the team seat-usage line (when visible).
Billing enforcement is on but Stripe checkout is not configured on this server. Contact your operator to set seat limits.
Staff sign up with Join a practice and enter your practice code (not your email domain). Save upload default scrolls here after saving the practice-wide document type. Prepare staff invite email loads the snippet and scrolls here. Copy email text scrolls here after a successful copy. Copy code scrolls here after copying the practice code. Copy join link copies the staff sign-up URL with your practice code prefilled.
Practice code:
Staff join link:
Approve new sign-in requests below. The Approved team list includes Search uploads (practice-wide search by uploader, shareable URL; click a member’s Name too), Folder access (jump to staff client-folder grants for that member), and Folder grants (client folders assigned; click a member’s count to open Folder access; admins show full library), Set role (member vs auditor; click the Role cell or row action), and Copy email on pending and approved rows (email addresses also open your mail app); after a successful copy, the page scrolls to Pending approvals or Approved team respectively. Your own approved row is labeled (you). Use Invite team (scrolls to invite panel, prepares staff email text, and copies it to the clipboard) or Manage seats (refreshes billing, team lists, then opens Billing) before approving new members when you are near your seat limit. Approve refreshes billing before checking seats. Click the seat usage line to open Billing. Refresh pending reloads the full team directory (pending, approved, folder access, billing) and scrolls there; Refresh approved does the same full reload and scrolls to Approved team.
Row actions include Prepare invite (staff invite email copied to the clipboard, same as Invite team).
| Name | Requested |
|---|
No pending registration requests.
| Name | Role | Folder grants |
|---|
No approved team members yet.
Members need your approval before they can download or delete files. Click a File name to open it in the workspace. Use Client / Folder links or Browse folder to jump into practice search. Refresh reloads the queue and scrolls here; approving or rejecting a request does the same after the list updates.
| File | Client | Folder | Action | Requested by | When |
|---|
No pending file requests.
Archive copies files to Google Drive, Dropbox, or Microsoft OneDrive. Configure server tokens to enable a provider. Click a File name in the job list to open the workspace; folder jobs open that folder in the library. Use Browse folder or Search archived on a row to jump into practice search. Refresh reloads providers and the job list, then scrolls here. Archiving from the library or Archive all files in this folder also scrolls here after the job completes. If no library folder is open, Archive all files in this folder scrolls the folder path in the library instead. If no cloud provider is configured, archive actions scroll here and focus Provider.
| File | Provider | Status | When |
|---|
No archive jobs yet.
Each folder in the path has Browse for scoped practice search (same as the toolbar Browse folder button, which scrolls here if no folder is open). Duplicate report toolbar actions scroll here if no folder is open.
Your practice library is ready. Add a client folder for each business you serve — like a named drawer in your filing cabinet. Use New client folder to pick a subfolder template, optional client upload link, and per-client upload defaults.
Client closed.
Workspace: create, write, and edit Excel, Word, PDF, and images inside the open folder. If no folder is open, create actions scroll to the folder path above. Click a file name (or double-click a row) to open its workspace.
Files are stored in the folder shown above. Only Excel, Word, PDF, and image files are accepted.
Optional invoice details (saved with the file for search and integrations).
Optional statement details.
| Name | Type | Location | Source | Hash | Size | Uploaded by | Updated |
|---|
This folder is empty.
Document workspaces for bookkeeping teams
Sign in to manage client documents and folder workspaces.
Entra-only mode is enabled but Microsoft sign-in is not configured. Set ENTRA_* on the server.
For a business owner keeping your own documents on WorkStorage. Your workspace is ready the moment you sign up — no setup, no invites.
For bookkeepers and accounting firms starting a new workspace on WorkStorage.
Join your firm on WorkStorage. Your practice administrator must approve your account before you can sign in.