---
title: "Compare two supplier price lists"
method: POST
path: "/v1/supplier/compare"
tags: ["supplier"]
---

# Compare two supplier price lists

`POST /v1/supplier/compare`

## Request

- Base URL: `https://api.relaex-engineers.de`
- URL: `https://api.relaex-engineers.de/v1/supplier/compare`
- Auth: none declared

Compares an old and a new supplier price list.

**Input:** multipart with `old_file` and `new_file` (CSV, XLSX, DATANORM 4/5 or text-based PDF,
each up to 20 MiB and 250,000 rows), optional `usage_file` (SKU and annual quantity) and
`options` as a JSON string following `/v1/schemas/supplier-compare-options`, e.g.
`{"default_currency": "EUR", "sheet_old": "Prices", "response_format": "xlsx"}`.

**Behaviour:** columns are recognised via a versioned alias list, number formats are inferred
per column and prices normalised to unit prices. SKUs are matched in six stages (exact,
normalised, EAN, suffix, predecessor, secondary key). Uncertain values are reported as
`could_not_determine`, never guessed; every row carries its source location.

**Output:** `ApiResponse` with findings (status, changes, delta, risk rule, quality level,
review flag), summary (counts, across-the-board change, cost impact) and warnings. With
`response_format=xlsx` an Excel report is returned.

**Errors:** 400 invalid or empty file, 413 too large, 422 no header row or required column or
invalid options, 429 rate limit, 504 timeout.

**Languages:** responses are in English. Error, warning and rule codes are stable and
language-neutral; agents may translate messages for the user. Column headers and common cell words are recognised in English, German, French, Spanish, Italian, Portuguese, Dutch, Polish, Czech, Turkish, Swedish, Danish, Norwegian, Finnish, Korean, Japanese and Chinese; numbers in both 1.234,56 and 1,234.56 style; any ISO 4217 currency (no conversion).

**Access:** open, rate-limited per IP and per MCP session; an `X-API-Key` header raises the
limit. Uploaded files are processed in memory and never stored. Also available as MCP tool
`supplier_compare` at `/mcp` (Streamable HTTP).

## Response `200`

ApiResponse with CompareResult (JSON) or Excel report

- unknown

## Other responses

- `400`: INVALID_FILE, EMPTY_FILE, UNSUPPORTED_FORMAT, INVALID_ENCODING
- `413`: FILE_TOO_LARGE, ROW_LIMIT_EXCEEDED
- `422`: HEADER_NOT_FOUND, REQUIRED_COLUMN_NOT_FOUND, COLUMN_AMBIGUOUS, SHEET_NOT_FOUND, INVALID_OPTIONS
- `429`: RATE_LIMITED
- `504`: ANALYSIS_TIMEOUT

---

[API](https://skmtc.dev/relaex-engineers/apis/boring-api.md) · [All operations](https://skmtc.dev/relaex-engineers/apis/boring-api/llms.txt) · [OpenAPI document](https://skmtc.dev/relaex-engineers/apis/boring-api/revisions/269481105eb2?raw)
