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

# seat_limit_exceeded

> Organization has reached the seat cap for its plan

|                    |                        |
| ------------------ | ---------------------- |
| **HTTP status**    | `402 Payment Required` |
| **Error code**     | `seat_limit_exceeded`  |
| **Resolve action** | `upgrade_plan`         |

## What happened

The organization has reached the seat cap defined by its current plan. Each plan caps the total of:

* **active members** (users who have accepted an invite), plus
* **pending, non-expired invites** (sent but not yet accepted).

Pending invites count against the cap so concurrent invites can't bypass the limit. Cancelling a pending invite frees the seat immediately.

Plan downgrades never remove existing members. If an organization exceeds its new cap after a downgrade, new seats stay blocked until the member count plus pending invites is below the cap again.

## How to fix

Upgrade the plan:

```bash theme={"dark"}
curl -X PUT https://api.particle.pro/v1/organizations/{orgId}/billing/subscription \
  -H "Authorization: Bearer YOUR_JWT_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"plan_id": "PLAN_ID"}'
```

Or free a seat by cancelling a pending invite:

```bash theme={"dark"}
curl -X DELETE https://api.particle.pro/v1/organizations/{orgId}/invites/{inviteId} \
  -H "Authorization: Bearer YOUR_JWT_TOKEN"
```

Or removing a member:

```bash theme={"dark"}
curl -X DELETE https://api.particle.pro/v1/organizations/{orgId}/members/{userId} \
  -H "Authorization: Bearer YOUR_JWT_TOKEN"
```

Requires the **OWNER** or **ADMIN** role.
