Subscription offers
The Subscription offer object#
Every field on a subscription offer, as returned by retrieve and carried by the endpoints below.
Attributes
billing_interval_optionsarray of objectRequiredbilling_intervalenumRequireddailyweeklymonthlyyearly
billing_interval_countintegerRequiredcreated_atstringRequiredRFC3339 timestamp.
metadatamap of stringRequirednamestringRequiredproduct_idsarray of stringRequiredCatalog targets for new signups. At least one product or variant is required.
promotion_idstring or nullRequiredAn active promotion with forever recurrence. On PATCH, null removes the discount for new signups; omission keeps it.
statusenumRequiredactiveinactivearchived
subscription_delivery_method_idsarray of stringRequiredDelivery methods offered at signup. An empty array uses the store's checkout defaults. Existing subscriptions keep their selected method.
subscription_offer_idstringRequiredupdated_atstringRequiredRFC3339 timestamp.
variant_idsarray of stringRequiredCatalog targets for new signups. At least one product or variant is required.
versionintegerRequiredList subscription offers#
/v1/subscription-offersList subscription offers. Offer changes affect new signups only. Existing subscriptions keep their terms.
Query parameters
page_sizeintegerpage_tokenstringstatusenumactiveinactivearchived
product_idstringvariant_idstringquerystringsort_byenumcreated_atupdated_atname
sort_directionenumascdesc
Response · 200
dataarray of objectRequiredbilling_interval_optionsarray of objectRequiredcreated_atstringRequiredRFC3339 timestamp.
metadatamap of stringRequirednamestringRequiredproduct_idsarray of stringRequiredCatalog targets for new signups. At least one product or variant is required.
promotion_idstring or nullRequiredAn active promotion with forever recurrence. On PATCH, null removes the discount for new signups; omission keeps it.
statusenumRequiredactiveinactivearchived
subscription_delivery_method_idsarray of stringRequiredDelivery methods offered at signup. An empty array uses the store's checkout defaults. Existing subscriptions keep their selected method.
subscription_offer_idstringRequiredupdated_atstringRequiredRFC3339 timestamp.
variant_idsarray of stringRequiredCatalog targets for new signups. At least one product or variant is required.
versionintegerRequiredmetaobjectapi_versionstringidempotency_replayedbooleanrequest_idstringtrace_idstringwarningsarray of objectnext_page_tokenstringrequest_idstring- AMBIGUOUS_AUTH
- API_KEY_EXPIRED
- API_KEY_MODE_MISMATCH
- API_KEY_NOT_FOUND
- API_KEY_REQUIRED
- API_KEY_REVOKED
- API_KEY_SANDBOX_UNAVAILABLE
- API_KEY_SCOPE_UNSUPPORTED
- API_VERSION_RETIRED
- AUTH_UNAVAILABLE
- AUTH_VALIDATION_FAILED
- DEMO_SESSION_ROUTE_NOT_ALLOWED
- EXTERNAL_API_KEY_REQUIRED
- INSUFFICIENT_SCOPE
- INTERNAL_ERROR
- INVALID_API_KEY
- INVALID_API_VERSION
- INVALID_AUTHORIZATION_HEADER
- INVALID_BEARER_TOKEN
- INVALID_EXPAND
- INVALID_JSON
- INVALID_MODE
- INVALID_OAUTH_TOKEN
- INVALID_PAGE_SIZE
- INVALID_PAGE_TOKEN
- INVALID_PARTNER_TOKEN
- INVALID_REQUEST
- INVALID_SORT_DIRECTION
- INVALID_SORT_FIELD
- INVALID_STATUS
- MERCHANT_ACCESS_REQUIRED
- OAUTH_CONTEXT_MISMATCH
- OAUTH_UNAVAILABLE
- ORG_SCOPE_RESOLUTION_FAILED
- PARTNER_TOKEN_VALIDATION_FAILED
- RATE_LIMIT_EXCEEDED
- REQUEST_BODY_TOO_LARGE
- SANDBOX_SELECTION_REQUIRED
- UNSUPPORTED_QUERY_PARAM
- VALIDATION_ERROR
curl https://api.withflintpay.com/v1/subscription-offers \
-H "Flint-Version: 2026-09-07" \
-H "Authorization: Bearer YOUR_API_KEY"Create subscription offer#
/v1/subscription-offersIdempotentCreate subscription offer. Offer changes affect new signups only. Existing subscriptions keep their terms.
Request body
billing_interval_optionsarray of objectRequiredbilling_intervalenumRequireddailyweeklymonthlyyearly
billing_interval_countintegerRequiredmetadatamap of stringnamestringRequiredproduct_idsarray of stringCatalog targets for new signups. At least one product or variant is required.
promotion_idstring or nullAn active promotion with forever recurrence. On PATCH, null removes the discount for new signups; omission keeps it.
statusenumactiveinactive
subscription_delivery_method_idsarray of stringDelivery methods offered at signup. An empty array uses the store's checkout defaults. Existing subscriptions keep their selected method.
variant_idsarray of stringCatalog targets for new signups. At least one product or variant is required.
Response · 201
dataobjectRequiredRecurring terms offered on catalog products or variants. Updates affect new signups; existing subscriptions keep their paid signup terms.
billing_interval_optionsarray of objectRequiredcreated_atstringRequiredRFC3339 timestamp.
metadatamap of stringRequirednamestringRequiredproduct_idsarray of stringRequiredCatalog targets for new signups. At least one product or variant is required.
promotion_idstring or nullRequiredAn active promotion with forever recurrence. On PATCH, null removes the discount for new signups; omission keeps it.
statusenumRequiredactiveinactivearchived
subscription_delivery_method_idsarray of stringRequiredDelivery methods offered at signup. An empty array uses the store's checkout defaults. Existing subscriptions keep their selected method.
subscription_offer_idstringRequiredupdated_atstringRequiredRFC3339 timestamp.
variant_idsarray of stringRequiredCatalog targets for new signups. At least one product or variant is required.
versionintegerRequiredmetaobjectapi_versionstringidempotency_replayedbooleanrequest_idstringtrace_idstringwarningsarray of objectrequest_idstring- AMBIGUOUS_AUTH
- API_KEY_EXPIRED
- API_KEY_MODE_MISMATCH
- API_KEY_NOT_FOUND
- API_KEY_REQUIRED
- API_KEY_REVOKED
- API_KEY_SANDBOX_UNAVAILABLE
- API_KEY_SCOPE_UNSUPPORTED
- API_VERSION_RETIRED
- AUTH_UNAVAILABLE
- AUTH_VALIDATION_FAILED
- DEMO_SESSION_ROUTE_NOT_ALLOWED
- EXTERNAL_API_KEY_REQUIRED
- IDEMPOTENCY_KEY_IN_PROGRESS
- IDEMPOTENCY_KEY_REUSED
- IDEMPOTENCY_LOAD_FAILED
- IDEMPOTENCY_RECORD_INVALID
- IDEMPOTENCY_RECOVERY_REQUIRED
- INSUFFICIENT_SCOPE
- INTERNAL_ERROR
- INVALID_API_KEY
- INVALID_API_VERSION
- INVALID_AUTHORIZATION_HEADER
- INVALID_BEARER_TOKEN
- INVALID_BILLING_INTERVAL_OPTIONS
- INVALID_EXPAND
- INVALID_FIELD_TYPE
- INVALID_IDEMPOTENCY_KEY
- INVALID_JSON
- INVALID_METADATA_KEY
- INVALID_MODE
- INVALID_NAME
- INVALID_OAUTH_TOKEN
- INVALID_PARTNER_TOKEN
- INVALID_REQUEST
- INVALID_STATUS
- INVALID_SUBSCRIPTION_OFFER_TARGETS
- MERCHANT_ACCESS_REQUIRED
- METADATA_KEY_TOO_LONG
- METADATA_TOO_LARGE
- METADATA_TOO_MANY_KEYS
- METADATA_VALUE_TOO_LONG
- NULL_NOT_ALLOWED
- OAUTH_CONTEXT_MISMATCH
- OAUTH_UNAVAILABLE
- ORG_SCOPE_RESOLUTION_FAILED
- PARTNER_TOKEN_VALIDATION_FAILED
- PROMOTION_NOT_FOUND
- RATE_LIMIT_EXCEEDED
- REQUEST_BODY_TOO_LARGE
- RESOURCE_NOT_FOUND
- SANDBOX_SELECTION_REQUIRED
- SUBSCRIPTION_DELIVERY_LINES_NOT_COMBINABLE
- SUBSCRIPTION_DELIVERY_METHOD_UNSUPPORTED
- SUBSCRIPTION_DELIVERY_PROFILE_ACTION_REQUIRED
- SUBSCRIPTION_DELIVERY_PROFILE_MISSING
- SUBSCRIPTION_FULFILLMENT_NOT_SUPPORTED
- SUBSCRIPTION_OFFER_PROMOTION_NOT_FOREVER
- SUBSCRIPTION_OFFER_PROMOTION_UNAVAILABLE
- SUBSCRIPTION_OFFER_TARGET_CONFLICT
- UNKNOWN_FIELD
- UNSUPPORTED_CONTENT_TYPE
- UNSUPPORTED_QUERY_PARAM
curl -X POST https://api.withflintpay.com/v1/subscription-offers \
-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_interval_options": [
{
"billing_interval": "daily",
"billing_interval_count": 0
}
],
"name": ""
}'Get subscription offer#
/v1/subscription-offers/{subscription_offer_id}Get subscription offer. Offer changes affect new signups only. Existing subscriptions keep their terms.
Path parameters
subscription_offer_idstringRequiredSubscription offer ID.
Response · 200
Same response as Create subscription offer.
- AMBIGUOUS_AUTH
- API_KEY_EXPIRED
- API_KEY_MODE_MISMATCH
- API_KEY_NOT_FOUND
- API_KEY_REQUIRED
- API_KEY_REVOKED
- API_KEY_SANDBOX_UNAVAILABLE
- API_KEY_SCOPE_UNSUPPORTED
- API_VERSION_RETIRED
- AUTH_UNAVAILABLE
- AUTH_VALIDATION_FAILED
- DEMO_SESSION_ROUTE_NOT_ALLOWED
- EXTERNAL_API_KEY_REQUIRED
- INSUFFICIENT_SCOPE
- INTERNAL_ERROR
- INVALID_API_KEY
- INVALID_API_VERSION
- INVALID_AUTHORIZATION_HEADER
- INVALID_BEARER_TOKEN
- INVALID_EXPAND
- INVALID_JSON
- INVALID_MODE
- INVALID_OAUTH_TOKEN
- INVALID_PARTNER_TOKEN
- INVALID_REQUEST
- MERCHANT_ACCESS_REQUIRED
- OAUTH_CONTEXT_MISMATCH
- OAUTH_UNAVAILABLE
- ORG_SCOPE_RESOLUTION_FAILED
- PARTNER_TOKEN_VALIDATION_FAILED
- RATE_LIMIT_EXCEEDED
- REQUEST_BODY_TOO_LARGE
- RESOURCE_NOT_FOUND
- SANDBOX_SELECTION_REQUIRED
- SUBSCRIPTION_OFFER_NOT_FOUND
- UNSUPPORTED_QUERY_PARAM
curl https://api.withflintpay.com/v1/subscription-offers/{subscription_offer_id} \
-H "Flint-Version: 2026-09-07" \
-H "Authorization: Bearer YOUR_API_KEY"Update subscription offer#
/v1/subscription-offers/{subscription_offer_id}IdempotentUpdate subscription offer. Offer changes affect new signups only. Existing subscriptions keep their terms.
Path parameters
subscription_offer_idstringRequiredSubscription offer ID.
Request body
billing_interval_optionsarray of objectbilling_intervalenumRequireddailyweeklymonthlyyearly
billing_interval_countintegerRequiredexpected_versionintegerThe version read before editing. A mismatch returns SUBSCRIPTION_OFFER_VERSION_CONFLICT.
metadatamap of string or nullCaller-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.
namestringproduct_idsarray of stringCatalog targets for new signups. At least one product or variant is required.
promotion_idstring or nullAn active promotion with forever recurrence. On PATCH, null removes the discount for new signups; omission keeps it.
statusenumactiveinactive
subscription_delivery_method_idsarray of stringDelivery methods offered at signup. An empty array uses the store's checkout defaults. Existing subscriptions keep their selected method.
variant_idsarray of stringCatalog targets for new signups. At least one product or variant is required.
Response · 200
Same response as Create subscription offer.
- AMBIGUOUS_AUTH
- API_KEY_EXPIRED
- API_KEY_MODE_MISMATCH
- API_KEY_NOT_FOUND
- API_KEY_REQUIRED
- API_KEY_REVOKED
- API_KEY_SANDBOX_UNAVAILABLE
- API_KEY_SCOPE_UNSUPPORTED
- API_VERSION_RETIRED
- AUTH_UNAVAILABLE
- AUTH_VALIDATION_FAILED
- DEMO_SESSION_ROUTE_NOT_ALLOWED
- EXTERNAL_API_KEY_REQUIRED
- IDEMPOTENCY_KEY_IN_PROGRESS
- IDEMPOTENCY_KEY_REUSED
- IDEMPOTENCY_LOAD_FAILED
- IDEMPOTENCY_RECORD_INVALID
- IDEMPOTENCY_RECOVERY_REQUIRED
- INSUFFICIENT_SCOPE
- INTERNAL_ERROR
- INVALID_API_KEY
- INVALID_API_VERSION
- INVALID_AUTHORIZATION_HEADER
- INVALID_BEARER_TOKEN
- INVALID_BILLING_INTERVAL_OPTIONS
- INVALID_EXPAND
- INVALID_EXPECTED_VERSION
- INVALID_FIELD_TYPE
- INVALID_IDEMPOTENCY_KEY
- INVALID_JSON
- INVALID_METADATA_KEY
- INVALID_MODE
- INVALID_NAME
- INVALID_OAUTH_TOKEN
- INVALID_PARTNER_TOKEN
- INVALID_REQUEST
- INVALID_STATUS
- INVALID_SUBSCRIPTION_OFFER_TARGETS
- MERCHANT_ACCESS_REQUIRED
- METADATA_KEY_TOO_LONG
- METADATA_TOO_LARGE
- METADATA_TOO_MANY_KEYS
- METADATA_VALUE_TOO_LONG
- NO_FIELDS_TO_UPDATE
- NULL_NOT_ALLOWED
- OAUTH_CONTEXT_MISMATCH
- OAUTH_UNAVAILABLE
- ORG_SCOPE_RESOLUTION_FAILED
- PARTNER_TOKEN_VALIDATION_FAILED
- PROMOTION_NOT_FOUND
- RATE_LIMIT_EXCEEDED
- REQUEST_BODY_TOO_LARGE
- RESOURCE_NOT_FOUND
- SANDBOX_SELECTION_REQUIRED
- SUBSCRIPTION_DELIVERY_LINES_NOT_COMBINABLE
- SUBSCRIPTION_DELIVERY_METHOD_UNSUPPORTED
- SUBSCRIPTION_DELIVERY_PROFILE_ACTION_REQUIRED
- SUBSCRIPTION_DELIVERY_PROFILE_MISSING
- SUBSCRIPTION_FULFILLMENT_NOT_SUPPORTED
- SUBSCRIPTION_OFFER_ARCHIVED
- SUBSCRIPTION_OFFER_NOT_FOUND
- SUBSCRIPTION_OFFER_PROMOTION_NOT_FOREVER
- SUBSCRIPTION_OFFER_PROMOTION_UNAVAILABLE
- SUBSCRIPTION_OFFER_TARGET_CONFLICT
- SUBSCRIPTION_OFFER_VERSION_CONFLICT
- UNKNOWN_FIELD
- UNSUPPORTED_CONTENT_TYPE
- UNSUPPORTED_QUERY_PARAM
curl -X PATCH https://api.withflintpay.com/v1/subscription-offers/{subscription_offer_id} \
-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_interval_options": [
{
"billing_interval": "daily",
"billing_interval_count": 0
}
],
"expected_version": 0,
"metadata": {},
"name": "",
"product_ids": [
""
],
"promotion_id": "",
"status": "active",
"subscription_delivery_method_ids": [
""
],
"variant_ids": [
""
]
}'Archive subscription offer#
/v1/subscription-offers/{subscription_offer_id}IdempotentArchive subscription offer. Offer changes affect new signups only. Existing subscriptions keep their terms.
Path parameters
subscription_offer_idstringRequiredSubscription offer ID.
Query parameters
expected_versionintegerResponse · 200
Same response as Create subscription offer.
- AMBIGUOUS_AUTH
- API_KEY_EXPIRED
- API_KEY_MODE_MISMATCH
- API_KEY_NOT_FOUND
- API_KEY_REQUIRED
- API_KEY_REVOKED
- API_KEY_SANDBOX_UNAVAILABLE
- API_KEY_SCOPE_UNSUPPORTED
- API_VERSION_RETIRED
- AUTH_UNAVAILABLE
- AUTH_VALIDATION_FAILED
- DEMO_SESSION_ROUTE_NOT_ALLOWED
- EXTERNAL_API_KEY_REQUIRED
- IDEMPOTENCY_KEY_IN_PROGRESS
- IDEMPOTENCY_KEY_REUSED
- IDEMPOTENCY_LOAD_FAILED
- IDEMPOTENCY_PERSIST_FAILED
- IDEMPOTENCY_RECORD_INVALID
- IDEMPOTENCY_RECOVERY_REQUIRED
- INSUFFICIENT_SCOPE
- INTERNAL_ERROR
- INVALID_API_KEY
- INVALID_API_VERSION
- INVALID_AUTHORIZATION_HEADER
- INVALID_BEARER_TOKEN
- INVALID_EXPAND
- INVALID_EXPECTED_VERSION
- INVALID_IDEMPOTENCY_KEY
- INVALID_JSON
- INVALID_MODE
- INVALID_OAUTH_TOKEN
- INVALID_PARTNER_TOKEN
- INVALID_REQUEST
- MERCHANT_ACCESS_REQUIRED
- OAUTH_CONTEXT_MISMATCH
- OAUTH_UNAVAILABLE
- ORG_SCOPE_RESOLUTION_FAILED
- PARTNER_TOKEN_VALIDATION_FAILED
- RATE_LIMIT_EXCEEDED
- REQUEST_BODY_TOO_LARGE
- RESOURCE_NOT_FOUND
- SANDBOX_SELECTION_REQUIRED
- SUBSCRIPTION_OFFER_NOT_FOUND
- SUBSCRIPTION_OFFER_VERSION_CONFLICT
- UNSUPPORTED_CONTENT_TYPE
- UNSUPPORTED_QUERY_PARAM
- VALIDATION_ERROR
curl -X DELETE https://api.withflintpay.com/v1/subscription-offers/{subscription_offer_id} \
-H "Flint-Version: 2026-09-07" \
-H "Authorization: Bearer YOUR_API_KEY"Was this helpful?
