How It Works
A subscription’spayment_behavior and collection_method decide whether it waits for payment. Only the combinations below are accepted; any other pairing fails with HTTP 400 and no subscription is created.
If the first invoice is paid at creation, or there is nothing to pay up front (for example, a
$0 plan), the subscription is active straight away, whichever behavior you chose.
While a subscription is incomplete:
- Entitlements: the plan’s features are not returned by Get customer entitlements.
- Credit grants: the plan’s credit grants are held and are not added to the customer’s wallet.
- Billing periods: the subscription does not move to its next billing period or raise period-end invoices.
- Search results: Query subscriptions returns only
activesubscriptions by default. Pass"subscription_status": ["incomplete"]to list incomplete ones.
Creating a Subscription That Waits for Payment
To charge a saved payment method and wait for the charge to succeed, useallow_incomplete:
incomplete along with its first invoice:
"collection_method": "send_invoice" with "payment_behavior": "default_incomplete".
To reject the signup when the charge fails, use error_if_incomplete. The request returns:
Activating an Incomplete Subscription
The subscription becomesactive as soon as its first invoice is paid in full, whether the payment comes from a gateway or is recorded against the invoice. To record a payment made outside Flexprice, such as a bank transfer:
- Sets the subscription to
active. - Makes the plan’s entitlements available to the customer.
- Applies the plan’s held credit grants to the customer’s wallet.
- Sends the
subscription.activatedwebhook.
When an Active Subscription Becomes Incomplete
Subscriptions created withallow_incomplete, error_if_incomplete or default_incomplete keep waiting for payment at every renewal, not only at signup. An active subscription moves back to incomplete when its renewal invoice goes unpaid:
charge_automatically: as soon as the renewal charge fails.send_invoice: shortly after the renewal invoice passes its due date.
incomplete, Flexprice sends the subscription.updated webhook. Paying the renewal invoice in full makes the subscription active again and applies the held credits.
With error_if_incomplete, a failed renewal charge never returns an error, because renewals run in the background. It follows the allow_incomplete path above.
Subscriptions created with default_active stay active when a renewal invoice is unpaid.
Ending an Incomplete Subscription
An incomplete subscription does not expire. It staysincomplete until the invoice is paid or the subscription is cancelled.
- Cancel it: call Cancel subscription. An incomplete subscription can be cancelled like any other.
- Cancel it automatically: enable
auto_cancellation_enabledin thesubscription_configsetting. Flexprice cancels subscriptions whose invoices are still unpaidgrace_period_daysafter the due date.
Voiding the first invoice does not activate or cancel the subscription. It stays
incomplete, so cancel it as well if the customer is not going ahead.Limitations
- Customer portal: the first invoice of an incomplete subscription cannot be paid from the customer portal. Collect the payment through your gateway or record it with Create payment. Renewal invoices can be paid from the portal.
- Stripe invoice sync: when Stripe invoice sync is enabled, Stripe collects the payment and Flexprice does not charge the invoice itself. An
allow_incompleteorerror_if_incompletesubscription with an amount due is then created asincomplete, even witherror_if_incomplete, and becomesactivewhen the invoice is paid. - Fixed combinations:
default_incompleteworks only withsend_invoice.allow_incompleteanderror_if_incompletework only withcharge_automatically.
Related Articles
Record Payment for Subscription
How collection methods, payment behaviors and wallet payments combine.
Trialing
How a trial subscription waits for its first paid invoice when the trial ends.
Subscriptions
Subscription statuses and how Flexprice bills each one.
Settings
Configure the grace period and auto-cancellation for unpaid invoices.

