parsr.

Changelog

Every change to parsr

Format additions, validator updates, schema versions, API changes. Reverse-chronological. Subscribe via RSS at /changelog.rss (coming soon).

AllFormatsSchemasValidatorsAPIModelsSecurity

35 entries · 2026-03-01 → 2026-05-09

  1. 2026-05-09API

    POST /v1/parse/bank_statement specialist endpoint

    Bank statements now have a dedicated specialist route alongside the generic /v1/parse?doc_type=bank_statement (kept for backwards compatibility). Same input, same response shape, doc_type forced server-side. Architecture lays the groundwork for payslip / receipt / invoice specialists arriving once the anonymized fixture pack lands.

    Details →
  2. 2026-05-09API

    POST /v1/classify document-type detection

    Auto-detect bank_statement / payslip / receipt / invoice from any document. Synchronous response with confidence + alternatives + a one-sentence rationale. Useful for AI agents that receive uncategorised attachments. 30-day cache by file hash + candidate set. Accuracy benchmark scheduled with the rest of the specialist suite (2026-06-06).

    Details →
  3. 2026-05-09Format

    Added Argenta (BE) bank statement support

    Argenta retail and savings statements (Dutch and French variants). Closes a gap in BE coverage alongside KBC, Belfius, and BNP Paribas Fortis. Fixture set: 14 anonymized statements across personal and corporate accounts.

    Details →
  4. 2026-05-08Format

    Updated Belfius parser for new transaction column layout

    Belfius rolled a wider 'date of effect' column on retail accounts mid-April. Prompt few-shots and the column-extraction validator updated. Existing fixtures re-pass; three new layout fixtures added to the regression suite.

  5. 2026-05-07Format

    Added Boursorama (FR) bank statement support

    Boursorama Banque retail statements with the digital-first 'Relevé de Compte' layout. Captures structured-communication codes and the report-précédent / nouveau-solde footer.

    Details →
  6. 2026-05-05Format

    Added Caisse d'Épargne (FR) bank statement support

    Standard French 'Relevé de Compte' format with operation-code prefixes (VIR, PRLV, CHQ, CB, REM). Code-to-canonical-type mapping merged with the BNP Paribas / Crédit Agricole shared layer.

  7. 2026-05-04Schema

    Schema bump: bank_statement.v1 → v2

    v2 adds per-field confidence ∈ [0,1] and a normalized bbox to every extracted field, plus a top-level validation.balance_chain block. v1 is still served when a request pins schema_version=1; v1 will be deprecated 2026-08-01.

    Details →
  8. 2026-05-02Format

    Added Crédit Agricole (FR) regional bank statement variants

    Crédit Agricole prints under 39 regional caisses, each with its own header block and footer wording. Single shared parser with regional fixture coverage; 22 of 39 regions now have at least three fixtures each.

  9. 2026-04-30Format

    Added DATEV (DE) payslip support

    DATEV Lohnabrechnung with full German tax-class categorization (Steuerklasse I–VI), social-security split (KV/RV/AV/PV), and gross-to-net reconciliation. Validator: net-pay-match within €0.01 of declared net.

    Details →
  10. 2026-04-28Format

    Added Loket (NL) payslip support

    Loket.nl payroll-system payslips with Dutch loonheffing breakdown. Captures the 30%-ruling indicator separately when present.

  11. 2026-04-25Format

    Added Triodos Bank (NL) bank statement support

    Triodos NL retail and SME statements. Sparse layout, structured-reference field on every transaction. Joint accounts list both holders in the header.

  12. 2026-04-22API

    Idempotency-Key header now supported on /v1/parse

    Send an Idempotency-Key header on POST /v1/parse and a duplicate request inside the 24-hour window returns the original job. Stored against (org_id, key) — keys are scoped to your org and don't leak.

    Details →
  13. 2026-04-22Format

    Added Sage Paie (FR) payslip support

    Sage Paie French payroll with 'Bulletin de Salaire' format. Captures URSSAF, retraite complémentaire, and prévoyance lines as structured items rather than free-text. net-pay-match validator enforced.

  14. 2026-04-19Validator

    Validator added: net-pay-match for payslip schema

    Every payslip response now includes validation.net_pay_match { valid, computed_net, declared_net, diff }. The validator subtracts every detected deduction from gross and confirms it matches declared net within €0.01.

  15. 2026-04-17API

    Synchronous parsing mode: ?wait=60

    POST /v1/parse?wait=60 holds the connection open for up to 60 seconds and returns the completed job inline if the parse finishes inside that window. Falls back to async (202 + job_id) on timeout. Useful when you don't want to wire webhooks.

    Details →
  16. 2026-04-15Format

    Added bunq (NL) bank statement support

    bunq retail and Business statements. The English-by-default layout is consistent with the NL ING parser; shared validators reused. Sub-account transfers parsed as their own transaction type.

  17. 2026-04-14Security

    Closed audit finding #15 — webhook payload trimmed

    Webhook dispatcher no longer includes the full job result in the outbound payload. Receivers get { job_id, status, doc_type, region }; the result is fetched authenticated from /v1/jobs/{id}. Reduces blast radius of a leaked endpoint.

  18. 2026-04-12Format

    Added Commerzbank (DE) bank statement support

    Commerzbank retail Kontoauszug. SEPA-instant transfers carry an extra 'SEPA Inst.' marker which is now captured as transaction.method='sepa_instant'.

  19. 2026-04-10Model

    Default vision model rotated: Claude 3.5 Sonnet → Claude Sonnet 4

    Bank-statement and payslip parsers now route to Claude Sonnet 4 by default. ~12% improvement on the held-out fixture suite, ~30% reduction in p95 latency on multi-page statements. Old behaviour available via X-Model-Override.

    Details →
  20. 2026-04-09Format

    Added Sparkasse Köln/Bonn (DE) regional variant

    Sparkasse statements vary by regional Sparkasse. Köln/Bonn fixtures join the existing München, Berlin, and Hamburg variants under the shared Sparkasse parser.

  21. 2026-04-07Security

    Closed audit finding #6 — webhook secrets no longer in NATS

    Customer webhook signing secrets used to ride along inside the NATS payload to the dispatcher worker. Dispatcher now reads the secret from Postgres at delivery time, scoped by webhook_id. NATS payload is { job_id, webhook_id } only.

  22. 2026-04-04Validator

    Validator added: totals-reconcile for invoice schema

    Invoice responses now include validation.totals_reconcile { valid, computed_total, declared_total, diff } — confirms Σ(line_items.amount) + tax = total within the declared currency's rounding tolerance.

  23. 2026-04-02Format

    Added LCL (FR) bank statement support

    Le Crédit Lyonnais retail statements. Three-column layout (date / libellé / débit / crédit) parsed under the shared FR retail parser. Operation-code mapping reused.

  24. 2026-03-30API

    Sandbox keys now return mock JSON without burning quota

    Test-mode keys (sk_*_test_…) return realistic mock responses for every endpoint. Sandbox calls don't count toward your monthly page cap and don't bill. Useful for CI and local development.

    Details →
  25. 2026-03-27Format

    Added Sparkasse München (DE) regional variant

    Second Sparkasse variant after the initial München, Berlin, Hamburg drop. Header block carries an additional 'IBAN-Hinweis' line that's now stripped from the holder field.

  26. 2026-03-25Validator

    Validator added: balance-chain for bank_statement schema

    Bank-statement responses now include validation.balance_chain { valid, computed_closing, declared_closing, diff }. One field tells you whether the parse adds up; particularly useful for underwriting agents that want to escalate failed chains.

    Details →
  27. 2026-03-23Format

    Added SD Worx (BE) payslip support

    SD Worx is the dominant BE payroll provider. Three language variants (NL, FR, EN), structured wage-cost lines, capture of the canonical 'patronale RSZ' employer-contribution block.

  28. 2026-03-20Model

    Added GPT-4o as a routing fallback

    When the primary model (Claude Sonnet 4) returns a response that fails strict-schema validation, the parser now falls back to GPT-4o for a second attempt before returning a soft-validated result. Reduces parser-error rate on edge layouts by ~40%.

  29. 2026-03-17Format

    Added BNP Paribas Fortis (BE) bank statement support

    Belgian variant of the BNP Paribas group. Shares the FR-style operation-code prefix layout but with NL/FR bilingual headers. Joins KBC and Belfius in the BE retail-bank coverage set.

  30. 2026-03-14Security

    Closed audit finding #3 — plan-cap is now atomic under concurrency

    Plan-cap enforcement at /v1/parse moved from read-then-insert to an atomic Redis INCRBY with rollback on cap breach. Previous TOCTOU window (~100ms under load) closed; concurrent burst from a single org can no longer push past the monthly page cap.

  31. 2026-03-12API

    HMAC-signed webhooks with replay-window protection

    All webhook deliveries now carry an X-Parsr-Signature header (HMAC-SHA256 of timestamp + body, keyed on the webhook secret) and an X-Parsr-Timestamp. Reject deliveries where |now - timestamp| > 5 minutes to prevent replay.

    Details →
  32. 2026-03-09Format

    Added Société Générale (FR) bank statement support

    Société Générale retail Relevé de Compte. Operation-code dictionary aligned with the BNP Paribas parser; second-page continuation header handled.

  33. 2026-03-06Format

    Added KBC (BE) bank statement support

    Initial BE coverage drop. Three language variants (Dutch, French, English), monthly and quarterly statement periods, structured-communication codes captured as part of the description.

    Details →
  34. 2026-03-04Model

    Default vision model: Gemini 2.0 Flash for Tier-2 formats

    Receipt and small-document parsing routed to Gemini 2.0 Flash by default. Cost-per-page roughly a third of Sonnet on these layouts with comparable accuracy on the held-out fixture suite. Bank statements and payslips remain on Sonnet.

  35. 2026-03-01API

    Region-bound API keys (sk_eu_… / sk_us_…)

    Keys are now bound to a region at issue time. An sk_eu_… key against us-api.tryparsr.dev returns 403 region_mismatch. Prevents accidental cross-border traffic and makes EU residency a property of the key, not a runtime check.

    Details →

Format change requests: 48 hours.

Email a sample, get a working endpoint inside two business days.