Team and Security
Deactivate and remove
End a member's access at once with deactivate, bring them back with reactivate, or end the membership for good with remove. Their work always stays.
When someone leaves, changes job, or should not have access for a while, you have two actions on every plan. Deactivate cuts off access immediately but keeps the membership, so you can turn it back on later. Remove ends the membership. In both cases nothing they created is deleted: their documents, comments and audit history stay, still attributed to them.
Deactivate, reactivate or remove: which one?
| Deactivate | Reactivate | Remove | |
|---|---|---|---|
| Access to this account | Ends at once | Comes back with their role | Ends |
| Sessions in this account | Signed out | They sign in again | Signed out |
| Their API keys and MCP tokens for this account | Revoked | Stay revoked; they create new ones | Stop working |
| Their work | Kept | Kept | Kept and attributed to them |
| Can be undone | Yes, with reactivate | No. Invite them again if needed | |
| Member status | deactivated | active | removed |
| Email to the member | Yes | Yes | Yes |
| Audit entry | Yes | Yes | Yes |
Use deactivate when you might want the person back: a contractor between projects, someone on leave, or a seat you are reorganising. Use remove when the person has left for good.
What deactivation does
Deactivation takes effect at once, not at the end of a session:
- Signed out: their sessions in this account end. They can no longer open the account from the switcher.
- Keys revoked: every API key and MCP token they created for this account is revoked. Any automation, CLI script or AI assistant using them stops working on the next call.
- Refused everywhere: if they, or one of their old keys or tokens, call the API or MCP, the call is refused. A deactivated member gets
member_deactivated; a revoked key or token getsunauthenticated. - Work kept: documents, payments they recorded, comments and audit entries stay exactly as they are.
- Other accounts untouched: their own login still works, and so do their memberships in other accounts and their own account. Deactivation applies only to the account you deactivated them in.
Who can do it
- The Owner, or any member whose role holds
team.manage. - The Owner can never be deactivated or removed. To leave an account you own, first transfer ownership or delete the account.
- These actions are available on every plan, Free and Team.
Deactivate a member
Open Settings > Team
You see every member with their role, business scope and status.
Choose the member, then Deactivate
The app shows what will happen: access ends now, sessions are signed out, their API keys and MCP tokens for this account are revoked, and their work stays.
Confirm
Deactivation is a destructive action, so it needs your confirmation. The member's status changes to deactivated, they get an email, and an audit entry is written.
Reactivate a member
Open Settings > Team, choose the deactivated member, and choose Reactivate. They can sign in to the account again with their role and business scope. Their old API keys and MCP tokens stay revoked, so they create new ones in Settings > API keys if they need them.
On Free, a member can only be reactivated into the one view-only Accountant seat. If that seat is taken, upgrade to Team to bring more people back.
Remove a member
Open Settings > Team, choose the member, choose Remove, and confirm. The membership ends. Everything they did stays in your account and keeps their name: documents show who created them, and the audit log keeps their entries. If you want them back later, send a new invitation.
Deactivation after a downgrade
If a Team account moves back to Free, for example when a renewal payment fails and the grace period ends, the account keeps the Owner and one view-only Accountant. Every other member is deactivated automatically, with the same effects as a manual deactivation: sessions signed out, API keys and MCP tokens revoked, work kept. The Owner chooses which member stays as the Accountant.
When the account upgrades to Team again, deactivated members are not restored automatically. The Owner reactivates each one with one click in Settings > Team, or removes them. Reactivated members get new sessions and create new API keys. See Failed renewal and downgrade.
Through the API
Deactivate and remove are destructive capabilities, so over the API and MCP the call needs "confirm": true. Without it, you get the preview and confirmation_required. See Drafts and confirmations.
curl -X POST "https://api.freeinvoiceautomation.com/v1/members/0193f2a1-7a7a-7b1c-8d2e-3f4a5b6c7d81/deactivate" \
-H "Authorization: Bearer $FIA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: deactivate-sam-2027-02-01" \
-d '{ "confirm": true }'{
"data": {
"id": "0193f2a1-7a7a-7b1c-8d2e-3f4a5b6c7d81",
"user_id": "0193f2a1-1111-7a2b-8c3d-4e5f6a7b8c90",
"role_id": "0193f2a1-4d2e-7a10-8b3c-5e6f7a8b9c02",
"business_scope": "all",
"status": "deactivated",
"deactivated_at": "2027-02-01T10:15:00Z",
"deactivated_reason": "manual"
}
}deactivated_reason is manual when a person deactivated the member and downgrade when it happened because the account moved to Free.
| Capability | Route | Permission | Hint |
|---|---|---|---|
| Deactivate a member | POST /v1/members/{id}/deactivate | team.manage | Destructive |
| Reactivate a member | POST /v1/members/{id}/reactivate | team.manage | Write |
| Remove a member | DELETE /v1/members/{id} | team.manage | Destructive |
Errors
| Code | HTTP | When |
|---|---|---|
permission_denied | 403 | Your role does not hold team.manage. |
plan_limit_reached | 403 | On Free, the one Accountant seat is already taken. |
member_deactivated | 403 | Returned to a deactivated member who tries to use the account. |
unauthenticated | 401 | Returned to a revoked API key or MCP token. |
confirmation_required | 428 | Deactivate or remove over the API without "confirm": true. |
not_found | 404 | The member does not exist in this account. |
A request to deactivate or remove the Owner is always refused, and the Owner's membership is not changed.