{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","description":"Demand letter — formal written demand for payment or specific performance (or both) served before the creditor escalates to collection, arbitration or litigation. Typically functions as a 'mise en demeure' / 'ingebrekestelling' under civil-law systems, triggering default interest and interrupting limitation periods. Incorporates the statutory late-payment framework under Directive 2011/7/EU for B2B claims within the EU.","required":["sender","recipient","date","claim_basis","deadline","consequences_of_non_compliance","governing_law_for_dispute","signatory"],"additionalProperties":false,"properties":{"reference":{"type":"string"},"sender":{"type":"object","required":["name","address"],"additionalProperties":false,"properties":{"name":{"type":"string","minLength":1},"address":{"type":"string","minLength":1},"contact_email":{"type":"string","format":"email"},"representative_name":{"type":"string"},"representative_role":{"type":"string"}}},"recipient":{"type":"object","required":["name","address"],"additionalProperties":false,"properties":{"name":{"type":"string","minLength":1},"address":{"type":"string","minLength":1},"attention":{"type":"string"}}},"date":{"type":"string","format":"date"},"claim_basis":{"type":"string","minLength":1,"description":"Contract or invoice cited, factual basis of the claim."},"amount_claimed_optional":{"type":"object","required":["amount","currency"],"additionalProperties":false,"properties":{"amount":{"type":"number","exclusiveMinimum":0},"currency":{"type":"string"},"breakdown":{"type":"array","minItems":1,"items":{"type":"object","required":["label","amount"],"additionalProperties":false,"properties":{"label":{"type":"string","minLength":1},"amount":{"type":"number"}}}}}},"performance_demanded_optional":{"type":"string"},"deadline":{"type":"string","format":"date"},"consequences_of_non_compliance":{"type":"string","minLength":1},"governing_law_for_dispute":{"type":"string","minLength":1},"signatory":{"type":"object","required":["name","role"],"additionalProperties":false,"properties":{"name":{"type":"string","minLength":1},"role":{"type":"string","minLength":1},"place":{"type":"string"},"date":{"type":"string","format":"date"}}}}}