← Back to Help Center

The Firm plan

The Firm plan is for bookkeeping firms with more than one person working on client cleanups. It gives you unlimited active engagements, every Solo feature, and shared team access.

What you get

Monthly or annual billing

Pick Annual on the pricing page before starting Firm to be billed yearly. A Firm owner already on monthly billing can switch from Account: Switch to annual billing opens Stripe's confirmation page, which shows the prorated credit for the rest of the current month before anything is charged. Your seat count carries over. The link does not appear during a free trial; it shows once the subscription is paid.

Seats

A seat is one logged-in user on your firm. You (the owner) count as the first seat. Inviting someone who accepts occupies a second seat. Once all seats are occupied, the next invite shows an Add a seat → button that opens a Stripe confirmation page with the new quantity already filled in. Confirm once, Stripe applies the prorated charge ($25/mo, or $250/yr on annual, per additional seat beyond 3), and you land back on your Team page with the new invite slot ready. No hunting through Stripe menus.

Removing a teammate does not automatically shrink the subscription. That is a deliberate design choice: reducing seats mid-cycle generates a prorated credit and we want you to confirm that change explicitly in Stripe. When you have unused seats above the 3-seat minimum, the Team page shows a "Reduce to N seats →" button in the firm header. Clicking it opens a Stripe confirm page with the new quantity already filled in; confirm once, Stripe applies the prorated credit, and you land back on the Team page with the lower seat count. One click, no portal navigation required.

Below 3 seats, the button is hidden because the Firm plan bundles 3 seats in the $149/mo base — dropping below doesn't save money.

Naming your firm

Set a display name from Account → Team (click Set firm name / Edit next to the header). The name shows up in the subject line and body of every invite email you send, so "Acme Bookkeeping invited you to LedgerClean" reads like a real introduction instead of a generic system notification. Invites sent before you set the name still show the owner's email as the label; resend them if you want the new name to stick. Up to 60 characters. Leave it blank to fall back to the owner's email.

This firm name is separate from the Firm Branding logo and "firm name" on Account → Branding — that one appears on client-facing PDFs and share links. The team name only affects the team surface (invite emails, Team page header). They can be the same or different; most firms will just use the same name in both places.

Inviting a teammate

  1. Upgrade to Firm from /pricing if you are not already on it.
  2. Go to Account → Team.
  3. Enter your teammate's email and click Send invite.
  4. LedgerClean emails the link to your teammate directly (7-day expiry). Replies to the email come back to you, so they can ask "is this really you?" before clicking.
  5. They sign in with the same email address and click Accept invite on the landing page.

If the email doesn't arrive in their inbox (spam filters, company-hosted mail servers, typos), the invite page also shows you the raw link as a fallback so you can forward it through another channel.

Unaccepted invites appear under Pending invites on the Team page. Each row shows the invitee's email and when the link expires (7 days from sending). You can:

See Invite a teammate for the full walkthrough.

Firm overview on the dashboard

Firm owners see a four-widget overview at the top of the dashboard with the state of every client engagement at a glance:

The overview is visible to the firm owner only, not to teammates. This is a deliberate restriction ahead of the per-member permissions work: an owner needs to see workload and scan freshness across the whole book, but a bookkeeper teammate usually only needs their own assigned engagements. Teammates keep the existing per-engagement dashboard view unchanged.

The overview is a Firm-plan feature. Solo and Free Preview accounts see the existing dashboard without the top widgets.

Assigning work to teammates

Owners and admins can assign a specific finding or checklist item to a teammate directly from the engagement report. A small dropdown next to the status selector on each issue row lists every teammate in the firm. Pick one to assign, pick "Unassigned" to clear. Changes save immediately; a toast appears if the server rejects the assignment.

Bookkeepers see the same row with a read-only pill — they can see who owns the item but cannot reassign it.

The dashboard is filtered to "engagements assigned to me" by default for bookkeepers. The filter keeps them focused on the work they own rather than the whole firm's queue. A toggle at the top of the engagement list flips it off so they can browse all firm engagements when they need context.

If a bookkeeper has no assignments yet, the dashboard shows a clear "no assignments yet — show all firm engagements" state rather than an empty screen.

Assignments do not carry across rescans. When you re-run diagnostics on an engagement, the new scan produces a fresh checklist state and assignments reset to unassigned — that way you can re-delegate based on what the new findings look like.

Bulk actions

Two shortcuts for common delegation patterns:

When you remove a teammate from the firm, LedgerClean automatically unassigns every item they currently own and records the count in the Activity Log, so you can see at a glance "offboarding Alice detached 37 items" rather than discovering it later when a bookkeeper opens a mystery engagement.

