Skip to content

How to upgrade, downgrade, or cancel your plan

Plan changes flow through one screen — Settings → Billing. The mechanics differ depending on whether you’re going up, down, or all the way to Free. This guide covers all three plus how to back out of a scheduled change.

Upgrading (Free → paid, paid → higher paid)

Section titled “Upgrading (Free → paid, paid → higher paid)”
  1. Pick a plan

    Open Settings → Billing, find the tier you want, and click its Upgrade button. Toggle the Monthly / Annual selector first if you care which one you’re committing to.

  2. Review the preview

    The preview screen shows the dollar amount and confirms the new tier. Upgrades don’t have a downgrade-style impact summary — nothing gets paused on an upgrade.

  3. Pay

    In production, a real Stripe Checkout session opens — enter card details, complete the payment. In dev / staging (PAYMENT_PROVIDER=dev), a “Mock Stripe Checkout” dialog appears with the amount and target plan; click Pay to simulate. Either way, the new tier applies immediately on success.

  4. Verify the change

    The page refreshes with your new tier badge. Quotas, seat caps, schedule caps — all the new tier’s limits are live straight away.

Upgrades take effect immediately. There’s no scheduled-effective delay on going up.

Downgrades surface a preview of what the new tier breaks in your current setup. You see this before committing.

  1. Pick the lower tier and click its plan card

    A “Downgrade” preview screen opens.

  2. Read the impact summary

    Marriska computes how many of your current resources would exceed the target tier’s caps and shows them. The categories:

    • Schedules that would be paused
    • API keys that would be revoked
    • Agents that would be revoked
    • Notification contacts that would be deactivated
    • Seats that would put you over the limit
    • BYOK disabled (if the target tier doesn’t include BYOK)
    • History retention shrinking from N days to M days
  3. Resolve seat compliance first if needed

    If your seat count exceeds the target tier’s cap, the API rejects the change with a 409 and a message naming the count. Remove members under Inviting team members until you’re within the new cap, then try again.

  4. Confirm

    Click through to schedule the downgrade. A pending plan-change record is created and the change applies after a short delay (scheduled_effective_at).

When the change applies:

  • Schedules over the new cap are paused (not deleted) — they sit inactive on your Schedules page until you re-enable them after a future upgrade.
  • API keys over the new cap are revoked — any in-flight runs finish, but the keys won’t authenticate again.
  • Your tier badge updates and the new caps take effect.

The plan-change history under Billing lists every past change with timestamps.

Going to Free is a downgrade with kind = "cancel". The same impact preview shows what gets paused or revoked, plus:

  • BYOK stays available (Free includes BYOK in the catalog).
  • All paid features (priority queue, shared projects, SSO if you had Team) turn off.

Click through the preview the same way as a downgrade. The change is scheduled and applies after the same stub delay.

If you scheduled a downgrade or cancel and changed your mind, open Settings → Billing. Pending changes show with a “Cancel scheduled change” action.

  1. Open the scheduled change row

    Anything that hasn’t applied yet shows a “scheduled to apply” line with the effective time.

  2. Click cancel

    The pending plan-change record is marked canceled. Your current tier sticks. You can schedule a different change at any time — only one pending change exists per org at a time, so a new one automatically supersedes any previous pending request.

  • Enterprise: not purchasable through the in-app flow. Click Contact Us on the Enterprise card.
  • Switching billing cycle (monthly ↔ annual) without changing tier: not yet supported as its own action; the cycle is part of an upgrade transaction.
  • Refunds / pro-rating: handled outside this flow until real Stripe lands.