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.
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
- Open Settings → Plan & billing (
/settings#billing). - Choose Pages crawled per month: 10k, 50k, 150k, 500k, 1M or 2.5M+.
- Choose Monthly or Yearly. Yearly is 10 times the monthly price (2 months free).
- Click Choose Starter or Choose Growth. You go to a Stripe Checkout page.
- Pay. Stripe sends you back to
/settings?checkout=success#billing. If you leave checkout, you land on/settings?checkout=cancelled#billingand 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.
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:
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"}'
{ "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.
- Open Settings → Plan & billing. The box at the top shows your plan, page tier, billing period and renewal date.
- Pick the page tier and Monthly or Yearly you want.
- 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
". 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:
curl -X POST https://api.seofix.ai/v1/billing/portal \
-H "Authorization: Bearer $SEOFIX_API_KEY"
{ "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
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. Questions: [email protected].
Related
More in Teams & billing
Still stuck? Email [email protected] with your site and what you expected to see.