Team activity log

Firm owners can open Account → Team → View activity log → to see a chronological feed of everything that's happened across the firm: share-link creations and revocations, project renames, invites sent / accepted / revoked, teammates removed, account deletions and exports. Each row shows who did what and when.

The feed pages 25 events at a time; Load more fetches the next page. Older events are kept indefinitely so there is no cut-off date for audits.

Only the firm owner sees the activity log, same gate as the Firm overview on the dashboard. Teammates can run scans, edit checklists, and create share links without those actions being hidden from them, but the aggregated audit view is an owner-supervision tool.

Events that predate the 2026-04-27 audit-log migration appear in the feed only when their firm association could be recovered from existing metadata. Older events without a firm tag stay in the underlying log for admin forensics but do not appear in the firm's view.

Bulk export across client engagements

Once you have two or more scanned engagements, you can combine them into a single export instead of downloading one PDF per client.

  1. From the dashboard, click Bulk export (shown when you have two or more scanned engagements on Solo or Firm).
  2. Pick 2 to 20 engagements to include.
  3. Choose a format:
    • Report (PDF) — the full diagnostic report for every selected engagement concatenated in one PDF.
    • Assessment (PDF) — the shorter client-facing assessment for each engagement.
    • Proposal (PDF) — combined pricing proposal.
    • Checklist (XLSX) — one spreadsheet with a tab per engagement plus a summary tab.
    • JE memos CSV — journal-entry memos for every engagement in SaasAnt or QBO import format.
    • Everything (ZIP) — the four artifact types above bundled into a single archive.
  4. Click Generate. The file downloads locally; it is not stored on our servers after the response finishes.

The 2-20 cap keeps each export within PDF generation memory and response timeouts. Larger batches are a planned follow-up once we have queue infrastructure in place. The per-request rate limit is 5 bulk exports per 10 minutes.

Team roles

Every teammate holds one of three roles, settable by the firm owner from the Team page. Role determines what the teammate can do day-to-day.

| Capability | Owner | Admin | Bookkeeper | |---|---|---|---| | Run scans, edit checklists, add notes | Yes | Yes | Yes | | Generate assessment/report PDFs, export JE memos | Yes | Yes | Yes | | Create and revoke client-facing share links | Yes | Yes | Yes | | Archive or restore an engagement | Yes | Yes | Yes | | Generate a client-facing proposal PDF (single or combined) | Yes | Yes | No | | Edit per-engagement or firm-wide pricing | Yes | Yes | No | | Hard-delete an engagement | Yes | No | No | | Invite or remove teammates | Yes | No | No | | Change Stripe subscription (seats, plan, cancel) | Yes | No | No | | Rename the firm | Yes | No | No | | See the Firm overview + Activity Log | Yes | No | No |

Newly accepted invites default to Bookkeeper — the most restrictive role. The owner promotes to Admin from the Team page using the inline dropdown on each member row. Promotion is a one-click change; demotion uses the same dropdown. Role changes are logged in the Activity Log so the owner has a durable trail.

The proposal and pricing restrictions mean a bookkeeper can prepare every piece of a cleanup engagement except the two revenue-relevant artifacts: the per-project pricing config and the client-facing proposal PDF. Those remain owner/admin calls. A bookkeeper who tries to generate a proposal PDF or save pricing changes will see a 403 from the server — the UI hides these buttons too, but the server is the authoritative gate. The "Download all" bundle works for every role, but for a bookkeeper the ZIP contains the report, assessment, and checklist only; the proposal PDF is left out.

The Owner role is immutable in v1. Ownership transfer is a planned follow-up; until it ships, changing who owns a firm requires one of the two workarounds documented in Deleting your account as the firm owner below.

What happens when someone accepts

Accepting an invite adds the teammate to your firm as a Bookkeeper. Their existing account, their own firm-of-one, and any engagements they already have stay exactly where they are — a person can belong to several firms at once and switches between them with the firm switcher in the nav. Accepting does not auto-switch them into your firm; they change context when they're ready.

Deleting your account as the firm owner

If you are the owner of a firm with teammates and try to delete your account from Account → Delete account, the request is refused with "Remove all teammates from your firm before deleting your account." Ownership transfer is not yet supported in v1, so owner deletion would either orphan the firm or silently destroy teammate engagement access. Neither is acceptable.

To delete your account as an owner: go to Account → Team, remove every teammate (they are restored to their own firm-of-one with no engagements), then return to Account → Delete account. Teammates you remove keep their LedgerClean login; only their access to your firm's engagements is revoked.

Owners of a firm-of-one (no teammates accepted) can delete their account normally. The firm and every engagement in it is removed.