---
title: "Add an expense"
method: POST
path: "/api/trips/{id}/expenses"
tags: ["Costs"]
---

# Add an expense

`POST /api/trips/{id}/expenses`

## Request

- Base URL: `https://trvlrr.app`
- URL: `https://trvlrr.app/api/trips/{id}/expenses`
- Auth: HTTP bearer

Spending that is not a booking: meals, tickets, shopping. Bookings carry their own price_raw.

## Path parameters

- `id` string, required: The trip id.

## Request body

- ExpenseCreate
  - `description` string, required: What the money went on.
  - `price_raw` string, required: Amount with currency, e.g. "JPY 3400" or "$25".
  - `category` string: food, transport, stay, activity, shopping or other (anything else counts as other).
  - `date` string, nullable: Date, YYYY-MM-DD. Optional.

## Response `201`

The new expense.

- Expense
  - `id` string, required
  - `trip_id` string, required
  - `category` 'food' | 'transport' | 'stay' | 'activity' | 'shopping' | 'other', required
  - `description` string, required
  - `price_raw` string, required
  - `date` string, nullable, required
  - `source` string, required
  - `created_at` string, required

## Other responses

- `400`: The request is malformed or fails validation.
- `401`: No usable credential: a Clerk session token, a device token or an OAuth access token is required.
- `403`: The caller may not do this to this account or trip.

---

[API](https://skmtc.dev/trvlrr/apis/trvlrr-api.md) · [All operations](https://skmtc.dev/trvlrr/apis/trvlrr-api/llms.txt) · [OpenAPI document](https://skmtc.dev/trvlrr/apis/trvlrr-api/revisions/ea024946b293?raw)
