Skip to content
Indiana
Dashboard
Docs
Browse docs / Preview subscription update

Preview subscription update

POST/api/v1/subscriptions/preview-update

Quote one change to a membership billed by a Stripe subscription: an upgrade (immediate, prorated), a downgrade (at the end of the cycle), a license seat total, cancel at the period end or immediately, or undoing a pending cancellation or downgrade. The quote freezes the prorated credit and amount due (Stripe applies discounts and automatic tax), is valid for one hour and makes no Stripe call; reuse requestId for retries. Its execution describes the Stripe change, which the merchant backend runs with its own Stripe key in record-only mode: update maps to subscriptions.update, cancel to subscriptions.cancel, schedule creates a schedule from the subscription and sets its two phases, and release.schedule is the ID of the Stripe subscription schedule to release.

API v1Updated

Make the request

Quote one change to a membership billed by a Stripe subscription: an upgrade (immediate, prorated), a downgrade (at the end of the cycle), a license seat total, cancel at the period end or immediately, or undoing a pending cancellation or downgrade. The quote freezes the prorated credit and amount due (Stripe applies discounts and automatic tax), is valid for one hour and makes no Stripe call; reuse requestId for retries. Its execution describes the Stripe change, which the merchant backend runs with its own Stripe key in record-only mode: update maps to subscriptions.update, cancel to subscriptions.cancel, schedule creates a schedule from the subscription and sets its two phases, and release.schedule is the ID of the Stripe subscription schedule to release.

Credential
Server API key or customer token. Customer calls cannot select another customer.
Permission
billing:read
Set the base URL and App ID from SDK setup. These examples use placeholders and do not execute requests. Never put a server key in browser code.
request.shShell
curl -X POST "$INDIANA_BASE_URL/api/v1/subscriptions/preview-update" \  -H "Authorization: Bearer $INDIANA_CUSTOMER_TOKEN" \  -H "X-Indiana-Project: $INDIANA_PROJECT_ID" \  -H "X-Indiana-Protocol: 0.5" \  -H "X-Indiana-Environment: sandbox" \  -H "Content-Type: application/json" \  -d '{  "requestId": "00000000-0000-4000-8000-000000000001",  "membershipId": "00000000-0000-4000-8000-000000000001",  "timing": "immediate",  "change": {    "type": "plan",    "productVersionId": "00000000-0000-4000-8000-000000000001"  }}'

The response tab lists field types, not an example payload. Actual values depend on customer state.

Request parameters

JSON body

requestIduuidRequired

Business request UUID. Reuse for retries of one operation; generate a new value for a new operation.

invoiceModeobjectOptional

The invoiceMode value for this operation. Its accepted type and constraints are listed above and below.

Show child fields
enabledbooleanRequired

The enabled value for this operation. Its accepted type and constraints are listed above and below.

enable_plan_immediatelybooleanOptional

The enable_plan_immediately value for this operation. Its accepted type and constraints are listed above and below.

default: false

finalizebooleanOptional

The finalize value for this operation. Its accepted type and constraints are listed above and below.

default: true

invoice_template_idstringOptional

The invoice_template_id value for this operation. Its accepted type and constraints are listed above and below.

net_terms_daysintegerOptional

The net_terms_days value for this operation. Its accepted type and constraints are listed above and below.

max: 9007199254740991

membershipIduuidRequired

The membershipId value for this operation. Its accepted type and constraints are listed above and below.

carryOverBalancesobjectOptional

The carryOverBalances value for this operation. Its accepted type and constraints are listed above and below.

Show child fields
enabledtrueRequired

The enabled value for this operation. Its accepted type and constraints are listed above and below.

featureIdsarrayOptional

The featureIds value for this operation. Its accepted type and constraints are listed above and below.

minItems: 1 · maxItems: 100

carryOverUsagesobjectOptional

The carryOverUsages value for this operation. Its accepted type and constraints are listed above and below.

Show child fields
enabledtrueRequired

The enabled value for this operation. Its accepted type and constraints are listed above and below.

featureIdsarrayOptional

The featureIds value for this operation. Its accepted type and constraints are listed above and below.

minItems: 1 · maxItems: 100

membershipIdsarrayOptional

The membershipIds value for this operation. Its accepted type and constraints are listed above and below.

minItems: 1 · maxItems: 20

prorationBehaviorenumOptional

The prorationBehavior value for this operation. Its accepted type and constraints are listed above and below.

Show allowed values

"prorate_immediately""none""bill_difference"

timingenumRequired

Immediate or end-of-cycle timing, only for supported plan-change actions.

Show allowed values

"immediate""renewal""store"

changeobject | object | object | object | object | objectRequired

The change value for this operation. Its accepted type and constraints are listed above and below.

Show child fields
type"plan" | "seats" | "quantity" | "cancel" | "uncancel" | "billing_cycle"Required

The type value for this operation. Its accepted type and constraints are listed above and below.

productVersionIduuidOptional

