> ## Documentation Index
> Fetch the complete documentation index at: https://docs.timetracker.in/llms.txt
> Use this file to discover all available pages before exploring further.

# Seats and billing

> How TimeTracker counts seats – every active member, every client portal contact and every open invitation – and what happens at the Free limit of 3.

A seat is a person with access to your workspace. That means **every active member of every role**, plus **every outstanding invitation**.

Client portal contacts count too. So do people who cannot sign in yet.

## What counts as a seat

| Counts                                                             | Does not count                                            |
| ------------------------------------------------------------------ | --------------------------------------------------------- |
| Active members of any role                                         | Deactivated members                                       |
| Client portal contacts                                             | Removed members                                           |
| People with no email, who cannot sign in yet                       | Expired invitations                                       |
| Outstanding invitations that are still pending                     | Revoked invitations                                       |
| Owner, Admin, Project Manager, Finance, Member, Contractor, Client | An invite whose email already belongs to an active member |

<Note>
  An open invite is access, so it holds a seat from the moment you send it. And nobody is counted twice – when someone appears as both a roster row and an invite, that is one person and one seat.
</Note>

## Client portal contacts use a seat

This surprises people, so it is worth stating on its own.

<Warning>
  A client portal contact is a login like any other. Ruth Castillo at Bluebird Coffee costs Northwind Studio exactly the same as Sarah Lin does.

  The reason is simple – a seat is a person with access, and a portal contact has access.
</Warning>

See [portal overview](/portal/overview).

## Where you see your seat count

On the roster header, at **Settings → Team Members**, next to the **Invite teammate** and **Add member** buttons.

It reads in the shape:

> `8 of 8 seats – 3 members, 4 client contacts, 1 pending invite`

The breakdown tells you where your seats went, which is usually the fastest way to find a seat you forgot about.

Your plan and payment method live at **Settings → Plan & billing**, described as `Your plan, seats and payment method. You're billed per person with access to this workspace.`

## The Free plan limit

<Warning>
  The Free plan includes **3 people in total**. That is staff, portal contacts and outstanding invitations combined – not 3 of each.
</Warning>

When you are at or above the cap, three actions are blocked:

| Blocked                         | Not blocked                           |
| ------------------------------- | ------------------------------------- |
| Sending a new invitation        | **Accepting** an invitation           |
| Adding a member directly        | Everything existing people already do |
| Resending an expired invitation | Deactivating or removing someone      |

The refusal names your actual numbers so you know what to fix:

> `the Free plan includes 3 people, and this workspace already has 3 (2 people plus 1 pending invite). Upgrade to Pro to add more.`

Before you even click, the buttons open an upgrade prompt instead of the usual dialog. It is titled **The Free plan includes 3 people** and explains: `This workspace is using 3 of 3 (including 1 client contacts) seats, so there is no room for another person. Upgrade to Pro to add as many as you need – everyone already here keeps working either way.`

## Being over the cap is allowed

If a Pro subscription lapses, a 5-person workspace does not lose two people.

<Note>
  Everyone already in the workspace keeps working. The cap only bounds the **next** add. It is checked against your current count each time, never against a high-water mark.
</Note>

So the rule reads:

| Your count            | Adding someone                |
| --------------------- | ----------------------------- |
| Below 3               | Allowed                       |
| At or above 3         | Blocked                       |
| Above 3 after a lapse | Blocked, until someone leaves |

Free a seat – deactivate someone, remove someone, or revoke an unaccepted invitation – and you can add again.

## Pro is billed per person

Pro is charged per seat, and the quantity follows your workspace automatically. Add a person and the quantity goes up. Remove one and it goes down.

Pro comes on two cadences, monthly and yearly. Prices are shown live on the billing page in your own currency, with tax added on top where it applies.

See [plans and pricing](/billing/plans-and-pricing) and [seats](/billing/seats).

## Freeing a seat

<CardGroup cols={2}>
  <Card title="Deactivate someone" icon="user-x" href="/team/remove-a-member">
    Reversible. They keep their roster row and everything they logged, but cannot sign in – and the seat is freed.
  </Card>

  <Card title="Remove someone" icon="trash" href="/team/remove-a-member">
    Permanent. Their tracked time is kept. Their outstanding invitations are revoked at the same time.
  </Card>

  <Card title="Revoke an invitation" icon="mail-x" href="/team/pending-invitations">
    Frees the seat immediately. Useful when an invite went to the wrong address.
  </Card>

  <Card title="Remove a portal contact" icon="briefcase" href="/portal/remove-portal-access">
    Portal contacts count, so removing one frees a seat like anyone else.
  </Card>
</CardGroup>

## Example

Northwind Studio is on Free and wants to stay there for now.

| Person                   | Type               | Seat |
| ------------------------ | ------------------ | ---- |
| Maya Ellis               | Owner              | 1    |
| Sarah Lin                | Member             | 2    |
| `jonas@northwind.studio` | Pending invitation | 3    |

