Revenue templates

A revenue template defines the revenue recognition schedule for the flat/fixed amount associated with a contract line. You can create any number of revenue templates and reuse them across contracts.

For more information, read about revenue templates in the Sage Intacct Help Center.

List revenue templates

get/objects/contracts/revenue-template

Returns up to 100 object references from the collection with a key, ID, and link for each revenue template. This operation is mostly for use in testing; use the query service to find objects that meet certain criteria and to specify properties that are returned.

SecurityOAuth2
Responses
200

OK

400

Bad Request

Request samples
Response samples
application/json
{
  • "ia::result": [
    • {
      • "key": "26",
      • "id": "Evergreen Revenue",
      • "href": "/objects/contracts/revenue-template/26"
      },
    • {
      • "key": "18",
      • "id": "Conprjobserved%compA",
      • "href": "/objects/contracts/revenue-template/18"
      }
    ],
  • "ia::meta": {
    • "totalCount": 2,
    • "start": 1,
    • "pageSize": 100,
    • "next": null,
    • "previous": null
    }
}

Create a revenue template

post/objects/contracts/revenue-template

Creates a new revenue template.

SecurityOAuth2
Request
Request Body schema: application/json
required

Create a revenue template

id
required
string

Unique identifier for the revenue template.

Example: "STRAIGHTLINE_MANUAL"
description
string

Describes the intended use of the revenue template, for example, include the type of contract lines it applies to.

Example: "Applies to fixed-fee contracts where revenue is recognized using the straight line method."
schedulePeriod
string
Default: "monthly"

Specifies the frequency at which revenue is recognized over the duration of the contract. This determines how often revenue is allocated and posted.

Enum: "annually" "monthly" "quarterly" "semiAnnually"
Example: "monthly"
recognitionMethod
string
Default: "straightLine"

Specifies the method used to calculate and recognize revenue over the contract term.

straightLine - Allocates revenue evenly over time, calculating partial amounts first before distributing the remaining revenue evenly across the rest of the schedule.
dailyRate - Revenue is allocated using a daily recognition rate.
quantityBased - Allocates revenue when a usage record is associated with the contract line.
predefinedPercentages - Revenue is allocated using a table that assigns a specific percentage of the fixed amount to each recognition period.
projectPercentComplete - Recognizes revenue proportionally based on project progress, calculated from approved hours compared to scheduled hours or a specified progress percentage.
taskPercentComplete - Revenue is recognized based on each task's completion percentage, calculated from approved hours compared to scheduled hours or a specified progress percentage.
recognizeRevenueOnInvoice - Revenue is recognized in full when the contract line is invoiced, with no deferral, revenue schedule or separate revenue posting required.

For more information, read about recognition methods and in the Sage Intacct Help Center.

Enum: "dailyRate" "predefinedPercentages" "projectPercentComplete" "quantityBased" "recognizeRevenueOnInvoice" "straightLine" "taskPercentComplete"
Example: "straightLine"
recognitionSource
string or null
Default: null

Specifies the data used to determine the percent complete for a project or task. This field cannot be used if the revenue template is linked to a contract line and is only applicable when recognitionMethod is set to projectPercentComplete or taskPercentComplete.

estimatedHours - Percent complete is determined by dividing approved (actual) hours by the total estimated hours for the project or task.
observedPercentCompleted - Applies the latest percentage complete value with an as-of-date that5 is equal to or earlier than the invoice date, based on the project or task.
budgetedHours - Percent complete is calculated by dividing approved (actual) hours by the total budgeted hours for the project.
plannedHours - Calculates percent complete as approved (actual) hours divided by planned hours for the project or task.

Enum: "budgetedHours" "estimatedHours" null "observedPercentCompleted" "plannedHours"
Example: "estimatedHours"
stepRevenue
boolean
Default: false

Indicates whether the revenue template uses recognition thresholds. Only applicable when recognitionMethod is set to projectPercentComplete or taskPercentComplete.

