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

# Plans & billing

> What a plan includes, what extra accounts cost, and how per-call platforms are re-billed.

PlugKit bills on **connected accounts**, plus the handful of platform calls that
cost real money upstream. Everything else — publishing, inbox, campaigns,
analytics, webhooks, MCP — is included.

## Plans

|                             | Creator        | Pro                |
| --------------------------- | -------------- | ------------------ |
| Price                       | **\$29**/month | **\$97**/month     |
| Connected accounts included | 5              | 30                 |
| Beyond the quota            | not allowed    | billed per account |

```bash theme={null}
curl https://api.plugkit.co/v1/billing/plans -H "Authorization: Bearer sk_your_key"
curl https://api.plugkit.co/v1/billing/subscription -H "Authorization: Bearer sk_your_key"
```

Every account starts on a **7-day trial**. A card is registered up front,
nothing is charged during it.

### Creator is a hard wall

On Creator, the 6th account isn't billed as an extra — it is **refused**, with a
`402` naming the limit and pointing at Pro. That's deliberate: silently charging
someone who connected one account too many is worse than telling them.

### Pro overflows, in graduated bands

Past 30 accounts, extra accounts are billed by band:

| Accounts | Per extra account / month |
| -------- | ------------------------- |
| 31 – 100 | \$3.00                    |
| 101 +    | \$1.50                    |

Bands are **graduated**, like tax brackets: each account is billed at the rate
of the band it falls in, not the whole set at the rate you reached. A flat
scheme would create a cliff where connecting one more account *lowers* your
bill — and anyone would connect a dummy account to save money.

## Pay-per-call platforms

Some platforms bill per API call. PlugKit passes those through **at cost**, in
US dollars, with no markup and no currency conversion:

| Operation                       | Price   |
| ------------------------------- | ------- |
| Read a post or a lookup         | \$0.005 |
| Read a user, follows            | \$0.010 |
| Publish a post                  | \$0.015 |
| Publish a post containing a URL | \$0.200 |
| Read a DM                       | \$0.010 |
| Send a DM                       | \$0.015 |

Today this applies to **X** only. The mechanism is general — any platform that
starts billing per call joins the same table.

### Nothing runs until you say so

Background work on a metered account is off by default. Two independent
switches, per account:

```bash theme={null}
curl -X PATCH https://api.plugkit.co/v1/accounts/ACCOUNT_ID/x-billing \
  -H "Authorization: Bearer sk_your_key" -H "Content-Type: application/json" \
  -d '{ "analytics": true, "acknowledgeCost": true }'
```

Until they're on, nothing polls and the account costs nothing. It isn't the call
you asked for that blows up an invoice — it's the loop running while nobody's
watching.

**Turning a switch on requires `acknowledgeCost: true`.** Without it the call is
refused, and the refusal carries the rate card and the cap in force so you can
show them before asking again. The acceptance is stamped on the account
(`billing.costAcknowledgedAt`), because "who authorized this, and when" is the
question that comes up the day an invoice is questioned.

Enabling also checks, right then, that the account **can** be billed — a card
that has been charged at least once, and a subscription in good standing. You
find out at the moment you decide, not three days later through empty charts.

Turning a switch **off** requires nothing at all. Stopping a spend is never put
behind a confirmation.

### Spend cap

Every account has one **from the start**: **\$20 a month**, applied until you set
your own.

```bash theme={null}
curl -X POST https://api.plugkit.co/v1/billing/spend-cap \
  -H "Authorization: Bearer sk_your_key" -H "Content-Type: application/json" \
  -d '{ "capUsd": 50 }'
```

At 80% you get a **`usage.threshold_reached` webhook** — once per month, before
anything stops, carrying what will pause and what will keep running. At 100%,
background polling stops — but **publishing
and sending are never blocked**. Failing a scheduled post to save half a cent
does far more damage than a small overshoot: someone planned that message.

`GET /v1/billing/subscription` returns the cap in force and `cap_is_default`,
which tells you whether it's yours or ours.

<Note>
  There is deliberately **no "unlimited"**. Sending `"capUsd": null` returns you
  to the default rather than removing the ceiling; to spend more, set a higher
  number — and that number is still a ceiling. A single X account polled every
  hour can run to \$360 a month, and the only thing standing between a customer
  and that invoice should not be a checkbox ticked one evening.
</Note>

## Watching the spend

```bash theme={null}
curl https://api.plugkit.co/v1/usage -H "Authorization: Bearer sk_your_key"
```

```json Response (trimmed) theme={null}
{
  "period": "2026-08",
  "currency": "usd",
  "total_usd": 3.41,
  "cap_usd": 20,
  "remaining_usd": 16.59,
  "breakdown": [
    { "operation": "X_POST_WITH_URL", "quantity": 12, "cost_usd": 2.4 },
    { "operation": "X_READ", "quantity": 202, "cost_usd": 1.01 }
  ]
}
```

Responses that engaged a billable call also carry the cost in an
`x-plugkit-cost-usd` header.

<Note>
  This endpoint exists because PlugKit's main interface is an agent. A cost that
  only shows up on the invoice is a cost nobody could weigh at the moment it was
  incurred — an assistant can read this before starting a loop, and stop when
  little budget is left.
</Note>

## Changing plan

```bash theme={null}
curl -X POST https://api.plugkit.co/v1/billing/checkout \
  -H "Authorization: Bearer sk_your_key" -H "Content-Type: application/json" \
  -d '{ "plan": "PRO" }'
```

Returns a Whop checkout URL. Subscriptions and payments are handled by Whop; the
variable part (extra accounts, per-call usage) is charged at the end of the
month against the payment method on file.
