---
title: "Estimate a reactivation's first invoice"
description: "Dry-run."
canonical_url: "https://twominutebilling.com/help/developers/api-reference/subscriptions/estimate-a-reactivation-s-first-invoice"
---
# Estimate a reactivation's first invoice

> Dry-run.

<api-operation method="POST" path="/v1/businesses/{biz}/subscriptions/{sub}/reactivate_estimate">
<template v-slot:docs="">

No writes. Prices the FRESH FULL TERM that `POST …/reactivate` would bill for a CANCELLED subscription, through the same rating, tax vector and customer-balance draw the booking uses — lines, `subtotal_minor`, `discount_minor`, named `tax_lines[]`, `total_minor` (the invoice), `credits_applied_minor` and `amount_due_minor` (what is actually collected). Refused with 400 unless the subscription is `cancelled`, or when `coupon_code` is one the apply would refuse: not yet valid, expired, at its redemption limit, or used by this customer as often as the coupon allows.

Distinct from `…/estimate`, which prorates against a CURRENT TERM a cancelled subscription does not have, and from `…/customers/{cus}/subscription_estimate`, which knows no subscription and so cannot apply that subscription's own `max_refundable_credits_usage_minor`.

`items` is REQUIRED: this prices the item set you are previewing. `trial_end` is accepted because it changes the money — nothing is collected today, so `amount_due_minor` is 0 and `due_at_trial_end` says when the conversion bills instead. `billing_cycles` and `charges_handling` are NOT accepted: neither changes the first invoice's composition (a cycle cap bites from the second cycle, and `charges_handling` decides whether this composition is invoiced or parked as an unbilled charge), so accepting them would imply the preview varies with them.

When the reactivation continues the current term (see `POST …/reactivate`), `in_term_reactivation` is set: `current_period_end`, the term's `invoice` with its `outstanding_minor`, and `collects_now`. Lines and totals are then 0, and `amount_due_minor` is what collecting that invoice takes now (0 unless `collects_now`). `in_term_available` is on every reactivation estimate: whether `term: continue` is possible for these items, so a screen can offer the choice after `term: new` is selected.

## Path parameters

<table>
<thead>
  <tr>
    <th>
      Parameter
    </th>
    
    <th>
      Type
    </th>
    
    <th>
      Required
    </th>
    
    <th>
      Description
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      <code>
        biz
      </code>
    </td>
    
    <td>
      <code>
        string
      </code>
    </td>
    
    <td>
      <strong>
        yes
      </strong>
    </td>
    
    <td>
      Business id (biz_…)
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        sub
      </code>
    </td>
    
    <td>
      <code>
        string
      </code>
    </td>
    
    <td>
      <strong>
        yes
      </strong>
    </td>
    
    <td>
      Subscription id (sub_…)
    </td>
  </tr>
</tbody>
</table>

## Body

The request body is **required**.

