One calculator, two front doors
- REST resource, each calculator is an endpoint under
/api/calculators/<calculator>(for example/api/calculators/salary). AGETreturns the calculator’s field model; aPOSTruns a calculation. - Widget: the hosted widget for that calculator renders a UI and, under the hood, calls that same REST endpoint with your key.
The gross-to-net calculation
A calculator takes wages, jurisdictions, and filing details and computes federal, state, and local withholding plus payroll taxes. Each one decides which inputs to collect and which method to apply, then returns the result through the widget or the REST endpoint.Symmetry maintains the tax rules behind the calculators, so results stay current with tax changes without any work on your side.
From inputs to results
1
Collect inputs
Wages or rates, pay frequency, filing status, work and resident jurisdictions, and any calculator-specific fields (bonus amount, contribution percentage, and so on).
2
Apply the calculation method
Each calculator uses a specific withholding method: annualized, flat (supplemental), or current aggregation. See Calculation methods by calculator.
3
Run the calculation
The calculator computes federal, state, and local withholding plus Social Security and Medicare.
4
Return results
Gross pay, itemized taxes, deductions, and net pay, ready to display, store, or report on. See Request and response structure.
The same wages can produce different taxes and net pay across calculators, because each calculator uses a different method. This is expected.

