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

# "Subscription Required" and the locked plan screen

> Why one action opens an upgrade modal while another replaces the whole app, and which pages stay reachable either way.

export const Screenshot = ({id, alt, caption, frame = 'browser', url, marks = [], lang = 'en', workspace = 'northwind-outbound'}) => {
  const src = `/images/screenshots/${lang}/${id}.png`;
  const chrome = url ? `app.pipelime.ai/${workspace}${url}` : 'app.pipelime.ai';
  return <figure className={`pl-shot pl-shot--${frame} not-prose`}>
      <div className="pl-shot__frame">
        {frame !== 'bare' && <div className="pl-shot__bar">
            <span className="pl-shot__dots">
              <span className="pl-shot__dot" />
              <span className="pl-shot__dot" />
              <span className="pl-shot__dot" />
            </span>
            <span className="pl-shot__url">{chrome}</span>
          </div>}
        <div className="pl-shot__media">
          <img src={src} alt={alt} loading="lazy" />
          {marks.map(mark => <span key={mark.n} className="pl-shot__mark" style={{
    left: `${mark.x}%`,
    top: `${mark.y}%`
  }} aria-hidden="true">
              {mark.n}
            </span>)}
        </div>
      </div>
      {caption && <figcaption className="pl-shot__caption">{caption}</figcaption>}
    </figure>;
};

Two screens tell you your plan is in the way, and they are not the same problem. One is a
dialog that opens over the page you were on and blocks the one thing you clicked. The other
is the **Choose your plan** screen taking over the window, and it is there on every page you
open until the billing behind the workspace is sorted out.

<div className="pl-availability">
  <div className="pl-availability__row">
    <div className="pl-availability__label">Where</div>
    <div className="pl-availability__value"><span className="pl-path">Header<span className="pl-path__sep">→</span>Upgrade</span></div>
  </div>

  <div className="pl-availability__row">
    <div className="pl-availability__label">Your role needs</div>
    <div className="pl-availability__value">Read access to Plans <code>read-subscriptions</code>. Admin, Member and Viewer have it by default.</div>
  </div>

  <div className="pl-availability__row">
    <div className="pl-availability__label">To change</div>
    <div className="pl-availability__value"><code>update-subscriptions</code> on top of the permission above.</div>
  </div>

  <div className="pl-availability__row">
    <div className="pl-availability__label">Partner-branded workspaces</div>
    <div className="pl-availability__value">Not shown in partner-branded workspaces.</div>
  </div>

  <div className="pl-availability__note">If you cannot find this in your sidebar, your workspace may have a custom menu configuration. Contact support and we will check it for you.</div>
</div>

## The dialog that blocks one action

This dialog does not belong to any one screen. The app watches what the server sends back
for a refusal on billing grounds, and puts this in front of you wherever that happens:
including on screens with nothing to do with billing. Nothing navigates, the page behind it
stays where it was, and the thing you clicked did not happen.

The heading says which situation you are in. With no subscription on your account it reads
**Subscription Required**, and the button says **View Plans**. With one, the heading reads
**Upgrade Required** and the button says **Upgrade Now**. Both buttons go to the same place,
the **Choose your plan** screen, and under either of them sits the same line: "Cancel
anytime. No commitments."

The sentence in the middle can name what you were blocked from, in bold, but only when the
refusal carried a name to print. Most limits in the product report which resource you are
over without a name the screen can show, so the wording you usually get is the generic one
about premium features. Connecting a MercadoLibre account is the exception: that flow hands
the dialog the channel's name.

<Screenshot id="billing/subscription-required-and-lockout--modal" frame="bare" alt="A dialog headed 'Subscription Required' over a crown animation, reading 'Unlock MercadoLibre and many other premium features by subscribing to our Pro plan.', with a View Plans button and the line 'Cancel anytime. No commitments.'" caption="No subscription on the account, so it reads Subscription Required and View Plans. This is the one block that names what it was blocking." />

Closing the dialog (the button in its corner, or a click outside it) does only that. It
does not retry what you clicked and it does not change your plan or your balance, so
whatever was blocked is still blocked.

## The wall that replaces the app

The second screen is not raised by anything you clicked. The app checks two things on every
page it draws:

