---
title: "Query purchase options by PRP ID"
method: POST
path: "/commerce/purchase-options/list"
tags: ["Commerce"]
---

# Query purchase options by PRP ID

`POST /commerce/purchase-options/list`

Retrieves one or more product rate plans (PRPs) from the Product Catalog based on specified filters such as product ID or PRP ID.
You can optionally expand related product rate plan charges (PRPCs) in the response.

## Query parameters

- `rejectUnknownFields` boolean

## Headers

- `Idempotency-Key` string
- `Accept-Encoding` string
- `Content-Encoding` string
- `Zuora-Entity-Ids` string
- `Zuora-Org-Ids` string
- `Zuora-Track-Id` string
- `Zuora-Version` string

## Request body

- PurchaseOptionRequest
  - `filters` object[] — Defines the filtering criteria for querying purchase options or product rate plans. Each filter includes a target field, an operator, and a value.
    - `field` string, required — Name of the field to filter by. Supported fields include: - `prp_id`: Product Rate Plan ID. - `product_id`: Product ID.
    - `operator` 'EQ' | 'NE' | 'LT' | 'GT' | 'SW' | 'IN' | 'EW' | 'LIKE', required — Comparison operator. Supported values: - `EQ` (equals) - `NE` (not equals) - `LT` (less than) - `GT` (greater than) - `SW` (starts with) - `EW` (ends with) - `IN` (in list) - `LIKE` (partial match)
    - `value` object, required — Specifies the value to compare against. Only one of the following value types should be provided.
      - `string_value` string — String value for string-based comparisons.
      - `number_value` number, double — Numeric value for numeric comparisons.
      - `boolean_value` boolean — Boolean value for logical comparisons.
  - `expand` object — Optional flags to include related entities in the query results.
    - `product_rate_plan_charges` boolean — When `true`, expands the response to include Product Rate Plan Charges (PRPCs) associated with the queried Product Rate Plans. Expanded PRPCs include full charge configuration, including pricing, billing settings, and end date configuration fields such as `endDateCondition`, `upToPeriodsType`, and `upToPeriods`.
  - `product_rate_plan_charge_key` string — Optional identifier for a specific Product Rate Plan Charge (PRPC) to query. Can be either a PRPC ID or a PRPC number/key.
  - `attributes` object[] — Optional attributes used for evaluating Dynamic Pricing. Required when the queried PRPC is configured to depend on contextual attributes.
    - `name` string, required — Name of the pricing attribute (e.g., `Region`, `Age`, `EffectiveDate`).
    - `string_value` string — String-based attribute value.
    - `number_value` number, double — Numeric attribute value.
    - `boolean_value` boolean — Boolean attribute value.
    - `date_value` string, date — Date value in `YYYY-MM-DD` format.
    - `datetime_value` string, date-time — Datetime value in ISO 8601 format.

## Response `200`

OK

