Subscriptions

Subscriptions link a customer to a subscription plan and automate recurring billing. Create one directly when you already have a Flint customer_id and a usable payment method for that customer; for Flint-hosted signup, sell the plan through a checkout session or payment link with plan_id instead. A subscription can start immediately, at a future time, or by importing an already-paid current period without charging.

A subscription is always in exactly one of six states:

status on subscriptionFinal values do not change again
incomplete
Created, but the first payment hasn't succeeded yet. Plans without a trial start here. Don't provision yet. Wait for the first subscription.payment_succeeded.
trialing
In the free trial. The card is saved but hasn't been charged. Provision access.
active
Paid and current. Provision access.
past_due
A renewal charge failed and Flint is retrying. Keep or degrade access (your call) and prompt the customer to update their card.
paused
Billing is suspended: by you, by the customer, or after retries ran out (if you configure that). Suspend access if your product pauses with billing.
canceledfinal
Either canceled immediately or reached the end of its final paid period. Revoke access.

Non-trial immediate subscriptions start as incomplete while Flint collects the first paid period, then move to active; grant access only once the subscription is active. From there, the lifecycle covers trialing, paused, past_due, and canceled. Pausing preserves remaining prepaid time, cancellation can take effect immediately or at period end, and failed renewals enter dunning, where Flint retries the payment before applying the owner-specific end action. A customer can hold multiple independent subscriptions to the same plan.

billing_schedule_owner is flint when Flint computes renewal dates and external when your integration supplies them. An external subscription with no next_billing_at keeps its lifecycle status and reports awaiting_billing_schedule: true; use the billing-schedule and skip-cycle endpoints to manage its timer. Past-due subscriptions can create idempotent, pollable manual payment retries.

See the Subscription billing guide for the full lifecycle and dunning behavior. Use webhooks like subscription.activated and subscription.past_due to drive entitlement changes.

The Subscription object#

Every field on a subscription, as returned by retrieve and carried by the endpoints below.

Attributes
awaiting_billing_scheduleboolean
billing_anchor_dayinteger
billing_schedule_ownerenumrequired
flintexternal
billing_schedule_waiting_started_atstring

RFC3339 timestamp.

cancel_at_period_endbooleanrequired
canceled_atstring

RFC3339 timestamp.

contract_end_atstring

RFC3339 timestamp.

contract_start_atstring

RFC3339 timestamp.

created_atstring

RFC3339 timestamp.

current_period_endstring
current_period_startstring
customerobject or null
customer_idstringrequired
external_reference_idstring

Caller-owned identifier for this resource in an external system.

line_itemsarray of object
merchant_idstring
metadatamap of string
next_billing_atstring

RFC3339 timestamp.

paused_atstring

RFC3339 timestamp.

payment_methodobject or null
payment_method_idstringrequired
plan_idstringrequired
service_locationobject
starts_atstring

RFC3339 timestamp.

statusenumrequired
trialingactivepausedpast_duecanceledincomplete
subscription_idstringrequired
subscription_planobject or null
trial_endstring
updated_atstring

RFC3339 timestamp.

JSON
{
  "billing_anchor_day": 15,
  "billing_schedule_owner": "flint",
  "cancel_at_period_end": false,
  "created_at": "2026-03-17T14:30:00Z",
  "current_period_end": "2026-04-17T14:30:00Z",
  "current_period_start": "2026-03-17T14:30:00Z",
  "customer_id": "cus_123",
  "merchant_id": "mer_123",
  "metadata": {
    "source": "api"
  },
  "next_billing_at": "2026-04-17T14:30:00Z",
  "payment_method_id": "pm_123",
  "plan_id": "plan_123",
  "status": "active",
  "subscription_id": "sub_123",
  "updated_at": "2026-03-17T14:30:00Z"
}

List subscriptions#

GET/v1/subscriptionsRequires scope: commerce.subscriptions.read or commerce.subscriptions.write

Returns a paginated list of subscriptions for the authenticated merchant.

Query parameters
page_sizeinteger

Page size, default 20, max 100.

page_tokenstring

Cursor returned by the previous list response.

statusenum

Filter by subscription status.

trialingactivepausedpast_duecanceledincomplete
billing_schedule_ownerenum

Filter by the system that supplies billing dates.

flintexternal
awaiting_billing_scheduleboolean