* your credit allowance comes back as a number at or below zero, or
* there is a subscription on the account whose billing status is not active, trialing or
  past due.

Either one, on any page that is not exempt, replaces the sidebar, the breadcrumb and the
page you asked for with the **Choose your plan** screen. Only the header survives.

Two things never trip it. An unlimited allowance arrives as no number at all rather than as
a zero. And a balance that has not finished loading is not a zero either, so the wall does
not flash up while your figures are still on their way in.

<Screenshot id="billing/subscription-required-and-lockout--lockout" url="/dashboard" workspace="calder-freight" alt="The Choose your plan screen filling the whole content area, with the app header still above it and no sidebar or breadcrumb" caption="The address bar still says /dashboard. The dashboard is not what rendered." />

The exempt pages are a fixed list: the workspace picker, your account's **Profile**,
**Subscription**, **Billing** and **Notifications** tabs, anything under
**Company Settings**, and the **Whitelabel** screens. That is how a locked-out owner still
reaches billing. The **Calendar** tab sits in the same account sidebar and is not on the
list.
[What an invited member sees while the wall is up](/en/troubleshooting/locked-out-choose-your-plan)
is its own page.

<Note>
  A partner-branded workspace gets the same wall, but where the plan cards would be it
  offers the partner's **Schedule a Call** link instead. Plans there are the partner's
  business, not something you pick on this screen.
</Note>

## Why one blocks everything and the other does not

The wall's credit test and a credit-costing action's refusal read the same allowance figure
and ask different questions of it.

An action is refused once you have spent as much as the allowance grants for the period.
Spending does not touch the allowance itself, and the next period starts the count again.
So a workspace on a paid plan can be refused every credit-costing action all week and still
have the rest of the app.

The wall waits for the allowance itself to be zero, which a monthly grant does not become
by being spent. It becomes zero when nothing is granting credits any more: a time-boxed
trial grant that has reached its expiry date, with no paid plan behind it. That is the usual
way a workspace nobody has paid for yet ends up here, and [what your trial credits cover and
when they stop counting](/en/billing/free-trial-credits) is the page for it.

The other way to get the dialog with no wall behind it is a limit on one particular
resource: connecting more accounts of a channel than your plan allows, or ordering more
domains or mailboxes on PipeLime managed infrastructure than it grants. Those are counted
separately from credits, so hitting one blocks that action and leaves the rest of the app
alone.

## Getting out

Both roads end on the same screen: the dialog's button opens **Choose your plan**, and the
wall is that screen. Picking a plan there sends you through checkout. If there is already a
subscription on the account, the screen also carries **Manage billing in Stripe**, which
opens the billing portal. [Changing plan, buying add-ons or
cancelling](/en/billing/change-plan-or-cancel) is its own page.

## Troubleshooting

<AccordionGroup>
  <Accordion title="The dialog opened on a screen that has nothing to do with billing">
    Expected. It is wired to the app's requests rather than to any one page, so it opens
    wherever you happened to be when something was refused: connecting a channel account,
    ordering a mailbox, or anything that costs credits.
  </Accordion>

  <Accordion title="The dialog does not say what I am blocked from">
    That is the common case, not a broken screen. The dialog names something only when the
    refusal includes a name to show, and most limits report which resource you are over
    without one.
  </Accordion>

  <Accordion title="I sorted out billing and the plan screen is still there">
    The app re-reads your balance on its own every couple of minutes, and re-reads the
    subscription when you come back from checkout; reloading the page forces both at once.
    If the wall survives a reload, the account is still failing one of the two tests above:
    most often a subscription whose status is not active, trialing or past due.
  </Accordion>
</AccordionGroup>

## Related

<CardGroup cols={2}>
  <Card title="Choose your plan" icon="lock" href="/en/troubleshooting/locked-out-choose-your-plan">
    What put you there, which pages stay open, and what an invited member sees instead.
  </Card>

  <Card title="Free trial credits" icon="hourglass" href="/en/billing/free-trial-credits">
    Why a workspace nobody has paid for yet can already hit the wall.
  </Card>

  <Card title="Change plan, add-ons or cancel" icon="credit-card" href="/en/billing/change-plan-or-cancel">
    Where both roads in this page actually lead.
  </Card>
</CardGroup>
