Retrieve a performance obligation

Operation ID: getPerformanceObligation

Group: Accounting › Performance Obligations

Open in the interactive reference

GET /accounting/performance-obligations/{id}

Read-only: Reads and returns; changes nothing.

Retrieves a performance obligation. Use the performance obligation's id, not its performanceObligationNumber.

The response includes the performance obligation's standalone selling price ranges, but not its product mappings. To get the product mappings, use GET accounting/performance-obligations/:id/products.

Parameters

Name In Type Required Description
Api-Version header string · v1 yes The API version this request targets, named by its public identifier. Required on every request; omitting it, or naming a version this company does not have, is answered with 400. This document describes version v1.
id path string yes The unique identifier of the performance obligation you want to retrieve.

Response

200 Success

Under data (getPerformanceObligationOutput):

Field Type Required Description
id string yes The unique identifier for the performance obligation.
performanceObligationNumber string no The performance obligation number. Absent while none has been assigned.
name string yes The display name of the performance obligation, as it appears on revenue contracts and schedules.
description string no A free-form description of what the obligation covers. Absent when none is set.
effectiveStartDate date yes The first date this obligation is in effect. Format YYYY-MM-DD.
effectiveEndDate date no The last date this obligation is in effect. Format YYYY-MM-DD. Absent when the obligation is open-ended.
allocationStartDate date no The date from which revenue for this obligation takes part in allocation. Format YYYY-MM-DD. Absent when none is set.
isAllocationExcluded boolean yes Whether the revenue contract lines of this obligation are left out of fair-value allocation.
isNetAccounting boolean yes Whether the obligation is accounted net rather than gross.
defaultAmortizationMethod string no The default amortization method used when scheduling this obligation's revenue. Possible values: 'exactDays', 'pointInTime', 'straightLineProRateFirstLast', 'straightLine', 'usageBased'.
standaloneSellingPriceRangeType string no How the obligation's standalone selling price ranges are expressed. Possible values: 'percentage', 'amount'.
revenueSchedulingTemplateId string no The unique identifier for the revenue scheduling template that schedules this obligation's revenue. See id on GET accounting/revenue-scheduling-templates/:id.
revenueSchedulingTemplateName string no The name of the revenue scheduling template that schedules this obligation's revenue.
standaloneSellingPriceStratificationConfigurationId string no The unique identifier for the standalone selling price stratification configuration this obligation stratifies by. Absent when none is set. There is no endpoint for it.
lastModifiedDate date-time yes The date and time the performance obligation last changed, in UTC. Format YYYY-MM-DDTHH:mm:ss.sssZ.
standaloneSellingPriceRanges array<object> no The obligation's standalone selling price ranges, one per product and effective period. An empty array when none are configured. Which of the amount and percentage fields are set follows each range's rangeType.
standaloneSellingPriceRanges[].id string no The unique identifier for the standalone selling price range.
standaloneSellingPriceRanges[].rangeNumber string no The standalone selling price range number.
standaloneSellingPriceRanges[].rangeType string no How this range is expressed. Possible values: 'percentage', 'amount'.
standaloneSellingPriceRanges[].currency string no The currency the amounts are given in. Format ISO 4217, for example 'USD'. Absent on a percentage range.
standaloneSellingPriceRanges[].effectiveStartDate date yes The first date this range applies. Format YYYY-MM-DD.
standaloneSellingPriceRanges[].effectiveEndDate date no The last date this range applies. Format YYYY-MM-DD. Absent when the range is open-ended.
standaloneSellingPriceRanges[].lowAmount decimal no The lower bound of the standalone selling price, in the range currency. Set on an amount range.
standaloneSellingPriceRanges[].midAmount decimal no The midpoint of the standalone selling price, in the range currency. Set on an amount range.
standaloneSellingPriceRanges[].highAmount decimal no The upper bound of the standalone selling price, in the range currency. Set on an amount range.
standaloneSellingPriceRanges[].lowPercentage decimal no The lower bound of the standalone selling price, as a percentage of list price. Set on a percentage range.
standaloneSellingPriceRanges[].midPercentage decimal no The midpoint of the standalone selling price, as a percentage of list price. Set on a percentage range.
standaloneSellingPriceRanges[].highPercentage decimal no The upper bound of the standalone selling price, as a percentage of list price. Set on a percentage range.
standaloneSellingPriceRanges[].term string no The period the range's prices are quoted over. Possible values: 'monthly', 'annually', 'none'.
standaloneSellingPriceRanges[].unitOfMeasure string no The unit the range's prices are quoted per.
standaloneSellingPriceRanges[].productId string no The product this range prices. Absent on a range that applies to the whole obligation. See id on GET accounting/products/:id.
standaloneSellingPriceRanges[].productCode string no The code of that product.
standaloneSellingPriceRanges[].productName string no The name of that product.
{
  "data": {
    "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
    "performanceObligationNumber": "<performanceObligationNumber>",
    "name": "<name>",
    "description": "<description>",
    "effectiveStartDate": "2026-01-15",
    "effectiveEndDate": "2026-01-15",
    "allocationStartDate": "2026-01-15",
    "isAllocationExcluded": true,
    "isNetAccounting": true,
    "defaultAmortizationMethod": "<defaultAmortizationMethod>",
    "standaloneSellingPriceRangeType": "<standaloneSellingPriceRangeType>",
    "revenueSchedulingTemplateId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
    "revenueSchedulingTemplateName": "<revenueSchedulingTemplateName>",
    "standaloneSellingPriceStratificationConfigurationId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
    "lastModifiedDate": "2026-01-15T09:30:00.000Z",
    "standaloneSellingPriceRanges": [
      {
        "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
        "rangeNumber": "<rangeNumber>",
        "rangeType": "<rangeType>",
        "currency": "<currency>",
        "effectiveStartDate": "2026-01-15",
        "effectiveEndDate": "2026-01-15",
        "lowAmount": "19.99",
        "midAmount": "19.99",
        "highAmount": "19.99",
        "lowPercentage": "19.99",
        "midPercentage": "19.99",
        "highPercentage": "19.99",
        "term": "<term>",
        "unitOfMeasure": "<unitOfMeasure>",
        "productId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
        "productCode": "<productCode>",
        "productName": "<productName>"
      }
    ]
  },
  "diagnostics": [
    {
      "code": "<code>",
      "message": "<message>",
      "severity": "error",
      "path": [
        "<path>"
      ],
      "details": "<details>"
    }
  ]
}

Errors

Code Status
NOT_FOUND 400

Statuses