---
title: "WRITE: add one line to the trip budget the traveller typed themselves (source 'user' — never deleted by a budget reset,"
method: POST
path: "/actions/add_budget_expense"
tags: ["budget"]
---

# WRITE: add one line to the trip budget the traveller typed themselves (source 'user' — never deleted by a budget reset,

`POST /actions/add_budget_expense`

## Request

- Base URL: `https://findinghorizons.ca/api/v1`
- URL: `https://findinghorizons.ca/api/v1/actions/add_budget_expense`
- Auth: OAuth 2 (authorization code, authorization URL `https://findinghorizons.ca/api/mcp/authorize`, token URL `https://findinghorizons.ca/api/mcp/oauth/token`, scopes: `budget:write`)

WRITE: add one line to the trip budget the traveller typed themselves (source 'user' — never deleted by a budget reset, never overwritten by seeding). Give an estimated amount, an actual amount, or both. Category is one of: flights | accommodation | food | transport | activities | shopping | other. Currency is a 3-letter code; if it has no FX rate the line still stores honestly and is reported as excluded from converted totals.

## Headers

- `Idempotency-Key` string, required
- `X-FH-Task` string

## Request body

- object
  - `tripId` string, required
  - `label` string, required: What the money was/is for
  - `category` string: flights | accommodation | food | transport | activities | shopping | other
  - `estimated` number: Planned amount
  - `actual` number: Amount actually spent
  - `currency` string: 3-letter code, e.g. JPY. Defaults to the budget currency.
  - `notes` string
  - `today` string: The traveller's own date, YYYY-MM-DD, where the action needs one
  - `expectedVersion` integer: For a change to a trip: the planVersion you last read

## Response `200`

Done — { ok, api, action, result, card, operation? }

## Other responses

- `202`: Waiting for the traveller's approval in Finding Horizons
- `400`: Bad body / missing Idempotency-Key
- `401`: No or invalid token
- `403`: Scope not granted
- `409`: Conflict: the plan changed since expectedVersion, or the same key is still running
- `422`: The action said no
- `429`: Rate limited

---

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