> ## Documentation Index
> Fetch the complete documentation index at: https://docs.symmetry.com/llms.txt
> Use this file to discover all available pages before exploring further.

# What is the Symmetry Tax Engine?

> Precise federal, state, and local payroll tax calculations for the U.S. and Canada.

The Symmetry Tax Engine (STE) is a payroll tax calculation engine for the United States and Canada. Provide an employee's addresses, wages, and tax form elections, and the STE determines which taxes apply and calculates the precise federal, state, and local withholding for both the employee and the employer.

The STE always calculates using the tax rules in effect for the **pay date you provide**, so results are correct across current, historical, retroactive, and off-cycle payrolls — not just today's rates. Symmetry keeps the underlying rates and rules current as tax law changes, so you receive these updates without changing your integration code.

## What the STE calculates

The STE calculates employee and employer taxes across every level of U.S. and Canadian payroll:

<Columns cols={2}>
  <Card title="Federal (U.S.)">
    Federal income tax (FIT), Social Security and Medicare (FICA), Additional Medicare, federal employer taxes (FUTA), and railroad retirement taxes (Employer RRTA Tier I and Tier II).
  </Card>

  <Card title="State">
    State income tax (SIT), state unemployment (SUI/SUTA) and surcharges, and disability/paid-leave programs (SDI, PFL/FLI) — for all 50 states, DC, and U.S. territories.
  </Card>

  <Card title="Local">
    City, county, school-district, and municipal taxes — including Pennsylvania EIT/LST, Ohio JEDDs, and other locals.
  </Card>

  <Card title="Canada">
    Federal and provincial income tax, CPP/QPP, and EI, calculated through the same engine and interfaces.
  </Card>
</Columns>

It also handles complex withholding scenarios, including [**pre-tax and post-tax benefits**](/ste/benefits/overview) (401(k), Section 125, HSA, and more), [**imputed income**](/ste/benefits/imputed-income), [**supplemental wages**](/ste/core-concepts/wage-types), [**multi-state and reciprocal scenarios**](/ste/taxes/state/multi-state-sit-withholding), [**nonresident certificates**](/ste/core-concepts/reciprocity-and-nonresident-certificates), and [**gross-up calculations**](/ste/calculation-walkthroughs/gross-up).

<Note>
  **Multi-state withholding.** The STE automatically handles multi-state withholding scenarios, including resident and nonresident taxation, reciprocity agreements, credits for taxes paid to other states, and courtesy withholding. See [Multi-state SIT withholding](/ste/taxes/state/multi-state-sit-withholding).
</Note>

For a full breakdown of the jurisdictions and tax types supported, see [Tax Coverage](/ste/overview/coverage).

## How the STE works

Using the STE — whether through the hosted API or the on-premise SDK — comes down to two setup steps and the calculation itself:

1. **Find location codes.** Convert the employee's home and work addresses into location codes using the Symmetry Location Service (SLS).
2. **Find applicable taxes.** Use those location codes to ask the STE which taxes potentially apply and what details each one needs. Each is identified by a unique tax ID.
3. **Calculate taxes.** For each payroll run, set the taxes up with wages, benefits, and the details you collected (like W-4 filing status), then compute withholding for both employee and employer.

Steps 1 and 2 are per employee, not per paycheck — redo them when an address changes and store the results in between.

For the full calculation model — including the four ideas it rests on — see [How the STE Works](/ste/core-concepts/how-it-works) and [Locations and Unique Tax IDs](/ste/core-concepts/locations-and-unique-tax-ids).

## Stateless by design

The engine is **stateless**: every call is fully self-contained, retaining no employee data or session between calculations. You supply all the inputs, you get back the amounts — which keeps the engine easy to scale and safe to call concurrently at high volume.

## Next steps

<CardGroup cols={2}>
  <Card title="Ways to use the STE" icon="list-check" href="/ste/overview/ways-to-use">
    Explore the interfaces available for accessing the engine.
  </Card>

  <Card title="Hosted API vs. on-premise SDK" icon="scale-balanced" href="/ste/overview/hosted-vs-on-premise">
    Decide between the hosted API and the locally installed SDK.
  </Card>

  <Card title="Hosted API quickstart" icon="cloud" href="/ste/quickstarts/hosted-api-quickstart">
    Run your first calculation against the hosted API.
  </Card>

  <Card title="SDK quickstarts" icon="code" href="/ste/quickstarts/java-sdk-quickstart">
    Get started with the Java, .NET, or C/C++ SDK.
  </Card>
</CardGroup>
