> ## 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.

# How the STE works

> The STE calculation model from address to withholding, end to end.

The Symmetry Tax Engine (STE) turns an employee's addresses, wages, and pay details into the exact payroll taxes to withhold for a given paycheck. Whether you use the hosted API or the on-premise SDK, the model is the same: resolve locations and discover which taxes apply once per employee, then compute withholding for each paycheck.

## The calculation model

At the highest level, using the STE has three parts.

<Steps>
  <Step title="Find location codes">
    Before the STE can do anything with an employee's home and work addresses, those addresses must be converted into usable [location codes](/ste/core-concepts/locations-and-unique-tax-ids) using the Symmetry Location Service (SLS).

    Location codes change infrequently, so to maximize your annual allotment of SLS calls, store the codes locally within your system and only refresh them at regular intervals or whenever an employee changes addresses.
  </Step>

  <Step title="Find applicable taxes">
    Once you have the location codes for an employee's home and work addresses, query the STE for a list of potentially applicable taxes. Each tax is identified by a [Unique Tax ID](/ste/core-concepts/locations-and-unique-tax-ids).

    The engine also tells you whether any additional information about the employee or employer is needed to compute a tax. For example, federal income tax (FIT) can't be calculated without first knowing the filing status the employee selected on their Form W-4.
  </Step>

  <Step title="Calculate taxes">
    With the relevant location codes, tax IDs, and any required additional information in hand, you set up and compute the taxes for the employee and employer for the paycheck.

    During setup you also indicate any benefit contributions, imputed income, or other items that affect withholding. After running the calculation, retrieve the amount withheld for each tax and use those amounts in your system to determine the employee's net pay.
  </Step>
</Steps>

## Four ideas the model rests on

If you internalize four things about the engine, the rest of the documentation follows from them.

<CardGroup cols={2}>
  <Card title="The same gross wages produce a different taxable amount for every tax" href="/ste/core-concepts/wages-gross-subject-and-taxable">
    A \$3,000 paycheck is not \$3,000 of taxable wages. Each tax applies its own exclusions, so a 401(k) deferral that reduces federal income tax may leave Social Security untouched.
  </Card>

  <Card title="Location determines which taxes apply" href="/ste/core-concepts/locations-and-unique-tax-ids">
    Addresses become location codes, location codes yield the applicable Unique Tax IDs, and results come back tied to those same IDs.
  </Card>

  <Card title="Discover the taxes and their inputs, then calculate" href="/ste/core-concepts/configure-then-calculate">
    Ask the engine which taxes apply and what each one needs. Don't hardcode a tax list or a set of parameters — both change without warning.
  </Card>

  <Card title="Every calculation is dated" href="/ste/configuration/pay-date-and-pay-periods">
    The pay date selects which rules apply, so recalculating an old period returns the rules in effect then, not today's.
  </Card>
</CardGroup>

Tax rates and rules reach you as data on a regular cadence rather than through changes to your integration: Hosted API clients pick them up automatically, and on-premise clients apply them with the monthly tax library update. When a state changes a rate, your code stays as it is. This is what makes discovering taxes at runtime worthwhile — the engine always has the current rules, so asking it is more reliable than maintaining your own list. See [Tax data updates and versioning](/ste/operations/tax-data-updates-and-versioning).

## Next steps

Once you're comfortable with the model, learn how setup works in practice and run your first calculation.

<CardGroup cols={2}>
  <Card title="Configure, then calculate" href="/ste/core-concepts/configure-then-calculate">
    The setup-then-run workflow the STE uses for every calculation.
  </Card>

  <Card title="Quickstarts" href="/ste/quickstarts/hosted-api-quickstart">
    Step-by-step guides for running your first payroll calculation.
  </Card>
</CardGroup>
