# Billing and subscriptions

> Subscribe through Stripe Checkout, change plan or page tier in the app, and use Manage billing for invoices, your card and cancellation.

Source: https://seofix.ai/help/billing-and-subscriptions · Category: Teams & billing · Updated: 2026-10-08

You subscribe from Settings → Plan & billing: pick a page tier, Monthly or Yearly, then **Choose Starter** or **Choose Growth**. Payment runs on Stripe Checkout. Each account has one subscription: after you subscribe, the same buttons change that subscription. Upgrades start at once with a prorated charge; other changes start at your next renewal. **Manage billing** opens Stripe for invoices, your payment method and cancellation.

## Who can pay

Only the team owner can subscribe or buy credits. Members see the plans with the note "Only the team owner can change this team's plan or buy credits." Agents get `403 not_team_owner` when the API key's holder does not own the key's team.

## Subscribe

1. Open Settings → Plan & billing (`/settings#billing`).
2. Choose **Pages crawled per month**: 10k, 50k, 150k, 500k, 1M or 2.5M+.
3. Choose **Monthly** or **Yearly**. Yearly is 10 times the monthly price (2 months free).
4. Click **Choose Starter** or **Choose Growth**. You go to a Stripe Checkout page.
5. Pay. Stripe sends you back to `/settings?checkout=success#billing`. If you leave checkout, you land on `/settings?checkout=cancelled#billing` and nothing is charged.

When Stripe confirms the subscription, the team's plan changes and the first invoice's credits are added: the tier's pages for monthly billing, 12 times that for yearly. This usually takes a few seconds. Prices and credits per tier are in [Plans and credits](https://seofix.ai/help/plans-and-credits.md).

Sites on the free 500-page audit limit are raised to 10,000 pages per audit when you upgrade. Pages beyond that are a per-site setting.

Agents can create the checkout link and hand it to you:

```bash
curl -X POST https://api.seofix.ai/v1/billing/subscribe \
  -H "Authorization: Bearer $SEOFIX_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"plan": "growth", "tier": "150k", "interval": "yearly"}'
```

```json
{ "url": "https://checkout.stripe.com/c/pay/..." }
```

| Parameter | Values |
| --- | --- |
| `plan` | `starter`, `growth` |
| `tier` | `10k`, `50k`, `150k`, `500k`, `1m`, `2.5m` |
| `interval` | `monthly`, `yearly` |

| Error | Status | Meaning |
| --- | --- | --- |
| `not_team_owner` | 403 | Only the team owner can manage billing. |
| `subscription_exists` | 409 | You already have a subscription. Change it in Settings → Plan & billing instead. |
| `price_not_configured` | 422 | That plan, tier and interval is not available yet. |
| `billing_not_configured` | 503 | Billing is not available on this server. |

The Checkout page accepts promotion codes. Every invoice is listed in **Manage billing**.

## Renewals

Monthly plans renew every month and yearly plans every year, until cancelled. Each paid invoice adds that period's credits to your balance. Unused credits are not removed at renewal.

## Changing plan or tier

Each account has one subscription. Once you have it, the plan buttons change it instead of starting a second one, and `POST /v1/billing/subscribe` answers `409 subscription_exists`.

1. Open Settings → Plan & billing. The box at the top shows your plan, page tier, billing period and renewal date.
2. Pick the page tier and Monthly or Yearly you want.
3. Click the button on the plan card and confirm:

| Button | When | What happens |
| --- | --- | --- |
| **Upgrade to Starter** / **Upgrade to Growth** | Nothing goes down and something goes up: more pages per month, Starter to Growth, or Monthly to Yearly | The change starts now. |
| **Switch at renewal** | Anything else: fewer pages, Growth to Starter, Yearly to Monthly, or a mix (for example Growth with fewer pages) | The change starts on your renewal date. |
| **Your current plan** | The combination you have now | Disabled. |
| **Starts at renewal** | The change you already scheduled | Disabled. |

### Upgrades

- The new plan and its limits apply at once.
- You are charged at once for the difference: the new price for the rest of the current billing period, minus the unused part of the old price. When you move from Monthly to Yearly, a new yearly period starts that day and you pay the year minus the unused part of the current month.
- When that payment succeeds, you get extra credits for the rest of the current period, in proportion to the prorated charge: the difference between the new and the old tier, times the share of the period that is left. Example: 10k to 150k monthly halfway through the month adds 70,000 credits; on the first day, about 140,000; on the last day, almost none. The full new allowance arrives at the renewal.
- Monthly to Yearly: the year's credits, minus the unused rest of the current month. Example: 10k monthly to 10k yearly halfway through the month adds 115,000 (120,000 minus 5,000).
- From the next renewal on, each paid invoice adds the full credits of the new tier.
- If the card is declined, nothing changes and nothing is charged: "Your card was declined, so your plan didn't change." Update your card in **Manage billing** and try again.

### Downgrades

- The change is scheduled for your renewal date. Until then you keep your current plan, its limits and your credits. There is no refund for the current period.
- The box shows "Changes to <plan, tier, period> on <date>". Click **Keep current plan** to drop the scheduled change.
- At the renewal you are billed the new price, and that invoice adds the new tier's credits.

Changes are not possible while the subscription is set to cancel (resume it first) or while a payment is overdue (update your card first).

## Manage billing

**Manage billing** (Settings → Plan & billing, team owner only) opens the Stripe customer portal. There you can:

- download invoices and receipts,
- add or change your payment method,
- update your billing details,
- cancel your subscription.

Plan and tier changes are made in SEOFix, not in the portal. When you leave the portal you return to `/settings#billing`.

Agents can get a portal link for you with `POST /v1/billing/portal`:

```bash
curl -X POST https://api.seofix.ai/v1/billing/portal \
  -H "Authorization: Bearer $SEOFIX_API_KEY"
```

```json
{ "url": "https://billing.stripe.com/p/session/..." }
```

It answers `409 no_billing_account` if you have never bought a plan or credits, and `403 not_team_owner` for members.

## Cancelling

Cancel in **Manage billing** → Cancel subscription. The cancellation takes effect at the end of the current billing period; until then the box shows "Cancels on <date>" and you keep your plan and credits. Click **Resume subscription** before that date to keep it.

If a downgrade is scheduled and the portal does not offer Cancel subscription, click **Keep current plan** first, then cancel.

When the subscription ends, the team moves to the Free plan:

- Nothing is deleted: sites, audits, reports and members stay.
- Credits already in your balance stay.
- Limits drop to Free: 1 site, 1 member, 500 pages per audit. You cannot add sites or invite members above the limits; existing ones are not removed.
- Scheduled monitoring stops running. Each skipped slot shows "The last scheduled audit was skipped: your plan doesn't include monitoring."

## Failed payments

If a renewal payment fails, the subscription becomes past due and Settings → Plan & billing shows "Your last payment failed." with an **Update payment method** button that opens Manage billing. Stripe retries the charge. While it is past due, the team keeps its plan, but that invoice's credits are added only once it is paid, and plan changes are blocked. If the subscription is then cancelled for non-payment, the team moves to Free as described above.

## Refunds

Refunds are covered in our [Terms of Service](https://seofix.ai/legal/terms#refunds). Questions: hello@seofix.ai.

## Related

- [Plans and credits](https://seofix.ai/help/plans-and-credits.md)
- [Teams and roles](https://seofix.ai/help/teams-and-roles.md)
- [Account and data](https://seofix.ai/help/account-and-data.md)
