Audit Creditor File
audit_creditor_fileValidate an entire creditor/supplier payment file before sending: checks IBAN structure, duplicate accounts, BIC consistency, country mismatches, and SEPA reachability.
Instructions
Audit an entire creditor/supplier payment file (CSV or XLSX) row by row: IBAN structure and checksum, bank code against the national register, bank name and BIC, SEPA reachability and issuer type — plus checks a single IBAN call cannot make because they need the whole file: duplicate IBANs, the BIC the file carries against the BIC the register derives, address country against IBAN country, and Swiss structured-address conformity ahead of the 14 November 2026 deadline. USE WHEN: the user has a spreadsheet or export of creditor/supplier bank accounts (accounts-payable file, vendor master, payment batch) and wants it checked before sending payments, or asks to "audit my creditor file" / "check this supplier list" / "validate this payment batch". HOW: base64-encode the file bytes and pass them as file_base64, with the original filename (its extension decides CSV vs XLSX parsing). LIMITS: rejects files decoding to more than 5 MB — checked locally, before any network call — and sheets over 20,000 rows, which the route itself rejects (400 too_many_rows). RETURNS a FREE PREVIEW ONLY, never the full report: job (the id to reuse with audit_status), rows, paid (always false from this call), price_chf / currency naming what the full report costs, summary (counts by status and finding code, countries seen, columns detected), and preview (the first flagged rows then the first OK ones, up to 20, IBANs masked like "CH10 **** 2346"). The annotated .xlsx report is a PAID deliverable — 149 CHF up to 5,000 rows, 349 CHF up to 20,000 — settled through a one-off Stripe Checkout Session. This tool NEVER pays automatically: pass checkout: true to also receive a Checkout URL for a HUMAN to open, then poll audit_status with the same job id to learn when it is paid and get the download link. COST: free. Only the full report is paid, and only once a human completes the Stripe checkout.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| lang | No | Language for the summary labels and, later, the annotated report. Defaults to "en". | |
| checkout | No | When true, immediately create a Stripe Checkout Session after the upload and return its URL for a human to open and pay. Defaults to false. Never pays anything by itself. | |
| filename | Yes | Original filename with its extension, e.g. "creditors.csv" or "suppliers.xlsx". The extension decides how the file is parsed. | |
| file_base64 | Yes | The CSV or XLSX file content, base64-encoded — the raw payload only, no "data:" URL prefix. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| job | Yes | Job id — pass to audit_status to poll payment and get the download link. | |
| lang | No | ||
| paid | Yes | Always false from this tool — nothing has been paid yet. | |
| rows | Yes | ||
| tier | No | ||
| _note | No | Plain-language reminder that this is a free preview and how to get the paid report. | |
| preview | Yes | First flagged rows then first OK rows, up to 20. IBANs are masked. | |
| summary | Yes | Counts by status and finding code, countries seen, columns detected. Mirrors AuditSummary in the API. | |
| checkout | No | Route to call for payment, e.g. "POST /v1/audit/checkout/{job}". Null once paid. | |
| currency | No | ||
| download | No | Set only once paid and with the matching session — always null from this tool. | |
| price_chf | No | Price of the full report in CHF, decided by row count alone. | |
| retention | No | How long the job is kept before it purges. | |
| checkout_url | No | Present only when `checkout: true` was passed and the session was created: a Stripe Checkout URL for a human to open. | |
| checkout_session_id | No | Present alongside checkout_url — pass it to audit_status as `session_id` right after a human pays. |