Contract revenue templates

A contract revenue template defines the revenue recognition schedule for the flat/fixed amount associated with a contract line.

List contract 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 query 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 contract revenue template

post/objects/contracts/revenue-template

Creates a new contract revenue template.

SecurityOAuth2
Request
Request Body schema: application/json
required

Revenue template to create

id
required
string

Unique identifier for the revenue template.

Example: "STRAIGHTLINE_MANUAL"
description
string

Description of the purpose of the template. For example, describe the type of contract lines that will use this template.

Example: "STRAIGHTLINE MANUAL"
schedulePeriod
string
Default: "monthly"

Recognition schedule period.

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

Determines how revenue is calculated during the contract term.

  • straightLine - Revenue is allocated evenly over the recognition term. Partial periods are calculated as total schedule amount / total number of days in the recognition term) * (number of days in the partial period). Intacct calculates partial periods first, then spreads the remaining amount over the schedule via straight line.
  • dailyRate - Revenue is allocated using a daily recognition rate: (total schedule amount / number of days in recognition term) * (number of days in month)).
  • quantityBased - Revenue is allocated when a usage record is associated with the contract line: (the quantity used / the total contracted quantity) * Flat/Fixed amount. See an example of usage and quantity-based revenue recognition.
  • predefinedPercentages - Revenue is allocated based on a table of entries that map the period to recognize with the percentage of the Flat/Fixed amount to be recognized that period.
  • projectPercentComplete - Revenue for a fixed fee project is recognized proportionate to either approved hours divided by source hours or by a percentage determined by user input.
  • taskPercentComplete - Revenue for a task related to a fixed fee project is recognized proportionate to either approved hours divided by source hours or by a percentage determined by user input.
  • recognizeRevenueOnInvoice - Set by the system when Enable revenue recognition on invoice is set to true in the Configure Revenue Management page. This recognition method indicates there's no deferred revenue, so there's no revenue schedule or requirement for the user to post revenue separately.
Enum: "dailyRate" "predefinedPercentages" "projectPercentComplete" "quantityBased" "recognizeRevenueOnInvoice" "straightLine" "taskPercentComplete"
Example: "straightLine"
recognitionSource
string or null
Default: null

The data source Intacct uses to determine the percentage of completeness for the project or task.

  • estimatedHours - Intacct will divide the total Estimated hours for the project or task by the number of approved hours (Actual hours).
  • observedPercentCompleted - Intacct will use the most recent "As of date" equal to or less than the invoice date at the project or task level.
  • budgetedHours - Intacct will divide the total Budgeted hours for the project by the number of approved hours (Actual hours). This source is only applicable to Projects.
  • plannedHours - Intacct will divide the total Planned hours for the project or task by the number of approved hours (Actual hours).

You cannot set this field if a contract line is associated with the revenue template.

This field is only applicable when recognitionMethod = projectPercentComplete or taskPercentComplete.

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

