Reference: Night and holiday premiums
Tax-free premium rates under § 3b EStG and the base pay limits for tax and social security.
The maximum rates up to which premiums for Sunday, holiday and night work (SFN-Zuschläge) stay tax-free, with the special cases midnight to 4 a.m., Christmas Eve and New Year's Eve from 2 p.m., Christmas and May 1. Plus the base pay (Grundlohn) limits of €50 per hour for tax and €25 for social security. With a base pay, the API calculates the tax-free and contribution-free amounts per hour.
Endpoints and calls
#| Access | Call |
|---|---|
| REST API | GET /hr/sfn-zuschlaege |
| History | GET /hr/sfn-zuschlaege/verlauf |
| SDK JavaScript | qk.hr.sfnZuschlaege(…) |
| SDK Python | qk.hr.sfn_zuschlaege(…) |
| CLI | qk sfn-zuschlaege --datum 2026-12-24 --grundlohn-stunde 22.5 |
| MCP tool | hr_sfn_zuschlaege |
Parameters
#| Name | Type | Required | Default | Allowed | Description |
|---|---|---|---|---|---|
datum | date (YYYY-MM-DD) | no | heute | Day of work or effective date of the rates in the format YYYY-MM-DD. Defaults to today. If it falls on December 24, 25, 26 or 31 or on May 1, the response gives the rate of that day in the field sondertag. Whether another day is a public holiday is answered by hr_feiertage. | |
grundlohn_stunde | number | no | 0 to 1000 | Base pay per hour in euros under § 3b Abs. 2 EStG (optional): regular wages for the regular working time including regular allowances, without SFN premiums and overtime pay; for a monthly salary, divided by 4.35 times the weekly hours (R 3b Abs. 2 LStR). The response then adds the tax-free and contribution-free amounts per hour. | |
bestandteil | text | no | nachtarbeit, nachtarbeit_0_bis_4_uhr, sonntagsarbeit, feiertagsarbeit, weihnachten_und_1_mai, grundlohn_hoechstbetrag_steuer, grundlohn_hoechstbetrag_sv | Return and cite only this component, for example for a single question (optional). Allowed values are the component ids. |
The API rejects unknown parameters with unbekannter_parameter. In addition there are format and trennzeichen, see CSV.
Response fields
#| Field | Type | Meaning |
|---|---|---|
datensatz | Text | Dataset id |
datum | Date | Requested effective date |
vorlaeufig | Boolean | true if not all values are set yet for the effective date |
werte | Object | Short form: component and value on the effective date, null for an announced value that is not set yet |
bestandteile | List | Per component: value or rate, validity, legal basis and source |
regeln | List | Rules from the law in sentences, each with its legal provision |
hinweise | List | Limits of the values or the calculation, in sentences |
lizenz | Text | Terms of use for the values |
stand | Date | Date of the last check against the source |
sondertag | Object or null | Rate of the requested day if datum falls on December 24, 25, 26 or 31 or May 1: name, satz_prozent, ab_14_uhr and, with base pay, the amounts per hour |
grundlohn_stunde | Decimal or null | Base pay per hour, as passed in |
betraege_stunde | Object or null | Per premium: tax-free and contribution-free amount per hour |
kombinationen | Object | Night work on Sundays and holidays: combined rate satz_prozent and, with base pay, steuerfrei and beitragsfrei per hour |
zitat | Text | Ready-made sentence for citing, with value, validity, legal basis and source |
datenstand | Text | Id of the data snapshot: date and sequence number of the last changelog entry (/v1/aenderungen) affecting this dataset. The same datenstand means unchanged content, useful for auditors and for comparing two requests |
Components
#For each effective date, the response contains the components that apply, each with id, name, gruppe, einheit, wert, gueltig_ab, rechtsgrundlage, quelle, hinweis and naechster_wert. The werte object holds the same list in short form. A component is missing if it does not yet or no longer apply on that date.
| id | Component | Unit | First level | Current value | End |
|---|---|---|---|---|---|
nachtarbeit | Night work from 8 p.m. to 6 a.m. | percent | January 1, 2015 | 25% | open |
nachtarbeit_0_bis_4_uhr | Night work from midnight to 4 a.m., if work started before midnight | percent | January 1, 2015 | 40% | open |
sonntagsarbeit | Sunday work | percent | January 1, 2015 | 50% | open |
feiertagsarbeit | Work on public holidays and on December 31 from 2 p.m. | percent | January 1, 2015 | 125% | open |
weihnachten_und_1_mai | Work on December 24 from 2 p.m., on December 25 and 26 and on May 1 | percent | January 1, 2015 | 150% | open |
grundlohn_hoechstbetrag_steuer | Maximum base pay per hour for the tax exemption | euros per hour | January 1, 2015 | €50 per hour | open |
grundlohn_hoechstbetrag_sv | Maximum base pay per hour for exemption from social security contributions | euros per hour | January 1, 2015 | €25 per hour | open |
Example
#Call with datum = 2026-12-24, grundlohn_stunde = 22.5. The response is generated by the same code that answers the API.
History
#Every level since 2015 in one call, as JSON or with format=csv as CSV. The last two levels:
Error cases
#| Status | Code | When |
|---|---|---|
| 400 | ungueltiger_parameter | wrong format or a value outside: grundlohn_stunde (0 to 1000); bestandteil (nachtarbeit, nachtarbeit_0_bis_4_uhr, sonntagsarbeit, feiertagsarbeit, weihnachten_und_1_mai, grundlohn_hoechstbetrag_steuer, grundlohn_hoechstbetrag_sv) |
| 400 | unbekannter_parameter | a parameter this dataset does not have |
| 404 | kein_wert | outside the coverage (from 2015) or the value for this period has not been promulgated yet |
| 401, 429 | see errors | all error codes |
Schema for MCP
#This is how the MCP server describes the arguments of the tool hr_sfn_zuschlaege:
Source and freshness
#| Item | Content |
|---|---|
| Source | § 3b EStG, R 3b LStR, § 1 Abs. 1 Satz 1 Nr. 1 SvEV |
| License | Values from official works (§ 5 UrhG). Use of the compilation under the Quellenkontor terms of use. |
| Updates | when the law changes |
| Coverage | Germany, from 2015 |
| Last checked | September 24, 2026 |
| Next expected change | only if the law changes |
Something missing or unclear? Write to us and we will extend the docs.