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

# Trials, grace periods & account suspension

> How ModuleX trials work: the 7-day Pro and Max trial and who is eligible, the 30-day window for free accounts, and the 3-day grace period before a past-due account is suspended.

export const MediaEmbed = ({id, type = 'screenshot', caption = '', ext, ratio = '16 / 9'}) => {
  const isVideo = type === 'video' || type === 'app_video';
  const resolvedExt = ext || (isVideo ? 'mp4' : type === 'screenshot' ? 'webp' : 'svg');
  const src = 'https://media.modulex.dev/' + id + '.' + resolvedExt;
  const [status, setStatus] = useState('loading');
  const [isDev, setIsDev] = useState(false);
  const [inView, setInView] = useState(false);
  const boxRef = useRef(null);
  useEffect(() => {
    if (typeof window === 'undefined') return;
    const h = window.location.hostname;
    setIsDev(h === 'localhost' || h === '127.0.0.1' || h.endsWith('.mintlify.app'));
  }, []);
  useEffect(() => {
    if (inView) return;
    if (typeof IntersectionObserver === 'undefined') {
      setInView(true);
      return;
    }
    const el = boxRef.current;
    if (!el) return;
    const io = new IntersectionObserver(entries => {
      if (entries.some(e => e.isIntersecting)) {
        setInView(true);
        io.disconnect();
      }
    }, {
      rootMargin: '300px'
    });
    io.observe(el);
    return () => io.disconnect();
  }, [inView]);
  if (status === 'missing') {
    if (!isDev) return null;
    return <div style={{
      display: 'flex',
      flexDirection: 'column',
      justifyContent: 'center',
      gap: '0.4rem',
      padding: '1rem 1.25rem',
      margin: '1.25rem 0',
      width: '100%',
      aspectRatio: ratio,
      boxSizing: 'border-box',
      border: '1px dashed rgba(128,128,128,0.45)',
      borderRadius: '0.75rem',
      background: 'rgba(128,128,128,0.06)',
      color: 'currentColor',
      fontSize: '0.85rem',
      lineHeight: 1.45
    }}>
        <div style={{
      display: 'flex',
      alignItems: 'center',
      gap: '0.5rem',
      opacity: 0.75
    }}>
          <span aria-hidden="true">🎬</span>
          <code style={{
      fontSize: '0.75rem'
    }}>{id}</code>
          <span style={{
      fontSize: '0.65rem',
      textTransform: 'uppercase',
      letterSpacing: '0.04em',
      padding: '0.1rem 0.4rem',
      borderRadius: '0.4rem',
      background: 'rgba(128,128,128,0.18)'
    }}>
            {type}
          </span>
        </div>
        <div style={{
      opacity: 0.9
    }}>{caption || 'Media not uploaded yet.'}</div>
        <div style={{
      fontSize: '0.7rem',
      opacity: 0.5
    }}>
          Upload to R2 as <code>{id}.{resolvedExt}</code> — preview only, hidden in production.
        </div>
      </div>;
  }
  const mediaStyle = {
    display: status === 'loaded' ? 'block' : 'none',
    width: '100%',
    height: 'auto',
    borderRadius: '0.75rem'
  };
  const media = isVideo ? <video src={inView ? src : undefined} autoPlay loop muted playsInline preload="metadata" onLoadedData={() => setStatus('loaded')} onError={() => setStatus('missing')} style={mediaStyle} /> : <img src={inView ? src : undefined} alt={caption} onLoad={() => setStatus('loaded')} onError={() => setStatus('missing')} style={mediaStyle} />;
  return <figure style={{
    margin: '1.25rem 0'
  }}>
      <div ref={boxRef} style={status === 'loaded' ? {
    width: '100%'
  } : {
    width: '100%',
    aspectRatio: ratio,
    borderRadius: '0.75rem',
    background: 'rgba(128,128,128,0.06)'
  }}>
        {media}
      </div>
      {status === 'loaded' && caption ? <figcaption style={{
    marginTop: '0.5rem',
    textAlign: 'center',
    fontSize: '0.85rem',
    opacity: 0.7
  }}>
          {caption}
        </figcaption> : null}
    </figure>;
};

This page covers the three moments where time and payment change what your account can do: starting a trial, using a free account, and what happens when a payment fails. None of it removes your work; it changes whether new managed usage can run until you act.

<CardGroup cols={3}>
  <Card title="Trials" icon="hourglass-start" href="#the-7-day-pro-and-max-trial">
    A 7-day Pro or Max trial, once per organization, for eligible accounts.
  </Card>

  <Card title="Free accounts" icon="gift" href="#free-accounts-and-the-30-day-window">
    Free accounts get a one-time credit allowance with a 30-day window.
  </Card>

  <Card title="Failed payments" icon="triangle-alert" href="#failed-payments-grace-and-suspension">
    A 3-day grace period before a past-due account is suspended.
  </Card>
