---
title: "Approve Card Transaction"
method: POST
path: "/companies/{company_id}/expenses/card-transactions/{txn_id}/approve"
tags: ["payroll"]
---

# Approve Card Transaction

`POST /companies/{company_id}/expenses/card-transactions/{txn_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/card-transactions/{txn_id}/approve`
- Auth: none declared

## Path parameters

- `company_id` string, required
- `txn_id` string, required

## Headers

- `authorization` string, nullable

## Cookies

- `access_token` string, nullable

## Response `200`

Successful Response

- CardTxnOut
  - `id` string, required
  - `card_id` string, required
  - `txn_date` string, date, required
  - `amount` string, required
  - `currency` string, required
  - `merchant` string, nullable, required
  - `external_ref` string, nullable, required
  - `status` 'imported' | 'matched' | 'approved' | 'posted' | 'excluded', required: Company-card transaction lifecycle (SP9; guide §5.3/§5.5): only ``approved`` rows reach the GL; ``excluded`` keeps fees/adjustments out of expense postings entirely.
  - `classification` 'business' | 'private' | 'mixed', required: Business/private split of a card transaction (guide §5.5): ``mixed`` carries ``private_amount`` (business part = amount − private_amount).
  - `private_amount` string, nullable, required
  - `receipt_item_id` string, nullable, required
  - `purpose` string, nullable, required
  - `category_id` string, nullable, required
  - `vat_code_id` string, nullable, required
  - `dimension_value_id` string, nullable, required
  - `employee_id` string, nullable, required
  - `settle_via_payroll` boolean, required
  - `journal_entry_id` string, nullable, required
  - `open_item_id` string, nullable, required
  - `payroll_run_id` string, nullable, required
  - `settled_at` string, date-time, nullable, required
  - `excluded_reason` string, nullable, required
  - `phone_hint` HeldReceiptPhoneHintOut: ZR-11 — what the employee suggested when filing the receipt from their phone (or, on a card transaction, when picking it on the phone). A suggestion, never applied by itself: the accountant picks the category on Assign. ``category_id`` was an active category of this company when the phone sent it (it may have been deactivated since); ``purpose`` is the employee's own text (≤ 500 printable characters) — untrusted, render it as plain text.
    - `category_id` string, nullable
    - `purpose` string, nullable

## 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)
