ExpensesDelete an employee expense (v2)

Delete an employee expense (v2)

Deletes an unapproved, uninvoiced employee expense together with all its receipt files (v2 route).

Use it to:

  • Expense app withdrawing a draft expense
  • Integration rolling back an expense it created in error before approval

Not for:

  • Removing only a receipt — DELETE /v2/employee-expense/{employeeExpenseID}/image / deletefile

Behaviour:

  • Not idempotent.
  • A second delete of the same ID fails with 500 Code 100 (the expense no longer exists).
  • Safe to retry only under a condition. After a lost response, check with GET that the expense still exists before retrying.
  • Duplicates: n/a
  • Changes are visible to the next read immediately.

Call first: GET /v2/employee-expense, GET /v2/employee-expense/{employeeExpenseID}

See also: DELETE /v1/employee-expense/{employeeExpenseID}, DELETE /v2/employee-expense/{employeeExpenseID}/image, DELETE /v2/employee-expense/{employeeExpenseID}/file

Not yet documented: examples.

curl -X DELETE "https://app3.timelog.com/your-account/api/v2/employee-expense/123" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_TOKEN"
"null"
DELETE
/v2/employee-expense/{employeeExpenseID}
DELETE
Base URLstring

Target server for requests. Edit to use your own host.

Bearer Token
Bearer Tokenstring
Required

OAuth 2.0 bearer token, sent as Authorization: Bearer <token>. JWT and reference tokens are both accepted. The token must carry the required scope (default tlp). The token's sub claim is the acting user. A token WITHOUT sub (client-credentials) acts as the system service user. If the sub user cannot log in (inactive, locked, deleted), the request is rejected with 401 — it is no longer let through without a user. > Not yet documented: how to obtain a token. > Not yet documented: token lifetime.

OAuth 2.0 bearer token, sent as Authorization: Bearer <token>. JWT and reference tokens are both accepted. The token must carry the required scope (default tlp). The token's sub claim is the acting user. A token WITHOUT sub (client-credentials) acts as the system service user. If the sub user cannot log in (inactive, locked, deleted), the request is rejected with 401 — it is no longer let through without a user. > Not yet documented: how to obtain a token. > Not yet documented: token lifetime.
path
employeeExpenseIDinteger
Required

The expense's integer ID.

Format: int32
Request Preview
Response

Response will appear here after sending the request

Authentication

header
Authorizationstring
Required

Bearer token. OAuth 2.0 bearer token, sent as Authorization: Bearer <token>. JWT and reference tokens are both accepted. The token must carry the required scope (default tlp).

The token's sub claim is the acting user. A token WITHOUT sub (client-credentials) acts as the system service user. If the sub user cannot log in (inactive, locked, deleted), the request is rejected with 401 — it is no longer let through without a user.

Not yet documented: how to obtain a token.

Not yet documented: token lifetime.

Path Parameters

employeeExpenseIDinteger
Required

The expense's integer ID.

Responses

*Success without content: HTTP 200 with the literal JSON body null. Body is the JSON literal null.

Order: none

Empty result: none*