API /
Reference /
Expenses
Update line item
PATCH
https://api.light.inc/v1/expenses/{expenseId}/line-items/{lineItemId}
Updates an existing expense line item
Omit a field to keep it, send null to clear it. Only while the expense is IN_DRAFT or CREATED (EXPENSE_NOT_EDITABLE); unknown line is 404 EXPENSE_LINE_ITEM_NOT_FOUND.
Authorization
Send one of these on every request. See
Authentication for how to get credentials.
API key Basic authentication header of the form Basic <api_key> , where <api_key> is your api key.
Bearer token
Request body
application/json;charset=UTF-8
originalAmount
integer · int64
billingAmount
integer · int64
accountId
string · uuid
costCenterId
string · uuid
description
string
reimbursementCategoryId
string · uuid
Response
id
string · uuid
expenseId
string · uuid
originalAmount
integer · int64
billingAmount
integer · int64
accountId
string · uuid
costCenterId
string · uuid
description
string
reimbursementCategoryId
string · uuid
createdAt
string · date-time
updatedAt
string · date-time
cURL
JavaScript
Python
Copy
curl -X PATCH "https://api.light.inc/v1/expenses/3c90c3cc-0d44-4b50-8888-8dd25736052a/line-items/3c90c3cc-0d44-4b50-8888-8dd25736052a" \
-H "Authorization: Basic YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"originalAmount": 100000,
"billingAmount": 100000,
"accountId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"costCenterId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"description": "string",
"reimbursementCategoryId": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}'
Copy
const res = await fetch("https://api.light.inc/v1/expenses/3c90c3cc-0d44-4b50-8888-8dd25736052a/line-items/3c90c3cc-0d44-4b50-8888-8dd25736052a", {
method: "PATCH",
headers: {
Authorization: `Basic ${process.env.LIGHT_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
"originalAmount": 100000,
"billingAmount": 100000,
"accountId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"costCenterId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"description": "string",
"reimbursementCategoryId": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}),
});
const data = await res.json();
Copy
import os, requests
res = requests.patch(
"https://api.light.inc/v1/expenses/3c90c3cc-0d44-4b50-8888-8dd25736052a/line-items/3c90c3cc-0d44-4b50-8888-8dd25736052a",
headers={"Authorization": f"Basic {os.environ['LIGHT_API_KEY']}"},
json={
"originalAmount": 100000,
"billingAmount": 100000,
"accountId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"costCenterId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"description": "string",
"reimbursementCategoryId": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
},
)
data = res.json()
Example request
Copy
{
"originalAmount": 100000,
"billingAmount": 100000,
"accountId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"costCenterId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"description": "string",
"reimbursementCategoryId": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
Generated from the schema: shapes and types are real, values are placeholders, and fields that exclude each other are all shown. Do not send it unchanged.
Example response
Copy
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"expenseId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"originalAmount": 100000,
"billingAmount": 100000,
"accountId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"costCenterId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"description": "string",
"reimbursementCategoryId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"createdAt": "2026-01-15T09:30:00Z",
"updatedAt": "2026-01-15T09:30:00Z"
}
Generated from the schema: shapes and types are real, values are placeholders.