Budgets

A budget is a plan to help estimate revenue and expenses for operations. The budget object is essentially a header that contains an array of budget-detail objects. Before you can create or import a budget, several items in Sage Intacct must be set up:

  • Budgetable reporting periods: Reporting periods must exist and must be marked as Budgetable. Most often, budgetable periods are monthly.
  • Accounts: Each account for which you want to create a budget must exist in the Chart of Accounts.
  • Dimensions: Although using dimensions in budgets isn't required, dimensions such as Location, Department, or Employee can be included in a budget if they've been created in Intacct.
    Please be aware that this object is currently "Uncertified", signifying that it has not undergone the complete review process and the design may change during ongoing refinement. Users are advised to exercise discretion in using this object and are encouraged to provide feedback.

List budgets

get/objects/general-ledger/budget

Returns a collection with a key, ID, and link for each budget. This operation is mostly for use in testing; use the query service to find budgets that meet specific criteria and to specify the properties that you want in the response.

Permissions and other requirements
SubscriptionGeneral Ledger
User typeBusiness, Employee, Approver
PermissionsList, View Budgets
SecurityOAuth2
Responses
200

OK

400

Bad Request

Request samples
Response samples
application/json
{
  • "ia::result": [
    • {
      • "key": "1",
      • "id": "Std_Budget",
      • "href": "/objects/general-ledger/budget/1"
      },
    • {
      • "key": "2",
      • "id": "KPI Budgets",
      • "href": "/objects/general-ledger/budget/2"
      }
    ],
  • "ia::meta": {
    • "totalCount": 2,
    • "start": 1,
    • "pageSize": 100,
    • "next": null,
    • "previous": null
    }
}

Create a budget

post/objects/general-ledger/budget

Creates a new budget.

Permissions and other requirements
SubscriptionGeneral Ledger
User typeBusiness User
PermissionsAdd Budgets
SecurityOAuth2
Request
Request Body schema: application/json

Budget to create

id
required
string

Budget name or ID. Best practice is to give the budget an ID that doesn't reference a particular fiscal year or date. This allows appending new time periods to an existing budget.

Example: "Employee Expense Budget"
description
required
string

Description of the budget.

Example: "Budget for project costs"
isDefault
boolean
Default: false

Set to true to mark the budget as the company's default budget to use in financial reports. One top-level budget must be designated as the default. The system sets this value for all other budgets to false.

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"
consolidateAmounts
boolean
Default: false

For companies using consolidation, set this field to true to mark this as a consolidated budget.

Example: false
currency
string

Consolidation currency code. Required if consolidateAmounts is set to true.

Example: "USD"
postProjectEstimate
boolean
Default: false

Set to true to enable project estimates to post to this budget. Requires Construction subscription.

Example: false
postProjectContract
boolean
Default: false

Set to true to enable project contract to post to this budget.

Example: false
Array of objects

Array of budget details for each reporting period.

Array
required
object

The General Ledger or Statistical account that this budget is for. The account in a budget-detail object cannot be changed after it has been created.

amount
required
string <decimal-precision-2>

Budget amount for the specified period. The API does not compute amounts for calculated budgets, so an amount must be provided when creating a budget-detail.

Example: "100.00"
object

Dimensions to apply to this budget detail. Any dimension that is available in the General Ledger can be used with budgets, including user-defined dimensions (not listed here).

To track budget data at the dimension level, such as tracking data for different departments and locations, you will need to add multiple budget detail objects for each account. For example, if you are entering Travel Expense data for 3 locations, you will need 3 budget detail objects for this account, one for each location.

The dimensions in a budget-detail object cannot be changed after it has been saved.

object

The reporting period for the budget detail. A period cannot be used if it is already being used in another budget combination of reporting period, account, department, and location.

notes
string

Notes or description of the budget detail.

Example: "Projection for 2021"
object

To create a budget from an existing budget, provide the type of budget to use and the planned growth amount. The resulting amount will be computed when you create or update the budget-detail.

object
Responses
201

Created

400

Bad Request

Request samples
application/json
{
  • "id": "Budget1",
  • "description": "First budget",
  • "isDefault": true,
  • "status": "active",
  • "consolidateAmounts": false,
  • "currency": null,
  • "postProjectEstimate": false,
  • "lines": [
    • {
      • "glAccount": {
        },
      • "dimensions": {
        },
      • "reportingPeriod": {
        },
      • "amount": "100",
      • "budgetGrowth": {
        }
      },
    • {
      • "glAccount": {
        },
      • "dimensions": {
        },
      • "reportingPeriod": {
        },
      • "amount": "150",
      • "budgetGrowth": {
        }
      },
    • {
      • "glAccount": {
        },
      • "dimensions": {
        },
      • "reportingPeriod": {
        },
      • "amount": "100",
      • "budgetGrowth": {
        }
      }
    ]
}
Response samples
application/json
{
  • "ia::result": {
    • "key": "41",
    • "id": "Budget1",
    • "href": "/objects/general-ledger/budget/41"
    },
  • "ia::meta": {
    • "totalCount": 1
    }
}

