Vertragingsboete bouw berekenen
Beschrijving
Bereken de boete of korting bij te late oplevering van een bouwwerk: boetedagen in werk- of kalenderdagen, verlenging eraf en het bedrag na het maximum uit je contract (UAV 2012 §42).
Invoer velden
Resultaten
Met deze tool reken je de boete of korting uit bij te late oplevering van een bouwwerk. Je vult in hoeveel kalenderdagen het werk te laat is en op welke weekdag de overschrijding begint. De tool telt daaruit de werkdagen, trekt de verlenging af en rekent het bedrag uit, eventueel begrensd op het maximum uit je contract.
Onder de UAV 2012 heet de boete korting (§42). Het bedrag staat in het bestek; noemt het bestek niets, dan is het € 60 per dag. Er geldt geen korting voor dagen die geen werkdag zijn, en niet voor dagen waarvoor termijnverlenging geldt door overmacht, opdrachtgeversrisico of wijzigingen (§8 lid 4 en 5). Een verzoek om verlenging moet de aannemer schriftelijk en uiterlijk veertien dagen voor het einde van de termijn indienen.
Feestdagen, bouwvak en andere vrije dagen telt de tool niet automatisch: vul ze zelf in. Bron: UAV 2012 (versie 2025), Staatscourant 2025, nr. 6896. Contract en bestek zijn leidend; bij UAV-GC of een eigen regeling volg je de bepalingen uit je contract.
Volgende stap: bereken wat de vertraging je zelf kost met de tool leegstandskosten, of zet de boete af tegen de aanneemsom.
Formulas:
-
h_v_bedrag = if(grondslag == 'uav_geen', 60, if(bedrag_dag > 0, bedrag_dag, 0))
-
h_wd = if(grondslag == 'eigen_kal', 0, 1)
-
h_v_s = if(grondslag != 'eigen_kal', if(startdag == 'ma', 0, if(startdag == 'di', 1, if(startdag == 'wo', 2, if(startdag == 'do', 3, if(startdag == 'vr', 4, if(startdag == 'za', 5, 6)))))), 0)
-
h_n = if(dagen_kal > 0, floor(dagen_kal), 0)
-
h_weken = floor(h_n / 7)
-
h_rest = h_n - 7 * h_weken
-
h_wd_rest = if(h_rest > 0 && if((h_v_s + 0) >= 7, (h_v_s + 0) - 7, (h_v_s + 0)) < 5, 1, 0) + if(h_rest > 1 && if((h_v_s + 1) >= 7, (h_v_s + 1) - 7, (h_v_s + 1)) < 5, 1, 0) + if(h_rest > 2 && if((h_v_s + 2) >= 7, (h_v_s + 2) - 7, (h_v_s + 2)) < 5, 1, 0) + if(h_rest > 3 && if((h_v_s + 3) >= 7, (h_v_s + 3) - 7, (h_v_s + 3)) < 5, 1, 0) + if(h_rest > 4 && if((h_v_s + 4) >= 7, (h_v_s + 4) - 7, (h_v_s + 4)) < 5, 1, 0) + if(h_rest > 5 && if((h_v_s + 5) >= 7, (h_v_s + 5) - 7, (h_v_s + 5)) < 5, 1, 0) + if(h_rest > 6 && if((h_v_s + 6) >= 7, (h_v_s + 6) - 7, (h_v_s + 6)) < 5, 1, 0)
-
h_v_feest = if(grondslag != 'eigen_kal', if(feestdagen > 0, feestdagen, 0), 0)
-
h_werkdagen = if(5 * h_weken + h_wd_rest - h_v_feest > 0, 5 * h_weken + h_wd_rest - h_v_feest, 0)
-
h_dagen_bruto = if(h_wd == 1, h_werkdagen, h_n)
-
h_verl = if(verlenging > 0, verlenging, 0)
-
h_claim = if(claim_dagen > 0, claim_dagen, 0)
-
h_boetedagen = if(h_dagen_bruto - h_verl > 0, h_dagen_bruto - h_verl, 0)
-
h_boetedagen_claim = if(h_dagen_bruto - h_verl - h_claim > 0, h_dagen_bruto - h_verl - h_claim, 0)
-
h_bruto = h_boetedagen * h_v_bedrag
-
h_bruto_claim = h_boetedagen_claim * h_v_bedrag
-
h_max = if(max_soort == 'bedrag', if(max_bedrag > 0, max_bedrag, 0), if(max_soort == 'pct', if(aanneemsom > 0 && max_pct > 0, aanneemsom * max_pct / 100, 0), 0))
-
h_boete = if(max_soort != 'geen' && h_bruto > h_max, h_max, h_bruto)
-
h_boete_claim = if(max_soort != 'geen' && h_bruto_claim > h_max, h_max, h_bruto_claim)
-
h_t_dagen = if(round(h_boetedagen * 10, 0) - 10 * floor(round(h_boetedagen * 10, 0) / 10) > 0, concat(format(floor(round(h_boetedagen * 10, 0) / 10), '0'), ',', format(round(h_boetedagen * 10, 0) - 10 * floor(round(h_boetedagen * 10, 0) / 10), '0')), format(floor(round(h_boetedagen * 10, 0) / 10), '0'))
-
h_t_bedrag = if(round(h_v_bedrag, 0) >= 1000000, concat(format(floor(round(h_v_bedrag, 0) / 1000000), '0'), '.', concat(if((floor(round(h_v_bedrag, 0) / 1000) - 1000 * floor(round(h_v_bedrag, 0) / 1000000)) < 100, '0', ''), if((floor(round(h_v_bedrag, 0) / 1000) - 1000 * floor(round(h_v_bedrag, 0) / 1000000)) < 10, '0', ''), format((floor(round(h_v_bedrag, 0) / 1000) - 1000 * floor(round(h_v_bedrag, 0) / 1000000)), '0')), '.', concat(if((round(h_v_bedrag, 0) - 1000 * floor(round(h_v_bedrag, 0) / 1000)) < 100, '0', ''), if((round(h_v_bedrag, 0) - 1000 * floor(round(h_v_bedrag, 0) / 1000)) < 10, '0', ''), format((round(h_v_bedrag, 0) - 1000 * floor(round(h_v_bedrag, 0) / 1000)), '0'))), if(round(h_v_bedrag, 0) >= 1000, concat(format(floor(round(h_v_bedrag, 0) / 1000), '0'), '.', concat(if((round(h_v_bedrag, 0) - 1000 * floor(round(h_v_bedrag, 0) / 1000)) < 100, '0', ''), if((round(h_v_bedrag, 0) - 1000 * floor(round(h_v_bedrag, 0) / 1000)) < 10, '0', ''), format((round(h_v_bedrag, 0) - 1000 * floor(round(h_v_bedrag, 0) / 1000)), '0'))), format(round(h_v_bedrag, 0), '0')))
-
h_t_bruto = if(round(h_bruto, 0) >= 1000000, concat(format(floor(round(h_bruto, 0) / 1000000), '0'), '.', concat(if((floor(round(h_bruto, 0) / 1000) - 1000 * floor(round(h_bruto, 0) / 1000000)) < 100, '0', ''), if((floor(round(h_bruto, 0) / 1000) - 1000 * floor(round(h_bruto, 0) / 1000000)) < 10, '0', ''), format((floor(round(h_bruto, 0) / 1000) - 1000 * floor(round(h_bruto, 0) / 1000000)), '0')), '.', concat(if((round(h_bruto, 0) - 1000 * floor(round(h_bruto, 0) / 1000)) < 100, '0', ''), if((round(h_bruto, 0) - 1000 * floor(round(h_bruto, 0) / 1000)) < 10, '0', ''), format((round(h_bruto, 0) - 1000 * floor(round(h_bruto, 0) / 1000)), '0'))), if(round(h_bruto, 0) >= 1000, concat(format(floor(round(h_bruto, 0) / 1000), '0'), '.', concat(if((round(h_bruto, 0) - 1000 * floor(round(h_bruto, 0) / 1000)) < 100, '0', ''), if((round(h_bruto, 0) - 1000 * floor(round(h_bruto, 0) / 1000)) < 10, '0', ''), format((round(h_bruto, 0) - 1000 * floor(round(h_bruto, 0) / 1000)), '0'))), format(round(h_bruto, 0), '0')))
-
h_t_boete = if(round(h_boete, 0) >= 1000000, concat(format(floor(round(h_boete, 0) / 1000000), '0'), '.', concat(if((floor(round(h_boete, 0) / 1000) - 1000 * floor(round(h_boete, 0) / 1000000)) < 100, '0', ''), if((floor(round(h_boete, 0) / 1000) - 1000 * floor(round(h_boete, 0) / 1000000)) < 10, '0', ''), format((floor(round(h_boete, 0) / 1000) - 1000 * floor(round(h_boete, 0) / 1000000)), '0')), '.', concat(if((round(h_boete, 0) - 1000 * floor(round(h_boete, 0) / 1000)) < 100, '0', ''), if((round(h_boete, 0) - 1000 * floor(round(h_boete, 0) / 1000)) < 10, '0', ''), format((round(h_boete, 0) - 1000 * floor(round(h_boete, 0) / 1000)), '0'))), if(round(h_boete, 0) >= 1000, concat(format(floor(round(h_boete, 0) / 1000), '0'), '.', concat(if((round(h_boete, 0) - 1000 * floor(round(h_boete, 0) / 1000)) < 100, '0', ''), if((round(h_boete, 0) - 1000 * floor(round(h_boete, 0) / 1000)) < 10, '0', ''), format((round(h_boete, 0) - 1000 * floor(round(h_boete, 0) / 1000)), '0'))), format(round(h_boete, 0), '0')))
-
h_t_eenheid = if(h_wd == 1, ' werkdagen', ' kalenderdagen')
-
werkdagen_periode = h_werkdagen
Kalenderdagen te laat min zaterdagen, zondagen en de feest- en vakantiedagen die je invult. Volgens UAV 2012 §1 en §42 lid 3 telt de korting alleen over werkdagen. -
boetedagen = round(h_boetedagen, 1)
Dagen te laat (werkdagen, of kalenderdagen als je contract dat zegt) min de verleende verlenging en de dagen zonder korting. -
boete_bruto = round(h_bruto, 0)
Boetedagen x bedrag per dag. Staat er in het bestek geen bedrag, dan is de korting onder UAV 2012 € 60 per dag (§42 lid 2). -
boete = round(h_boete, 0)
De boete begrensd op het maximum uit je contract. De UAV 2012 zelf kent geen maximum. -
boete_claim = round(h_boete_claim, 0)
Dezelfde berekening, maar met de geclaimde dagen ook als verlenging. Het verschil met de boete hierboven is wat de claim waard is. -
oordeel = if(h_boetedagen <= 0, 'Geen boete: na aftrek van de verlenging is het werk niet te laat opgeleverd.', if(max_soort != 'geen' && h_bruto > h_max, concat(h_t_dagen, h_t_eenheid, ' x € ', h_t_bedrag, ' = € ', h_t_bruto, ', begrensd op het maximum van € ', h_t_boete, '.'), concat(h_t_dagen, h_t_eenheid, ' x € ', h_t_bedrag, ' = € ', h_t_boete, if(h_wd == 1 && grondslag != 'eigen_wd', ' korting (UAV 2012 §42).', ' boete volgens je contract.'))))
Onder UAV 2012 is de korting verbeurd door het verstrijken van de termijn, zonder ingebrekestelling, en wordt ze ingehouden op de eerstvolgende termijnbetaling (§42 lid 5 en 6).
Berekening informatie
Meer over bouwkosten
Ontdek meer tools gerelateerd aan bouwkosten