</CardGroup>

## The 7-day Pro and Max trial

You can start a **7-day trial** of a paid plan to use [Pro or Max](/billing/plans) allowances before you pay. The trial is attached to your organization and runs for seven days from the moment you start it.

<MediaEmbed id="MX-MEDIA-1300" type="screenshot" caption={"The billing settings screen showing the trial offer on the Pro and Max plan cards at checkout."} />

### Which plans can be trialed

The trial is available on the **Pro** and **Max** plans only. The Free plan has no trial, and **Enterprise** plans are sales-led, so they are not started through a self-serve trial.

<CardGroup cols={2}>
  <Card title="Pro" icon="circle-check">
    Eligible for the 7-day trial.
  </Card>

  <Card title="Max" icon="circle-check">
    Eligible for the 7-day trial.
  </Card>

  <Card title="Free" icon="circle-x">
    No trial. See [free accounts](#free-accounts-and-the-30-day-window).
  </Card>

  <Card title="Enterprise" icon="circle-x">
    Sales-led. [Talk to sales](/security/enterprise) instead.
  </Card>
</CardGroup>

### Who is eligible

Eligibility is checked when you reach checkout. Two conditions both have to be true:

<Steps>
  <Step title="Your organization has never trialed before">
    A trial is offered **once per organization**. If your organization has used a trial before, it will not be offered again.
  </Step>

  <Step title="The owner has never subscribed before">
    The organization owner must never have held a paid subscription. If the owner has subscribed to a paid plan before — in this or another organization — the trial is not offered.
  </Step>
</Steps>

If either condition is not met, you can still subscribe to Pro or Max; you simply start paying immediately instead of starting with a trial.

<Accordion title="Why an eligible plan might still not show a trial at checkout">
  Even when your organization and owner are both eligible, the trial only appears if the selected plan's price is configured for it. If you expected a trial and do not see one on an otherwise eligible account, contact support before subscribing so you are not charged earlier than you intended.
</Accordion>

### What happens when the trial ends

A trial requires a payment method to convert into a paid subscription. If no payment method is on file when the trial ends, the subscription is **cancelled** rather than charged.

<CardGroup cols={2}>
  <Card title="Payment method on file" icon="credit-card">
    The trial converts to a paid Pro or Max subscription and billing begins.
  </Card>

  <Card title="No payment method on file" icon="ban">
    The subscription is cancelled at the end of the trial — you are not charged.
  </Card>
</CardGroup>

To add a payment method or change your plan before the trial ends, open the customer portal from your billing settings. See [Subscriptions & Stripe](/billing/subscription-lifecycle) for how the subscription lifecycle and customer portal work.

## Free accounts and the 30-day window

A free account does not run on a monthly allowance the way a paid plan does. Instead, a free account receives a **one-time** credit allowance, and that allowance is usable for **30 days** from when the account was created.

<CardGroup cols={2}>
  <Card title="One-time credit allowance" icon="coins">
    Free accounts get a fixed, one-time grant of [credits](/billing/credits) — not a monthly top-up.
  </Card>

  <Card title="30-day window" icon="calendar-days">
    After 30 days from account creation, the free credit allowance is no longer available for new managed usage.
  </Card>
</CardGroup>

After the 30-day window, your free credits no longer cover new managed usage such as runs, agent turns, or managed knowledge retrieval. Your workflows, knowledge bases, and saved work stay in place — what stops is the ability to spend free credits on new managed activity.

<Tip>
  To keep running managed usage past the free window, [upgrade to Pro or Max](/billing/plans). If you are eligible, you can start with the [7-day trial](#the-7-day-pro-and-max-trial) above.
</Tip>

<Note>
  Free credits are a one-time grant tied to the account, not a balance that refills. They are separate from the prepaid [wallet](/billing/wallet), which is used by paid plans for overage.
</Note>

## Failed payments, grace, and suspension

If a payment fails on a paid subscription, ModuleX does not switch your account off immediately. There is a short **grace period** first, and only then is the account suspended.

<MediaEmbed id="MX-MEDIA-1301" type="image" caption={"A horizontal timeline showing the dunning flow from a failed payment through the grace period to suspension, and the restore path."} />

### The dunning timeline

<Steps>
  <Step title="A payment fails">
    On the **first** failed payment in the billing cycle, a grace period begins. A repeated retry of the same failed payment does not restart the clock — the grace period is anchored to that first failure.
  </Step>

  <Step title="Grace period — 3 days">
    For **3 days** after the first failure, your account keeps working normally while the payment is retried. Use this time to fix the payment method in the customer portal.
  </Step>

  <Step title="Suspension">
    If the payment is still unpaid after the 3-day grace period, the organization's operations are **suspended**. While suspended, new managed usage is blocked.
  </Step>
</Steps>

### What "suspended" means in practice

A suspended organization cannot start new managed usage. Attempts to run a workflow, take an [Assistant](/assistant/overview) turn, use the [AI Composer](/concepts/ai-composer), or run managed knowledge retrieval are turned away by the [usage gate](/billing/usage-gating) — even if the plan's credit allowance was not used up.

<Warning>
  While an organization is suspended, calls to the managed-usage surfaces return a credit-exhausted denial (HTTP `402`). The denial uses the standard billing envelope documented in [Usage gating & limits](/billing/usage-gating) and [Errors & status codes](/api-reference/errors). Plain read or settings requests are not affected by the billing gate.
</Warning>

The denial returned on a suspended account looks like the credit-exhausted denial below. See [Usage gating & limits](/billing/usage-gating) for the full set of billing denial shapes.

```json Credit-exhausted denial (HTTP 402) theme={null}
{
  "code": "credit_plan_exhausted",
  "layer": "credit",
  "key": "8f1c2d34-5e6f-4a7b-9c8d-0e1f2a3b4c5d",
  "current": null,
  "limit": 5000.0,
  "reason": "credit_plan_exhausted"
}
```

### Getting back to normal

When the outstanding payment succeeds, the suspension is **lifted automatically** and your account resumes.

<Note>
  Paying off a failed invoice **does not reset your usage or grant fresh credits**. Your account resumes the same billing period it was in, with the usage you had already recorded. This is deliberate — paying late lifts the suspension, it does not restart your allowance.
</Note>

To pay an outstanding invoice or update your card, open the customer portal from billing settings. The lifecycle, the customer portal, and how subscription changes are processed are covered in [Subscriptions & Stripe](/billing/subscription-lifecycle).

## Where this leaves your data

Trials ending, free windows closing, and suspensions all affect **new managed usage** — not the things you have already built.

<CardGroup cols={2}>
  <Card title="What pauses" icon="circle-pause">
    Starting new managed runs, Assistant and Composer turns, and managed knowledge retrieval, once a trial ends without payment, a free window closes, or an account is suspended.
  </Card>

  <Card title="What stays" icon="shield-check">
    Your workflows, knowledge bases, credentials, and history remain in place. Reading and managing them is not blocked by the billing gate.
  </Card>
</CardGroup>

## Frequently asked

<AccordionGroup>
  <Accordion title="Can I get a second trial by creating a new organization?">
    The trial is tied to both your organization and the owner. Because the owner must never have subscribed before, starting a new organization under the same owner does not re-open trial eligibility once that owner has held a paid plan.
  </Accordion>

  <Accordion title="Will I be charged when my trial ends?">
    Only if a payment method is on file. With a payment method, the trial converts to a paid subscription and billing begins. Without one, the subscription is cancelled at the end of the trial and you are not charged.
  </Accordion>

  <Accordion title="Do my free credits come back after 30 days?">
    No. Free credits are a one-time grant, not a refilling balance. To keep running managed usage past the 30-day window, [upgrade to Pro or Max](/billing/plans).
  </Accordion>

  <Accordion title="How long do I have after a failed payment before suspension?">
    Three days. The grace period is anchored to your first failed payment in the cycle, and an automatic retry of that same payment does not extend it.
  </Accordion>

  <Accordion title="I paid my overdue invoice — why is my usage still showing as used?">
    Paying lifts the suspension but does not reset your usage or grant new credits. You resume the same billing period you were in. If you need more capacity, top up your [wallet](/billing/wallet) or move to a higher [plan](/billing/plans).
  </Accordion>
</AccordionGroup>

## Related

<CardGroup cols={2}>
  <Card title="Plans & pricing" icon="tags" href="/billing/plans">
    Compare Free, Pro, Max, and Enterprise allowances and limits.
  </Card>

  <Card title="Credits & metering" icon="calculator" href="/billing/credits">
    What a credit is and exactly what consumes credits.
  </Card>

  <Card title="Usage gating & limits" icon="gauge" href="/billing/usage-gating">
    How the billing gate admits or denies managed usage.
  </Card>

  <Card title="Subscriptions & Stripe" icon="repeat" href="/billing/subscription-lifecycle">
    The subscription lifecycle, the customer portal, and Stripe.
  </Card>
</CardGroup>
