# Retrieve a plan

Retrieves a plan with a specified ID.

Endpoint: GET /plans/{id}
Version: latest
Security: SecretApiKey, JWT, ApplicationJWT

## Path parameters:

  - `id` (string, required)
    ID of the resource.

## Response 200 fields (application/json):

  - `body` (OneTimeSalePlan (object) or SubscriptionPlan (object) or TrialOnlyPlan (object)) — one of:
    - OneTimeSalePlan:
      - `id` (string, required)
        ID of the plan.
        Example: "plan_0YV7DENSVGDBW9S71XZNNYYQ0X"
      - `name` (string, required)
        Name of the plan.
This name is displayed on invoices and receipts.
      - `description` (string)
        Plain-text description of the plan.
This field accepts plain-text only.
      - `richDescription` (string)
        Rich-text description of the plan.
This field accepts rich text formatting, such as: bold, underline, italic, and hyperlinks.
      - `productId` (string, required)
        ID of the related product.
        Example: "prod_0YV7DES3WPC5J8JD8QTVNZBZNZ"
      - `productOptions` (object,null)
        Name-value pairs that specify the product options.
        Example: {"color":"red","size":"xxl"}
      - `currency` (string, required)
        Currency code in ISO 4217 format.
      - `currencySign` (string)
        Currency sign.
      - `pricing` (object, required) — one of (discriminator: formula):
        Pricing details.
        - fixed-fee:
          - `formula` (string, required)
            Price formula that determines which algorithm is used to calculate the invoice price based on the following factors:

- Quantity in the order.
  This value may be variable if you are charging based on usage.
  If you are not charging based on usage,
  this value is determined when an order is created.

- Price of the quantity range.
  Some formulas set a price based on defined product quantity ranges.

