# August 19, 2026 

** August 19, 2026 Karbon API release adds an endpoint for creating expenses. **
---

## Create an Expense

`POST /v3/Expenses` creates an expense and associates it with a work item, contact or organization.

```http
POST /v3/Expenses
```

```json
{
  "Timeline": {
    "EntityType": "WorkItem",
    "EntityKey": "2m6pSFxRzcF2"
  },
  "ExpenseDate": "2026-08-14T00:00:00Z",
  "Value": 240.5,
  "BillableValue": 240.5,
  "Description": "Courier fees for year-end documents"
}
```

`Timeline` is the entity the expense belongs to, and follows the same shape as the timeline links on notes. `EntityType` must be one of:

| `EntityType`   | Entity the expense is recorded against |
| -------------- | -------------------------------------- |
| `WorkItem`     | A work item                            |
| `Contact`      | An individual contact                  |
| `Organization` | An organization                        |

`ExpenseDate`, `Value`, `BillableValue` and `Description` are all required. `Value` is the cost of the expense and `BillableValue` the portion you intend to bill your client — set `BillableValue` to `0` for an expense you're absorbing, or to the same amount as `Value` to pass it on in full. Neither can be negative, and `Description` is limited to 250 characters.

A successful request returns `201 Created` with the new `ExpenseKey`:

```json
{
  "ExpenseKey": "3nB7kQvXLmT",
  "Timeline": {
    "EntityType": "WorkItem",
    "EntityKey": "2m6pSFxRzcF2"
  },
  "ExpenseDate": "2026-08-14T00:00:00Z",
  "Value": 240.5,
  "BillableValue": 240.5,
  "Description": "Courier fees for year-end documents"
}
```

Once created, a billable expense is picked up by invoicing the same way an expense entered in Karbon is, and appears in the `Expenses` section of `GET /v3/Invoices/{InvoiceKey}?$expand=Data`.

Expenses cannot yet be listed, updated or deleted through the API, and expense types aren't supported on create.
