# Get Revenue Contract

`GET /accounting/revenue-contracts/{id}`

Group: Accounting › Revenue Contracts · Operation ID: `getRevenueContract`

Returns the revenue contract with the given identifier, including its revenue lines, each line's revenue plan and that plan's period rows. Use the contract's id, not its revenueContractNumber.

[Open in the interactive reference](https://docs.api.lensing.ai/?op=getRevenueContract)

## Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `Api-Version` | header | `"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 for the revenue contract to return. |

## Response

`200` Success

Under `data` (getRevenueContractOutput):

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `id` | string | yes | The unique identifier for the revenue contract. |
| `revenueContractNumber` | string | no | The revenue contract number, unique within the tenant. |
| `approvalStatus` | string | yes | The approval status of the contract. Possible values: 'draft', 'pendingApproval', 'revise', 'approved', 'rejected'. |
| `generalStatus` | string | no | The overall status of the contract, combining approval and any active revenue hold. Possible values: 'approved', 'approvedOnHold', 'pendingApproval', 'pendingApprovalOnHold'. |
| `revenueStatus` | string | no | The revenue-recognition progress across the contract's lines. Possible values: 'notStarted', 'notStartedOnHold', 'inProgress', 'inProgressOnHold', 'complete', 'completeModified'. |
| `isContractClosed` | boolean | yes | Whether the contract has been closed, with its open revenue moved to a new combined revenue contract. |
| `isContractCombined` | boolean | yes | Whether the contract is the combination target that absorbed a closed contract's open revenue. |
| `isLongTermContract` | boolean | no | Whether the recognition window from revenueStartDate to revenueEndDate exceeds 366 days. |
| `sspCompliant` | boolean | no | Whether every line not excluded from allocation is standalone-selling-price compliant. Absent when every line is excluded from allocation. |
| `currency` | string | yes | The currency the contract is denominated in. Every amount on the contract is in this currency. Format ISO 4217, for example 'USD'. |
| `functionalCurrency` | string | no | The owning entity's functional currency. Present only when it differs from the contract currency. Format ISO 4217, for example 'USD'. |
| `exchangeRate` | string (decimal) | yes | The rate used to convert the contract currency to the entity's functional currency. A ratio, not an amount, with no currency of its own. |
| `entityId` | string | no | The legal entity that owns this contract. See id on GET base/entities. |
| `entityName` | string | no | The name of the legal entity that owns this contract. |
| `customerId` | string | no | The customer this contract is with. See id on GET accounting/customers/:id. |
| `customerName` | string | no | The display name of the customer this contract is with. |
| `salesOrderId` | string | no | The sales order this contract was created from. See id on GET accounting/sales-orders/:id. |
| `salesOrderNumber` | string | no | The number of the sales order this contract was created from. |
| `modifiedRevenueContractId` | string | no | The revenue contract this one was combined or modified into. Absent when there is no such successor. See id on GET accounting/revenue-contracts/:id. |
| `closeContractDate` | string (date-time) | no | The date and time the contract was closed, in UTC. Format YYYY-MM-DDTHH:mm:ss.sssZ. Absent on an open contract. |
| `migrationDate` | string (date) | no | The date this contract's opening balances were migrated from a prior system. Format YYYY-MM-DD. Absent on a contract created natively. |
| `revenueStartDate` | string (date) | no | The earliest revenue-recognition start date across the contract's lines. Format YYYY-MM-DD. |
| `revenueEndDate` | string (date) | no | The latest revenue-recognition end date across the contract's lines. Format YYYY-MM-DD. |
| `salesEffectiveDate` | string (date) | no | The book date of the sales order this contract was created from. Format YYYY-MM-DD. |
| `totalContractValue` | string (decimal) | no | The total contract value, in the contract currency. It is the total price of the sales order this contract was created from, less the contract's cost-of-contract-value. |
| `totalContractAmount` | string (decimal) | no | The total contract amount across the contract's open lines, in the contract currency. |
| `totalCostOfContractValue` | string (decimal) | no | The total cost-of-contract-value excluded from the revenue calculation, in the contract currency. |
| `totalCostOfRevenue` | string (decimal) | no | The total cost of revenue recognized, in the contract currency. |
| `totalEstimatedTransactionPrice` | string (decimal) | no | The total estimated transaction price used in allocation, in the contract currency. |
| `totalFairValueAmount` | string (decimal) | no | The total fair value used in allocation, in the contract currency. |
| `totalVariableConsideration` | string (decimal) | no | The total variable consideration across the contract's lines, in the contract currency. |
| `deferredRevenue` | string (decimal) | no | The deferred revenue not yet recognized, in the contract currency. Zero once the contract is closed. |
| `revenueAmount` | string (decimal) | no | The total revenue across the contract's lines, in the contract currency. |
| `revenueRecognized` | string (decimal) | no | The cumulative revenue recognized to date, in the contract currency. |
| `revenueRemaining` | string (decimal) | no | The revenue remaining to be recognized, in the contract currency. |
| `remainingPerformanceObligation` | string (decimal) | no | The remaining performance obligation, in the contract currency. It is contract value plus returns and variable consideration, less committed recognized revenue. Zero once the contract is closed. |
| `unbilledReceivables` | string (decimal) | no | The sum of unbilled journal entries for this contract, in the contract currency. |
| `returnedAmount` | string (decimal) | no | The amount returned against the contract's revenue plan, in the contract currency. |
| `oneTimeDiscountAmount` | string (decimal) | no | The one-time discount allocated across the contract's lines, in the contract currency. |
| `pctRevenueRecognized` | string (decimal) | no | The fraction of total contract value recognized to date, from 0 to 1. 1 once the contract is closed. A ratio, not an amount, with no currency of its own. |
| `externalIdentifiers` | array of object | no | The contract's identifiers in other systems, one per configured field name. An empty array or absent when the contract has none. |
| `externalIdentifiers[].fieldName` | string | yes | The configured field name of the identifier, for example 'netsuiteRevenueContractId'. |
| `externalIdentifiers[].value` | string | yes | The identifier in the other system. |
| `externalIdentifiers[].externalUrl` | string | no | A link to the record in the other system. Absent when none is stored. |
| `lines` | array of object | no | The contract's revenue lines, in line order, each with its revenue plan nested. An empty array when the contract has no lines. |
| `lines[].id` | string | yes | The unique identifier for the revenue contract line. |
| `lines[].revenueContractLineNumber` | string | no | The revenue contract line number, unique within the contract. |
| `lines[].type` | string | yes | The kind of line. Possible values: 'standard', 'thresholdIncrement', 'overage'. |
| `lines[].currency` | string | yes | The currency the line is denominated in. Every amount on the line and its revenue plan is in this currency. Format ISO 4217, for example 'USD'. |
| `lines[].functionalCurrency` | string | no | The owning entity's functional currency. Present only when it differs from the line currency. Format ISO 4217, for example 'USD'. |
| `lines[].exchangeRate` | string (decimal) | no | The rate used to convert the line currency to the functional currency. A ratio, not an amount, with no currency of its own. |
| `lines[].generalStatus` | string | no | The overall status of the line, combining approval and any active revenue hold. Possible values: 'notStarted', 'notStartedOnHold', 'inProgress', 'inProgressOnHold', 'complete', 'completeModified'. |
| `lines[].revenueStatus` | string | no | The revenue-recognition progress for the line. Possible values: 'notStarted', 'notStartedOnHold', 'inProgress', 'inProgressOnHold', 'complete', 'completeModified'. |
| `lines[].isClosed` | boolean | yes | Whether the line has been closed, with its open revenue moved to a combined contract. |
| `lines[].isLongTerm` | boolean | no | Whether the line's recognition window exceeds 366 days. |
| `lines[].isEvergreen` | boolean | no | Whether the line has no fixed end date and recognizes indefinitely. |
| `lines[].sspCompliant` | boolean | no | Whether the line is standalone-selling-price compliant. |
| `lines[].isAllocationExcluded` | boolean | no | Whether the line is excluded from the contract's revenue allocation. |
| `lines[].productCode` | string | no | The code of the product the line covers, as it stood when the line was created. |
| `lines[].unitOfMeasure` | string | no | The unit the line's quantity is measured in. Possible values: 'instance', 'gigabyte', 'terabyte', 'user', 'seat', 'minute', 'hour', 'day', 'month', 'each', 'license', 'activeUser', 'megabyte', 'message', 'text', 'platform', 'employee', 'personnel', 'credit', 'currency', 'package', 'case', 'word', 'record'. |
| `lines[].performanceObligationName` | string | no | The name of the performance obligation the line satisfies. |
| `lines[].operationalPerformanceObligationNumber` | string | no | The number of the operational performance obligation the line is tracked under. |
| `lines[].revenueSchedulingTemplateName` | string | no | The name of the revenue scheduling template that generated the line's plan. |
| `lines[].revenueRecognitionPattern` | string | no | How revenue is recognized over the line's term. Possible values: 'upfront', 'overTime', 'asDelivered', 'asConsumed'. |
| `lines[].amortizationMethod` | string | no | How the line's amount is spread across periods. Possible values: 'exactDays', 'pointInTime', 'straightLineProRateFirstLast', 'straightLine', 'usageBased'. |
| `lines[].revenueSchedulingEvent` | string | yes | The event that starts recognition on the line. Possible values: 'revenueArrangementCreation', 'uponInvoicing', 'uponUsageConsumption', 'manualRelease', 'uponInvoicingPercentInvoiced', 'uponInvoicingFullAmount', 'serviceActivation'. |
| `lines[].revenueAccount` | string | no | The name of the revenue account the line recognizes into. |
| `lines[].deferredRevenueAccount` | string | no | The name of the deferred-revenue account the line defers into. |
| `lines[].revRecStartDate` | string (date) | no | The first day of the line's revenue-recognition window. Format YYYY-MM-DD. |
| `lines[].revRecEndDate` | string (date) | no | The last day of the line's revenue-recognition window, inclusive. Format YYYY-MM-DD. |
| `lines[].salesOrderBookingDate` | string (date) | no | The book date of the sales order line this line was created from. Format YYYY-MM-DD. |
| `lines[].revenueTerm` | string (decimal) | no | The length of the line's revenue term, in the line's scheduling unit. A count, not an amount. |
| `lines[].salesOrderProductLine` | string | no | The number of the sales order product line this line was created from. |
| `lines[].contractAmount` | string (decimal) | no | The contract amount booked on the line, in the line currency. |
| `lines[].adjustedContractAmount` | string (decimal) | no | The contract amount after modifications, in the line currency. |
| `lines[].listPrice` | string (decimal) | no | The undiscounted list price of the line, in the line currency. |
| `lines[].totalContractValue` | string (decimal) | no | The total contract value attributed to the line, in the line currency. |
| `lines[].totalCostOfContractValue` | string (decimal) | no | The cost-of-contract-value excluded from the line's revenue calculation, in the line currency. |
| `lines[].costOfRevenueAmount` | string (decimal) | no | The cost of revenue booked on the line, in the line currency. |
| `lines[].costOfRevenueRecognized` | string (decimal) | no | The cost of revenue recognized to date on the line, in the line currency. |
| `lines[].estimatedTransactionPrice` | string (decimal) | no | The estimated transaction price used for the line in allocation, in the line currency. |
| `lines[].fairValueAmount` | string (decimal) | no | The fair value used for the line in allocation, in the line currency. |
| `lines[].variableConsideration` | string (decimal) | no | The variable consideration on the line, in the line currency. |
| `lines[].extendedSSP` | string (decimal) | no | The extended standalone selling price of the line, unit standalone selling price times quantity, in the line currency. |
| `lines[].revenueAmount` | string (decimal) | no | The revenue allocated to the line, in the line currency. |
| `lines[].revenueRecognized` | string (decimal) | no | The revenue recognized to date on the line, in the line currency. |
| `lines[].revenueRemaining` | string (decimal) | no | The revenue still to be recognized on the line, in the line currency. |
| `lines[].deferredRevenueAmount` | string (decimal) | no | The deferred revenue outstanding on the line, in the line currency. |
| `lines[].remainingPerformanceObligation` | string (decimal) | no | The remaining performance obligation on the line, in the line currency. |
| `lines[].unbilledReceivables` | string (decimal) | no | The unbilled receivables on the line, in the line currency. |
| `lines[].unscheduledRevenue` | string (decimal) | no | The revenue on the line not yet scheduled into a plan period, in the line currency. |
| `lines[].totalInvoicedAmount` | string (decimal) | no | The total invoiced against the line to date, in the line currency. |
| `lines[].oneTimeDiscountAllocationAmount` | string (decimal) | no | The one-time discount allocated to the line, in the line currency. |
| `lines[].fvAllocationRatio` | string (decimal) | no | The share of the contract's fair value allocated to the line, from 0 to 1. A ratio, not an amount, with no currency of its own. |
| `lines[].revenuePlanHeader` | object | no | The line's revenue plan, the schedule revenue is recognized against. At most one per line. Absent when no plan has been generated for the line yet. |
| `lines[].revenuePlanHeader.id` | string | yes | The unique identifier for the revenue plan header. |
| `lines[].revenuePlanHeader.revenuePlanHeaderNumber` | string | no | The revenue plan header number. |
| `lines[].revenuePlanHeader.status` | string | no | The status of the plan. Possible values: 'notStarted', 'pendingRecognition', 'inProgress', 'complete', 'completeModified'. |
| `lines[].revenuePlanHeader.currency` | string | yes | The currency the plan is denominated in. Every amount on the plan and its plan lines is in this currency. Format ISO 4217, for example 'USD'. |
| `lines[].revenuePlanHeader.amortizationMethod` | string | no | How the plan spreads its amount across periods. Possible values: 'exactDays', 'pointInTime', 'straightLineProRateFirstLast', 'straightLine', 'usageBased'. |
| `lines[].revenuePlanHeader.revenueSchedulingEvent` | string | yes | The event that starts recognition on the plan. Possible values: 'revenueArrangementCreation', 'uponInvoicing', 'uponUsageConsumption', 'manualRelease', 'uponInvoicingPercentInvoiced', 'uponInvoicingFullAmount', 'serviceActivation'. |
| `lines[].revenuePlanHeader.isContractClosed` | boolean | yes | Whether the contract behind the plan has been closed. |
| `lines[].revenuePlanHeader.revRecStartDate` | string (date) | no | The first day of the plan's recognition window. Format YYYY-MM-DD. |
| `lines[].revenuePlanHeader.revRecEndDate` | string (date) | no | The last day of the plan's recognition window, inclusive. Format YYYY-MM-DD. |
| `lines[].revenuePlanHeader.comments` | string | no | Free-form comments recorded on the plan. |
| `lines[].revenuePlanHeader.amount` | string (decimal) | no | The total amount the plan schedules, in the plan currency. |
| `lines[].revenuePlanHeader.totalRecognized` | string (decimal) | no | The total recognized across the plan's lines to date, in the plan currency. |
| `lines[].revenuePlanHeader.remainingDeferred` | string (decimal) | no | The amount still deferred on the plan, in the plan currency. |
| `lines[].revenuePlanHeader.returnedAmount` | string (decimal) | no | The amount returned against the plan, in the plan currency. |
| `lines[].revenuePlanHeader.unscheduledRevenue` | string (decimal) | no | The plan amount not yet scheduled into a period, in the plan currency. |
| `lines[].revenuePlanHeader.revenuePlanLines` | array of object | no | The plan's period rows, the recognition schedule, one entry per planned period, earliest planned period first. An empty array when the plan has not been scheduled yet. |
| `lines[].revenuePlanHeader.revenuePlanLines[].id` | string | yes | The unique identifier for the revenue plan line. |
| `lines[].revenuePlanHeader.revenuePlanLines[].lineId` | string | no | The line identifier within the plan. |
| `lines[].revenuePlanHeader.revenuePlanLines[].revenuePlanType` | string | yes | What the plan line schedules. Possible values: 'revenueRecognition', 'returnRevenueRecognition', 'unCommittedRevenueRecognition', 'modificationDeferredRevenueAdjustment', 'allowance', 'overage', 'usageExpiration', 'costOfRevenue', 'unholdRevenuePeriod', 'retrospectiveAdjustment'. |
| `lines[].revenuePlanHeader.revenuePlanLines[].currency` | string | yes | The currency the plan line is denominated in. Format ISO 4217, for example 'USD'. |
| `lines[].revenuePlanHeader.revenuePlanLines[].plannedPeriod` | string | no | The name of the accounting period this row is planned for. |
| `lines[].revenuePlanHeader.revenuePlanLines[].plannedPeriodDate` | string (date) | no | The start date of the planned accounting period. Format YYYY-MM-DD. Plan lines are returned in ascending order of this date. |
| `lines[].revenuePlanHeader.revenuePlanLines[].postingPeriod` | string | no | The name of the accounting period the row was posted in, when it differs from the planned one. |
| `lines[].revenuePlanHeader.revenuePlanLines[].isPosted` | boolean | no | Whether the row has been posted to the general ledger. |
| `lines[].revenuePlanHeader.revenuePlanLines[].holdStatus` | string | no | Whether revenue on the row is held back. Possible values: 'notHold', 'holdPlaced', 'holdRemoved'. |
| `lines[].revenuePlanHeader.revenuePlanLines[].releaseUnit` | string | no | The unit the release amount is expressed in. Possible values: 'quantity', 'percent', 'amount'. |
| `lines[].revenuePlanHeader.revenuePlanLines[].releaseAmount` | string (decimal) | no | The amount or quantity released in this period, in the unit given by releaseUnit. |
| `lines[].revenuePlanHeader.revenuePlanLines[].pctRecognizedInPeriod` | string (decimal) | no | The fraction of the plan recognized in this period, from 0 to 1. A ratio, not an amount, with no currency of its own. |
| `lines[].revenuePlanHeader.revenuePlanLines[].cumulativePercentage` | string (decimal) | no | The fraction of the plan recognized cumulatively through this period, from 0 to 1. A ratio, not an amount, with no currency of its own. |
| `lines[].revenuePlanHeader.revenuePlanLines[].revenueAccount` | string | no | The name of the revenue account this row recognizes into. |
| `lines[].revenuePlanHeader.revenuePlanLines[].deferredRevenueAccount` | string | no | The name of the deferred-revenue account this row releases from. |
| `lines[].revenuePlanHeader.revenuePlanLines[].journalEntry` | string | no | The number of the journal entry this row posted through, once posted. |
| `lines[].revenuePlanHeader.revenuePlanLines[].amount` | string (decimal) | no | The amount scheduled for this period, in the plan line currency. |
| `lines[].revenuePlanHeader.revenuePlanLines[].revenueAmount` | string (decimal) | no | The revenue scheduled for this period, in the plan line currency. |
| `lines[].revenuePlanHeader.revenuePlanLines[].revenueRecognized` | string (decimal) | no | The revenue recognized in this period, in the plan line currency. |
| `lines[].revenuePlanHeader.revenuePlanLines[].cumulativeRecognition` | string (decimal) | no | The revenue recognized cumulatively through this period, in the plan line currency. |
| `lines[].revenuePlanHeader.revenuePlanLines[].unscheduledRevenue` | string (decimal) | no | The amount on this row not yet scheduled, in the plan line currency. |
| `lines[].revenuePlanHeader.revenuePlanLines[].postedAmount` | string (decimal) | no | The amount actually posted to the ledger for this row, in the plan line currency. |
| `lastModifiedDate` | string (date-time) | yes | The date and time the revenue contract last changed, in UTC. Format YYYY-MM-DDTHH:mm:ss.sssZ. |

## Errors

| Code | Status |
| --- | --- |
| `NOT_FOUND` | 400 |

## Statuses

- `400` — Invalid request or business failure. Codes: NOT_FOUND
- `401` — Missing or invalid access token
- `403` — Not authorized
- `404` — Not found
- `429` — Too many requests
- `500` — Internal server error
