{"$schema":"https://json-schema.org/draft/2020-12/schema","title":"Invoice — Facture / Factuur (BE)","description":"Belgian VAT invoice per Art. 53 §1 2° Code TVA and Art. 5 AR n°1 du 29.12.1992. E-invoicing mandatory for B2B from 1.1.2026 (Law 6.2.2024).","type":"object","additionalProperties":false,"required":["company","client","invoice"],"properties":{"company":{"type":"object","additionalProperties":false,"required":["name","vat","bce_number","address"],"description":"Invoice issuer — Art. 5 §1 3° AR n°1.","properties":{"name":{"type":"string"},"legal_form":{"type":"string"},"bce_number":{"type":"string","pattern":"^[0-9]{4}\\.[0-9]{3}\\.[0-9]{3}$"},"vat":{"type":"string","pattern":"^BE0[0-9]{9}$"},"address":{"type":"string"},"postal_code":{"type":"string"},"commune":{"type":"string"},"phone":{"type":"string"},"email":{"type":"string"},"iban":{"type":"string"},"bic":{"type":"string"},"logo_base64":{"type":"string"}}},"client":{"type":"object","additionalProperties":false,"required":["name"],"description":"Invoice recipient — Art. 5 §1 4° AR n°1.","properties":{"name":{"type":"string"},"vat":{"type":"string","description":"Client VAT number (required for B2B)."},"bce_number":{"type":"string"},"address":{"type":"string"},"postal_code":{"type":"string"},"commune":{"type":"string"},"contact_person":{"type":"string"}}},"invoice":{"type":"object","additionalProperties":false,"required":["number","date","lines","total_excl_vat","total_incl_vat"],"description":"Invoice body.","properties":{"number":{"type":"string","description":"Sequential invoice number (Art. 5 §1 9° AR n°1). E.g. F-2026-0042."},"date":{"type":"string","format":"date"},"due_date":{"type":"string","format":"date"},"purchase_order_ref":{"type":"string","description":"Optional purchase order reference."},"peppol_routing_id":{"type":"string","description":"Peppol routing ID for e-invoicing (mandatory B2B from 1.1.2026)."},"lines":{"type":"array","minItems":1,"description":"Invoice lines (Art. 5 §1 5°–8° AR n°1).","items":{"type":"object","additionalProperties":false,"required":["description","amount"],"properties":{"description":{"type":"string"},"quantity":{"type":["string","number"]},"unit_price":{"type":["string","number"]},"vat_rate":{"type":["string","number"],"description":"VAT rate for this line: 0, 6, 12 or 21."},"amount":{"type":["string","number"],"description":"Line amount excl. VAT (€)."}}}},"vat_lines":{"type":"array","description":"VAT breakdown by rate (Art. 5 §1 10°–11° AR n°1).","items":{"type":"object","additionalProperties":false,"required":["rate","base","amount"],"properties":{"rate":{"type":["string","number"]},"base":{"type":["string","number"]},"amount":{"type":["string","number"]}}}},"total_excl_vat":{"type":["string","number"],"description":"Total excl. VAT (€)."},"total_vat":{"type":["string","number"],"description":"Total VAT (€)."},"total_incl_vat":{"type":["string","number"],"description":"Total incl. VAT (€)."},"vat_rate":{"type":["string","number"],"description":"Default VAT rate when no per-line rate specified."},"structured_communication":{"type":"string","description":"OGM/VCS structured communication (modulo 97)."},"payment_terms":{"type":"string"}}},"payment":{"type":"object","additionalProperties":false,"description":"Optional QR-code payload for SEPA pay-link (EPC GiroCode) and/or hosted-checkout URL (Mollie/Stripe). Both are render-time only — files are not stored.","properties":{"epc_qr":{"type":"object","additionalProperties":false,"description":"EPC025-12 SEPA Credit Transfer QR-code data.","properties":{"iban":{"type":"string","description":"Beneficiary IBAN (spaces tolerated)."},"name":{"type":"string","maxLength":70,"description":"Beneficiary name."},"bic":{"type":"string","description":"Optional BIC (8 or 11 chars)."},"amount":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Optional EUR amount (0.01 .. 999999999.99)."},"remittance":{"type":"string","maxLength":140,"description":"Unstructured remittance information."},"reference":{"type":"string","maxLength":35,"description":"Structured creditor reference (RF...)."}},"required":["iban","name"]},"url_qr":{"type":"string","format":"uri","description":"Hosted-checkout URL (Mollie / Stripe / etc.) rendered as a QR."}}}}}