September 24, 2026

Germany Time Tracking: Automatic Break Deduction

A formula like `=IF(B2>9,45,IF(B2>6,30,0))/1440` deducts the statutory rest break (Ruhepause) under § 4 of the German Working Hours Act (Arbeitszeitgesetz, ArbZG) correctly, as long as nobody is under 18 and no exception applies. At 9.5 hours worked, that is 45 minutes of break, for 10.25 hours present in total. Minors follow different thresholds under § 11 of the Youth Employment Protection Act (Jugendarbeitsschutzgesetz, JArbSchG), and the formula does not flag an excessive work day or a rest period that is too short, that is what the API break calculator does with its `warnungen` field.

What a simple formula deducts automatically

A typical formula in Excel or a homegrown time tracking sheet looks at a day's hours worked and returns the matching break: 0 minutes up to 6 hours, 30 minutes above 6 hours, 45 minutes above 9 hours. Those are exactly the thresholds from § 4 ArbZG for adult employees, and the formula applies them reliably to every row without anyone doing the math by hand.

The formula only checks one number, hours worked, and only returns one number, break minutes. Who the thresholds apply to and where exceptions kick in is not something the formula knows. You have to rebuild that yourself in the sheet, or keep it in your head, row by row.

Excel formula: break and time present from hours worked

excel
Column B: hours worked as a decimal, for example 9.5
C2 (break):       =IF(B2>9,45,IF(B2>6,30,0))/1440
D2 (time present): =B2/24+C2

Where the formula breaks once you copy it as is

The formula above only solves the one case it was written for: an adult employee, an ordinary working day, no exception. Copy it unchanged into a larger time tracking sheet with several groups of employees, and several gaps open up at once, none of which announces itself.

What the formula does not check

  • Minors under 18 get the wrong thresholds. The formula uses more than 6 and more than 9 hours for adults, while § 11 JArbSchG sets more than 4.5 and more than 6 hours for minors, with 60 minutes instead of 45 at the upper step. Without a second condition and a column for age, the formula gets this group wrong.
  • It does not warn about an excessive work day. More than 10 hours a day is only allowed for adults under narrow exceptions, and more than 8 hours only if the average over six calendar months or 24 weeks works out (§ 3 ArbZG). A formula that only returns minutes says nothing about that.
  • It does not check the rest period (Ruhezeit) before the next working day. 11 uninterrupted hours for adults, 12 for minors (§ 5 ArbZG, § 13 JArbSchG). That needs a comparison between clock-out and the next clock-in, a different calculation than the break formula.
  • It does not make sure the break was fixed in advance and comes in blocks of at least 15 minutes. That is a question of how work is organized, not a pure calculation, but a formula that only outputs a number of minutes does not remind anyone of it.
  • It knows nothing about the duty to keep records or the special rules for certain groups. Hours worked beyond 8 a day must be recorded and kept for 2 years (§ 16(2) ArbZG), and pregnant and breastfeeding employees have tighter limits (§§ 4, 5 and 23 of the Maternity Protection Act, MuSchG) that a general formula does not capture.

Comparison: break and time present by hours worked

Hours workedGroupBreakTotal time presentRest period after
6 hoursAdults0 min6 hours11 hours
7 hoursAdults30 min7.5 hours11 hours
9 hoursAdults30 min9.5 hours11 hours
9.5 hoursAdults45 min10.25 hours11 hours
10 hoursAdults45 min10.75 hours11 hours
7 hoursMinors60 min8 hours12 hours

Source: Values from the API break calculator, legal basis § 4 ArbZG for adults and § 11 JArbSchG for minors

Breaks for minors: different thresholds, different rest

Employees who are 15 or older but under 18 do not fall under § 4 ArbZG, they fall under § 11 JArbSchG: more than 4.5 hours worked triggers a 30 minute break, more than 6 hours triggers 60 minutes. The rest period before the next working day is longer too, 12 hours instead of 11 (§ 13 JArbSchG). Children under 15 generally may not be employed at all (§ 5 JArbSchG).

The table above shows the difference at the same hours worked: at 7 hours, an adult gets 30 minutes of break, a minor gets 60. The full picture with every field is part of the statutory break dataset.

