PUT /api/v3/bill/{billId}

Edit an existing bill

EditBillV3 Permissions: BillsAndBatches (Edit)

If enabled, audits will be processed for the edited bill.

Below are some clarifications regarding the rules for editing an existing bill:

  • Bills which are marked as “void” may not be edited
  • Users without UpdateApprovedBills.Edit permission may not edit bills marked as “Approved”
  • Users without ExportBills.Edit permission may not edit bills exported to AP or GL
  • Bills must have at least one line item
  • If configured, required bill headers will be enforced

Request Headers

Header Value Required Description
ECI-ApiKey string Yes Your API key. See Authentication.
Content-Type application/json Yes All requests must specify JSON content type, including the request body.

Path Parameters

Name Description Type Required
billId integer (int32) Required

Request Body

BillEdit
Property Description Type
accountBodyLines The account line items Required (defined) BillAccountBodyLineEdit[]
BillAccountBodyLineEdit properties
Property Description Type
bodyLineId The bodyline’s id for an existing bodyline Required (defined) integer (int32)
caption The caption Required Must be between 0 and 100 characters string
cost The cost attributed to the line item Required when CostUnitId is set number (double)
costUnitId The bodyline’s cost unit of measure for this Required when Cost is set integer (int32)
observationTypeId The bodyline’s observation type Required integer (int32)
specialChargeId The bodyline’s special charge (SingleLine) id, if applicable Required (defined) integer (int32)
accountId The bill’s account Required integer (int32)
accountPeriod The bill’s accounting period Depending on your settings you can have up to 13 accounting periods Must be between 190001 and 209913 Required (defined) integer (int32)
beginDate The bill’s begin date Required Must be between 1899-12-31 and 3000-01-01 string (date-time)
billingPeriod The bill’s billing period Required Must be between 190001 and 209912 integer (int32)
controlCode The bill’s control code Must be between 0 and 255 characters Required (defined) string
dueDate The date and time the bill is due Must be between 1899-12-31 and 3000-01-01 Required (defined) string (date-time)
endDate The bill’s end date Required Must be greater than BeginDate Must be between 1899-12-31 and 3000-01-01 string (date-time)
estimated Indicates if the bill is estimated Required (defined) boolean
invoiceNumber The bill’s invoice number Must be between 0 and 32 characters Required (defined) string
meters The meters with line items Required (defined) BillMeterEdit[]
BillMeterEdit properties
Property Description Type
bodyLines Required Cannot be Empty BillMeterBodyLineEdit[]
BillMeterBodyLineEdit properties
Property Description Type
bodyLineId The bodyline’s id for an existing bodyline Required (defined) integer (int32)
caption The caption Required Must be between 0 and 100 characters string
cost The cost attributed to the line item Required when CostUnitId is set number (double)
costUnitId The bodyline’s cost unit of measure for this Required when Cost is set integer (int32)
observationTypeId The bodyline’s observation type Required integer (int32)
value The line item’s value Required when ValueUnitId is set number (double)
valueUnitId The bodyline’s unit of measure Required when Value is set integer (int32)
meterId The meter the line items are assigned to Required integer (int32)
nextReading The date and time the next reading Must be between 1899-12-31 and 3000-01-01 Required (defined) string (date-time)
note The bill note Required (defined) string
setToUnapproved The bill’s “approval change flag”. If a bill is approved and the approval system is turned on: true = unapprove bill, false = don’t change bill’s approval status. If the approval system is not turned on: the bill’s approval status will not be changed regardless of this setting. Required (defined) boolean
statementDate The date and time of the bill statement Must be between 1899-12-31 and 3000-01-01 Required (defined) string (date-time)
Example Request Body application/json
{  "accountBodyLines": [
    {    "bodyLineId": 1,    "caption": "string",    "cost": 1.0,    "costUnitId": 1,    "observationTypeId": 1,    "specialChargeId": 1
  }
  ],  "accountId": 1,  "accountPeriod": 1,  "beginDate": "2026-03-30",  "billingPeriod": 1,  "controlCode": "string",  "dueDate": "2026-03-30",  "endDate": "2026-03-30",  "estimated": false,  "invoiceNumber": "string",  "meters": [
    {    "bodyLines": [
      {      "bodyLineId": 1,      "caption": "string",      "cost": 1.0,      "costUnitId": 1,      "observationTypeId": 1,      "value": 1.0,      "valueUnitId": 1
    }
    ],    "meterId": 1
  }
  ],  "nextReading": "2026-03-30",  "note": "string",  "setToUnapproved": false,  "statementDate": "2026-03-30"
}

Responses

200 OK The request succeeded and the response body contains the requested data.

Response Body Parameters

BillIdResponse
Property Description Type
billId The bill identifier integer (int32)
Example Response application/json
{  "billId": 1
}