List performance obligations
Operation ID: performanceObligations
Group: Accounting › Performance Obligations
Open in the interactive reference
GET /accounting/performance-obligations
Read-only: Reads and returns; changes nothing.
Lists performance obligations. The collection doesn't include standaloneSellingPriceRanges, revenueSchedulingTemplateId, or standaloneSellingPriceStratificationConfigurationId. To get these fields, use GET accounting/performance-obligations/:id or POST accounting/performance-obligations/search.
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. |
Query surface
id— filter by eq, ne, gt, gte, lt, lte, in, notIn, between, likeperformanceObligationNumber— filter by eq, ne, gt, gte, lt, lte, in, notIn, between, likeeffectiveStartDate— filter by eq, ne, gt, gte, lt, lte, in, notIn, betweeneffectiveEndDate— filter by eq, ne, gt, gte, lt, lte, in, notIn, betweenallocationStartDate— filter by eq, ne, gt, gte, lt, lte, in, notIn, betweenisAllocationExcluded— filter by eq, ne, gt, gte, lt, lte, in, notIn, betweenisNetAccounting— filter by eq, ne, gt, gte, lt, lte, in, notIn, betweendefaultAmortizationMethod— filter by eq, ne, gt, gte, lt, lte, in, notIn, between, likestandaloneSellingPriceRangeType— filter by eq, ne, gt, gte, lt, lte, in, notIn, between, likerevenueSchedulingTemplateName— filter by eq, ne, gt, gte, lt, lte, in, notIn, between, likelastModifiedDate— filter by eq, ne, gt, gte, lt, lte, in, notIn, between- Orderable: id, performanceObligationNumber, name, effectiveStartDate, effectiveEndDate, allocationStartDate, isAllocationExcluded, isNetAccounting, defaultAmortizationMethod, standaloneSellingPriceRangeType, revenueSchedulingTemplateName, lastModifiedDate
- Selectable: id, performanceObligationNumber, name, description, effectiveStartDate, effectiveEndDate, allocationStartDate, isAllocationExcluded, isNetAccounting, defaultAmortizationMethod, standaloneSellingPriceRangeType, revenueSchedulingTemplateName, lastModifiedDate
page[size]— Page sizepage[cursor]— Opaque continuation cursor
Response
200 Success
Under data, an array of performanceObligationsRow:
| Field | Type | Required | Filter | Sort | Description |
|---|---|---|---|---|---|
id |
string | no | Exact (eq, ne), Range (gt, gte, lt, lte, between), Any of (in, notIn), Pattern (like) |
yes | The unique identifier for the performance obligation. |
performanceObligationNumber |
string | null | no | Exact (eq, ne), Range (gt, gte, lt, lte, between), Any of (in, notIn), Pattern (like) |
yes | The performance obligation number. Absent while none has been assigned. |
name |
string | no | no | yes | The display name of the performance obligation, as it appears on revenue contracts and schedules. |
description |
string | null | no | no | no | A free-form description of what the obligation covers. Absent when none is set. |
effectiveStartDate |
date | no | Exact (eq, ne), Range (gt, gte, lt, lte, between), Any of (in, notIn) |
yes | The first date this obligation is in effect. Format YYYY-MM-DD. |
effectiveEndDate |
date | null | no | Exact (eq, ne), Range (gt, gte, lt, lte, between), Any of (in, notIn) |
yes | The last date this obligation is in effect. Format YYYY-MM-DD. Absent when the obligation is open-ended. |
allocationStartDate |
date | null | no | Exact (eq, ne), Range (gt, gte, lt, lte, between), Any of (in, notIn) |
yes | The date from which revenue for this obligation takes part in allocation. Format YYYY-MM-DD. Absent when none is set. |
isAllocationExcluded |
boolean | no | Exact (eq, ne), Range (gt, gte, lt, lte, between), Any of (in, notIn) |
yes | Whether the revenue contract lines of this obligation are left out of fair-value allocation. |
isNetAccounting |
boolean | no | Exact (eq, ne), Range (gt, gte, lt, lte, between), Any of (in, notIn) |
yes | Whether the obligation is accounted net rather than gross. |
defaultAmortizationMethod |
string | null | no | Exact (eq, ne), Range (gt, gte, lt, lte, between), Any of (in, notIn), Pattern (like) |
yes | The default amortization method used when scheduling this obligation's revenue. Possible values: 'exactDays', 'pointInTime', 'straightLineProRateFirstLast', 'straightLine', 'usageBased'. |
standaloneSellingPriceRangeType |
string | null | no | Exact (eq, ne), Range (gt, gte, lt, lte, between), Any of (in, notIn), Pattern (like) |
yes | How the obligation's standalone selling price ranges are expressed. Possible values: 'percentage', 'amount'. |
revenueSchedulingTemplateName |
string | null | no | Exact (eq, ne), Range (gt, gte, lt, lte, between), Any of (in, notIn), Pattern (like) |
yes | The name of the revenue scheduling template that schedules this obligation's revenue. |
lastModifiedDate |
date-time | no | Exact (eq, ne), Range (gt, gte, lt, lte, between), Any of (in, notIn) |
yes | The date and time the performance obligation last changed, in UTC. Format YYYY-MM-DDTHH:mm:ss.sssZ. |
{
"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>",
"revenueSchedulingTemplateName": "<revenueSchedulingTemplateName>",
"lastModifiedDate": "2026-01-15T09:30:00.000Z"
}
],
"pagination": {
"hasMore": true,
"nextCursor": "<nextCursor>"
}
}
Statuses
400— Invalid request or business failure401— The request carries no valid access token.403— Not authorized404— Not found429— Too many requests from this client address. The response has no body and noRetry-Afterheader.500— Internal server error