Filter external schedules by whether they need another billing date.

customer_idstring

Filter by Flint customer ID.

plan_idstring

Filter by Flint subscription plan ID.

external_reference_idstring

Exact-match filter on the caller-owned external reference ID.

querystring

Search across subscription ID, external reference ID, customer, and plan.

sort_byenum

Sort field.

created_atupdated_atnext_billing_at
sort_directionenum

Sort direction.

ascdesc
created_afterstring

RFC3339 lower bound for created_at.

created_beforestring

RFC3339 upper bound for created_at.

updated_afterstring

RFC3339 lower bound for updated_at.

updated_beforestring

RFC3339 upper bound for updated_at.

next_billing_at_afterstring

RFC3339 lower bound for next_billing_at.

next_billing_at_beforestring

RFC3339 upper bound for next_billing_at.

Response · 200
dataarray of objectrequired
metaobject
next_page_tokenstring
request_idstring

Error codes

AUTH_REQUIREDINSUFFICIENT_SCOPEINVALID_API_KEYINVALID_BILLING_SCHEDULE_OWNERINVALID_PAGE_TOKENINVALID_REQUESTINVALID_SORT_FIELDINVALID_STATUSRATE_LIMIT_EXCEEDEDUNSUPPORTED_QUERY_PARAM
Bash
curl https://api.withflintpay.com/v1/subscriptions \
  -H "Flint-Version: 2026-09-07" \
  -H "Authorization: Bearer YOUR_API_KEY"
JSON
{
  "data": [
    {
      "billing_anchor_day": 15,
      "billing_schedule_owner": "flint",
      "cancel_at_period_end": false,
      "created_at": "2026-03-17T14:30:00Z",
      "current_period_end": "2026-04-17T14:30:00Z",
      "current_period_start": "2026-03-17T14:30:00Z",
      "customer_id": "cus_123",
      "merchant_id": "mer_123",
      "metadata": {
        "source": "api"
      },
      "next_billing_at": "2026-04-17T14:30:00Z",
      "payment_method_id": "pm_123",
      "plan_id": "plan_123",
      "status": "active",
      "subscription_id": "sub_123",
      "updated_at": "2026-03-17T14:30:00Z"
    }
  ],
  "next_page_token": "Zm9yd2FyZC1vbmx5LW9wYXF1ZS1jdXJzb3I",
  "request_id": "bce56cba-0827-44aa-bb56-4f200ba15ee6"
}

Create subscription#

POST/v1/subscriptionsIdempotentRequires scope: commerce.subscriptions.write

Creates a subscription for the authenticated merchant.

Request body
billing_scheduleobject

Flint owns the renewal date. billing_anchor_day is allowed only in this branch.

billing_scheduleobject

The integration owns the renewal date. billing_anchor_day is not allowed.

option 3object

The merchant default selects the owner. Owner-specific sibling fields are not allowed.

Response · 201
dataobjectrequired
metaobject
request_idstring

Error codes

AUTH_REQUIREDCUSTOMER_DELETION_PROCESSINGIDEMPOTENCY_KEY_IN_PROGRESSIDEMPOTENCY_KEY_REUSEDINSUFFICIENT_SCOPEINVALID_API_KEYINVALID_BILLING_ANCHOR_DAYINVALID_REQUESTPAYMENT_METHOD_CUSTOMER_MISMATCHPAYMENT_METHOD_NOT_ACTIVEPAYMENT_METHOD_NOT_READYPAYMENT_METHOD_REQUIREDPLAN_NOT_ACTIVERATE_LIMIT_EXCEEDEDREQUEST_TIMEOUTSERVICE_UNAVAILABLESUBSCRIPTION_BILLING_SCHEDULE_REQUIREDSUBSCRIPTION_BILLING_START_INVALIDSUBSCRIPTION_EXTERNAL_BILLING_ANCHOR_NOT_ALLOWEDSUBSCRIPTION_IMPORT_PERIOD_NOT_CURRENTSUBSCRIPTION_SERVICE_LOCATION_INVALIDSUBSCRIPTION_STARTS_AT_NOT_FUTURESUBSCRIPTION_STARTS_AT_TRIAL_CONFLICTSUBSCRIPTION_START_OVERRIDE_NOT_ALLOWED
Bash
curl -X POST https://api.withflintpay.com/v1/subscriptions \
  -H "Flint-Version: 2026-09-07" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: a-unique-key" \
  -d '{
    "billing_anchor_day": 15,
    "billing_schedule": {
      "owner": "flint"
    },
    "billing_start": {
      "type": "immediate"
    },
    "customer_id": "cus_123",
    "metadata": {
      "source": "api"
    },
    "payment_method_id": "pm_123",
    "plan_id": "plan_123"
  }'

