Draft a percentage change, check customer notice, schedule the adjustment, and track its outcome.
Use a price adjustment to change selected recurring charges on an existing subscription at a future renewal. This guide stages a 5% rent increase as a draft before scheduling it.
Scheduling can send a customer notification immediately. Test the flow on a test operator first. Check the resolved adjustment date and notice settings before scheduling against a real subscription.
Use a token with public.price_adjustment:read and public.price_adjustment:write. Add public.subscription:read if you retrieve the subscription first.To schedule an adjustment, the subscription must be active, have a Stripe subscription ID, and not be archived or scheduled to end. It must have a future renewal date. The resolved adjustment date must be later than today in the operator’s timezone.Only one scheduled adjustment can await application for a subscription at a time. Drafts do not reserve that slot. A draft can be created before all scheduling conditions are met, so a successful draft does not prove that it can be scheduled.To run this guide’s curl examples, set STORA_ACCESS_TOKEN in your shell to your access token. STORA_ACCESS_TOKEN is an example variable name, not an API requirement. Replace sub_REPLACE below with the subscription ID.
The response contains price_adjustment. Save its id and set PRICE_ADJUSTMENT_ID to that returned ID for the later requests.Use a negative percentage for a decrease. The percentage must be non-zero and greater than -100. The applies_to flags default to false, so explicitly select at least one charge type before scheduling.
Inspect the returned adjustment before you schedule it:
Check adjust_on. Stora resolves effective_from to the first renewal on or after that date. next_billing_period selects the next renewal.
Check applies_to and percentage against the intended change.
Check estimation.pre_amount and estimation.post_amount. These are estimates from the subscription’s current billing data, not a fixed quote.
Check notification.notice_period, notification.scheduled_at, and notification.sent_at.
Dates use the operator’s timezone. If you need a later renewal, supply a calendar date in effective_from instead of next_billing_period.The example sends no notice while it remains a draft. Its send_immediately setting takes effect only when you schedule it.To give advance notice, use a positive number of days, such as "notice_period": 30. If that explicit period puts the notice date in the past, the request returns 422 with code invalid_notice_period. Choose a later renewal, shorten the period, or request immediate notice if appropriate. If the notice date is today, Stora returns send_immediately.If you omit notification, Stora uses the operator’s default notice period. Unlike an explicit period that would notify in the past, a default that no longer fits resolves to send_immediately.To skip Stora’s customer notification, set "notice_period": null. This requires public.price_adjustment:skip_notifications in addition to the write scope. The extra scope is also required if the operator’s default resolves to no notification, or if you update or schedule a draft that already skips notification.
Use Update a Price Adjustment to change the draft. Omitted fields stay unchanged. You cannot change its subscription. Create a different adjustment for another subscription.If you change effective_from, inspect the newly resolved adjust_on and notice settings again. Estimates are recalculated on each write.A scheduled adjustment cannot be edited. Delete it and create a replacement if the date, percentage, or charge types need to change.
Before scheduling, confirm that the subscription still has the selected charge types and that the estimate reflects the intended change. Scheduling does not guarantee rejection when a selected charge type is absent. If the draft is stale, update it to refresh the estimate.Once you have checked the draft, generate a separate idempotency key for scheduling:
The status becomes pending. Stora checks subscription eligibility again and recalculates the estimate from current prices. Compare the returned estimate with the change you intended.Notifications become active when you schedule. A send_immediately notice is sent then. If the notice period no longer fits before the adjustment date, Stora sends the notice today and reports send_immediately.If scheduling returns 409, retrieve the current adjustment and subscription before trying again. Check for an ineligible subscription, a date that is today or in the past, or another scheduled adjustment. Do not retry a lifecycle conflict indefinitely.
Retrieve the adjustment by ID, or configure webhooks for price-adjustment events.A scheduled adjustment starts as pending. During application it becomes processing, then adjusted when the prices have been applied. The later invoiced state records invoicing, not payment collection. Check billing events separately if you need payment confirmation.Handle price_adjustment.scheduled, price_adjustment.rescheduled, price_adjustment.cancelled, price_adjustment.invoiced, and price_adjustment.failed events. On failure, retrieve the adjustment and investigate before creating another one.Once an adjustment has been applied, it no longer holds the scheduled slot. You can schedule the next one even if the previous adjustment is still awaiting its invoice.
Only draft, pending, and cancelled adjustments can be deleted. Deletion does not send a customer cancellation notice. If Stora has already sent the original notice, communicate the cancellation or replacement through your own customer-support process.For timeouts on a create or schedule request, retry with that action’s original idempotency key. See Idempotent requests.
Was this page helpful?
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Stora","colors":{"primary":"#05195A","light":"#F54309","dark":"#13183E"},"logo":{"light":"https://mintcdn.com/stora-f4154d0c/OkDRMCLydnzT1IFG/logo/stora-logo.svg?fit=max\u0026auto=format\u0026n=OkDRMCLydnzT1IFG\u0026q=85\u0026s=208e8987df1797b88ccc8c1c418f8126","dark":"https://mintcdn.com/stora-f4154d0c/dmKerB3EhgN2KR1E/logo/stora-logo-white.svg?fit=max\u0026auto=format\u0026n=dmKerB3EhgN2KR1E\u0026q=85\u0026s=952b96d5123da5b794de397c9d2edacb"},"favicon":"https://mintcdn.com/stora-f4154d0c/OkDRMCLydnzT1IFG/favicon.svg?fit=max\u0026auto=format\u0026n=OkDRMCLydnzT1IFG\u0026q=85\u0026s=03693c34ec06252c51107f6d1057a0ac","appearance":{"default":"system"},"navbar":{"links":[{"href":"https://stora.co/contact","label":"Contact"}],"primary":{"type":"button","label":"Book a demo","href":"https://stora.co/get-started"}},"integrations":{"intercom":{"appId":"qaw9usmk"}},"contextual":{"options":["copy","view","chatgpt","claude","perplexity","mcp","cursor","vscode"],"display":"header"},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"stora-f4154d0c","hasAudioNarration":false,"actualSubdomain":"stora-f4154d0c","customDomains":["docs.stora.co"],"gitSource":{"type":"github","owner":"stora-co","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6adf1833b80f21f061120388","collectionId":"6c1524d6-71cc-47b0-bd89-a5d15eb85c6e","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6adf1833b80f21f061120388"},"feedback":{"thumbs":true},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6ae22a8378169c4e7c58f440","clientVersion":"0.0.3990","searchFilterCounts":[{"language":"default","tag":"API reference","count":186},{"language":"default","tag":"Webhooks","count":73},{"language":"default","tag":"Guides","count":31},{"language":"default","tag":"Opportunities","count":10},{"language":"default","tag":"Building integrations","count":8},{"language":"default","tag":"Deals","count":8},{"language":"default","tag":"Orders","count":8},{"language":"default","tag":"Working with the API","count":7},{"language":"default","tag":"Tasks","count":7},{"language":"default","tag":"Units","count":7}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true,"deflection":{"enabled":true,"email":"api@stora.co","showHelpButton":true}},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-v7-file-tree","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"pause-universal-search-reconcile","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"per-site-search-delta","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-private-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-nav-generations","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-agent-model-picker","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"isAtlas":false,"googleFontsInlined":false},"customCss":[{"filePath":"style.css","content":"img.nav-logo{height:21px}.mermaid .node rect{rx:.375rem;ry:.375rem}.mermaid .edgeLabel,.mermaid .edgeLabel .labelBkg{border-radius:4px!important}[data-component-part=update-tag]{padding:.0625rem .375rem;background-color:#f4f4f5;border:1px solid #e4e4e7;font-size:.75rem}.dark [data-component-part=update-tag]{background-color:#27272a;border-color:#3f3f46}.mermaid .edgeLabel p{color:#fff!important;font-size:.625rem!important;font-weight:700!important;text-transform:uppercase!important;letter-spacing:.05em!important}.dark .mermaid .labelText,.dark .mermaid .labelText>tspan,.dark .mermaid .loopText,.dark .mermaid .loopText>tspan,.dark .mermaid .messageText{fill:#f4f4f5!important;stroke:none!important}.dark .mermaid marker[id$=-arrowhead] path,.dark .mermaid marker[id$=-filled-head] path{fill:#ff7237!important;stroke:#ff7237!important}.dark .mermaid .messageLine0,.dark .mermaid .messageLine1,.dark .mermaid marker[id$=-crosshead] path{stroke:#ff7237!important}[data-nav-tag=Beta],[data-nav-tag=Beta] *{background-color:#f87171;color:#fff!important}[data-nav-tag=Changing],[data-nav-tag=Changing] *{background-color:#f59e0b;color:#fff!important}"}],"page":{"pagePath":"2025-09/guides/price-adjustments","slug":"/2025-09/guides/price-adjustments","pageMetadata":{"title":"Schedule a subscription price adjustment","description":"Draft a percentage change, check customer notice, schedule the adjustment, and track its outcome.","href":"/2025-09/guides/price-adjustments"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Draft a percentage change, check customer notice, schedule the adjustment, and track its outcome.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,li:`li`,ol:`ol`,p:`p`,pre:`pre`,span:`span`,..._provideComponents(),...props.components},{CodeBlock,Heading,Warning}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(_components.p,{children:`Use a price adjustment to change selected recurring charges on an existing subscription at a future renewal. This guide stages a 5% rent increase as a draft before scheduling it.`}),`\n`,_jsx(Warning,{children:_jsx(_components.p,{children:`Scheduling can send a customer notification immediately. Test the flow on a test operator first. Check the resolved adjustment date and notice settings before scheduling against a real subscription.`})}),`\n`,_jsx(Heading,{level:`2`,id:`before-you-start`,children:`Before you start`}),`\n`,_jsxs(_components.p,{children:[`Use a token with `,_jsx(_components.code,{children:`public.price_adjustment:read`}),` and `,_jsx(_components.code,{children:`public.price_adjustment:write`}),`. Add `,_jsx(_components.code,{children:`public.subscription:read`}),` if you retrieve the subscription first.`]}),`\n`,_jsx(_components.p,{children:`To schedule an adjustment, the subscription must be active, have a Stripe subscription ID, and not be archived or scheduled to end. It must have a future renewal date. The resolved adjustment date must be later than today in the operator’s timezone.`}),`\n`,_jsx(_components.p,{children:`Only one scheduled adjustment can await application for a subscription at a time. Drafts do not reserve that slot. A draft can be created before all scheduling conditions are met, so a successful draft does not prove that it can be scheduled.`}),`\n`,_jsxs(_components.p,{children:[`To run this guide’s `,_jsx(_components.code,{children:`curl`}),` examples, set `,_jsx(_components.code,{children:`STORA_ACCESS_TOKEN`}),` in your shell to your access token. `,_jsx(_components.code,{children:`STORA_ACCESS_TOKEN`}),` is an example variable name, not an API requirement. Replace `,_jsx(_components.code,{children:`sub_REPLACE`}),` below with the subscription ID.`]}),`\n`,_jsx(Heading,{level:`2`,id:`create-a-draft`,children:`Create a draft`}),`\n`,_jsx(_components.p,{children:`Generate an idempotency key once for this adjustment:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`ADJUSTMENT_KEY`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"$(`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`uuidgen`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`)\"`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.a,{href:`/2025-09/api-reference/price-adjustments/create-a-price-adjustment`,children:`Create the draft`}),` with the charge types you want to change. This example requests immediate customer notice when you later schedule it:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`17`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`17`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`curl`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --request`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` POST`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\t'https://public-api.stora.co/2025-09/price_adjustments'`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`\t--header`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"Authorization: Bearer `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`$STORA_ACCESS_TOKEN`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`\t--header`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'Content-Type: application/json'`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`\t--header`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"Idempotency-Key: `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`$ADJUSTMENT_KEY`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`\t--data`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` '{`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\t\t\"subscription\": {\"id\": \"sub_REPLACE\"},`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\t\t\"percentage\": 5,`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\t\t\"effective_from\": \"next_billing_period\",`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\t\t\"schedule\": false,`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\t\t\"applies_to\": {`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\t\t\t\"unit_types\": true,`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\t\t\t\"protection_levels\": false,`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\t\t\t\"products\": false`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\t\t},`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\t\t\"notification\": {\"notice_period\": \"send_immediately\"}`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\t}'`})}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`The response contains `,_jsx(_components.code,{children:`price_adjustment`}),`. Save its `,_jsx(_components.code,{children:`id`}),` and set `,_jsx(_components.code,{children:`PRICE_ADJUSTMENT_ID`}),` to that returned ID for the later requests.`]}),`\n`,_jsxs(_components.p,{children:[`Use a negative percentage for a decrease. The percentage must be non-zero and greater than `,_jsx(_components.code,{children:`-100`}),`. The `,_jsx(_components.code,{children:`applies_to`}),` flags default to `,_jsx(_components.code,{children:`false`}),`, so explicitly select at least one charge type before scheduling.`]}),`\n`,_jsx(Heading,{level:`2`,id:`check-the-date-estimate-and-notice`,children:`Check the date, estimate, and notice`}),`\n`,_jsx(_components.p,{children:`Inspect the returned adjustment before you schedule it:`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[`Check `,_jsx(_components.code,{children:`adjust_on`}),`. Stora resolves `,_jsx(_components.code,{children:`effective_from`}),` to the first renewal on or after that date. `,_jsx(_components.code,{children:`next_billing_period`}),` selects the next renewal.`]}),`\n`,_jsxs(_components.li,{children:[`Check `,_jsx(_components.code,{children:`applies_to`}),` and `,_jsx(_components.code,{children:`percentage`}),` against the intended change.`]}),`\n`,_jsxs(_components.li,{children:[`Check `,_jsx(_components.code,{children:`estimation.pre_amount`}),` and `,_jsx(_components.code,{children:`estimation.post_amount`}),`. These are estimates from the subscription’s current billing data, not a fixed quote.`]}),`\n`,_jsxs(_components.li,{children:[`Check `,_jsx(_components.code,{children:`notification.notice_period`}),`, `,_jsx(_components.code,{children:`notification.scheduled_at`}),`, and `,_jsx(_components.code,{children:`notification.sent_at`}),`.`]}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`Dates use the operator’s timezone. If you need a later renewal, supply a calendar date in `,_jsx(_components.code,{children:`effective_from`}),` instead of `,_jsx(_components.code,{children:`next_billing_period`}),`.`]}),`\n`,_jsxs(_components.p,{children:[`The example sends no notice while it remains a draft. Its `,_jsx(_components.code,{children:`send_immediately`}),` setting takes effect only when you schedule it.`]}),`\n`,_jsxs(_components.p,{children:[`To give advance notice, use a positive number of days, such as `,_jsx(_components.code,{children:`\"notice_period\": 30`}),`. If that explicit period puts the notice date in the past, the request returns `,_jsx(_components.code,{children:`422`}),` with code `,_jsx(_components.code,{children:`invalid_notice_period`}),`. Choose a later renewal, shorten the period, or request immediate notice if appropriate. If the notice date is today, Stora returns `,_jsx(_components.code,{children:`send_immediately`}),`.`]}),`\n`,_jsxs(_components.p,{children:[`If you omit `,_jsx(_components.code,{children:`notification`}),`, Stora uses the operator’s default notice period. Unlike an explicit period that would notify in the past, a default that no longer fits resolves to `,_jsx(_components.code,{children:`send_immediately`}),`.`]}),`\n`,_jsxs(_components.p,{children:[`To skip Stora’s customer notification, set `,_jsx(_components.code,{children:`\"notice_period\": null`}),`. This requires `,_jsx(_components.code,{children:`public.price_adjustment:skip_notifications`}),` in addition to the write scope. The extra scope is also required if the operator’s default resolves to no notification, or if you update or schedule a draft that already skips notification.`]}),`\n`,_jsx(Heading,{level:`2`,id:`edit-the-draft-if-needed`,children:`Edit the draft if needed`}),`\n`,_jsxs(_components.p,{children:[`Use `,_jsx(_components.a,{href:`/2025-09/api-reference/price-adjustments/update-a-price-adjustment`,children:`Update a Price Adjustment`}),` to change the draft. Omitted fields stay unchanged. You cannot change its subscription. Create a different adjustment for another subscription.`]}),`\n`,_jsxs(_components.p,{children:[`If you change `,_jsx(_components.code,{children:`effective_from`}),`, inspect the newly resolved `,_jsx(_components.code,{children:`adjust_on`}),` and notice settings again. Estimates are recalculated on each write.`]}),`\n`,_jsx(_components.p,{children:`A scheduled adjustment cannot be edited. Delete it and create a replacement if the date, percentage, or charge types need to change.`}),`\n`,_jsx(Heading,{level:`2`,id:`schedule-the-adjustment`,children:`Schedule the adjustment`}),`\n`,_jsx(_components.p,{children:`Before scheduling, confirm that the subscription still has the selected charge types and that the estimate reflects the intended change. Scheduling does not guarantee rejection when a selected charge type is absent. If the draft is stale, update it to refresh the estimate.`}),`\n`,_jsx(_components.p,{children:`Once you have checked the draft, generate a separate idempotency key for scheduling:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`6`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`6`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`SCHEDULE_KEY`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"$(`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`uuidgen`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`)\"`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`curl`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --request`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` POST`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\t\"https://public-api.stora.co/2025-09/price_adjustments/`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`$PRICE_ADJUSTMENT_ID`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`/schedule\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`\t--header`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"Authorization: Bearer `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`$STORA_ACCESS_TOKEN`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`\t--header`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"Idempotency-Key: `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`$SCHEDULE_KEY`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`The status becomes `,_jsx(_components.code,{children:`pending`}),`. Stora checks subscription eligibility again and recalculates the estimate from current prices. Compare the returned estimate with the change you intended.`]}),`\n`,_jsxs(_components.p,{children:[`Notifications become active when you schedule. A `,_jsx(_components.code,{children:`send_immediately`}),` notice is sent then. If the notice period no longer fits before the adjustment date, Stora sends the notice today and reports `,_jsx(_components.code,{children:`send_immediately`}),`.`]}),`\n`,_jsxs(_components.p,{children:[`If scheduling returns `,_jsx(_components.code,{children:`409`}),`, retrieve the current adjustment and subscription before trying again. Check for an ineligible subscription, a date that is today or in the past, or another scheduled adjustment. Do not retry a lifecycle conflict indefinitely.`]}),`\n`,_jsx(Heading,{level:`2`,id:`track-the-outcome`,children:`Track the outcome`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.a,{href:`/2025-09/api-reference/price-adjustments/show-a-price-adjustment`,children:`Retrieve the adjustment`}),` by ID, or configure `,_jsx(_components.a,{href:`/2025-09/guides/webhooks`,children:`webhooks`}),` for price-adjustment events.`]}),`\n`,_jsxs(_components.p,{children:[`A scheduled adjustment starts as `,_jsx(_components.code,{children:`pending`}),`. During application it becomes `,_jsx(_components.code,{children:`processing`}),`, then `,_jsx(_components.code,{children:`adjusted`}),` when the prices have been applied. The later `,_jsx(_components.code,{children:`invoiced`}),` state records invoicing, not payment collection. Check billing events separately if you need payment confirmation.`]}),`\n`,_jsxs(_components.p,{children:[`Handle `,_jsx(_components.code,{children:`price_adjustment.scheduled`}),`, `,_jsx(_components.code,{children:`price_adjustment.rescheduled`}),`, `,_jsx(_components.code,{children:`price_adjustment.cancelled`}),`, `,_jsx(_components.code,{children:`price_adjustment.invoiced`}),`, and `,_jsx(_components.code,{children:`price_adjustment.failed`}),` events. On failure, retrieve the adjustment and investigate before creating another one.`]}),`\n`,_jsx(_components.p,{children:`Once an adjustment has been applied, it no longer holds the scheduled slot. You can schedule the next one even if the previous adjustment is still awaiting its invoice.`}),`\n`,_jsx(Heading,{level:`2`,id:`call-off-a-scheduled-adjustment`,children:`Call off a scheduled adjustment`}),`\n`,_jsxs(_components.p,{children:[`Before it starts processing, `,_jsx(_components.a,{href:`/2025-09/api-reference/price-adjustments/delete-a-price-adjustment`,children:`delete a pending adjustment`}),` to call it off:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`3`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`3`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`curl`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --request`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` DELETE`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\t\"https://public-api.stora.co/2025-09/price_adjustments/`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`$PRICE_ADJUSTMENT_ID`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`\t--header`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"Authorization: Bearer `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`$STORA_ACCESS_TOKEN`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`Only `,_jsx(_components.code,{children:`draft`}),`, `,_jsx(_components.code,{children:`pending`}),`, and `,_jsx(_components.code,{children:`cancelled`}),` adjustments can be deleted. Deletion does not send a customer cancellation notice. If Stora has already sent the original notice, communicate the cancellation or replacement through your own customer-support process.`]}),`\n`,_jsxs(_components.p,{children:[`For timeouts on a create or schedule request, retry with that action’s original idempotency key. See `,_jsx(_components.a,{href:`/2025-09/guides/requests#idempotent-requests`,children:`Idempotent requests`}),`.`]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Schedule a subscription price adjustment","description":"Draft a percentage change, check customer notice, schedule the adjustment, and track its outcome.","href":"/2025-09/guides/price-adjustments"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Before you start","slug":"before-you-start","depth":2,"children":[]},{"title":"Create a draft","slug":"create-a-draft","depth":2,"children":[]},{"title":"Check the date, estimate, and notice","slug":"check-the-date-estimate-and-notice","depth":2,"children":[]},{"title":"Edit the draft if needed","slug":"edit-the-draft-if-needed","depth":2,"children":[]},{"title":"Schedule the adjustment","slug":"schedule-the-adjustment","depth":2,"children":[]},{"title":"Track the outcome","slug":"track-the-outcome","depth":2,"children":[]},{"title":"Call off a scheduled adjustment","slug":"call-off-a-scheduled-adjustment","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"stora-f4154d0c","siteName":"Stora","title":"Schedule a subscription price adjustment - Stora","navMaps":{"firstHrefInVersion":{"2025-09":{"href":"/2025-09/guides/price-adjustments","matchLevel":0}},"firstHrefInLanguage":{}},"lastModified":"2026-10-22T13:44:11.874Z","originalFileLocation":"2025-09/guides/price-adjustments.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Draft a percentage change, check customer notice, schedule the adjustment, and track its outcome.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Stora\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/stora-f4154d0c/vqyFqxlOxTWjpk26/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/stora-f4154d0c/vqyFqxlOxTWjpk26/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/stora-f4154d0c/vqyFqxlOxTWjpk26/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/stora-f4154d0c/vqyFqxlOxTWjpk26/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/stora-f4154d0c/vqyFqxlOxTWjpk26/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/stora-f4154d0c/vqyFqxlOxTWjpk26/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/stora-f4154d0c/vqyFqxlOxTWjpk26/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/stora-f4154d0c/vqyFqxlOxTWjpk26/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/stora-f4154d0c/vqyFqxlOxTWjpk26/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Schedule a subscription price adjustment - Stora\">\u003cmeta data-mint-head property=\"og:description\" content=\"Draft a percentage change, check customer notice, schedule the adjustment, and track its outcome.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Stora\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.stora.co/2025-09/guides/price-adjustments\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://stora-f4154d0c.mintlify.app/_mintlify/api/og/v2?division=Building+integrations\u0026amp;title=Schedule+a+subscription+price+adjustment\u0026amp;description=Draft+a+percentage+change%2C+check+customer+notice%2C+schedule+the+adjustment%2C+and+track+its+outcome.\u0026amp;theme=e0fa26a73a1fabf36459047f\u0026amp;signature=7f09fbd199cc8ad8a5e623d5bfd16095f5e10e07c8ca22d3da129f88109eadf3\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Schedule a subscription price adjustment - Stora\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Draft a percentage change, check customer notice, schedule the adjustment, and track its outcome.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://stora-f4154d0c.mintlify.app/_mintlify/api/og/v2?division=Building+integrations\u0026amp;title=Schedule+a+subscription+price+adjustment\u0026amp;description=Draft+a+percentage+change%2C+check+customer+notice%2C+schedule+the+adjustment%2C+and+track+its+outcome.\u0026amp;theme=e0fa26a73a1fabf36459047f\u0026amp;signature=7f09fbd199cc8ad8a5e623d5bfd16095f5e10e07c8ca22d3da129f88109eadf3\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/stora-f4154d0c/vqyFqxlOxTWjpk26/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Stora\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#05195A\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.stora.co/2025-09/guides/price-adjustments\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/2025-09/guides/price-adjustments.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.stora.co/#organization\",\"name\":\"Stora\",\"url\":\"https://docs.stora.co\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/stora-f4154d0c/OkDRMCLydnzT1IFG/logo/stora-logo.svg?fit=max\u0026auto=format\u0026n=OkDRMCLydnzT1IFG\u0026q=85\u0026s=208e8987df1797b88ccc8c1c418f8126\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.stora.co#website\",\"name\":\"Stora\",\"url\":\"https://docs.stora.co\",\"publisher\":{\"@id\":\"https://docs.stora.co/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.stora.co/2025-09/guides/price-adjustments#webpage\",\"url\":\"https://docs.stora.co/2025-09/guides/price-adjustments\",\"name\":\"Schedule a subscription price adjustment\",\"description\":\"Draft a percentage change, check customer notice, schedule the adjustment, and track its outcome.\",\"dateModified\":\"2026-10-22T13:44:11.874Z\",\"isPartOf\":{\"@id\":\"https://docs.stora.co#website\"},\"breadcrumb\":{\"@id\":\"https://docs.stora.co/2025-09/guides/price-adjustments#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.stora.co/2025-09/guides/price-adjustments#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Building integrations\",\"item\":\"https://docs.stora.co/2025-09/guides/data-synchronisation\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Schedule a subscription price adjustment\",\"item\":\"https://docs.stora.co/2025-09/guides/price-adjustments\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.stora.co/2025-09/guides/price-adjustments#article\",\"headline\":\"Schedule a subscription price adjustment\",\"name\":\"Schedule a subscription price adjustment\",\"description\":\"Draft a percentage change, check customer notice, schedule the adjustment, and track its outcome.\",\"url\":\"https://docs.stora.co/2025-09/guides/price-adjustments\",\"mainEntityOfPage\":{\"@id\":\"https://docs.stora.co/2025-09/guides/price-adjustments#webpage\"},\"dateModified\":\"2026-10-22T13:44:11.874Z\",\"publisher\":{\"@id\":\"https://docs.stora.co/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.stora.co#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Stora\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Stora","nav":{"global":null,"versions":[{"version":"2025-09","default":true,"tabs":[{"tab":"Guides","groups":[{"group":"Getting started","pages":[{"title":"Introduction","href":"/2025-09/guides/introduction"},{"title":"Core concepts","href":"/2025-09/guides/core-concepts"},{"title":"Developer Portal","href":"/2025-09/guides/developer-portal"},{"title":"Authentication overview","href":"/2025-09/guides/authentication"},{"title":"Your first API call","href":"/2025-09/guides/first-request"},{"title":"Authorization","href":"/2025-09/guides/authorization"}]},{"group":"Developer Portal","pages":[{"title":"Create a test operator","href":"/2025-09/guides/test-operators"},{"title":"Secure your Developer Portal account","href":"/2025-09/guides/developer-account-security"},{"title":"Manage your developer company and team","href":"/2025-09/guides/developer-company-and-team"}]},{"group":"Manage accounts","pages":[{"title":"Connect an account","href":"/2025-09/guides/connect-account"},{"title":"API credentials","href":"/2025-09/guides/managed-account-authentication"},{"title":"Manage access","href":"/2025-09/guides/manage-account-access"}]},{"group":"Concepts","pages":[{"title":"Allocations and access","href":"/2025-09/guides/allocations-and-access"}]},{"group":"Working with the API","pages":[{"title":"Requests","href":"/2025-09/guides/requests"},{"title":"Responses","href":"/2025-09/guides/responses"},{"title":"API versioning","href":"/2025-09/guides/api-versioning"},{"title":"Migrating to site-scoped protection levels","href":"/2025-09/guides/site-scoped-protection-levels"},{"title":"Webhooks","href":"/2025-09/guides/webhooks"},{"title":"Resource metadata","href":"/2025-09/guides/metadata"},{"title":"Errors","href":"/2025-09/guides/errors"}]},{"group":"Building integrations","pages":[{"title":"Data synchronisation","href":"/2025-09/guides/data-synchronisation"},{"title":"Building a booking flow","href":"/2025-09/guides/booking-flow"},{"title":"Capture and qualify leads","description":"Capture an opportunity, create or associate a deal, and manage the opportunity's lifecycle.","href":"/2025-09/guides/opportunities-and-deals"},{"title":"Schedule a subscription price adjustment","href":"/2025-09/guides/price-adjustments"},{"title":"Record integration activity","description":"Create a Timeline Event that shows an action from your integration on a contact's timeline.","href":"/2025-09/guides/timeline-events"},{"title":"Building a partner integration","href":"/2025-09/guides/partner-integrations"},{"title":"Distributing a public plugin","href":"/2025-09/guides/distributing-public-plugins"},{"title":"Naming third-party plugins","href":"/2025-09/guides/third-party-plugin-naming"}]},{"group":"Marketplace","pages":[{"title":"Publish a marketplace listing","href":"/2025-09/guides/publish-marketplace-listing"}]},{"group":"Resources","pages":[{"title":"Developer tools","href":"/2025-09/guides/developer-tools"},{"title":"Changelog","href":"/2025-09/guides/changelog"}]}]},{"tab":"API reference","pages":[{"title":"API reference","href":"/2025-09/api-reference/contacts/list-all-contacts"}]}]}]},"title":"Schedule a subscription price adjustment - Stora","buildId":"dpl_2oYXwqkEXirXBPk8wV1FtM5USFWi","deploymentId":"dpl_2oYXwqkEXirXBPk8wV1FtM5USFWi","dynamics":[],"chunks":[]}