Minors also get a rule about where the break falls that adults do not have: the first break must start at the earliest one hour after work begins, the last one at the latest one hour before work ends (§ 11(2) JArbSchG). Working more than 4.5 hours in a row without a break is not allowed for minors, for adults that limit is 6 hours. The shift itself may not exceed 10 hours for minors, or 11 in some industries (§ 12 JArbSchG).

When the simple formula is enough

For a small team with no minors and no edge cases, the formula above is often enough. If nobody is under 18, nobody regularly works more than 10 hours, and rest periods are not in question, the simple formula returns the same break as the API calculator, just without the warnings and without the second group of thresholds.

The point where the formula gets tight is not the arithmetic itself, it is correct for the one case it was built for. It gets tight when a 17 year old apprentice joins, when a shift runs past 10 hours, or when an audit expects the rule to be documented for every case, not just assumed. That is where one formula lacks the range that a time tracking product or payroll system actually needs across a whole workforce.

The break calculator via the API

The pausen calculator at /v1/hr/pausen takes hours worked and an optional jugendlich flag for minors, and returns every value in one response: the break in minutes, total time present, the maximum daily working time, the rest period before the next working day, and a warnungen field that is only filled once hours worked cross a statutory threshold.

Above 8 hours, the response already carries a warning, even though the break itself is calculated correctly. At 9 hours it reads: "Mehr als 8 Stunden sind nur zulässig, wenn innerhalb von sechs Kalendermonaten oder 24 Wochen im Durchschnitt 8 Stunden werktäglich nicht überschritten werden (§ 3 Satz 2 ArbZG).", at 11 hours instead: "Mehr als 10 Stunden Arbeitszeit am Tag sind nach § 3 ArbZG nicht zulässig, Ausnahmen nur nach §§ 7, 14 und 15 ArbZG.". A formula that only returns minutes does not show that difference. Every field in the response is explained in the break calculator reference. These text fields come back in German, since the underlying data covers German employment law.

On the MCP server the tool is called hr_pausen and answers the same question for agents and chat that the API answers for code, for time tracking or shift planning for example. How to set up the server and which other tools it offers is covered under MCP tools.

You can try this yourself with a free key: sign up for free.

Request with curl: 9.5 hours worked

bash
curl "https://api.quellenkontor.dev/v1/hr/pausen?arbeitszeit_stunden=9.5" \
  -H "Authorization: Bearer $QK_KEY"

Excerpt of the response

json
{
  "datensatz": "pausen",
  "arbeitszeit_stunden": 9.5,
  "jugendlich": false,
  "pause_minuten": 45,
  "anwesenheit_stunden": 10.25,
  "hoechstarbeitszeit_tag_stunden": 8,
  "hoechstarbeitszeit_tag_ausnahme_stunden": 10,
  "ruhezeit_stunden": 11,
  "warnungen": [
    "Mehr als 8 Stunden sind nur zulässig, wenn innerhalb von sechs Kalendermonaten oder 24 Wochen im Durchschnitt 8 Stunden werktäglich nicht überschritten werden (§ 3 Satz 2 ArbZG)."
  ],
  "rechtsgrundlage": "§ 4 ArbZG"
}

Comparing several work hours with the Python SDK

python
import os
from quellenkontor import Quellenkontor

qk = Quellenkontor(api_key=os.environ["QK_KEY"])
for stunden in (6, 7, 9, 9.5, 10):
    r = qk.hr.pausen(arbeitszeit_stunden=stunden)
    print(stunden, r["pause_minuten"], r["anwesenheit_stunden"])

# 6    0 6
# 7    30 7.5
# 9    30 9.5
# 9.5  45 10.25
# 10   45 10.75

When a works agreement can change the break rules

A works agreement (Betriebsvereinbarung) on its own is not enough to deviate from the break rules. German law only allows deviations through a collective agreement (Tarifvertrag), or a works or service agreement based on one (§ 7 ArbZG, § 21a JArbSchG), for example shorter breaks split across a shift pattern.

Without a basis in a collective agreement, the statutory thresholds from § 4 ArbZG and § 11 JArbSchG apply. Even then, the employer alone does not decide exactly where the break falls in the day: where a works council (Betriebsrat) exists, it has a codetermination right (Mitbestimmung) over the start and end of daily working hours and the timing of breaks (§ 87(1) no. 2 of the Works Constitution Act, BetrVG). Time tracking software that deducts breaks automatically does not replace that codetermination right, it only carries out what was agreed beforehand.

Recording duty and special groups