Get subscription#

GET/v1/subscriptions/{subscription_id}Requires scope: commerce.subscriptions.read or commerce.subscriptions.write

Returns a single subscription by ID.

Path parameters
subscription_idstringrequired

Flint subscription ID.

Query parameters
expandarray of enum

Supported expansions: customer, payment_method, subscription_plan. Expansion requires commerce.subscriptions.read plus the read scope for each expanded resource. Limits: at most 10 unique expand paths per request; path depth at most 2. Repeat expand, for example expand=customer&expand=payment_method, or pass one comma-separated value.

customerpayment_methodsubscription_plan
Response · 200
dataobjectrequired
metaobject
request_idstring

Error codes

AUTH_REQUIREDDANGLING_EXPANSION_REFERENCEEXPANSION_DEPENDENCY_UNAVAILABLEEXPANSION_RESOLUTION_FAILEDINSUFFICIENT_SCOPEINTERNAL_ERRORINVALID_API_KEYINVALID_REQUESTRATE_LIMIT_EXCEEDEDRESOURCE_NOT_FOUNDSERVICE_UNAVAILABLE
Bash
curl https://api.withflintpay.com/v1/subscriptions/sub_123 \
  -H "Flint-Version: 2026-09-07" \
  -H "Authorization: Bearer YOUR_API_KEY"
JSON
{
  "data": {
    "billing_anchor_day": 15,
    "billing_schedule_owner": "flint",
    "cancel_at_period_end": false,
    "created_at": "2026-03-17T14:30:00Z",
    "current_period_end": "2026-04-17T14:30:00Z",
    "current_period_start": "2026-03-17T14:30:00Z",
    "customer_id": "cus_123",
    "merchant_id": "mer_123",
    "metadata": {
      "source": "api"
    },
    "next_billing_at": "2026-04-17T14:30:00Z",
    "payment_method_id": "pm_123",
    "plan_id": "plan_123",
    "status": "active",
    "subscription_id": "sub_123",
    "updated_at": "2026-03-17T14:30:00Z"
  },
  "request_id": "bce56cba-0827-44aa-bb56-4f200ba15ee6"
}

Update subscription#

PATCH/v1/subscriptions/{subscription_id}IdempotentRequires scope: commerce.subscriptions.write

Updates mutable subscription fields such as payment_method_id and metadata.

Path parameters
subscription_idstringrequired

Flint subscription ID.

Request body
cancel_at_period_endboolean
external_reference_idstring

Caller-owned identifier for this resource in an external system.

metadatamap of string or null

Caller-owned metadata. Omit this field to leave metadata unchanged. Send an object to merge by key, set a key to null to remove it, or set metadata to null to clear all metadata. An empty object makes no change. Empty strings are stored. Keys starting with flint_ are reserved and cannot be written through the public API.

payment_method_idstring
Response · 200
dataobjectrequired
metaobject
request_idstring

Error codes

AUTH_REQUIREDCONCURRENT_MODIFICATIONCUSTOMER_DELETION_PROCESSINGIDEMPOTENCY_KEY_IN_PROGRESSIDEMPOTENCY_KEY_REUSEDINSUFFICIENT_SCOPEINVALID_API_KEYINVALID_REQUESTNO_FIELDS_TO_UPDATEPAYMENT_METHOD_CUSTOMER_MISMATCHPAYMENT_METHOD_NOT_ACTIVEPAYMENT_METHOD_NOT_READYPAYMENT_METHOD_REQUIREDRATE_LIMIT_EXCEEDEDRESOURCE_LIMIT_EXCEEDEDRESOURCE_NOT_FOUNDSUBSCRIPTION_CANCELEDUSE_CANCEL_SUBSCRIPTION
Bash
curl -X PATCH https://api.withflintpay.com/v1/subscriptions/sub_123 \
  -H "Flint-Version: 2026-09-07" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: a-unique-key" \
  -d '{
    "metadata": {
      "source": "customer_portal"
    },
    "payment_method_id": "pm_456"
  }'

