Skip to main content
POST
/
plans
/
{plan_id}
/
versions
Create plan version
curl --request POST \
  --url https://api.withorb.com/v1/plans/{plan_id}/versions \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "version": 123,
  "add_prices": [
    {
      "price": {
        "model_type": "unit",
        "unit_config": {
          "unit_amount": "<string>",
          "prorated": false
        },
        "name": "<string>",
        "item_id": "<string>",
        "cadence": "annual",
        "metadata": {},
        "external_price_id": "<string>",
        "dimensional_price_configuration": {
          "dimension_values": [
            "<string>"
          ],
          "dimensional_price_group_id": "<string>",
          "external_dimensional_price_group_id": "<string>"
        },
        "billable_metric_id": "<string>",
        "billed_in_advance": true,
        "fixed_price_quantity": 123,
        "invoice_grouping_key": "<string>",
        "billing_cycle_configuration": {
          "duration": 123,
          "duration_unit": "day"
        },
        "invoicing_cycle_configuration": {
          "duration": 123,
          "duration_unit": "day"
        },
        "conversion_rate": 123,
        "conversion_rate_config": {
          "conversion_rate_type": "unit",
          "unit_config": {
            "unit_amount": "<string>"
          }
        },
        "currency": "<string>",
        "reference_id": "<string>"
      },
      "allocation_price": {
        "currency": "<string>",
        "amount": "<string>",
        "cadence": "one_time",
        "expires_at_end_of_cadence": true,
        "custom_expiration": {
          "duration": 123,
          "duration_unit": "day"
        },
        "filters": [
          {
            "field": "item_id",
            "operator": "includes",
            "values": [
              "<string>"
            ]
          }
        ],
        "per_unit_cost_basis": "0.00",
        "item_id": "<string>"
      },
      "plan_phase_order": 123
    }
  ],
  "remove_prices": [
    {
      "price_id": "<string>",
      "plan_phase_order": 123
    }
  ],
  "replace_prices": [
    {
      "replaces_price_id": "<string>",
      "price": {
        "model_type": "unit",
        "unit_config": {
          "unit_amount": "<string>",
          "prorated": false
        },
        "name": "<string>",
        "item_id": "<string>",
        "cadence": "annual",
        "metadata": {},
        "external_price_id": "<string>",
        "dimensional_price_configuration": {
          "dimension_values": [
            "<string>"
          ],
          "dimensional_price_group_id": "<string>",
          "external_dimensional_price_group_id": "<string>"
        },
        "billable_metric_id": "<string>",
        "billed_in_advance": true,
        "fixed_price_quantity": 123,
        "invoice_grouping_key": "<string>",
        "billing_cycle_configuration": {
          "duration": 123,
          "duration_unit": "day"
        },
        "invoicing_cycle_configuration": {
          "duration": 123,
          "duration_unit": "day"
        },
        "conversion_rate": 123,
        "conversion_rate_config": {
          "conversion_rate_type": "unit",
          "unit_config": {
            "unit_amount": "<string>"
          }
        },
        "currency": "<string>",
        "reference_id": "<string>"
      },
      "allocation_price": {
        "currency": "<string>",
        "amount": "<string>",
        "cadence": "one_time",
        "expires_at_end_of_cadence": true,
        "custom_expiration": {
          "duration": 123,
          "duration_unit": "day"
        },
        "filters": [
          {
            "field": "item_id",
            "operator": "includes",
            "values": [
              "<string>"
            ]
          }
        ],
        "per_unit_cost_basis": "0.00",
        "item_id": "<string>"
      },
      "plan_phase_order": 123
    }
  ],
  "add_adjustments": [
    {
      "adjustment": {
        "adjustment_type": "percentage_discount",
        "percentage_discount": 123,
        "applies_to_price_ids": [
          "price_1",
          "price_2"
        ],
        "applies_to_item_ids": [
          "item_1",
          "item_2"
        ],
        "applies_to_all": true,
        "filters": [
          {
            "field": "price_id",
            "operator": "includes",
            "values": [
              "<string>"
            ]
          }
        ],
        "currency": [
          "USD",
          "JPY",
          "credits"
        ],
        "price_type": "usage",
        "is_invoice_level": true
      },
      "plan_phase_order": 123
    }
  ],
  "remove_adjustments": [
    {
      "adjustment_id": "<string>",
      "plan_phase_order": 123
    }
  ],
  "replace_adjustments": [
    {
      "adjustment": {
        "adjustment_type": "percentage_discount",
        "percentage_discount": 123,
        "applies_to_price_ids": [
          "price_1",
          "price_2"
        ],
        "applies_to_item_ids": [
          "item_1",
          "item_2"
        ],
        "applies_to_all": true,
        "filters": [
          {
            "field": "price_id",
            "operator": "includes",
            "values": [
              "<string>"
            ]
          }
        ],
        "currency": [
          "USD",
          "JPY",
          "credits"
        ],
        "price_type": "usage",
        "is_invoice_level": true
      },
      "replaces_adjustment_id": "<string>",
      "plan_phase_order": 123
    }
  ],
  "set_as_default": true
}
'
{
  "created_at": "2023-11-07T05:31:56Z",
  "version": 123,
  "plan_phases": [
    {
      "id": "<string>",
      "description": "<string>",
      "duration": 123,
      "duration_unit": "daily",
      "name": "<string>",
      "order": 123
    }
  ],
  "prices": [
    {
      "model_type": "unit",
      "unit_config": {
        "unit_amount": "<string>",
        "prorated": false
      },
      "metadata": {},
      "id": "<string>",
      "name": "<string>",
      "external_price_id": "<string>",
      "replaces_price_id": "<string>",
      "price_type": "usage_price",
      "created_at": "2023-11-07T05:31:56Z",
      "cadence": "one_time",
      "billing_mode": "in_advance",
      "billing_cycle_configuration": {
        "duration": 123,
        "duration_unit": "day"
      },
      "invoicing_cycle_configuration": {
        "duration": 123,
        "duration_unit": "day"
      },
      "billable_metric": {
        "id": "<string>"
      },
      "fixed_price_quantity": 123,
      "plan_phase_order": 123,
      "currency": "<string>",
      "conversion_rate": 123,
      "conversion_rate_config": {
        "conversion_rate_type": "unit",
        "unit_config": {
          "unit_amount": "<string>"
        }
      },
      "item": {
        "id": "<string>",
        "name": "<string>"
      },
      "credit_allocation": {
        "currency": "<string>",
        "allows_rollover": true,
        "custom_expiration": {
          "duration": 123,
          "duration_unit": "day"
        },
        "filters": [
          {
            "field": "price_id",
            "operator": "includes",
            "values": [
              "<string>"
            ]
          }
        ]
      },
      "composite_price_filters": [
        {
          "field": "price_id",
          "operator": "includes",
          "values": [
            "<string>"
          ]
        }
      ],
      "discount": {
        "discount_type": "percentage",
        "percentage_discount": 0.5,
        "applies_to_price_ids": [
          "h74gfhdjvn7ujokd",
          "7hfgtgjnbvc3ujkl"
        ],
        "filters": [
          {
            "field": "price_id",
            "operator": "includes",
            "values": [
              "<string>"
            ]
          }
        ],
        "reason": "<string>"
      },
      "minimum": {
        "minimum_amount": "<string>",
        "filters": [
          {
            "field": "price_id",
            "operator": "includes",
            "values": [
              "<string>"
            ]
          }
        ],
        "applies_to_price_ids": [
          "<string>"
        ]
      },
      "minimum_amount": "<string>",
      "maximum": {
        "maximum_amount": "<string>",
        "filters": [
          {
            "field": "price_id",
            "operator": "includes",
            "values": [
              "<string>"
            ]
          }
        ],
        "applies_to_price_ids": [
          "<string>"
        ]
      },
      "maximum_amount": "<string>",
      "dimensional_price_configuration": {
        "dimensional_price_group_id": "<string>",
        "dimension_values": [
          "<string>"
        ]
      }
    }
  ],
  "adjustments": [
    {
      "id": "<string>",
      "is_invoice_level": true,
      "filters": [
        {
          "field": "price_id",
          "operator": "includes",
          "values": [
            "<string>"
          ]
        }
      ],
      "applies_to_price_ids": [
        "<string>"
      ],
      "reason": "<string>",
      "replaces_adjustment_id": "<string>",
      "adjustment_type": "usage_discount",
      "usage_discount": 123,
      "plan_phase_order": 123
    }
  ]
}