Example: false
defaultPostingType
string
Default: "manual"

Specifies whether revenue is posted automatically by the system or requires manual posting.

automatic - Revenue journal entries are automatically posted on each scheduled posting date.
manual - When set to manual, revenue journal entries must be posted manually.

Enum: "automatic" "manual"
Example: "automatic"
revenueAdjustmentOption
string or null
Default: null

Defines how revenue scheduled before a contract line's delivery date or schedule resume date is handled. Applicable when delivering a contract line (event-based recognition) or resuming a schedule from hold. Applies only if recognitionMethod is set to dailyRate or straightLine.

oneTime - Sets all prior revenue scheduled before the delivery or resume date to occur on that date.
distributed - Starts the revenue schedule from the delivery or resume date and evenly spreads the revenue across the remaining term to catch up for missed periods.
walkForward - Regenerates the revenue schedule from the delivery or resume date and extends the end date by the number of days shifted. Partial periods are prorated, but full period amounts remain unchanged.

Enum: "distributed" null "oneTime" "walkForward"
Example: "oneTime"
Array of objects

Defines the percentage of the total revenue amount to be recognized in each period. Only applicable if recognitionMethod is set to predefinedPercentages or projectPercentComplete, or if recognitionMethod is set to taskPercentComplete AND stepRevenue is set to true.

Array
monthsOffset
integer or null
Default: null

Specifies the number of months from the contract line start date to delay the start of revenue recognition. If recognitionMethod is set to predefinedPercentages, enter the number of months in the future from the contract line start date the corresponding recognitionPercent should post.

Example: 5
percentToRecognize
string <decimal-precision-2>

Specifies the percentage of the total revenue amount to recognize in the current period.

Example: "10"
thresholdPercent
string <decimal-precision-2>

Specifies the minimum percentage of completion required before revenue can be recognized.

Example: "70"
isSystemGenerated
boolean
Default: false

Indicates if the revenue template is system generated.

Example: false
status
string
Default: "active"

Object status. Active objects are fully functional. Inactive objects are essentially hidden and cannot be used or referenced.

Enum: "active" "inactive"
Example: "active"
Responses
201

Created

400

Bad Request

Request samples
application/json
{
  • "id": "PREDEFINED QUARTERLY",
  • "description": "QUARTERLY RECOGNITION",
  • "schedulePeriod": "monthly",
  • "recognitionMethod": "predefinedPercentages",
  • "recognitionSource": "estimatedHours",
  • "stepRevenue": false,
  • "revenueAdjustmentOption": null,
  • "defaultPostingType": "manual",
  • "status": "active",
  • "isSystemGenerated": false,
  • "recognitionPercentages": [
    • {
      • "monthsOffset": 0,
      • "thresholdPercent": "60",
      • "percentToRecognize": "20"
      },
    • {
      • "monthsOffset": 3,
      • "thresholdPercent": "40",
      • "percentToRecognize": "40"
      },
    • {
      • "monthsOffset": 5,
      • "thresholdPercent": "25",
      • "percentToRecognize": "25"
      },
    • {
      • "monthsOffset": 7,
      • "thresholdPercent": "15",
      • "percentToRecognize": "15"
      }
    ]
}
Response samples
application/json
{
  • "ia::result": {
    • "key": "34",
    • "id": "PREDEFINED QUARTERLY",
    • "href": "/objects/contracts/revenue-template/34"
    },
  • "ia::meta": {
    • "totalCount": 1,
    • "totalSuccess": 1,
    • "totalError": 0
    }
}

Get a revenue template

get/objects/contracts/revenue-template/{key}

Returns detailed information for a specified revenue template.

SecurityOAuth2
Request
path Parameters
key
required
string

System-assigned key for the revenue template.

Example: 25
Responses
200

OK

400

Bad Request