The productVersionId value for this operation. Its accepted type and constraints are listed above and below.

licenseKeystringOptional

The licenseKey value for this operation. Its accepted type and constraints are listed above and below.

minLength: 1 · maxLength: 64 · pattern: ^[a-z][a-z0-9_]*$

quantityinteger | integerOptional

Use the declared field type for business quantity. Credit operations use decimal strings to avoid floating-point error. quote/reserve/confirm/refund require positive quantities; consume can record zero-cost events.

internal_feature_iduuidOptional

The internal_feature_id value for this operation. Its accepted type and constraints are listed above and below.

billingCycleAnchor"now" | integerOptional

The billingCycleAnchor value for this operation. Its accepted type and constraints are listed above and below.

customerIduuidOptional

Indiana customer ID mapped from a verified identity on the server. Omit for customer-token calls, which use the token-bound customer.

Response fields

Successful responses include requestId and scope. Use the actual business status or accepted field to determine the result. Optional fields are omitted when unavailable.

HTTP 200 · application/json

requestIduuidRequired

Server-generated HTTP request UUID. Include it when reporting a failed request.

scopeobjectRequired

The App and environment of this response. Headers only verify scope; they cannot switch key scope.

Show child fields
projectIdstringRequired

App ID bound to the credential.

minLength: 1

environmentenumRequired

Separate data scope: sandbox or live.

Show allowed values

"sandbox""live"

quoteobject | objectRequired

The quote value for this operation. Its accepted type and constraints are listed above and below.

Show child fields
carryOverBalancesobjectOptional

The carryOverBalances value for this operation. Its accepted type and constraints are listed above and below.

Show child fields
enabledtrueRequired

The enabled value for this operation. Its accepted type and constraints are listed above and below.

featureIdsarrayOptional

The featureIds value for this operation. Its accepted type and constraints are listed above and below.

minItems: 1 · maxItems: 100

carryOverUsagesobjectOptional

The carryOverUsages value for this operation. Its accepted type and constraints are listed above and below.

Show child fields
enabledtrueRequired

The enabled value for this operation. Its accepted type and constraints are listed above and below.

featureIdsarrayOptional

The featureIds value for this operation. Its accepted type and constraints are listed above and below.

minItems: 1 · maxItems: 100

operationIduuid | uuidRequired

Business operation UUID. Subscription execution references operationId from previewAttach; balance refunds reference the original consumption.

membershipIduuid | uuidRequired

The membershipId value for this operation. Its accepted type and constraints are listed above and below.

productVersionIduuid | uuidRequired

The productVersionId value for this operation. Its accepted type and constraints are listed above and below.

timingenum | "store"Required

Immediate or end-of-cycle timing, only for supported plan-change actions.

effectiveAtdate-time | nullRequired

The effectiveAt value for this operation. Its accepted type and constraints are listed above and below.

expiresAtdate-time | date-timeRequired

ISO 8601 UTC expiry. Expired sessions and reservations cannot be reused.

currencyenum | enumRequired

Currency code supported by the published price.

creditMinorinteger | nullRequired

The creditMinor value for this operation. Its accepted type and constraints are listed above and below.

debitMinorinteger | nullRequired

The debitMinor value for this operation. Its accepted type and constraints are listed above and below.

discountMinorinteger | nullRequired

The discountMinor value for this operation. Its accepted type and constraints are listed above and below.

taxMinorinteger | nullRequired

The taxMinor value for this operation. Its accepted type and constraints are listed above and below.

totalMinorinteger | nullRequired

The totalMinor value for this operation. Its accepted type and constraints are listed above and below.

retainedProductVersionIdsarray | arrayRequired

The retainedProductVersionIds value for this operation. Its accepted type and constraints are listed above and below.

executionobjectOptional

The execution value for this operation. Its accepted type and constraints are listed above and below.

Show child fields
provider"stripe"Required

The provider value for this operation. Its accepted type and constraints are listed above and below.

invoiceModeobjectOptional

The invoiceMode value for this operation. Its accepted type and constraints are listed above and below.

Show child fields
enabledbooleanRequired

The enabled value for this operation. Its accepted type and constraints are listed above and below.

enable_plan_immediatelybooleanRequired

The enable_plan_immediately value for this operation. Its accepted type and constraints are listed above and below.

default: false

finalizebooleanRequired

The finalize value for this operation. Its accepted type and constraints are listed above and below.

default: true

invoice_template_idstringOptional

The invoice_template_id value for this operation. Its accepted type and constraints are listed above and below.

net_terms_daysintegerOptional

The net_terms_days value for this operation. Its accepted type and constraints are listed above and below.

max: 9007199254740991

executorenumRequired

The executor value for this operation. Its accepted type and constraints are listed above and below.

Show allowed values

"indiana""merchant"

accountIdstringRequired

The accountId value for this operation. Its accepted type and constraints are listed above and below.

pattern: ^acct_[A-Za-z0-9]+$

