Accounting Tech · Client Portal Build Guide

How to Build a Client Portal for an Accounting Firm on Bubble.io

An accounting firm client portal gives each client a secure, branded space to upload documents, view their accounts and tax returns, sign engagement letters, pay invoices, and message their accountant. The specific data model, user roles, and workflows that make an accounting firm client portal genuinely used by clients and fee earners.

Client + AccountantTwo User Types, One Portal
Document UploadThe Feature Clients Use Most
Branded PortalThe Feature That Impresses Referrals
What Makes an Accounting Client Portal Different From a Generic Portal

The Accounting-Specific Requirements

💡 Direct Answer

An accounting firm client portal is not a generic document sharing tool with the firm’s logo on it. It is a structured system that reflects the specific lifecycle of an accounting engagement: the engagement agreement phase (engagement letter, AML documents), the information collection phase (document requests, financial data), the work phase (work in progress, interim queries), the review and approval phase (draft accounts, tax return for review), and the completion phase (final signed documents, invoice, filing confirmation). A generic portal tool (ShareFile, SharePoint, OneDrive) provides document storage but does not provide the structured workflow, the automated reminders, and the engagement-specific status tracking that makes an accounting portal genuinely efficient rather than just a digital filing cabinet.

The Accounting Client Portal Data Model on Bubble.io

The Core Data Types

Client (the client record)

Fields: full name, business name (if applicable), email, phone, UTR number, company registration number (if applicable), VAT registration number (if applicable), accounting year end (date), tax band (option set, for individuals), assigned accountant (relationship to User), status (Active, Pending Onboarding, Inactive), portal_access (boolean), and stripe_customer_id for billing.

Engagement (the annual or project work record)

Fields: client (relationship to Client), engagement_type (option set: Annual Accounts, Self-Assessment, VAT Return, Payroll, R&D Tax Credits, Other), period (text: e.g. Year ended 31 March 2026), status (option set: Not Started, Information Requested, Information Received, Work In Progress, Review, Approval Requested, Approved, Filed, Invoiced, Complete), assigned_accountant (relationship to User), deadline (date), notes (text).

Document Request

Fields: engagement (relationship to Engagement), client (relationship to Client), description (text: what is being requested and why), required_by (date), status (option set: Pending, Uploaded, Approved, Rejected), uploaded_document (relationship to Document, set when the client uploads the requested document), and reminder_count (number, incremented by the automated reminder workflow).

Document

Fields: client (relationship to Client), engagement (relationship to Engagement, optional), title (text), document_type (option set: Client Upload, Completed Accounts, Tax Return, Engagement Letter, Invoice, AML Document, Other), file_url (file), uploaded_by (relationship to User), direction (option set: Client to Firm, Firm to Client), status (option set: Draft, Awaiting Approval, Approved, Signed), visible_to_client (boolean).

Message

Fields: client (relationship to Client), engagement (relationship to Engagement, optional), sender (relationship to User), body (text), sent_at (date), read_by_recipient (boolean). The message thread is the in-portal alternative to email for client-accountant communication on specific engagement queries.

The Client-Facing Portal Pages

What the Client Sees When They Log In

📊

Dashboard: my engagements at a glance

A list of all current engagements with their status (colour-coded: green for complete, amber for in progress, red for action required). A client with a self-assessment, a VAT return, and payroll sees three engagement cards, each showing the current status and the next action required. Clicking any engagement opens the engagement detail page.

📄

Document hub: upload and download

A unified document hub showing: (1) Document Requests from the accountant with an upload button for each; (2) documents shared by the firm (completed accounts, tax returns, invoices) with a download button. The document hub is the most-used feature in every accounting client portal SA has built; clients check it to see what documents they need to provide and to download their completed work.

💬

Messages: in-portal communication

A messaging interface for direct communication with the assigned accountant, threaded by engagement. Replaces the email chains that currently handle queries about specific engagements. Each new message sends an email notification to the recipient so neither the client nor the accountant misses a message.

💰

Invoices: view and pay online

A list of all invoices with status (Outstanding, Paid), due date, and a Pay Now button for outstanding invoices. Payment via Stripe is completed in the portal; the invoice status updates automatically to Paid when the payment is processed.

Q: How do I handle clients who have multiple businesses (sole trader and a limited company, for example)?

Create a separate Client record for each legal entity (the individual as a sole trader and the limited company as a separate corporate client). Link both Client records to the same portal User account so the client can switch between their two client records in the portal without logging out and back in. The portal’s client switcher interface (a dropdown in the navigation showing all entities the user has portal access to) allows the client to view the engagements, documents, and invoices for each entity separately.

Q: Can the portal send the completed accounts and tax returns directly to the client for approval?

Yes — this is one of the most valuable workflows in an accounting client portal. The fee earner uploads the completed accounts or tax return as a Document with visible_to_client = true and status = Awaiting Approval. The client receives an automated email notification with a link to the specific document in the portal. The client reviews the document in the portal and clicks Approve or clicks Request Changes (which opens a message thread for the specific document). When the client approves, the Document status is updated to Approved and a notification is sent to the fee earner. For documents requiring a physical signature, the approval workflow triggers the e-signature integration (DocuSign or Adobe Sign via the API Connector).

Q: How much does it cost to build an accounting firm client portal on Bubble.io?

A core accounting firm client portal with client and engagement management, document requests with automated reminders, document upload and download, client messaging, and Stripe invoice payment integration typically costs $12,000-20,000 with SA and takes 5-8 weeks. A more comprehensive portal with the full onboarding workflow, deadline tracking integration, accounting software integration (Xero, QuickBooks), and a practice management dashboard for the accountant team ranges from $20,000-35,000. All builds begin with a $345 Discovery Sprint.

Ready to Build Your MVP?

SA Solutions builds MVPs in weeks using Bubble.io. Start with a free audit or scope your build in 48 hours with a Discovery Sprint.

Free MVP AuditDiscovery Sprint — $345

How to Build a Client Portal for an Accounting Firm on Bubble.io
Simple Automation Solutions · sasolutionspk.com

Simple Automation Solutions

Business Process Automation, Technology Consulting for Businesses, IT Solutions for Digital Transformation and Enterprise System Modernization, Web Applications Development, Mobile Applications Development, MVP Development