Request samples
Response samples
application/json
{
  • "ia::result": {
    • "key": "25",
    • "id": "PREDEFINED QUARTERLY",
    • "description": "QUARTERLY RECOGNITION",
    • "schedulePeriod": "monthly",
    • "recognitionMethod": "predefinedPercentages",
    • "recognitionSource": "estimatedHours",
    • "stepRevenue": false,
    • "revenueAdjustmentOption": null,
    • "defaultPostingType": "manual",
    • "status": "active",
    • "isSystemGenerated": false,
    • "audit": {
      • "modifiedDateTime": "2023-09-26T07:35:01Z",
      • "createdDateTime": "2019-04-26T06:00:38Z",
      • "createdByUser": {
        },
      • "createdBy": "1",
      • "modifiedByUser": {
        },
      • "modifiedBy": "1"
      },
    • "recognitionPercentages": [
      • {
        },
      • {
        }
      ],
    • "href": "/objects/contracts/revenue-template/25"
    },
  • "ia::meta": {
    • "totalCount": 1,
    • "totalSuccess": 1,
    • "totalError": 0
    }
}

Update a revenue template

patch/objects/contracts/revenue-template/{key}

Updates an existing revenue template by setting field values. Any fields not provided remain unchanged.

SecurityOAuth2
Request
path Parameters
key
required
string

System-assigned key for the revenue template.

Example: 25
Request Body schema: application/json
description
string

Describes the intended use of the revenue template, for example, include the type of contract lines it applies to.

Example: "Applies to fixed-fee contracts where revenue is recognized using the straight line method."
schedulePeriod
string
Default: "monthly"

Specifies the frequency at which revenue is recognized over the duration of the contract. This determines how often revenue is allocated and posted.

Enum: "annually" "monthly" "quarterly" "semiAnnually"
Example: "monthly"
recognitionMethod
string
Default: "straightLine"

Specifies the method used to calculate and recognize revenue over the contract term.

straightLine - Allocates revenue evenly over time, calculating partial amounts first before distributing the remaining revenue evenly across the rest of the schedule.
dailyRate - Revenue is allocated using a daily recognition rate.
quantityBased - Allocates revenue when a usage record is associated with the contract line.
predefinedPercentages - Revenue is allocated using a table that assigns a specific percentage of the fixed amount to each recognition period.
projectPercentComplete - Recognizes revenue proportionally based on project progress, calculated from approved hours compared to scheduled hours or a specified progress percentage.
taskPercentComplete - Revenue is recognized based on each task's completion percentage, calculated from approved hours compared to scheduled hours or a specified progress percentage.
recognizeRevenueOnInvoice - Revenue is recognized in full when the contract line is invoiced, with no deferral, revenue schedule or separate revenue posting required.

For more information, read about recognition methods and in the Sage Intacct Help Center.

Enum: "dailyRate" "predefinedPercentages" "projectPercentComplete" "quantityBased" "recognizeRevenueOnInvoice" "straightLine" "taskPercentComplete"
Example: "straightLine"
recognitionSource
string or null
Default: null

Specifies the data used to determine the percent complete for a project or task. This field cannot be used if the revenue template is linked to a contract line and is only applicable when recognitionMethod is set to projectPercentComplete or taskPercentComplete.

estimatedHours - Percent complete is determined by dividing approved (actual) hours by the total estimated hours for the project or task.
observedPercentCompleted - Applies the latest percentage complete value with an as-of-date that5 is equal to or earlier than the invoice date, based on the project or task.
budgetedHours - Percent complete is calculated by dividing approved (actual) hours by the total budgeted hours for the project.
plannedHours - Calculates percent complete as approved (actual) hours divided by planned hours for the project or task.

Enum: "budgetedHours" "estimatedHours" null "observedPercentCompleted" "plannedHours"
Example: "estimatedHours"
stepRevenue
boolean
Default: false

Indicates whether the revenue template uses recognition thresholds. Only applicable when recognitionMethod is set to projectPercentComplete or taskPercentComplete.

