Edits an existing bill with audit resolution options
Use this endpoint to edit a bill’s header and line items with control over audit behavior. Supports save-as-resolved (auto-resolve failed audits), re-audit (force re-run of all audits), and rerun-resolved-issues (reopen previously resolved issues). Replaces the V3 EditBill endpoint.
Rules for editing:
- Voided bills cannot be edited
- Users without UpdateApprovedBills.Edit permission cannot edit approved bills
- Users without ExportBills.Edit permission cannot edit exported bills (AP, GL, or Payment)
- Bills must retain at least one line item
- Required bill headers (if configured) are 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 | Unique numeric identifier of the bill to edit | integer (int32) | Required |
Request Body
BillEditV202604
| Property | Description | Type | ||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| accountBodyLines | The account line items Required (defined) | BillAccountBodyLineEdit[] | ||||||||||||||||||||||||||||||||||||
|
BillAccountBodyLineEdit properties
|
||||||||||||||||||||||||||||||||||||||
| 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
|
||||||||||||||||||||||||||||||||||||||
| 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 | ||||||||||||||||||||||||||||||||||||
| rerunResolvedIssues | When true, re-runs audit checks on previously resolved issues after save. When false, resolved issues are not re-evaluated. Required | boolean | ||||||||||||||||||||||||||||||||||||
| saveAsResolved | When true, saves the bill and marks all current audit issues as resolved. When false, issues remain unresolved. Required | boolean | ||||||||||||||||||||||||||||||||||||
| saveAsResolvedComment | Optional comment explaining why audit issues were resolved. Maximum 255 characters. Null if not provided. Max length of 255 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
{ "accountBodyLines": [
{ "bodyLineId": 1, "caption": "string", "cost": 1.0, "costUnitId": 1, "observationTypeId": 1, "specialChargeId": 1
}
], "accountId": 1, "accountPeriod": 1, "beginDate": "2026-06-12", "billingPeriod": 1, "controlCode": "string", "dueDate": "2026-06-12", "endDate": "2026-06-12", "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-06-12", "note": "string", "rerunResolvedIssues": false, "saveAsResolved": false, "saveAsResolvedComment": "string", "setToUnapproved": false, "statementDate": "2026-06-12"
}
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
{ "billId": 1
}
400
Bad Request
The request was malformed or contains invalid parameters. Check the request body and query parameters.
404
Not Found
The requested resource was not found. Verify the ID or path is correct.