---
title: "S-corp reasonable-comp / salary optimizer"
method: POST
path: "/v1/tax/s-corp-salary"
tags: ["Tax"]
---

# S-corp reasonable-comp / salary optimizer

`POST /v1/tax/s-corp-salary`

## Request

- Base URL: `https://api.numeratica.com`
- URL: `https://api.numeratica.com/v1/tax/s-corp-salary`
- Auth: one of:
  - HTTP bearer
  - API key in header `X-API-Key`

Finds the S-corporation owner-employee W-2 salary that maximizes after-tax income, trading the payroll tax on wages (6.2% OASDI to the year's wage base + 2.9% Medicare + 0.9% Additional Medicare) against the §199A pass-through deduction's 50%-of-W-2-wages limit and the reasonable-compensation floor. Each candidate salary is priced through the QBI-aware tax engine (threshold phase-in, wage/UBIA limit, SSTB phase-out, the 20%-of- taxable cap, and the OBBBA minimum). Returns the recommended salary and its full breakdown, plus the all-wages baseline and the saving. The only year-keyed datum is the OASDI wage base (grounded to SSA). Deterministic; not tax advice.

## Request body

- SCorpSalaryRequest
  - `filing_status` 'single' | 'mfj' | 'mfs' | 'hoh', required
  - `tax_year` 2025 | 2026, required
  - `business_net_income` number, required: Pass-through profit before owner comp + employer payroll tax.
  - `reasonable_comp_floor` number, required: Minimum defensible W-2 salary (IRS reasonable comp).
  - `other_income` number: Owner's other ordinary income (positions brackets + the §199A threshold).
  - `ubia` number: Unadjusted basis of qualified property (§199A alt limit).
  - `sstb` boolean: Specified service trade or business (deduction phases out above the range).
  - `state_tax_rate` number: Optional flat state rate on ordinary income.
  - `max_salary` number: Optional salary cap for the search (default = business_net_income).

## Response `200`

The recommended salary, its tax breakdown, and the saving vs all-wages

- SCorpSalaryResponse
  - `result_id` string
  - `engine_version` string
  - `inputs` SCorpSalaryRequest
    - `filing_status` 'single' | 'mfj' | 'mfs' | 'hoh', required
    - `tax_year` 2025 | 2026, required
    - `business_net_income` number, required: Pass-through profit before owner comp + employer payroll tax.
    - `reasonable_comp_floor` number, required: Minimum defensible W-2 salary (IRS reasonable comp).
    - `other_income` number: Owner's other ordinary income (positions brackets + the §199A threshold).
    - `ubia` number: Unadjusted basis of qualified property (§199A alt limit).
    - `sstb` boolean: Specified service trade or business (deduction phases out above the range).
    - `state_tax_rate` number: Optional flat state rate on ordinary income.
    - `max_salary` number: Optional salary cap for the search (default = business_net_income).
  - `result` object
    - `recommended_salary` number: The after-tax-maximizing W-2 salary.
    - `distribution` number: Pass-through paid out = net income − salary − employer payroll tax.
    - `qbi_deduction` number: §199A deduction at the recommended salary.
    - `employer_payroll_tax` number: Deductible; OASDI to the wage base + 1.45% Medicare.
    - `employee_payroll_tax` number: OASDI to the wage base + 1.45% + 0.9% Additional Medicare.
    - `total_payroll_tax` number
    - `income_tax` number: Federal income tax (QBI-aware).
    - `state_tax` number: Flat state rate × ordinary income (0 if unset).
    - `total_tax` number: Payroll + income + state.
    - `after_tax_income` number: Net income − total tax.
    - `all_wages_after_tax` number: Baseline: the whole net income paid out as W-2 wages.
    - `all_wages_total_tax` number
    - `savings_vs_all_wages` number: Recommended after-tax − all-wages after-tax.
    - `effective_tax_rate` number: total_tax / business_net_income.
    - `wage_base_used` number: The year's OASDI wage base.
  - `disclaimer` string

## Other responses

- `400`: Invalid request
- `401`: Missing or invalid API key.
- `405`: Method not allowed
- `429`: The key's per-minute request budget is exceeded. Retry after the delay in the Retry-After header.
- `503`: A dependency (e.g. the key store) is temporarily unavailable, or the request exceeded its compute deadline. Retryable.

---

[API](https://skmtc.dev/numeratica/apis/numeratica-financial-planning-calculations-api.md) · [All operations](https://skmtc.dev/numeratica/apis/numeratica-financial-planning-calculations-api/llms.txt) · [OpenAPI document](https://skmtc.dev/numeratica/apis/numeratica-financial-planning-calculations-api/revisions/075bcfbd1ebf?raw)