The meter reads `3 of 3 seats – 2 members, 1 pending invite`. Maya tries to invite Daniel Okafor and is stopped.

She has three options:

<Steps>
  <Step title="Wait for Jonas">
    Jonas accepting does not change the count. He was already counted as an invite, and becomes a member in the same seat.
  </Step>

  <Step title="Free a seat">
    Revoke the invitation to Jonas, or deactivate Sarah. Either frees one.
  </Step>

  <Step title="Upgrade to Pro">
    The 12 people Northwind actually needs, plus Ruth Castillo's portal seat at Bluebird Coffee, all fit.
  </Step>
</Steps>

Once on Pro, Northwind's 12 staff plus 1 portal contact bill as 13 seats.

## The other reason to upgrade

The seat cap is only half the Free plan. The other half is the dividing line between recording work and resolving it.

| Free lets you                                                                 | Pro adds                                                                                                                               |
| ----------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- |
| Track time, fill timesheets, submit expenses, request leave, clock in and out | **Approving** any of it, invoicing, budgets, profitability, the planner, the client portal, advanced reports, integrations and exports |

The Client portal is a Pro feature, which is why inviting a portal contact needs Pro before the seat cap is even reached.

See [free versus Pro](/billing/free-vs-pro).

## Permissions

| Action                           | Capability       | Roles that hold it by default |
| -------------------------------- | ---------------- | ----------------------------- |
| See the seat meter               | Roster access    | Everyone except Client        |
| Change the plan, card, or cancel | `billing.manage` | Owner, Admin                  |
| Invite someone                   | `member.invite`  | Owner, Admin, Project Manager |
| Add someone directly             | `member.create`  | Owner, Admin                  |
| Free a seat by removing someone  | `member.remove`  | Owner, Admin                  |

<Note>
  `billing.manage` is held by Owner and Admin only. **Finance does not hold it** – Finance owns invoices and payments to your clients, not your own subscription.
</Note>

## Common questions

<AccordionGroup>
  <Accordion title="Do client portal contacts count toward my seats?">
    Yes. A portal contact is a login with access, so it uses a seat exactly like a staff member.
  </Accordion>

  <Accordion title="Do pending invitations count?">
    Yes. An open invite is access, so it holds a seat until it is accepted, revoked or expires.
  </Accordion>

  <Accordion title="Does someone appear as both an invite and a member?">
    They may appear as both states over time, but they are never counted twice. When you add someone directly with an email, the invite is folded into their roster row.
  </Accordion>

  <Accordion title="Do deactivated people count?">
    No. Deactivating frees the seat straight away, and reactivating takes it back.
  </Accordion>

  <Accordion title="Do people with no login count?">
    Yes. Someone added without an email is still an active member, still appears in reports, and still uses a seat.
  </Accordion>

  <Accordion title="What happens if my subscription lapses while I have 8 people?">
    All 8 keep working. You just cannot add a ninth until you are back on Pro or drop below 3.
  </Accordion>

  <Accordion title="Can someone still accept an invite when I am at the cap?">
    Yes. Accepting is never blocked by the seat cap.
  </Accordion>

  <Accordion title="How is Pro billed?">
    Per person with access, on a monthly or yearly cadence. The quantity follows your workspace automatically.
  </Accordion>
</AccordionGroup>

## Troubleshooting

| Problem                                   | Cause                                                  | Fix                                |
| ----------------------------------------- | ------------------------------------------------------ | ---------------------------------- |
| The invite button opens an upgrade prompt | You are at the Free cap                                | Free a seat, or upgrade            |
| Your count is higher than your headcount  | Pending invitations are counted                        | Revoke invites you no longer need  |
| A removed person still counts             | The roster is stale                                    | Reload **Settings → Team Members** |
| You cannot invite a portal contact        | Client portal is a Pro feature                         | Upgrade to Pro                     |
| Resending an expired invite is refused    | Resending an expired invite is checked against the cap | Free a seat first                  |
| Finance cannot open billing               | Finance does not hold `billing.manage`                 | Ask an owner or admin              |

## Related guides

<CardGroup cols={2}>
  <Card title="Seats" icon="users" href="/billing/seats">
    Seats from the billing side.
  </Card>

  <Card title="Free vs Pro" icon="scale" href="/billing/free-vs-pro">
    What each plan includes.
  </Card>

  <Card title="Pending invitations" icon="mail" href="/team/pending-invitations">
    Why an open invite costs a seat.
  </Card>

  <Card title="Remove a member" icon="user-minus" href="/team/remove-a-member">
    Freeing a seat.
  </Card>

  <Card title="Client portal overview" icon="briefcase" href="/portal/overview">
    Portal contacts count too.
  </Card>

  <Card title="Plans and features" icon="layers" href="/concepts/plans-and-features">
    The plan model.
  </Card>
</CardGroup>
