Skip to main content
Every CBS calculator is the same thing exposed two ways, a REST resource and a widget, both running the same calculation.

One calculator, two front doors

  • REST resource, each calculator is an endpoint under /api/calculators/<calculator> (for example /api/calculators/salary). A GET returns the calculator’s field model; a POST runs a calculation.
  • Widget: the hosted widget for that calculator renders a UI and, under the hood, calls that same REST endpoint with your key.
Because both paths run the same calculator, the inputs and results are identical whichever you use. For the list of calculators and which paths support each, see Available calculators.

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.