Indicates whether the template uses recognition thresholds. Only applicable when recognitionMethod=projectPercentCompleteortaskPercentComplete`.

Example: false
defaultPostingType
string
Default: "manual"

How the revenue will be posted.

  • automatic - Intacct will automatically post the journal entry on each scheduled posting date.
  • manual - The user will manually post the journal entries when desired.
Enum: "automatic" "manual"
Example: "automatic"
revenueAdjustmentOption
string or null
Default: null

Sets how Intacct will deal with revenue scheduled prior to a contract line's delivery date or the revenue schedule's resume date. This option is applicable when delivering a contract line (event-based recognition) and when resuming a schedule from hold.

  • oneTim - Sets the scheduled posting date to the delivery or resume date for all revenue that was scheduled prior to the delivery or resume date.
  • distributed - Recalculates the revenue schedule term using the delivery or resume date as the start date and spreads the total revenue amount across the shortened schedule so that any skipped periods due to late delivery are eventually caught up.
  • walkForward - Regenerates the revenue schedule as of the delivery or resume date and pushes the end date out to the date that's equal to the number of days from the original revenue template Start date to the delivery or resume date. Intacct prorates any partial periods. The whole period amount remains equal to the originally scheduled whole period amount.

This option is only applicable if recognitionMethod = dailyRate or straightLine.

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

Only applicable if recognitionMethod = predefinedPercentages projectPercentComplete, or if recognitionMethod = taskPercentComplete AND stepRevenue = true.

Array
monthsOffset
integer or null
Default: null

If recognitionMethod = 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>

Percent to recognize.

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

Threshold percent.

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 contract revenue template

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

Returns detailed information for a specified contract revenue template.

SecurityOAuth2
Request
path Parameters
key
required
string

System-assigned key for the contract 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",
      • "createdBy": "1",
      • "modifiedBy": "1"
      },
    • "recognitionPercentages": [
      • {
        },
      • {
        }
      ],
    • "href": "/objects/contracts/revenue-template/25"
    },
  • "ia::meta": {
    • "totalCount": 1,
    • "totalSuccess": 1,
    • "totalError": 0
    }
}

Update a contract revenue template

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

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

SecurityOAuth2
Request
path Parameters
key
required
string

System-assigned key for the contract revenue template.

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

Description of the purpose of the template. For example, describe the type of contract lines that will use this template.

Example: "STRAIGHTLINE MANUAL"
schedulePeriod
string
Default: "monthly"

Recognition schedule period.

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

Determines how revenue is calculated during the contract term.

  • straightLine - Revenue is allocated evenly over the recognition term. Partial periods are calculated as total schedule amount / total number of days in the recognition term) * (number of days in the partial period). Intacct calculates partial periods first, then spreads the remaining amount over the schedule via straight line.
  • dailyRate - Revenue is allocated using a daily recognition rate: (total schedule amount / number of days in recognition term) * (number of days in month)).
  • quantityBased - Revenue is allocated when a usage record is associated with the contract line: (the quantity used / the total contracted quantity) * Flat/Fixed amount. See an example of usage and quantity-based revenue recognition.
  • predefinedPercentages - Revenue is allocated based on a table of entries that map the period to recognize with the percentage of the Flat/Fixed amount to be recognized that period.
  • projectPercentComplete - Revenue for a fixed fee project is recognized proportionate to either approved hours divided by source hours or by a percentage determined by user input.
  • taskPercentComplete - Revenue for a task related to a fixed fee project is recognized proportionate to either approved hours divided by source hours or by a percentage determined by user input.
  • recognizeRevenueOnInvoice - Set by the system when Enable revenue recognition on invoice is set to true in the Configure Revenue Management page. This recognition method indicates there's no deferred revenue, so there's no revenue schedule or requirement for the user to post revenue separately.
Enum: "dailyRate" "predefinedPercentages" "projectPercentComplete" "quantityBased" "recognizeRevenueOnInvoice" "straightLine" "taskPercentComplete"
Example: "straightLine"
recognitionSource
string or null
Default: null

The data source Intacct uses to determine the percentage of completeness for the project or task.

  • estimatedHours - Intacct will divide the total Estimated hours for the project or task by the number of approved hours (Actual hours).
  • observedPercentCompleted - Intacct will use the most recent "As of date" equal to or less than the invoice date at the project or task level.
  • budgetedHours - Intacct will divide the total Budgeted hours for the project by the number of approved hours (Actual hours). This source is only applicable to Projects.
  • plannedHours - Intacct will divide the total Planned hours for the project or task by the number of approved hours (Actual hours).

You cannot set this field if a contract line is associated with the revenue template.

This field is only applicable when recognitionMethod = projectPercentComplete or taskPercentComplete.

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

Indicates whether the template uses recognition thresholds. Only applicable when recognitionMethod=projectPercentCompleteortaskPercentComplete`.

Example: false
defaultPostingType
string
Default: "manual"

How the revenue will be posted.

  • automatic - Intacct will automatically post the journal entry on each scheduled posting date.
  • manual - The user will manually post the journal entries when desired.
Enum: "automatic" "manual"
Example: "automatic"
revenueAdjustmentOption
string or null
Default: null

Sets how Intacct will deal with revenue scheduled prior to a contract line's delivery date or the revenue schedule's resume date. This option is applicable when delivering a contract line (event-based recognition) and when resuming a schedule from hold.

  • oneTim - Sets the scheduled posting date to the delivery or resume date for all revenue that was scheduled prior to the delivery or resume date.
  • distributed - Recalculates the revenue schedule term using the delivery or resume date as the start date and spreads the total revenue amount across the shortened schedule so that any skipped periods due to late delivery are eventually caught up.
  • walkForward - Regenerates the revenue schedule as of the delivery or resume date and pushes the end date out to the date that's equal to the number of days from the original revenue template Start date to the delivery or resume date. Intacct prorates any partial periods. The whole period amount remains equal to the originally scheduled whole period amount.

This option is only applicable if recognitionMethod = dailyRate or straightLine.

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

Only applicable if recognitionMethod = predefinedPercentages projectPercentComplete, or if recognitionMethod = taskPercentComplete AND stepRevenue = true.

Array
monthsOffset
integer or null
Default: null

If recognitionMethod = 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>

Percent to recognize.

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

Threshold percent.

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 contract revenue template

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

Deletes a contract revenue template.

SecurityOAuth2
Request
path Parameters
key
required
string

System-assigned key for the contract 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
    }
}

Query revenue templates

post/services/core/query

Use the query service to find revenue templates that meet certain criteria and to specify the properties that are returned.

SecurityOAuth2
Responses
200

OK

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
    }
}