The workflow
Location and tax resolution come first — converting addresses into location codes and querying the STE for the applicable Unique Tax IDs. That groundwork, and the model behind it, is covered in How the STE Works. This page picks up from there, at the configure-then-calculate phase.1
Configure the calculation
Set up everything the engine needs for the paycheck:
- Wages by wage type, tied to location codes
- Tax jurisdictions (the tax IDs to compute, plus per-tax options such as exemptions, residency, and year-to-date amounts)
- Benefit contributions and imputed income that affect withholding
- Engine options and the payroll run parameters (pay date, pay periods per year, pay period number)
2
Calculate and read results
Run the calculation. Retrieve the amount withheld for each tax, along with the gross, subject, and taxable wage amounts, and use those values in your system to determine the employee’s net pay.
Two ways to configure
Hosted Web API
Configuration and calculation happen in a single request: you build a JSON payload describing the full scenario and POST it to the engine, then read the response.
On-Premise SDK
You can build up the configuration with the SDK’s setter methods, or send the same JSON request body used by the Web API directly to your local installation.
Sending JSON to the on-premise SDK
The STE Web API uses JSON objects to communicate with Symmetry’s hosted servers. The same payloads can be sent to a local installation of the on-premise SDK, and you’ll receive JSON responses just like those from the Web API. The key difference is headers: payloads sent to the on-premise SDK have no headers. You send only the request body — beginning with the opening brace and ending with the closing brace. A Web API request includes headers like the following, which you remove for the SDK:jsonStringIN(orjsonIN) — the body of the request.validateJSON— whether the STE validates the request against the schema.schemaVersion— which version of the STE API you’re using ("v1","v2", etc.). Must use a lowercasev.
Error response — your code must be able to handle that. Possible response types are: PayCalc, LocationCode, JurisdictionData, SetTaxList, TaxIDList, GrossUp, GetSchema, BenefitStatus, AccountInfo, and Error (Java and .NET also include Unknown).
- C/C++
- Java
- .NET

