Hoppa till huvudinnehåll
POST
/
subscriptions
/
{subscription_id}
/
change-plan
JavaScript
import DodoPayments from 'dodopayments';

const client = new DodoPayments({
  bearerToken: process.env['DODO_PAYMENTS_API_KEY'], // This is the default and can be omitted
});

await client.subscriptions.changePlan('subscription_id', {
  product_id: 'product_id',
  proration_billing_mode: 'prorated_immediately',
  quantity: 0,
});

Documentation Index

Fetch the complete documentation index at: https://docs.dodopayments.com/llms.txt

Use this file to discover all available pages before exploring further.

Schemalagda ändringar av plan

Använd parametern effective_at för att kontrollera när planändringen träder i kraft:
VärdeBeteende
immediatelyTillämpa planändringen direkt. Detta är standard.
next_billing_datePlanera ändringen till nästa faktureringsdatum. Kunden behåller tillgången till sin nuvarande plan tills faktureringsperioden slutar.
Schemalagda planändringar är idealiska för nedgradering — kunder behåller sina nuvarande planförmåner till slutet av faktureringsperioden, och byter sedan automatiskt till den nya planen.
För att avbryta en schemalagd planändring innan den träder i kraft, använd slutpunkten Cancel Scheduled Plan Change.

Hantering av betalningsfel

Använd parametern on_payment_failure för att kontrollera vad som händer när betalningen för planändringen misslyckas:
VärdeBeteende
prevent_changeBehåll abonnemanget på nuvarande plan tills betalningen lyckas. Planändring förblir väntande.
apply_changeTillämpa planändringen omedelbart oavsett betalningsresultat. Detta är standard.
Om on_payment_failure inte anges, är beteendet förvalt till din affärsnivåinställning som konfigureras i instrumentpanelen.

Rabattkoder

Du kan använda en eller flera staplade rabattkoder när du byter planer genom att skicka discount_codes-arrayen (max 20 poster, tillämpas i arrayordning). Det enkla fältet discount_code är föråldrat men fungerar fortfarande för befintliga integrationer; det kan inte kombineras med discount_codes i samma förfrågan.
discount_codes-värdeBeteende
Ej angivet (null / utelämnad)Befintliga rabatter med preserve_on_plan_change=true bevaras om tillämpligt för den nya produkten.
[] (tom array)Alla befintliga rabatter tas bort från prenumerationen.
["CODE_A", "CODE_B", ...]Ersätter eventuella befintliga rabatter med denna staplade uppsättning, validerad och tillämpad i arrayordning.
Använd rabattkoder vid planändringar för att erbjuda kampanjpriser på uppgraderingar, eller skicka koder när kunder migreras till en ny plannivå.
Använd prevent_change för kritiska uppgraderingar där du vill säkerställa betalning innan du ger åtkomst till premiumfunktioner.

Auktoriseringar

Authorization
string
header
obligatorisk

Bearer authentication header of the form Bearer <token>, where <token> is your auth token.

Sökvägsparametrar

subscription_id
string
obligatorisk

Subscription Id

Kropp

application/json
product_id
string
obligatorisk

Unique identifier of the product to subscribe to

proration_billing_mode
enum<string>
obligatorisk

Proration Billing Mode

Tillgängliga alternativ:
prorated_immediately,
full_immediately,
difference_immediately,
do_not_bill
quantity
integer<int32>
obligatorisk

Number of units to subscribe for. Must be at least 1.

Obligatoriskt intervall: x >= 0
adaptive_currency_fees_inclusive
boolean | null

Whether adaptive currency fees should be included in the price (true) or added on top (false). If not specified, uses the subscription's stored setting.

addons
Attach Addon Request · object[] | null

Addons for the new plan. Note : Leaving this empty would remove any existing addons

discount_code
string | null
föråldrad

DEPRECATED: Use discount_codes instead. Cannot be used together with discount_codes.

discount_codes
string[] | null

Stacked discount codes to apply to the new plan. Max 20. Cannot be used together with discount_code. If provided, replaces any existing discount codes. Empty array removes all discounts. If not provided (None), existing discounts with preserve_on_plan_change=true are preserved.

effective_at
enum<string>

When to apply the plan change.

  • immediately (default): Apply the plan change right away
  • next_billing_date: Schedule the change for the next billing date
Tillgängliga alternativ:
immediately,
next_billing_date
metadata
object

Metadata for the payment. If not passed, the metadata of the subscription will be taken

on_payment_failure
null | enum<string>

Controls behavior when the plan change payment fails.

  • prevent_change: Keep subscription on current plan until payment succeeds
  • apply_change (default): Apply plan change immediately regardless of payment outcome

If not specified, uses the business-level default setting.

Tillgängliga alternativ:
prevent_change,
apply_change

Svar

Subscription plan changed. If on_payment_failure=prevent_change, the plan change is pending until payment succeeds.

Last modified on May 22, 2026