Get a budget

get/objects/general-ledger/budget/{key}

Returns detailed information for a specified budget.

Permissions and other requirements
SubscriptionGeneral Ledger
User typeBusiness, Employee, Approver
PermissionsList, View Budgets
SecurityOAuth2
Request
path Parameters
key
required
string

System-assigned key for the budget.

Example: 291
Responses
200

OK

400

Bad Request

Request samples
Response samples
application/json
{
  • "ia::result": {
    • "key": "5",
    • "id": "Employee Expense Budget",
    • "description": "Employee Expense Budget",
    • "isDefault": false,
    • "userName": "Admin",
    • "status": "active",
    • "audit": {
      • "createdDateTime": "2022-02-16T05:13:36Z",
      • "modifiedDateTime": "2022-02-16T05:13:36Z",
      • "createdBy": "1",
      • "modifiedBy": "1"
      },
    • "consolidateAmounts": false,
    • "currency": "USD",
    • "postProjectEstimate": false,
    • "postProjectContract": false,
    • "entity": {
      • "key": null,
      • "id": null,
      • "name": null
      },
    • "lines": [
      • {
        }
      ],
    • "href": "/objects/general-ledger/budget/5"
    },
  • "ia::meta": {
    • "totalCount": 1
    }
}

Update a budget

patch/objects/general-ledger/budget/{key}

Updates an existing budget and its budget details by setting field values. Any fields not provided remain unchanged.

  • To update an existing budget-detail line within a budget, provide the budget-detail key value.
  • To add a new budget-detail line to a budget, do not include a key value.
  • To delete a budget-detail line, send a DELETE /objects/general-ledger/budget-detail/{key} request.
Permissions and other requirements
SubscriptionGeneral Ledger
User typeBusiness User
PermissionsEdit Budgets
SecurityOAuth2
Request
path Parameters
key
required
string

System-assigned key for the budget.

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

Description of the budget.

Example: "Budget for project costs"
isDefault
boolean
Default: false

Set to true to mark the budget as the company's default budget to use in financial reports. One top-level budget must be designated as the default. The system sets this value for all other budgets to false.

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"
consolidateAmounts
boolean
Default: false

For companies using consolidation, set this field to true to mark this as a consolidated budget.

Example: false
currency
string

Consolidation currency code. Required if consolidateAmounts is set to true.

Example: "USD"
postProjectEstimate
boolean
Default: false

Set to true to enable project estimates to post to this budget. Requires Construction subscription.

Example: false
postProjectContract
boolean
Default: false

Set to true to enable project contract to post to this budget.

Example: false
Array of objects

Array of budget details for each reporting period.

Array
object

The General Ledger or Statistical account that this budget is for. The account in a budget-detail object cannot be changed after it has been created.

object

Dimensions to apply to this budget detail. Any dimension that is available in the General Ledger can be used with budgets, including user-defined dimensions (not listed here).

To track budget data at the dimension level, such as tracking data for different departments and locations, you will need to add multiple budget detail objects for each account. For example, if you are entering Travel Expense data for 3 locations, you will need 3 budget detail objects for this account, one for each location.

The dimensions in a budget-detail object cannot be changed after it has been saved.

object

The reporting period for the budget detail. A period cannot be used if it is already being used in another budget combination of reporting period, account, department, and location.

notes
string

Notes or description of the budget detail.

Example: "Projection for 2021"
object

To create a budget from an existing budget, provide the type of budget to use and the planned growth amount. The resulting amount will be computed when you create or update the budget-detail.

amount
string <decimal-precision-2>

Budget amount for the specified period. The API does not compute amounts for calculated budgets, so an amount must be provided when creating a budget-detail.

Example: "100.00"
object
Responses
200

OK

400

Bad Request

Request samples
application/json
{
  • "status": "inactive"
}
Response samples
application/json
{
  • "ia::result": {
    • "key": "21",
    • "id": "Std_Budget",
    • "href": "/objects/general-ledger/budget/21"
    },
  • "ia::meta": {
    • "totalCount": 1
    }
}

Delete budget

delete/objects/general-ledger/budget/{key}

Deletes a budget. You cannot delete the default budget or any budget that is being used by a financial report.