Employers must record hours worked beyond 8 a day and keep that record for 2 years (§ 16(2) ArbZG). A formula that only calculates the break does not satisfy that duty on its own, the time tracking system needs its own lasting record per employee.

Night workers get a shorter averaging period too: the 8 hour daily average has to be reached within one calendar month or four weeks, not within six months (§ 6(2) ArbZG). Anyone working nights, Sundays or public holidays finds the matching premiums in the night, Sunday and holiday premiums dataset.

Pregnant and breastfeeding employees get tighter limits than the general break rule: no more than 8.5 hours a day and 90 hours over two weeks, and no work between 8 p.m. and 6 a.m. (§§ 4 and 5 MuSchG). Breastfeeding breaks (Stillzeiten) do not count as a rest break (§ 23(1) MuSchG), a distinction a general break formula does not capture.

Checklist: introducing or reviewing break logic in time tracking

  • Check whether the workforce includes anyone under 18, and set a separate threshold for them in the time tracking system, 4.5 and 6 hours instead of 6 and 9.
  • Add a warning, or check by hand, whenever hours worked exceed 8 or 10 a day, instead of only calculating the break.
  • Check the rest period before the next working day separately from the break, 11 hours for adults, 12 for minors.
  • Decide how the break is fixed in advance and documented in blocks of at least 15 minutes, not just subtracted from time present by calculation.
  • Make sure hours worked beyond 8 a day are recorded and kept for 2 years, separately from the plain break calculation.
  • Where a collective agreement applies, check whether a works or service agreement allows different breaks, and keep that exception clearly separate from the statutory rule in the time tracking system.

The calculator applies § 4 ArbZG and § 11 JArbSchG schematically. It cannot account for collective agreements, works or service agreements based on one, or edge cases such as short breaks split across a shift pattern. When in doubt, the legal position in the individual case decides, not a general calculation.

Frequently asked questions

Does time tracking software deduct the break automatically if I do not configure anything?

Many products apply a built-in rule automatically once daily hours cross a threshold, but which rule that is, and whether it distinguishes adults from minors, depends on the configuration. Check the built-in rule against § 4 ArbZG and § 11 JArbSchG before you rely on it.

What if an employee volunteers to skip the break to leave earlier?

The law does not allow that. Working more than 6 hours in a row without a break is not permitted for adults under § 4 ArbZG, and volunteering to skip it changes nothing. The break has to actually happen, even if the time tracking system only shows it as a calculated deduction from time present.

Do I log the break as separate absence time, or just as a deduction from hours present?

Both happen in practice. Some systems book the break as its own absence between clock-in and clock-out, others only subtract it by calculation from gross time present, the way the formula in the example above does. For § 4 ArbZG, what matters is that the break actually happens and is fixed in advance, not how the software books it.

Does the automatic break rule also apply to trust-based hours or remote work?

Yes. The Working Hours Act does not distinguish by location or by time tracking model. Even under trust-based hours (Vertrauensarbeitszeit), the employer stays responsible for breaks and rest periods being kept, and the duty to record hours beyond 8 a day still applies (§ 16(2) ArbZG).

Sources

  1. § 4 ArbZG (rest breaks), German Working Hours Act
  2. § 3 ArbZG (working hours of employees, maximum daily hours)
  3. § 5 ArbZG (rest period)
  4. § 2 ArbZG (definitions, working time excludes rest breaks)
  5. § 6 ArbZG (night and shift work, averaging period for night workers)
  6. § 7 ArbZG (deviations through a collective agreement)
  7. § 16 ArbZG (posting the act, duty to record working time)
  8. § 11 JArbSchG (rest breaks and break rooms for minors), Youth Employment Protection Act
  9. § 8 JArbSchG (length of working time for minors)
  10. § 12 JArbSchG (shift length for minors)
  11. § 13 JArbSchG (daily free time, rest period for minors)
  12. § 21a JArbSchG (deviations through a collective agreement)
  13. § 5 JArbSchG (prohibition on employing children)
  14. § 87 BetrVG (works council codetermination on working time), Works Constitution Act
  15. §§ 4 and 5 MuSchG (maximum working time and night work ban for pregnant and breastfeeding employees), Maternity Protection Act
  16. § 23 MuSchG (no loss of pay during time off, breastfeeding breaks and rest breaks)

More articles

Related datasets

Put the values straight into your software

500 requests a month for free, with a source for every value.

Get an API key →