For more information, see [Price formulas](https://www.rebilly.com/docs/billing/pricing-formulas/).
            Enum: "fixed-fee"
          - `price` (number, required)
            Use this formula to charge for subscriptions that have a fixed price,
number of units, and reoccur over a fixed period of time,
such as every: day, week, month, year, or number of years.

For example, a streaming company charges customers $13.99 each month for subscription period that is 6 months in duration.
The quantity of movies that a customer streams each month does not impact the price.
            Example: 99.95
        - flat-rate:
          - `formula` (string, required)
            Price formula that determines which algorithm is used to calculate the invoice price based on the following factors:

- Quantity in the order.
  This value may be variable if you are charging based on usage.
  If you are not charging based on usage,
  this value is determined when an order is created.

- Price of the quantity range.
  Some formulas set a price based on defined product quantity ranges.

For more information, see [Price formulas](https://www.rebilly.com/docs/billing/pricing-formulas/).
            Enum: "flat-rate"
          - `price` (number, required)
            Use this formula to charge a flat fee per unit.
For example, $0.10 for each transaction or $4 per unit.

If the value of this field is 0, the product is free.
            Example: 99.95
          - `minQuantity` (integer,null)
            Minimum permitted unit quantity.
If this value is null, no limit is in place.
            Example: 1
          - `maxQuantity` (integer,null)
            Maximum permitted unit quantity.
If this value is null, no limit is in place.
            Example: 1
        - stairstep:
          - `formula` (string, required)
            Price formula that determines which algorithm is used to calculate the invoice price based on the following factors:

- Quantity in the order.
  This value may be variable if you are charging based on usage.
  If you are not charging based on usage,
  this value is determined when an order is created.

- Price of the quantity range.
  Some formulas set a price based on defined product quantity ranges.

For more information, see [Price formulas](https://www.rebilly.com/docs/billing/pricing-formulas/).
            Enum: "stairstep"
          - `brackets` (array, required)
            Use this formula to charge for units that are sold in specific quantity ranges.

For example, a bank charges a merchant based on the number of transactions they complete each month.

Price total | Max quantity | Description
------------|--------------|------------
$50         | 1000         | Up to 1000 transactions
$100        | 1500         | Between 1000 and 1500 transactions
$200        | 3000         | Between 1500 and 3000 transactions
$500        | null         | More than 3000 transactions

- If the merchant completes 900 transaction in a month, they are charged $50.
- If the merchant completes 1001 transaction in a month, they are charged $100.
- If the merchant completes 2500  transaction in a month, they are charged $200.
- If the merchant completes more than 3000 transaction in a month, they are charged $500.
          - `brackets.price` (number)
            Price of the quantity range.
If the value of this field is 0, the product is free.
            Example: 99.95
          - `brackets.maxQuantity` (integer,null)
            Maximum permitted unit quantity.
If this value is null, no limit is in place.

This value starts from the end of the previous quantity range.
If there are no previous quantity ranges,
this value starts at 1.
            Example: 1
          - `minQuantity` (integer,null)
            Minimum permitted unit quantity.
If this value is null, no limit is in place.
            Example: 1
        - tiered:
          - `formula` (string, required)
            Price formula that determines which algorithm is used to calculate the invoice price based on the following factors:

- Quantity in the order.
  This value may be variable if you are charging based on usage.
  If you are not charging based on usage,
  this value is determined when an order is created.

- Price of the quantity range.
  Some formulas set a price based on defined product quantity ranges.

For more information, see [Price formulas](https://www.rebilly.com/docs/billing/pricing-formulas/).
            Enum: "tiered"
          - `brackets` (array, required)
            Use this formula to charge for units that are sold within defined quantity ranges, or tiers.
If a customer buys a number of units that span more than one tier,
the total cost is calculated based on the cost of the units in each tier.

For example, a software company sells user licenses based on the following:

Tier | Price per user | Max quantity | Description
-----|----------------|--------------|------------
1    | $40            | 3            | 1 to 3 user licenses
2    | $30            | 5            | 5 to 8 user licenses
3    | $15            | null         | 9 or more user licenses

If a customer buys 10 user licenses, the pricing is as follows:
- 3 licenses at tier 1 (3 x $40) is 120
- 5 licenses at tier 2 (5 x $30) is 150
- 2 licenses at tier 3 (2 x $15) is 30

Total cost = $330

Formula: (price for the tier x quantity within the tier) + (price for next tier x quantity in next tier) + ... = final price.
          - `brackets.price` (number)
            Price of the quantity range.
If the value of this field is 0, the product is free.
            Example: 99.95
          - `brackets.maxQuantity` (integer,null)
            Maximum permitted unit quantity.
If this value is null, no limit is in place.

This value starts from the end of the previous quantity range.
If there are no previous quantity ranges,
this value starts at 1.
            Example: 1
          - `minQuantity` (integer,null)
            Minimum permitted unit quantity.
If this value is null, no limit is in place.
            Example: 1
        - volume:
          - `formula` (string, required)
            Price formula that determines which algorithm is used to calculate the invoice price based on the following factors:

- Quantity in the order.
  This value may be variable if you are charging based on usage.
  If you are not charging based on usage,
  this value is determined when an order is created.

- Price of the quantity range.
  Some formulas set a price based on defined product quantity ranges.

For more information, see [Price formulas](https://www.rebilly.com/docs/billing/pricing-formulas/).
            Enum: "volume"
          - `brackets` (array, required)
            Use this formula to charge for units that are sold in bulk, or volume ranges.
This formula enables customers to pays less per unit when they buy a large volume of units.
Unit cost is based on the highest volume range, and does not include lower volume range pricing.

For example, a company sells t-shirts in the following volume ranges:

Price per unit| Max quantity | Description
--------------|--------------|------------
$10           | 1            | 1 t-shirt
$8            | 5            | 2 to 5 t-shirts
$4            | null         | 6 or more t-shirts

- If a customer buys 1 unit, they pay $10.
- If a customer buys 3 units, they pay $24 per unit, which is $8 per unit.
- If a customer buys 10 units, they pay $40, which is $4 per unit.
          - `brackets.price` (number)
            Price of the quantity range.
If the value of this field is 0, the product is free.
            Example: 99.95
          - `brackets.maxQuantity` (integer,null)
            Maximum permitted unit quantity.
If this value is null, no limit is in place.

This value starts from the end of the previous quantity range.
If there are no previous quantity ranges,
this value starts at 1.
            Example: 1
          - `minQuantity` (integer,null)
            Minimum permitted unit quantity.
If this value is null, no limit is in place.
            Example: 1
      - `setup` (object,null)
        Setup fee information for the plan.
      - `setup.price` (number, required)
        One-time setup fee charged when the plan starts.
Set to 0 if no setup fee applies.
      - `customFields` (object)
        Use custom fields to extend a resource scheme to include custom data that is not provided as a common field.
For more information, see [Custom fields](https://www.rebilly.com/catalog/all/custom-fields).
      - `isActive` (boolean)
        Specifies if the plan is active.
      - `revision` (integer)
        Number of times the plan is modified.
Compare this value with materialized subscription item revision values.
      - `isTrialOnly` (boolean)
        Specifies if a plan is a trial that does not have recurring instructions.
      - `createdTime` (string)
        Date and time when the resource is created.
This value is set automatically when the resource is created.
      - `updatedTime` (string)
        Date and time when the resource is updated.
This value is set automatically when the resource is updated.
      - `_links` (array)
        Related links.
      - `_links.href` (string)
        Link URL.
      - `_links.rel` (string)
        Type of link.
        Enum: "self", "attachments"
    - SubscriptionPlan:
      - `id` (string, required)
        ID of the plan.
        Example: "plan_0YV7DENSVGDBW9S71XZNNYYQ0X"
      - `name` (string, required)
        Name of the plan.
This name is displayed on invoices and receipts.
      - `description` (string)
        Plain-text description of the plan.
This field accepts plain-text only.
      - `richDescription` (string)
        Rich-text description of the plan.
This field accepts rich text formatting, such as: bold, underline, italic, and hyperlinks.
      - `productId` (string, required)
        ID of the related product.
        Example: "prod_0YV7DES3WPC5J8JD8QTVNZBZNZ"
      - `productOptions` (object,null)
        Name-value pairs that specify the product options.
        Example: {"color":"red","size":"xxl"}
      - `currency` (string, required)
        Currency code in ISO 4217 format.
      - `currencySign` (string)
        Currency sign.
      - `pricing` (object, required) — one of (discriminator: formula):
        Pricing details.
        - fixed-fee:
          - `formula` (string, required)
            Price formula that determines which algorithm is used to calculate the invoice price based on the following factors:

- Quantity in the order.
  This value may be variable if you are charging based on usage.
  If you are not charging based on usage,
  this value is determined when an order is created.

- Price of the quantity range.
  Some formulas set a price based on defined product quantity ranges.

For more information, see [Price formulas](https://www.rebilly.com/docs/billing/pricing-formulas/).
            Enum: same as `formula` in "fixed-fee" (1 values)
          - `price` (number, required)
            Use this formula to charge for subscriptions that have a fixed price,
number of units, and reoccur over a fixed period of time,
such as every: day, week, month, year, or number of years.

For example, a streaming company charges customers $13.99 each month for subscription period that is 6 months in duration.
The quantity of movies that a customer streams each month does not impact the price.
            Example: 99.95
        - flat-rate:
          - `formula` (string, required)
            Price formula that determines which algorithm is used to calculate the invoice price based on the following factors:

- Quantity in the order.
  This value may be variable if you are charging based on usage.
  If you are not charging based on usage,
  this value is determined when an order is created.

- Price of the quantity range.
  Some formulas set a price based on defined product quantity ranges.

For more information, see [Price formulas](https://www.rebilly.com/docs/billing/pricing-formulas/).
            Enum: same as `formula` in "flat-rate" (1 values)
          - `price` (number, required)
            Use this formula to charge a flat fee per unit.
For example, $0.10 for each transaction or $4 per unit.

If the value of this field is 0, the product is free.
            Example: 99.95
          - `minQuantity` (integer,null)
            Minimum permitted unit quantity.
If this value is null, no limit is in place.
            Example: 1
          - `maxQuantity` (integer,null)
            Maximum permitted unit quantity.
If this value is null, no limit is in place.
            Example: 1
        - stairstep:
          - `formula` (string, required)
            Price formula that determines which algorithm is used to calculate the invoice price based on the following factors:

- Quantity in the order.
  This value may be variable if you are charging based on usage.
  If you are not charging based on usage,
  this value is determined when an order is created.

- Price of the quantity range.
  Some formulas set a price based on defined product quantity ranges.

For more information, see [Price formulas](https://www.rebilly.com/docs/billing/pricing-formulas/).
            Enum: same as `formula` in "stairstep" (1 values)
          - `brackets` (array, required)
            Use this formula to charge for units that are sold in specific quantity ranges.

For example, a bank charges a merchant based on the number of transactions they complete each month.

Price total | Max quantity | Description
------------|--------------|------------
$50         | 1000         | Up to 1000 transactions
$100        | 1500         | Between 1000 and 1500 transactions
$200        | 3000         | Between 1500 and 3000 transactions
$500        | null         | More than 3000 transactions

- If the merchant completes 900 transaction in a month, they are charged $50.
- If the merchant completes 1001 transaction in a month, they are charged $100.
- If the merchant completes 2500  transaction in a month, they are charged $200.
- If the merchant completes more than 3000 transaction in a month, they are charged $500.
          - `brackets.price` (number)
            Price of the quantity range.
If the value of this field is 0, the product is free.
            Example: 99.95
          - `brackets.maxQuantity` (integer,null)
            Maximum permitted unit quantity.
If this value is null, no limit is in place.

This value starts from the end of the previous quantity range.
If there are no previous quantity ranges,
this value starts at 1.
            Example: 1
          - `minQuantity` (integer,null)
            Minimum permitted unit quantity.
If this value is null, no limit is in place.
            Example: 1
        - tiered:
          - `formula` (string, required)
            Price formula that determines which algorithm is used to calculate the invoice price based on the following factors:

- Quantity in the order.
  This value may be variable if you are charging based on usage.
  If you are not charging based on usage,
  this value is determined when an order is created.

- Price of the quantity range.
  Some formulas set a price based on defined product quantity ranges.

For more information, see [Price formulas](https://www.rebilly.com/docs/billing/pricing-formulas/).
            Enum: same as `formula` in "tiered" (1 values)
          - `brackets` (array, required)
            Use this formula to charge for units that are sold within defined quantity ranges, or tiers.
If a customer buys a number of units that span more than one tier,
the total cost is calculated based on the cost of the units in each tier.

For example, a software company sells user licenses based on the following:

Tier | Price per user | Max quantity | Description
-----|----------------|--------------|------------
1    | $40            | 3            | 1 to 3 user licenses
2    | $30            | 5            | 5 to 8 user licenses
3    | $15            | null         | 9 or more user licenses

If a customer buys 10 user licenses, the pricing is as follows:
- 3 licenses at tier 1 (3 x $40) is 120
- 5 licenses at tier 2 (5 x $30) is 150
- 2 licenses at tier 3 (2 x $15) is 30

Total cost = $330

Formula: (price for the tier x quantity within the tier) + (price for next tier x quantity in next tier) + ... = final price.
          - `brackets.price` (number)
            Price of the quantity range.
If the value of this field is 0, the product is free.
            Example: 99.95
          - `brackets.maxQuantity` (integer,null)
            Maximum permitted unit quantity.
If this value is null, no limit is in place.

This value starts from the end of the previous quantity range.
If there are no previous quantity ranges,
this value starts at 1.
            Example: 1
          - `minQuantity` (integer,null)
            Minimum permitted unit quantity.
If this value is null, no limit is in place.
            Example: 1
        - volume:
          - `formula` (string, required)
            Price formula that determines which algorithm is used to calculate the invoice price based on the following factors:

- Quantity in the order.
  This value may be variable if you are charging based on usage.
  If you are not charging based on usage,
  this value is determined when an order is created.

- Price of the quantity range.
  Some formulas set a price based on defined product quantity ranges.

For more information, see [Price formulas](https://www.rebilly.com/docs/billing/pricing-formulas/).
            Enum: same as `formula` in "volume" (1 values)
          - `brackets` (array, required)
            Use this formula to charge for units that are sold in bulk, or volume ranges.
This formula enables customers to pays less per unit when they buy a large volume of units.
Unit cost is based on the highest volume range, and does not include lower volume range pricing.

For example, a company sells t-shirts in the following volume ranges:

Price per unit| Max quantity | Description
--------------|--------------|------------
$10           | 1            | 1 t-shirt
$8            | 5            | 2 to 5 t-shirts
$4            | null         | 6 or more t-shirts

- If a customer buys 1 unit, they pay $10.
- If a customer buys 3 units, they pay $24 per unit, which is $8 per unit.
- If a customer buys 10 units, they pay $40, which is $4 per unit.
          - `brackets.price` (number)
            Price of the quantity range.
If the value of this field is 0, the product is free.
            Example: 99.95
          - `brackets.maxQuantity` (integer,null)
            Maximum permitted unit quantity.
If this value is null, no limit is in place.

This value starts from the end of the previous quantity range.
If there are no previous quantity ranges,
this value starts at 1.
            Example: 1
          - `minQuantity` (integer,null)
            Minimum permitted unit quantity.
If this value is null, no limit is in place.
            Example: 1
      - `setup` (object,null)
        Setup fee information for the plan.
      - `setup.price` (number, required)
        One-time setup fee charged when the plan starts.
Set to 0 if no setup fee applies.
      - `customFields` (object)
        Use custom fields to extend a resource scheme to include custom data that is not provided as a common field.
For more information, see [Custom fields](https://www.rebilly.com/catalog/all/custom-fields).
      - `isActive` (boolean)
        Specifies if the plan is active.
      - `revision` (integer)
        Number of times the plan is modified.
Compare this value with materialized subscription item revision values.
      - `isTrialOnly` (boolean)
        Specifies if a plan is a trial that does not have recurring instructions.
      - `recurringInterval` (object)
        Service interval settings.
For a one-time sale, set this value to null.
      - `recurringInterval.periodAnchorInstruction` (object,null) — one of (discriminator: method):
        Instruction for calculating the service period anchor.

The service period anchor is used, in conjunction with the subscription
start time, to calculate when the service period starts and ends.
        - day-of-month:
          - `method` (string, required)
            Enum: "day-of-month"
          - `day` (integer, required)
            Day of the month in which the event occurs.
If the month has less days, the last day of the month is selected.
          - `time` (string)
            Extended ISO-8601 format of time.
        - day-of-week:
          - `method` (string, required)
            Enum: "day-of-week"
          - `day` (string, required)
            Day of the week when the event occurs.
            Enum: "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"
          - `week` (string, required)
            Enum: "next", "first-in-month", "last-in-month"
          - `time` (string)
            Extended ISO-8601 format of time.
        - day-and-month-of-year:
          - `method` (string, required)
            Enum: "day-and-month-of-year"
          - `day` (integer, required)
            Day of the month in which the event occurs.
If the month has less days, the last day of the month is selected.
          - `month` (integer, required)
            Month of the year in which the event occurs.
          - `time` (string)
            Extended ISO-8601 format of time.
      - `recurringInterval.unit` (string, required)
        Unit of time.
        Enum: "day", "week", "month", "year"
      - `recurringInterval.length` (integer, required)
        Length of time.
      - `recurringInterval.limit` (integer,null)
        Number of invoices the subscription order generates.
If this value is 1, only the initial order creation is generated.

Example: For a 1 year contract that is billed monthly,
where the periodUnit is month and the periodDuration is 1,
set this field to 12.
      - `recurringInterval.billingTiming` (string)
        Billing timing in relation to the service period.
For prepaid plans the customer pays when the service period starts,
whereas, for postpaid plans, the customer pays when the service period ends.
        Enum: "prepaid", "postpaid"
      - `trial` (object,null)
        Trial configuration setting.
If you do not want to offer a trial, set this value to null.
      - `trial.price` (number, required)
        Price of setting up a trial.
If your service charges a fee for a trial, specify it here.
To charge no trial fee, set this value to 0.
      - `trial.period` (object, required)
        Period information.
      - `trial.period.unit` (string, required)
        Unit of time.
        Enum: same as `recurringInterval.unit` in "SubscriptionPlan" (4 values)
      - `trial.period.length` (integer, required)
        Length of time.
      - `meteredBilling` (object,null)
        Use metered billing when an exact quantity is unknown.
Report usage during a service period and charge customers afterwards.
Metered billing plans must be postpaid.
      - `meteredBilling.strategy` (string, required)
        Enum: "sum", "last"
      - `meteredBilling.min` (number,null)
        Minimum quantity that is charged at the end of a service period regardless of reported usage.
      - `meteredBilling.max` (number,null)
        Maximum quantity that is charged at the end of a service period regardless of reported usage.
      - `createdTime` (string)
        Date and time when the resource is created.
This value is set automatically when the resource is created.
      - `updatedTime` (string)
        Date and time when the resource is updated.
This value is set automatically when the resource is updated.
      - `_links` (array)
        Related links.
      - `_links.href` (string)
        Link URL.
      - `_links.rel` (string)
        Type of link.
        Enum: same as `_links.rel` in "OneTimeSalePlan" (2 values)
      - `invoiceTimeShift` (object,null)
        Use invoice time shift to control the billing time.

Invoice time shift adjusts the invoice issue and due date when billing must occur before the service period changes.

Use invoice time shift in conjunction with billingTiming to:

- Bill immediately when the service period starts.
- Bill immediately after the service period ends.
- Bill at an interval of time before the service period starts.
- Bill at an interval of time after the service period starts.
- Bill at an interval of time before the service period ends.
- Bill at an interval of time after the service period ends.
      - `invoiceTimeShift.issueTimeShift` (object)
        Calculation instruction of the billing time.

This is used in conjunction with the service period anchor to calculate
the time at which the invoice is issued. For more information, see
[Service period anchor, billing timing, and invoice time shift](https://www.rebilly.com/docs/dev-docs/concepts/#service-period-anchor-and-billing-timing-and-invoice-time-shift).
      - `invoiceTimeShift.issueTimeShift.chronology` (string, required)
        Sequential order of the billing time relative to the start of the service period.
        Enum: "before"
      - `invoiceTimeShift.issueTimeShift.duration` (integer, required)
        Amount of time by which to move the invoice issue time or date.
      - `invoiceTimeShift.issueTimeShift.unit` (any, required)
        Unit of time.
      - `invoiceTimeShift.dueTimeShift` (object)
        Calculation instruction of the invoice due time.

This is used in conjunction with the billing anchor to calculate when
an invoice is due for payment. For more information, see
[Service period anchor, billing timing, and invoice time shift](https://www.rebilly.com/docs/dev-docs/concepts/#service-period-anchor-and-billing-timing-and-invoice-time-shift).

The sequential order of due time shift is always after the due date.
      - `invoiceTimeShift.dueTimeShift.duration` (integer, required)
        Amount of time by which to move the invoice due time or date.
      - `invoiceTimeShift.dueTimeShift.unit` (any, required)
        Unit of time.
    - TrialOnlyPlan:
      - `id` (string, required)
        ID of the plan.
        Example: "plan_0YV7DENSVGDBW9S71XZNNYYQ0X"
      - `name` (string, required)
        Name of the plan.
This name is displayed on invoices and receipts.
      - `description` (string)
        Plain-text description of the plan.
This field accepts plain-text only.
      - `richDescription` (string)
        Rich-text description of the plan.
This field accepts rich text formatting, such as: bold, underline, italic, and hyperlinks.
      - `productId` (string, required)
        ID of the related product.
        Example: "prod_0YV7DES3WPC5J8JD8QTVNZBZNZ"
      - `productOptions` (object,null)
        Name-value pairs that specify the product options.
        Example: {"color":"red","size":"xxl"}
      - `currency` (string, required)
        Currency code in ISO 4217 format.
      - `currencySign` (string)
        Currency sign.
      - `setup` (object,null)
        Setup fee information for the plan.
      - `setup.price` (number, required)
        One-time setup fee charged when the plan starts.
Set to 0 if no setup fee applies.
      - `customFields` (object)
        Use custom fields to extend a resource scheme to include custom data that is not provided as a common field.
For more information, see [Custom fields](https://www.rebilly.com/catalog/all/custom-fields).
      - `isActive` (boolean)
        Specifies if the plan is active.
      - `revision` (integer)
        Number of times the plan is modified.
Compare this value with materialized subscription item revision values.
      - `isTrialOnly` (boolean)
        Specifies if a plan is a trial that does not have recurring instructions.
      - `trial` (object,null, required)
        Trial configuration settings.
      - `trial.price` (number, required)
        Price of setting up a trial.
If your service charges a fee for a trial, specify it here.
To charge no trial fee, set this value to 0.
      - `trial.period` (object, required)
        Period information.
      - `trial.period.unit` (string, required)
        Unit of time.
        Enum: same as `recurringInterval.unit` in "SubscriptionPlan" (4 values)
      - `trial.period.length` (integer, required)
        Length of time.
      - `createdTime` (string)
        Date and time when the resource is created.
This value is set automatically when the resource is created.
      - `updatedTime` (string)
        Date and time when the resource is updated.
This value is set automatically when the resource is updated.
      - `_links` (array)
        Related links.
      - `_links.href` (string)
        Link URL.
      - `_links.rel` (string)
        Type of link.
        Enum: same as `_links.rel` in "OneTimeSalePlan" (2 values)
      - `invoiceTimeShift` (object,null)
        Use invoice time shift to adjust the invoice issue and due date when billing must occur before the service period changes.
For example, rent must be paid in advance,
so the invoice must be in advance of the billing date.
For more information, see [Service period anchor, and billing timing, and invoice time shift](https://www.rebilly.com/docs/dev-docs/concepts/#service-period-anchor-and-billing-timing-and-invoice-time-shift).
      - `invoiceTimeShift.issueTimeShift` (object)
        Calculation instruction of the billing time.

This is used in conjunction with the service period anchor to calculate
the time at which the invoice is issued. For more information, see
[Service period anchor, billing timing, and invoice time shift](https://www.rebilly.com/docs/dev-docs/concepts/#service-period-anchor-and-billing-timing-and-invoice-time-shift).
      - `invoiceTimeShift.issueTimeShift.chronology` (string, required)
        Sequential order of the billing time relative to the start of the service period.
        Enum: same as `invoiceTimeShift.issueTimeShift.chronology` in "SubscriptionPlan" (1 values)
      - `invoiceTimeShift.issueTimeShift.duration` (integer, required)
        Amount of time by which to move the invoice issue time or date.
      - `invoiceTimeShift.issueTimeShift.unit` (any, required)
        Unit of time.
      - `invoiceTimeShift.dueTimeShift` (object)
        Calculation instruction of the invoice due time.

This is used in conjunction with the billing anchor to calculate when
an invoice is due for payment. For more information, see
[Service period anchor, billing timing, and invoice time shift](https://www.rebilly.com/docs/dev-docs/concepts/#service-period-anchor-and-billing-timing-and-invoice-time-shift).

The sequential order of due time shift is always after the due date.
      - `invoiceTimeShift.dueTimeShift.duration` (integer, required)
        Amount of time by which to move the invoice due time or date.
      - `invoiceTimeShift.dueTimeShift.unit` (any, required)
        Unit of time.

## Response 401 fields (application/json):

  - `status` (integer)
    HTTP status code.

  - `type` (string)
    Problem type in the form of a [URI](https://tools.ietf.org/html/rfc3986) reference.
It should provide human-readable documentation for the problem type.
When this member is not present, its value is assumed to be "about:blank".

  - `title` (string)
    Short, human-readable summary of the problem type.
Other than for the purposes of localization, this should not change from occurrence to occurrence of the problem.

  - `detail` (string)
    Human-readable explanation that is specific to this occurrence of the problem.

  - `instance` (string)
    URI reference that identifies the specific occurrence of the problem.
It may or may not yield further information if dereferenced.

## Response 403 fields (application/json):

  - `status` (integer)
    HTTP status code.

  - `type` (string)
    Problem type in the form of a [URI](https://tools.ietf.org/html/rfc3986) reference.
It should provide human-readable documentation for the problem type.
When this member is not present, its value is assumed to be "about:blank".

  - `title` (string)
    Short, human-readable summary of the problem type.
Other than for the purposes of localization, this should not change from occurrence to occurrence of the problem.

  - `detail` (string)
    Human-readable explanation that is specific to this occurrence of the problem.

  - `instance` (string)
    URI reference that identifies the specific occurrence of the problem.
It may or may not yield further information if dereferenced.

## Response 404 fields (application/json):

  - `status` (integer)
    HTTP status code.

  - `type` (string)
    Problem type in the form of a [URI](https://tools.ietf.org/html/rfc3986) reference.
It should provide human-readable documentation for the problem type.
When this member is not present, its value is assumed to be "about:blank".

  - `title` (string)
    Short, human-readable summary of the problem type.
Other than for the purposes of localization, this should not change from occurrence to occurrence of the problem.

  - `detail` (string)
    Human-readable explanation that is specific to this occurrence of the problem.

  - `instance` (string)
    URI reference that identifies the specific occurrence of the problem.
It may or may not yield further information if dereferenced.


