API Documentation
rechner-hub-api — Version 2026.30 · Changelog
Getting Started
100 endpoints — 80 POST, 20 GET. You send input values, the API does the math, you get the result. Every response uses the same envelope:
{
"success": true,
"data": { ... },
"input_echo": { ... },
"meta": {
"tax_year": 2026,
"disclaimer": "..."
}
}input_echo shows you what the API actually used — including defaults you didn’t send. Saves you time when debugging.
Money values are strings, not floats — "2372.83" instead of 2372.83. No IEEE 754 rounding issues when you’re dealing with tax amounts.
New endpoints in 2026.30
3 new municipal data feeds — all keyed by the 8-digit official municipality key (AGS), ETag/304-cacheable. Details below and in the changelog.
GET /v1/mietstufe/{ags}— housing-benefit rent tier I–VII (WoGV annex, valid from 2023-01-01); prefills the rent-tier field of the Wohngeld calculatorGET /v1/einkommen/{ags}— total income per taxpayer (§ 2(3) EStG) as a time series — not average salary, 3–4 year data lagGET /v1/schulden/{ags}— municipal debt at district level (core budget, Dec 31) incl. debt per capita
New endpoints in 2026.29
14 new endpoints — 7 calculators and 7 batches. Details and response schemas in the changelog and the OpenAPI spec.
POST /v1/verpflegungsmehraufwand— per-diem meal allowances (§ 9(4a) EStG)POST /v1/kuendigungsfrist— statutory notice periods (§ 622 BGB)POST /v1/teilzeit— net salary comparison full-time vs. part-timePOST /v1/vl— employee savings bonus for capital-forming payments (§ 13 5. VermBG)POST /v1/rentenpunkte— pension points (§§ 63 ff. SGB VI)POST /v1/rentenluecke— pension gap calculationPOST /v1/krankenkassenbeitrag— health and long-term care insurance contribution with employee/employer splitPOST /v1/einkommensteuer/batch,/v1/netto-brutto/batch,/v1/gewerbesteuer/batch,/v1/grunderwerbsteuer/batch,/v1/kapitalertragsteuer/batch,/v1/kindesunterhalt/batch,/v1/firmenwagen/batch— batch variants with per-item error isolation; cap 200 items fornetto-bruttoandfirmenwagen, cap 1,000 for all others
Errors
When input doesn’t validate, the response looks like this:
{
"success": false,
"error": {
"code": "VALIDATION_ERROR",
"message": "Request validation failed.",
"details": [
{
"field": "bruttolohn",
"message": "Input should be greater than or equal to 0",
"type": "greater_than_equal"
}
]
}
}| Status | Meaning |
|---|---|
| 400 | Bad input. details tells you which field and why. |
| 403 | Auth problem. Shouldn’t happen through RapidAPI. |
| 422 | Malformed JSON or wrong content type. |
| 500 | Bug on our end. Shouldn’t happen. |
POST /v1/brutto-netto
Monthly gross salary in, full payslip breakdown out. Income tax, social security, employer costs — all itemized.
Request Fields
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
| bruttolohn | number | yes | — | Monthly gross salary in EUR (0–1,000,000) |
| steuerklasse | int | yes | — | Tax class (1–6) |
| bundesland | string | no | NRW | German state — matters for church tax rate |
| kirchensteuer | bool | no | false | Church tax member? |
| kinder | int | no | 0 | Number of children (nursing care insurance) |
| geburtsjahr | int | no | 1985 | Birth year (childless surcharge if born after 1967) |
| kv_zusatzbeitrag | number | no | 2.9 | Health insurance additional rate in % (2026 avg: 2.9%) |
| tax_year | int | no | 2026 | Tax year (2024–2026) |
Minimal Example
{"bruttolohn": 3500, "steuerklasse": 1}Response Fields
Employee: brutto_monat/jahr, netto_monat/jahr, abzuege_gesamt_monat. Taxes: lohnsteuer_monat, soli_monat, kirchensteuer_monat. Social security: kv_an, pv_an, rv_an, av_an, sv_gesamt (all _monat).
Employer: ag_kv, ag_pv, ag_rv, ag_av, ag_umlage, ag_gesamt, ag_kosten_gesamt (total cost to employ).
Rates: kv_satz, pv_satz, rv_satz, av_satz — the actual percentages applied.
Scenarios: 5 what-if calculations — what changes at ±500, ±1,000 and +5,000 EUR gross.
Show full example
Request
POST /v1/brutto-netto
{"bruttolohn": 3500, "steuerklasse": 1}Response (shortened)
{
"success": true,
"data": {
"netto_monat": "2351.83",
"lohnsteuer_monat": "386.92",
"soli_monat": "0.0",
"sv_gesamt_monat": "761.25",
"ag_kosten_gesamt": "4296.25"
}
}POST /v1/grunderwerbsteuer
Property transfer tax, notary fees, land registry, and broker commission — all closing costs at a glance.
Request Fields
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
| kaufpreis | number | yes | — | Purchase price in EUR (1,000–100,000,000) |
| bundesland | string | yes | — | German state where the property is located |
| mit_makler | bool | no | false | Include broker commission? |
| makler_prozent | number | no | 3.57 | Broker commission in % incl. VAT |
Minimal Example
{"kaufpreis": 300000, "bundesland": "Bayern"}Response Fields
kaufpreis, bundesland, steuersatz, grunderwerbsteuer (the tax itself). notarkosten, notar_prozent, grundbuchkosten, grundbuch_prozent (notary + land registry). maklerkosten, makler_prozent (0 if no broker). nebenkosten_gesamt, nebenkosten_prozent, kaufpreis_gesamt (totals).
bundeslaender_vergleich — all 16 states side by side: tax rate and transfer tax for your purchase price. Sorted by rate.
Show full example
Request
POST /v1/grunderwerbsteuer
{"kaufpreis": 300000, "bundesland": "Bayern"}Response (shortened)
{
"success": true,
"data": {
"grunderwerbsteuer": "10500.0",
"notarkosten": "4500.0",
"nebenkosten_gesamt": "16500.0",
"kaufpreis_gesamt": "316500.0",
"bundeslaender_vergleich": [...]
}
}POST /v1/minijob
Auto-detects Minijob (≤556 €), Midijob (556–2,000 €), or regular employment and calculates social security for both employee and employer.
Request Fields
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
| bruttogehalt | number | yes | — | Monthly gross income in EUR (0–10,000) |
| kinderlos_ueber_23 | bool | no | false | Childless and over 23? (extra nursing insurance surcharge) |
| bundesland | string | no | Berlin | Only matters for Saxony (different nursing insurance split) |
Examples
{"bruttogehalt": 550}
{"bruttogehalt": 1200, "kinderlos_ueber_23": true, "bundesland": "Sachsen"}Response Fields
status (“minijob”, “midijob”, or “volle_sv”). brutto, netto, sv_abzuege. Individual contributions: kv_beitrag, pv_beitrag, rv_beitrag, av_beitrag. stunden_mindestlohn — how many hours per month at 13.90 €/h minimum wage.
vergleich_plus_100, vergleich_minus_100 — net impact of ±100 € gross. hinweis — human-readable explanation of the employment status (in German).
Show full example
Request
POST /v1/minijob
{"bruttogehalt": 550}Response (shortened)
{
"success": true,
"data": {
"status": "minijob",
"brutto": "550.0",
"netto": "550.0",
"sv_abzuege": "0.0",
"stunden_mindestlohn": "39.6"
}
}POST /v1/abfindung
Severance tax with and without the “fifth rule” (§34 EStG). Shows the exact savings in euros.
Request Fields
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
| abfindung | number | yes | — | Severance amount in EUR (0–10,000,000) |
| jahresbrutto | number | yes | — | Regular annual gross salary (without severance) in EUR |
| steuerklasse | int | no | 1 | Tax class (1–6) |
| bundesland | string | no | NRW | German state (for church tax rate) |
| kirchenmitglied | bool | no | false | Church tax member? |
| kinder | number | no | 0 | Child tax allowances (0, 0.5, 1, ...) |
Minimal Example
{"abfindung": 50000, "jahresbrutto": 60000}Response Fields
fuenftelregel: est, soli, kirchensteuer, steuer_gesamt, netto, effektiv_prozent — with reduced taxation for extraordinary income.
normal: Same fields — regular taxation, no fifth rule applied.
ersparnis — how much you save by applying the fifth rule, in EUR.
Show full example
Request
POST /v1/abfindung
{"abfindung": 50000, "jahresbrutto": 60000}Response (shortened)
{
"success": true,
"data": {
"fuenftelregel": {
"steuer_gesamt": "18279.36",
"netto": "31720.64"
},
"normal": {
"steuer_gesamt": "20930.27",
"netto": "29069.73"
},
"ersparnis": "2650.91"
}
}POST /v1/erbschaftsteuer
Inheritance or gift — allowance, tax class, and tax liability under ErbStG. Compares all 12 relationship types in one response.
Request Fields
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
| wert | number | yes | — | Value of inheritance/gift in EUR (0–1,000,000,000) |
| verwandtschaft | string | yes | — | Relationship, e.g. “Kind”, “Ehegatte / Lebenspartner”, “Geschwister” |
| modus | string | no | erbschaft | “erbschaft” (inheritance) or “schenkung” (gift) |
| alter_kind | int | no | null | Child’s age (0–27, for care allowance in inheritance) |
Minimal Example
{"wert": 500000, "verwandtschaft": "Kind"}Response Fields
steuerklasse (I/II/III), freibetrag, versorgungsfreibetrag, freibetrag_gesamt, steuerpflichtiger_erwerb. steuersatz, steuer, effektiv_prozent, netto, modus_label — the bottom line.
vergleich — same calculation for all 12 relationship types, so you can compare in one request.
Show full example
Request
POST /v1/erbschaftsteuer
{"wert": 500000, "verwandtschaft": "Kind"}Response (shortened)
{
"success": true,
"data": {
"steuerklasse": "I",
"freibetrag": "400000",
"steuersatz": 11,
"steuer": "11000.0",
"netto": "489000.0",
"vergleich": [...]
}
}POST /v1/weihnachtsgeld
How much of your bonus actually lands in your account? Income tax, soli, church tax and social security on a special payment — taxed as other remuneration (§39b Abs. 3 EStG).
Request Fields
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
| monatslohn | number | yes | — | Regular monthly gross salary in EUR |
| sonderzahlung | number | yes | — | Gross bonus payment in EUR |
| steuerklasse | int | no | 1 | Tax class (1–6) |
| kinder | number | no | 0 | Child tax allowances |
| kirchensteuer | bool | no | false | Church tax member? |
| bundesland | string | no | NRW | German state |
Minimal Example
{"monatslohn": 4000, "sonderzahlung": 4000}Response Fields
brutto_sonderzahlung — the gross bonus amount.
lohnsteuer, soli, kirchensteuer, sv_abzuege — the individual deductions on the bonus (other remuneration, §39b Abs. 3 EStG). netto — what's left after all deductions.
Show full example
Request
POST /v1/weihnachtsgeld
{"monatslohn": 4000, "sonderzahlung": 4000}Response (shortened)
{
"success": true,
"data": {
"brutto_sonderzahlung": "4000.0",
"lohnsteuer": "991.0",
"soli": "0.0",
"kirchensteuer": "0.0",
"sv_abzuege": "615.22",
"netto": "2393.78"
}
}POST /v1/steuerklassen
III/V or IV/IV — which combo gives more take-home pay? Runs both variants for married couples.
Request Fields
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
| brutto_partner_1 | number | yes | — | Monthly gross partner 1 in EUR |
| brutto_partner_2 | number | yes | — | Monthly gross partner 2 in EUR |
| bundesland | string | no | NRW | German state |
| kinder | int | no | 0 | Number of children |
| kirchensteuer | bool | no | false | Church tax member? |
Minimal Example
{"brutto_partner_1": 5000, "brutto_partner_2": 3000}Response Fields
variante_3_5: Each partner gets steuerklasse, brutto, netto, lohnsteuer, soli, kirchensteuer, sv_gesamt. Plus haushalt_netto for the household.
variante_4_4: Same structure, different tax classes.
differenz_monat, differenz_jahr — the gap between both options. empfehlung — plain-text recommendation (German). warnungen — edge-case warnings.
Show full example
Request
POST /v1/steuerklassen
{"brutto_partner_1": 5000, "brutto_partner_2": 3000}Response (shortened)
{
"success": true,
"data": {
"differenz_monat": "361.17",
"differenz_jahr": "4334.04",
"empfehlung": "SK III/V bringt ...",
"variante_3_5": {...},
"variante_4_4": {...}
}
}POST /v1/einkommensteuer
Pure §32a income tax tariff. Taxable income in, tax + marginal rate + bracket info out. Splitting, solidarity surcharge, and church tax built in.
Request Fields
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
| zve | number | yes | — | Taxable income in EUR (0–10,000,000) |
| zusammenveranlagung | bool | no | false | True for spousal splitting (§32a para. 5) |
| kirchensteuer | bool | no | false | Church tax member? |
| bundesland | string | no | NRW | German state (for church tax rate 8%/9%) |
| tax_year | int | no | 2026 | Tax year (2024–2026) |
Minimal Example
{"zve": 50000}Response Fields
einkommensteuer, solidaritaetszuschlag, kirchensteuer, steuer_gesamt — all in EUR. grenzsteuersatz — what the next euro costs you in tax. durchschnittssteuersatz — income tax divided by taxable income. belastungsquote — total burden (ESt + Soli + KiSt) as a percentage of income.
tarifzone — which of the 5 brackets you’re in, with name and rate range.
grundfreibetrag — the tax-free allowance (doubled when splitting applies).
Show full example
Request
POST /v1/einkommensteuer
{"zve": 50000}Response (shortened)
{
"success": true,
"data": {
"einkommensteuer": "10548.0",
"grenzsteuersatz": "35.0",
"durchschnittssteuersatz": "21.1",
"tarifzone": {
"zone": 3,
"name": "Obere Progressionszone",
"satz": "24–42 %"
}
}
}POST /v1/sparplan
Compound interest with yearly tax settlement. 25% capital gains tax + solidarity surcharge, optionally church tax. Includes saver’s allowance and annual rate increases.
Request Fields
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
| startkapital | number | no | 0 | Lump sum investment at start in EUR |
| monatliche_sparrate | number | no | 0 | Monthly savings amount in EUR |
| laufzeit_jahre | int | no | 10 | Investment period in years (1–100) |
| rendite_pa | number | no | 7 | Expected annual return in percent |
| sparerpauschbetrag | number | no | 1000 | Annual tax-free allowance (1,000 single / 2,000 joint) |
| kirchensteuer_satz | number | no | 0 | 0 (none), 0.08 (BY/BW), 0.09 (other states) |
| dynamik_pa | number | no | 0 | Annual increase of savings rate in percent |
Minimal Example
{"monatliche_sparrate": 500, "laufzeit_jahre": 20}Response Fields
endkapital_brutto, endkapital_netto — what you end up with, before and after tax. einzahlungen_gesamt — how much you put in total. ertraege_brutto, ertraege_netto — pure profit, before and after tax. steuer_gesamt — total capital gains tax deducted over the entire period. steuersatz_effektiv — effective rate including Soli and church tax.
jahresverlauf — year-by-year breakdown: cumulative contributions, returns, tax paid, gross/net capital, and monthly savings rate for that year.
Show full example
Request
POST /v1/sparplan
{"monatliche_sparrate": 500, "laufzeit_jahre": 20}Response (shortened)
{
"success": true,
"data": {
"einzahlungen_gesamt": "120000.0",
"endkapital_brutto": "242719.78",
"endkapital_netto": "215333.62",
"steuer_gesamt": "27386.16",
"jahresverlauf": [...]
}
}POST /v1/netto-brutto
Reverse calculation: enter your target net salary, get the required gross. Same tax and social security logic as brutto-netto.
Minimal example
{"nettolohn": 2500, "steuerklasse": 1}Same optional fields as brutto-netto (bundesland, kirchensteuer, etc.)
POST /v1/lohnkosten-netto
How much net salary from a given employer cost budget? Reverse calc: budget in, gross and net out.
Minimal example
{"lohnkosten_ziel": 5000, "steuerklasse": 1}POST /v1/arbeitgeber-kosten
Total employer cost breakdown: health, pension, unemployment, long-term care, U1/U2 levies, insolvency insurance.
Minimal example
{"brutto_monat": 4000}POST /v1/pfaendung
Wage garnishment limits per §850c ZPO. Shows attachable and protected amounts, adjusted for dependents.
Minimal example
{"nettoeinkommen": 2500}POST /v1/progressionsvorbehalt
Extra tax burden from wage replacement benefits (unemployment, parental, sick pay) per §32b EStG.
Minimal example
{"einkommen": 40000, "lohnersatzleistung": 10000}POST /v1/gewerbesteuer
Trade tax for sole proprietors, partnerships and corporations. Includes exemption, 3.5% base rate, §35 credit and rate comparison across 7 assessment rates.
Minimal example
{"gewinn": 100000, "rechtsform": "kapitalgesellschaft", "hebesatz": 490}Instead of hebesatz, you can pass ags (8-digit municipal code) or gemeinde (name search).
GET /v1/hebesaetze
Search 10,754 German municipalities by name. Returns trade tax assessment rate, AGS code and state.
Example
GET /v1/hebesaetze?q=M%C3%BCnchen&limit=5GET /v1/hebesaetze/{ags}
Single lookup by 8-digit AGS, e.g. GET /v1/hebesaetze/09162000
POST /v1/koerperschaftsteuer
GmbH total tax burden: 15% corporate tax + solidarity surcharge + trade tax. Adds capital gains tax on distributions. Includes sole proprietor comparison.
Minimal example
{"gewinn": 100000, "hebesatz": 490}Optional: ausschuettung_prozent (0–100, default 100), kirchenmitglied, bundesland
POST /v1/firmenwagen
Company car benefit: 1% rule for combustion, 0.5% for plug-in hybrids, 0.25% for pure EVs (up to €70k list price). Calculates the taxable benefit and net salary with vs. without the car.
Minimal example
{"listenpreis": 40000, "entfernung_km": 25, "antriebsart": "verbrenner", "bruttogehalt": 4000}POST /v1/elterngeld
Parental allowance (Basiselterngeld + ElterngeldPlus). Replacement rate 65–67%, sibling bonus, multiple birth bonus, part-time option.
Minimal example
{"nettoeinkommen_monat": 2500}POST /v1/alg1
Unemployment benefit (ALG I): assessment basis, flat-rate deductions, 60/67% benefit rate and entitlement period per §147 SGB III.
Minimal example
{"bruttogehalt_monat": 4000}POST /v1/krankengeld
Sick pay: 70% of gross, capped at 90% of net. Deducts long-term care, pension and unemployment insurance (not health insurance). Shows income loss.
Minimal example
{"bruttogehalt_monat": 4000}POST /v1/pendlerpauschale
German commuter allowance per §9 EStG. 0.38 EUR per one-way kilometer from km 1. The 4,500 EUR annual cap applies to public transport, bicycle and carpooling — not to driving your own car.
Minimal example
{"entfernung_km": 25, "grenzsteuersatz": 35}POST /v1/schenkungsteuer
German gift tax (ErbStG). Tax classes I–III, personal allowances (20k–500k EUR), progressive rates (7–50%). Unlike inheritance, the care allowances per §17 do not apply to lifetime gifts.
Minimal example
{"wert": 450000, "verwandtschaft": "kind"}POST /v1/grundsteuer
Property tax valid from 2025. Federal model for eleven states, plus five state-specific variants: Baden-Württemberg (land value), Bayern (area), Hamburg (residential zone), Hessen (area–factor), Niedersachsen (area–location). The required fields depend on the model — missing ones are surfaced in the error response.
Example (Bayern area model)
{"bundesland": "Bayern", "hebesatz_prozent": 535, "grundstuecksflaeche_m2": 500, "gebaeudeflaeche_m2": 140}POST /v1/kurzarbeitergeld
Short-time work benefit per §§95–109 SGB III. 60% without children, 67% with. Applied to the flat-rate net difference per §106. Since 2026 a 21% SSC flat rate applies (was 20%).
Minimal example
{"brutto_regulaer": 3200, "ausfallstunden_prozent": 50, "hat_kinder": true}POST /v1/buergergeld
German basic income support (SGB II). Standard needs, additional needs per §21, housing costs, and income offsetting with §11b allowances. The response includes a breakdown of how the deduction chain ran.
Minimal example
{"erwachsene": 2, "kinder_alter": [8, 12], "kaltmiete": 700, "heizkosten": 120, "nettoeinkommen": 1180}POST /v1/bafoeg
German federal student aid (BAföG). Basic needs per §13, housing allowance, health insurance supplement per §13a, parental income with allowances per §25, own income per §23. Asset limits handled automatically.
Minimal example
{"ausbildungstyp": "hochschule", "bei_eltern": false, "alter": 22, "elterneinkommen_netto": 3200}POST /v1/hebesaetze/bulk
Bulk lookup for up to 1,000 AGS codes per request. Unknown AGS are returned in nicht_gefunden instead of failing the whole request.
Minimal example
{"ags_liste": ["05315000", "09162000", "11000000"]}Scenario Bundles
Four endpoints that combine multiple calculators in a single call. Built for applications that mirror real life situations — job change, starting a family, buying property, going freelance. Input is deliberately lean; the response carries all sub-results.
POST /v1/szenario/jobwechsel
Job-change bundle: old vs. new net salary, severance with fifth-rule tax treatment, unemployment benefit I, and progression-reserve impact. Four calls reduced to one.
Example
{"altes_brutto_monat": 4500, "neues_brutto_monat": 5200, "abfindung": 25000, "arbeitslos_monate": 3}POST /v1/szenario/familie
Family planning bundle: basic parental allowance, ElterngeldPlus, child benefit simulation, and a tax-class (III/V vs. IV/IV) recommendation. Useful before the baby arrives.
Example
{"nettoeinkommen_monat": 2500, "brutto_monat": 3800, "partner_brutto_monat": 5500, "geschwisterbonus": true}POST /v1/szenario/immobilie
Property purchase bundle: transfer tax, annual property tax (computed using whichever state model applies), and closing costs (notary, land registry, optional broker).
Example
{"kaufpreis": 450000, "bundesland": "Bayern", "grundstuecksflaeche_m2": 500, "wohnflaeche_m2": 140, "hebesatz_grundsteuer_prozent": 535}POST /v1/szenario/freelance-start
Freelance start bundle: total burden as a sole proprietor (income tax + solidarity + church + trade tax with §35 credit) vs. a GmbH (corporate tax + solidarity + trade + capital gains on distribution). Response names the net winner.
Example
{"gewinn_jahr": 120000, "hebesatz_gewerbesteuer": 475, "bundesland": "Nordrhein-Westfalen"}POST /v1/verlustverrechnung
3-pot loss offsetting under §20 (6) EStG (stocks pot, other pot) and §23 EStG (crypto/private sales pot). Applies the saver allowance (1,000/2,000 EUR), the §23 exemption threshold (1,000 EUR), prior-year loss carry-overs and the pending Federal Constitutional Court ruling 2 BvL 3/21 on the stocks-pot restriction. Returns the estimated tax savings vs. a naive calculation without losses.
Request fields
| Field | Type | Required | Description |
|---|---|---|---|
| aktien_gewinne_ytd, aktien_verluste_ytd, aktien_verlustvortrag | Decimal | no | Stocks pot YTD and prior-year carry-over in EUR (losses entered as positive). Default 0. |
| sonstige_gewinne_ytd, sonstige_verluste_ytd, sonstige_verlustvortrag | Decimal | no | Other pot (ETFs, bonds, interest, derivatives). Default 0. |
| krypto_gewinne_ytd, krypto_verluste_ytd, krypto_verlustvortrag | Decimal | no | §23 pot (crypto, gold, NFTs). Default 0. |
| veranlagungszeitraum | int | no | 2018–2030. Default 2026. |
| sparer_pauschbetrag_verfuegbar | Decimal | no | 0–2000 EUR. Default 1000 (single). |
Example
{"aktien_verluste_ytd": "3000", "sonstige_gewinne_ytd": "5000",
"sonstige_verluste_ytd": "2000",
"krypto_verluste_ytd": "1500", "krypto_gewinne_ytd": "800"}Response fields (excerpt)
| Field | Description |
|---|---|
| aktien_topf_saldo, aktien_topf_vortrag_neu, aktien_in_sonstige_geflossen | Stocks pot balance. Negative balances stay locked as carry-over and do NOT spill into the other pot (BVerfG watch). |
| sonstiger_topf_saldo, sonstiger_topf_vortrag_neu | Other pot balance after absorbing positive stocks-pot balances. |
| krypto_topf_saldo, krypto_topf_vortrag_neu, krypto_freigrenze_greift | §23 pot, separate. krypto_freigrenze_greift is true when the balance is < 1000 EUR. |
| sparer_pauschbetrag_verbraucht, sparer_pauschbetrag_rest | Saver allowance applied to the other pot if positive. |
| steuerpflichtige_kapitalertraege, steuerpflichtige_krypto | Taxable amount after offsetting and allowance. |
| bverfg_hinweis | String with the §165 AO provisional-assessment notice (or null) if a stocks-pot loss carry-over arises. |
| ersparnis_vs_naive | Tax savings vs. naive calc (KapESt 25 % + 5.5 % solidarity, no church tax). |
POST /v1/vorabpauschale
Advance lump-sum (Vorabpauschale) for accumulating ETF/funds under §18 InvStG for a full calendar year. Base yield = fund value start-of-year × base interest rate × 0.70, minus distributions, capped at the year's appreciation. Partial exemption under §20 InvStG by fund type. Base interest rate series 2018–2026 included (BMF circular each January). Special cases (negative base rate, loss year, distributions covering base yield) are flagged via keine_vap_grund.
Request fields
| Field | Type | Required | Description |
|---|---|---|---|
| fondswert_jahresanfang | Decimal | yes | Redemption price on the first valuation day (Jan 2) in EUR. |
| fondswert_jahresende | Decimal | yes | Redemption price on the last valuation day (Dec 31) in EUR. |
| fondstyp | enum | yes | aktien_51 (TFQ 30 %), misch_25 (15 %), sonstige (0 %), immo_inland (60 %), immo_ausland (80 %). |
| ausschuettungen | Decimal | no | Distributions paid during the year in EUR. Default 0 (accumulating). |
| jahr | int | no | 2018–2026 (base rate available). Default 2026. |
Example
{"fondswert_jahresanfang": "10000", "fondswert_jahresende": "11000",
"fondstyp": "aktien_51", "jahr": 2026}Response fields (excerpt)
| Field | Description |
|---|---|
| basiszins_prozent | Applicable base interest rate (2026 = 3.20 %). |
| basisertrag, wertsteigerung | §16 InvStG base yield and the year's appreciation. |
| vorabpauschale_brutto | VAP capped to appreciation, before partial exemption. |
| teilfreistellung_quote, vorabpauschale_steuerpflichtig | Partial exemption rate and final taxable amount for KapESt. |
| keine_vap_grund | negativer_basiszins | kein_wertzuwachs | ausschuettungen_decken_basisertrag | null. |
POST /v1/kapitalertragsteuer
Calculates the withholding capital gains tax on an already CLEANED tax base (after saver allowance and loss offsetting): KapESt 25 % per §43a EStG, solidarity surcharge 5.5 % on KapESt (no phase-out for withholding, §4 SolzG), church tax 8 % (BY/BW) or 9 % (other states). When church tax applies, the §51a (2c) EStG closed-form formula KapESt = e / (4 + k) is used — many marketplace competitors ignore this and return the nominal 25 % instead of the correct ~24.51 % (BY/BW) or ~24.45 % (rest).
Request fields
| Field | Type | Required | Description |
|---|---|---|---|
| bemessungsgrundlage | Decimal | yes | Taxable capital income in EUR (after saver allowance and loss offsetting). 0 ≤ value ≤ 100,000,000. |
| bundesland | enum | yes | Full state name (e.g. "Bayern") or ISO code ("BY"). |
| kirchensteuerpflichtig | bool | no | Default false. When true, the §51a closed-form formula applies. |
Example
{"bemessungsgrundlage": "10000", "bundesland": "Bayern",
"kirchensteuerpflichtig": true}POST /v1/szenario/aktien-etf
Bundle endpoint: aggregates pre-tax (Vorabpauschale, §18 InvStG) + 3-pot loss offsetting (§20 (6) EStG + §23 EStG) + actual capital gains tax with state-specific church tax (§51a (2c) EStG closed-form formula) in a single call. Returns the real tax burden instead of the rough 26.375 % flat rate that most online calculators apply. Effective rate including church tax: 27.82 % (BY/BW, 8 % church) or 27.99 % (other states, 9 % church).
Request fields (all optional, default 0 or constant)
| Field | Type | Description |
|---|---|---|
| fondswert_jahresanfang/-ende, ausschuettungen, fondstyp | Decimal/enum | Vorabpauschale inputs (see /v1/vorabpauschale). When fondswert_jahresanfang = 0: no Vorabpauschale share. |
| aktien_*, sonstige_*, krypto_* | Decimal | Loss-offsetting inputs (gains/losses/carry-over per pot, all YTD in EUR, losses entered positive). |
| sparer_pauschbetrag_verfuegbar | Decimal | 1,000 single, 2,000 joint. Default 1,000. |
| bundesland | enum | For church-tax rate: 8 % in BY/BW, 9 % in the other 14 states. |
| kirchenmitglied, veranlagungszeitraum | bool/int | Default false, 2026. |
Example
{"aktien_gewinne_ytd": "5000", "aktien_verluste_ytd": "1500",
"sonstige_gewinne_ytd": "2000",
"bundesland": "Bayern", "kirchenmitglied": true}Response fields (excerpt)
| Field | Description |
|---|---|
| aktien_topf_*, sonstiger_topf_*, krypto_topf_* | 3-pot balance incl. carry-over for next year. |
| vorabpauschale_brutto, vorabpauschale_steuerpflichtig | Vorabpauschale gross and after partial exemption. Flows into the other pot. |
| steuerpflichtige_bemessungsgrundlage | Other-pot balance + Vorabpauschale, minus saver allowance. |
| kapest, soli, kirchensteuer, steuer_summe | Actual KapESt with state-specific church tax via §51a closed-form e/(4+k). |
| effektivsatz_prozent, netto_kapitalertraege | Real effective rate including church tax (27.82 % / 27.99 %) and net. |
| krypto_steuerpflichtig | §23 crypto balance — not 25 % KapESt; taxed at the personal income tax rate §32a EStG. |
| pauschal_steuer_naiv, differenz_zu_naiv | Comparison vs. flat 26.375 % rate: positive difference = you pay more than the flat rate suggests due to church tax. |
Bundesland Values
Must match exactly, including capitalization and hyphens:
Baden-WürttembergBayernBerlinBrandenburgBremenHamburgHessenMecklenburg-VorpommernNiedersachsenNordrhein-WestfalenRheinland-PfalzSaarlandSachsenSachsen-AnhaltSchleswig-HolsteinThüringenPOST /v1/brutto-netto/batch
Up to 1,000 employee gross-net calculations in a single call — built for payroll/HR SaaS generating monthly slips. Per-item error isolation; one invalid row does not fail the request. Performance-verified <3 s for 1,000 items.
Request
{"items": [
{"bruttolohn": 3500, "steuerklasse": 1},
{"bruttolohn": 5200, "steuerklasse": 3, "kinder": 2}]}POST /v1/lohnkosten-netto/batch
Employer-budget → net (reverse calculation via bisection) for up to 1,000 employees in one call. Items with an unreachable target are isolated as per-row errors. Required: items (array).
POST /v1/arbeitgeber-kosten/batch
Total employer cost (KV/PV/RV/AV + U1/U2/insolvency levy + accident insurance) for up to 1,000 employees, with per-item configurable levy rates. Required: items (array).
POST /v1/minijob/batch
Minijob/Midijob status for up to 1,000 employees in one call, same per-item error isolation as /v1/brutto-netto/batch. For care/gastronomy/cleaning SaaS.
POST /v1/midijob/batch
Midijob transition-zone calculation (EUR 603.01–2,000, §20(2a) SGB IV factor-F formula) for up to 1,000 employees, per-item error isolation. Required: items (array).
POST /v1/midijob
Strict transition zone EUR 603.01–2,000 (§20(2a) SGB IV). Reduced social-security contributions via the factor-F formula — verified against TK advisory sheet 305008. Also returns the comparison to full SI plus the saving. Required: brutto_monat; optional: steuerklasse, bundesland, kinderlos_ueber_23, kinder, kirchensteuer, geburtsjahr.
Request
{"brutto_monat": 1200, "steuerklasse": 1, "bundesland": "Sachsen"}POST /v1/stundenlohn
Hourly wage ↔ monthly salary plus net (BMF PAP 2026). Modes: stundenlohn_zu_gehalt or gehalt_zu_stundenlohn. Returns gross+net hourly wage, monthly deductions and total employer cost. Required: modus; optional: stundenlohn_brutto/monatsgehalt_brutto, wochenstunden, steuerklasse, bundesland, kirchensteuer, kinder, geburtsjahr, kv_zusatzbeitrag.
Request
{"modus": "stundenlohn_zu_gehalt", "stundenlohn_brutto": 25, "wochenstunden": 40}POST /v1/aktivrente
Aktivrente allowance (Aktivrentegesetz 2026): up to EUR 2,000/month = EUR 24,000/year tax-free extra income for working pensioners, without progression. Compares income tax + solidarity surcharge + church tax old vs new law and returns the monthly/annual saving. Required: brutto_rente_monat, zusatzeinkommen_monat; optional: kirchensteuer, bundesland, besteuerungsanteil.
Request
{"brutto_rente_monat": 1800, "zusatzeinkommen_monat": 1500}POST /v1/homeoffice
Home-office flat rate §4(5) No. 6c EStG (EUR 6/day, max 210 days) vs commuter allowance §9(1) No. 4 EStG (EUR 0.38/km from 2026) optimization. Break-even at ~15.8 km. Optional: arbeitstage_gesamt, homeoffice_tage, entfernung_km, grenzsteuersatz.
POST /v1/afa
Depreciation (AfA) — linear vs declining-balance 2025–2027 (§7 EStG, Wachstumsbooster), with automatic switch declining→linear (§7(3) EStG) and pro-rata by purchase month. Required: anschaffungskosten; optional: nutzungsdauer, steuersatz_prozent, monat_anschaffung.
Request
{"anschaffungskosten": "50000", "nutzungsdauer": 8, "steuersatz_prozent": "42"}POST /v1/iab
Investment deduction (IAB) + special depreciation §7g EStG. Up to 50 % of cost (max EUR 200,000) deducted off-balance before purchase + 40 % special depreciation. Eligibility: prior-year profit ≤ EUR 200,000. Required: anschaffungskosten, gewinn_vorjahr.
POST /v1/gwg
Low-value assets §6(2)/(2a) EStG. Compares immediate write-off (≤ EUR 800), pool depreciation (EUR 250.01–1,000 over 5 years) and linear AfA with a tax-effect balance. Required: anschaffungskosten.
POST /v1/haushaltsnah
Household-related services §35a EStG: 20 % on the labour portion across 3 categories (caps EUR 510 / 4,000 / 1,200). Optional inputs for the three expense types.
POST /v1/kleinunternehmer
Small-business status §19 UStG — EUR 25,000 / 100,000 thresholds (JStG 2024). Traffic-light + year projection + warning month. Required: bisheriger_umsatz, aktueller_monat, vorjahresumsatz.
Request
{"bisheriger_umsatz": 40000, "aktueller_monat": 6, "vorjahresumsatz": 18000}POST /v1/photovoltaik
PV tax exemption: §12(3) UStG zero VAT rate up to 30 kWp + §3 No. 72 EStG income exemption (30 kWp single-family / 15 kWp per unit MFH, max 100 kWp). VAT saving on purchase + income-tax saving over lifetime. Required: anlagenleistung_kwp.
POST /v1/sanierung
Energy renovation §35c EStG: 20 % over 3 years (7/7/6 %), max EUR 40,000 per property. Required: sanierungskosten.
POST /v1/waermepumpe
Heat-pump subsidy KfW 458 (BEG EM): 4 bonus components + 70 % cap, with a §35c alternative comparison. Required: investition_eur.
POST /v1/freelancer
Freelancer hourly-rate calculator §18 EStG (liberal profession) / §15 EStG (trade). Fixed-point iteration of the minimum cost-covering hourly rate from desired net + operating costs + income tax + solidarity surcharge + optional church tax + voluntary KV/PV + pension reserve + trade tax if applicable. Includes a market comparison. Required: wunsch_netto.
Request
{"wunsch_netto": 3500, "bundesland": "Berlin"}POST /v1/kirchensteuer-austritt
Church-tax exit calculator: annual saving (8 % BY/BW, 9 % other states) minus the special-expense effect §10(1) No. 4 EStG, plus exit fee per state, break-even days and a 10/20/30-year projection. Input is taxable income (zvE) directly. Required: zve, bundesland.
Request
{"zve": 45000, "bundesland": "Bayern"}POST /v1/gez
Broadcasting-fee exemption §4 RBStV via a 7-step decision tree (secondary residence, care home, catalogue social benefit, deaf-blind mark, RF mark reduction, hardship case, otherwise liable). Fee 2026: EUR 18.36/month. Required: wohnart.
POST /v1/krypto
German crypto tax — §23 EStG spot (holding-period check, EUR 1,000 exemption limit from 2024, progressive income tax via the difference method + solidarity surcharge + church tax) and §32d KapESt futures (flat 25 % + soli + church tax, no holding period, loss offset capped at EUR 20,000/year). Required: kaufdatum, verkaufsdatum, kaufpreis, verkaufspreis, transaktionsart.
Request
{"kaufdatum": "2023-01-10", "verkaufsdatum": "2024-03-15",
"kaufpreis": 5000, "verkaufspreis": 9000, "transaktionsart": "spot"}POST /v1/at-krypto
Austrian crypto KESt §27b EStG (AT): flat 27.5 % regardless of holding period and income, ACB (moving-average cost) valuation mandatory since 2023, old-holdings check (bought before 2021-03-01 and held >1 year = tax-free). Required: asset, transaktionen, verkaufte_menge, verkauf_erloese_eur, verkauf_datum.
POST /v1/altersvorsorgedepot
Pension depot (Riester successor, Altersvorsorgereformgesetz, Federal Law Gazette I 2026 No. 156, start 2027): tiered allowances incl. one-time EUR 200 under-25 bonus, child allowance, minimum own contribution EUR 120/year, §10a EStG special-expense deduction of own contributions up to EUR 1,800/year plus allowances, more-favourable check vs Riester, projection to retirement with compound interest. Required: jahresbrutto, eigenanteil_monat, anzahl_kinder.
POST /v1/fruehstartrente
Frühstart pension (child depot, effective 2026): state contribution EUR 10/month per child aged 6–18 + optional parent top-up + child own contribution from 18 to retirement. Returns capital projection at 18 and at retirement, monthly payout for a 25-year annuity, and the growth factor. Required: alter_kind.
Request
{"alter_kind": 7, "eigenbeitrag_eltern_monat": 50}POST /v1/rente
Statutory pension calculator §§63–68 SGB VI. Pension formula: pension points × access factor × pension value × pension-type factor. Pension value 2026: EUR 42.52 (projection). Returns 4 retirement-age scenarios (63/65/67/70) + pension gap + ETF savings-plan suggestion. Required: geburtsjahr, bisherige_beitragsjahre, aktuelles_brutto_monat, geplanter_renteneintritt.
POST /v1/wohngeld
Housing benefit per §19 WoGG (Wohngeld-Plus 2023+). Formula W = M − (a+b·M+c·Y)·Y with coefficients from Annex 2 WoGG by household size, rent caps by level 1–7, heating + climate components, asset limit EUR 60k + 30k per further person. Required: haushaltsgroesse, mietstufe, bruttoeinkommen, kaltmiete, wohnflaeche.
POST /v1/kindesunterhalt
Child support per the Düsseldorfer Tabelle 2026 (valid from 2026-01-01): 15 income brackets × 4 age groups, 5 % work-cost adjustment, half child-benefit offset for the caring parent, hardship check against the self-retention amount. Required: nettoeinkommen, kinder, kindergeld_empfaenger.
POST /v1/vorfaelligkeitsentschaedigung
Prepayment penalty (VFE) via the BGH active-passive method (BGH XI ZR 27/00). Refinancing loss = remaining debt after special repayment × rate differential × remaining term, less saved admin and risk costs. §502 BGB cap for consumer loans, §489 BGB special termination right after 120 months. Required: restschuld_eur.
POST /v1/vorabpauschale/portfolio
Multi-fund advance lump-sum (Vorabpauschale) §18 InvStG for one investor, up to 1,000 funds in a single call. Optimised for robo-advisor use cases (n clients × m funds, yearly in January). Per-item error isolation; returns the aggregated taxable sum across successful items.
Request
{"steuerjahr": 2026, "fonds": [
{"isin": "IE00B4L5Y983", "fondswert_jahresanfang": 10000,
"fondswert_jahresende": 11200, "fondstyp": "aktien"}]}GET /v1/werte/current
Aggregates all German payroll and tax values as a 1-call JSON snapshot for today: social security (BBG, employee+employer rates), income-tax tariff, lohnsteuer PAP helper values, garnishment limits §850c ZPO, company-car 1 % rule incl. BEV thresholds, all 16 states with church-tax + transfer-tax rates, Vorabpauschale base-rate series, benefit-in-kind values (SvEV) and per-diems §9(4a) EStG. Unlike all other endpoints, this one is cacheable: Cache-Control: public, max-age=86400 + ETag/304.
Example
curl -H "X-RapidAPI-Proxy-Secret: $SECRET" \
https://api.rechner-hub.de/v1/werte/currentGET /v1/werte/{stichtag}
Like /v1/werte/current but for a chosen date (YYYY-MM-DD, supported years 2024–2026). The garnishment notice is resolved per date; all other values come from the date's year. Useful for recalculations and audits.
Example
curl -H "X-RapidAPI-Proxy-Secret: $SECRET" \
https://api.rechner-hub.de/v1/werte/2024-09-01GET /v1/basiszins/current
Current base interest rate §247 BGB. Set half-yearly (1 Jan / 1 Jul) by Bundesbank announcement; the basis for default-interest calculations (§288 BGB) and many contract clauses. 2026-01-01: 1.27 %. Cache-Control: public, max-age=86400.
Response (excerpt)
{"data": {"stichtag": "2026-01-01", "satz_prozent": "1.27",
"rechtsgrundlage": "§247 Abs. 1 Satz 1 BGB"}}GET /v1/basiszins/series
Complete series of all base interest rates since 2002-01-01 (49+ half-yearly entries, sorted old→new). Handy for Excel/CSV export or audit trails of default-interest calculations over long periods. Cache-Control: public, max-age=86400.
GET /v1/basiszins/{stichtag}
Base interest rate valid on a given date (latest entry on or before the date), date format YYYY-MM-DD, min 2002-01-01. The validity start is resolved automatically (e.g. 2025-08-15 → valid from 2025-07-01).
Example
curl -H "X-RapidAPI-Proxy-Secret: $SECRET" \
https://api.rechner-hub.de/v1/basiszins/2025-08-15POST /v1/verzugszins
Default interest §288 BGB on an overdue claim. Default starts the day after the due date (§286(1) BGB), end = payment date (counts). actual/365 per BGH. On a half-year base-rate change the interest is computed per half-year window with the rate valid there — no mixed rates. Surcharge: +5 pts (B2C) or +9 pts (B2B). Optional EUR 40 lump sum §288(5) BGB (B2B-only, shown separately). Required: forderung_eur, faelligkeit.
Request
{"forderung_eur": "10000", "faelligkeit": "2024-12-15",
"geschaeftsverkehr": "b2b", "pauschale_anwenden": true}POST /v1/aktivrente/batch
Aktivrente allowance (Aktivrentegesetz 2026, EUR 24,000/year) for up to 1,000 pensioners in one call. Same logic as /v1/aktivrente per item, with per-item error isolation: a single invalid row is flagged success:false at its index while the rest compute normally.
Response (excerpt)
{"data": {"items": [
{"index": 0, "success": true, "result": {"netto_ohne_monat": "2804.25",
"netto_mit_monat": "3209.25", "freibetrag_jahr": "18000.0", ...}}],
"count_total": 2, "count_ok": 2}}GET /v1/hebesaetze-historie
Trade-tax / property-tax rate time series for a single municipality across several reporting years (incl. population). Required query ags (8-digit municipality key). Source: Destatis 71231-03-01-5. Cache-Control: public, max-age=86400.
{"data": {"ags": "05315000", "eintraege": [
{"stand": 2022, "hebesatz_gewerbesteuer": 475, "hebesatz_grundst_b": 515,
"einwohner": 1081167, "quelle": "destatis_stat_bericht"}, ...]}}GET /v1/hebesaetze-aggregat
Weighted average trade-tax rate per federal state as a 10-year series (2016–2025, municipalities with 20,000+ inhabitants). Optional filters bundesland, jahr. Source: VdF/DIHK. Cache-Control: public, max-age=86400.
{"data": {"eintraege": [
{"jahr": 2025, "bundesland": "Nordrhein-Westfalen", "hebesatz_gewerbesteuer_avg": 474}],
"quelle": "VdF Daten und Fakten Realsteuer-Hebesaetze (Stand 01.09.2025)"}}GET /v1/gkv-zusatzbeitrag
Current statutory-health-insurance additional contribution rate (%) for a fund. Look up via ik (9-digit IK or slug) or name (fuzzy substring). Optional stichtag for historical snapshots. Source: GKV-Spitzenverband. Cache-Control: public, max-age=86400.
{"data": {"ik_nummer": "techniker-krankenkasse", "name": "Techniker Krankenkasse",
"zusatzbeitrag_prozent": "2.69", "snapshot_datum": "2026-05-25"}}Related: /durchschnitt (annual mean), /historie (per-fund time series).
GET /v1/gkv-zusatzbeitrag/durchschnitt
Mean additional contribution across all collected fund snapshots for a reporting year (coverage 2021–2026). Required query jahr. Note: this is the collected snapshot mean, not the official statutory average rate per §242a SGB V.
{"data": {"jahr": 2026, "durchschnitt_prozent": "3.4311", "snapshot_count": 225}}GET /v1/gkv-zusatzbeitrag/historie
Full time series of additional-contribution snapshots for a fund (Wayback CDX snapshots + current value). Required query ik.
{"data": {"ik_nummer": "techniker-krankenkasse", "eintraege": [
{"snapshot_datum": "2023-01-07", "zusatzbeitrag_prozent": "1.2"}, ...]}}GET /v1/gkv-kassen
Directory of all 92 active statutory health-insurance funds with IK/slug, name, fund type (AOK, Ersatzkasse, BKK, IKK…) and scope (nationwide yes/no). No parameters.
{"data": {"kassen": [
{"ik_nummer": "aok-baden-wuerttemberg", "name": "AOK Baden-Württemberg",
"kassen_typ": "AOK", "bundesweit": false, "aktiv": true}, ...]}}GET /v1/gkv-ik-verzeichnis
Official IK-number registry (~1,083 entries) from the ITSG/BAS cost-bearer files — a fund can have several regional IK numbers. Look up via ik (exact, 9-digit) or name (fuzzy).
{"data": {"eintraege": [
{"ik_nummer": "100177504", "name": "TECHNIKER KRANKENKASSE",
"kassen_typ_code": "Ersatzkasse"}, ...]}}GET /v1/eeg-verguetung
Feed-in tariff (anzulegender Wert) for a rooftop solar PV system under the EEG. Required query inbetriebnahme (commissioning date), anlagentyp, kwp. Optional einspeisung (teil|voll), stichtag. Source: Bundesnetzagentur. Cache-Control: public, max-age=86400.
{"data": {"verguetung_ct_per_kwh": "8.514", "novelle": "EEG 2023",
"verguetungsdauer_jahre": 20, "gueltig_bis": "2044-12-31", "restlaufzeit_monate": 223}}Related: /historie, /v1/eeg-novellen.
GET /v1/eeg-verguetung/historie
Full tariff time series for a kWp class + feed-in type across all EEG amendments. Required query kwp. Optional anlagentyp, einspeisung.
{"data": {"anlagentyp": "pv_dach_wohngebaeude", "eintraege": [
{"novelle": "EEG 2012", "inbetriebnahme_von": "2012-04-01",
"verguetung_ct_per_kwh": "19.5"}, ...]}}GET /v1/eeg-novellen
List of all EEG amendments (EEG 2009 to date) with validity period and BGBl reference. No parameters — useful to map a commissioning date to the correct amendment.
{"data": {"novellen": [
{"id": 1, "name": "EEG 2009", "gueltig_ab": "2009-01-01",
"bgbl_referenz": "BGBl. I 2008 S. 2074"}, ...]}}GET /v1/mietstufe/{ags}
Housing-benefit rent tier I–VII (1–7) of a municipality per the annex to the Wohngeldverordnung (valid from 2023-01-01). Path parameter ags (8 digits). Municipalities not listed individually inherit their district's tier; otherwise 404. Handy to prefill the rent-tier field of the Wohngeld calculator.
Response
{"data": {"ags": "09162000", "mietstufe": 7, "mietstufe_roman": "VII"},
"meta": {"tax_year": 2026}}GET /v1/einkommen/{ags}
Time series of total income per taxpayer (§ 2(3) EStG) of a municipality from the wage and income tax statistics (Destatis 73111). Important: this is not gross/average salary, and the statistic has a 3–4 year data lag. Path parameter ags (8 digits).
Response (excerpt)
{"data": {"ags": "09162000", "eintraege": [
{"jahr": 2021, "steuerpflichtige": 820100,
"gesamtbetrag_einkuenfte_tsd": 46000000,
"je_steuerpflichtigem_eur": 56090, "quelle": "destatis_73111_01_01"}, ...]}}GET /v1/schulden/{ags}
Time series of core-budget municipal debt (Destatis 71327, as of Dec 31) at district level incl. debt per capita. The district is derived from the first 5 digits of the municipality AGS, because the source records municipal debt almost only via associations. Eight district-free cities without a report return 404.
Response (excerpt)
{"data": {"ags": "09162000", "kreis_ags": "09162", "kreis_einwohner": 1512491,
"eintraege": [
{"jahr": 2024, "schulden_insgesamt_eur": 3200000000,
"schulden_je_einwohner_eur": 2116, "quelle": "destatis_71327_z01"}]}}Legal
Based on: official 2026 BMF tax formulas (Programmablaufpläne), SGB IV social security rates, GrEStG property tax rates, ErbStG inheritance tax tables. This is a calculator — not tax advice. For binding assessments, talk to a German tax professional (Steuerberater).