Evenbead docs

Bringing clients on

How an accounting firm invites its clients, sets each one up the same way, sees how far each client's onboarding is, and moves their QuickBooks books in from one queue. In the firm console these are Onboarding and Migrations; everything here also works over the API and MCP. Every write is a person's: agents read these lists, and the database refuses them every change. (Dated 2026-10-18.)

Invite a client by email

Onboarding, Invitations sends a business an email with a link (it works once, for 14 days). You choose what your firm asks to do in its books (see the books, prepare, keep the books, or full access), who pays for the company file, and optionally a setup template. Inviting needs "Create clients".

POST /v1/firm/invites   {"email": "owner@business.example", "business_name": "Business LLC", "scopes": ["read", "propose", "approve"], "billing": "client"}
POST /v1/firm/invites/bulk   {"csv": "Email,Business name,Contact name\n...", "dry_run": true}
POST /v1/firm/invites/{id}/resend          # a new link; the old one stops working
POST /v1/firm/invites/{id}/revoke   {"reason": "..."}
GET  /v1/firm/invites

A CSV (Email, Business name, Contact name; at most 200 rows) is checked row by row first: nothing is sent until you confirm, and an address with a waiting invitation is skipped.

Who answers. Only the person at the invited address, signed in with that address confirmed. If the business already uses Evenbead, its owner signs in and accepts in Settings, Your accountant. If not, the link creates the company first, for that address, and the invitation waits there. The business chooses what your firm may do (never more than you asked) and who pays; it can change or end your access at any time. Your firm never answers for the business, and nobody at another address can accept. Giving a firm access is the business owner's (or a role the owner gives "Manage accounting firms' access"; never the CPA role by default): anyone else at the invited address passes the invitation to the owner, who accepts it with one click.

Setup templates

Onboarding, Setup templates holds your firm's standard setup for a new client: the access you ask for, which of your agents work there, what they may post on their own and when they ask a person (the confidence floor), who teaches agents a vendor's coding (only rules people make, or also one person's approval), and your close template. Changing templates needs "Firm settings".

A business sees the template's agents, limit and teaching choice before it accepts; who teaches agents in its books is its own decision, made while accepting. After it accepts, apply the template from Onboarding, Progress: select the clients, Preview says what changes in each one, then Apply. Each client is changed separately, as you, through the same operations as one by one, and audited in the client's log and your firm's. Applying again changes nothing. Where the client gave your firm less than full access, its teaching and close settings stay as the client set them, and the preview says so.

POST /v1/firm/setup-templates/{id}/apply   {"company_ids": ["..."], "dry_run": true}

Onboarding progress

Onboarding, Progress lists every client you work on with seven steps, read from its books (nobody ticks them): the owner signs in, a bank connected, a chart of accounts, history imported (QuickBooks with a passing tie-out, or opening balances), your agents assigned, a setup template applied, and the first month closed. A client your firm created shows whether its owner has claimed it; you can email the owner a new claim link (your firm never sees it): POST /v1/firm/clients/{id}/owner-invite {"email": "..."}.

The migrations queue

Migrations lists every client moving its books in from QuickBooks, with its stage read from its books each time:

StageWhat the books show
Not startedOnly your plan
Export pendingA Web Connector or QuickBooks Online connection, or a drafted mid-year switch, waiting for the client
ImportingThe export arrived and tied out (or the extraction runs): import it next
Tie-out failedThe import's, the switch's or the export's tie-out did not match QuickBooks; the differences per account are listed
Tie-out passedImported and tied out: ready to cut over
Parallel runTied out, and you keep both systems for a month
SwitchedCut over, or the mid-year switch finalized

A failed tie-out is never ready to switch, and a parallel-run month can only be set after the tie-out passed. For each client you set an owner (one of your people who works on it), a due date, the source and a note ("Manage tasks" in the client); late, failed and unowned migrations are listed under Needs attention. Each row opens the client's migration page, its tie-out report or its mid-year switch. The import itself happens in the client's books, as described in From QuickBooks Desktop and From QuickBooks Online; the queue never reads a QuickBooks file.

GET  /v1/firm/migrations?stage=tieout_failed&owner=me&attention=true
POST /v1/firm/migrations/{company_id}   {"owner_member_id": "...", "due_date": "2026-11-30", "source": "qbd", "parallel_month": "2026-11"}