---
title: "Create Expense"
method: POST
path: "/expenses"
tags: ["Expenses"]
---

# Create Expense

`POST /expenses`

Log a new expense. Amounts are in cents (see [Concepts](/concepts)); attach files first via `POST /attachments` and reference their IDs in the request body.

## Request body

- ExpenseRequestCreateRequest
  - `amount` integer — Amount in cents.
  - `attachments` integer[] — Attachment IDs to link.
  - `billable` boolean
  - `category` integer, required — Expense category ID
  - `date` string, required
  - `details` string
  - `project` string
  - `quantity` number
  - `user` integer
  - `type` 'separate' | 'billable' | 'cost' — Expense type.

## Response `201`

Created

- Expense
  - `amount` integer
  - `attachments` AttachmentDetails[]
    - `id` number
    - `name` string
    - `token` string
  - `billable` boolean
  - `category` number
  - `date` string
  - `details` string
  - `id` number
  - `project` string
  - `quantity` number
  - `user` number

## Other responses

- `401` — Unauthorized

---

[API](https://skmtc.net/everhour/apis/everhour-api.md) · [All operations](https://skmtc.net/everhour/apis/everhour-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/everhour/everhour-api/revisions/fc6136e33352/schema)
