---
title: "Update contract performance obligation"
method: PATCH
path: "/v3/contracts/{id}/performance-obligations/{pobId}"
tags: ["Contracts"]
---

# Update contract performance obligation

`PATCH /v3/contracts/{id}/performance-obligations/{pobId}`

## Path parameters

- `id` string, required
- `pobId` string, required

## Request body

- UpdatePerformanceObligationForContractDto
  - `name` string — The name of the performance obligation
  - `erpClassId` string, nullable — The ID of the integration / ERP class (integration class) for this performance obligation
  - `itemId` string, nullable — The ID of the integration item
  - `serviceStartDate` string — Service start date
  - `serviceEndDate` string — Service end date
  - `considerationType` 'FIXED' | 'VARIABLE' — Consideration type
  - `recognitionPattern` 'STRAIGHT_LINE' | 'RECOGNIZE_AS_CONSUMED' | 'RECOGNIZE_AS_BILLED' — Recognition pattern

## Response `200`

Performance obligation updated successfully

- object
  - `payload` object, required — Response payload, will be empty when success is false
    - `id` string, required — Unique identifier for the performance obligation
    - `name` string, nullable, required — Name of the performance obligation
    - `billingTermGroupId` string, nullable, required — Billing term group ID (foreign key)
    - `billingTermGroupName` string, nullable, required — Billing term group name
    - `itemId` string, nullable, required — ID of the associated integrationitem
    - `itemName` string, nullable, required — Name of the associated integrationitem
    - `erpClassId` string, nullable, required — ID of the ERP class
    - `erpClassName` string, nullable, required — Name of the ERP class
    - `category` string, nullable, required — Revenue category
    - `productId` string, nullable, required — ID of the associated product
    - `productName` string, nullable, required — Name of the associated product
    - `serviceStartDate` string, date-time, required — Service start date
    - `serviceEndDate` string, date-time, required — Service end date
    - `transactionPrice` string, required — Transaction price as a decimal string
    - `billingTermIds` string[], required — Array of billing term IDs linked to this POB via the BTG
    - `considerationType` string, nullable, required — Consideration type
    - `recognitionPattern` string, nullable, required — Revenue recognition pattern
    - `eventTypeId` string, nullable, required — Event type ID
    - `eventTypeName` string, nullable, required — Event type name
    - `hasSentInvoice` boolean, required — Whether POB has any invoice sent to ERP (SENT, PAID, PARTIALLY_PAID, DONE)
    - `recognizedRevenue` RecognizedRevenueAtomResponseDto[], required — Monthly recognized revenue entries for this performance obligation
      - `timeframe` string, required — Month in YYYY-MM format
      - `total` string, required — Recognized revenue amount as a decimal string
    - `createdAt` string, date-time, required — Timestamp when the performance obligation was created
    - `updatedAt` string, date-time, required — Timestamp when the performance obligation was last updated
  - `success` boolean, required — Boolean with true=success, false=failure
  - `message` string, required — Plain-text description of the result
  - `error` IntegratorsApiError, required
    - `code` number, required — API response code
    - `message` string, required — API response message
    - `details` object — Additional details about the error

## Other responses

- `400` — Validation error or performance obligation features not enabled
- `404` — Contract or performance obligation not found
- `500` — Internal Server Error

---

[API](https://skmtc.net/tabsplatform/apis/tabs-external-api.md) · [All operations](https://skmtc.net/tabsplatform/apis/tabs-external-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/tabsplatform/tabs-external-api/versions/7e8885517814/schema)
