---
title: Create time-based subscriptions
description: >-
  Learn how to create an app subscription that charges merchants at set
  intervals.
source_url:
  html: >-
    https://shopify.dev/docs/apps/launch/billing/manual-pricing/subscription-billing/create-time-based-subscriptions
  md: >-
    https://shopify.dev/docs/apps/launch/billing/manual-pricing/subscription-billing/create-time-based-subscriptions.md
---

# Create time-based subscriptions

**Preferred approach:**

For public apps, use [Shopify App Pricing](https://shopify.dev/docs/apps/launch/billing/shopify-app-pricing). The Billing API is still supported for existing apps and outlier pricing models Shopify App Pricing doesn't cover.

A time-based subscription is a pricing model that charges a consistent, recurring amount for a service. Shopify offers billing intervals for every 30 days and every 365 days.

Merchants must approve the pricing plan. After accepting the charges, the merchant is redirected to a URL that you provide.

***

## Requirements

* Your app can make [authenticated requests](https://shopify.dev/docs/api/admin-graphql#authentication) to the GraphQL Admin API.

***

## Step 1: Create the subscription

1. [Refer to an example](https://shopify.dev/docs/api/admin-graphql/latest/mutations/appSubscriptionCreate#examples-Create_a_subscription_for_an_app_on_a_recurring_pricing_plan_only_) of creating an app subscription.

2. Make a request to the `appSubscriptionCreate` mutation with the following information:

   * [`name`](https://shopify.dev/docs/api/admin-graphql/latest/mutations/appSubscriptionCreate#argument-name)
   * [`returnURL`](https://shopify.dev/docs/api/admin-graphql/latest/mutations/appSubscriptionCreate#argument-returnurl)

3. Use the [`appRecurringPricingDetails`](https://shopify.dev/docs/api/admin-graphql/latest/input-objects/AppPlanInput#field-appplaninput-apprecurringpricingdetails) field on the line item's plan to provide the following information:

   * [`currencyCode`](https://shopify.dev/docs/apps/launch/billing#supported-currencies)

   * `price`

   * `interval`

     **Note:**

     The `interval` field accepts `ANNUAL` or `EVERY_30_DAYS`. If not provided, then the default of `EVERY_30_DAYS` is applied.

***

## Step 2: Monitor subscription updates

To receive a notification when a subscription status changes, such as when a charge is successful, subscribe to the GraphQL Admin API's [`APP_SUBSCRIPTIONS_UPDATE`](https://shopify.dev/docs/api/admin-graphql/latest/enums/webhooksubscriptiontopic#value-appsubscriptionsupdate) webhook topic.

***

## Next steps

[Discounts\
\
](https://shopify.dev/docs/apps/launch/billing/subscription-billing/offer-subscription-discounts)

[Learn about offering subscription discounts.](https://shopify.dev/docs/apps/launch/billing/subscription-billing/offer-subscription-discounts)

[Prorated and deferred charges\
\
](https://shopify.dev/docs/apps/launch/billing/subscription-billing)

[Learn how Shopify handles prorating and deferring app subscription charges.](https://shopify.dev/docs/apps/launch/billing/subscription-billing)

***