- PurchaseOptionResponse — Response object containing Product Rate Plan (PRP) and Product Rate Plan Charge (PRPC) details that match the request filters. Each returned PRP includes all associated charge configurations, pricing details, and relevant metadata.
  - `error` object, nullable — Error information, if the request fails. Returns `null` on success.
  - `productRatePlans` object[] — List of Product Rate Plans (PRPs) that match the filter criteria. Each PRP includes associated product, pricing, and charge configuration details.
    - `id` string — Unique identifier of the Product Rate Plan (PRP).
    - `name` string — Display name of the Product Rate Plan.
    - `description` string — Description of the Product Rate Plan.
    - `startDate` string, date — Effective start date of the Product Rate Plan.
    - `endDate` string, date — Effective end date of the Product Rate Plan.
    - `state` string — Current state of the Product Rate Plan (for example, `active`).
    - `productRatePlanNumber` string — Unique reference number of the Product Rate Plan.
    - `productId` string — ID of the Product associated with this rate plan.
    - `product` object — Metadata and configuration details for the associated Product.
      - `id` string — Unique Product ID.
      - `name` string — Product name.
      - `productNumber` string — Unique product reference number.
      - `category` string — Product category, such as `base` or `addon`.
      - `sku` string — Stock-keeping unit (SKU) identifier for the Product.
      - `state` string — Current state of the Product (for example, `product_active`).
      - `customFields` object — Custom field values defined for the Product.
    - `productRatePlanCharges` object[] — List of Product Rate Plan Charges (PRPCs) defined under this rate plan. Each charge defines pricing, billing, taxation, and accounting details.
      - `id` string — Unique identifier of the Product Rate Plan Charge (PRPC).
      - `name` string — Display name of the charge.
      - `chargeType` string — Type of charge (for example, `recurring`, `usage`, `one_time`).
      - `chargeModel` string — Pricing model applied to the charge (for example, `flat_fee`, `tiered`).
      - `pricing` object — Pricing configuration for the charge by currency. Includes flat, unit, or tier-based amounts depending on the model.
        - `flatAmounts` object — Flat amount per billing period by currency.
        - `minAmounts` object — Minimum charge thresholds by currency.
        - `maxAmounts` object — Maximum charge thresholds by currency.
        - `unitAmounts` object — Per-unit charge amounts by currency.
        - `tiers` object[] — Tier-level pricing definitions for tiered or volume models.
      - `billCycle` object — Billing configuration for this charge.
        - `period` string — Billing period, such as `month` or `year`.
        - `periodAlignment` string — How the billing period aligns (for example, `align_to_charge`).
        - `timing` string — Whether the charge bills `in_advance` or `in_arrears`.
      - `taxMode` string — Whether tax is included (`tax_inclusive`) or excluded (`tax_exclusive`).
      - `taxable` boolean — Indicates if the charge is taxable.
      - `revenue` object — Revenue recognition configuration for this charge.
        - `revenueRecognitionRuleName` string — Name of the revenue recognition rule (for example, “Recognize upon invoicing”).
      - `accounting` AccountingResponse — Accounting fields returned by the API. `*Type` fields are derived from the tenant's chart of accounts and are read-only.
        - `accountingCode` string — An accounting code associated with the charge for reporting or ERP mapping. Typically a short code or identifier, not the GL account name.
        - `accountsReceivableAccount` string — Accounts Receivable (AR) account to book invoices for this charge. Must match an existing account in the tenant's chart of accounts.
        - `accountsReceivableAccountType` string — System-derived type/category of the AR account from the chart of accounts. Examples include "AccountsReceivable".
        - `adjustmentLiabilityAccount` string — The name of the account where the Account Type is "Adjustment Liability".
        - `adjustmentLiabilityAccountType` string — System-derived type/category of the Adjustment Liability account from the chart of accounts. Examples include "AdjustmentLiability".
        - `adjustmentRevenueAccount` string — The name of the account where the Account Type is "Adjustment Revenue".
        - `adjustmentRevenueAccountType` string — System-derived type/category of the Adjustment Revenue account from the chart of accounts. Examples include "AdjustmentRevenue".
        - `contractAssetAccount` string — The name of the account where the Account Type is "Contract Asset".
        - `contractAssetAccountType` string — System-derived type/category of the Contract Asset account from the chart of accounts.
        - `contractLiabilityAccount` string — The name of the account where the Account Type is "Contract Liability".
        - `contractLiabilityAccountType` string — System-derived type/category of the Contract Liability account from the chart of accounts. Examples include "ContractLiability".
        - `contractRecognizedRevenueAccount` string — Recognized revenue account used specifically for contract-based recognition flows. Must match an existing account in the tenant's chart of accounts.
        - `contractRecognizedRevenueAccountType` string — System-derived type/category of the Contract Recognized Revenue account from the chart of accounts.
        - `deferredRevenueAccount` string — Deferred revenue (liability) account to book revenue before recognition. Must match an existing account in the tenant's chart of accounts.
        - `deferredRevenueAccountType` string — System-derived type/category of the Deferred Revenue account from the chart of accounts.
        - `recognizedRevenueAccount` string — The name of the account where the Account Type is "Recognized Revenue".
        - `recognizedRevenueAccountType` string — System-derived type/category of the Recognized Revenue account from the chart of accounts.
        - `unbilledReceivablesAccount` string — The name of the account where the Account Type is "Unbilled Receivables".
        - `unbilledReceivablesAccountType` string — System-derived type/category of the Unbilled Receivables account from the chart of accounts.
        - `productRatePlanChargeId` string — The ID of your product rate plan charge.
      - `customFields` object — Tenant-specific custom fields for the PRPC.
      - `pricingSummary` string[] — Human-readable price summary for quick display.
      - `triggerEvent` string — Event that triggers the charge (for example, `contract_effective`).
      - `endDateCondition` string — Condition that determines when the charge ends, for example `subscription_end`, `fixed_period`, or `specific_end_date`.
      - `upToPeriodsType` string — Unit of time used when `endDateCondition` is duration-based (for example, `billing_periods`).
      - `upToPeriods` integer — Duration value used together with `upToPeriodsType` when `endDateCondition` is `fixed_period`.
      - `listPriceBase` string — Indicates how list price is interpreted.
      - `specificListPriceBase` number — Optional override for list price base when billing uses a specific period configuration.
      - `updatedTime` string, date-time — Timestamp when the charge was last updated.
      - `createdTime` string, date-time — Timestamp when the charge was created.

## Other responses

- `400` — Bad Request
- `401` — Unauthorized

---

[API](https://skmtc.dev/zuora/apis/api-reference.md) · [All operations](https://skmtc.dev/zuora/apis/api-reference/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/zuora/api-reference/revisions/702f3caf3985/schema)
