{"$schema":"https://json-schema.org/draft/2020-12/schema","title":"Work order - Bon de travail ou d'intervention / Werkbon of interventiebon (BE)","description":"A work order of a trade or field-service business, issued at the end of an intervention at the customer's premises: the issuer's identification (enterprise number, address, payment account), the customer, the intervention, the tasks done, the parts, the labour, the call-out, the totals including VAT, the extra work approved by the customer and the signatures. It is not an invoice. For a consumer the total price including VAT is always given and printed, the place where the contract is concluded is asked, and a contract concluded off the premises or at a distance carries the withdrawal information and the model form after the signatures. Every amount is given by the user; nothing is computed.","type":"object","additionalProperties":false,"required":["issuer","work_order","technician","customer","request","intervention","tasks","status","signoff"],"properties":{"issuer":{"type":"object","additionalProperties":false,"required":["name","address","enterprise_number","iban"],"description":"The enterprise that issues the work order.","properties":{"name":{"type":"string","description":"Name of the enterprise (the sole trader's trade name or the company name)."},"address":{"type":"string","description":"Full address: street, number, postal code and municipality (Code of economic law art. III.25: the domiciliation)."},"enterprise_number":{"type":"string","description":"Belgian enterprise number (KBO/BCE), written 0123.456.789.","pattern":"^[01][0-9]{3}\\.[0-9]{3}\\.[0-9]{3}$"},"vat_number":{"type":"string","description":"Belgian VAT number, written BE0123456789 (leave out if the enterprise has none).","pattern":"^BE[01][0-9]{9}$"},"iban":{"type":"string","description":"IBAN of a payment account the enterprise holds (Code of economic law art. III.25, al. 2)."},"phone":{"type":"string","description":"Telephone number."},"email":{"type":"string","description":"E-mail address."}}},"work_order":{"type":"object","additionalProperties":false,"required":["profile","number","date","total_incl_vat","total_due_incl_vat"],"description":"The work order itself.","properties":{"profile":{"type":"string","enum":["b2c","b2b"],"description":"b2c: the customer is a consumer; b2b: the customer is an enterprise."},"number":{"type":"string","description":"Number of the work order."},"date":{"type":"string","format":"date","description":"Date of the work order."},"conclusion_context":{"type":"string","enum":["premises","off_premises","distance"],"description":"Where the contract is concluded: premises (in the enterprise's premises), off_premises (in the simultaneous physical presence of the enterprise and the consumer away from its premises: the consumer's home, a fair, a visit; Code of economic law art. I.8, 31° a), distance."},"price_display":{"type":"string","enum":["incl_vat","excl_vat"],"description":"How the line prices are shown to the consumer: incl_vat (unit prices and line amounts including VAT) or excl_vat (excluding VAT). The total including VAT is always given and printed (Code of economic law art. VI.4)."},"withdrawal":{"type":"object","additionalProperties":false,"required":["start"],"properties":{"start":{"type":"string","enum":["service_conclusion","sale_possession","multiple_goods_last","lots_last","regular_delivery_first"],"description":"Event from which the 14-day withdrawal period runs (Annex 1, instruction 1)."},"goods_return":{"type":"string","enum":["seller_collects","consumer_returns"],"description":"For a contract with goods: whether the seller collects the goods or the consumer returns them (Annex 1, instruction 5 a)."},"return_recipient":{"type":"string","description":"Name and geographical address of a person authorised by the seller to receive the returned goods, if any."},"return_costs":{"type":"string","enum":["seller","consumer_direct_costs","consumer_fixed_amount","consumer_estimated_maximum","seller_collects_own_expense"],"description":"Who bears the cost of returning the goods (Annex 1, instruction 5 b); seller_collects_own_expense: in an off-premises contract, goods that by their nature cannot normally be returned by post and were delivered to the consumer's home when the contract was concluded."},"return_cost_eur":{"type":"number","minimum":0,"description":"Amount of the return cost (fixed amount, or estimated maximum)."},"online_interface":{"type":"boolean","description":"For a distance contract: whether it is concluded by means of an online interface (web shop, app); then art. VI.61/2 requires a withdrawal function."},"online_withdrawal_function":{"type":"string","description":"Web address or other reference where the online withdrawal function (art. VI.61/2) is found, if the seller provides one."},"online_form_address":{"type":"string","description":"Web address where the model form or another unambiguous statement can be filled in and sent online, if the seller offers it."},"exceptions":{"type":"array","uniqueItems":true,"items":{"type":"string","enum":["service_fully_performed","financial_market_price","made_to_specification","perishable","sealed_hygiene","mixed_after_delivery","alcoholic_beverages","urgent_repairs","sealed_media","newspapers","public_auction","dated_leisure_services","digital_content_started","betting_lotteries","new_buildings"]},"description":"Cases without a withdrawal right, chosen by the seller as applicable to its offer: art. VI.53 for a distance contract, art. VI.73 for an off-premises contract (new_buildings is art. VI.73, 14° only; betting_lotteries is art. VI.53, 14° only)."}},"allOf":[{"if":{"properties":{"start":{"enum":["sale_possession","multiple_goods_last","lots_last","regular_delivery_first"]}},"required":["start"]},"then":{"required":["goods_return","return_costs"]}},{"if":{"properties":{"return_costs":{"enum":["consumer_fixed_amount","consumer_estimated_maximum"]}},"required":["return_costs"]},"then":{"required":["return_cost_eur"]}},{"if":{"properties":{"online_interface":{"const":true}},"required":["online_interface"]},"then":{"required":["online_withdrawal_function"]}}]},"parts_total":{"type":["string","number"],"description":"Total of the parts, excluding VAT, as the enterprise states it."},"subtotal_excl_vat":{"type":["string","number"],"description":"Subtotal excluding VAT (parts, labour, call-out)."},"vat_rate":{"type":["string","number"],"description":"VAT rate, in percent. No default: a missing rate prints a dash."},"vat_amount":{"type":["string","number"],"description":"VAT amount."},"total_incl_vat":{"type":["string","number"],"description":"Total price including VAT (Code of economic law art. VI.4), without the extra work."},"total_due_incl_vat":{"type":["string","number"],"description":"Total due by the customer including VAT, extra work included."}},"allOf":[{"if":{"properties":{"profile":{"const":"b2c"}},"required":["profile"]},"then":{"required":["conclusion_context","price_display"]}},{"if":{"properties":{"conclusion_context":{"enum":["off_premises","distance"]}},"required":["conclusion_context"]},"then":{"required":["withdrawal"]}}]},"technician":{"type":"object","additionalProperties":false,"required":["name"],"description":"The technician who did the work.","properties":{"name":{"type":"string","description":"Name of the technician."},"role":{"type":"string","description":"Function of the technician."}}},"customer":{"type":"object","additionalProperties":false,"required":["name","address"],"description":"The customer.","properties":{"name":{"type":"string","description":"Name of the customer."},"address":{"type":"string","description":"Address of the customer."},"enterprise_number":{"type":"string","description":"Enterprise number of a business customer, written 0123.456.789.","pattern":"^[01][0-9]{3}\\.[0-9]{3}\\.[0-9]{3}$"},"remarks":{"type":"string","description":"Remarks of the customer."}}},"site":{"type":"object","additionalProperties":false,"description":"The site.","properties":{"address":{"type":"string","description":"Address of the site of the intervention, if different from the customer's address."}}},"equipment":{"type":"object","additionalProperties":false,"description":"The equipment worked on.","properties":{"id":{"type":"string","description":"Identification of the equipment."},"description":{"type":"string","description":"Description of the equipment."},"serial":{"type":"string","description":"Serial number."}}},"request":{"type":"object","additionalProperties":false,"required":["description"],"description":"The request.","properties":{"description":{"type":"string","description":"What the customer asked for."}}},"quote":{"type":"object","additionalProperties":false,"description":"The prior quote, if any.","properties":{"reference":{"type":"string","description":"Number of the quote."},"date":{"type":"string","format":"date","description":"Date of the quote."},"matches":{"type":"string","enum":["yes","partly","no"],"description":"Whether the work matches the quote: yes, partly or no."}}},"intervention":{"type":"object","additionalProperties":false,"required":["date"],"description":"The intervention.","properties":{"date":{"type":"string","format":"date","description":"Date of the intervention."},"started_at":{"type":"string","description":"Arrival time, as written by the user (for example 08:30)."},"ended_at":{"type":"string","description":"Departure time, as written by the user (for example 11:00)."}}},"tasks":{"type":"array","description":"Tasks.","minItems":1,"items":{"type":"object","additionalProperties":false,"required":["description","done"],"properties":{"description":{"type":"string","description":"Task done."},"done":{"type":"boolean","description":"Whether the task was done."},"hours":{"type":"number","description":"Hours spent on the task.","minimum":0},"notes":{"type":"string","description":"Notes."}}}},"parts":{"type":"array","description":"Parts supplied.","items":{"type":"object","additionalProperties":false,"required":["description","quantity","unit_price","line_total"],"properties":{"ref":{"type":"string","description":"Reference of the part."},"description":{"type":"string","description":"Description of the part."},"quantity":{"type":["string","number"],"description":"Quantity."},"unit_price":{"type":["string","number"],"description":"Unit price excluding VAT."},"line_total":{"type":["string","number"],"description":"Amount of the line excluding VAT."},"unit_price_incl_vat":{"type":["string","number"],"description":"Unit price including VAT; printed instead of the price excluding VAT when price_display is incl_vat."},"line_total_incl_vat":{"type":["string","number"],"description":"Amount of the line including VAT; printed instead of the amount excluding VAT when price_display is incl_vat."}}}},"labour":{"type":"object","additionalProperties":false,"description":"Labour.","properties":{"hours":{"type":"number","description":"Total hours of labour.","minimum":0},"rate":{"type":["string","number"],"description":"Hourly rate excluding VAT."},"total":{"type":["string","number"],"description":"Labour amount excluding VAT."},"total_incl_vat":{"type":["string","number"],"description":"Labour amount including VAT; printed instead of the amount excluding VAT when price_display is incl_vat."}}},"call_out_fee":{"type":["string","number"],"description":"Call-out or travel fee excluding VAT."},"call_out_fee_incl_vat":{"type":["string","number"],"description":"Call-out or travel fee including VAT; printed instead when price_display is incl_vat."},"extra_work":{"type":"array","description":"Extra work approved by the customer.","items":{"type":"object","additionalProperties":false,"required":["description","approved_on","approved_by"],"properties":{"description":{"type":"string","description":"Extra work not in the quote."},"price_excl_vat":{"type":["string","number"],"description":"Price excluding VAT."},"price_incl_vat":{"type":["string","number"],"description":"Price including VAT."},"approved_on":{"type":"string","format":"date","description":"Date the customer approved the extra work."},"approved_by":{"type":"string","description":"Name of the person who approved it."}}}},"legal_guarantee":{"type":"object","additionalProperties":false,"description":"The legal guarantee reminder, for goods sold to a consumer.","properties":{"harmonised_notice":{"type":"string","description":"Where and how the seller provides the harmonised notice on the legal guarantee of conformity (Implementing Regulation (EU) 2025/1960; CDE art. VI.2, 5°, VI.2/2). The notice itself is the official layout and is not reproduced by the template."}}},"status":{"type":"string","enum":["open","in_progress","completed","on_hold","cancelled"],"description":"Status of the work order: open, in_progress, completed, on_hold or cancelled."},"signoff":{"type":"object","additionalProperties":false,"required":["technician"],"description":"Signatures.","properties":{"technician":{"type":"object","additionalProperties":false,"required":["date"],"description":"Technician's signature.","properties":{"name":{"type":"string","description":"Name of the technician who signs."},"date":{"type":"string","format":"date","description":"Date of the technician's signature."}}},"customer":{"type":"object","additionalProperties":false,"description":"Customer's signature.","properties":{"name":{"type":"string","description":"Name of the customer who signs."},"date":{"type":"string","format":"date","description":"Date of the customer's signature (it selects the regime of the Civil Code reference)."},"accepted":{"type":"string","enum":["yes","with_reserves","refused"],"description":"The customer's answer on the work: yes, with_reserves or refused."},"reserves":{"type":"string","description":"Reserves of the customer."}}}}}}}