Update subscription billing schedule#

PATCH/v1/subscriptions/{subscription_id}/billing-scheduleIdempotentRequires scope: commerce.subscriptions.write

Sets the next billing date, clears an external schedule while it awaits a date, or transfers schedule ownership. The response carries the updated subscription.

Path parameters
subscription_idstringrequired

Flint subscription ID.

Request body
owner: "flint"object
owner: "external"object
Response · 200
dataobjectrequired
metaobject
request_idstring

Error codes

AUTH_REQUIREDIDEMPOTENCY_KEY_IN_PROGRESSIDEMPOTENCY_KEY_REUSEDINSUFFICIENT_SCOPEINVALID_API_KEYINVALID_BILLING_SCHEDULE_OWNERINVALID_REQUESTRATE_LIMIT_EXCEEDEDRESOURCE_LIMIT_EXCEEDEDRESOURCE_NOT_FOUNDSUBSCRIPTION_EXTERNAL_BILLING_ANCHOR_NOT_ALLOWEDSUBSCRIPTION_INITIATED_BY_INVALIDSUBSCRIPTION_NEXT_BILLING_AT_NOT_FUTURESUBSCRIPTION_NEXT_BILLING_AT_REQUIREDSUBSCRIPTION_NEXT_BILLING_AT_TOO_FARSUBSCRIPTION_SCHEDULE_CLEAR_NOT_ALLOWEDSUBSCRIPTION_SCHEDULE_MUTATION_NOT_ALLOWED
Bash
curl -X PATCH https://api.withflintpay.com/v1/subscriptions/sub_123/billing-schedule \
  -H "Flint-Version: 2026-09-07" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: a-unique-key" \
  -d '{
    "initiated_by": "integration",
    "next_billing_at": "2026-05-17T14:30:00Z",
    "owner": "external"
  }'

Cancel subscription#

POST/v1/subscriptions/{subscription_id}/cancelIdempotentRequires scope: commerce.subscriptions.write

Cancels a subscription immediately or at period end. Response may include advisory contract information.

Path parameters
subscription_idstringrequired

Flint subscription ID.

Request body
cancel_immediatelyboolean
Response · 200
dataobjectrequired
metaobject
request_idstring

Error codes

AUTH_REQUIREDCONCURRENT_MODIFICATIONCUSTOMER_DELETION_PROCESSINGIDEMPOTENCY_KEY_IN_PROGRESSIDEMPOTENCY_KEY_REUSEDINSUFFICIENT_SCOPEINVALID_API_KEYINVALID_REQUESTRATE_LIMIT_EXCEEDEDREQUEST_TIMEOUTRESOURCE_NOT_FOUNDSERVICE_UNAVAILABLE
Bash
curl -X POST https://api.withflintpay.com/v1/subscriptions/sub_123/cancel \
  -H "Flint-Version: 2026-09-07" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: a-unique-key" \
  -d '{
    "cancel_immediately": false
  }'

Pause subscription#

POST/v1/subscriptions/{subscription_id}/pauseIdempotentRequires scope: commerce.subscriptions.write

Pauses a subscription immediately, optionally for a fixed number of billing cycles.

Path parameters
subscription_idstringrequired

Flint subscription ID.

Request body
pause_duration_cyclesinteger
Response · 200
dataobjectrequired
metaobject
request_idstring

Error codes

AUTH_REQUIREDCANNOT_PAUSECONCURRENT_MODIFICATIONCUSTOMER_DELETION_PROCESSINGIDEMPOTENCY_KEY_IN_PROGRESSIDEMPOTENCY_KEY_REUSEDINSUFFICIENT_SCOPEINVALID_API_KEYINVALID_REQUESTRATE_LIMIT_EXCEEDEDREQUEST_TIMEOUTRESOURCE_NOT_FOUNDSERVICE_UNAVAILABLE
Bash
curl -X POST https://api.withflintpay.com/v1/subscriptions/sub_123/pause \
  -H "Flint-Version: 2026-09-07" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: a-unique-key" \
  -d '{
    "pause_duration_cycles": 2
  }'

Change a subscription payment method#

POST/v1/subscriptions/{subscription_id}/payment-methodIdempotentRequires scope: commerce.subscriptions.write

Changes the subscription to an active payment method owned by the same customer.