Carefully consider the implications before you delete a budget. After you delete a budget, you will no longer be able to use its data to create future budgets and it can no longer be used in financial reports.

Permissions and other requirements
SubscriptionGeneral Ledger
User typeBusiness User
PermissionsDelete Budgets
SecurityOAuth2
Request
path Parameters
key
required
string

System-assigned key for the budget.

Example: 291
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 budgets

post/services/core/query

Queries an object for filtered data.

SecurityOAuth2
Request
Request Body schema: application/json
object
string

Object type to query, in the form <application-name>/<object name>. For custom objects use platform-apps/nsp::<object-name>.

Example: "general-ledger/budget"
fields
Array of strings

List of fields to include in the response. Can be any combination of these:

  • The name of a field in the object that you are querying, such as id.

  • The name of a field in a related object, using the form relatedObjectName.fieldName, such as vendor.id.

  • The result of an aggregate function run against the values in the returned objects. Use the form function:fieldName, such as min:startDate to return the earliest starting date. Valid function names are:

    • count
    • avg
    • sum
    • min
    • max
  • The result of an aggregate function run against the values in related objects, using the form function:relatedObjectName.fieldName, such as max:vendor.creditLimit. The same functions are supported as for object fields.

Example: ["key","id","max:vendor.creditLimit"]
Array of equal (object) or not equal (object) or less than (object) or (less than or equal (object)) or greater than (object) or (greater than or equal (object)) or in (object) or not in (object) or between (object) or not between (object) or contains (object) or does not contain (object) or starts with (object) or does not start with (object) or ends with (object) or does not end with (object)

Filter conditions to select the objects to return based on their field values. You use operators and conditions to build your filter, such as {"$eq":{"status":"active"}} to select objects in which status is equal to "active".

Example: [{"$eq":{"status":"active"}},{"$gt":{"totalDue":"1000"}},{"$contains":{"name":"Acme"}}]
Array
Any of:

Field value must be equal to this specified value.

For date fields, you can use these macro values that are relative to the current date or the asOfDate in filterParameters, if set:

  • today
  • currentWeek
  • currentMonth
  • currentQuarter
  • currentYear
  • yesterday
  • lastWeek
  • priorMonth
  • priorQuarter
  • priorYear

These are most useful for queries that you want to save and use repeatedly, such as for views or reports. Just change the asOfDate each time to retrieve the same data set for different time periods.

For example, {"eq":{"postingDate":"priorYear"}}.

object

The field name and value to be compared with object values.

Example: {"status":"active"}
filterExpression
string
Default: "and"

Logical operators to apply when there are multiple filter conditions. The conditions in the filters array are implicitly numbered starting at 1. Supports and, or, and grouping with parentheses.

Shortcuts:

  • and by itself means that all conditions must be true.
  • or by itself means that at least one condition must be true.
Example: "(1 and 2) or 3"
object

Pre-defined filter options.

asOfDate
string <date>

The "as of" date to use with any relative date comparisons in filters. For example, if asOfDate is set to "2022-04-01" then priorMonth will be "03".

The current date is used if asOfDate is not set.

Example: "2022-04-01"
includeHierarchyFields
boolean
Default: false

Set to true to include hierarchical structure information with each object in the response.

Example: false
caseSensitiveComparison
boolean
Default: true

Queries are case-sensitive by default. Set to false to ignore case in a query.

Example: true
includePrivate
boolean
Default: false

By default, in a multi-entity company, queries from the top-level entity do not access data in private entities. Set includePrivate to true if you want to query data in private entities.

Example: false
Array of objects

Set the order of the results by specifying field names to sort by and whether they should be in ascending or descending order.

Example: [{"totalDue":"asc"},{"lastPaymentMadeDate":"desc"}]
Array
property name*
additional property
string
Enum: "asc" "desc"
start
integer

First record of the result set to include in the response.

Example: 1
size
integer

Number of records to include in the response.

Example: 100
Responses
200

OK

400

Bad Request

Request samples
application/json
{
  • "object": "general-ledger/budget",
  • "filters": [
    • {
      • "$eq": {
        }
      }
    ],
  • "fields": [
    • "key",
    • "id",
    • "description",
    • "isDefault"
    ],
  • "orderBy": [
    • {
      • "id": "asc"
      }
    ]
}
Response samples
application/json
{
  • "ia::result": [
    • {
      • "key": "5",
      • "id": "Budget1",
      • "description": "First budget",
      • "isDefault": true
      }
    ],
  • "ia::meta": {
    • "totalCount": 1,
    • "start": 1,
    • "pageSize": 100,
    • "next": null,
    • "previous": null
    }
}