---
title: Subscription Addons
description: The add-ons on a subscription, and the add-ons that the user can buy.

---

# Subscription Addons

The add-ons on a subscription, and the add-ons that the user can buy.


## [GET /subscriptions/{subscriptionId}/addon-options](/end-user-api/subscription-addons#tag/subscription-addons/GET/subscriptions/{subscriptionId}/addon-options)

Get add-on options for subscription

Get the add-ons that can be added to this subscription now.

An add-on appears only when its product category matches the subscription's product offering. It must also be part of the customer's product catalog. For example, a travel package will not appear for a cell subscription, because their product categories do not match.

An order that adds an add-on not in this list will be refused.

Authentication: X-Api-Key + Bearer JWT

### Path parameters

- `subscriptionId` (`string`, required) — The identifier of the subscription. May be the entity's internal UUID or an external reference identifier. Reference identifiers MUST be prefixed with `rid_` (e.g., `rid_crm-subscription-12345`) so the API can distinguish them from internal UUIDs. The prefix is stripped before lookup.

### Responses

#### 200

The add-on options available for this subscription.

Type: `object`

- `items` (`array of ProductOffering`, required) — The add-on product offerings available for this subscription.
  - `addonCategories` (`array of ProductCategory`, optional) — List of product categories this addon is applicable for. Only populated when type is `SUBSCRIPTION_ADDON`. For example, a `TRAVEL_ESIM_PACKAGE` addon might be applicable to `TRAVEL_ESIM` subscriptions.
  - `broadbandFacts` (`object`, optional) — The values of the FCC Broadband Facts label that differ for each plan. A US storefront shows the label next to each plan it sells. Only an offering that the brand gave these values has them. The label shows the amounts in the currency of the price.
    - `additionalDataIncrementGb` (`number`, required, example 0) — The amount of data, in GB, that `overUsageDataPriceMinor` buys. Always 0, because the platform sells no data after the allowance.
    - `earlyTerminationFeeMinor` (`integer`, required, int64, example 0) — The fee to end the plan early, in minor currency units. Always 0, because the platform charges no such fee.
    - `monthlyProviderFees` (`array of BroadbandFactsFee`, required) — The fees that the provider adds to the monthly price.
      - `amountMinor` (`integer`, required, int64, example 21) — The amount of the fee, in minor currency units.
      - `name` (`string`, required, example Federal Universal Service Fund) — What the label calls the fee.
    - `overUsageDataPriceMinor` (`integer`, required, int64, example 0) — The price of more data after the allowance, in minor currency units. Always 0, because the platform charges no such price.
    - `planCode` (`string`, required, example FLEXSTANDARD001) — 15 characters of A-Z and 0-9, unique among the offerings of the brand. The unique plan identifier on the label is `M`, then the FCC Registration Number of the brand, then this code.
    - `singlePurchaseFees` (`array of BroadbandFactsFee`, required) — The fees that the customer pays one time, when they buy the plan.
      - `amountMinor` (`integer`, required, int64, example 21) — The amount of the fee, in minor currency units.
      - `name` (`string`, required, example Federal Universal Service Fund) — What the label calls the fee.
    - `unlimitedData` (`boolean`, required, example false) — True when the plan has no data limit. The label then shows "Unlimited" as the data that the monthly price includes, and not the data allowance of the product.
  - `customerType` (`enum<string>`, required, one of CONSUMER, BUSINESS) — Whether the customer is a private individual (CONSUMER) or a company (BUSINESS). Determines the expected identity format and which billing rules apply.
  - `description` (`string`, optional, example Basic mobile plan with 5GB data and unlimited calls) — Description of the product offering.
  - `group` (`object`, optional) — A product group organizes related product offerings.
    - `category` (`enum<string>`, required, one of PRODUCT_CATEGORY_SUBSCRIPTION_CELL, PRODUCT_CATEGORY_SUBSCRIPTION_DATA_SIM, PRODUCT_CATEGORY_SUBSCRIPTION_BROADBAND, PRODUCT_CATEGORY_SUBSCRIPTION_M2M, PRODUCT_CATEGORY_TRAVEL_ESIM, PRODUCT_CATEGORY_SUBSCRIPTION_CELL_FIXED, PRODUCT_CATEGORY_VANITY_NUMBER_FORWARD, PRODUCT_CATEGORY_VANITY_NUMBER_CELL, PRODUCT_CATEGORY_EXTRA_DATA, PRODUCT_CATEGORY_TRAVEL_ESIM_PACKAGE, PRODUCT_CATEGORY_ABROAD, PRODUCT_CATEGORY_ABROAD_EXTRA_DATA, PRODUCT_CATEGORY_DATA_PACKAGE_OUTSIDE_EU, PRODUCT_CATEGORY_NETWORK_EXTENSIONS, PRODUCT_CATEGORY_VANITY_NUMBER, PRODUCT_CATEGORY_EXTERNAL_PRODUCT, PRODUCT_CATEGORY_EXTERNAL_PRODUCT_ADDON, PRODUCT_CATEGORY_SIM_CARD, PRODUCT_CATEGORY_PBX_USER_LEVEL, PRODUCT_CATEGORY_PBX_NUMBER, PRODUCT_CATEGORY_PBX_MOBILE_NUMBER, PRODUCT_CATEGORY_PBX_LANDLINE_FORWARD, PRODUCT_CATEGORY_PBX_SOFTPHONE, PRODUCT_CATEGORY_PBX_STATISTICS, PRODUCT_CATEGORY_PBX_CALL_RECORDING, PRODUCT_CATEGORY_PBX_VOICEMAIL, PRODUCT_CATEGORY_PBX_QUEUE_MAX_WAITING_CALLERS, PRODUCT_CATEGORY_PBX_ROUTE_IVR, PRODUCT_CATEGORY_PBX_ROUTE_GROUP, PRODUCT_CATEGORY_PBX_ROUTE_QUEUE, PRODUCT_CATEGORY_PBX_ROUTE_FEATURE_IVR, PRODUCT_CATEGORY_PBX_ROUTE_FEATURE_GROUP, PRODUCT_CATEGORY_PBX_ROUTE_FEATURE_QUEUE, PRODUCT_CATEGORY_PBX_ROUTE_FEATURE_VOICEMAIL, PRODUCT_CATEGORY_SUBSCRIPTION_MEX_PARTNER, PRODUCT_CATEGORY_INTERNATIONAL_NUMBER, example PRODUCT_CATEGORY_SUBSCRIPTION_CELL) — A product category is a sub-type for grouping offerings of the same type. Typically, product offerings of the same type with the same category allow for switching between them. For upgrading and downgrading subscriptions and licenses, we recommend using their corresponding endpoints though. Categories are grouped by their product type: **SUBSCRIPTION categories:** - `PRODUCT_CATEGORY_SUBSCRIPTION_CELL` - Mobile cellular subscription - `PRODUCT_CATEGORY_SUBSCRIPTION_CELL_FIXED` - Cellular subscription at a fixed location - `PRODUCT_CATEGORY_SUBSCRIPTION_DATA_SIM` - Data-only SIM subscription - `PRODUCT_CATEGORY_SUBSCRIPTION_BROADBAND` - Broadband internet subscription - `PRODUCT_CATEGORY_SUBSCRIPTION_M2M` - Machine-to-machine IoT subscription - `PRODUCT_CATEGORY_TRAVEL_ESIM` - Travel eSIM subscription for international roaming - `PRODUCT_CATEGORY_VANITY_NUMBER_FORWARD` - Vanity number that forwards calls - `PRODUCT_CATEGORY_VANITY_NUMBER_CELL` - Vanity number on a cellular subscription **SUBSCRIPTION_ADDON categories:** - `PRODUCT_CATEGORY_EXTRA_DATA` - Additional data package addon - `PRODUCT_CATEGORY_TRAVEL_ESIM_PACKAGE` - Travel eSIM data package with country/region coverage - `PRODUCT_CATEGORY_ABROAD` - International roaming addon - `PRODUCT_CATEGORY_ABROAD_EXTRA_DATA` - Additional data package for roaming - `PRODUCT_CATEGORY_DATA_PACKAGE_OUTSIDE_EU` - Data package for use outside the EU - `PRODUCT_CATEGORY_NETWORK_EXTENSIONS` - Network feature addon - `PRODUCT_CATEGORY_VANITY_NUMBER` - Vanity number addon **EXTERNAL_PRODUCT categories:** - `PRODUCT_CATEGORY_EXTERNAL_PRODUCT` - External purchasable product - `PRODUCT_CATEGORY_EXTERNAL_PRODUCT_ADDON` - Addon for external product **SIM_CARD categories:** - `PRODUCT_CATEGORY_SIM_CARD` - Physical SIM or eSIM replacement for an existing subscription **LICENSE categories (PBX):** - `PRODUCT_CATEGORY_PBX_USER_LEVEL` - Level of a PBX user license - `PRODUCT_CATEGORY_PBX_NUMBER` - PBX phone number - `PRODUCT_CATEGORY_PBX_MOBILE_NUMBER` - PBX mobile number - `PRODUCT_CATEGORY_PBX_LANDLINE_FORWARD` - Forward from a landline number - `PRODUCT_CATEGORY_PBX_SOFTPHONE` - Softphone - `PRODUCT_CATEGORY_PBX_STATISTICS` - Call statistics - `PRODUCT_CATEGORY_PBX_CALL_RECORDING` - Call recording - `PRODUCT_CATEGORY_PBX_VOICEMAIL` - Voicemail - `PRODUCT_CATEGORY_PBX_QUEUE_MAX_WAITING_CALLERS` - Queue capacity - `PRODUCT_CATEGORY_PBX_ROUTE_IVR`, `PRODUCT_CATEGORY_PBX_ROUTE_GROUP`, `PRODUCT_CATEGORY_PBX_ROUTE_QUEUE` - Call routes - `PRODUCT_CATEGORY_PBX_ROUTE_FEATURE_IVR`, `PRODUCT_CATEGORY_PBX_ROUTE_FEATURE_GROUP`, `PRODUCT_CATEGORY_PBX_ROUTE_FEATURE_QUEUE`, `PRODUCT_CATEGORY_PBX_ROUTE_FEATURE_VOICEMAIL` - Call route features **Other categories:** - `PRODUCT_CATEGORY_SUBSCRIPTION_MEX_PARTNER`, `PRODUCT_CATEGORY_INTERNATIONAL_NUMBER` A caller must tolerate new values.
    - `description` (`string`, optional, example Bundled cell subscriptions with unlimited calls and SMS with ILD enabled.) — Description of the product group in the requested locale.
    - `internalDescription` (`string`, optional, example Core mobile offerings targeting consumer and business segments) — Internal description of the product group for operational use only.
    - `name` (`string`, required, example Mobile Plans) — Name of the product group in the requested locale.
    - `productOfferingGroupId` (`string`, required, example mobile-plans) — Unique identifier for the product group.
  - `imageUrl` (`string`, optional, uri, example https://cdn.example.com/images/mobile-basic.png) — URL to the image representing the product offering.
  - `internalDescription` (`string`, optional, example seamless_cell_10gb_us) — Internal description of the product offering for operational use only.
  - `metadata` (`object with string keys`, optional) — A set of key-value pairs that can be attached to an object for storing additional information in a semi-structured format. Provided by API clients and returned as-is; the platform does not interpret the values.
    - `*` (`string`, optional)
  - `name` (`string`, required, example Seamless 10GB) — Name of the product offering.
  - `price` (`object`, required) — The cost of a product offering, as configured in the catalog. A price is either one-time or recurring, and the priceType field tells you which. Amounts are integers in the minor units of the currency. For example, 2999 is $29.99 when the currency is USD.
    - `billingCycle` (`object`, optional) — How often a recurring price is charged.
      - `interval` (`integer`, required, example 1) — The quantity of periods between charges. For example, a MONTHLY period with an interval of 1 bills each month, and an interval of 3 bills each three months.
      - `period` (`enum<string>`, required, one of MONTHLY) — The unit of time between charges. Currently only monthly billing is supported.
    - `bindingContract` (`object`, optional) — A commitment to keep the subscription for a fixed term, usually in exchange for a discount that runs for the length of the commitment.
      - `discount` (`object`, optional) — A recurring amount that comes off the price when you price the order. The amount applies to one billing period, the same as the price, and it is not a total. For example, a discount of 500 for 3 periods takes 500 off each of the first three periods, and 1500 in all.
        - `amountMinor` (`integer`, required, int64, example 500) — The amount that comes off each billing period, in minor currency units.
        - `duration` (`object`, optional) — How long the discount lasts. An `UPFRONT_PAYMENT` discount always gives a duration, and it covers the billing cycles that the customer pays for in advance. The other two sources omit the duration when the discount never stops. The discount then comes off every charge for as long as the price is in effect. For a one-time price that is the single charge. — A length of time, expressed as a count of some unit.
          - `unit` (`enum<string>`, required, one of MONTHS) — The unit of time being counted. Currently only months are supported.
          - `value` (`integer`, required, example 3) — How many of the unit the duration lasts.
        - `invoicingDescription` (`string`, optional, example Campaign discount) — What the brand calls this discount on an invoice. Omitted when the brand gave the discount no name of its own.
        - `source` (`enum<string>`, optional, one of STANDARD, BINDING_CONTRACT, UPFRONT_PAYMENT, example STANDARD) — What the customer must do to get the discount: - `STANDARD` is given to every customer who orders the offering. - `BINDING_CONTRACT` needs the customer to commit for the contract's length. - `UPFRONT_PAYMENT` needs the customer to pay for several billing periods at once.
      - `duration` (`object`, required) — A length of time, expressed as a count of some unit.
        - `unit` (`enum<string>`, required, one of MONTHS) — The unit of time being counted. Currently only months are supported.
        - `value` (`integer`, required, example 3) — How many of the unit the duration lasts.
    - `currency` (`string`, required, example USD) — The ISO 4217 currency code the price is expressed in (e.g., "USD").
    - `currencyOptionsMinor` (`object with string keys`, optional) — Per-currency price overrides keyed by three-letter ISO currency code (e.g. "USD", "SEK"). Each value is the cost in that currency, in minor currency units.
      - `*` (`integer`, optional, int64)
    - `customUpfrontPayment` (`object`, optional) — Billing cycles the customer pays for in advance when ordering, usually at a discount. Billing returns to the normal cycle once the prepaid cycles run out.
      - `billingCycles` (`integer`, required, example 3) — How many billing cycles are paid for upfront. This counts cycles, not months: three cycles of a price that bills quarterly covers nine months.
      - `discount` (`object`, optional) — A recurring amount that comes off the price when you price the order. The amount applies to one billing period, the same as the price, and it is not a total. For example, a discount of 500 for 3 periods takes 500 off each of the first three periods, and 1500 in all.
        - `amountMinor` (`integer`, required, int64, example 500) — The amount that comes off each billing period, in minor currency units.
        - `duration` (`object`, optional) — How long the discount lasts. An `UPFRONT_PAYMENT` discount always gives a duration, and it covers the billing cycles that the customer pays for in advance. The other two sources omit the duration when the discount never stops. The discount then comes off every charge for as long as the price is in effect. For a one-time price that is the single charge. — A length of time, expressed as a count of some unit.
          - `unit` (`enum<string>`, required, one of MONTHS) — The unit of time being counted. Currently only months are supported.
          - `value` (`integer`, required, example 3) — How many of the unit the duration lasts.
        - `invoicingDescription` (`string`, optional, example Campaign discount) — What the brand calls this discount on an invoice. Omitted when the brand gave the discount no name of its own.
        - `source` (`enum<string>`, optional, one of STANDARD, BINDING_CONTRACT, UPFRONT_PAYMENT, example STANDARD) — What the customer must do to get the discount: - `STANDARD` is given to every customer who orders the offering. - `BINDING_CONTRACT` needs the customer to commit for the contract's length. - `UPFRONT_PAYMENT` needs the customer to pay for several billing periods at once.
    - `includesTax` (`boolean`, optional, example false) — True when the configured price includes its tax. The tax is then a part of `netPriceMinor` rather than an amount on top of it.
    - `netPriceMinor` (`integer`, optional, int64, example 2999) — The configured price of the offering, in minor currency units. When `includesTax` is true, this amount is the total the customer pays, and the tax is a part of it.
    - `priceType` (`enum<string>`, required, one of ONE_TIME, RECURRING) — How the price is charged. - ONE_TIME: Charged once (e.g., a setup fee or hardware purchase). - RECURRING: Charged every billing cycle (e.g., a monthly subscription fee).
    - `standardDiscount` (`object`, optional) — A recurring amount that comes off the price when you price the order. The amount applies to one billing period, the same as the price, and it is not a total. For example, a discount of 500 for 3 periods takes 500 off each of the first three periods, and 1500 in all.
      - `amountMinor` (`integer`, required, int64, example 500) — The amount that comes off each billing period, in minor currency units.
      - `duration` (`object`, optional) — How long the discount lasts. An `UPFRONT_PAYMENT` discount always gives a duration, and it covers the billing cycles that the customer pays for in advance. The other two sources omit the duration when the discount never stops. The discount then comes off every charge for as long as the price is in effect. For a one-time price that is the single charge. — A length of time, expressed as a count of some unit.
        - `unit` (`enum<string>`, required, one of MONTHS) — The unit of time being counted. Currently only months are supported.
        - `value` (`integer`, required, example 3) — How many of the unit the duration lasts.
      - `invoicingDescription` (`string`, optional, example Campaign discount) — What the brand calls this discount on an invoice. Omitted when the brand gave the discount no name of its own.
      - `source` (`enum<string>`, optional, one of STANDARD, BINDING_CONTRACT, UPFRONT_PAYMENT, example STANDARD) — What the customer must do to get the discount: - `STANDARD` is given to every customer who orders the offering. - `BINDING_CONTRACT` needs the customer to commit for the contract's length. - `UPFRONT_PAYMENT` needs the customer to pay for several billing periods at once.
  - `product` (`object`, required) — Embedded representation of a product.
    - `category` (`enum<string>`, required, one of PRODUCT_CATEGORY_SUBSCRIPTION_CELL, PRODUCT_CATEGORY_SUBSCRIPTION_DATA_SIM, PRODUCT_CATEGORY_SUBSCRIPTION_BROADBAND, PRODUCT_CATEGORY_SUBSCRIPTION_M2M, PRODUCT_CATEGORY_TRAVEL_ESIM, PRODUCT_CATEGORY_SUBSCRIPTION_CELL_FIXED, PRODUCT_CATEGORY_VANITY_NUMBER_FORWARD, PRODUCT_CATEGORY_VANITY_NUMBER_CELL, PRODUCT_CATEGORY_EXTRA_DATA, PRODUCT_CATEGORY_TRAVEL_ESIM_PACKAGE, PRODUCT_CATEGORY_ABROAD, PRODUCT_CATEGORY_ABROAD_EXTRA_DATA, PRODUCT_CATEGORY_DATA_PACKAGE_OUTSIDE_EU, PRODUCT_CATEGORY_NETWORK_EXTENSIONS, PRODUCT_CATEGORY_VANITY_NUMBER, PRODUCT_CATEGORY_EXTERNAL_PRODUCT, PRODUCT_CATEGORY_EXTERNAL_PRODUCT_ADDON, PRODUCT_CATEGORY_SIM_CARD, PRODUCT_CATEGORY_PBX_USER_LEVEL, PRODUCT_CATEGORY_PBX_NUMBER, PRODUCT_CATEGORY_PBX_MOBILE_NUMBER, PRODUCT_CATEGORY_PBX_LANDLINE_FORWARD, PRODUCT_CATEGORY_PBX_SOFTPHONE, PRODUCT_CATEGORY_PBX_STATISTICS, PRODUCT_CATEGORY_PBX_CALL_RECORDING, PRODUCT_CATEGORY_PBX_VOICEMAIL, PRODUCT_CATEGORY_PBX_QUEUE_MAX_WAITING_CALLERS, PRODUCT_CATEGORY_PBX_ROUTE_IVR, PRODUCT_CATEGORY_PBX_ROUTE_GROUP, PRODUCT_CATEGORY_PBX_ROUTE_QUEUE, PRODUCT_CATEGORY_PBX_ROUTE_FEATURE_IVR, PRODUCT_CATEGORY_PBX_ROUTE_FEATURE_GROUP, PRODUCT_CATEGORY_PBX_ROUTE_FEATURE_QUEUE, PRODUCT_CATEGORY_PBX_ROUTE_FEATURE_VOICEMAIL, PRODUCT_CATEGORY_SUBSCRIPTION_MEX_PARTNER, PRODUCT_CATEGORY_INTERNATIONAL_NUMBER, example PRODUCT_CATEGORY_SUBSCRIPTION_CELL) — A product category is a sub-type for grouping offerings of the same type. Typically, product offerings of the same type with the same category allow for switching between them. For upgrading and downgrading subscriptions and licenses, we recommend using their corresponding endpoints though. Categories are grouped by their product type: **SUBSCRIPTION categories:** - `PRODUCT_CATEGORY_SUBSCRIPTION_CELL` - Mobile cellular subscription - `PRODUCT_CATEGORY_SUBSCRIPTION_CELL_FIXED` - Cellular subscription at a fixed location - `PRODUCT_CATEGORY_SUBSCRIPTION_DATA_SIM` - Data-only SIM subscription - `PRODUCT_CATEGORY_SUBSCRIPTION_BROADBAND` - Broadband internet subscription - `PRODUCT_CATEGORY_SUBSCRIPTION_M2M` - Machine-to-machine IoT subscription - `PRODUCT_CATEGORY_TRAVEL_ESIM` - Travel eSIM subscription for international roaming - `PRODUCT_CATEGORY_VANITY_NUMBER_FORWARD` - Vanity number that forwards calls - `PRODUCT_CATEGORY_VANITY_NUMBER_CELL` - Vanity number on a cellular subscription **SUBSCRIPTION_ADDON categories:** - `PRODUCT_CATEGORY_EXTRA_DATA` - Additional data package addon - `PRODUCT_CATEGORY_TRAVEL_ESIM_PACKAGE` - Travel eSIM data package with country/region coverage - `PRODUCT_CATEGORY_ABROAD` - International roaming addon - `PRODUCT_CATEGORY_ABROAD_EXTRA_DATA` - Additional data package for roaming - `PRODUCT_CATEGORY_DATA_PACKAGE_OUTSIDE_EU` - Data package for use outside the EU - `PRODUCT_CATEGORY_NETWORK_EXTENSIONS` - Network feature addon - `PRODUCT_CATEGORY_VANITY_NUMBER` - Vanity number addon **EXTERNAL_PRODUCT categories:** - `PRODUCT_CATEGORY_EXTERNAL_PRODUCT` - External purchasable product - `PRODUCT_CATEGORY_EXTERNAL_PRODUCT_ADDON` - Addon for external product **SIM_CARD categories:** - `PRODUCT_CATEGORY_SIM_CARD` - Physical SIM or eSIM replacement for an existing subscription **LICENSE categories (PBX):** - `PRODUCT_CATEGORY_PBX_USER_LEVEL` - Level of a PBX user license - `PRODUCT_CATEGORY_PBX_NUMBER` - PBX phone number - `PRODUCT_CATEGORY_PBX_MOBILE_NUMBER` - PBX mobile number - `PRODUCT_CATEGORY_PBX_LANDLINE_FORWARD` - Forward from a landline number - `PRODUCT_CATEGORY_PBX_SOFTPHONE` - Softphone - `PRODUCT_CATEGORY_PBX_STATISTICS` - Call statistics - `PRODUCT_CATEGORY_PBX_CALL_RECORDING` - Call recording - `PRODUCT_CATEGORY_PBX_VOICEMAIL` - Voicemail - `PRODUCT_CATEGORY_PBX_QUEUE_MAX_WAITING_CALLERS` - Queue capacity - `PRODUCT_CATEGORY_PBX_ROUTE_IVR`, `PRODUCT_CATEGORY_PBX_ROUTE_GROUP`, `PRODUCT_CATEGORY_PBX_ROUTE_QUEUE` - Call routes - `PRODUCT_CATEGORY_PBX_ROUTE_FEATURE_IVR`, `PRODUCT_CATEGORY_PBX_ROUTE_FEATURE_GROUP`, `PRODUCT_CATEGORY_PBX_ROUTE_FEATURE_QUEUE`, `PRODUCT_CATEGORY_PBX_ROUTE_FEATURE_VOICEMAIL` - Call route features **Other categories:** - `PRODUCT_CATEGORY_SUBSCRIPTION_MEX_PARTNER`, `PRODUCT_CATEGORY_INTERNATIONAL_NUMBER` A caller must tolerate new values.
    - `features` (`object`, optional) — The features included with the product, if any. Typically used for telecom products.
      - `activationType` (`enum<string>`, optional, one of INSTANT, FIRST_USE, example INSTANT) — How the travel eSIM package activates. Present for travel eSIM packages (`TRAVEL_ESIM_PACKAGE`).
      - `countries` (`array of string`, optional, example ["USA","CAN","MEX"]) — ISO 3166-1 alpha-3 country codes where the product provides coverage. Present for travel eSIM packages (`TRAVEL_ESIM_PACKAGE`). Use the `countries` query parameter on list endpoints to filter by coverage.
      - `dataMb` (`number`, optional, example 2048) — Megabytes of data included with the product. Present for cellular, data, and travel eSIM products.
      - `includedCallSeconds` (`integer`, optional, example 1000) — Outbound call seconds included with the product. Present for cellular subscription categories.
      - `includedSms` (`integer`, optional, example 500) — Number of SMS messages included with the product. Present for cellular subscription categories.
      - `regions` (`array of string`, optional, example ["NORTH_AMERICA"]) — Named regions covered by the product. Present for travel eSIM packages (`TRAVEL_ESIM_PACKAGE`). Use the `regions` query parameter on list endpoints to filter by coverage.
      - `simCardType` (`enum<string>`, optional, one of PSIM, ESIM, example PSIM) — The SIM format for a SIM card product.
      - `validityDays` (`integer`, optional, example 30) — Number of days the product is valid for. Present for travel eSIM packages (`TRAVEL_ESIM_PACKAGE`).
    - `internalName` (`string`, required, example us-mobile-unlimited-5gb) — The name used to identify the product internally in the catalog. Not intended for customer display — use the product offering name instead.
    - `networkProviderId` (`string`, optional, example tmobile-us) — The unique identifier for the network provider.
    - `productId` (`string`, required, example d4e5f6a7-b8c9-0123-4567-890123456789) — The unique identifier for the product.
    - `type` (`enum<string>`, required, one of SUBSCRIPTION, SUBSCRIPTION_ADDON, LICENSE, EXTERNAL_PRODUCT, SIM_CARD, example SUBSCRIPTION) — The type of product offering determines how it can be used and what kind of resource it creates. **SUBSCRIPTION** Creates a standalone subscription resource (e.g., mobile plan, broadband, travel eSIM). - Includes categories like `SUBSCRIPTION_CELL`, `TRAVEL_ESIM` - Can be created via order or directly depending on configuration - Has its own lifecycle (activation, suspension, termination) **SUBSCRIPTION_ADDON** Adds features or resources to an existing subscription. - Includes categories like `TRAVEL_ESIM_PACKAGE` - Must be attached to a parent subscription **LICENSE** Creates a license for business/PBX features. - Typically used for enterprise telephony features **EXTERNAL_PRODUCT** Represents purchasable items outside the core telecom platform. - Can only be ordered via orders, not created directly **SIM_CARD** Replaces the SIM card for an existing subscription through a subscription change order.
  - `productOfferingId` (`string`, required, example f47ac10b-58cc-4372-a567-0e02b2c3d479) — Unique identifier for the product offering.
  - `richContent` (`string`, optional, example <h3>Features</h3><ul><li>5GB monthly data</li><li>Unlimited calls & texts</li><li>No setup fees</li></ul>) — Rich HTML content with detailed information about the product offering.
  - `status` (`enum<string>`, required, deprecated, one of AVAILABLE, ARCHIVED, example AVAILABLE) — Deprecated. Use `versionStatus` instead. The status of the product offering. Archived offerings are not allowed to be created/ordered by customers, but can still be used for existing subscriptions.
  - `uspList` (`array of string`, optional, example ["5GB of data every month","Unlimited calls and texts","No setup fee"]) — Short plain-text selling points, in the order the brand put them. A storefront shows them as a checklist.
  - `versionStatus` (`enum<string>`, required, one of DRAFT, TESTING, PUBLISHED, UNPUBLISHED, ARCHIVED, example PUBLISHED) — The stage of this version of the product offering. - `DRAFT`: The brand edits the version. Nobody can order it. - `TESTING`: The brand tests the version. Nobody can order it. - `PUBLISHED`: Each customer can order the version. - `UNPUBLISHED`: Only a customer with a product catalog that holds the version can order it. Existing subscriptions keep it. - `ARCHIVED`: Nobody can order the version. Existing subscriptions keep it.

#### 400

The request was malformed or invalid.

Type: [Error](/end-user-api/models.md#models/Error)

#### 401

Authentication is required to access this resource.

Type: [Error](/end-user-api/models.md#models/Error)

#### 403

Access to this resource is forbidden.

Type: [Error](/end-user-api/models.md#models/Error)

#### 404

The requested resource was not found.

Type: [Error](/end-user-api/models.md#models/Error)

#### 500

An unexpected error occurred on the server.

Type: [Error](/end-user-api/models.md#models/Error)

### Example request

```bash
curl https://apiv2.example.com/api/v2/end-user/subscriptions/SUBSCRIPTION_ID/addon-options \
  --header 'X-Api-Key: YOUR_API_KEY' \
  --header 'Authorization: Bearer YOUR_ACCESS_TOKEN'
```

## [GET /subscriptions/{subscriptionId}/addons](/end-user-api/subscription-addons#tag/subscription-addons/GET/subscriptions/{subscriptionId}/addons)

List active add-ons for subscription

Get all active and pending add-ons for a subscription.

This endpoint returns only add-ons that are currently attached to the subscription,
including their status and scheduling information. Use /addon-options to query available add-ons.

Authentication: X-Api-Key + Bearer JWT

### Path parameters

- `subscriptionId` (`string`, required) — The identifier of the subscription. May be the entity's internal UUID or an external reference identifier. Reference identifiers MUST be prefixed with `rid_` (e.g., `rid_crm-subscription-12345`) so the API can distinguish them from internal UUIDs. The prefix is stripped before lookup.

### Query parameters

- `status` (`array of SubscriptionAddonStatus`, optional) — Filter add-ons by status.

### Responses

#### 200

Active add-ons for the subscription.

Type: `object`

- `items` (`array of SubscriptionAddon`, required)
  - `addedAt` (`string`, optional, date-time, example 2024-01-15T10:30:00Z) — The date and time when the add-on was added to the subscription.
  - `cancelledAt` (`string`, optional, date-time, example 2024-06-30T00:00:00Z) — The date and time when the add-on was canceled (if applicable).
  - `expiredAt` (`string`, optional, date-time, example 2024-07-15T00:00:00Z) — The date and time when the add-on expired (if applicable).
  - `group` (`object`, optional) — A product group organizes related product offerings.
    - `category` (`enum<string>`, required, one of PRODUCT_CATEGORY_SUBSCRIPTION_CELL, PRODUCT_CATEGORY_SUBSCRIPTION_DATA_SIM, PRODUCT_CATEGORY_SUBSCRIPTION_BROADBAND, PRODUCT_CATEGORY_SUBSCRIPTION_M2M, PRODUCT_CATEGORY_TRAVEL_ESIM, PRODUCT_CATEGORY_SUBSCRIPTION_CELL_FIXED, PRODUCT_CATEGORY_VANITY_NUMBER_FORWARD, PRODUCT_CATEGORY_VANITY_NUMBER_CELL, PRODUCT_CATEGORY_EXTRA_DATA, PRODUCT_CATEGORY_TRAVEL_ESIM_PACKAGE, PRODUCT_CATEGORY_ABROAD, PRODUCT_CATEGORY_ABROAD_EXTRA_DATA, PRODUCT_CATEGORY_DATA_PACKAGE_OUTSIDE_EU, PRODUCT_CATEGORY_NETWORK_EXTENSIONS, PRODUCT_CATEGORY_VANITY_NUMBER, PRODUCT_CATEGORY_EXTERNAL_PRODUCT, PRODUCT_CATEGORY_EXTERNAL_PRODUCT_ADDON, PRODUCT_CATEGORY_SIM_CARD, PRODUCT_CATEGORY_PBX_USER_LEVEL, PRODUCT_CATEGORY_PBX_NUMBER, PRODUCT_CATEGORY_PBX_MOBILE_NUMBER, PRODUCT_CATEGORY_PBX_LANDLINE_FORWARD, PRODUCT_CATEGORY_PBX_SOFTPHONE, PRODUCT_CATEGORY_PBX_STATISTICS, PRODUCT_CATEGORY_PBX_CALL_RECORDING, PRODUCT_CATEGORY_PBX_VOICEMAIL, PRODUCT_CATEGORY_PBX_QUEUE_MAX_WAITING_CALLERS, PRODUCT_CATEGORY_PBX_ROUTE_IVR, PRODUCT_CATEGORY_PBX_ROUTE_GROUP, PRODUCT_CATEGORY_PBX_ROUTE_QUEUE, PRODUCT_CATEGORY_PBX_ROUTE_FEATURE_IVR, PRODUCT_CATEGORY_PBX_ROUTE_FEATURE_GROUP, PRODUCT_CATEGORY_PBX_ROUTE_FEATURE_QUEUE, PRODUCT_CATEGORY_PBX_ROUTE_FEATURE_VOICEMAIL, PRODUCT_CATEGORY_SUBSCRIPTION_MEX_PARTNER, PRODUCT_CATEGORY_INTERNATIONAL_NUMBER, example PRODUCT_CATEGORY_SUBSCRIPTION_CELL) — A product category is a sub-type for grouping offerings of the same type. Typically, product offerings of the same type with the same category allow for switching between them. For upgrading and downgrading subscriptions and licenses, we recommend using their corresponding endpoints though. Categories are grouped by their product type: **SUBSCRIPTION categories:** - `PRODUCT_CATEGORY_SUBSCRIPTION_CELL` - Mobile cellular subscription - `PRODUCT_CATEGORY_SUBSCRIPTION_CELL_FIXED` - Cellular subscription at a fixed location - `PRODUCT_CATEGORY_SUBSCRIPTION_DATA_SIM` - Data-only SIM subscription - `PRODUCT_CATEGORY_SUBSCRIPTION_BROADBAND` - Broadband internet subscription - `PRODUCT_CATEGORY_SUBSCRIPTION_M2M` - Machine-to-machine IoT subscription - `PRODUCT_CATEGORY_TRAVEL_ESIM` - Travel eSIM subscription for international roaming - `PRODUCT_CATEGORY_VANITY_NUMBER_FORWARD` - Vanity number that forwards calls - `PRODUCT_CATEGORY_VANITY_NUMBER_CELL` - Vanity number on a cellular subscription **SUBSCRIPTION_ADDON categories:** - `PRODUCT_CATEGORY_EXTRA_DATA` - Additional data package addon - `PRODUCT_CATEGORY_TRAVEL_ESIM_PACKAGE` - Travel eSIM data package with country/region coverage - `PRODUCT_CATEGORY_ABROAD` - International roaming addon - `PRODUCT_CATEGORY_ABROAD_EXTRA_DATA` - Additional data package for roaming - `PRODUCT_CATEGORY_DATA_PACKAGE_OUTSIDE_EU` - Data package for use outside the EU - `PRODUCT_CATEGORY_NETWORK_EXTENSIONS` - Network feature addon - `PRODUCT_CATEGORY_VANITY_NUMBER` - Vanity number addon **EXTERNAL_PRODUCT categories:** - `PRODUCT_CATEGORY_EXTERNAL_PRODUCT` - External purchasable product - `PRODUCT_CATEGORY_EXTERNAL_PRODUCT_ADDON` - Addon for external product **SIM_CARD categories:** - `PRODUCT_CATEGORY_SIM_CARD` - Physical SIM or eSIM replacement for an existing subscription **LICENSE categories (PBX):** - `PRODUCT_CATEGORY_PBX_USER_LEVEL` - Level of a PBX user license - `PRODUCT_CATEGORY_PBX_NUMBER` - PBX phone number - `PRODUCT_CATEGORY_PBX_MOBILE_NUMBER` - PBX mobile number - `PRODUCT_CATEGORY_PBX_LANDLINE_FORWARD` - Forward from a landline number - `PRODUCT_CATEGORY_PBX_SOFTPHONE` - Softphone - `PRODUCT_CATEGORY_PBX_STATISTICS` - Call statistics - `PRODUCT_CATEGORY_PBX_CALL_RECORDING` - Call recording - `PRODUCT_CATEGORY_PBX_VOICEMAIL` - Voicemail - `PRODUCT_CATEGORY_PBX_QUEUE_MAX_WAITING_CALLERS` - Queue capacity - `PRODUCT_CATEGORY_PBX_ROUTE_IVR`, `PRODUCT_CATEGORY_PBX_ROUTE_GROUP`, `PRODUCT_CATEGORY_PBX_ROUTE_QUEUE` - Call routes - `PRODUCT_CATEGORY_PBX_ROUTE_FEATURE_IVR`, `PRODUCT_CATEGORY_PBX_ROUTE_FEATURE_GROUP`, `PRODUCT_CATEGORY_PBX_ROUTE_FEATURE_QUEUE`, `PRODUCT_CATEGORY_PBX_ROUTE_FEATURE_VOICEMAIL` - Call route features **Other categories:** - `PRODUCT_CATEGORY_SUBSCRIPTION_MEX_PARTNER`, `PRODUCT_CATEGORY_INTERNATIONAL_NUMBER` A caller must tolerate new values.
    - `description` (`string`, optional, example Bundled cell subscriptions with unlimited calls and SMS with ILD enabled.) — Description of the product group in the requested locale.
    - `internalDescription` (`string`, optional, example Core mobile offerings targeting consumer and business segments) — Internal description of the product group for operational use only.
    - `name` (`string`, required, example Mobile Plans) — Name of the product group in the requested locale.
    - `productOfferingGroupId` (`string`, required, example mobile-plans) — Unique identifier for the product group.
  - `license` (`object`, optional) — Essential license information without sensitive details.
    - `activatedAt` (`string`, optional, date-time, example 2024-01-15T10:30:00Z) — When the license was activated.
    - `assignedTo` (`object`, required) — The entity that a license is assigned to, with the display information for it. A license is always assigned to a subscription.
      - `subscriptionDisplay` (`string`, optional, example +1 (555) 123-4567) — Display name for the subscription (typically the phone number)
      - `subscriptionId` (`string`, required, example c9a4d8d4-24c0-4164-ac8d-c77c4103b786) — The unique identifier for the subscription
      - `type` (`enum<string>`, required, one of SUBSCRIPTION) — The type of assignment
    - `customer` (`object`, optional) — Customer information embedded in responses. Sensitive details require separate API calls with appropriate authorization.
      - `customerId` (`string`, required, example a1b2c3d4-e5f6-4a5b-8c9d-0e1f2a3b4c5d) — The unique identifier for the customer. Use it with the customer endpoints to fetch full details.
      - `name` (`string`, required, example John Doe) — The customer's display name — the company name for business customers or the person's full name for consumers.
    - `licenseId` (`string`, required, example b3c4d5e6-f7a8-9012-3456-789012345678) — The unique identifier for the license.
    - `productOffering` (`object`, required) — Essential information about a product offering — what is being sold and at what price — without the full catalog details.
      - `group` (`object`, optional) — A product group organizes related product offerings.
        - `category` (`enum<string>`, required, one of PRODUCT_CATEGORY_SUBSCRIPTION_CELL, PRODUCT_CATEGORY_SUBSCRIPTION_DATA_SIM, PRODUCT_CATEGORY_SUBSCRIPTION_BROADBAND, PRODUCT_CATEGORY_SUBSCRIPTION_M2M, PRODUCT_CATEGORY_TRAVEL_ESIM, PRODUCT_CATEGORY_SUBSCRIPTION_CELL_FIXED, PRODUCT_CATEGORY_VANITY_NUMBER_FORWARD, PRODUCT_CATEGORY_VANITY_NUMBER_CELL, PRODUCT_CATEGORY_EXTRA_DATA, PRODUCT_CATEGORY_TRAVEL_ESIM_PACKAGE, PRODUCT_CATEGORY_ABROAD, PRODUCT_CATEGORY_ABROAD_EXTRA_DATA, PRODUCT_CATEGORY_DATA_PACKAGE_OUTSIDE_EU, PRODUCT_CATEGORY_NETWORK_EXTENSIONS, PRODUCT_CATEGORY_VANITY_NUMBER, PRODUCT_CATEGORY_EXTERNAL_PRODUCT, PRODUCT_CATEGORY_EXTERNAL_PRODUCT_ADDON, PRODUCT_CATEGORY_SIM_CARD, PRODUCT_CATEGORY_PBX_USER_LEVEL, PRODUCT_CATEGORY_PBX_NUMBER, PRODUCT_CATEGORY_PBX_MOBILE_NUMBER, PRODUCT_CATEGORY_PBX_LANDLINE_FORWARD, PRODUCT_CATEGORY_PBX_SOFTPHONE, PRODUCT_CATEGORY_PBX_STATISTICS, PRODUCT_CATEGORY_PBX_CALL_RECORDING, PRODUCT_CATEGORY_PBX_VOICEMAIL, PRODUCT_CATEGORY_PBX_QUEUE_MAX_WAITING_CALLERS, PRODUCT_CATEGORY_PBX_ROUTE_IVR, PRODUCT_CATEGORY_PBX_ROUTE_GROUP, PRODUCT_CATEGORY_PBX_ROUTE_QUEUE, PRODUCT_CATEGORY_PBX_ROUTE_FEATURE_IVR, PRODUCT_CATEGORY_PBX_ROUTE_FEATURE_GROUP, PRODUCT_CATEGORY_PBX_ROUTE_FEATURE_QUEUE, PRODUCT_CATEGORY_PBX_ROUTE_FEATURE_VOICEMAIL, PRODUCT_CATEGORY_SUBSCRIPTION_MEX_PARTNER, PRODUCT_CATEGORY_INTERNATIONAL_NUMBER, example PRODUCT_CATEGORY_SUBSCRIPTION_CELL) — A product category is a sub-type for grouping offerings of the same type. Typically, product offerings of the same type with the same category allow for switching between them. For upgrading and downgrading subscriptions and licenses, we recommend using their corresponding endpoints though. Categories are grouped by their product type: **SUBSCRIPTION categories:** - `PRODUCT_CATEGORY_SUBSCRIPTION_CELL` - Mobile cellular subscription - `PRODUCT_CATEGORY_SUBSCRIPTION_CELL_FIXED` - Cellular subscription at a fixed location - `PRODUCT_CATEGORY_SUBSCRIPTION_DATA_SIM` - Data-only SIM subscription - `PRODUCT_CATEGORY_SUBSCRIPTION_BROADBAND` - Broadband internet subscription - `PRODUCT_CATEGORY_SUBSCRIPTION_M2M` - Machine-to-machine IoT subscription - `PRODUCT_CATEGORY_TRAVEL_ESIM` - Travel eSIM subscription for international roaming - `PRODUCT_CATEGORY_VANITY_NUMBER_FORWARD` - Vanity number that forwards calls - `PRODUCT_CATEGORY_VANITY_NUMBER_CELL` - Vanity number on a cellular subscription **SUBSCRIPTION_ADDON categories:** - `PRODUCT_CATEGORY_EXTRA_DATA` - Additional data package addon - `PRODUCT_CATEGORY_TRAVEL_ESIM_PACKAGE` - Travel eSIM data package with country/region coverage - `PRODUCT_CATEGORY_ABROAD` - International roaming addon - `PRODUCT_CATEGORY_ABROAD_EXTRA_DATA` - Additional data package for roaming - `PRODUCT_CATEGORY_DATA_PACKAGE_OUTSIDE_EU` - Data package for use outside the EU - `PRODUCT_CATEGORY_NETWORK_EXTENSIONS` - Network feature addon - `PRODUCT_CATEGORY_VANITY_NUMBER` - Vanity number addon **EXTERNAL_PRODUCT categories:** - `PRODUCT_CATEGORY_EXTERNAL_PRODUCT` - External purchasable product - `PRODUCT_CATEGORY_EXTERNAL_PRODUCT_ADDON` - Addon for external product **SIM_CARD categories:** - `PRODUCT_CATEGORY_SIM_CARD` - Physical SIM or eSIM replacement for an existing subscription **LICENSE categories (PBX):** - `PRODUCT_CATEGORY_PBX_USER_LEVEL` - Level of a PBX user license - `PRODUCT_CATEGORY_PBX_NUMBER` - PBX phone number - `PRODUCT_CATEGORY_PBX_MOBILE_NUMBER` - PBX mobile number - `PRODUCT_CATEGORY_PBX_LANDLINE_FORWARD` - Forward from a landline number - `PRODUCT_CATEGORY_PBX_SOFTPHONE` - Softphone - `PRODUCT_CATEGORY_PBX_STATISTICS` - Call statistics - `PRODUCT_CATEGORY_PBX_CALL_RECORDING` - Call recording - `PRODUCT_CATEGORY_PBX_VOICEMAIL` - Voicemail - `PRODUCT_CATEGORY_PBX_QUEUE_MAX_WAITING_CALLERS` - Queue capacity - `PRODUCT_CATEGORY_PBX_ROUTE_IVR`, `PRODUCT_CATEGORY_PBX_ROUTE_GROUP`, `PRODUCT_CATEGORY_PBX_ROUTE_QUEUE` - Call routes - `PRODUCT_CATEGORY_PBX_ROUTE_FEATURE_IVR`, `PRODUCT_CATEGORY_PBX_ROUTE_FEATURE_GROUP`, `PRODUCT_CATEGORY_PBX_ROUTE_FEATURE_QUEUE`, `PRODUCT_CATEGORY_PBX_ROUTE_FEATURE_VOICEMAIL` - Call route features **Other categories:** - `PRODUCT_CATEGORY_SUBSCRIPTION_MEX_PARTNER`, `PRODUCT_CATEGORY_INTERNATIONAL_NUMBER` A caller must tolerate new values.
        - `description` (`string`, optional, example Bundled cell subscriptions with unlimited calls and SMS with ILD enabled.) — Description of the product group in the requested locale.
        - `internalDescription` (`string`, optional, example Core mobile offerings targeting consumer and business segments) — Internal description of the product group for operational use only.
        - `name` (`string`, required, example Mobile Plans) — Name of the product group in the requested locale.
        - `productOfferingGroupId` (`string`, required, example mobile-plans) — Unique identifier for the product group.
      - `imageUrl` (`string`, optional, uri, example https://cdn.example.com/images/mobile-basic.png) — URL to the image representing the product offering.
      - `name` (`string`, required, example Mobile Unlimited) — The customer-facing name of the product offering, suitable for display in checkout and account views.
      - `price` (`object`, required) — The cost of a product offering, as configured in the catalog. A price is either one-time or recurring, and the priceType field tells you which. Amounts are integers in the minor units of the currency. For example, 2999 is $29.99 when the currency is USD.
        - `billingCycle` (`object`, optional) — How often a recurring price is charged.
          - `interval` (`integer`, required, example 1) — The quantity of periods between charges. For example, a MONTHLY period with an interval of 1 bills each month, and an interval of 3 bills each three months.
          - `period` (`enum<string>`, required, one of MONTHLY) — The unit of time between charges. Currently only monthly billing is supported.
        - `bindingContract` (`object`, optional) — A commitment to keep the subscription for a fixed term, usually in exchange for a discount that runs for the length of the commitment.
          - `discount` (`object`, optional) — A recurring amount that comes off the price when you price the order. The amount applies to one billing period, the same as the price, and it is not a total. For example, a discount of 500 for 3 periods takes 500 off each of the first three periods, and 1500 in all.
            - `amountMinor` (`integer`, required, int64, example 500) — The amount that comes off each billing period, in minor currency units.
            - `duration` (`object`, optional) — How long the discount lasts. An `UPFRONT_PAYMENT` discount always gives a duration, and it covers the billing cycles that the customer pays for in advance. The other two sources omit the duration when the discount never stops. The discount then comes off every charge for as long as the price is in effect. For a one-time price that is the single charge. — A length of time, expressed as a count of some unit.
              - `unit` (`enum<string>`, required, one of MONTHS) — The unit of time being counted. Currently only months are supported.
              - `value` (`integer`, required, example 3) — How many of the unit the duration lasts.
            - `invoicingDescription` (`string`, optional, example Campaign discount) — What the brand calls this discount on an invoice. Omitted when the brand gave the discount no name of its own.
            - `source` (`enum<string>`, optional, one of STANDARD, BINDING_CONTRACT, UPFRONT_PAYMENT, example STANDARD) — What the customer must do to get the discount: - `STANDARD` is given to every customer who orders the offering. - `BINDING_CONTRACT` needs the customer to commit for the contract's length. - `UPFRONT_PAYMENT` needs the customer to pay for several billing periods at once.
          - `duration` (`object`, required) — A length of time, expressed as a count of some unit.
            - `unit` (`enum<string>`, required, one of MONTHS) — The unit of time being counted. Currently only months are supported.
            - `value` (`integer`, required, example 3) — How many of the unit the duration lasts.
        - `currency` (`string`, required, example USD) — The ISO 4217 currency code the price is expressed in (e.g., "USD").
        - `currencyOptionsMinor` (`object with string keys`, optional) — Per-currency price overrides keyed by three-letter ISO currency code (e.g. "USD", "SEK"). Each value is the cost in that currency, in minor currency units.
          - `*` (`integer`, optional, int64)
        - `customUpfrontPayment` (`object`, optional) — Billing cycles the customer pays for in advance when ordering, usually at a discount. Billing returns to the normal cycle once the prepaid cycles run out.
          - `billingCycles` (`integer`, required, example 3) — How many billing cycles are paid for upfront. This counts cycles, not months: three cycles of a price that bills quarterly covers nine months.
          - `discount` (`object`, optional) — A recurring amount that comes off the price when you price the order. The amount applies to one billing period, the same as the price, and it is not a total. For example, a discount of 500 for 3 periods takes 500 off each of the first three periods, and 1500 in all.
            - `amountMinor` (`integer`, required, int64, example 500) — The amount that comes off each billing period, in minor currency units.
            - `duration` (`object`, optional) — How long the discount lasts. An `UPFRONT_PAYMENT` discount always gives a duration, and it covers the billing cycles that the customer pays for in advance. The other two sources omit the duration when the discount never stops. The discount then comes off every charge for as long as the price is in effect. For a one-time price that is the single charge. — A length of time, expressed as a count of some unit.
              - `unit` (`enum<string>`, required, one of MONTHS) — The unit of time being counted. Currently only months are supported.
              - `value` (`integer`, required, example 3) — How many of the unit the duration lasts.
            - `invoicingDescription` (`string`, optional, example Campaign discount) — What the brand calls this discount on an invoice. Omitted when the brand gave the discount no name of its own.
            - `source` (`enum<string>`, optional, one of STANDARD, BINDING_CONTRACT, UPFRONT_PAYMENT, example STANDARD) — What the customer must do to get the discount: - `STANDARD` is given to every customer who orders the offering. - `BINDING_CONTRACT` needs the customer to commit for the contract's length. - `UPFRONT_PAYMENT` needs the customer to pay for several billing periods at once.
        - `includesTax` (`boolean`, optional, example false) — True when the configured price includes its tax. The tax is then a part of `netPriceMinor` rather than an amount on top of it.
        - `netPriceMinor` (`integer`, optional, int64, example 2999) — The configured price of the offering, in minor currency units. When `includesTax` is true, this amount is the total the customer pays, and the tax is a part of it.
        - `priceType` (`enum<string>`, required, one of ONE_TIME, RECURRING) — How the price is charged. - ONE_TIME: Charged once (e.g., a setup fee or hardware purchase). - RECURRING: Charged every billing cycle (e.g., a monthly subscription fee).
        - `standardDiscount` (`object`, optional) — A recurring amount that comes off the price when you price the order. The amount applies to one billing period, the same as the price, and it is not a total. For example, a discount of 500 for 3 periods takes 500 off each of the first three periods, and 1500 in all.
          - `amountMinor` (`integer`, required, int64, example 500) — The amount that comes off each billing period, in minor currency units.
          - `duration` (`object`, optional) — How long the discount lasts. An `UPFRONT_PAYMENT` discount always gives a duration, and it covers the billing cycles that the customer pays for in advance. The other two sources omit the duration when the discount never stops. The discount then comes off every charge for as long as the price is in effect. For a one-time price that is the single charge. — A length of time, expressed as a count of some unit.
            - `unit` (`enum<string>`, required, one of MONTHS) — The unit of time being counted. Currently only months are supported.
            - `value` (`integer`, required, example 3) — How many of the unit the duration lasts.
          - `invoicingDescription` (`string`, optional, example Campaign discount) — What the brand calls this discount on an invoice. Omitted when the brand gave the discount no name of its own.
          - `source` (`enum<string>`, optional, one of STANDARD, BINDING_CONTRACT, UPFRONT_PAYMENT, example STANDARD) — What the customer must do to get the discount: - `STANDARD` is given to every customer who orders the offering. - `BINDING_CONTRACT` needs the customer to commit for the contract's length. - `UPFRONT_PAYMENT` needs the customer to pay for several billing periods at once.
      - `productOfferingId` (`string`, required, example f47ac10b-58cc-4372-a567-0e02b2c3d479) — The unique identifier for the product offering. Use it with the product offering endpoints to fetch full details.
    - `status` (`enum<string>`, required, one of PENDING, ACTIVE, PAUSED, CANCELLED, BLOCKED) — Current stage of the license lifecycle. - PENDING: Created but not yet activated - ACTIVE: Active and billable; the licensed feature is available - PAUSED: Temporarily stopped; the licensed feature is disabled - CANCELLED: Permanently terminated - BLOCKED: Disabled by the operator, typically for policy or payment reasons
    - `type` (`string`, optional, example PBX_USER_LEVEL) — The kind of feature the license unlocks. Most types cover business telephony (PBX) features, such as `PBX_USER_LEVEL` (a PBX seat for one user), `PBX_SOFTPHONE` (softphone client), `PBX_ROUTE_IVR`, `PBX_ROUTE_GROUP`, `PBX_ROUTE_QUEUE`, and `PBX_ROUTE_VOICEMAIL` (call routing features), plus `EXTERNAL_PRODUCT` for licenses tied to products outside the telecom platform.
  - `metadata` (`object with string keys`, optional) — A set of key-value pairs that can be attached to an object for storing additional information in a semi-structured format. Provided by API clients and returned as-is; the platform does not interpret the values.
    - `*` (`string`, optional)
  - `pendingProductOffering` (`object`, optional) — A product offering change (upgrade or downgrade) that has been requested for this add-on but not yet applied. Present only while a change is scheduled; the current offering remains in `productOffering` until the scheduled date.
    - `productOffering` (`object`, optional) — Essential information about a product offering — what is being sold and at what price — without the full catalog details.
      - `group` (`object`, optional) — A product group organizes related product offerings.
        - `category` (`enum<string>`, required, one of PRODUCT_CATEGORY_SUBSCRIPTION_CELL, PRODUCT_CATEGORY_SUBSCRIPTION_DATA_SIM, PRODUCT_CATEGORY_SUBSCRIPTION_BROADBAND, PRODUCT_CATEGORY_SUBSCRIPTION_M2M, PRODUCT_CATEGORY_TRAVEL_ESIM, PRODUCT_CATEGORY_SUBSCRIPTION_CELL_FIXED, PRODUCT_CATEGORY_VANITY_NUMBER_FORWARD, PRODUCT_CATEGORY_VANITY_NUMBER_CELL, PRODUCT_CATEGORY_EXTRA_DATA, PRODUCT_CATEGORY_TRAVEL_ESIM_PACKAGE, PRODUCT_CATEGORY_ABROAD, PRODUCT_CATEGORY_ABROAD_EXTRA_DATA, PRODUCT_CATEGORY_DATA_PACKAGE_OUTSIDE_EU, PRODUCT_CATEGORY_NETWORK_EXTENSIONS, PRODUCT_CATEGORY_VANITY_NUMBER, PRODUCT_CATEGORY_EXTERNAL_PRODUCT, PRODUCT_CATEGORY_EXTERNAL_PRODUCT_ADDON, PRODUCT_CATEGORY_SIM_CARD, PRODUCT_CATEGORY_PBX_USER_LEVEL, PRODUCT_CATEGORY_PBX_NUMBER, PRODUCT_CATEGORY_PBX_MOBILE_NUMBER, PRODUCT_CATEGORY_PBX_LANDLINE_FORWARD, PRODUCT_CATEGORY_PBX_SOFTPHONE, PRODUCT_CATEGORY_PBX_STATISTICS, PRODUCT_CATEGORY_PBX_CALL_RECORDING, PRODUCT_CATEGORY_PBX_VOICEMAIL, PRODUCT_CATEGORY_PBX_QUEUE_MAX_WAITING_CALLERS, PRODUCT_CATEGORY_PBX_ROUTE_IVR, PRODUCT_CATEGORY_PBX_ROUTE_GROUP, PRODUCT_CATEGORY_PBX_ROUTE_QUEUE, PRODUCT_CATEGORY_PBX_ROUTE_FEATURE_IVR, PRODUCT_CATEGORY_PBX_ROUTE_FEATURE_GROUP, PRODUCT_CATEGORY_PBX_ROUTE_FEATURE_QUEUE, PRODUCT_CATEGORY_PBX_ROUTE_FEATURE_VOICEMAIL, PRODUCT_CATEGORY_SUBSCRIPTION_MEX_PARTNER, PRODUCT_CATEGORY_INTERNATIONAL_NUMBER, example PRODUCT_CATEGORY_SUBSCRIPTION_CELL) — A product category is a sub-type for grouping offerings of the same type. Typically, product offerings of the same type with the same category allow for switching between them. For upgrading and downgrading subscriptions and licenses, we recommend using their corresponding endpoints though. Categories are grouped by their product type: **SUBSCRIPTION categories:** - `PRODUCT_CATEGORY_SUBSCRIPTION_CELL` - Mobile cellular subscription - `PRODUCT_CATEGORY_SUBSCRIPTION_CELL_FIXED` - Cellular subscription at a fixed location - `PRODUCT_CATEGORY_SUBSCRIPTION_DATA_SIM` - Data-only SIM subscription - `PRODUCT_CATEGORY_SUBSCRIPTION_BROADBAND` - Broadband internet subscription - `PRODUCT_CATEGORY_SUBSCRIPTION_M2M` - Machine-to-machine IoT subscription - `PRODUCT_CATEGORY_TRAVEL_ESIM` - Travel eSIM subscription for international roaming - `PRODUCT_CATEGORY_VANITY_NUMBER_FORWARD` - Vanity number that forwards calls - `PRODUCT_CATEGORY_VANITY_NUMBER_CELL` - Vanity number on a cellular subscription **SUBSCRIPTION_ADDON categories:** - `PRODUCT_CATEGORY_EXTRA_DATA` - Additional data package addon - `PRODUCT_CATEGORY_TRAVEL_ESIM_PACKAGE` - Travel eSIM data package with country/region coverage - `PRODUCT_CATEGORY_ABROAD` - International roaming addon - `PRODUCT_CATEGORY_ABROAD_EXTRA_DATA` - Additional data package for roaming - `PRODUCT_CATEGORY_DATA_PACKAGE_OUTSIDE_EU` - Data package for use outside the EU - `PRODUCT_CATEGORY_NETWORK_EXTENSIONS` - Network feature addon - `PRODUCT_CATEGORY_VANITY_NUMBER` - Vanity number addon **EXTERNAL_PRODUCT categories:** - `PRODUCT_CATEGORY_EXTERNAL_PRODUCT` - External purchasable product - `PRODUCT_CATEGORY_EXTERNAL_PRODUCT_ADDON` - Addon for external product **SIM_CARD categories:** - `PRODUCT_CATEGORY_SIM_CARD` - Physical SIM or eSIM replacement for an existing subscription **LICENSE categories (PBX):** - `PRODUCT_CATEGORY_PBX_USER_LEVEL` - Level of a PBX user license - `PRODUCT_CATEGORY_PBX_NUMBER` - PBX phone number - `PRODUCT_CATEGORY_PBX_MOBILE_NUMBER` - PBX mobile number - `PRODUCT_CATEGORY_PBX_LANDLINE_FORWARD` - Forward from a landline number - `PRODUCT_CATEGORY_PBX_SOFTPHONE` - Softphone - `PRODUCT_CATEGORY_PBX_STATISTICS` - Call statistics - `PRODUCT_CATEGORY_PBX_CALL_RECORDING` - Call recording - `PRODUCT_CATEGORY_PBX_VOICEMAIL` - Voicemail - `PRODUCT_CATEGORY_PBX_QUEUE_MAX_WAITING_CALLERS` - Queue capacity - `PRODUCT_CATEGORY_PBX_ROUTE_IVR`, `PRODUCT_CATEGORY_PBX_ROUTE_GROUP`, `PRODUCT_CATEGORY_PBX_ROUTE_QUEUE` - Call routes - `PRODUCT_CATEGORY_PBX_ROUTE_FEATURE_IVR`, `PRODUCT_CATEGORY_PBX_ROUTE_FEATURE_GROUP`, `PRODUCT_CATEGORY_PBX_ROUTE_FEATURE_QUEUE`, `PRODUCT_CATEGORY_PBX_ROUTE_FEATURE_VOICEMAIL` - Call route features **Other categories:** - `PRODUCT_CATEGORY_SUBSCRIPTION_MEX_PARTNER`, `PRODUCT_CATEGORY_INTERNATIONAL_NUMBER` A caller must tolerate new values.
        - `description` (`string`, optional, example Bundled cell subscriptions with unlimited calls and SMS with ILD enabled.) — Description of the product group in the requested locale.
        - `internalDescription` (`string`, optional, example Core mobile offerings targeting consumer and business segments) — Internal description of the product group for operational use only.
        - `name` (`string`, required, example Mobile Plans) — Name of the product group in the requested locale.
        - `productOfferingGroupId` (`string`, required, example mobile-plans) — Unique identifier for the product group.
      - `imageUrl` (`string`, optional, uri, example https://cdn.example.com/images/mobile-basic.png) — URL to the image representing the product offering.
      - `name` (`string`, required, example Mobile Unlimited) — The customer-facing name of the product offering, suitable for display in checkout and account views.
      - `price` (`object`, required) — The cost of a product offering, as configured in the catalog. A price is either one-time or recurring, and the priceType field tells you which. Amounts are integers in the minor units of the currency. For example, 2999 is $29.99 when the currency is USD.
        - `billingCycle` (`object`, optional) — How often a recurring price is charged.
          - `interval` (`integer`, required, example 1) — The quantity of periods between charges. For example, a MONTHLY period with an interval of 1 bills each month, and an interval of 3 bills each three months.
          - `period` (`enum<string>`, required, one of MONTHLY) — The unit of time between charges. Currently only monthly billing is supported.
        - `bindingContract` (`object`, optional) — A commitment to keep the subscription for a fixed term, usually in exchange for a discount that runs for the length of the commitment.
          - `discount` (`object`, optional) — A recurring amount that comes off the price when you price the order. The amount applies to one billing period, the same as the price, and it is not a total. For example, a discount of 500 for 3 periods takes 500 off each of the first three periods, and 1500 in all.
            - `amountMinor` (`integer`, required, int64, example 500) — The amount that comes off each billing period, in minor currency units.
            - `duration` (`object`, optional) — How long the discount lasts. An `UPFRONT_PAYMENT` discount always gives a duration, and it covers the billing cycles that the customer pays for in advance. The other two sources omit the duration when the discount never stops. The discount then comes off every charge for as long as the price is in effect. For a one-time price that is the single charge. — A length of time, expressed as a count of some unit.
              - `unit` (`enum<string>`, required, one of MONTHS) — The unit of time being counted. Currently only months are supported.
              - `value` (`integer`, required, example 3) — How many of the unit the duration lasts.
            - `invoicingDescription` (`string`, optional, example Campaign discount) — What the brand calls this discount on an invoice. Omitted when the brand gave the discount no name of its own.
            - `source` (`enum<string>`, optional, one of STANDARD, BINDING_CONTRACT, UPFRONT_PAYMENT, example STANDARD) — What the customer must do to get the discount: - `STANDARD` is given to every customer who orders the offering. - `BINDING_CONTRACT` needs the customer to commit for the contract's length. - `UPFRONT_PAYMENT` needs the customer to pay for several billing periods at once.
          - `duration` (`object`, required) — A length of time, expressed as a count of some unit.
            - `unit` (`enum<string>`, required, one of MONTHS) — The unit of time being counted. Currently only months are supported.
            - `value` (`integer`, required, example 3) — How many of the unit the duration lasts.
        - `currency` (`string`, required, example USD) — The ISO 4217 currency code the price is expressed in (e.g., "USD").
        - `currencyOptionsMinor` (`object with string keys`, optional) — Per-currency price overrides keyed by three-letter ISO currency code (e.g. "USD", "SEK"). Each value is the cost in that currency, in minor currency units.
          - `*` (`integer`, optional, int64)
        - `customUpfrontPayment` (`object`, optional) — Billing cycles the customer pays for in advance when ordering, usually at a discount. Billing returns to the normal cycle once the prepaid cycles run out.
          - `billingCycles` (`integer`, required, example 3) — How many billing cycles are paid for upfront. This counts cycles, not months: three cycles of a price that bills quarterly covers nine months.
          - `discount` (`object`, optional) — A recurring amount that comes off the price when you price the order. The amount applies to one billing period, the same as the price, and it is not a total. For example, a discount of 500 for 3 periods takes 500 off each of the first three periods, and 1500 in all.
            - `amountMinor` (`integer`, required, int64, example 500) — The amount that comes off each billing period, in minor currency units.
            - `duration` (`object`, optional) — How long the discount lasts. An `UPFRONT_PAYMENT` discount always gives a duration, and it covers the billing cycles that the customer pays for in advance. The other two sources omit the duration when the discount never stops. The discount then comes off every charge for as long as the price is in effect. For a one-time price that is the single charge. — A length of time, expressed as a count of some unit.
              - `unit` (`enum<string>`, required, one of MONTHS) — The unit of time being counted. Currently only months are supported.
              - `value` (`integer`, required, example 3) — How many of the unit the duration lasts.
            - `invoicingDescription` (`string`, optional, example Campaign discount) — What the brand calls this discount on an invoice. Omitted when the brand gave the discount no name of its own.
            - `source` (`enum<string>`, optional, one of STANDARD, BINDING_CONTRACT, UPFRONT_PAYMENT, example STANDARD) — What the customer must do to get the discount: - `STANDARD` is given to every customer who orders the offering. - `BINDING_CONTRACT` needs the customer to commit for the contract's length. - `UPFRONT_PAYMENT` needs the customer to pay for several billing periods at once.
        - `includesTax` (`boolean`, optional, example false) — True when the configured price includes its tax. The tax is then a part of `netPriceMinor` rather than an amount on top of it.
        - `netPriceMinor` (`integer`, optional, int64, example 2999) — The configured price of the offering, in minor currency units. When `includesTax` is true, this amount is the total the customer pays, and the tax is a part of it.
        - `priceType` (`enum<string>`, required, one of ONE_TIME, RECURRING) — How the price is charged. - ONE_TIME: Charged once (e.g., a setup fee or hardware purchase). - RECURRING: Charged every billing cycle (e.g., a monthly subscription fee).
        - `standardDiscount` (`object`, optional) — A recurring amount that comes off the price when you price the order. The amount applies to one billing period, the same as the price, and it is not a total. For example, a discount of 500 for 3 periods takes 500 off each of the first three periods, and 1500 in all.
          - `amountMinor` (`integer`, required, int64, example 500) — The amount that comes off each billing period, in minor currency units.
          - `duration` (`object`, optional) — How long the discount lasts. An `UPFRONT_PAYMENT` discount always gives a duration, and it covers the billing cycles that the customer pays for in advance. The other two sources omit the duration when the discount never stops. The discount then comes off every charge for as long as the price is in effect. For a one-time price that is the single charge. — A length of time, expressed as a count of some unit.
            - `unit` (`enum<string>`, required, one of MONTHS) — The unit of time being counted. Currently only months are supported.
            - `value` (`integer`, required, example 3) — How many of the unit the duration lasts.
          - `invoicingDescription` (`string`, optional, example Campaign discount) — What the brand calls this discount on an invoice. Omitted when the brand gave the discount no name of its own.
          - `source` (`enum<string>`, optional, one of STANDARD, BINDING_CONTRACT, UPFRONT_PAYMENT, example STANDARD) — What the customer must do to get the discount: - `STANDARD` is given to every customer who orders the offering. - `BINDING_CONTRACT` needs the customer to commit for the contract's length. - `UPFRONT_PAYMENT` needs the customer to pay for several billing periods at once.
      - `productOfferingId` (`string`, required, example f47ac10b-58cc-4372-a567-0e02b2c3d479) — The unique identifier for the product offering. Use it with the product offering endpoints to fetch full details.
    - `scheduledAt` (`string`, optional, date, example 2024-02-01) — The date when the pending product offering change is scheduled to occur.
  - `pendingStatus` (`object`, optional) — A status change that has been requested but not yet applied, for example a scheduled cancellation. Present only while a status change is scheduled.
    - `scheduledAt` (`string`, optional, date, example 2024-02-01) — The date when the pending status change is scheduled to occur.
    - `status` (`enum<string>`, optional, one of PENDING, ACTIVE, CANCELLED, EXPIRED) — The status of an add-on on a subscription. - PENDING: Add-on is scheduled but not yet active - ACTIVE: Add-on is currently active and billable - CANCELLED: Add-on has been cancelled and is no longer active - EXPIRED: Add-on has expired and is no longer active
  - `productOffering` (`object`, optional) — Essential information about a product offering — what is being sold and at what price — without the full catalog details.
    - `group` (`object`, optional) — A product group organizes related product offerings.
      - `category` (`enum<string>`, required, one of PRODUCT_CATEGORY_SUBSCRIPTION_CELL, PRODUCT_CATEGORY_SUBSCRIPTION_DATA_SIM, PRODUCT_CATEGORY_SUBSCRIPTION_BROADBAND, PRODUCT_CATEGORY_SUBSCRIPTION_M2M, PRODUCT_CATEGORY_TRAVEL_ESIM, PRODUCT_CATEGORY_SUBSCRIPTION_CELL_FIXED, PRODUCT_CATEGORY_VANITY_NUMBER_FORWARD, PRODUCT_CATEGORY_VANITY_NUMBER_CELL, PRODUCT_CATEGORY_EXTRA_DATA, PRODUCT_CATEGORY_TRAVEL_ESIM_PACKAGE, PRODUCT_CATEGORY_ABROAD, PRODUCT_CATEGORY_ABROAD_EXTRA_DATA, PRODUCT_CATEGORY_DATA_PACKAGE_OUTSIDE_EU, PRODUCT_CATEGORY_NETWORK_EXTENSIONS, PRODUCT_CATEGORY_VANITY_NUMBER, PRODUCT_CATEGORY_EXTERNAL_PRODUCT, PRODUCT_CATEGORY_EXTERNAL_PRODUCT_ADDON, PRODUCT_CATEGORY_SIM_CARD, PRODUCT_CATEGORY_PBX_USER_LEVEL, PRODUCT_CATEGORY_PBX_NUMBER, PRODUCT_CATEGORY_PBX_MOBILE_NUMBER, PRODUCT_CATEGORY_PBX_LANDLINE_FORWARD, PRODUCT_CATEGORY_PBX_SOFTPHONE, PRODUCT_CATEGORY_PBX_STATISTICS, PRODUCT_CATEGORY_PBX_CALL_RECORDING, PRODUCT_CATEGORY_PBX_VOICEMAIL, PRODUCT_CATEGORY_PBX_QUEUE_MAX_WAITING_CALLERS, PRODUCT_CATEGORY_PBX_ROUTE_IVR, PRODUCT_CATEGORY_PBX_ROUTE_GROUP, PRODUCT_CATEGORY_PBX_ROUTE_QUEUE, PRODUCT_CATEGORY_PBX_ROUTE_FEATURE_IVR, PRODUCT_CATEGORY_PBX_ROUTE_FEATURE_GROUP, PRODUCT_CATEGORY_PBX_ROUTE_FEATURE_QUEUE, PRODUCT_CATEGORY_PBX_ROUTE_FEATURE_VOICEMAIL, PRODUCT_CATEGORY_SUBSCRIPTION_MEX_PARTNER, PRODUCT_CATEGORY_INTERNATIONAL_NUMBER, example PRODUCT_CATEGORY_SUBSCRIPTION_CELL) — A product category is a sub-type for grouping offerings of the same type. Typically, product offerings of the same type with the same category allow for switching between them. For upgrading and downgrading subscriptions and licenses, we recommend using their corresponding endpoints though. Categories are grouped by their product type: **SUBSCRIPTION categories:** - `PRODUCT_CATEGORY_SUBSCRIPTION_CELL` - Mobile cellular subscription - `PRODUCT_CATEGORY_SUBSCRIPTION_CELL_FIXED` - Cellular subscription at a fixed location - `PRODUCT_CATEGORY_SUBSCRIPTION_DATA_SIM` - Data-only SIM subscription - `PRODUCT_CATEGORY_SUBSCRIPTION_BROADBAND` - Broadband internet subscription - `PRODUCT_CATEGORY_SUBSCRIPTION_M2M` - Machine-to-machine IoT subscription - `PRODUCT_CATEGORY_TRAVEL_ESIM` - Travel eSIM subscription for international roaming - `PRODUCT_CATEGORY_VANITY_NUMBER_FORWARD` - Vanity number that forwards calls - `PRODUCT_CATEGORY_VANITY_NUMBER_CELL` - Vanity number on a cellular subscription **SUBSCRIPTION_ADDON categories:** - `PRODUCT_CATEGORY_EXTRA_DATA` - Additional data package addon - `PRODUCT_CATEGORY_TRAVEL_ESIM_PACKAGE` - Travel eSIM data package with country/region coverage - `PRODUCT_CATEGORY_ABROAD` - International roaming addon - `PRODUCT_CATEGORY_ABROAD_EXTRA_DATA` - Additional data package for roaming - `PRODUCT_CATEGORY_DATA_PACKAGE_OUTSIDE_EU` - Data package for use outside the EU - `PRODUCT_CATEGORY_NETWORK_EXTENSIONS` - Network feature addon - `PRODUCT_CATEGORY_VANITY_NUMBER` - Vanity number addon **EXTERNAL_PRODUCT categories:** - `PRODUCT_CATEGORY_EXTERNAL_PRODUCT` - External purchasable product - `PRODUCT_CATEGORY_EXTERNAL_PRODUCT_ADDON` - Addon for external product **SIM_CARD categories:** - `PRODUCT_CATEGORY_SIM_CARD` - Physical SIM or eSIM replacement for an existing subscription **LICENSE categories (PBX):** - `PRODUCT_CATEGORY_PBX_USER_LEVEL` - Level of a PBX user license - `PRODUCT_CATEGORY_PBX_NUMBER` - PBX phone number - `PRODUCT_CATEGORY_PBX_MOBILE_NUMBER` - PBX mobile number - `PRODUCT_CATEGORY_PBX_LANDLINE_FORWARD` - Forward from a landline number - `PRODUCT_CATEGORY_PBX_SOFTPHONE` - Softphone - `PRODUCT_CATEGORY_PBX_STATISTICS` - Call statistics - `PRODUCT_CATEGORY_PBX_CALL_RECORDING` - Call recording - `PRODUCT_CATEGORY_PBX_VOICEMAIL` - Voicemail - `PRODUCT_CATEGORY_PBX_QUEUE_MAX_WAITING_CALLERS` - Queue capacity - `PRODUCT_CATEGORY_PBX_ROUTE_IVR`, `PRODUCT_CATEGORY_PBX_ROUTE_GROUP`, `PRODUCT_CATEGORY_PBX_ROUTE_QUEUE` - Call routes - `PRODUCT_CATEGORY_PBX_ROUTE_FEATURE_IVR`, `PRODUCT_CATEGORY_PBX_ROUTE_FEATURE_GROUP`, `PRODUCT_CATEGORY_PBX_ROUTE_FEATURE_QUEUE`, `PRODUCT_CATEGORY_PBX_ROUTE_FEATURE_VOICEMAIL` - Call route features **Other categories:** - `PRODUCT_CATEGORY_SUBSCRIPTION_MEX_PARTNER`, `PRODUCT_CATEGORY_INTERNATIONAL_NUMBER` A caller must tolerate new values.
      - `description` (`string`, optional, example Bundled cell subscriptions with unlimited calls and SMS with ILD enabled.) — Description of the product group in the requested locale.
      - `internalDescription` (`string`, optional, example Core mobile offerings targeting consumer and business segments) — Internal description of the product group for operational use only.
      - `name` (`string`, required, example Mobile Plans) — Name of the product group in the requested locale.
      - `productOfferingGroupId` (`string`, required, example mobile-plans) — Unique identifier for the product group.
    - `imageUrl` (`string`, optional, uri, example https://cdn.example.com/images/mobile-basic.png) — URL to the image representing the product offering.
    - `name` (`string`, required, example Mobile Unlimited) — The customer-facing name of the product offering, suitable for display in checkout and account views.
    - `price` (`object`, required) — The cost of a product offering, as configured in the catalog. A price is either one-time or recurring, and the priceType field tells you which. Amounts are integers in the minor units of the currency. For example, 2999 is $29.99 when the currency is USD.
      - `billingCycle` (`object`, optional) — How often a recurring price is charged.
        - `interval` (`integer`, required, example 1) — The quantity of periods between charges. For example, a MONTHLY period with an interval of 1 bills each month, and an interval of 3 bills each three months.
        - `period` (`enum<string>`, required, one of MONTHLY) — The unit of time between charges. Currently only monthly billing is supported.
      - `bindingContract` (`object`, optional) — A commitment to keep the subscription for a fixed term, usually in exchange for a discount that runs for the length of the commitment.
        - `discount` (`object`, optional) — A recurring amount that comes off the price when you price the order. The amount applies to one billing period, the same as the price, and it is not a total. For example, a discount of 500 for 3 periods takes 500 off each of the first three periods, and 1500 in all.
          - `amountMinor` (`integer`, required, int64, example 500) — The amount that comes off each billing period, in minor currency units.
          - `duration` (`object`, optional) — How long the discount lasts. An `UPFRONT_PAYMENT` discount always gives a duration, and it covers the billing cycles that the customer pays for in advance. The other two sources omit the duration when the discount never stops. The discount then comes off every charge for as long as the price is in effect. For a one-time price that is the single charge. — A length of time, expressed as a count of some unit.
            - `unit` (`enum<string>`, required, one of MONTHS) — The unit of time being counted. Currently only months are supported.
            - `value` (`integer`, required, example 3) — How many of the unit the duration lasts.
          - `invoicingDescription` (`string`, optional, example Campaign discount) — What the brand calls this discount on an invoice. Omitted when the brand gave the discount no name of its own.
          - `source` (`enum<string>`, optional, one of STANDARD, BINDING_CONTRACT, UPFRONT_PAYMENT, example STANDARD) — What the customer must do to get the discount: - `STANDARD` is given to every customer who orders the offering. - `BINDING_CONTRACT` needs the customer to commit for the contract's length. - `UPFRONT_PAYMENT` needs the customer to pay for several billing periods at once.
        - `duration` (`object`, required) — A length of time, expressed as a count of some unit.
          - `unit` (`enum<string>`, required, one of MONTHS) — The unit of time being counted. Currently only months are supported.
          - `value` (`integer`, required, example 3) — How many of the unit the duration lasts.
      - `currency` (`string`, required, example USD) — The ISO 4217 currency code the price is expressed in (e.g., "USD").
      - `currencyOptionsMinor` (`object with string keys`, optional) — Per-currency price overrides keyed by three-letter ISO currency code (e.g. "USD", "SEK"). Each value is the cost in that currency, in minor currency units.
        - `*` (`integer`, optional, int64)
      - `customUpfrontPayment` (`object`, optional) — Billing cycles the customer pays for in advance when ordering, usually at a discount. Billing returns to the normal cycle once the prepaid cycles run out.
        - `billingCycles` (`integer`, required, example 3) — How many billing cycles are paid for upfront. This counts cycles, not months: three cycles of a price that bills quarterly covers nine months.
        - `discount` (`object`, optional) — A recurring amount that comes off the price when you price the order. The amount applies to one billing period, the same as the price, and it is not a total. For example, a discount of 500 for 3 periods takes 500 off each of the first three periods, and 1500 in all.
          - `amountMinor` (`integer`, required, int64, example 500) — The amount that comes off each billing period, in minor currency units.
          - `duration` (`object`, optional) — How long the discount lasts. An `UPFRONT_PAYMENT` discount always gives a duration, and it covers the billing cycles that the customer pays for in advance. The other two sources omit the duration when the discount never stops. The discount then comes off every charge for as long as the price is in effect. For a one-time price that is the single charge. — A length of time, expressed as a count of some unit.
            - `unit` (`enum<string>`, required, one of MONTHS) — The unit of time being counted. Currently only months are supported.
            - `value` (`integer`, required, example 3) — How many of the unit the duration lasts.
          - `invoicingDescription` (`string`, optional, example Campaign discount) — What the brand calls this discount on an invoice. Omitted when the brand gave the discount no name of its own.
          - `source` (`enum<string>`, optional, one of STANDARD, BINDING_CONTRACT, UPFRONT_PAYMENT, example STANDARD) — What the customer must do to get the discount: - `STANDARD` is given to every customer who orders the offering. - `BINDING_CONTRACT` needs the customer to commit for the contract's length. - `UPFRONT_PAYMENT` needs the customer to pay for several billing periods at once.
      - `includesTax` (`boolean`, optional, example false) — True when the configured price includes its tax. The tax is then a part of `netPriceMinor` rather than an amount on top of it.
      - `netPriceMinor` (`integer`, optional, int64, example 2999) — The configured price of the offering, in minor currency units. When `includesTax` is true, this amount is the total the customer pays, and the tax is a part of it.
      - `priceType` (`enum<string>`, required, one of ONE_TIME, RECURRING) — How the price is charged. - ONE_TIME: Charged once (e.g., a setup fee or hardware purchase). - RECURRING: Charged every billing cycle (e.g., a monthly subscription fee).
      - `standardDiscount` (`object`, optional) — A recurring amount that comes off the price when you price the order. The amount applies to one billing period, the same as the price, and it is not a total. For example, a discount of 500 for 3 periods takes 500 off each of the first three periods, and 1500 in all.
        - `amountMinor` (`integer`, required, int64, example 500) — The amount that comes off each billing period, in minor currency units.
        - `duration` (`object`, optional) — How long the discount lasts. An `UPFRONT_PAYMENT` discount always gives a duration, and it covers the billing cycles that the customer pays for in advance. The other two sources omit the duration when the discount never stops. The discount then comes off every charge for as long as the price is in effect. For a one-time price that is the single charge. — A length of time, expressed as a count of some unit.
          - `unit` (`enum<string>`, required, one of MONTHS) — The unit of time being counted. Currently only months are supported.
          - `value` (`integer`, required, example 3) — How many of the unit the duration lasts.
        - `invoicingDescription` (`string`, optional, example Campaign discount) — What the brand calls this discount on an invoice. Omitted when the brand gave the discount no name of its own.
        - `source` (`enum<string>`, optional, one of STANDARD, BINDING_CONTRACT, UPFRONT_PAYMENT, example STANDARD) — What the customer must do to get the discount: - `STANDARD` is given to every customer who orders the offering. - `BINDING_CONTRACT` needs the customer to commit for the contract's length. - `UPFRONT_PAYMENT` needs the customer to pay for several billing periods at once.
    - `productOfferingId` (`string`, required, example f47ac10b-58cc-4372-a567-0e02b2c3d479) — The unique identifier for the product offering. Use it with the product offering endpoints to fetch full details.
  - `referenceId` (`string`, optional, max length 255, example telna-package-12345) — A reference identifier provided by API clients or upstream provider integrations to identify this subscription add-on in their own systems. Unique per tenant when set. Use this field to look up add-ons by your external identifier (for example a provider-side package ID). Typically populated by a workflow once the add-on has been provisioned with the underlying network provider.
  - `status` (`enum<string>`, required, one of PENDING, ACTIVE, CANCELLED, EXPIRED) — The status of an add-on on a subscription. - PENDING: Add-on is scheduled but not yet active - ACTIVE: Add-on is currently active and billable - CANCELLED: Add-on has been cancelled and is no longer active - EXPIRED: Add-on has expired and is no longer active
  - `subscriptionAddonId` (`string`, required, example a47ac10b-58cc-4372-a567-0e02b2c3d479) — The unique identifier of the subscription add-on.
  - `subscriptionId` (`string`, required, example d8174435-6378-4be5-a9f5-8b4aaadae5d4) — The unique identifier of the subscription this add-on belongs to.
  - `updatedAt` (`string`, optional, date-time, example 2024-01-20T09:00:00Z) — The date and time when the add-on was last updated.

#### 400

The request was malformed or invalid.

Type: [Error](/end-user-api/models.md#models/Error)

#### 401

Authentication is required to access this resource.

Type: [Error](/end-user-api/models.md#models/Error)

#### 403

Access to this resource is forbidden.

Type: [Error](/end-user-api/models.md#models/Error)

#### 404

The requested resource was not found.

Type: [Error](/end-user-api/models.md#models/Error)

#### 500

An unexpected error occurred on the server.

Type: [Error](/end-user-api/models.md#models/Error)

### Example request

```bash
curl https://apiv2.example.com/api/v2/end-user/subscriptions/SUBSCRIPTION_ID/addons \
  --header 'X-Api-Key: YOUR_API_KEY' \
  --header 'Authorization: Bearer YOUR_ACCESS_TOKEN'
```

## [GET /subscriptions/{subscriptionId}/addons/product-offering-options](/end-user-api/subscription-addons#tag/subscription-addons/GET/subscriptions/{subscriptionId}/addons/product-offering-options)

Get change options for subscription add-on

Get all available product offerings an existing add-on can be changed to and
when the change can take effect.

When the add-on can be changed typically depends on the network setup,
billing cycle, and current add-on product offering. As a rule of thumb (though not always),
upgrades and lateral moves are immediate, while downgrades take effect at the next
renewal date.

Authentication: X-Api-Key + Bearer JWT

### Path parameters

- `subscriptionId` (`string`, required) — The identifier of the subscription. May be the entity's internal UUID or an external reference identifier. Reference identifiers MUST be prefixed with `rid_` (e.g., `rid_crm-subscription-12345`) so the API can distinguish them from internal UUIDs. The prefix is stripped before lookup.

### Query parameters

- `currentProductOfferingId` (`string`, required) — The current add-on product offering to get change options for.

### Responses

#### 200

Available change options for the add-on.

Type: `object`

- `items` (`array of ProductOfferingOption`, required)
  - `changeSchedule` (`enum<string>`, required, one of INSTANT, FIRST_OF_NEXT_MONTH, NEXT_RENEWAL_DAY, NEXT_PAYMENT_DAY, END_OF_PAID_PERIOD, END_OF_BINDING_PERIOD) — The schedule type for when a product offering change can take effect. - INSTANT: The change takes effect at once - FIRST_OF_NEXT_MONTH: The change takes effect on the first day of the next calendar month - NEXT_RENEWAL_DAY: The change takes effect on the next renewal date - NEXT_PAYMENT_DAY: The change takes effect on the next payment day, when the days already paid for run out - END_OF_PAID_PERIOD: The change takes effect the day after the current paid period ends - END_OF_BINDING_PERIOD: The change takes effect the day after the binding period ends
  - `changeScheduleDate` (`string`, required, date, example 2024-02-01) — The date when the product offering change can take effect.
  - `productOffering` (`object`, required) — Essential information about a product offering — what is being sold and at what price — without the full catalog details.
    - `group` (`object`, optional) — A product group organizes related product offerings.
      - `category` (`enum<string>`, required, one of PRODUCT_CATEGORY_SUBSCRIPTION_CELL, PRODUCT_CATEGORY_SUBSCRIPTION_DATA_SIM, PRODUCT_CATEGORY_SUBSCRIPTION_BROADBAND, PRODUCT_CATEGORY_SUBSCRIPTION_M2M, PRODUCT_CATEGORY_TRAVEL_ESIM, PRODUCT_CATEGORY_SUBSCRIPTION_CELL_FIXED, PRODUCT_CATEGORY_VANITY_NUMBER_FORWARD, PRODUCT_CATEGORY_VANITY_NUMBER_CELL, PRODUCT_CATEGORY_EXTRA_DATA, PRODUCT_CATEGORY_TRAVEL_ESIM_PACKAGE, PRODUCT_CATEGORY_ABROAD, PRODUCT_CATEGORY_ABROAD_EXTRA_DATA, PRODUCT_CATEGORY_DATA_PACKAGE_OUTSIDE_EU, PRODUCT_CATEGORY_NETWORK_EXTENSIONS, PRODUCT_CATEGORY_VANITY_NUMBER, PRODUCT_CATEGORY_EXTERNAL_PRODUCT, PRODUCT_CATEGORY_EXTERNAL_PRODUCT_ADDON, PRODUCT_CATEGORY_SIM_CARD, PRODUCT_CATEGORY_PBX_USER_LEVEL, PRODUCT_CATEGORY_PBX_NUMBER, PRODUCT_CATEGORY_PBX_MOBILE_NUMBER, PRODUCT_CATEGORY_PBX_LANDLINE_FORWARD, PRODUCT_CATEGORY_PBX_SOFTPHONE, PRODUCT_CATEGORY_PBX_STATISTICS, PRODUCT_CATEGORY_PBX_CALL_RECORDING, PRODUCT_CATEGORY_PBX_VOICEMAIL, PRODUCT_CATEGORY_PBX_QUEUE_MAX_WAITING_CALLERS, PRODUCT_CATEGORY_PBX_ROUTE_IVR, PRODUCT_CATEGORY_PBX_ROUTE_GROUP, PRODUCT_CATEGORY_PBX_ROUTE_QUEUE, PRODUCT_CATEGORY_PBX_ROUTE_FEATURE_IVR, PRODUCT_CATEGORY_PBX_ROUTE_FEATURE_GROUP, PRODUCT_CATEGORY_PBX_ROUTE_FEATURE_QUEUE, PRODUCT_CATEGORY_PBX_ROUTE_FEATURE_VOICEMAIL, PRODUCT_CATEGORY_SUBSCRIPTION_MEX_PARTNER, PRODUCT_CATEGORY_INTERNATIONAL_NUMBER, example PRODUCT_CATEGORY_SUBSCRIPTION_CELL) — A product category is a sub-type for grouping offerings of the same type. Typically, product offerings of the same type with the same category allow for switching between them. For upgrading and downgrading subscriptions and licenses, we recommend using their corresponding endpoints though. Categories are grouped by their product type: **SUBSCRIPTION categories:** - `PRODUCT_CATEGORY_SUBSCRIPTION_CELL` - Mobile cellular subscription - `PRODUCT_CATEGORY_SUBSCRIPTION_CELL_FIXED` - Cellular subscription at a fixed location - `PRODUCT_CATEGORY_SUBSCRIPTION_DATA_SIM` - Data-only SIM subscription - `PRODUCT_CATEGORY_SUBSCRIPTION_BROADBAND` - Broadband internet subscription - `PRODUCT_CATEGORY_SUBSCRIPTION_M2M` - Machine-to-machine IoT subscription - `PRODUCT_CATEGORY_TRAVEL_ESIM` - Travel eSIM subscription for international roaming - `PRODUCT_CATEGORY_VANITY_NUMBER_FORWARD` - Vanity number that forwards calls - `PRODUCT_CATEGORY_VANITY_NUMBER_CELL` - Vanity number on a cellular subscription **SUBSCRIPTION_ADDON categories:** - `PRODUCT_CATEGORY_EXTRA_DATA` - Additional data package addon - `PRODUCT_CATEGORY_TRAVEL_ESIM_PACKAGE` - Travel eSIM data package with country/region coverage - `PRODUCT_CATEGORY_ABROAD` - International roaming addon - `PRODUCT_CATEGORY_ABROAD_EXTRA_DATA` - Additional data package for roaming - `PRODUCT_CATEGORY_DATA_PACKAGE_OUTSIDE_EU` - Data package for use outside the EU - `PRODUCT_CATEGORY_NETWORK_EXTENSIONS` - Network feature addon - `PRODUCT_CATEGORY_VANITY_NUMBER` - Vanity number addon **EXTERNAL_PRODUCT categories:** - `PRODUCT_CATEGORY_EXTERNAL_PRODUCT` - External purchasable product - `PRODUCT_CATEGORY_EXTERNAL_PRODUCT_ADDON` - Addon for external product **SIM_CARD categories:** - `PRODUCT_CATEGORY_SIM_CARD` - Physical SIM or eSIM replacement for an existing subscription **LICENSE categories (PBX):** - `PRODUCT_CATEGORY_PBX_USER_LEVEL` - Level of a PBX user license - `PRODUCT_CATEGORY_PBX_NUMBER` - PBX phone number - `PRODUCT_CATEGORY_PBX_MOBILE_NUMBER` - PBX mobile number - `PRODUCT_CATEGORY_PBX_LANDLINE_FORWARD` - Forward from a landline number - `PRODUCT_CATEGORY_PBX_SOFTPHONE` - Softphone - `PRODUCT_CATEGORY_PBX_STATISTICS` - Call statistics - `PRODUCT_CATEGORY_PBX_CALL_RECORDING` - Call recording - `PRODUCT_CATEGORY_PBX_VOICEMAIL` - Voicemail - `PRODUCT_CATEGORY_PBX_QUEUE_MAX_WAITING_CALLERS` - Queue capacity - `PRODUCT_CATEGORY_PBX_ROUTE_IVR`, `PRODUCT_CATEGORY_PBX_ROUTE_GROUP`, `PRODUCT_CATEGORY_PBX_ROUTE_QUEUE` - Call routes - `PRODUCT_CATEGORY_PBX_ROUTE_FEATURE_IVR`, `PRODUCT_CATEGORY_PBX_ROUTE_FEATURE_GROUP`, `PRODUCT_CATEGORY_PBX_ROUTE_FEATURE_QUEUE`, `PRODUCT_CATEGORY_PBX_ROUTE_FEATURE_VOICEMAIL` - Call route features **Other categories:** - `PRODUCT_CATEGORY_SUBSCRIPTION_MEX_PARTNER`, `PRODUCT_CATEGORY_INTERNATIONAL_NUMBER` A caller must tolerate new values.
      - `description` (`string`, optional, example Bundled cell subscriptions with unlimited calls and SMS with ILD enabled.) — Description of the product group in the requested locale.
      - `internalDescription` (`string`, optional, example Core mobile offerings targeting consumer and business segments) — Internal description of the product group for operational use only.
      - `name` (`string`, required, example Mobile Plans) — Name of the product group in the requested locale.
      - `productOfferingGroupId` (`string`, required, example mobile-plans) — Unique identifier for the product group.
    - `imageUrl` (`string`, optional, uri, example https://cdn.example.com/images/mobile-basic.png) — URL to the image representing the product offering.
    - `name` (`string`, required, example Mobile Unlimited) — The customer-facing name of the product offering, suitable for display in checkout and account views.
    - `price` (`object`, required) — The cost of a product offering, as configured in the catalog. A price is either one-time or recurring, and the priceType field tells you which. Amounts are integers in the minor units of the currency. For example, 2999 is $29.99 when the currency is USD.
      - `billingCycle` (`object`, optional) — How often a recurring price is charged.
        - `interval` (`integer`, required, example 1) — The quantity of periods between charges. For example, a MONTHLY period with an interval of 1 bills each month, and an interval of 3 bills each three months.
        - `period` (`enum<string>`, required, one of MONTHLY) — The unit of time between charges. Currently only monthly billing is supported.
      - `bindingContract` (`object`, optional) — A commitment to keep the subscription for a fixed term, usually in exchange for a discount that runs for the length of the commitment.
        - `discount` (`object`, optional) — A recurring amount that comes off the price when you price the order. The amount applies to one billing period, the same as the price, and it is not a total. For example, a discount of 500 for 3 periods takes 500 off each of the first three periods, and 1500 in all.
          - `amountMinor` (`integer`, required, int64, example 500) — The amount that comes off each billing period, in minor currency units.
          - `duration` (`object`, optional) — How long the discount lasts. An `UPFRONT_PAYMENT` discount always gives a duration, and it covers the billing cycles that the customer pays for in advance. The other two sources omit the duration when the discount never stops. The discount then comes off every charge for as long as the price is in effect. For a one-time price that is the single charge. — A length of time, expressed as a count of some unit.
            - `unit` (`enum<string>`, required, one of MONTHS) — The unit of time being counted. Currently only months are supported.
            - `value` (`integer`, required, example 3) — How many of the unit the duration lasts.
          - `invoicingDescription` (`string`, optional, example Campaign discount) — What the brand calls this discount on an invoice. Omitted when the brand gave the discount no name of its own.
          - `source` (`enum<string>`, optional, one of STANDARD, BINDING_CONTRACT, UPFRONT_PAYMENT, example STANDARD) — What the customer must do to get the discount: - `STANDARD` is given to every customer who orders the offering. - `BINDING_CONTRACT` needs the customer to commit for the contract's length. - `UPFRONT_PAYMENT` needs the customer to pay for several billing periods at once.
        - `duration` (`object`, required) — A length of time, expressed as a count of some unit.
          - `unit` (`enum<string>`, required, one of MONTHS) — The unit of time being counted. Currently only months are supported.
          - `value` (`integer`, required, example 3) — How many of the unit the duration lasts.
      - `currency` (`string`, required, example USD) — The ISO 4217 currency code the price is expressed in (e.g., "USD").
      - `currencyOptionsMinor` (`object with string keys`, optional) — Per-currency price overrides keyed by three-letter ISO currency code (e.g. "USD", "SEK"). Each value is the cost in that currency, in minor currency units.
        - `*` (`integer`, optional, int64)
      - `customUpfrontPayment` (`object`, optional) — Billing cycles the customer pays for in advance when ordering, usually at a discount. Billing returns to the normal cycle once the prepaid cycles run out.
        - `billingCycles` (`integer`, required, example 3) — How many billing cycles are paid for upfront. This counts cycles, not months: three cycles of a price that bills quarterly covers nine months.
        - `discount` (`object`, optional) — A recurring amount that comes off the price when you price the order. The amount applies to one billing period, the same as the price, and it is not a total. For example, a discount of 500 for 3 periods takes 500 off each of the first three periods, and 1500 in all.
          - `amountMinor` (`integer`, required, int64, example 500) — The amount that comes off each billing period, in minor currency units.
          - `duration` (`object`, optional) — How long the discount lasts. An `UPFRONT_PAYMENT` discount always gives a duration, and it covers the billing cycles that the customer pays for in advance. The other two sources omit the duration when the discount never stops. The discount then comes off every charge for as long as the price is in effect. For a one-time price that is the single charge. — A length of time, expressed as a count of some unit.
            - `unit` (`enum<string>`, required, one of MONTHS) — The unit of time being counted. Currently only months are supported.
            - `value` (`integer`, required, example 3) — How many of the unit the duration lasts.
          - `invoicingDescription` (`string`, optional, example Campaign discount) — What the brand calls this discount on an invoice. Omitted when the brand gave the discount no name of its own.
          - `source` (`enum<string>`, optional, one of STANDARD, BINDING_CONTRACT, UPFRONT_PAYMENT, example STANDARD) — What the customer must do to get the discount: - `STANDARD` is given to every customer who orders the offering. - `BINDING_CONTRACT` needs the customer to commit for the contract's length. - `UPFRONT_PAYMENT` needs the customer to pay for several billing periods at once.
      - `includesTax` (`boolean`, optional, example false) — True when the configured price includes its tax. The tax is then a part of `netPriceMinor` rather than an amount on top of it.
      - `netPriceMinor` (`integer`, optional, int64, example 2999) — The configured price of the offering, in minor currency units. When `includesTax` is true, this amount is the total the customer pays, and the tax is a part of it.
      - `priceType` (`enum<string>`, required, one of ONE_TIME, RECURRING) — How the price is charged. - ONE_TIME: Charged once (e.g., a setup fee or hardware purchase). - RECURRING: Charged every billing cycle (e.g., a monthly subscription fee).
      - `standardDiscount` (`object`, optional) — A recurring amount that comes off the price when you price the order. The amount applies to one billing period, the same as the price, and it is not a total. For example, a discount of 500 for 3 periods takes 500 off each of the first three periods, and 1500 in all.
        - `amountMinor` (`integer`, required, int64, example 500) — The amount that comes off each billing period, in minor currency units.
        - `duration` (`object`, optional) — How long the discount lasts. An `UPFRONT_PAYMENT` discount always gives a duration, and it covers the billing cycles that the customer pays for in advance. The other two sources omit the duration when the discount never stops. The discount then comes off every charge for as long as the price is in effect. For a one-time price that is the single charge. — A length of time, expressed as a count of some unit.
          - `unit` (`enum<string>`, required, one of MONTHS) — The unit of time being counted. Currently only months are supported.
          - `value` (`integer`, required, example 3) — How many of the unit the duration lasts.
        - `invoicingDescription` (`string`, optional, example Campaign discount) — What the brand calls this discount on an invoice. Omitted when the brand gave the discount no name of its own.
        - `source` (`enum<string>`, optional, one of STANDARD, BINDING_CONTRACT, UPFRONT_PAYMENT, example STANDARD) — What the customer must do to get the discount: - `STANDARD` is given to every customer who orders the offering. - `BINDING_CONTRACT` needs the customer to commit for the contract's length. - `UPFRONT_PAYMENT` needs the customer to pay for several billing periods at once.
    - `productOfferingId` (`string`, required, example f47ac10b-58cc-4372-a567-0e02b2c3d479) — The unique identifier for the product offering. Use it with the product offering endpoints to fetch full details.

#### 400

The request was malformed or invalid.

Type: [Error](/end-user-api/models.md#models/Error)

#### 401

Authentication is required to access this resource.

Type: [Error](/end-user-api/models.md#models/Error)

#### 403

Access to this resource is forbidden.

Type: [Error](/end-user-api/models.md#models/Error)

#### 404

The requested resource was not found.

Type: [Error](/end-user-api/models.md#models/Error)

#### 500

An unexpected error occurred on the server.

Type: [Error](/end-user-api/models.md#models/Error)

### Example request

```bash
curl 'https://apiv2.example.com/api/v2/end-user/subscriptions/SUBSCRIPTION_ID/addons/product-offering-options?currentProductOfferingId=CURRENT_PRODUCT_OFFERING_ID' \
  --header 'X-Api-Key: YOUR_API_KEY' \
  --header 'Authorization: Bearer YOUR_ACCESS_TOKEN'
```