<table>
<thead>
  <tr>
    <th>
      Field
    </th>
    
    <th>
      Type
    </th>
    
    <th>
      Required
    </th>
    
    <th>
      Description
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      <code>
        items
      </code>
    </td>
    
    <td>
      <code>
        array of object
      </code>
    </td>
    
    <td>
      <strong>
        yes
      </strong>
    </td>
    
    <td>
      The full desired line set, as <code>
        …/reactivate
      </code>
      
       takes it.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        items.price
      </code>
    </td>
    
    <td>
      <code>
        string
      </code>
    </td>
    
    <td>
      <strong>
        yes
      </strong>
    </td>
    
    <td>
      The price's id (a slug id, e.g. <code>
        pro-monthly-usd
      </code>
      
      ).
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        items.quantity
      </code>
    </td>
    
    <td>
      <code>
        integer
      </code>
    </td>
    
    <td>
      no
    </td>
    
    <td>
      The quantity.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        items.unit_price_minor
      </code>
    </td>
    
    <td>
      <code>
        integer
      </code>
    </td>
    
    <td>
      no
    </td>
    
    <td>
      A unit price in minor units, in place of the price's own.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        items.free_quantity
      </code>
    </td>
    
    <td>
      <code>
        integer
      </code>
    </td>
    
    <td>
      no
    </td>
    
    <td>
      Units of this item free in each billing period. Overrides the price's <code>
        free_quantity
      </code>
      
      .
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        trial_end
      </code>
    </td>
    
    <td>
      <code>
        string · ISO-8601
      </code>
    </td>
    
    <td>
      no
    </td>
    
    <td>
      When the new trial ends (ISO-8601 UTC).
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        term
      </code>
    </td>
    
    <td>
      <code>
        string
      </code>
    </td>
    
    <td>
      no
    </td>
    
    <td>
      As on <code>
        POST …/reactivate
      </code>
      
      . <code>
        in_term_available
      </code>
      
       says whether <code>
        continue
      </code>
      
       is possible for these items. One of <code>
        continue
      </code>
      
      , <code>
        new
      </code>
      
      .
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        on_charge_failure
      </code>
    </td>
    
    <td>
      <code>
        string
      </code>
    </td>
    
    <td>
      no
    </td>
    
    <td>
      As on <code>
        POST …/reactivate
      </code>
      
      . Decides <code>
        in_term_reactivation.collects_now
      </code>
      
      . One of <code>
        refuse
      </code>
      
      , <code>
        dun
      </code>
      
      .
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        reactivate_from
      </code>
    </td>
    
    <td>
      <code>
        string · ISO-8601
      </code>
    </td>
    
    <td>
      no
    </td>
    
    <td>
      Price the term a backdated reactivation opens at this instant. Same refusals as <code>
        POST …/reactivate
      </code>
      
      .
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        coupon_code
      </code>
    </td>
    
    <td>
      <code>
        string
      </code>
    </td>
    
    <td>
      no
    </td>
    
    <td>
      A coupon to apply to the reactivated subscription before its first invoice.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        coupon_ids
      </code>
    </td>
    
    <td>
      <code>
        array of string
      </code>
    </td>
    
    <td>
      no
    </td>
    
    <td>
      <code>
        coupon_code
      </code>
      
       as a list; at most one entry.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        manual_discount
      </code>
    </td>
    
    <td>
      <code>
        object
      </code>
    </td>
    
    <td>
      no
    </td>
    
    <td>
      A manual discount to apply before the first invoice. Refused when another discount is active.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        manual_discount.type
      </code>
    </td>
    
    <td>
      <code>
        string
      </code>
    </td>
    
    <td>
      <strong>
        yes
      </strong>
    </td>
    
    <td>
      The discount type. One of <code>
        percent
      </code>
      
      , <code>
        amount
      </code>
      
      .
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        manual_discount.value
      </code>
    </td>
    
    <td>
      <code>
        number
      </code>
    </td>
    
    <td>
      <strong>
        yes
      </strong>
    </td>
    
    <td>
      Percent 1-100, or a positive amount in minor units
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        manual_discount.duration
      </code>
    </td>
    
    <td>
      <code>
        string
      </code>
    </td>
    
    <td>
      no
    </td>
    
    <td>
      How long the discount lasts. One of <code>
        one_time
      </code>
      
      , <code>
        forever
      </code>
      
      . Defaults to <code>
        "forever"
      </code>
      
      .
    </td>
  </tr>
</tbody>
</table>

## Response

