Skip to main content

Super Publication Test

Up/-downgrading to a plan variant

If you want to change the basic subscription of a contract though an up/-downgrade this is done via the endpoint POST /Orders. All changes to the products booked in the contract are done in the Cart. By providing a PlanVariantId the basic subscription will be changed accordingly.

By default, up-/downgrade orders are processed instantly after successful commit via POST /Orders/{id}/commit. Contract changes though up/-downgrade orders can also be realized in the future or to past by passing a ChangeDate.

Sample request up/-downgrade order

POST /Orders

{
  "TriggerInterimBilling": false,
  "ContractId": "5e53dab7443e5516749566e2",
  "Cart": {
    "PlanVariantId": "5e53dab7443e5516749566fe",
    "InheritStartDate": false,
    "ComponentSubscriptions": [
      {
        "ComponentId": "5e53dab7443e5516749566fb",
        "Quantity": 2.0
      }
    ],
    "MeteredUsages": [
      {
        "ComponentId": "5e53dab7443e551674956701",
        "Quantity": 3.0,
        "Memo": "Memo text",
        "Key": "Some unique external key 12345",
        "DueDate": "2020-02-23T14:16:23.7556386Z"
      }
    ],
    "EndComponentSubscriptions": [
      "5e53dab7443e5516749566ff",
      "5e53dab7443e551674956700"
    ]
  },
  "ChangeDate": "2020-03-09T10:58:11.799Z",
  "PreviewAfterTrial": false
}

An up-/downgrade to a plan vairant will change future billing periods. The new billing periods will be calculated based on the billing interval defined in the new plan variant selected in the up/-downgrade as well as the ChangeDate passed in the order.

With an up-/downgrade you can also add/remove component subscriptions and pass metered usage. Omit ComponentSubscriptionsEndComponentSubscriptionsMeteredUsages or pass an empty array if not used.

Sample response POST /Orders
{
  "Id": "5e53dab7443e55167495670e",
  "AllowWithoutPaymentData": true,
  "ComponentSubscriptions": [
    {
      "ComponentType": "QuantityBased",
      "PreventModification": false,
      "VatPercentage": 19.0,
      "TotalNet": 2.0,
      "TotalVat": 0.38,
      "IsQuantityBased": false,
      "ComponentId": "5e53dab7443e5516749566fb",
      "Quantity": 2.0
    }
  ],
  "Total": 7.0,
  "TotalVat": 1.33,
  "TotalGross": 0.0,
  "NextTotalGross": 0.0,
  "IsTrial": false,
  "TrialEndPolicy": "NoTrial",
  "Status": "InProgress",
  "OrderType": "Signup",
  "TriggerInterimBilling": false,
  "CustomerId": "5e53dab7443e55167495670f",
  "ContractId": "5e53dab7443e5516749566e2",
  "PreviewAfterTrial": false
}
Up/-downgrading to a plan variant - Selecting specific up/-downgrade date and time

If you want to up/-downgrade a contract at a specific point in time you can do so by adding a ChangeDate.

Typically used ChangeDate used are :

  • Contract start date

  • Last billing date

  • Next billing date

  • Billed until

These can be calculated by looking at the contract using GET /Contracts/{id}.

Sample response GET /Contracts/{id}

{
  "Id": "5e563b344de08409ace88ecb",
  "LastBillingDate": "2020-02-26T09:32:36.1230000Z",
  "NextBillingDate": "2020-03-26T09:32:36.1230000Z",
  "PlanId": "5be2ecd7ba5c1e0bf4f34de6",
  "CustomerId": "5e563b344de08409ace88eca",
  "IsDeletable": false,
  "LifecycleStatus": "Active",
  "CustomerName": "test, test",
  "CustomerIsLocked": false,
  "Phases": [
    {
      "Type": "Normal",
      "StartDate": "2020-02-26T09:32:36.1230000Z",
      "PlanVariantId": "5cee2c964de0841b78b20fa0",
      "PlanId": "5be2ecd7ba5c1e0bf4f34de6",
      "Quantity": 1,
      "InheritStartDate": false
    }
  ],
  "Balance": 162.98,
  "ReferenceCode": "KXPL-GWBS",
  "Currency": "EUR",
  "PlanGroupId": "5b680208ba5c1e10084c1a9e",
  "PaymentProvider": "InvoicePayment",
  "PaymentProviderRole": "BlackLabel",
  "EscalationSuspended": false,
  "RecurringPaymentsPaused": false,
  "CurrentPhase": {
    "Type": "Normal",
    "StartDate": "2020-02-26T09:32:36.1230000Z",
    "PlanVariantId": "5cee2c964de0841b78b20fa0",
    "PlanId": "5be2ecd7ba5c1e0bf4f34de6",
    "Quantity": 1,
    "InheritStartDate": false
  },
  "PaymentProviderSupportRefunds": false,
  "CurrentDunning": {
    "Level": 3,
    "Amount": 126.5,
    "Remaining": 126.5,
    "Threshold": 5,
    "DocumentId": "5e5b04779cc9b925200966f9",
    "Timestamp": "2020-03-01T00:40:23.0000000Z",
    "IsAtrigaEscalated": false
  },
  "BillingSuspended": false,
  "ThresholdBillingDisabled": false,
  "TurnoverGross": "512.98 EUR",
  "TurnoverNet": "378.31 EUR",
  "StartDate": "2020-02-26T09:32:36.1230000Z",
  "BilledUntil": "2021-02-26T09:32:36.1230000Z",
  "PlanVariantId": "5cee2c964de0841b78b20fa0",
  "CustomFields": {}
}

The contract start date can be realized via the use of the StartDate from the contract, last billing and next billing date though LastBillingDate and NextBillingDate and billed until via BilledUntil.

For up/-downgrading at the end of the regular contract period, the ChangeDate can be derived from a cancellation preview as described in the Terminate a Contract (with notice) section.