Settings changes apply to future operations and newly created process state only. Existing active dunning cases, cancellation flows, and renewal cycles keep the configuration that was snapshotted when they were created.
Accessing subscription settings
In your Medusa Admin, navigate to Settings → Subscription Settings (/app/settings/subscription-settings). The page loads the current effective settings and lets you edit and save them in a single form.
The settings page is split into four sections:
- Trial — default trial period for new subscription operations
- Dunning — retry schedule and maximum attempt count for new dunning cases
- Renewals — default renewal behavior for newly started renewal cycles
- Cancellation defaults — default posture when a new cancellation flow opens
Configurable fields
Renewal behavior values
Cancellation behavior values
Persisted state and the is_persisted flag
Before you save settings for the first time, Reorder serves built-in fallback defaults. These defaults are not stored in the database — they are assembled at read time. Once you save settings for the first time, Reorder creates a persistent singleton record and uses it as the runtime source of truth. Theis_persisted field in the API response tells you which state you are in:
The info panel at the top of the settings page shows the current
version, updated_at, and updated_by values so you can see when the record was last changed and by whom.
The version field
Every successful save increments theversion field by one. Version starts at 0 for fallback defaults and becomes 1 after the first save.
The version field is used for optimistic locking. When you submit a settings update through the API, you pass the expected_version you read to ensure your update is based on the latest state. If another update has occurred since your read, the API returns a 409 Conflict.
Updating settings via the Admin API
You can read and update subscription settings programmatically using the Admin API.Get current settings
is_persisted: false. It never returns 404.
Example response (fallback defaults):
Update settings
Pass
expected_version: 0 for your first save. For subsequent saves, pass the version value returned by the most recent GET or POST response.Validation rules
The API enforces these rules on every update request:default_trial_daysmust be>= 0max_dunning_attemptsmust be> 0dunning_retry_intervalsmust contain positive integers onlydunning_retry_intervalsmust be strictly increasing with no duplicatesmax_dunning_attemptsmust equal the number of intervals indunning_retry_intervalsdefault_renewal_behaviormust be one of the supported enum valuesdefault_cancellation_behaviormust be one of the supported enum valuesexpected_versionmust be>= 0
400 invalid_data. A version mismatch returns 409 Conflict.
Next steps
- Plugin setup — review the full plugin installation steps
- Dunning — understand how dunning cases consume these settings at create time
- Renewals — see how renewal behavior settings apply to new renewal cycles