Langsung ke konten utama
POST
/
subscriptions
/
{subscription_id}
/
change-plan
/
preview
JavaScript
import DodoPayments from 'dodopayments';

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

const response = await client.subscriptions.previewChangePlan('subscription_id', {
  product_id: 'product_id',
  proration_billing_mode: 'prorated_immediately',
  quantity: 0,
});

console.log(response.immediate_charge);
{
  "immediate_charge": {
    "line_items": [
      {
        "currency": "AED",
        "id": "<string>",
        "product_id": "<string>",
        "proration_factor": 123,
        "quantity": 123,
        "tax_inclusive": true,
        "type": "subscription",
        "unit_price": 123,
        "description": "<string>",
        "name": "<string>",
        "tax": 123,
        "tax_rate": 123
      }
    ],
    "summary": {
      "currency": "AED",
      "customer_credits": 123,
      "settlement_amount": 123,
      "settlement_currency": "AED",
      "total_amount": 123,
      "settlement_tax": 123,
      "tax": 123
    }
  },
  "new_plan": {
    "addons": [
      {
        "addon_id": "<string>",
        "quantity": 123
      }
    ],
    "billing": {
      "country": "AF",
      "city": "<string>",
      "state": "<string>",
      "street": "<string>",
      "zipcode": "<string>"
    },
    "cancel_at_next_billing_date": true,
    "created_at": "2023-11-07T05:31:56Z",
    "currency": "AED",
    "customer": {
      "customer_id": "<string>",
      "email": "<string>",
      "name": "<string>",
      "metadata": {},
      "phone_number": "<string>"
    },
    "metadata": {},
    "meters": [
      {
        "currency": "AED",
        "free_threshold": 123,
        "measurement_unit": "<string>",
        "meter_id": "<string>",
        "name": "<string>",
        "price_per_unit": "10.50",
        "description": "<string>"
      }
    ],
    "next_billing_date": "2023-11-07T05:31:56Z",
    "on_demand": true,
    "payment_frequency_count": 123,
    "payment_frequency_interval": "Day",
    "previous_billing_date": "2023-11-07T05:31:56Z",
    "product_id": "<string>",
    "quantity": 123,
    "recurring_pre_tax_amount": 123,
    "status": "pending",
    "subscription_id": "<string>",
    "subscription_period_count": 123,
    "subscription_period_interval": "Day",
    "tax_inclusive": true,
    "trial_period_days": 123,
    "cancelled_at": "2023-11-07T05:31:56Z",
    "discount_cycles_remaining": 123,
    "discount_id": "<string>",
    "expires_at": "2023-11-07T05:31:56Z",
    "payment_method_id": "<string>",
    "tax_id": "<string>"
  }
}
Gunakan endpoint ini untuk menunjukkan kepada pelanggan dengan tepat berapa yang akan mereka bayar saat meningkatkan atau menurunkan langganan mereka, meningkatkan transparansi dan mengurangi permintaan dukungan.

Kasus Penggunaan

  • Konfirmasi checkout: Tampilkan biaya prorata sebelum pelanggan mengonfirmasi perubahan rencana
  • Kalkulator harga: Buat kalkulator upgrade/downgrade dalam aplikasi Anda
  • Layanan mandiri pelanggan: Biarkan pelanggan menjelajahi opsi rencana dengan harga yang akurat

Bidang Respons

Respons prabaca mencakup:
FieldDeskripsi
immediate_chargeBiaya yang akan dikenakan segera, termasuk item baris dan ringkasan
new_planObjek langganan lengkap yang menunjukkan bagaimana tampilannya setelah perubahan rencana
immediate_charge.summary berisi jumlah total yang akan dikenakan. Gunakan ini untuk menampilkan harga kepada pelanggan Anda sebelum mereka mengonfirmasi perubahan rencana.

Authorizations

Authorization
string
header
required

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

Path Parameters

subscription_id
string
required

Subscription Id

Body

application/json
product_id
string
required

Unique identifier of the product to subscribe to

proration_billing_mode
enum<string>
required

Proration Billing Mode

Opsi yang tersedia:
prorated_immediately,
full_immediately,
difference_immediately
quantity
integer<int32>
required

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

Rentang yang diperlukan: x >= 0
addons
Attach Addon Request · object[] | null

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

Response

Preview of subscription plan change

immediate_charge
object
required
new_plan
object
required

Response struct representing subscription details