---
title: "Record a vendor check"
method: POST
path: "/vendor-checks"
tags: ["Vendors"]
---

# Record a vendor check

`POST /vendor-checks`

## Request

- Base URL: `https://ledgerhq.pro/api/v1`
- URL: `https://ledgerhq.pro/api/v1/vendor-checks`
- Auth: one of:
  - HTTP bearer and API key in header `x-organization-id`
  - HTTP bearer and API key in header `x-organization-id`

Record a hand-written vendor check (no OCR). With billId the check allocates through postBillPayment; without a bill it posts DR expense / CR bank through postCheckPayment. Both paths create a payment row (type made, method check) and exactly one vendor_check with status recorded. newVendorName creates a supplier contact inline, but a normalized-key match against existing vendors returns 409 duplicate_vendor with the matches for an explicit choice instead of auto-creating a duplicate. Requires the manage:payments role and an idempotency-key header.

## Response `200`

Idempotent replay of a recorded check

## Other responses

- `201`: Recorded check
- `default`: Error response

---

[API](https://skmtc.dev/ledgerhq-pro/apis/ledgerhq-bookkeeping-api.md) · [All operations](https://skmtc.dev/ledgerhq-pro/apis/ledgerhq-bookkeeping-api/llms.txt) · [OpenAPI document](https://skmtc.dev/ledgerhq-pro/apis/ledgerhq-bookkeeping-api/revisions/9a8269f0a586?raw)