<table>
<thead>
  <tr>
    <th>
      Field
    </th>
    
    <th>
      Type
    </th>
    
    <th>
      Description
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      <code>
        object
      </code>
    </td>
    
    <td>
      <code>
        string
      </code>
    </td>
    
    <td>
      The object type; always <code>
        estimate
      </code>
      
      . One of <code>
        estimate
      </code>
      
      .
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        currency
      </code>
    </td>
    
    <td>
      <code>
        string
      </code>
    </td>
    
    <td>
      The currency code.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        lines
      </code>
    </td>
    
    <td>
      <code>
        array of object
      </code>
    </td>
    
    <td>
      The quoted lines.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        subtotal_minor
      </code>
    </td>
    
    <td>
      <code>
        integer
      </code>
    </td>
    
    <td>
      The sum of the lines, in minor units.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        discount_minor
      </code>
    </td>
    
    <td>
      <code>
        integer
      </code>
    </td>
    
    <td>
      Every discount off the subtotal, in minor units.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        tax_minor
      </code>
    </td>
    
    <td>
      <code>
        integer
      </code>
    </td>
    
    <td>
      The tax, in minor units.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        tax_lines
      </code>
    </td>
    
    <td>
      <code>
        array of object
      </code>
    </td>
    
    <td>
      The tax, split into the rows the invoice prints.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        discount_lines
      </code>
    </td>
    
    <td>
      <code>
        array of object
      </code>
    </td>
    
    <td>
      The discount, split into named rows.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        total_minor
      </code>
    </td>
    
    <td>
      <code>
        integer
      </code>
    </td>
    
    <td>
      Subtotal minus discount plus tax, in minor units. Goes negative on a downgrade.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        immediate_charge
      </code>
    </td>
    
    <td>
      <code>
        boolean
      </code>
    </td>
    
    <td>
      True if the customer is charged now; false if the net is a credit.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        credits_applied_minor
      </code>
    </td>
    
    <td>
      <code>
        integer
      </code>
    </td>
    
    <td>
      Refundable and excess credit that the estimate applies, in minor units.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        promotional_credits_applied_minor
      </code>
    </td>
    
    <td>
      <code>
        integer
      </code>
    </td>
    
    <td>
      Promotional credit that the estimate applies, in minor units.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        promotional_discount_minor
      </code>
    </td>
    
    <td>
      <code>
        integer
      </code>
    </td>
    
    <td>
      Promotional credit as a pre-tax discount, in minor units.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        refundable_credits_applied_minor
      </code>
    </td>
    
    <td>
      <code>
        integer
      </code>
    </td>
    
    <td>
      Refundable credit that the estimate applies, in minor units.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        excess_payments_applied_minor
      </code>
    </td>
    
    <td>
      <code>
        integer
      </code>
    </td>
    
    <td>
      Excess payments that the estimate applies, in minor units.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        grant_credits_pre_tax_minor
      </code>
    </td>
    
    <td>
      <code>
        integer
      </code>
    </td>
    
    <td>
      Credit grants applied before tax (promotional, and paid credit taxed at purchase). Already off <code>
        total_minor
      </code>
      
      .
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        grant_credits_post_tax_minor
      </code>
    </td>
    
    <td>
      <code>
        integer
      </code>
    </td>
    
    <td>
      Money credit grants taxed at use, applied after tax. Included in <code>
        credits_applied_minor
      </code>
      
      .
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        credit_note_total_minor
      </code>
    </td>
    
    <td>
      <code>
        integer
      </code>
    </td>
    
    <td>
      The total of the credit notes the change raises, tax included, in minor units.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        refunded_to_payment_method_minor
      </code>
    </td>
    
    <td>
      <code>
        integer
      </code>
    </td>
    
    <td>
      Change estimate only, with <code>
        billing_rules_config.downgrade_credit: refund
      </code>
      
       (or the portal customer's selection): the part of the change's credit that is refunded to the card or bank payments that paid. The rest stays as <code>
        refundable_credit_added_minor
      </code>
      
      .
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        refundable_credit_added_minor
      </code>
    </td>
    
    <td>
      <code>
        integer
      </code>
    </td>
    
    <td>
      Credit that lands on the customer's balance, in minor units.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        credit_applied_to_open_invoices_minor
      </code>
    </td>
    
    <td>
      <code>
        integer
      </code>
    </td>
    
    <td>
      Credit that pays down open invoices, in minor units.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        credit_applied_to_this_invoice_minor
      </code>
    </td>
    
    <td>
      <code>
        integer
      </code>
    </td>
    
    <td>
      Credit that offsets this invoice, in minor units.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        credit_destinations
      </code>
    </td>
    
    <td>
      <code>
        array of object
      </code>
    </td>
    
    <td>
      Where the credit goes.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        credited_period_start
      </code>
    </td>
    
    <td>
      <code>
        string · ISO-8601
      </code>
    </td>
    
    <td>
      Start of the period that is credited (ISO 8601).
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        credited_period_end
      </code>
    </td>
    
    <td>
      <code>
        string · ISO-8601
      </code>
    </td>
    
    <td>
      End of the period that is credited (ISO 8601).
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        invoice_total_minor
      </code>
    </td>
    
    <td>
      <code>
        integer
      </code>
    </td>
    
    <td>
      The total of the invoice this change raises, in minor units.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        invoice_subtotal_minor
      </code>
    </td>
    
    <td>
      <code>
        integer
      </code>
    </td>
    
    <td>
      The subtotal of the invoice this change raises, in minor units.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        credit_returned_to_buckets_minor
      </code>
    </td>
    
    <td>
      <code>
        integer
      </code>
    </td>
    
    <td>
      Credit that returns to promotional or excess balance, in minor units.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        credit_returned_to_grants_minor
      </code>
    </td>
    
    <td>
      <code>
        integer
      </code>
    </td>
    
    <td>
      Credit given back to the credit grants the source invoices drew, in minor units. Inside credit_returned_to_buckets_minor.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        credit_stranded_minor
      </code>
    </td>
    
    <td>
      <code>
        integer
      </code>
    </td>
    
    <td>
      Credit that reaches nobody, in minor units.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        credit_routing_over_claimed_minor
      </code>
    </td>
    
    <td>
      <code>
        integer
      </code>
    </td>
    
    <td>
      Credit that routing claimed in excess, in minor units.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        amount_due_minor
      </code>
    </td>
    
    <td>
      <code>
        integer
      </code>
    </td>
    
    <td>
      What the customer is asked to pay now, in minor units.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        next_renewal
      </code>
    </td>
    
    <td>
      <code>
        object
      </code>
    </td>
    
    <td>
      The renewal invoice that the change leads to.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        term_reset
      </code>
    </td>
    
    <td>
      <code>
        boolean
      </code>
    </td>
    
    <td>
      True if the change starts a new billing term.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        new_period_end
      </code>
    </td>
    
    <td>
      <code>
        string · ISO-8601
      </code>
    </td>
    
    <td>
      The end of the new term (ISO 8601), or null.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        due_at_trial_end
      </code>
    </td>
    
    <td>
      <code>
        string · ISO-8601
      </code>
    </td>
    
    <td>
      When the first charge is due, if the subscription starts in a trial.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        in_term_reactivation
      </code>
    </td>
    
    <td>
      <code>
        object
      </code>
    </td>
    
    <td>
      Set when a reactivation can resume the current term.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        in_term_available
      </code>
    </td>
    
    <td>
      <code>
        boolean
      </code>
    </td>
    
    <td>
      True if the subscription can resume its current term.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        scheduled_change
      </code>
    </td>
    
    <td>
      <code>
        object
      </code>
    </td>
    
    <td>
      Renewal estimate only: the scheduled change that runs before this renewal and whose items it prices.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        mandate_shortfall
      </code>
    </td>
    
    <td>
      <code>
        object
      </code>
    </td>
    
    <td>
      Set when the amount is above the mandate's per-debit limit.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        debits_in_flight
      </code>
    </td>
    
    <td>
      <code>
        array of object
      </code>
    </td>
    
    <td>
      Debits that are already under way.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        priced_at
      </code>
    </td>
    
    <td>
      <code>
        string · ISO-8601
      </code>
    </td>
    
    <td>
      Only on <code>
        POST …/subscriptions/{sub}/estimate
      </code>
      
      : the instant these amounts are priced at. Send it to <code>
        /change
      </code>
      
       with <code>
        quote
      </code>
      
      .
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        quote
      </code>
    </td>
    
    <td>
      <code>
        string
      </code>
    </td>
    
    <td>
      Only on <code>
        POST …/subscriptions/{sub}/estimate
      </code>
      
      : a hash of the amounts shown. Send it to <code>
        /change
      </code>
      
       with <code>
        priced_at
      </code>
      
      .
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        change_policy
      </code>
    </td>
    
    <td>
      <code>
        object
      </code>
    </td>
    
    <td>
      Only on <code>
        POST …/subscriptions/{sub}/estimate
      </code>
      
      : the business's plan-change rules for this edit.
    </td>
  </tr>
</tbody>
</table>

## Status codes

<table>
<thead>
  <tr>
    <th>
      Status
    </th>
    
    <th>
      Meaning
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      <code>
        200
      </code>
    </td>
    
    <td>
      Estimate
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        400
      </code>
    </td>
    
    <td>
      Not cancelled, or an invalid item set / coupon / discount
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        404
      </code>
    </td>
    
    <td>
      No such subscription
    </td>
  </tr>
</tbody>
</table>
</template>

<template v-slot:request="">

```bash [Request]
curl -X POST "$TMBILLING_URL/v1/businesses/biz_XXXXXXXXXXXX01/subscriptions/sub_XXXXXXXXXXXX01/reactivate_estimate" \
  -H "Authorization: Bearer $TMBILLING_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "items": [
      {
        "price": "pro-monthly-usd",
        "quantity": 1
      }
    ]
  }'
```

</template>

<template v-slot:response="">
<code-group>

```json [200 OK]
{
  "object": "estimate",
  "currency": "USD",
  "lines": [
    {
      "description": "Pro plan (monthly)",
      "amount_minor": 4900
    }
  ],
  "subtotal_minor": 4900,
  "discount_minor": 490,
  "tax_minor": 882,
  "tax_lines": [
    {
      "label": "VAT (20.00%)",
      "amount_minor": 980
    }
  ],
  "discount_lines": [
    {
      "label": "welcome-10",
      "amount_minor": 490
    }
  ],
  "total_minor": 5292,
  "immediate_charge": false,
  "credits_applied_minor": 0,
  "promotional_credits_applied_minor": 0,
  "promotional_discount_minor": 0,
  "refundable_credits_applied_minor": 0,
  "excess_payments_applied_minor": 0,
  "grant_credits_pre_tax_minor": 0,
  "grant_credits_post_tax_minor": 0,
  "credit_note_total_minor": 2900,
  "refunded_to_payment_method_minor": 0,
  "refundable_credit_added_minor": 2900,
  "credit_applied_to_open_invoices_minor": 2900,
  "credit_applied_to_this_invoice_minor": 2900,
  "credit_destinations": [
    {
      "kind": "refundable",
      "destination": "balance",
      "amount_minor": 1200,
      "invoice": "inv_XXXXXXXXXXXX01"
    }
  ],
  "credited_period_start": "2026-03-14T09:30:00Z",
  "credited_period_end": "2026-04-14T09:30:00Z",
  "invoice_total_minor": 2900,
  "invoice_subtotal_minor": 2900,
  "credit_returned_to_buckets_minor": 2900,
  "credit_returned_to_grants_minor": 2900,
  "credit_stranded_minor": 2900,
  "credit_routing_over_claimed_minor": 2900,
  "amount_due_minor": 5292,
  "next_renewal": {
    "date": "2026-03-14T09:30:00Z",
    "lines": [
      {
        "description": "Everything a growing team needs.",
        "amount_minor": 2900
      }
    ],
    "subtotal_minor": 2900,
    "discount_minor": 0,
    "tax_minor": 0,
    "tax_lines": [
      {
        "label": "VAT (20.00%)",
        "amount_minor": 980
      }
    ],
    "total_minor": 2900,
    "credits_applied_minor": 0,
    "amount_due_minor": 0
  },
  "term_reset": false,
  "new_period_end": "2026-04-14T09:30:00Z",
  "due_at_trial_end": "2026-04-14T09:30:00Z",
  "in_term_reactivation": {
    "current_period_end": "2026-04-14T09:30:00Z",
    "invoice": {
      "id": "inv_XXXXXXXXXXXX01",
      "number": "INV-1001",
      "status": "payment_due",
      "outstanding_minor": 2900
    },
    "collects_now": false
  },
  "in_term_available": false,
  "scheduled_change": {
    "id": "3f6c1b9e-8a2d-4c5e-9f10-2b7d4e6a8c01",
    "type": "change",
    "effective_at": "2026-03-14T09:30:00Z"
  },
  "mandate_shortfall": {
    "payment_method": "pm_XXXXXXXXXXXX01",
    "ceiling_minor": 2900,
    "amount_minor": 2900,
    "currency": "INR",
    "rail": "upi",
    "reauthorized_ceiling_minor": 2900,
    "needs_authentication_even_if_raised": false
  },
  "debits_in_flight": [
    {
      "invoice": "inv_XXXXXXXXXXXX01",
      "awaiting_buyer": false,
      "kind": "payment"
    }
  ],
  "priced_at": "2026-03-14T09:30:00Z",
  "quote": "9f2c4e1a7b3d5c6e8f0a1b2c3d4e5f60",
  "change_policy": {
    "direction": "upgrade",
    "timings": [
      "now"
    ],
    "default_timing": "now",
    "blocked": {
      "code": "invoices_unpaid",
      "message": "Requested by the customer."
    },
    "prorate": false,
    "reset_term": false,
    "invoice_immediately": false,
    "credit_handling": "credit_balance",
    "coupons": "keep",
    "on_charge_failure": "start_dunning",
    "plan_credits": "full",
    "allowances": "new_window"
  }
}
```

```json [400 Bad Request]
{
  "error": {
    "type": "invalid_request_error",
    "message": "Not cancelled, or an invalid item set / coupon / discount"
  }
}
```

```json [404 Not Found]
{
  "error": {
    "type": "invalid_request_error",
    "message": "No such subscription"
  }
}
```

</code-group>
</template>
</api-operation>


## Sitemap

See the full [sitemap](https://twominutebilling.com/sitemap.md) for all pages.
