Team and SecurityMembers and invitations

Team and Security

Members and invitations

Invite people into your account, choose their role and which businesses they can reach, and manage everyone from Settings > Team.

Members are the people who work inside your account with you: a bookkeeper, a colleague who sends invoices, an accountant who only needs to look. Each member signs in with their own login, gets a role that decides what they can do, and a business scope that decides which of your businesses they can see. You invite them by email from Settings > Team, or through the API.

How membership works

Your account is the unit that holds your businesses, your plan and your billing. When you sign up, an account is created on the Free plan with you as its Owner. Everyone else you bring in becomes a member of that account.

A membership has three parts:

PartWhat it means
PersonOne login, identified by one email address.
RoleOwner, Admin, Editor, Viewer, Accountant, or a custom role on Team. The role is a list of permission keys. See Roles and permissions.
Business scopeEither all businesses in the account, or a list of specific businesses. The scope applies on top of the role for every role except Owner.

So an Editor scoped to one business can create and send invoices for that business only. They cannot see the other businesses in the account at all, in the app, the API, MCP or the AI agent.

One login, many accounts

A person signs in once, with one email, and that login can be a member of many accounts at the same time. Each membership has its own role and its own business scope.

  • One member, several businesses: inside one account, a membership can cover one, several or all businesses.
  • Your own account and someone else's: the same email can be the Owner of their own account and a member of a client's or employer's account.
  • The switcher: the account and business switcher at the top of the app lists every account and business you can reach, grouped by account, with your role shown. Permissions, plan limits, billing, branding and the audit log always follow the account you are viewing, never the person.

Deactivating someone in one account never affects their other memberships or their own account.

Plan limits

FreeTeam
Owner11 or more
Other members1 free view-only Accountant5 members included, then $2/month ($20/year) per extra member; regional price $1/month ($10/year)
RolesOwner and Accountant, both fixedEvery role except Owner editable; custom roles

On Free you can invite one member, and that member must have the Accountant role, which is view-only. Trying to invite a second member, or a member with any other role, shows the Team upgrade instead.

On Team, five members are included. When you invite a sixth, the app shows you the extra-member price before the invitation is sent. The extra seat is added to your Team subscription and billed with proration. See Member seats.

Every number here (members included, the extra-member price) is a plan setting we can change without a release. The pricing page and Settings > Billing always show the current values.

Invite a member

1

Open Settings > Team

You need the team.manage permission. The Owner and Admin have it by default.

2

Choose Invite

Enter the person's email address.

3

Pick a role

On Free, only Accountant is available. On Team, pick any role except Owner, including your custom roles.

4

Pick the business scope

Choose All businesses, or tick the businesses this person should reach. New businesses you add later are included automatically only when the scope is All businesses.

5

Send the invitation

The person receives an invitation link. When they accept it, they sign in (or create a login) and the membership becomes active with the role and scope you chose. If they already have a login, the new account simply appears in their switcher.

Invitation links are single-purpose, stored only as a hash, and expire. Until it is accepted, you can revoke an invitation from the same screen; the link then stops working.

Change a member's role or scope

Open Settings > Team, choose the member, and change their role, their business scope, or both. The change applies on the member's next request: permissions are read on every request, not cached in the session, so there is no need for them to sign out.

The Owner's membership cannot be changed this way. An account always keeps at least one Owner; a change that would leave it without one is refused with last_owner. To hand the account to someone else, use Transfer ownership.

Deactivate or remove

Two separate actions end a member's access:

  • Deactivate ends access at once but keeps the membership, so you can reactivate it later.
  • Remove ends the membership. Their work stays and is still attributed to them.

Both are available on every plan and are described in Deactivate and remove.

Through the API

Every member action is a capability, so the API, CLI and AI agent can do the same as the web app, with the same permission checks.

curl -X POST "https://api.freeinvoiceautomation.com/v1/invitations" \
  -H "Authorization: Bearer $FIA_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: invite-sam-2027-01-04" \
  -d '{
    "email": "[email protected]",
    "role_id": "0193f2a1-4d2e-7a10-8b3c-5e6f7a8b9c01",
    "business_scope": "list",
    "business_ids": ["0193f2a1-0b0b-7c4e-9a10-2d3e4f5a6b70"]
  }'

business_ids is used only when business_scope is list. Get role ids from List roles.

CapabilityRoutePermission
List membersGET /v1/memberssettings.view
Invite a memberPOST /v1/invitationsteam.manage
Revoke an invitationDELETE /v1/invitations/{id}team.manage
Update a memberPATCH /v1/members/{id}team.manage
Deactivate a memberPOST /v1/members/{id}/deactivateteam.manage
Reactivate a memberPOST /v1/members/{id}/reactivateteam.manage
Remove a memberDELETE /v1/members/{id}team.manage

An API key acts for one account only. If your login belongs to several accounts, create a key in each account you want to automate. See Authentication.

Rules

  • Only the Owner, or a member whose role holds team.manage, can invite, change, deactivate or remove members.
  • The Owner can never be deactivated or removed.
  • On Free, the only other member is one view-only Accountant.
  • Every invite, change, deactivation, reactivation and removal writes an audit log entry, on every plan.
  • API keys and MCP tokens a member created can never do more than that member's current role allows. If you narrow their role, their keys narrow too on the next call.

Errors

CodeHTTPWhen
permission_denied403Your role does not hold team.manage (or settings.view to list members).
plan_limit_reached403Free already has its one Accountant, or the invite is for a role other than Accountant on Free.
feature_locked403A Team-only feature, such as a custom role, was requested on Free.
last_owner409The change would leave the account without an Owner.
business_out_of_scope403The request names a business that is outside your own business scope.
member_deactivated403The member is deactivated in this account.
not_found404The member or invitation does not exist in this account.

The full list is on Errors.