> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs-parschat.parstechai.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs-parschat.parstechai.com/_mcp/server.

# When a plan lapses

> Expiry happens in two stages, and nothing is ever deleted.

Expiry happens in **two stages**. A plan that lapses does not cut a customer off at midnight.

| Stage           | Window               | API writes                        | Events delivered |  AI |
| --------------- | -------------------- | --------------------------------- | :--------------: | :-: |
| **Grace**       | \~1 day after expiry | `403 plan_inactive` on **create** |         ✅        |  ❌  |
| **Deactivated** | After grace, unpaid  | `403` on create                   |         ❌        |  ❌  |

## What keeps working

**Reads (`GET`) keep working throughout.** You can always see your own state, including robots,
channels, usage and configuration, even when the plan is fully deactivated. A partner locked out of
their own data during a billing dispute is a worse outcome than one who cannot create new robots.

> **Info**
>
> **During grace, events are still delivered but the AI has stopped.** Your customers' messages
> still reach you, so a human operator can answer them. Only the automated answers stop.

## Nothing is deleted

Channels are **disabled**, not removed. Conversations, history, robots and automation rules all
survive, and a disabled channel occupies no capacity.

## Reactivating after a renewal

When the plan is renewed we re-enable the channels automatically and the robots resume with their
data intact. **Check the result rather than assuming it.**

Re-enabling is checked against the renewed plan, so if the new plan is **smaller** than the old
one, only as many channels as it allows come back. The rest stay disabled.

```bash
curl https://api-chat.parstechai.com/v1/robots/rbt_8fK2mQ/channels \
  -H "Authorization: Bearer pk_live_xxxxxxxxxxxxxxxxxxxx"
```

Any channel still showing `"is_active": false` is one you must enable yourself, and you choose
which:

```bash
curl -X PATCH https://api-chat.parstechai.com/v1/robots/rbt_8fK2mQ/channels/chn_3pQ7xL \
  -H "Authorization: Bearer pk_live_xxxxxxxxxxxxxxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{"is_active": true}'
```

> **Warning**
>
> **Order matters when you renew onto a smaller plan.** Enable the pages that matter most first.
> Capacity counts enabled channels, so `403 capacity_exhausted` arrives at the point the cap is
> reached — not before, and not in an order you control.

> **Info**
>
> You can disable a channel deliberately too, with `{"is_active": false}`. It is the right way to
> pause a customer's page while keeping their history, rules and configuration ready for when they
> return, without paying for a slot. See
> [Enable or disable a channel](/api-reference/channels/update-channel-status).

## What you should do

#### Handle 403 plan_inactive on writes

Surface it to your customer as a billing state rather than a system error. It is not transient
and retrying will not help.

#### Keep reading

Your `GET` calls still work. Use them to show your customer exactly what is paused.

#### Do not delete and recreate

Deleting a robot to "reset" it destroys nothing we would have kept anyway, but it does lose the
channel connection. That means asking the page owner to authorise again.

#### After renewal, confirm what came back

List your channels and enable any that are still `is_active: false`, most important first.