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

# Subscriptions with Stripe

> Build subscription flows in Zite and keep Stripe subscription status, access, and invoices current.

## How it works

Use subscriptions when customers pay on a recurring schedule for access, memberships, retainers, plans, or ongoing services. Zite can build the subscription flow, store the current state, and create the dashboards or support tools your team needs.

Subscriptions change after checkout. Renewals, failed payments, cancellations, trials, pauses, and plan changes can all happen in Stripe. Use Zite Database to track the current state, and use [Stripe webhooks](/help/integrations/stripe-webhooks) to keep it updated.

## Plan the subscription flow

Before you build, decide:

* Which plans, products, or tiers customers can buy
* Whether customers get a trial
* What should happen when payment succeeds
* What access should change when payment fails
* Whether customers can change, pause, or cancel a plan
* Which dashboards support, finance, and leadership need

You can ask Zite:

```text theme={null}
Create a monthly subscription flow for members. Customers should choose a plan,
pay with Stripe, and get access when the subscription is active. Build an admin
dashboard for active, trialing, past due, canceled, and unpaid subscriptions.
```

## Create a subscriptions table

Ask Zite to create a table with the Stripe subscription state your app needs.

Minimum recommended fields include:

| Field                    | What to store                                                                                       |
| ------------------------ | --------------------------------------------------------------------------------------------------- |
| `stripe_subscription_id` | The Stripe subscription ID. Use this as the stable key for updates.                                 |
| `stripe_customer_id`     | The Stripe customer ID connected to the subscription.                                               |
| `customer_email`         | The customer's email address.                                                                       |
| `app_user_id`            | The matching user, member, company, attendee, or account in your Zite app.                          |
| `status`                 | The current subscription status, such as `active`, `trialing`, `past_due`, `canceled`, or `unpaid`. |
| `price_id`               | The Stripe price ID for the plan or tier.                                                           |
| `current_period_end`     | When the current paid or trial period ends.                                                         |
| `cancel_at_period_end`   | Whether the subscription is scheduled to cancel at the end of the period.                           |
| `access_status`          | Whether the customer should have access in your app.                                                |
| `last_event_id`          | The most recent Stripe event ID processed for this subscription.                                    |

You can ask Zite:

```text theme={null}
Create a Stripe subscriptions table. Track subscription ID, customer ID,
customer email, app user ID, status, price ID, current period end,
cancel_at_period_end, access status, and last event ID.
```

## Build subscription checkout

<Steps>
  <Step title="Connect Stripe">
    If Stripe is not connected yet, follow [How to Integrate with Stripe](/help/integrations/stripe).
  </Step>

  <Step title="Choose the plan experience">
    Tell Zite whether customers should choose one plan, compare multiple tiers, apply discounts, or start with a trial.
  </Step>

  <Step title="Choose embedded or hosted checkout">
    Ask for `Stripe Checkout` when you want a Stripe-hosted page. Ask for `embedded checkout` when payment should happen inside your Zite app.

    See [embedded checkout vs Stripe-hosted checkout](/help/integrations/stripe#embedded-checkout-vs-stripe-hosted-checkout).
  </Step>

  <Step title="Save the subscription">
    Ask Zite to save the Stripe customer, subscription, price, status, and period fields to the subscriptions table.
  </Step>

  <Step title="Connect access rules">
    Tell Zite how subscription status controls access.

    For example:

    ```text theme={null}
    Give customers access when status is active or trialing. Show a billing
    issue banner when status is past_due. Remove access when status is canceled
    or unpaid.
    ```
  </Step>

  <Step title="Test subscription checkout">
    Because Stripe connects to your live account, create a 100% off coupon code in Stripe and use it at checkout. Then confirm:

    * the customer and subscription appear in Stripe
    * the subscription appears in Zite
    * access rules apply correctly
    * dashboards, emails, and support views update correctly
  </Step>

  <Step title="Add webhooks">
    Add [Stripe webhooks](/help/integrations/stripe-webhooks) so renewals, failed payments, cancellations, and plan changes update the subscriptions table after checkout.
  </Step>
</Steps>

## What your team can manage

With subscription data in Zite, your team can build:

* A billing support dashboard for payment issues and cancellation questions
* A member portal that shows plan, renewal date, and access status
* Revenue dashboards for active subscriptions, trials, churn, and failed payments
* Internal workflows for renewals, upgrades, downgrades, and account reviews

Learn more in Stripe's [subscription webhook guide](https://docs.stripe.com/billing/subscriptions/webhooks).

<p className="zite-related-topics-heading">Related topics</p>

<div className="zite-related-topics">
  <a href="/help/integrations/stripe">How to Integrate with Stripe</a>
  <a href="/help/integrations/stripe-webhooks">Stripe webhooks</a>
  <a href="/help/database/overview">Zite Database</a>
  <a href="/help/platform/workflows/overview">Workflows</a>
</div>
