{"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://chut.app/schemas/be.accounting.payslip/0.2.0","title":"be.accounting.payslip","description":"Belgian simple payslip","type":"object","required":["letter","employer","employee","payslip"],"additionalProperties":false,"properties":{"letter":{"type":"object","description":"Document metadata","required":["place","date","language"],"additionalProperties":false,"properties":{"place":{"type":"string","description":"Place of issuance","examples":["Bruxelles","Gent","Liège"]},"date":{"type":"string","format":"date","description":"Issuance date (ISO 8601)","examples":["2026-03-28"]},"language":{"type":"string","enum":["en","fr","nl","de"],"description":"Language for rendering"},"document_reference":{"type":"string","description":"Internal document reference","examples":["PS-2026-042"]}}},"employer":{"type":"object","description":"Employer identification","required":["name","address","vat_number","bce_number","onss_number"],"additionalProperties":false,"properties":{"name":{"type":"string","description":"Legal name of the employer","minLength":1},"legal_form":{"type":"string","description":"Legal form (SRL, SA, SNC, etc.)","examples":["SRL"]},"address":{"type":"string","description":"Full postal address"},"seat_region":{"type":"string","enum":["nl_region","fr_region","brussels","de_region"],"description":"Linguistic region of the operating seat (Flemish decree of 19 July 1973, decree of the French Community of 30 June 1982, coordinated laws of 18 July 1966, art. 52). Not printed on the document: the readiness check warns when the language of the document does not match this region (notice be.lang.prescribed-document)."},"vat_number":{"type":"string","pattern":"^BE0[0-9]{9}$","description":"Belgian VAT number (BE0xxxxxxxxx)"},"bce_number":{"type":"string","pattern":"^[0-9]{4}\\.[0-9]{3}\\.[0-9]{3}$","description":"BCE/KBO number (0xxx.xxx.xxx)"},"onss_number":{"type":"string","description":"NSSO employer registration number"},"joint_committee":{"type":"string","description":"Applicable joint committee (commission paritaire / paritair comité)","examples":["200","218","226"]},"phone":{"type":"string"},"email":{"type":"string","format":"email"}}},"employee":{"type":"object","description":"Employee identification","required":["name","function","status"],"additionalProperties":false,"properties":{"name":{"type":"string","description":"Full name of the employee","minLength":1},"niss":{"type":"string","description":"Belgian National Social Security Number (numéro NISS / INSZ-nummer)","pattern":"^[0-9]{2}\\.[0-9]{2}\\.[0-9]{2}-[0-9]{3}\\.[0-9]{2}$"},"function":{"type":"string","description":"Job title / function","examples":["Développeuse Senior","Accountant","Sales Manager"]},"status":{"type":"string","enum":["employee","worker","Employé(e)","Ouvrier(ère)","Bediende","Arbeider"],"description":"Employment status (employé / ouvrier)"},"start_date":{"type":"string","format":"date","description":"Employment start date","examples":["2023-09-01"]},"iban":{"type":"string","description":"IBAN for salary payment","pattern":"^BE[0-9]{2}[0-9]{12}$"},"cost_center":{"type":"string","description":"Internal cost center","examples":["R&D","Finance"]},"matricule":{"type":"string","minLength":1,"description":"Worker's number at the employer (matricule), as the employer assigns it","examples":["M-0412"]}}},"payslip":{"type":"object","description":"Payslip computation","required":["period","payment_date","base_salary","total_gross","onss_rate","onss_employee","taxable","withholding_tax","total_deductions","net_salary"],"additionalProperties":false,"properties":{"period":{"type":"string","description":"Pay period (e.g. 'March 2026', '2026-03')","examples":["Mars 2026","March 2026","Maart 2026"]},"payment_date":{"type":"string","format":"date","description":"Actual payment date","examples":["2026-03-28"]},"performance":{"type":"object","description":"Extent of the work performed in the pay period, as the employer states it (days and/or hours)","additionalProperties":false,"properties":{"days":{"type":"number","minimum":0,"description":"Number of days worked or assimilated in the period","examples":[22]},"hours":{"type":"number","minimum":0,"description":"Number of hours worked or assimilated in the period","examples":[167.2]}}},"base_salary":{"type":"number","minimum":0,"description":"Base contractual gross salary (EUR)"},"gross_additions":{"type":"array","description":"Additional gross components (ATN, bonuses, overtime, etc.)","items":{"type":"object","required":["label","amount"],"additionalProperties":false,"properties":{"label":{"type":"string","description":"Description of the addition"},"base":{"type":"string","description":"Calculation base (optional)"},"amount":{"type":"number","description":"Amount in EUR"}}}},"total_gross":{"type":"number","minimum":0,"description":"Total gross salary (base + additions)"},"onss_rate":{"type":"number","minimum":0,"maximum":100,"description":"Employee NSSO rate (%)","default":13.07},"onss_employee":{"type":"number","minimum":0,"description":"Employee NSSO deduction amount (EUR)"},"werkbonus":{"type":"number","minimum":0,"description":"Work bonus (réduction NSSO bas salaires / werkbonus) if applicable"},"taxable":{"type":"number","minimum":0,"description":"Taxable base (total_gross - onss_employee + werkbonus)"},"withholding_tax":{"type":"number","minimum":0,"description":"Professional withholding tax (précompte professionnel / bedrijfsvoorheffing)"},"special_ss":{"type":"number","minimum":0,"description":"Special social security contribution (CSSS)","default":0},"other_deductions":{"type":"array","description":"Other deductions (advance, ATN reimbursement, meal voucher employee share, etc.)","items":{"type":"object","required":["label","amount"],"additionalProperties":false,"properties":{"label":{"type":"string"},"amount":{"type":"number","minimum":0}}}},"total_deductions":{"type":"number","minimum":0,"description":"Total deductions (NSSO + withholding tax + CSSS + other)"},"net_additions":{"type":"array","description":"Additions to net pay after deductions (employer meal voucher share, etc.)","items":{"type":"object","required":["label","amount"],"additionalProperties":false,"properties":{"label":{"type":"string"},"amount":{"type":"number","minimum":0}}}},"net_salary":{"type":"number","minimum":0,"description":"Net salary payable to employee"},"employer_onss_rate":{"type":"number","minimum":0,"maximum":100,"description":"Employer NSSO rate (%) — indicative, varies by regime"},"employer_onss":{"type":"number","minimum":0,"description":"Employer NSSO contribution (EUR)"},"employer_additions":{"type":"array","description":"Additional employer costs (meal vouchers employer share, eco-cheques, CO2 solidarity, etc.)","items":{"type":"object","required":["label","amount"],"additionalProperties":false,"properties":{"label":{"type":"string"},"amount":{"type":"number","minimum":0}}}},"total_employer_cost":{"type":"number","minimum":0,"description":"Total employer cost (EUR)"}}}}}