Order Details
User History
Prices
Coupons
Products
Licenses
Pay Links
Transactions
Payments
Plans
Modifiers
Payments
One-off Charges
Webhooks
post

/2.0/subscription/users/update

Update the quantity, price, and/or plan of a user’s subscription.

Request example:

curl -X POST \
  -d 'vendor_id=123' \
  -d 'vendor_auth_code=456bd...' \
  -d 'subscription_id=12345' \
  -d 'quantity=7' \
  -d 'recurring_price=11.00' \
  -d 'currency=USD' \
https://vendors.paddle.com/api/2.0/subscription/users/update

Usage Notes

  • Subscribers on non-quantity plans can move to quantity plans but not the inverse.
  • Subscribers must be billed immediately when moving to a plan with a different billing interval.
  • Subscribers cannot be moved to a plan where the current currency is not enabled.
  • Subscribers cannot be moved to a different plan whilst on trialing status.
  • Subscribers in a paused state cannot be modified until they restart their subscription.
  • Subscribers in a past due state can only have the passthrough or pause field updated.
  • The currency of an existing subscription cannot be changed.
  • Recurring coupons (if present) will be removed when this API is used.

Request Body

Form data (application/x-www-form-urlencoded)
vendor_id
integer

The vendor ID identifies your seller account. This can be found in Developer Tools > Authentication.

required
minimum: 1
pattern: \d+
vendor_auth_code
string

The vendor auth code is a private API key for authenticating API requests. This key should never be used in client side code or shared publicly. This can be found in Developer Tools > Authentication.

required
pattern: [0-9a-f]+
subscription_id
integer

The ID of the subscription you’re updating.

required
pattern: ^\d+$
quantity
integer

The new quantity to be applied to a quantity enabled subscription.

pattern: ^\d+$
currency
string

Optional, but required if setting recurring_price. The currency that the recurring price should be charged in. E.g. USD, GBP, EUR, etc. This must be the same as the currency of the existing subscription.

pattern: [A-Z]{3}
recurring_price
number

The new recurring price per unit to apply to a quantity enabled subscription. Please note this is a singular price, i.e 11.00.

pattern: ^\d+\.\d{2}$
bill_immediately
boolean

If the subscription should bill for the next interval at the revised figures immediately.

default: false
plan_id
integer

The new plan ID to move the subscription to.

pattern: ^\d+$
prorate
boolean

Whether the change in subscription should be prorated.

default: true
keep_modifiers
boolean

Retain the existing modifiers on the user subscription.

default: true
passthrough
string

Update the additional data associated with this subscription, like additional features, add-ons and seats. This will be included in all subsequent webhooks, and is often a JSON string of relevant data.

maxLength: 1000
pause
boolean

Whether a subscription should be paused or restarted. If the subscription is not paused and this is set to true, the subscription status will be changed to “paused” when the subscription’s next payment date is reached.

default: null

Responses

1 Example
Schema
object
or
object

An unsuccessful call to the Dashboard API will return a 200 response containing a field success set to false and an error object.

Send a Test Request

Send requests directly from the browser (CORS must be enabled)
$$.env
No $$.env variables are being used in this request.