{"uid":"cap_SH7vW4_Ort5Mipfmy6UcB","slug":"invoket-invoice-validator-432b837c","name":"Invoket Invoice Validator","description":"Should you accept this invoice? Post a Factur-X PDF, CII or UBL XML and get a deterministic EN 16931 verdict: XSD conformance, every violated business rule by its official BR id with observed vs expected values, Factur-X profile consistency, and syntax checks on IBAN, SIREN/SIRET and VAT identifiers. The formats mandated by the French 2026-2027 reform. A non-conformant invoice is a paid, documented answer - no LLM guesswork. Add ?ruleset=xrechnung or ?ruleset=peppol to layer a national CIUS pack on top of the EN 16931 base: XRechnung (German BR-DE rules, DE mandate) or Peppol BIS Billing 3.0 (BE mandate, live since 2026-04), each violation sourced by its official id (BR-DE-xx, PEPPOL-EN16931-Rxxx).","url":"https://api.invoket.com/invoice/validate","method":"POST","headers":{},"bodySchema":{"type":"object","required":["document_base64"],"properties":{"document_base64":{"type":"string","description":"Base64 (standard alphabet, whitespace tolerated) of the complete document: a Factur-X/ZUGFeRD PDF (PDF/A-3 with embedded XML) or a CII D16B / UBL 2.1 invoice XML. Alternatively, skip JSON entirely and POST the raw bytes with Content-Type: application/pdf or application/xml. Max body 10 MB (413 beyond). Optional query parameter ?profile=declared|strict (default declared): strict additionally evaluates full EN 16931 conformance even when the declared Factur-X profile is poorer (no-op for UBL). Optional query parameter ?ruleset=en16931|xrechnung|peppol (default en16931, the EN 16931 base alone): additive - the requested national CIUS pack is checked ON TOP of the four base layers, its fatal violations count toward the verdict and its warnings are surfaced separately under data.ruleset. xrechnung applies the German BR-DE rules (UBL or CII); peppol applies Peppol BIS Billing 3.0 (UBL only - a CII document with ?ruleset=peppol is a paid 200 with an invalid verdict and a peppol_requires_ubl violation, never a 4xx). Composable with ?profile=strict; an unknown value is a 400. Scanned/image PDFs without embedded XML are rejected (400) - this endpoint judges the structured formats of the EN 16931 core, no OCR"}}},"responseSchema":{"type":"object"},"example":null,"exampleRequest":null,"tags":["x402"],"displayCostAmount":"0.01","displayCostAsset":"USDC","priceDynamic":false,"priceHint":null,"priceStatus":"priced","priceSource":"probe","requiresHandshake":false,"reviewCount":0,"rating":{"score":"0.00","successRate":"0.00","reviews":0,"stars":null,"state":"unrated"},"availabilityStatus":"unknown","priceObserved":null,"sessionDeposit":null,"pricing":{"kind":"static","summary":"$0.01/call","primary":{"kind":"static","protocol":"x402","network":"base","amountUsd":"0.01","per":"call","confidence":"exact"},"accepted":[{"kind":"static","protocol":"x402","network":"base","amountUsd":"0.01","per":"call","confidence":"exact"}]},"paymentMethods":[{"uid":"pm_JjHSgxxiWpZciRWgWKGWG","protocol":"x402","methodType":"crypto","chain":"base","mode":"charge","costAmount":"0.01","costPer":"request","priority":0,"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","unit":"request","depositMicros":null,"planRef":null}],"brandName":null,"brandSlug":null,"brandBaseUrl":null,"brandDocsUrl":null,"whatItDoes":"Validates Factur-X/ZUGFeRD PDF and CII/UBL 2.1 XML invoices against EN 16931, XRechnung, and Peppol BIS Billing standards, returning a structured conformance verdict with provenance.","exampleAgentPrompt":"Can you validate this Factur-X invoice PDF to make sure it's fully EN 16931 compliant? I want strict profile checking and also run the XRechnung German ruleset on top — here's the document in base64.","exampleUseCases":[{"title":"Pre-send invoice compliance check","prompt":"Before I send this UBL 2.1 invoice to my German customer, can you validate it against both the EN 16931 base rules and the XRechnung CIUS pack to make sure there are no fatal violations? Here's the XML encoded in base64."},{"title":"Peppol network submission readiness","prompt":"I need to submit this invoice through the Peppol network — can you check whether my UBL 2.1 document passes Peppol BIS Billing 3.0 validation? Run it in strict mode too so I catch any EN 16931 gaps."},{"title":"Automated AP ingestion gating","prompt":"We just received this Factur-X PDF from a supplier. Can you validate it against EN 16931 using strict profile checking before we book it in the system? I need to know if there are any errors or warnings."}],"resultDescription":"A structured JSON object containing a pass/fail verdict, lists of fatal violations and warnings keyed by rule layer (EN 16931 base, optional national CIUS pack), and provenance metadata. For XRechnung or Peppol rulesets, violations from the additive national rules are surfaced separately under data.ruleset. Invalid structured formats return a 400; unsupported format combinations return a 200 with an invalid verdict and a descriptive violation code.","failureModes":["400 Bad Request — scanned/image-only PDF without embedded XML (no OCR performed)","400 Bad Request — unknown ?profile or ?ruleset parameter value","400 Bad Request — malformed or unrecognizable document format","413 Payload Too Large — document body exceeds 10 MB","200 with invalid verdict and peppol_requires_ubl violation — CII document submitted with ?ruleset=peppol","Payment required (x402) if USDC payment not included"],"whenToPreferThis":"Choose this endpoint when you need authoritative, multi-layer EN 16931 conformance validation for structured European e-invoices (Factur-X/ZUGFeRD PDF or CII/UBL XML) with optional German XRechnung or Peppol BIS Billing overlay rules. It is the right choice for pre-send compliance gating, AP ingestion quality control, or any workflow requiring provenance-backed validation results. It does not perform OCR on scanned PDFs and is not suited for informal invoice images or non-EN-16931 invoice formats.","instructions":null,"reviewSummary":null,"reviewSummaryHighlights":null,"reviewSummaryConcerns":null,"reviewSummaryGeneratedAt":null,"activationCount":0,"lastUsedAt":null,"lastSuccessfullyRanAt":null,"lastHealthCheckAt":"2026-09-15T06:50:46.225Z","isFirstParty":false}