Obolus
Read-only payroll calculations and multi-country tax comparisons for eight countries.
사용해야 할까요
품질 및 안전성
도구 정의와 프로토콜 준수에 대한 자동 분석을 기반으로 합니다.
컨텍스트 비용
이는 서버의 도구가 모델의 컨텍스트에 로드될 때마다 소비되는 대략적인 토큰 수입니다. 수치가 높을수록 다른 작업에 사용할 수 있는 주의가 줄어듭니다.
설치
원클릭 설치
`claude_desktop_config.json` 파일에 다음을 추가하세요:
{
"mcpServers": {
"obolus": {
"url": "https://www.obolusfinanz.de/api/mcp/claude"
}
}
}원격 엔드포인트
https://www.obolusfinanz.de/api/mcp/claudestreamable-httphttps://www.obolusfinanz.de/api/mcp/publicstreamable-http할 수 있는 일
도구 목록
도구 (2)
🟢berechne(country, tax_year, age, gross_salary, location, ...)
Calculate detailed payroll and net salary for one country and person. Use this for tax class, region, health insurance, pension, deductions, or other country-specific inputs. For the same gross salary across two or more countries, use taxcompare. Use semantic fields where available; legacy fields remain REST compatibility inputs. Monetary fields in the legacy request are minor units and period-specific.
입력 스키마
{
"type": "object",
"properties": {
"country": {
"type": "string",
"enum": [
"DE",
"AT",
"US",
"CH",
"CA",
"AU",
"UK",
"IE"
],
"description": "Preferred high-level country code for MCP calls. For German payroll use DE. The adapter maps this to legacy Land."
},
"tax_year": {
"type": "integer",
"description": "Preferred high-level tax year for MCP calls. The adapter maps this to legacy Stjahr.",
"examples": [
2026
]
},
"age": {
"type": "integer",
"minimum": 18,
"maximum": 100,
"default": 35,
"description": "Age in the selected tax year. If omitted, the calculation reports the standard age-35 assumption instead of silently hiding the default."
},
"gross_salary": {
"type": "object",
"additionalProperties": false,
"description": "Preferred high-level gross salary input. Amount is in major currency units, not cents. The adapter maps it to legacy Gehalt_ct minor units and LZZ.",
"properties": {
"amount": {
"type": "number",
"minimum": 0,
"description": "Gross salary in major currency units, for example 60000 for EUR 60,000 annual gross or 5000 for EUR 5,000 monthly gross."
},
"currency": {
"type": "string",
"enum": [
"EUR",
"USD",
"CHF",
"CAD",
"AUD",
"GBP"
],
"description": "Salary currency, for example EUR."
},
"period": {
"type": "string",
"enum": [
"annual",
"monthly",
"weekly",
"daily"
],
"description": "Salary period. annual maps to LZZ=1, monthly to LZZ=2, weekly to LZZ=3, daily to LZZ=4."
}
},
"required": [
"amount",
"currency",
"period"
]
},
"location": {
"type": "object",
"additionalProperties": false,
"description": "Preferred high-level location input. For Germany, federal_state may be a state code such as BE or a full Obolus state name such as Berlin.",
"properties": {
"federal_state": {
"type": "string",
"description": "German federal state code or full state name, for example BE or Berlin. The adapter maps BE to Berlin."
}
}
},
"employee_type": {
"type": "string",
"enum": [
"standard_statutory_employee",
"private_health_insurance",
"pension_exempt",
"pension_exempt_private_health"
],
"default": "standard_statutory_employee",
"description": "Preferred high-level German employee type. Use standard_statutory_employee for the common statutory pension, unemployment, health, and care insurance case."
},
"payroll_preset": {
"type": "string",
"enum": [
"DE_STANDARD_EMPLOYEE_STATUTORY",
"DE_PRIVATE_HEALTH_INSURANCE",
"DE_PENSION_EXEMPT",
"DE_PENSION_EXEMPT_PRIVATE_HEALTH"
],
"default": "DE_STANDARD_EMPLOYEE_STATUTORY",
"description": "Preferred high-level payroll preset. Use DE_STANDARD_EMPLOYEE_STATUTORY for a normal German employee with statutory pension, unemployment, health, and care insurance."
},
"tax": {
"type": "object",
"additionalProperties": false,
"description": "Preferred high-level tax assumptions for MCP calls. The adapter maps these to Steuerklasse, Kirche, and Kinderfreibetrag.",
"properties": {
"tax_class": {
"type": "integer",
"enum": [
1,
2,
3,
4,
5,
6
],
"description": "German tax class, 1 through 6."
},
"church_tax": {
"type": "boolean",
"default": false,
"description": "Whether German church tax applies. false maps to Kirche=0 and true maps to Kirche=1."
},
"child_allowance_factor": {
"type": "number",
"minimum": 0,
"default": 0,
"description": "German child allowance factor, for example 0, 0.5, 1, or 2."
}
}
},
"social_security": {
"type": "object",
"additionalProperties": false,
"description": "Preferred high-level German social-security assumptions. Use enums instead of raw Obolus flags. The adapter maps statutory/exempt/private choices to the legacy payroll-engine fields.",
"properties": {
"pension_insurance": {
"type": "string",
"enum": [
"statutory",
"exempt"
],
"default": "statutory",
"description": "Use statutory for normal employees. Use exempt only for civil servants, self-employed, pensioners, or explicitly pension-exempt cases."
},
"unemployment_insurance": {
"type": "string",
"enum": [
"statutory",
"exempt"
],
"default": "statutory",
"description": "Use statutory for normal employees. This is mapped together with pension_insurance for the legacy German payroll engine."
},
"health_insurance": {
"type": "string",
"enum": [
"statutory",
"private"
],
"default": "statutory",
"description": "Use statutory for German GKV/PV. Use private only when the user explicitly has private health insurance."
},
"health_additional_contribution_percent": {
"type": "number",
"minimum": 0,
"maximum": 5,
"examples": [
2.5,
2.9
],
"description": "German statutory health Zusatzbeitrag as literal percentage points, for example 2.9 for 2.90%. Do not use basis points such as 290."
},
"long_term_care_insurance": {
"type": "string",
"enum": [
"statutory",
"private"
],
"default": "statutory",
"description": "Use statutory for normal German care insurance. Private should only be used together with private health insurance."
},
"children_for_care_insurance": {
"type": "integer",
"minimum": 0,
"default": 0,
"description": "Number of children relevant for German long-term care insurance contribution logic."
},
"private_health_employee_contribution_ct": {
"type": "integer",
"minimum": 0,
"description": "Private health insurance employee contribution in minor units for the selected period. Required only when health_insurance is private."
}
}
},
"Land": {
"type": "string",
"enum": [
"DE",
"AT",
"US",
"CH",
"CA",
"AU",
"UK",
"IE"
],
"description": "Country code for the calculation."
},
"Stjahr": {
"type": "integer",
"description": "Tax year.",
"examples": [
2026
]
},
"Currency": {
"type": "string",
"enum": [
"EUR",
"USD",
"CHF",
"CAD",
"AUD",
"GBP"
],
"description": "Display currency / calculation currency code."
},
"LZZ": {
"type": "integer",
"enum": [
1,
2,
3,
4
],
"default": 1,
"description": "Payroll period identifier for the calculation. Values: 1=year, 2=month, 3=week, 4=day. All salary and payroll monetary inputs must be for this period, not automatically annualized."
},
"Modus": {
"type": "integer",
"enum": [
1,
2,
3
],
"default": 1,
"description": "Calculation mode. Use 1 for one person, 2 for two persons, and 3 for the German TaxSim capped real-splitting simulation."
},
"Faktor": {
"type": "number",
"default": 1,
"description": "Global factor for factor-based tax class handling."
},
"KinderFRB": {
"type": "number",
"default": 0,
"description": "Top-level child allowance, child count, dependent count, or child-credit factor for the calculation. DE uses allowance-style factors; AT/CH/US and other systems use country-specific child/dependent meanings where supported."
},
"KinderPVA": {
"type": "integer",
"minimum": 0,
"default": 0,
"description": "Total child count relevant for German long-term care insurance contribution logic. Leave 0 outside German care-insurance scenarios unless a country-specific child workflow explicitly requires it."
},
"Kindergeld": {
"type": "integer",
"default": 0,
"description": "Child benefit amount in minor units for the selected calculation context. Leave 0 for standard payroll estimates unless explicitly modeling child benefit or a country-specific dependent benefit."
},
"Personen": {
"type": "array",
"minItems": 1,
"maxItems": 2,
"description": "One or two payroll person records. Each person contains salary, tax class, region, insurance, child, and optional special-income inputs.",
"items": {
"type": "object",
"additionalProperties": true,
"properties": {
"Land": {
"type": "string",
"enum": [
"DE",
"AT",
"US",
"CH",
"CA",
"AU",
"UK",
"IE"
],
"description": "Country code that selects the payroll/tax system for this person. Interpret all country-polymorphic fields in this person record, such as Steuerklasse, Bundesland, PreTax_Deduction_ct, Kinderfreibetrag, and output tax buckets, through this Land value. Supported systems: DE, AT, CH, US, UK, IE, CA, AU."
},
"Gehalt_ct": {
"type": "integer",
"minimum": 0,
"description": "Gross pay for this person's selected payroll period in minor units. The value must match LZZ/Lohnzahlungszeitraum: for EUR 70,000 per year with LZZ=1 send 7000000; for monthly payroll with LZZ=2 send the monthly gross, for example 583333 for EUR 5,833.33."
},
"Gehalt_ct_ohne_Sonst": {
"type": "integer",
"minimum": 0,
"description": "Gross pay excluding one-off or bonus payments for the selected payroll period, in minor units."
},
"Steuerklasse": {
"type": "integer",
"description": "Country-polymorphic tax class, tariff, filing status, or tax-code selector. Do not reuse German tax-class meanings outside Land=DE. DE: 1=single, 2=single parent, 3/4/5=married tax classes, 6=additional job. AT: 1=standard employee, 2=sole earner with child, 3=single parent with child. CH: current backend-supported ordinary Zurich tariffs are 1=single/no children and 2=married or children; CH values above 1 are normalized to 2 until Tarif C/H are implemented end-to-end. US: 1=Single, 3=Joint, 4=Head of Household. UK: 1=1257L standard tax code. IE: 1=Single, 2=Joint one income, 3=Joint two incomes. AU: 1=Resident, 2=Non-Resident, 3=Working Holiday. CA uses the payroll claim setup for federal/provincial tax calculation."
},
"Geldwerter_Vorteil": {
"type": "integer",
"description": "Taxable benefits in minor units. Used as in-kind benefit, taxable benefit, benefit in kind, natural salary, or imputed income depending on country; supported for DE, AT, CH, UK, US, CA, and IE."
},
"PreTax_Deduction_ct": {
"type": "integer",
"description": "Country-polymorphic pre-tax deductions in minor units for the selected payroll period. Interpret by Land: AT occupational provision/commuter-related deduction, CH pillar 3a or occupational pension purchase, US 401k/IRA/HSA, UK salary sacrifice or pension, CA RRSP/pension, AU super salary sacrifice, and IE pension contribution."
},
"pendlerEuro": {
"type": "integer",
"description": "Austria-only commuter allowance amount in minor units."
},
"Pendler_KM": {
"type": "integer",
"description": "Austria-only commuting distance in kilometers."
},
"Pendler_Zumutbar": {
"type": "integer",
"description": "Austrian commuter reasonableness flag."
},
"Pendler_Tage": {
"type": "integer",
"description": "Austria-only monthly commuter days."
},
"Altersrente_Bezug": {
"type": "integer",
"description": "1 if pension/retirement benefits apply, otherwise 0. Mainly used for DE/AT pensioner workflows."
},
"Bundesland": {
"type": "string",
"description": "Country-polymorphic region selector for regional taxes and payroll rules. DE uses full Obolus state names such as Berlin, Bayern, Nordrhein-Westfalen, Sachsen, not ISO abbreviations such as BE or BY. AT uses Austrian federal states such as Wien. CH uses the canton such as Zurich. US uses state names such as California. CA uses provinces such as Ontario, Quebec, or British Columbia. UK uses England, Scotland, Wales, or Northern Ireland. Leave omitted for country examples that omit it unless the user gives a specific supported region.",
"examples": [
"Baden-Wuerttemberg",
"Bayern",
"Berlin",
"Brandenburg",
"Bremen",
"Hamburg",
"Hessen",
"Mecklenburg-Vorpommern",
"Niedersachsen",
"Nordrhein-Westfalen",
"Rheinland-Pfalz",
"Saarland",
"Sachsen",
"Sachsen-Anhalt",
"Schleswig-Holstein",
"Thueringen"
]
},
"Lohnzahlungszeitraum": {
"type": "integer",
"description": "Payroll period for this person. Values: 1=year, 2=month, 3=week, 4=day. The person's Gehalt_ct must be the gross amount for the same period. Some country UIs expose only a subset: AT/CH commonly annual or monthly; DE/US and defaults commonly annual, monthly, or weekly."
},
"Stjahr": {
"type": "integer",
"description": "Tax year."
},
"Faktor": {
"type": "number",
"description": "Germany-only tax factor used for tax class IV/factor workflows."
},
"Geburtsjahr": {
"type": "integer",
"description": "Birth year."
},
"Versorgungsbezuege": {
"type": "integer",
"description": "Germany-only pension or civil-service pension payments in minor units."
},
"Erster_mntl_Versorgungsbezug": {
"type": "integer",
"description": "Germany-only first monthly pension payment in minor units."
},
"Versorgungsbezuege_Sonderzahlung": {
"type": "integer",
"description": "Germany-only special pension payment in minor units."
},
"Erstes_Jahr_Versorgungsbezug": {
"type": "integer",
"description": "Germany-only first tax year of pension receipt."
},
"Monate_Versorgungsbezuege": {
"type": "integer",
"description": "Germany-only number of months with pension payments."
},
"Freibetrag_Sonst": {
"type": "integer",
"description": "Allowance on one-off payments in minor units."
},
"Hinzubetrag": {
"type": "integer",
"description": "Additional amount on one-off payments in minor units."
},
"Sonstige_Bezuege": {
"type": "integer",
"description": "One-off payments or bonus income in minor units. Country meanings include DE other remuneration, UK/US/CA/IE supplemental income, AU bonus pay, and AT/CH special salary or bonus handling where supported."
},
"Sonstige_Entschaedigung": {
"type": "integer",
"description": "Compensation payments in minor units."
},
"Sonstige_Sterbe": {
"type": "integer",
"description": "Death benefit / survivor payment in minor units."
},
"de_payroll_preset": {
"type": "string",
"enum": [
"DE_STANDARD_EMPLOYEE_STATUTORY",
"DE_PRIVATE_HEALTH_INSURANCE",
"DE_PENSION_EXEMPT",
"DE_PENSION_EXEMPT_PRIVATE_HEALTH"
],
"default": "DE_STANDARD_EMPLOYEE_STATUTORY",
"oneOf": [
{
"const": "DE_STANDARD_EMPLOYEE_STATUTORY",
"title": "Germany standard employee with statutory pension and statutory health",
"description": "Use this for the normal German employee case. The adapter maps it to Obolus backend flags gesetzliche_RV=0, gesetzlicheKvPvStatus=0, KV_Art=0, AN_Beitraege_PKV=0."
},
{
"const": "DE_PRIVATE_HEALTH_INSURANCE",
"title": "Germany employee with private health insurance",
"description": "Use this only when the user explicitly has PKV. The adapter keeps statutory pension/unemployment enabled and maps health/care to private. Provide de_private_health_employee_contribution_ct."
},
{
"const": "DE_PENSION_EXEMPT",
"title": "Germany pension/unemployment exempt with statutory health",
"description": "Use this for civil servants, self-employed, or other no-statutory-pension cases that still use statutory health/care handling."
},
{
"const": "DE_PENSION_EXEMPT_PRIVATE_HEALTH",
"title": "Germany pension/unemployment exempt with private health",
"description": "Use this only for exempt PKV cases. Provide de_private_health_employee_contribution_ct."
}
],
"description": "Preferred semantic German payroll preset for MCP calls. Use this instead of raw Obolus flags. For 'Germany, normal employee, tax class I' choose DE_STANDARD_EMPLOYEE_STATUTORY."
},
"de_statutory_pension_and_unemployment": {
"type": "boolean",
"default": true,
"description": "Semantic Germany-only adapter field. true means statutory pension and unemployment insurance apply. The adapter maps true to Obolus gesetzliche_RV=0 and false to gesetzliche_RV=1. Use false only for civil servants, self-employed, or explicitly pension-exempt cases."
},
"de_statutory_health_and_care": {
"type": "boolean",
"default": true,
"description": "Semantic Germany-only adapter field. true means statutory health and long-term care insurance apply. The adapter maps true to Obolus gesetzlicheKvPvStatus=0 and KV_Art=0; false means private health insurance and requires de_private_health_employee_contribution_ct."
},
"de_health_extra_contribution_percent": {
"type": "number",
"minimum": 0,
"maximum": 10,
"examples": [
1.7,
2.5
],
"description": "Preferred MCP alias for the German statutory health insurance Zusatzbeitrag. Use the literal percent value, for example 2.5 for 2.5%. The server normalizes this to legacy KVZ. Do not use basis points, tenths, cents, 25, 250, or any minor-unit encoding."
},
"de_private_health_employee_contribution_ct": {
"type": "integer",
"minimum": 0,
"description": "Semantic Germany-only adapter field for private health insurance employee contribution in minor units for the selected payroll period. Required when de_statutory_health_and_care=false or a private-health preset is selected. Leave omitted or 0 for statutory GKV/PV."
},
"Freibetrag_AG": {
"type": "integer",
"description": "Employer/payroll allowance or additional withholding amount in minor units. Country meanings include DE employer wage-tax feature, AT allowance notice, US/CA additional withholding, and UK payroll allowance handling."
},
"Hinzubetrag_AG": {
"type": "integer",
"description": "Employer surcharge in minor units."
},
"Hat_Studienkredit": {
"type": "integer",
"description": "Student loan repayment flag. Relevant for UK student loan, AU HELP/HECS, and IE student-loan-style deductions where modeled."
},
"Stfr_vermgsbteil": {
"type": "integer",
"description": "Tax-free capital-forming benefit share in minor units."
},
"Entschädigungen_vermgsbteil": {
"type": "integer",
"description": "Capital-forming compensation share in minor units."
},
"Sonstige_Bezuege_Versorgungsbezug": {
"type": "integer",
"description": "One-off payments tied to pension benefits in minor units."
},
"KinderPVA": {
"type": "integer",
"minimum": 0,
"default": 0,
"description": "Number of children relevant for German long-term care insurance. Children can reduce the care insurance rate; use 0 when no child discount applies."
},
"Kirche": {
"type": "integer",
"description": "Church tax membership flag. Use 1 when church tax applies and 0 when it does not."
},
"Kinderfreibetrag": {
"type": "number",
"default": 0,
"description": "Child allowance, dependent count, or child-credit factor for this person. DE uses child allowance shares such as 0, 0.5, 1, or 2. AT uses child count for Familienbonus workflows. CH uses child deduction count. US uses dependent credits count. CA/UK/AU/IE use dependent or child context where supported, often outside direct payroll tax."
}
},
"required": [
"Land",
"Gehalt_ct",
"Steuerklasse",
"Geburtsjahr"
]
}
}
},
"additionalProperties": true,
"description": "Input for one-country detailed payroll calculations. Prefer country, tax_year, gross_salary, location, employee_type, tax, and social_security. Use semantic German payroll fields instead of raw engine flags. Prefer taxcompare for multi-country comparisons; legacy fields use minor currency units and are period-specific.",
"examples": [
{
"country": "DE",
"tax_year": 2026,
"age": 35,
"gross_salary": {
"amount": 60000,
"currency": "EUR",
"period": "annual"
},
"location": {
"federal_state": "BE"
},
"employee_type": "standard_statutory_employee",
"payroll_preset": "DE_STANDARD_EMPLOYEE_STATUTORY",
"tax": {
"tax_class": 1,
"church_tax": false,
"child_allowance_factor": 0
},
"social_security": {
"pension_insurance": "statutory",
"unemployment_insurance": "statutory",
"health_insurance": "statutory",
"health_additional_contribution_percent": 2.9,
"long_term_care_insurance": "statutory",
"children_for_care_insurance": 0
}
}
],
"x-legacy-examples": [
{
"Land": "DE",
"Stjahr": 2026,
"Currency": "EUR",
"LZZ": 2,
"Modus": 1,
"Faktor": 1,
"KinderFRB": 0,
"KinderPVA": 0,
"Kindergeld": 0,
"Personen": [
{
"Land": "DE",
"Gehalt_ct": 583333,
"Gehalt_ct_ohne_Sonst": 583333,
"Steuerklasse": 1,
"Bundesland": "Berlin",
"Lohnzahlungszeitraum": 2,
"Stjahr": 2026,
"Faktor": 1,
"Geburtsjahr": 1988,
"de_payroll_preset": "DE_STANDARD_EMPLOYEE_STATUTORY",
"de_statutory_pension_and_unemployment": true,
"de_statutory_health_and_care": true,
"de_health_extra_contribution_percent": 2.5,
"Kirche": 0,
"KinderPVA": 0,
"Kinderfreibetrag": 0
}
]
},
{
"Land": "DE",
"Stjahr": 2026,
"Currency": "EUR",
"LZZ": 1,
"Modus": 1,
"Faktor": 1,
"KinderFRB": 0,
"KinderPVA": 0,
"Kindergeld": 0,
"Personen": [
{
"Land": "DE",
"Gehalt_ct": 7000000,
"Gehalt_ct_ohne_Sonst": 7000000,
"Steuerklasse": 1,
"Bundesland": "Berlin",
"Lohnzahlungszeitraum": 1,
"Stjahr": 2026,
"Faktor": 1,
"Geburtsjahr": 1988,
"de_payroll_preset": "DE_STANDARD_EMPLOYEE_STATUTORY",
"de_statutory_pension_and_unemployment": true,
"de_statutory_health_and_care": true,
"de_health_extra_contribution_percent": 2.5,
"Kirche": 0,
"KinderPVA": 0,
"Kinderfreibetrag": 0
}
]
},
{
"Land": "DE",
"Stjahr": 2026,
"Currency": "EUR",
"LZZ": 2,
"Modus": 1,
"Faktor": 1,
"KinderFRB": 0,
"KinderPVA": 0,
"Kindergeld": 0,
"Personen": [
{
"Land": "DE",
"Gehalt_ct": 583333,
"Gehalt_ct_ohne_Sonst": 583333,
"Steuerklasse": 1,
"Bundesland": "Berlin",
"Lohnzahlungszeitraum": 2,
"Stjahr": 2026,
"Faktor": 1,
"Geburtsjahr": 1988,
"de_payroll_preset": "DE_PRIVATE_HEALTH_INSURANCE",
"de_statutory_pension_and_unemployment": true,
"de_statutory_health_and_care": false,
"de_health_extra_contribution_percent": 0,
"de_private_health_employee_contribution_ct": 45000,
"Kirche": 0,
"KinderPVA": 0,
"Kinderfreibetrag": 0
}
]
},
{
"Land": "AT",
"Stjahr": 2026,
"Currency": "EUR",
"LZZ": 2,
"Modus": 1,
"Faktor": 1,
"KinderFRB": 0,
"KinderPVA": 0,
"Kindergeld": 0,
"Personen": [
{
"Land": "AT",
"Gehalt_ct": 500000,
"Gehalt_ct_ohne_Sonst": 500000,
"Steuerklasse": 1,
"Bundesland": "Wien",
"Lohnzahlungszeitraum": 2,
"Stjahr": 2026,
"Faktor": 1,
"Geburtsjahr": 1988,
"PreTax_Deduction_ct": 0,
"pendlerEuro": 0,
"Pendler_KM": 0,
"Pendler_Zumutbar": 0,
"Pendler_Tage": 0,
"Kinderfreibetrag": 0
}
]
},
{
"Land": "CH",
"Stjahr": 2026,
"Currency": "CHF",
"LZZ": 1,
"Modus": 1,
"Faktor": 1,
"KinderFRB": 0,
"KinderPVA": 0,
"Kindergeld": 0,
"Personen": [
{
"Land": "CH",
"Gehalt_ct": 10000000,
"Gehalt_ct_ohne_Sonst": 10000000,
"Steuerklasse": 1,
"Bundesland": "Zürich",
"Lohnzahlungszeitraum": 1,
"Stjahr": 2026,
"Faktor": 1,
"Geburtsjahr": 1988,
"PreTax_Deduction_ct": 0,
"Kinderfreibetrag": 0
}
]
},
{
"Land": "US",
"Stjahr": 2026,
"Currency": "USD",
"LZZ": 1,
"Modus": 1,
"Faktor": 1,
"KinderFRB": 0,
"KinderPVA": 0,
"Kindergeld": 0,
"Personen": [
{
"Land": "US",
"Gehalt_ct": 9000000,
"Gehalt_ct_ohne_Sonst": 9000000,
"Steuerklasse": 1,
"Bundesland": "California",
"Lohnzahlungszeitraum": 1,
"Stjahr": 2026,
"Faktor": 1,
"Geburtsjahr": 1988,
"PreTax_Deduction_ct": 0,
"Sonstige_Bezuege": 0,
"Freibetrag_AG": 0,
"Kinderfreibetrag": 0
}
]
},
{
"Land": "UK",
"Stjahr": 2026,
"Currency": "GBP",
"LZZ": 1,
"Modus": 1,
"Faktor": 1,
"KinderFRB": 0,
"KinderPVA": 0,
"Kindergeld": 0,
"Personen": [
{
"Land": "UK",
"Gehalt_ct": 6000000,
"Gehalt_ct_ohne_Sonst": 6000000,
"Steuerklasse": 1,
"Bundesland": "England",
"Lohnzahlungszeitraum": 1,
"Stjahr": 2026,
"Faktor": 1,
"Geburtsjahr": 1988,
"PreTax_Deduction_ct": 0,
"Hat_Studienkredit": 0,
"Sonstige_Bezuege": 0,
"Freibetrag_AG": 0,
"Kinderfreibetrag": 0
}
]
},
{
"Land": "IE",
"Stjahr": 2026,
"Currency": "EUR",
"LZZ": 1,
"Modus": 1,
"Faktor": 1,
"KinderFRB": 0,
"KinderPVA": 0,
"Kindergeld": 0,
"Personen": [
{
"Land": "IE",
"Gehalt_ct": 7000000,
"Gehalt_ct_ohne_Sonst": 7000000,
"Steuerklasse": 1,
"Lohnzahlungszeitraum": 1,
"Stjahr": 2026,
"Faktor": 1,
"Geburtsjahr": 1988,
"PreTax_Deduction_ct": 0,
"Hat_Studienkredit": 0,
"Sonstige_Bezuege": 0,
"Kinderfreibetrag": 0
}
]
},
{
"Land": "CA",
"Stjahr": 2026,
"Currency": "CAD",
"LZZ": 1,
"Modus": 1,
"Faktor": 1,
"KinderFRB": 0,
"KinderPVA": 0,
"Kindergeld": 0,
"Personen": [
{
"Land": "CA",
"Gehalt_ct": 8500000,
"Gehalt_ct_ohne_Sonst": 8500000,
"Steuerklasse": 1,
"Bundesland": "Ontario",
"Lohnzahlungszeitraum": 1,
"Stjahr": 2026,
"Faktor": 1,
"Geburtsjahr": 1988,
"PreTax_Deduction_ct": 0,
"Sonstige_Bezuege": 0,
"Freibetrag_AG": 0,
"Kinderfreibetrag": 0
}
]
},
{
"Land": "AU",
"Stjahr": 2026,
"Currency": "AUD",
"LZZ": 1,
"Modus": 1,
"Faktor": 1,
"KinderFRB": 0,
"KinderPVA": 0,
"Kindergeld": 0,
"Personen": [
{
"Land": "AU",
"Gehalt_ct": 9000000,
"Gehalt_ct_ohne_Sonst": 9000000,
"Steuerklasse": 1,
"Lohnzahlungszeitraum": 1,
"Stjahr": 2026,
"Faktor": 1,
"Geburtsjahr": 1988,
"PreTax_Deduction_ct": 0,
"Hat_Studienkredit": 0,
"Sonstige_Bezuege": 0,
"Kinderfreibetrag": 0
}
]
}
]
}출력 스키마
{
"type": "object",
"properties": {
"calculated_at": {
"type": "string",
"format": "date-time",
"description": "UTC timestamp when this response was assembled."
},
"contract_version": {
"type": "string",
"description": "Obolus public contract version used to shape this response."
},
"tax_data_version": {
"type": "string",
"description": "Tax-data or backend-engine revision used for this response."
},
"method_version": {
"type": "string",
"description": "Calculation method or benchmark method version used for this response."
},
"orientation_note": {
"type": "string",
"description": "Reminder that the result is an orientation estimate, not professional advice."
},
"person1": {
"type": "object",
"additionalProperties": true,
"description": "Payroll result for the first person. Interpret stable output codes with the original request Land and the output country-specific usage notes.",
"properties": {
"info": {
"type": "string",
"description": "Backend note, warning, or informational message for the calculation."
},
"BK": {
"type": "integer",
"description": "Country-polymorphic special payment, bonus-related gross component, or total package component in minor units. AT commonly represents 13th/14th salary handling; AU can represent total package including super."
},
"BKS": {
"type": "integer",
"description": "Country-polymorphic tax or contribution value related to special payment handling, in minor units."
},
"SOLZLZZ": {
"type": "integer",
"description": "Country-specific payroll-period surcharge or informational deduction in minor units. DE=solidarity surcharge, CH=municipal tax, CA=tax withholding, IE=student loan where modeled."
},
"SOLZS": {
"type": "integer",
"description": "Solidarity surcharge or country-specific equivalent on special payments, in minor units. Interpret by original request Land."
},
"STS": {
"type": "integer",
"description": "Country-polymorphic social contribution or country-specific charge on special payments, in minor units. Interpret by original request Land."
},
"LSTLZZ": {
"type": "integer",
"description": "Country-specific period tax or deduction in minor units. Interpret by original request Land: DE/AT=period wage tax, CH=cantonal tax, US/CA=federal tax, UK=student loan, AU=HELP/HECS repayment, IE=USC."
},
"KST": {
"type": "integer",
"description": "Church tax or country-specific religious levy deducted from payroll, in minor units. Mainly relevant for DE and CH; most other systems have no payroll church tax."
},
"ST": {
"type": "integer",
"description": "Primary payroll tax in minor units. Interpret by original request Land: DE/AT/UK=income tax, CH=federal or withholding tax component, US=federal plus state or state component depending response mapping, CA=provincial component, AU=PAYG tax, IE=PAYE."
},
"STJ": {
"type": "integer",
"description": "Annualized income tax value after child allowance or country-specific adjustment logic, in minor units. Interpret by original request Land."
},
"ZVE": {
"type": "number",
"description": "Taxable income used as the basis for the wage, payroll, or income tax calculation, in minor units. Interpret by original request Land."
},
"ZVEJ": {
"type": "number",
"description": "Taxable income after child allowances or country-specific adjustment logic, in minor units. Interpret by original request Land."
},
"KFBP": {
"type": "string",
"description": "Child allowance, child benefit, tax-credit, or favorable-test information returned by the calculator. Interpret by original request Land."
},
"RSV": {
"type": "integer",
"description": "Employee pension or retirement contribution for the selected payroll period in minor units. DE/AT=statutory pension, CH=AHV/IV/EO and possibly pension fund, US=Social Security/OASDI, CA=CPP/QPP, UK=workplace or state-pension-related contribution context, IE=pension/PRSA or PRSI pension context, AU=voluntary super contribution."
},
"KSV": {
"type": "integer",
"description": "Country-specific health, Medicare, USC, or equivalent contribution for the selected payroll period in minor units. DE/AT=statutory health contribution, CH=occupational accident/sickness or pillar-related payroll deduction rather than private KVG/LAMal bill, US=Medicare, AU=Medicare Levy, IE=USC, CA=province-related health or employment-insurance context depending backend mapping."
},
"PSV": {
"type": "integer",
"description": "Employee long-term care insurance or country-specific equivalent contribution for the selected payroll period in minor units. DE=nursing care insurance; CH can represent NBU/KTG-style accident/sickness context. Usually unused in other tax systems."
},
"ASV": {
"type": "integer",
"description": "Employee unemployment insurance or country-specific social contribution for the selected payroll period in minor units. DE/AT=unemployment/rest social insurance, CH=ALV/NBU, UK=National Insurance, IE=PRSI, CA=Employment Insurance or RRSP employee context depending response mapping, US=state disability/unemployment-style employee item where applicable, AU is normally unused because unemployment benefits are tax-funded."
},
"NET": {
"type": "integer",
"description": "Net pay remaining after country-specific taxes and payroll deductions for the selected payroll period, in minor units."
},
"STX": {
"type": "integer",
"description": "Income tax due after annual tax equalization, joint assessment, or country-specific compensation logic, in minor units. Interpret by original request Land."
},
"STXJ": {
"type": "integer",
"description": "Income tax after annual equalization including child allowance, child benefit, tax credit, or country-specific dependent effects, in minor units."
},
"NETX": {
"type": "integer",
"description": "Net pay after annual tax equalization or country-specific compensation logic, excluding child benefit effects, in minor units. Interpret by original request Land."
},
"NETXJ": {
"type": "integer",
"description": "Actual annual available net income after country-specific annual adjustments, in minor units. Interpret by original request Land."
},
"GWV": {
"type": "integer",
"description": "Taxable benefit or monetary advantage included in the calculation, in minor units. Country meanings include in-kind benefit, benefit in kind, taxable benefit, or imputed income."
},
"VTL": {
"type": "integer",
"description": "Forecast, informational, or country-specific adjustment value in minor units. DE=tax refund/forecast info, AT=tax on 13th/14th salary, CH=withholding-tax info, US=401k/IRA info, UK=student loan, CA=RRSP/federal credit info, AU=employer superannuation, IE=USC or tax-credit info."
},
"Brutto": {
"type": "integer",
"description": "Gross earnings used in the calculation, before country-specific taxes and payroll deductions, in minor units."
}
}
},
"person2": {
"type": "object",
"additionalProperties": true,
"description": "Payroll result for the second person. Values are zero or empty when the calculation mode uses only one person. Interpret stable output codes with the original request Land.",
"properties": {
"info": {
"type": "string",
"description": "Backend note, warning, or informational message for the calculation."
},
"BK": {
"type": "integer",
"description": "Country-polymorphic special payment, bonus-related gross component, or total package component in minor units. AT commonly represents 13th/14th salary handling; AU can represent total package including super."
},
"BKS": {
"type": "integer",
"description": "Country-polymorphic tax or contribution value related to special payment handling, in minor units."
},
"SOLZLZZ": {
"type": "integer",
"description": "Country-specific payroll-period surcharge or informational deduction in minor units. DE=solidarity surcharge, CH=municipal tax, CA=tax withholding, IE=student loan where modeled."
},
"SOLZS": {
"type": "integer",
"description": "Solidarity surcharge or country-specific equivalent on special payments, in minor units. Interpret by original request Land."
},
"STS": {
"type": "integer",
"description": "Country-polymorphic social contribution or country-specific charge on special payments, in minor units. Interpret by original request Land."
},
"LSTLZZ": {
"type": "integer",
"description": "Country-specific period tax or deduction in minor units. Interpret by original request Land: DE/AT=period wage tax, CH=cantonal tax, US/CA=federal tax, UK=student loan, AU=HELP/HECS repayment, IE=USC."
},
"KST": {
"type": "integer",
"description": "Church tax or country-specific religious levy deducted from payroll, in minor units. Mainly relevant for DE and CH; most other systems have no payroll church tax."
},
"ST": {
"type": "integer",
"description": "Primary payroll tax in minor units. Interpret by original request Land: DE/AT/UK=income tax, CH=federal or withholding tax component, US=federal plus state or state component depending response mapping, CA=provincial component, AU=PAYG tax, IE=PAYE."
},
"STJ": {
"type": "integer",
"description": "Annualized income tax value after child allowance or country-specific adjustment logic, in minor units. Interpret by original request Land."
},
"ZVE": {
"type": "number",
"description": "Taxable income used as the basis for the wage, payroll, or income tax calculation, in minor units. Interpret by original request Land."
},
"ZVEJ": {
"type": "number",
"description": "Taxable income after child allowances or country-specific adjustment logic, in minor units. Interpret by original request Land."
},
"KFBP": {
"type": "string",
"description": "Child allowance, child benefit, tax-credit, or favorable-test information returned by the calculator. Interpret by original request Land."
},
"RSV": {
"type": "integer",
"description": "Employee pension or retirement contribution for the selected payroll period in minor units. DE/AT=statutory pension, CH=AHV/IV/EO and possibly pension fund, US=Social Security/OASDI, CA=CPP/QPP, UK=workplace or state-pension-related contribution context, IE=pension/PRSA or PRSI pension context, AU=voluntary super contribution."
},
"KSV": {
"type": "integer",
"description": "Country-specific health, Medicare, USC, or equivalent contribution for the selected payroll period in minor units. DE/AT=statutory health contribution, CH=occupational accident/sickness or pillar-related payroll deduction rather than private KVG/LAMal bill, US=Medicare, AU=Medicare Levy, IE=USC, CA=province-related health or employment-insurance context depending backend mapping."
},
"PSV": {
"type": "integer",
"description": "Employee long-term care insurance or country-specific equivalent contribution for the selected payroll period in minor units. DE=nursing care insurance; CH can represent NBU/KTG-style accident/sickness context. Usually unused in other tax systems."
},
"ASV": {
"type": "integer",
"description": "Employee unemployment insurance or country-specific social contribution for the selected payroll period in minor units. DE/AT=unemployment/rest social insurance, CH=ALV/NBU, UK=National Insurance, IE=PRSI, CA=Employment Insurance or RRSP employee context depending response mapping, US=state disability/unemployment-style employee item where applicable, AU is normally unused because unemployment benefits are tax-funded."
},
"NET": {
"type": "integer",
"description": "Net pay remaining after country-specific taxes and payroll deductions for the selected payroll period, in minor units."
},
"STX": {
"type": "integer",
"description": "Income tax due after annual tax equalization, joint assessment, or country-specific compensation logic, in minor units. Interpret by original request Land."
},
"STXJ": {
"type": "integer",
"description": "Income tax after annual equalization including child allowance, child benefit, tax credit, or country-specific dependent effects, in minor units."
},
"NETX": {
"type": "integer",
"description": "Net pay after annual tax equalization or country-specific compensation logic, excluding child benefit effects, in minor units. Interpret by original request Land."
},
"NETXJ": {
"type": "integer",
"description": "Actual annual available net income after country-specific annual adjustments, in minor units. Interpret by original request Land."
},
"GWV": {
"type": "integer",
"description": "Taxable benefit or monetary advantage included in the calculation, in minor units. Country meanings include in-kind benefit, benefit in kind, taxable benefit, or imputed income."
},
"VTL": {
"type": "integer",
"description": "Forecast, informational, or country-specific adjustment value in minor units. DE=tax refund/forecast info, AT=tax on 13th/14th salary, CH=withholding-tax info, US=401k/IRA info, UK=student loan, CA=RRSP/federal credit info, AU=employer superannuation, IE=USC or tax-credit info."
},
"Brutto": {
"type": "integer",
"description": "Gross earnings used in the calculation, before country-specific taxes and payroll deductions, in minor units."
}
}
},
"gesamt": {
"type": "object",
"additionalProperties": true,
"description": "Combined payroll result across all persons in the calculation. Uses the same country-specific output-code meanings as person1 and person2.",
"properties": {
"info": {
"type": "string",
"description": "Backend note, warning, or informational message for the calculation."
},
"BK": {
"type": "integer",
"description": "Country-polymorphic special payment, bonus-related gross component, or total package component in minor units. AT commonly represents 13th/14th salary handling; AU can represent total package including super."
},
"BKS": {
"type": "integer",
"description": "Country-polymorphic tax or contribution value related to special payment handling, in minor units."
},
"SOLZLZZ": {
"type": "integer",
"description": "Country-specific payroll-period surcharge or informational deduction in minor units. DE=solidarity surcharge, CH=municipal tax, CA=tax withholding, IE=student loan where modeled."
},
"SOLZS": {
"type": "integer",
"description": "Solidarity surcharge or country-specific equivalent on special payments, in minor units. Interpret by original request Land."
},
"STS": {
"type": "integer",
"description": "Country-polymorphic social contribution or country-specific charge on special payments, in minor units. Interpret by original request Land."
},
"LSTLZZ": {
"type": "integer",
"description": "Country-specific period tax or deduction in minor units. Interpret by original request Land: DE/AT=period wage tax, CH=cantonal tax, US/CA=federal tax, UK=student loan, AU=HELP/HECS repayment, IE=USC."
},
"KST": {
"type": "integer",
"description": "Church tax or country-specific religious levy deducted from payroll, in minor units. Mainly relevant for DE and CH; most other systems have no payroll church tax."
},
"ST": {
"type": "integer",
"description": "Primary payroll tax in minor units. Interpret by original request Land: DE/AT/UK=income tax, CH=federal or withholding tax component, US=federal plus state or state component depending response mapping, CA=provincial component, AU=PAYG tax, IE=PAYE."
},
"STJ": {
"type": "integer",
"description": "Annualized income tax value after child allowance or country-specific adjustment logic, in minor units. Interpret by original request Land."
},
"ZVE": {
"type": "number",
"description": "Taxable income used as the basis for the wage, payroll, or income tax calculation, in minor units. Interpret by original request Land."
},
"ZVEJ": {
"type": "number",
"description": "Taxable income after child allowances or country-specific adjustment logic, in minor units. Interpret by original request Land."
},
"KFBP": {
"type": "string",
"description": "Child allowance, child benefit, tax-credit, or favorable-test information returned by the calculator. Interpret by original request Land."
},
"RSV": {
"type": "integer",
"description": "Employee pension or retirement contribution for the selected payroll period in minor units. DE/AT=statutory pension, CH=AHV/IV/EO and possibly pension fund, US=Social Security/OASDI, CA=CPP/QPP, UK=workplace or state-pension-related contribution context, IE=pension/PRSA or PRSI pension context, AU=voluntary super contribution."
},
"KSV": {
"type": "integer",
"description": "Country-specific health, Medicare, USC, or equivalent contribution for the selected payroll period in minor units. DE/AT=statutory health contribution, CH=occupational accident/sickness or pillar-related payroll deduction rather than private KVG/LAMal bill, US=Medicare, AU=Medicare Levy, IE=USC, CA=province-related health or employment-insurance context depending backend mapping."
},
"PSV": {
"type": "integer",
"description": "Employee long-term care insurance or country-specific equivalent contribution for the selected payroll period in minor units. DE=nursing care insurance; CH can represent NBU/KTG-style accident/sickness context. Usually unused in other tax systems."
},
"ASV": {
"type": "integer",
"description": "Employee unemployment insurance or country-specific social contribution for the selected payroll period in minor units. DE/AT=unemployment/rest social insurance, CH=ALV/NBU, UK=National Insurance, IE=PRSI, CA=Employment Insurance or RRSP employee context depending response mapping, US=state disability/unemployment-style employee item where applicable, AU is normally unused because unemployment benefits are tax-funded."
},
"NET": {
"type": "integer",
"description": "Net pay remaining after country-specific taxes and payroll deductions for the selected payroll period, in minor units."
},
"STX": {
"type": "integer",
"description": "Income tax due after annual tax equalization, joint assessment, or country-specific compensation logic, in minor units. Interpret by original request Land."
},
"STXJ": {
"type": "integer",
"description": "Income tax after annual equalization including child allowance, child benefit, tax credit, or country-specific dependent effects, in minor units."
},
"NETX": {
"type": "integer",
"description": "Net pay after annual tax equalization or country-specific compensation logic, excluding child benefit effects, in minor units. Interpret by original request Land."
},
"NETXJ": {
"type": "integer",
"description": "Actual annual available net income after country-specific annual adjustments, in minor units. Interpret by original request Land."
},
"GWV": {
"type": "integer",
"description": "Taxable benefit or monetary advantage included in the calculation, in minor units. Country meanings include in-kind benefit, benefit in kind, taxable benefit, or imputed income."
},
"VTL": {
"type": "integer",
"description": "Forecast, informational, or country-specific adjustment value in minor units. DE=tax refund/forecast info, AT=tax on 13th/14th salary, CH=withholding-tax info, US=401k/IRA info, UK=student loan, CA=RRSP/federal credit info, AU=employer superannuation, IE=USC or tax-credit info."
},
"Brutto": {
"type": "integer",
"description": "Gross earnings used in the calculation, before country-specific taxes and payroll deductions, in minor units."
}
}
},
"faktor": {
"type": "number",
"description": "Tax factor used for German tax class IV factor workflows when applicable."
},
"source_url": {
"type": "string",
"description": "Canonical Obolus URL for the matching interactive calculator."
},
"visual_report": {
"type": "string",
"description": "Deep link to the interactive report or calculator view."
},
"localized_cta": {
"type": "object",
"additionalProperties": false,
"properties": {
"de": {
"type": "string",
"description": "German CTA for the visual report link."
},
"en": {
"type": "string",
"description": "English CTA for the visual report link."
},
"tr": {
"type": "string",
"description": "Turkish CTA for the visual report link."
}
},
"required": [
"de",
"en"
],
"description": "Localized call-to-action labels for opening the visual Obolus report link."
},
"summary": {
"type": "object",
"additionalProperties": false,
"description": "Normalized major-unit amounts for gross income, net income, taxes, social contributions, and total deductions. Use this stable summary for display; raw payroll fields remain available for country-specific detail.",
"properties": {
"amounts": {
"type": "array",
"minItems": 1,
"description": "Normalized monetary amounts in major currency units. Each item has key, amount, currency, and period; taxcompare items also identify country.",
"items": {
"type": "object",
"additionalProperties": false,
"description": "One normalized monetary amount in major currency units. Use key, period, and country to interpret it without relying on raw engine field names or array order.",
"properties": {
"key": {
"type": "string",
"enum": [
"gross_income",
"net_income",
"taxes",
"social_contributions",
"total_deductions"
],
"description": "Country-neutral metric key: gross income, net income, taxes, social contributions, or total deductions."
},
"amount": {
"type": "number",
"description": "Amount in major currency units, such as EUR 37,363.00 rather than cents."
},
"currency": {
"type": "string",
"enum": [
"EUR",
"USD",
"CHF",
"CAD",
"AUD",
"GBP"
],
"description": "ISO currency code for amount, normalized to uppercase."
},
"period": {
"type": "string",
"enum": [
"annual",
"monthly",
"weekly",
"daily"
],
"description": "Period represented by the amount."
},
"country": {
"type": "string",
"enum": [
"DE",
"AT",
"US",
"CH",
"CA",
"AU",
"UK",
"IE"
],
"description": "Country code for the amount. Present for payroll and comparison results; absent only when the caller supplied no country context."
}
},
"required": [
"key",
"amount",
"currency",
"period"
]
}
},
"tax_year": {
"anyOf": [
{
"type": "string"
},
{
"type": "integer"
}
],
"description": "Tax year used for the summary when the calculation exposes one."
},
"comparison_basis": {
"type": "string",
"enum": [
"shared_gross",
"local_median_gross"
],
"description": "Taxcompare basis used for the summary: shared_gross or local_median_gross."
}
},
"required": [
"amounts"
]
},
"assumptions": {
"type": "object",
"additionalProperties": true,
"description": "Normalized user-facing assumptions used for the payroll calculation, including country, salary period, location, tax class, church tax, and German social-security choices. Use this to explain what the calculation assumed without exposing raw payroll-engine flags.",
"properties": {
"age": {
"type": "integer",
"description": "Age used for the calculation."
},
"age_source": {
"type": "string",
"enum": [
"user_input",
"legacy_birth_year",
"standard_assumption"
],
"description": "Whether age came from the user, a legacy birth year, or the standard assumption."
}
}
},
"warnings": {
"type": "array",
"description": "Non-blocking warnings about suspicious inputs, such as annual gross sent with monthly LZZ, scaled German Zusatzbeitrag values, or raw German insurance combinations that may be intentional for non-standard cases.",
"items": {
"type": "string",
"description": "Human-readable warning message."
}
}
},
"required": [
"source_url",
"visual_report",
"localized_cta",
"summary",
"calculated_at",
"contract_version",
"tax_data_version",
"method_version",
"orientation_note",
"assumptions",
"warnings"
],
"additionalProperties": true,
"description": "Output schema for one-country detailed Obolus payroll calculations. Interpret person1, person2, and gesamt with the original request Land; stable field names such as ST, LSTLZZ, RSV, KSV, PSV, ASV, and VTL have country-specific meanings rather than one global meaning. Monetary amounts are minor units. Output country-specific usage: DE outputs keep German payroll meanings: ST/LSTLZZ are wage tax, SOLZLZZ is solidarity surcharge, KST is church tax, and RSV/KSV/PSV/ASV are statutory pension, health, care, and unemployment insurance. AT outputs emphasize Austrian wage tax plus social insurance; BK, STS, STX, and NETX can represent annual or special-payment handling such as 13th/14th salary paths. CH outputs can represent federal, cantonal, municipal, withholding, AHV/IV/EO, ALV, accident, sickness, and pension-fund payroll deductions; private KVG/LAMal health bills are not modeled as payroll health insurance. US outputs map stable Obolus fields to federal/state income tax, Social Security/OASDI, Medicare, additional withholding, supplemental income, and pre-tax retirement/HSA-style deduction context. UK outputs map stable Obolus fields to PAYE income tax, National Insurance, student loan where enabled, salary sacrifice or pension, and regional/tax-code context. IE outputs map stable Obolus fields to PAYE, USC, PRSI, pension contribution, tax credits, and student-loan-style deductions where modeled. CA outputs map stable Obolus fields to federal/provincial tax, CPP/QPP, EI, RRSP or pension deductions, province-specific credits, and additional withholding. AU outputs map stable Obolus fields to PAYG tax, Medicare Levy, HELP/HECS where enabled, voluntary super salary sacrifice, bonus pay, and employer super information."
}🟢taxcompare(age, regions, salary_ct, annual_gross, gross_mode, ...)
Compare annual gross, net pay, taxes, and employee social contributions across two or more supported countries. Use shared_gross for the same offer and local_median_gross for country-market benchmarks. Provide tax_year and at least two countries. Use berechne for detailed single-country payroll.
입력 스키마
{
"type": "object",
"properties": {
"age": {
"type": "integer",
"minimum": 18,
"maximum": 100,
"default": 35,
"description": "Adult age in the selected tax year."
},
"regions": {
"type": "object",
"additionalProperties": {
"type": "string"
},
"description": "Country-keyed tax regions, for example CH: ZH. Omitted regions use country defaults, reported in calculation_profile."
},
"salary_ct": {
"type": "integer",
"minimum": 0,
"description": "Preferred salary input for MCP calls. Salary in minor units for the selected period, for example 5000000 for EUR 50,000. With period=annual this is annual salary; with period=monthly this is monthly salary and Obolus annualizes it for the comparison. Required for shared_gross mode unless annual_gross is provided as a legacy alias."
},
"annual_gross": {
"type": "number",
"description": "Backward-compatible annual gross salary alias in major currency units, not cents. Prefer salary_ct. Example: 50000 means 50,000 in the selected currency. Required for shared_gross mode only when salary_ct is not provided; optional and ignored when omitted for local_median_gross."
},
"gross_mode": {
"type": "string",
"enum": [
"shared_gross",
"local_median_gross"
],
"default": "shared_gross",
"description": "Comparison basis. Use shared_gross for the same user-provided annual gross across all countries. Use local_median_gross for country-specific editorial median gross benchmarks. Defaults to shared_gross when omitted."
},
"period": {
"type": "string",
"enum": [
"annual",
"monthly"
],
"default": "annual",
"description": "Period for salary_ct. Use annual when salary_ct is the annual gross salary. Use monthly when salary_ct is one monthly gross salary; taxcompare annualizes it before comparing countries. annual_gross is always annual and ignores this field."
},
"person_type": {
"type": "string",
"enum": [
"single",
"married"
],
"default": "single",
"description": "Broad household assumption for comparison. single maps to joint_assessment=false; married maps to joint_assessment=true unless joint_assessment is provided explicitly. For precise country-specific filing details, use berechne."
},
"joint_assessment": {
"type": "boolean",
"default": false,
"description": "Broad joint filing / joint assessment assumption for comparable country-level estimates. For precise country-specific filing details, use berechne."
},
"children": {
"type": "integer",
"minimum": 0,
"default": 0,
"description": "Number of children or dependents used as a broad comparison assumption. Country-specific child allowance and credit rules are simplified for comparability."
},
"tax_year": {
"anyOf": [
{
"type": "string"
},
{
"type": "integer"
}
],
"description": "Tax year, for example 2026. The same tax year is applied to every selected country."
},
"countries": {
"type": "array",
"minItems": 2,
"items": {
"type": "string",
"enum": [
"DE",
"AT",
"US",
"CH",
"CA",
"AU",
"UK",
"IE"
]
},
"description": "List of country tax systems to compare. Use at least two countries for a comparison. Supported values: DE, AT, CH, US, UK, IE, CA, AU."
},
"currency": {
"type": "string",
"enum": [
"eur",
"usd",
"chf",
"cad",
"aud",
"gbp",
"EUR",
"USD",
"CHF",
"CAD",
"AUD",
"GBP"
],
"description": "Input and output currency: EUR, USD, CHF, CAD, AUD, GBP, or lower-case equivalents. Results normalize currency codes to lower-case. Unlike berechne, taxcompare prefers salary_ct for salary input and returns major currency units."
}
},
"required": [
"countries",
"currency",
"tax_year"
],
"additionalProperties": false,
"description": "Input for a multi-country salary comparison. Use at least two countries, tax_year, and either salary_ct/annual_gross for shared_gross or local_median_gross without a salary. Results are annual major-currency estimates.",
"examples": [
{
"salary_ct": 5000000,
"gross_mode": "shared_gross",
"period": "annual",
"person_type": "single",
"joint_assessment": false,
"children": 0,
"tax_year": 2026,
"countries": [
"US",
"IE",
"DE",
"CA"
],
"currency": "EUR"
},
{
"salary_ct": 7000000,
"gross_mode": "shared_gross",
"period": "annual",
"person_type": "single",
"joint_assessment": false,
"children": 0,
"tax_year": 2026,
"countries": [
"DE",
"AT",
"CH",
"US",
"UK",
"IE",
"CA",
"AU"
],
"currency": "EUR"
},
{
"gross_mode": "local_median_gross",
"period": "annual",
"joint_assessment": false,
"children": 0,
"tax_year": 2026,
"countries": [
"DE",
"AT",
"CH",
"US",
"UK",
"IE",
"CA",
"AU"
],
"currency": "eur"
}
]
}출력 스키마
{
"type": "object",
"properties": {
"calculated_at": {
"type": "string",
"format": "date-time",
"description": "UTC timestamp when this response was assembled."
},
"contract_version": {
"type": "string",
"description": "Obolus public contract version used to shape this response."
},
"tax_data_version": {
"type": "string",
"description": "Tax-data or backend-engine revision used for this response."
},
"method_version": {
"type": "string",
"description": "Calculation method or benchmark method version used for this response."
},
"orientation_note": {
"type": "string",
"description": "Reminder that the result is an orientation estimate, not professional advice."
},
"tax_year": {
"anyOf": [
{
"type": "string"
},
{
"type": "integer"
}
],
"description": "Tax year actually used for every country result."
},
"source_url": {
"type": "string",
"description": "Canonical Obolus TaxCompare URL for this result."
},
"visual_report": {
"type": "string",
"description": "Deep link to TaxCompare with the tool input, countries, year, and agent attribution prefilled."
},
"localized_cta": {
"type": "object",
"additionalProperties": false,
"properties": {
"de": {
"type": "string",
"description": "German CTA for the visual report link."
},
"en": {
"type": "string",
"description": "English CTA for the visual report link."
},
"tr": {
"type": "string",
"description": "Turkish CTA for the visual report link."
}
},
"required": [
"de",
"en"
],
"description": "Localized labels for opening the visual TaxCompare report."
},
"summary": {
"type": "object",
"additionalProperties": false,
"description": "Normalized annual major-unit amounts for every country result. Use key and country together to render stable comparison cards or tables.",
"properties": {
"amounts": {
"type": "array",
"minItems": 1,
"description": "Normalized monetary amounts in major currency units. Each item has key, amount, currency, and period; taxcompare items also identify country.",
"items": {
"type": "object",
"additionalProperties": false,
"description": "One normalized monetary amount in major currency units. Use key, period, and country to interpret it without relying on raw engine field names or array order.",
"properties": {
"key": {
"type": "string",
"enum": [
"gross_income",
"net_income",
"taxes",
"social_contributions",
"total_deductions"
],
"description": "Country-neutral metric key: gross income, net income, taxes, social contributions, or total deductions."
},
"amount": {
"type": "number",
"description": "Amount in major currency units, such as EUR 37,363.00 rather than cents."
},
"currency": {
"type": "string",
"enum": [
"EUR",
"USD",
"CHF",
"CAD",
"AUD",
"GBP"
],
"description": "ISO currency code for amount, normalized to uppercase."
},
"period": {
"type": "string",
"enum": [
"annual",
"monthly",
"weekly",
"daily"
],
"description": "Period represented by the amount."
},
"country": {
"type": "string",
"enum": [
"DE",
"AT",
"US",
"CH",
"CA",
"AU",
"UK",
"IE"
],
"description": "Country code for the amount. Present for payroll and comparison results; absent only when the caller supplied no country context."
}
},
"required": [
"key",
"amount",
"currency",
"period"
]
}
},
"tax_year": {
"anyOf": [
{
"type": "string"
},
{
"type": "integer"
}
],
"description": "Tax year used for the summary when the calculation exposes one."
},
"comparison_basis": {
"type": "string",
"enum": [
"shared_gross",
"local_median_gross"
],
"description": "Taxcompare basis used for the summary: shared_gross or local_median_gross."
}
},
"required": [
"amounts"
]
},
"assumptions": {
"type": "object",
"additionalProperties": true,
"description": "Normalized comparison inputs used for the calculation, including age, tax year, countries, gross mode, salary, and household assumptions."
},
"warnings": {
"type": "array",
"description": "Non-blocking warnings associated with this comparison.",
"items": {
"type": "string",
"description": "Human-readable warning message."
}
},
"comparison_basis": {
"type": "string",
"enum": [
"shared_gross",
"local_median_gross"
],
"description": "Basis used for the comparison: shared_gross for the same gross salary in each country, or local_median_gross for country-specific median benchmarks."
},
"gross_inputs": {
"type": "object",
"description": "Annual gross salary input used for each country, keyed by country code and expressed in the selected major currency. In shared_gross mode these values are usually identical; in local_median_gross mode they differ by country benchmark.",
"additionalProperties": {
"type": "number",
"description": "Annual gross salary used for this country in the selected major currency."
}
},
"benchmark_method_version": {
"type": "string",
"description": "Editorial benchmark method version used when comparison_basis is local_median_gross."
},
"benchmark_sources": {
"type": "object",
"description": "Country-level benchmark source metadata used in local_median_gross mode, keyed by country code.",
"additionalProperties": {
"type": "string",
"description": "Human-readable source note or source identifier for this country's median gross benchmark."
}
},
"ranking_by_net": {
"type": "array",
"description": "Countries ranked by estimated annual net salary, highest net first. Use this for 'where do I keep more money' and 'rank by net income' answers.",
"items": {
"type": "object",
"additionalProperties": false,
"properties": {
"rank": {
"type": "integer",
"description": "1-based rank by net salary, highest net first."
},
"country": {
"type": "string",
"enum": [
"DE",
"AT",
"US",
"CH",
"CA",
"AU",
"UK",
"IE"
],
"description": "Country code for this ranked comparison result."
},
"net": {
"type": "number",
"description": "Estimated annual net salary for this country in the requested major currency."
},
"total_deductions": {
"type": "number",
"description": "Estimated annual tax plus social contributions for this country in the requested major currency."
},
"effective_rate": {
"type": "number",
"description": "Total deduction rate as percentage points of gross income. Example: 37.7 means 37.7%."
}
},
"required": [
"rank",
"country",
"net"
]
}
},
"results": {
"type": "array",
"description": "Country-level comparison results with gross salary, net salary, income/payroll tax, social contributions, total deductions, and effective burden.",
"items": {
"type": "object",
"additionalProperties": true,
"properties": {
"country": {
"type": "string",
"enum": [
"DE",
"AT",
"US",
"CH",
"CA",
"AU",
"UK",
"IE"
],
"description": "Country code for this comparison result: DE, AT, CH, US, UK, IE, CA, or AU."
},
"net": {
"type": "number",
"description": "Estimated annual net income after taxes and payroll/social deductions in the selected major currency. This is annual take-home pay, not monthly net."
},
"tax": {
"type": "number",
"description": "Estimated annual tax burden in the selected major currency. Country meanings differ: for example PAYE/PAYG/income tax, federal plus state/provincial components, or withholding tax depending on system."
},
"social_contributions": {
"type": "number",
"description": "Estimated annual employee social contributions or country-specific payroll deductions in the selected major currency. Examples include statutory social insurance, OASDI/Medicare, National Insurance, PRSI, CPP/QPP/EI, Medicare Levy, or Swiss payroll social deductions; private health bills may be outside payroll."
},
"total_deductions": {
"type": "number",
"description": "Estimated annual tax plus employee social contributions/payroll deductions in the selected major currency."
},
"effective_rate": {
"type": "number",
"description": "Combined tax and social contribution burden as percentage points of gross income. Example: 37.7 means 37.7%."
},
"input_annual_gross": {
"type": "number",
"description": "Annual gross salary used for this country in the selected major currency. In local_median_gross mode this is the country-specific benchmark after currency conversion."
},
"input_currency": {
"type": "string",
"enum": [
"eur",
"usd",
"chf",
"cad",
"aud",
"gbp"
],
"description": "Currency code for the gross input and result values, in lower-case ISO style."
},
"comparison_basis": {
"type": "string",
"enum": [
"shared_gross",
"local_median_gross"
],
"description": "Comparison basis used for this country result."
},
"gross_source": {
"type": "string",
"description": "Source or mode that produced the gross input, such as shared_user_input for same-salary comparisons or country_median_gross_benchmark for local-market benchmarks."
}
},
"required": [
"country",
"net",
"tax",
"social_contributions",
"total_deductions",
"effective_rate",
"input_annual_gross",
"input_currency",
"comparison_basis"
]
}
}
},
"required": [
"source_url",
"visual_report",
"localized_cta",
"summary",
"calculated_at",
"contract_version",
"tax_data_version",
"method_version",
"orientation_note",
"assumptions",
"warnings",
"tax_year",
"results",
"comparison_basis",
"gross_inputs",
"ranking_by_net"
],
"additionalProperties": true,
"description": "Annual country comparison response. Amounts are returned in major currency units in the requested lower-case currency, not cents. Results are meant for cross-country comparison; use berechne for detailed single-country payroll output."
}커뮤니티
증거