{"$schema":"https://json-schema.org/draft/2020-12/schema","title":"Ordre de paiement SEPA -- virements salaires (BE) -- Reglement UE 260/2012 + Loi 12.4.1965","description":"Belgian SEPA Credit Transfer (SCT) batch payment order for salary disbursements. Mirrors the structural fields of an ISO 20022 pain.001.001.03 batch: initiating party (employer IBAN/BIC), per-beneficiary entries (employee IBAN, net amount, remittance info), batch totals with control sum validation, and execution date. Produced as a human-readable audit trail alongside the electronic SEPA XML file.","type":"object","additionalProperties":false,"required":["letter","initiating_party","payment_info","entries","totals"],"properties":{"letter":{"type":"object","additionalProperties":false,"required":["place","date","language"],"properties":{"place":{"type":"string"},"date":{"type":"string","format":"date"},"language":{"type":"string","enum":["fr","nl","de","en"]}}},"initiating_party":{"type":"object","additionalProperties":false,"required":["name","iban","bic"],"description":"Partie initiatrice -- employeur debiteur (ISO 20022: InitgPty + DbtrAcct)","properties":{"name":{"type":"string","minLength":1},"legal_form":{"type":"string"},"address":{"type":"string"},"bce_number":{"type":"string","pattern":"^[0-9]{4}\\.[0-9]{3}\\.[0-9]{3}$"},"iban":{"type":"string","pattern":"^BE[0-9]{14}$","description":"IBAN du compte debiteur employeur (format belge BE + 14 chiffres)"},"bic":{"type":"string","pattern":"^[A-Z]{6}[A-Z0-9]{2}([A-Z0-9]{3})?$","description":"BIC/SWIFT de la banque de l'employeur (8 ou 11 caracteres)"},"bank_name":{"type":"string"}}},"payment_info":{"type":"object","additionalProperties":false,"required":["message_id","execution_date","payment_type"],"description":"Informations sur le lot de paiement (ISO 20022: PmtInf)","properties":{"message_id":{"type":"string","maxLength":35,"description":"Identifiant unique du message pain.001 (max 35 car. ISO 20022)"},"batch_booking":{"type":"boolean","description":"True = debit global unique; False = debit individuel par beneficiaire"},"execution_date":{"type":"string","format":"date","description":"Date d'execution demandee (ReqdExctnDt)"},"payment_type":{"type":"string","enum":["salaries","bonuses","vacation_pay","year_end_premium","expenses","other"],"description":"Type de paiement -- affecte la communication structuree"},"period_label":{"type":"string","description":"Libelle de la periode ex: Mars 2026"},"currency":{"type":"string","pattern":"^[A-Z]{3}$","description":"Code devise ISO 4217 (ex: EUR)"}}},"entries":{"type":"array","description":"Liste des virements individuels par beneficiaire (ISO 20022: CdtTrfTxInf)","minItems":1,"items":{"type":"object","additionalProperties":false,"required":["end_to_end_id","beneficiary_name","iban","amount"],"properties":{"end_to_end_id":{"type":"string","maxLength":35,"description":"Identifiant de bout en bout (EndToEndId -- max 35 car.)"},"matricule":{"type":"string"},"beneficiary_name":{"type":"string","minLength":1},"iban":{"type":"string","pattern":"^BE[0-9]{14}$","description":"IBAN du beneficiaire (format belge BE + 14 chiffres)"},"bic":{"type":"string","pattern":"^[A-Z]{6}[A-Z0-9]{2}([A-Z0-9]{3})?$","description":"BIC de la banque beneficiaire"},"amount":{"type":"number","minimum":0.01,"description":"Montant en EUR (InstdAmt)"},"communication":{"type":"string","maxLength":140,"description":"Communication non-structuree (RmtInf/Ustrd -- max 140 car.)"},"structured_reference":{"type":"string","pattern":"^\\+\\+\\+[0-9]{3}/[0-9]{4}/[0-9]{5}\\+\\+\\+$","description":"Reference structuree OGM/VCS si applicable (format +++xxx/xxxx/xxxxx+++)"}}}},"totals":{"type":"object","additionalProperties":false,"required":["entry_count","control_sum","balanced"],"properties":{"entry_count":{"type":"integer","minimum":1,"description":"Nombre total de virements (NbOfTxs)"},"control_sum":{"type":"number","minimum":0,"description":"Somme de controle = somme de tous les montants (CtrlSum)"},"balanced":{"type":"boolean","description":"True si entry_count et control_sum coherents avec les entrees"}}}}}