Path parameters
subscription_idstringrequired

Flint subscription ID.

Request body
payment_method_idstringrequired
Response · 200
dataobjectrequired
metaobject
request_idstring

Error codes

AUTH_REQUIREDCONCURRENT_MODIFICATIONCUSTOMER_DELETION_PROCESSINGIDEMPOTENCY_KEY_IN_PROGRESSIDEMPOTENCY_KEY_REUSEDINSUFFICIENT_SCOPEINVALID_REQUESTPAYMENT_METHOD_CUSTOMER_MISMATCHPAYMENT_METHOD_NOT_ACTIVEPAYMENT_METHOD_NOT_READYPAYMENT_METHOD_REQUIREDRATE_LIMIT_EXCEEDEDRESOURCE_NOT_FOUNDSUBSCRIPTION_CANCELED
Bash
curl -X POST https://api.withflintpay.com/v1/subscriptions/sub_123/payment-method \
  -H "Flint-Version: 2026-09-07" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: a-unique-key" \
  -d '{
    "payment_method_id": "pm_123"
  }'

List subscription payment retries#

GET/v1/subscriptions/{subscription_id}/payment-retriesRequires scope: commerce.subscriptions.read or commerce.subscriptions.write

Returns a subscription's manual payment retries, newest first.

Path parameters
subscription_idstringrequired

Flint subscription ID.

Query parameters
page_sizeinteger

Page size, default 20, max 100.

page_tokenstring

Cursor returned by the previous list response.

idempotency_keystring

Filter by the original Idempotency-Key.

Response · 200
dataarray of objectrequired
metaobject
next_page_tokenstring
request_idstring

Error codes

AUTH_REQUIREDINSUFFICIENT_SCOPEINVALID_API_KEYINVALID_PAGE_TOKENINVALID_REQUESTRATE_LIMIT_EXCEEDEDRESOURCE_NOT_FOUNDUNSUPPORTED_QUERY_PARAM
Bash
curl https://api.withflintpay.com/v1/subscriptions/sub_123/payment-retries \
  -H "Flint-Version: 2026-09-07" \
  -H "Authorization: Bearer YOUR_API_KEY"
JSON
{
  "data": [
    {
      "created_at": "2026-04-17T14:31:00Z",
      "idempotency_key": "retry-2026-04-17",
      "status": "pending",
      "subscription_id": "sub_123",
      "subscription_payment_retry_id": "spr_123",
      "updated_at": "2026-04-17T14:31:00Z"
    }
  ],
  "next_page_token": "Zm9yd2FyZC1vbmx5LW9wYXF1ZS1jdXJzb3I",
  "request_id": "bce56cba-0827-44aa-bb56-4f200ba15ee6"
}

Retry subscription payment#

POST/v1/subscriptions/{subscription_id}/payment-retriesIdempotentRequires scope: commerce.subscriptions.write

Starts one manual collection attempt on a past-due subscription. Send no body, or an empty object. Poll the returned retry for the outcome.

Path parameters
subscription_idstringrequired

Flint subscription ID.

Response · 201
dataobjectrequired
metaobject
request_idstring

Error codes

AUTH_REQUIREDIDEMPOTENCY_KEY_IN_PROGRESSIDEMPOTENCY_KEY_REQUIREDIDEMPOTENCY_KEY_REUSEDINSUFFICIENT_SCOPEINVALID_API_KEYINVALID_REQUESTRATE_LIMIT_EXCEEDEDREQUEST_BODY_NOT_ALLOWEDREQUEST_TIMEOUTRESOURCE_NOT_FOUNDSERVICE_UNAVAILABLESUBSCRIPTION_PAYMENT_RETRY_NOT_ALLOWED
Bash
curl -X POST https://api.withflintpay.com/v1/subscriptions/sub_123/payment-retries \
  -H "Flint-Version: 2026-09-07" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: a-unique-key" \
  -d '{}'

Get subscription payment retry#

GET/v1/subscriptions/{subscription_id}/payment-retries/{subscription_payment_retry_id}Requires scope: commerce.subscriptions.read or commerce.subscriptions.write

Returns one durable manual subscription payment retry.

Path parameters
subscription_idstringrequired

Flint subscription ID.

subscription_payment_retry_idstringrequired

Flint subscription payment retry ID.

Response · 200
dataobjectrequired
metaobject
request_idstring

