---
title: "create subscription · RUAL Documentation"
description: "Starts recurring billing for a customer who already has a payment method on file. To collect the card and subscribe in one step, use create checkout in…"
canonical: https://docs.rual.nl/block-types/stripe/stripeconnection_subscriptions_create
language: en
---

# create subscription

This block is part of the [`stripe`](https://docs.rual.nl/block-types/stripe) group and was last modified in core [`v15.0.0`](https://docs.rual.nl/core-versions/150000).

Starts recurring billing for a customer who **already has a payment method on file**. To collect the card and subscribe in one step, use **create checkout** in `subscription` mode instead.

- flow `flow`

- connection required `stripeconnection`

- customer id required `value`

- price id `value` price_… : the plan to subscribe to. Create Prices in the Stripe dashboard.

- quantity `number` Seats, units. Default 1.

- items `array ` Full Stripe items for a multi-plan subscription, e.g. `[{"price":"price_1","quantity":2}]`. Wins over price id.

- payment method id `value` pm_… : which saved method to bill. Defaults to the customer's default.

- trial days `number` Free days before the first charge.

- coupon `value` A coupon id to apply.

- allow incomplete `boolean` Create the subscription even if the first charge fails, leaving it `incomplete`. Without this a declined card fails the whole call and no subscription exists to chase.

- meta data `object`

- idempotency key `value` Optional. Reusing a key makes Stripe replay the first response instead of creating a second object : wire something stable per order, like the order GUID.

- flow `flow`

- connection `stripeconnection`

- is active `condition` True for `active` AND `trialing` : branching on status == active alone locks every trial user out.

- status `value` `trialing`, `active`, `past_due`, `canceled`, `unpaid`, `incomplete`, `paused`.

- subscription id `value`

- cancels at period end `condition` True when the subscription is running out rather than renewing. Resume clears it.

- period end `number` Unix timestamp : when the customer's paid-for access runs out, and when the next charge falls due.

- period start `number` Unix timestamp.

- canceled at `number` Unix timestamp of when cancellation was requested. 0 when it has not been.

- trial end `number` Unix timestamp. 0 when there is no trial.

- price id `value` The plan on the first item : what a single-plan subscription is subscribed to.

- items `array ` Every subscription item, for the multi-plan case.

- customer id `value`

- latest invoice id `value` The invoice a credit note would be issued against.

- meta data `object`

- subscription `object`

- success `condition`

- error `value` Stripe's own message, or a sentinel like MISSING_SESSION_ID for a problem in the wiring.

- error code `value` Stripe's machine-readable code, e.g. `card_declined`, `resource_missing`.

- decline code `value` Why the bank refused, e.g. `insufficient_funds`. Only set on a declined card.

| `subscribe` |
| --- |
| `recurring` |
| `start subscription` |
| `billing` |

### Version history

Introduced in [`v15.0.0`](https://docs.rual.nl/core-versions/150000).

### Service documentation