subscriptionIdstringRequired

The subscriptionId value for this operation. Its accepted type and constraints are listed above and below.

pattern: ^sub_[A-Za-z0-9]+$

actionenumRequired

Business action. Target fields and quantity requirements vary by action; see the request structure and example.

Show allowed values

"update""cancel""schedule""release"

updateobject | nullRequired

The update value for this operation. Its accepted type and constraints are listed above and below.

Show child fields
itemsarrayRequired

The items value for this operation. Its accepted type and constraints are listed above and below.

maxItems: 20

removearrayRequired

The remove value for this operation. Its accepted type and constraints are listed above and below.

maxItems: 20

restoreItemsarrayOptional

The restoreItems value for this operation. Its accepted type and constraints are listed above and below.

minItems: 1 · maxItems: 20

prorationBehaviorenumOptional

The prorationBehavior value for this operation. Its accepted type and constraints are listed above and below.

Show allowed values

"always_invoice""create_prorations""none"

prorationDateintegerOptional

The prorationDate value for this operation. Its accepted type and constraints are listed above and below.

max: 9007199254740991

paymentBehavior"error_if_incomplete"Optional

The paymentBehavior value for this operation. Its accepted type and constraints are listed above and below.

cancelAtPeriodEndbooleanOptional

The cancelAtPeriodEnd value for this operation. Its accepted type and constraints are listed above and below.

clearCancelAttrueOptional

The clearCancelAt value for this operation. Its accepted type and constraints are listed above and below.

billingCycleAnchorNowtrueOptional

The billingCycleAnchorNow value for this operation. Its accepted type and constraints are listed above and below.

metadataobjectRequired

The metadata value for this operation. Its accepted type and constraints are listed above and below.

cancelobject | nullRequired

The cancel value for this operation. Its accepted type and constraints are listed above and below.

Show child fields
proratefalseRequired

The prorate value for this operation. Its accepted type and constraints are listed above and below.

invoiceNowfalseRequired

The invoiceNow value for this operation. Its accepted type and constraints are listed above and below.

scheduleobject | nullRequired

The schedule value for this operation. Its accepted type and constraints are listed above and below.

Show child fields
currentItemsarrayRequired

The currentItems value for this operation. Its accepted type and constraints are listed above and below.

maxItems: 20

nextItemsarrayRequired

The nextItems value for this operation. Its accepted type and constraints are listed above and below.

minItems: 1 · maxItems: 20

switchAtintegerRequired

The switchAt value for this operation. Its accepted type and constraints are listed above and below.

max: 9007199254740991

intervalenumRequired

The interval value for this operation. Its accepted type and constraints are listed above and below.

Show allowed values

"week""month""year"

intervalCountintegerRequired

Charging interval count: up to 156 weeks, 36 months or 3 years; omitted means 1. Not accepted for free or one_time. Allowance resets remain independent.

min: 1 · max: 52

resetBillingCycleAnchortrueOptional

The resetBillingCycleAnchor value for this operation. Its accepted type and constraints are listed above and below.

metadataobjectRequired

The metadata value for this operation. Its accepted type and constraints are listed above and below.

releaseobject | nullRequired

The release value for this operation. Its accepted type and constraints are listed above and below.

Show child fields
schedulestringRequired

The schedule value for this operation. Its accepted type and constraints are listed above and below.

pattern: ^sub_sched_[A-Za-z0-9]+$

expiresAtdate-timeRequired

ISO 8601 UTC expiry. Expired sessions and reservations cannot be reused.

storeobjectOptional

The store value for this operation. Its accepted type and constraints are listed above and below.

Show child fields
providerenumRequired

The provider value for this operation. Its accepted type and constraints are listed above and below.

Show allowed values

"apple""google"

productIdstringRequired

The productId value for this operation. Its accepted type and constraints are listed above and below.

minLength: 1 · maxLength: 255

catalogAmountMinorintegerRequired

The catalogAmountMinor value for this operation. Its accepted type and constraints are listed above and below.

min: 0 · max: 100000000

policyenumRequired

The policy value for this operation. Its accepted type and constraints are listed above and below.

Show allowed values

"apple_store""google_full_price"

Handle errors

Common failures
CodeRecovery
UNAUTHENTICATEDVerify the key or refresh the expired customer token once.
FORBIDDENCheck current key permissions and customer access.
INVALID_REQUESTCheck field types, UUIDs, decimal strings and mutually exclusive fields.
SCOPE_MISMATCHUse the App and environment bound to the credential.

Common failures

  • UNAUTHENTICATED

    Recovery
    Verify the key or refresh the expired customer token once.
  • FORBIDDEN

    Recovery
    Check current key permissions and customer access.
  • INVALID_REQUEST

    Recovery
    Check field types, UUIDs, decimal strings and mutually exclusive fields.
  • SCOPE_MISMATCH

    Recovery
    Use the App and environment bound to the credential.

Related:All request and error conventions·Back to endpoint index