Error codes

AUTH_REQUIREDINSUFFICIENT_SCOPEINVALID_API_KEYRATE_LIMIT_EXCEEDEDRESOURCE_NOT_FOUND
Bash
curl https://api.withflintpay.com/v1/subscriptions/sub_123/payment-retries/spr_123 \
  -H "Flint-Version: 2026-09-07" \
  -H "Authorization: Bearer YOUR_API_KEY"
JSON
{
  "data": {
    "created_at": "2026-04-17T14:31:00Z",
    "idempotency_key": "retry-2026-04-17",
    "status": "pending",
    "subscription_id": "sub_123",
    "subscription_payment_retry_id": "spr_123",
    "updated_at": "2026-04-17T14:31:00Z"
  },
  "request_id": "bce56cba-0827-44aa-bb56-4f200ba15ee6"
}

Reactivate a subscription#

POST/v1/subscriptions/{subscription_id}/reactivateIdempotentRequires scope: commerce.subscriptions.write

Clears a pending period-end cancellation without changing the current billing period.

Path parameters
subscription_idstringrequired

Flint subscription ID.

Response · 200
dataobjectrequired
metaobject
request_idstring

Error codes

AUTH_REQUIREDCONCURRENT_MODIFICATIONCUSTOMER_DELETION_PROCESSINGIDEMPOTENCY_KEY_IN_PROGRESSIDEMPOTENCY_KEY_REUSEDINSUFFICIENT_SCOPEINVALID_REQUESTNO_FIELDS_TO_UPDATERATE_LIMIT_EXCEEDEDRESOURCE_NOT_FOUNDSUBSCRIPTION_CANCELEDUSE_CANCEL_SUBSCRIPTION
Bash
curl -X POST https://api.withflintpay.com/v1/subscriptions/sub_123/reactivate \
  -H "Flint-Version: 2026-09-07" \
  -H "Authorization: Bearer YOUR_API_KEY"

Resume subscription#

POST/v1/subscriptions/{subscription_id}/resumeIdempotentRequires scope: commerce.subscriptions.write

Resumes a paused subscription.

Path parameters
subscription_idstringrequired

Flint subscription ID.

Response · 200
dataobjectrequired
metaobject
request_idstring

Error codes

AUTH_REQUIREDCANNOT_RESUMECANNOT_RESUME_INITIAL_PAYMENT_PENDINGCANNOT_RESUME_PAST_DUE_PAYMENT_REQUIREDCONCURRENT_MODIFICATIONCUSTOMER_DELETION_PROCESSINGIDEMPOTENCY_KEY_IN_PROGRESSIDEMPOTENCY_KEY_REUSEDINSUFFICIENT_SCOPEINVALID_API_KEYINVALID_REQUESTRATE_LIMIT_EXCEEDEDREQUEST_TIMEOUTRESOURCE_NOT_FOUNDSERVICE_UNAVAILABLE
Bash
curl -X POST https://api.withflintpay.com/v1/subscriptions/sub_123/resume \
  -H "Flint-Version: 2026-09-07" \
  -H "Authorization: Bearer YOUR_API_KEY"

Skip subscription cycle#

POST/v1/subscriptions/{subscription_id}/skip-cycleIdempotentRequires scope: commerce.subscriptions.write

Moves the next billing date forward by one plan interval without charging the current cycle.

Path parameters
subscription_idstringrequired

Flint subscription ID.

Request body
initiated_byenum

Optional business actor. Omit when the actor is unknown.

buyermerchantintegration
Response · 200
dataobjectrequired
metaobject
request_idstring

Error codes

AUTH_REQUIREDIDEMPOTENCY_KEY_IN_PROGRESSIDEMPOTENCY_KEY_REUSEDINSUFFICIENT_SCOPEINVALID_API_KEYINVALID_REQUESTRATE_LIMIT_EXCEEDEDRESOURCE_NOT_FOUNDSUBSCRIPTION_INITIATED_BY_INVALIDSUBSCRIPTION_SCHEDULE_MUTATION_NOT_ALLOWED
Bash
curl -X POST https://api.withflintpay.com/v1/subscriptions/sub_123/skip-cycle \
  -H "Flint-Version: 2026-09-07" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: a-unique-key" \
  -d '{
    "initiated_by": "merchant"
  }'
Rate this doc