Switch an existing subscription's plan or interval
Switches a live subscription between Pro and Team, and between monthly and annual, by updating its price at Paddle. The difference is prorated and charged or credited immediately. Paddle's customer portal cannot change plans, so this is the only self-serve path; a customer without a subscription uses POST /billing/checkout instead, and that endpoint refuses an account that already has a live one.
The no-trial price variant is always used: an account with a live subscription has billing history by definition.
Like checkout, the plan flip lands asynchronously via Paddle's webhook — this returns status: "updating" and the dashboard polls GET /me until billing.plan and billing.interval match.
Returns 400 validation_failed when billing is not configured, when the plan/interval is unknown, when the account has no subscription to change (including a comped plan granted by an operator), when the subscription is past due or already cancelling, or when it is already on the requested plan and interval. Returns 422 plan_limit when the account's current usage exceeds the target plan's limits; its error.details.blockers lists each one so the customer can be told what to trim first.
Request
- Base URL: https://app.yoping.me/api/v1
- URL: https://app.yoping.me/api/v1/billing/change-plan
- Auth: API key in cookie yp_session
Request body
Response
The switch was accepted at Paddle; the plan flip follows via webhook.
Changes
No recorded changes to this operation across all 1 revision of this API.