Example: false
defaultPostingType
string
Default: "manual"

Specifies whether revenue is posted automatically by the system or requires manual posting.

automatic - Revenue journal entries are automatically posted on each scheduled posting date.
manual - When set to manual, revenue journal entries must be posted manually.

Enum: "automatic" "manual"
Example: "automatic"
revenueAdjustmentOption
string or null
Default: null

Defines how revenue scheduled before a contract line's delivery date or schedule resume date is handled. Applicable when delivering a contract line (event-based recognition) or resuming a schedule from hold. Applies only if recognitionMethod is set to dailyRate or straightLine.

oneTime - Sets all prior revenue scheduled before the delivery or resume date to occur on that date.
distributed - Starts the revenue schedule from the delivery or resume date and evenly spreads the revenue across the remaining term to catch up for missed periods.
walkForward - Regenerates the revenue schedule from the delivery or resume date and extends the end date by the number of days shifted. Partial periods are prorated, but full period amounts remain unchanged.

Enum: "distributed" null "oneTime" "walkForward"
Example: "oneTime"
Array of objects

Defines the percentage of the total revenue amount to be recognized in each period. Only applicable if recognitionMethod is set to predefinedPercentages or projectPercentComplete, or if recognitionMethod is set to taskPercentComplete AND stepRevenue is set to true.

Array
monthsOffset
integer or null
Default: null

Specifies the number of months from the contract line start date to delay the start of revenue recognition. If recognitionMethod is set to predefinedPercentages, enter the number of months in the future from the contract line start date the corresponding recognitionPercent should post.

Example: 5
percentToRecognize
string <decimal-precision-2>

Specifies the percentage of the total revenue amount to recognize in the current period.

Example: "10"
thresholdPercent
string <decimal-precision-2>

Specifies the minimum percentage of completion required before revenue can be recognized.

Example: "70"
isSystemGenerated
boolean
Default: false

Indicates if the revenue template is system generated.

Example: false
status
string
Default: "active"

Object status. Active objects are fully functional. Inactive objects are essentially hidden and cannot be used or referenced.

Enum: "active" "inactive"
Example: "active"
Responses
200

OK

400

Bad Request

Request samples
application/json
{
  • "description": "QUARTERLY RECOGNITION",
  • "schedulePeriod": "monthly",
  • "recognitionMethod": "predefinedPercentages",
  • "recognitionSource": "estimatedHours",
  • "stepRevenue": false,
  • "revenueAdjustmentOption": null,
  • "defaultPostingType": "manual",
  • "status": "active",
  • "recognitionPercentages": [
    • {
      • "monthsOffset": null,
      • "thresholdPercent": "50.00",
      • "percentToRecognize": "70.00"
      },
    • {
      • "monthsOffset": null,
      • "thresholdPercent": "100.00",
      • "percentToRecognize": "30.00"
      }
    ]
}
Response samples
application/json
{
  • "ia::result": {
    • "key": "25",
    • "id": "PREDEFINED QUARTERLY",
    • "href": "/objects/contracts/revenue-template/25"
    },
  • "ia::meta": {
    • "totalCount": 1,
    • "totalSuccess": 1,
    • "totalError": 0
    }
}

Delete a revenue template

delete/objects/contracts/revenue-template/{key}

Deletes a revenue template.

SecurityOAuth2
Request
path Parameters
key
required
string

System-assigned key for the revenue template.

Example: 25
Responses
204

No Content

400

Bad Request

Request samples
Response samples
application/json
{
  • "ia::result": {
    • "ia::error": {
      • "code": "invalidRequest",
      • "message": "A POST request requires a payload",
      • "errorId": "REST-1028",
      • "additionalInfo": {
        },
      • "supportId": "Kxi78%7EZuyXBDEGVHD2UmO1phYXDQAAAAo"
      }
    },
  • "ia::meta": {
    • "totalCount": 1,
    • "totalSuccess": 0,
    • "totalError": 1
    }
}