---
title: "Approve Expense Claim"
method: POST
path: "/companies/{company_id}/expenses/claims/{claim_id}/approve"
tags: ["payroll"]
---

# Approve Expense Claim

`POST /companies/{company_id}/expenses/claims/{claim_id}/approve`

## Request

- Base URL: `https://app.zeno-works.ch` (the document declares no server; this is the origin it was published from)
- URL: `https://app.zeno-works.ch/companies/{company_id}/expenses/claims/{claim_id}/approve`
- Auth: none declared

## Path parameters

- `company_id` string, required
- `claim_id` string, required

## Headers

- `authorization` string, nullable

## Cookies

- `access_token` string, nullable

## Request body

- ExpenseClaimApprove
  - `override_warnings` boolean
  - `posting_date` string, date, nullable

## Response `200`

Successful Response

- ExpenseClaimDetailOut
  - `id` string, required
  - `employee_id` string, required
  - `claim_no` integer, required
  - `status` 'draft' | 'submitted' | 'approved' | 'rejected' | 'reimbursed' | 'cancelled', required: Expense-claim lifecycle (SP9; guide §5.5 "locked, auditable approval states"): immutable from ``approved`` on — corrections only via cancel (reverse) + a new claim.
  - `reimburse_via` 'payroll' | 'ap', required: How an approved claim's employee-payable open item settles: fed to a payroll run (6000 line + clearing settlement, MASTER R5) or paid directly via e-banking + bank reconciliation (MASTER R21).
  - `currency` string, required
  - `purpose` string, nullable, required
  - `total_gross` string, required
  - `reimbursable_gross` string, required
  - `submitted_at` string, date-time, nullable, required
  - `approved_at` string, date-time, nullable, required
  - `rejected_reason` string, nullable, required
  - `commercial_document_id` string, nullable, required
  - `open_item_id` string, nullable, required
  - `journal_entry_id` string, nullable, required
  - `payroll_run_id` string, nullable, required
  - `reimbursed_at` string, date-time, nullable, required
  - `created_at` string, date-time, required
  - `lines` ExpenseClaimLineOut[], required
    - `line_no` integer, required
    - `expense_date` string, date, required
    - `category_id` string, required
    - `description` string, nullable, required
    - `amount_gross` string, required
    - `vat_code_id` string, nullable, required
    - `is_private` boolean, required
    - `receipt_item_id` string, nullable, required
    - `receipt_sha256` string, nullable, required
    - `dimension_value_id` string, nullable, required
    - `quantity` string, nullable, required
    - `unit` string, nullable, required

## Other responses

- `422`: Validation Error

---

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