Authorizations

Authorization
string
header
required

API Keys can be issued in the Orb's web application.

Path Parameters

plan_id
string | null
required

Body

application/json
version
integer
required

New version number.

add_prices
AddPlanPriceParams · object[] | null

Additional prices to be added to the plan.

remove_prices
RemovePlanPriceParams · object[] | null

Prices to be removed from the plan.

replace_prices
ReplacePlanPriceParams · object[] | null

Prices to be replaced with additional prices on the plan.

add_adjustments
AddPlanAdjustmentParams · object[] | null

Additional adjustments to be added to the plan.

remove_adjustments
RemovePlanAdjustmentParams · object[] | null

Adjustments to be removed from the plan.

replace_adjustments
ReplacePlanAdjustmentParams · object[] | null

Adjustments to be replaced with additional adjustments on the plan.

set_as_default
boolean | null

Set this new plan version as the default

Response

Created

The PlanVersion resource represents the prices and adjustments present on a specific version of a plan.

created_at
string<date-time>
required
version
integer
required
plan_phases
PlanVersionPhase · object[] | null
required
prices
(UnitPrice · object | TieredPrice · object | BulkPrice · object | BulkWithFiltersPrice · object | PackagePrice · object | MatrixPrice · object | ThresholdTotalAmountPrice · object | TieredPackagePrice · object | TieredWithMinimumPrice · object | GroupedTieredPrice · object | TieredPackageWithMinimumPrice · object | PackageWithAllocationPrice · object | UnitWithPercentPrice · object | MatrixWithAllocationPrice · object | TieredWithProrationPrice · object | UnitWithProrationPrice · object | GroupedAllocationPrice · object | BulkWithProrationPrice · object | GroupedWithProratedMinimumPrice · object | GroupedWithMeteredMinimumPrice · object | GroupedWithMinMaxThresholdsPrice · object | MatrixWithDisplayNamePrice · object | GroupedTieredPackagePrice · object | MaxGroupTieredPackagePrice · object | ScalableMatrixWithUnitPricingPrice · object | ScalableMatrixWithTieredPricingPrice · object | CumulativeGroupedBulkPrice · object | CumulativeGroupedAllocationPrice · object | MinimumCompositePrice · object | PercentCompositePrice · object | EventOutputPrice · object)[]
required

Prices for this plan. If the plan has phases, this includes prices across all phases of the plan.

The Price resource represents a price that can be billed on a subscription, resulting in a charge on an invoice in the form of an invoice line item. Prices take a quantity and determine an amount to bill.

Orb supports a few different pricing models out of the box. Each of these models is serialized differently in a given Price object. The model_type field determines the key for the configuration object that is present.

For more on the types of prices, see the core concepts documentation

adjustments
(PlanPhaseUsageDiscountAdjustment · object | PlanPhaseAmountDiscountAdjustment · object | PlanPhasePercentageDiscountAdjustment · object | PlanPhaseMinimumAdjustment · object | PlanPhaseMaximumAdjustment · object)[]
required

Adjustments for this plan. If the plan has phases, this includes adjustments across all phases of the plan.