Correct logged time before it is billed

update_time_entry edits a single unbilled entry and recomputes the amount when hours or rate changes. Entries attached to an invoice are immutable, because editing them would not change the document the client received.

Written and reviewed by the Billr team. Published , last reviewed .

Who this is for
Anyone reviewing a week of agent-logged time before invoicing it.
Billr capabilities used
update_time_entrydelete_time_entrylist_time_entries

What you need first

  • The entry id, from list_time_entries or list_unbilled.
  • A key with the Read and draft profile for edits; deletion needs the full profile.
  • Confirmation that the entry is not already attached to an invoice.

Step by step

  1. 01Change one field or several

    Pass only what changes. Setting rate also recomputes the amount as hours times rate, and setting client_id or client_name reassigns the entry.

    Example
    update_time_entry  {
      "time_entry_id": "9a2d0b71-6c34-4f52-8e19-2b7c4d0a6f31",
      "rate": 150
    }
  2. 02Know when an entry is frozen

    A billed entry refuses edits with a clear message. The database keeps linked work immutable while its invoice exists, and cancelling that invoice does not release it.

  3. 03Delete only when the entry was a mistake

    delete_time_entry removes an unbilled entry and cannot be undone. It needs the full key profile, and the response reminds you to re-log the time if the deletion was wrong.

    Example
    delete_time_entry  {
      "time_entry_id": "9a2d0b71-6c34-4f52-8e19-2b7c4d0a6f31"
    }
  4. 04Confirm the ledger

    Read the entry back, or list the client range again, and check is_billed is false before assuming the correction stuck.

Worked example

Fictional account, field names as returned by the server

You say

The analytics audit was 45 minutes at $150, fix that entry.

Your agent calls

  • update_time_entry { "time_entry_id": "9a2d0b71-6c34-4f52-8e19-2b7c4d0a6f31", "hours": 0.75, "rate": 150 }

Expected response, abridged

Example
{
  "summary": "Updated time entry: 0.75h on 2026-09-29",
  "time_entry": {
    "id": "9a2d0b71-6c34-4f52-8e19-2b7c4d0a6f31",
    "description": "Analytics audit",
    "hours": 0.75,
    "rate": 150,
    "amount": 112.5,
    "is_billable": true,
    "is_billed": false
  }
}

Limits and gotchas

  • Deletion requires the full profile, and the server records no undo for it.
  • Attached entries cannot be edited or unlinked while the invoice exists.
  • Changing hours or rate on an entry that someone already quoted does not update the quote.
  • Corrections never rewrite an invoice that has already been sent.

Troubleshooting

The edit is refused because the entry is billed
The work is attached to an invoice. Correct the draft with update_draft_invoice while it is still a draft, or leave the record as it stands.
The amount did not change
Adjust rate or hours; description or date changes do not touch the money on the entry.
Deletion is refused with a permission message
Deleting needs the full key profile. Use a key that has it, or leave the entry non-billable instead of deleting it.

Sources

Reviewed 2026-09-20 against Billr's own tool implementations and the client documentation linked above.

Once the entries are right, the monthly billing run prices and links them in one step.

Bill the month