[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"docs:api\u002FQuittio\u002FCore\u002FValidation":3},{"versions":4,"version":26,"nav":28,"path":106,"kind":107,"page":108},[5,10,13,16,18,20,22,24],{"name":6,"label":7,"prefix":8,"channel":9},"0.7","0.7 (latest)","","latest",{"name":11,"label":12,"prefix":11,"channel":11},"next","next (unreleased)",{"name":14,"label":14,"prefix":14,"channel":15},"0.6","old",{"name":17,"label":17,"prefix":17,"channel":15},"0.5",{"name":19,"label":19,"prefix":19,"channel":15},"0.4",{"name":21,"label":21,"prefix":21,"channel":15},"0.3",{"name":23,"label":23,"prefix":23,"channel":15},"0.2",{"name":25,"label":25,"prefix":25,"channel":15},"0.1",{"name":6,"label":7,"prefix":8,"channel":9,"base":27},"\u002Fdocs",[29,33,36,39,42,45,48,51,54,57,60,63,66,69,72,75,78,81,84,87,91,94,97,100,103],{"slug":30,"title":31,"preview":32},"index","Home",false,{"slug":34,"title":35,"preview":32},"getting-started","Getting started",{"slug":37,"title":38,"preview":32},"concepts","E-invoicing basics",{"slug":40,"title":41,"preview":32},"examples","Examples",{"slug":43,"title":44,"preview":32},"building-invoices","Building invoices",{"slug":46,"title":47,"preview":32},"formats","Formats and profiles",{"slug":49,"title":50,"preview":32},"validation","Validation",{"slug":52,"title":53,"preview":32},"templates","Templates and design",{"slug":55,"title":56,"preview":32},"documents","Quotes and other documents",{"slug":58,"title":59,"preview":32},"reading","Reading incoming invoices",{"slug":61,"title":62,"preview":32},"laravel","Laravel integration",{"slug":64,"title":65,"preview":32},"configuration","Configuration",{"slug":67,"title":68,"preview":32},"commands","Artisan commands",{"slug":70,"title":71,"preview":32},"testing","Testing",{"slug":73,"title":74,"preview":32},"country-packs","Country packs",{"slug":76,"title":77,"parent":74,"preview":32},"country-at","Austria",{"slug":79,"title":80,"parent":74,"preview":32},"country-be","Belgium",{"slug":82,"title":83,"parent":74,"preview":32},"country-ch","Switzerland",{"slug":85,"title":86,"parent":74,"preview":32},"country-fr","France",{"slug":88,"title":89,"preview":90},"managed","Managed layer (preview)",true,{"slug":92,"title":93,"preview":32},"troubleshooting","Troubleshooting",{"slug":95,"title":96,"preview":32},"faq","FAQ",{"slug":98,"title":99,"preview":32},"compatibility","Versioning and compatibility",{"slug":101,"title":102,"preview":32},"field-reference","Field reference",{"slug":104,"title":105,"preview":32},"ai","AI assistants","api\u002FQuittio\u002FCore\u002FValidation","api",{"title":109,"description":110,"html":111,"headings":112},"Quittio\\Core\\Validation","The public classes in Quittio\\Core\\Validation.","\u003Cp class=\"q-api-crumbs\">\u003Ca href=\"\u002Fdocs\u002Fapi\">API reference\u003C\u002Fa>\u003C\u002Fp>\n\u003Ch1>Quittio\\Core\\Validation\u003C\u002Fh1>\n\u003Ch2 id=\"package-core\">quittio\u002Fcore\u003Ca class=\"q-doc-anchor\" href=\"#package-core\" aria-label=\"Link to this section\">#\u003C\u002Fa>\u003C\u002Fh2>\n\u003Ch3 class=\"q-api-namespace\">\u003Ca href=\"\u002Fdocs\u002Fapi\u002FQuittio\u002FCore\u002FValidation\">Quittio\\Core\\Validation\u003C\u002Fa>\u003C\u002Fh3>\u003Cul class=\"q-api-list\">\n\u003Cli>\u003Ca href=\"\u002Fdocs\u002Fapi\u002FQuittio\u002FCore\u002FValidation\u002FInvoiceValidator\">\u003Ccode>InvoiceValidator\u003C\u002Fcode>\u003C\u002Fa>\u003Cspan>Runs all configured validation drivers and merges their results.\u003C\u002Fspan>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"\u002Fdocs\u002Fapi\u002FQuittio\u002FCore\u002FValidation\u002FMessages\">\u003Ccode>Messages\u003C\u002Fcode>\u003C\u002Fa>\u003Cspan>Creates validation messages from the message catalog.\u003C\u002Fspan>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"\u002Fdocs\u002Fapi\u002FQuittio\u002FCore\u002FValidation\u002FRule\">\u003Ccode>Rule\u003C\u002Fcode>\u003C\u002Fa> \u003Cspan class=\"q-api-badge\">interface\u003C\u002Fspan>\u003Cspan>A business or plausibility rule checked in PHP (levels L1 to L3 and L7).\u003C\u002Fspan>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"\u002Fdocs\u002Fapi\u002FQuittio\u002FCore\u002FValidation\u002FRuleOverrides\">\u003Ccode>RuleOverrides\u003C\u002Fcode>\u003C\u002Fa>\u003Cspan>Changes to the PHP rules by rule code: rules switched off, findings with another severity and rules replaced by own implementations. Codes match exactly or, with a trailing &quot;*&quot;, by prefix (e.g. &quot;DE-USTG-*&quot;). The overrides apply to the PHP rules only; the findings of the XSD schema, KoSIT and veraPDF are never changed.\u003C\u002Fspan>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"\u002Fdocs\u002Fapi\u002FQuittio\u002FCore\u002FValidation\u002FSeverity\">\u003Ccode>Severity\u003C\u002Fcode>\u003C\u002Fa> \u003Cspan class=\"q-api-badge\">enum\u003C\u002Fspan>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"\u002Fdocs\u002Fapi\u002FQuittio\u002FCore\u002FValidation\u002FValidationContext\">\u003Ccode>ValidationContext\u003C\u002Fcode>\u003C\u002Fa>\u003Cspan>Information available to rules while validating an invoice.\u003C\u002Fspan>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"\u002Fdocs\u002Fapi\u002FQuittio\u002FCore\u002FValidation\u002FValidationDriver\">\u003Ccode>ValidationDriver\u003C\u002Fcode>\u003C\u002Fa> \u003Cspan class=\"q-api-badge\">interface\u003C\u002Fspan>\u003Cspan>A validation driver checks one or more levels (PHP rules, XSD, KoSIT, veraPDF, …).\u003C\u002Fspan>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"\u002Fdocs\u002Fapi\u002FQuittio\u002FCore\u002FValidation\u002FValidationException\">\u003Ccode>ValidationException\u003C\u002Fcode>\u003C\u002Fa>\u003Cspan>Thrown when an invoice does not pass validation. The full result is attached.\u003C\u002Fspan>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"\u002Fdocs\u002Fapi\u002FQuittio\u002FCore\u002FValidation\u002FValidationLevel\">\u003Ccode>ValidationLevel\u003C\u002Fcode>\u003C\u002Fa> \u003Cspan class=\"q-api-badge\">enum\u003C\u002Fspan>\u003Cspan>Validation levels.\u003C\u002Fspan>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"\u002Fdocs\u002Fapi\u002FQuittio\u002FCore\u002FValidation\u002FValidationMessage\">\u003Ccode>ValidationMessage\u003C\u002Fcode>\u003C\u002Fa>\u003Cspan>A single validation finding.\u003C\u002Fspan>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"\u002Fdocs\u002Fapi\u002FQuittio\u002FCore\u002FValidation\u002FValidationResult\">\u003Ccode>ValidationResult\u003C\u002Fcode>\u003C\u002Fa>\u003Cspan>Result of a validation run.\u003C\u002Fspan>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"\u002Fdocs\u002Fapi\u002FQuittio\u002FCore\u002FValidation\u002FValidationSubject\">\u003Ccode>ValidationSubject\u003C\u002Fcode>\u003C\u002Fa>\u003Cspan>What is validated: the calculated data and, where available, the generated XML and PDF.\u003C\u002Fspan>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3 class=\"q-api-namespace\">\u003Ca href=\"\u002Fdocs\u002Fapi\u002FQuittio\u002FCore\u002FValidation\u002FDrivers\">Quittio\\Core\\Validation\\Drivers\u003C\u002Fa>\u003C\u002Fh3>\u003Cul class=\"q-api-list\">\n\u003Cli>\u003Ca href=\"\u002Fdocs\u002Fapi\u002FQuittio\u002FCore\u002FValidation\u002FDrivers\u002FKositArtifacts\">\u003Ccode>KositArtifacts\u003C\u002Fcode>\u003C\u002Fa>\u003Cspan>Downloads the KoSIT validator and the XRechnung validator configuration (level L5) and compiles the Peppol BIS Billing 3.0 Schematron to XSLT with the Saxon bundled in the validator (requires Java).\u003C\u002Fspan>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"\u002Fdocs\u002Fapi\u002FQuittio\u002FCore\u002FValidation\u002FDrivers\u002FKositReportParser\">\u003Ccode>KositReportParser\u003C\u002Fcode>\u003C\u002Fa>\u003Cspan>Converts a KoSIT validator report (VARL) into validation messages.\u003C\u002Fspan>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"\u002Fdocs\u002Fapi\u002FQuittio\u002FCore\u002FValidation\u002FDrivers\u002FKositValidator\">\u003Ccode>KositValidator\u003C\u002Fcode>\u003C\u002Fa>\u003Cspan>Official Schematron validation (level L5) with the KoSIT validator.\u003C\u002Fspan>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"\u002Fdocs\u002Fapi\u002FQuittio\u002FCore\u002FValidation\u002FDrivers\u002FPhpRulesDriver\">\u003Ccode>PhpRulesDriver\u003C\u002Fcode>\u003C\u002Fa>\u003Cspan>Built-in PHP rules: levels L1 (structure), L2 (profile), L3 (business rules) and L7 (plausibility).\u003C\u002Fspan>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"\u002Fdocs\u002Fapi\u002FQuittio\u002FCore\u002FValidation\u002FDrivers\u002FVeraPdfValidator\">\u003Ccode>VeraPdfValidator\u003C\u002Fcode>\u003C\u002Fa>\u003Cspan>PDF\u002FA conformance check (level L6) with veraPDF.\u003C\u002Fspan>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"\u002Fdocs\u002Fapi\u002FQuittio\u002FCore\u002FValidation\u002FDrivers\u002FXsdValidator\">\u003Ccode>XsdValidator\u003C\u002Fcode>\u003C\u002Fa>\u003Cspan>XML schema validation (level L4) with the bundled CII D16B and UBL 2.1 schemas. XML of another syntax read by the reader of a country pack (e.g. ebInterface) is not checked here: the reader checks its structure.\u003C\u002Fspan>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3 class=\"q-api-namespace\">\u003Ca href=\"\u002Fdocs\u002Fapi\u002FQuittio\u002FCore\u002FValidation\u002FPlausibility\">Quittio\\Core\\Validation\\Plausibility\u003C\u002Fa>\u003C\u002Fh3>\u003Cul class=\"q-api-list\">\n\u003Cli>\u003Ca href=\"\u002Fdocs\u002Fapi\u002FQuittio\u002FCore\u002FValidation\u002FPlausibility\u002FIban\">\u003Ccode>Iban\u003C\u002Fcode>\u003C\u002Fa>\u003Cspan>IBAN check digit validation (ISO 13616, mod 97-10) without extensions.\u003C\u002Fspan>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"\u002Fdocs\u002Fapi\u002FQuittio\u002FCore\u002FValidation\u002FPlausibility\u002FVatIdFormat\">\u003Ccode>VatIdFormat\u003C\u002Fcode>\u003C\u002Fa>\u003Cspan>Format of VAT identification numbers by country prefix (structure only, no check digits).\u003C\u002Fspan>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"\u002Fdocs\u002Fapi\u002FQuittio\u002FCore\u002FValidation\u002FPlausibility\u002FVatIdVerification\">\u003Ccode>VatIdVerification\u003C\u002Fcode>\u003C\u002Fa>\u003Cspan>Result of an online VAT identifier check. $valid is null if no statement is possible: the service was not reachable or answered with an error, or it does not cover the identifier ($supported = false).\u003C\u002Fspan>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"\u002Fdocs\u002Fapi\u002FQuittio\u002FCore\u002FValidation\u002FPlausibility\u002FVatIdVerifier\">\u003Ccode>VatIdVerifier\u003C\u002Fcode>\u003C\u002Fa> \u003Cspan class=\"q-api-badge\">interface\u003C\u002Fspan>\u003Cspan>Online check of VAT identifiers (e.g. EU VIES). Implementations must never throw because a service is unavailable; they return a result with $valid = null instead.\u003C\u002Fspan>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"\u002Fdocs\u002Fapi\u002FQuittio\u002FCore\u002FValidation\u002FPlausibility\u002FViesVerifier\">\u003Ccode>ViesVerifier\u003C\u002Fcode>\u003C\u002Fa>\u003Cspan>VAT identifier check via the REST interface of the EU VIES service.\u003C\u002Fspan>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3 class=\"q-api-namespace\">\u003Ca href=\"\u002Fdocs\u002Fapi\u002FQuittio\u002FCore\u002FValidation\u002FRules\">Quittio\\Core\\Validation\\Rules\u003C\u002Fa>\u003C\u002Fh3>\u003Cul class=\"q-api-list\">\n\u003Cli>\u003Ca href=\"\u002Fdocs\u002Fapi\u002FQuittio\u002FCore\u002FValidation\u002FRules\u002FCallbackRule\">\u003Ccode>CallbackRule\u003C\u002Fcode>\u003C\u002Fa>\u003Cspan>A rule defined by a closure. The closure receives the invoice and a reporter.\u003C\u002Fspan>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"\u002Fdocs\u002Fapi\u002FQuittio\u002FCore\u002FValidation\u002FRules\u002FCodeListRules\">\u003Ccode>CodeListRules\u003C\u002Fcode>\u003C\u002Fa>\u003Cspan>Code list rules of EN 16931 (BR-CL-…), based on the official code lists.\u003C\u002Fspan>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"\u002Fdocs\u002Fapi\u002FQuittio\u002FCore\u002FValidation\u002FRules\u002FEn16931Rules\">\u003Ccode>En16931Rules\u003C\u002Fcode>\u003C\u002Fa>\u003Cspan>EN 16931 business rules (BR-…) and conditions (BR-CO-…) checked on the data model.\u003C\u002Fspan>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"\u002Fdocs\u002Fapi\u002FQuittio\u002FCore\u002FValidation\u002FRules\u002FFieldMatrixRule\">\u003Ccode>FieldMatrixRule\u003C\u002Fcode>\u003C\u002Fa>\u003Cspan>Mandatory and allowed fields of the selected profile (level L2), derived from the mapping attributes of the data model and the profile's additional requirements.\u003C\u002Fspan>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"\u002Fdocs\u002Fapi\u002FQuittio\u002FCore\u002FValidation\u002FRules\u002FInspect\">\u003Ccode>Inspect\u003C\u002Fcode>\u003C\u002Fa>\u003Cspan>Helpers shared by the rule sets.\u003C\u002Fspan>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"\u002Fdocs\u002Fapi\u002FQuittio\u002FCore\u002FValidation\u002FRules\u002FPeppolRules\">\u003Ccode>PeppolRules\u003C\u002Fcode>\u003C\u002Fa>\u003Cspan>The Peppol BIS Billing 3.0 rules (PEPPOL-EN16931-…, PEPPOL-COMMON-…) that the data of an invoice can violate, with readable messages. Rules that the UBL writer always satisfies and rules covered by an identical EN 16931 rule are not repeated (docs\u002Fvalidation.md lists them). The complete rule set is checked with the official artifacts (level L5).\u003C\u002Fspan>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"\u002Fdocs\u002Fapi\u002FQuittio\u002FCore\u002FValidation\u002FRules\u002FPlausibilityRules\">\u003Ccode>PlausibilityRules\u003C\u002Fcode>\u003C\u002Fa>\u003Cspan>Plausibility checks (level L7): IBAN check digits, BIC and VAT identifier formats, e-mail addresses, date logic and the VAT category against the destination country. The VIES check is added only if a verifier is given.\u003C\u002Fspan>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"\u002Fdocs\u002Fapi\u002FQuittio\u002FCore\u002FValidation\u002FRules\u002FQuittioRules\">\u003Ccode>QuittioRules\u003C\u002Fcode>\u003C\u002Fa>\u003Cspan>Package rules (QUITTIO-…) that go beyond EN 16931.\u003C\u002Fspan>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"\u002Fdocs\u002Fapi\u002FQuittio\u002FCore\u002FValidation\u002FRules\u002FRuleReporter\">\u003Ccode>RuleReporter\u003C\u002Fcode>\u003C\u002Fa>\u003Cspan>Collects the findings of one rule.\u003C\u002Fspan>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"\u002Fdocs\u002Fapi\u002FQuittio\u002FCore\u002FValidation\u002FRules\u002FStructureRules\">\u003Ccode>StructureRules\u003C\u002Fcode>\u003C\u002Fa>\u003Cspan>Structure and data format checks of the data model (level L1).\u003C\u002Fspan>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"\u002Fdocs\u002Fapi\u002FQuittio\u002FCore\u002FValidation\u002FRules\u002FVatCategoryRules\">\u003Ccode>VatCategoryRules\u003C\u002Fcode>\u003C\u002Fa>\u003Cspan>VAT category rules of EN 16931 (BR-S, BR-Z, BR-E, BR-AE, BR-IC, BR-G, BR-O, BR-AF, BR-AG, BR-B).\u003C\u002Fspan>\u003C\u002Fli>\n\u003C\u002Ful>",[113],{"id":114,"text":115,"level":116},"package-core","quittio\u002Fcore",2]