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

# Hosted API vs. on-premise SDK

> Choosing between the STE Hosted API and the locally installed on-premise SDK.

The core Symmetry Tax Engine is available two ways: as a **hosted API** that Symmetry runs for you, or as an **on-premise SDK** that you install and run on your own systems. Both reach the same calculation engine — same tax tables, same logic, same results — so the choice comes down to *where the engine runs* and *how you want to operate it*.

<Info>
  Both options cover U.S. and Canadian payroll calculations. When Symmetry updates tax tables or rates, both reflect those changes — the hosted API is updated by Symmetry, and the on-premise SDK is updated when you download a new release.
</Info>

## The hosted API

The STE Hosted API is a REST service hosted by Symmetry. You send JSON requests to Symmetry's endpoints and receive calculation results back — there is nothing to install or maintain locally.

* Access is over `https` only, using an **API key** in the `Authorization` header. Symmetry provides a **staging** key when your trial begins and a **production** key once you license the STE.
* The staging base URL is `https://ste-staging.symmetry.com/ste-hosted/`, with a schema version and endpoint name appended (for example, `.../v1/locationTax`).
* Symmetry manages the servers, tax-table updates, and scaling.

**Best for:** teams that want the fastest path to production, minimal operational overhead, and no local infrastructure to manage.

To get started, see the [hosted API Quickstart](/ste/quickstarts/hosted-api-quickstart).

## The on-premise SDK

The on-premise SDK is the tax engine installed and running inside your own environment. You download the engine and a license file from Symmetry's Download Center and integrate it into your application through a native interface.

* Available for **C/C++**, **Java**, and **.NET**.
* An installation unzips into a single flat directory holding the native shared library, the tax database (`ste.db`), `ste.conf`, `versions.json`, and an `ste-interface-files` folder. A valid license must be present — either `ste-license.dat` in that directory or the `STE_LICENSE_KEY` environment variable. **The engine will not function without one.**
* You run the engine on your own hardware and control when to apply new releases.

**Best for:** teams that need the engine to run within their own infrastructure — for data residency, latency, offline operation, or control over update timing.

For platform requirements and sizing guidance, see [Platform and Language Support](/ste/overview/platform-and-language-support). To get started, choose your language quickstart:

<CardGroup cols={3}>
  <Card title="Java SDK" icon="java" href="/ste/quickstarts/java-sdk-quickstart" />

  <Card title=".NET SDK" icon="microsoft" href="/ste/quickstarts/dotnet-sdk-quickstart" />

  <Card title="C/C++ SDK" icon="c" href="/ste/quickstarts/c-sdk-quickstart" />
</CardGroup>

## At a glance

|                       | Hosted API                    | On-premise SDK                        |
| --------------------- | ----------------------------- | ------------------------------------- |
| **Where it runs**     | Symmetry's servers            | Your own hardware                     |
| **How you integrate** | REST / JSON over HTTPS        | Native C/C++, Java, or .NET interface |
| **Installation**      | None                          | Download engine + license file        |
| **Updates**           | Managed by Symmetry           | You download new releases             |
| **Credentials**       | Staging & production API keys | `ste-license.dat` license file        |
| **Coverage**          | US and Canada                 | US and Canada                         |

## Build once, switch deployment models

You don't have to commit to one model forever. If you build your integration against the STE's **JSON schema** — serializing your payroll data into the same request format the hosted API uses, and deserializing the response the same way — the on-premise SDK and the hosted API become largely interchangeable. Both accept the same request format and return the same results, so moving between them is mostly a matter of changing *where you point*: at an STE instance running on your own servers, or at Symmetry's hosted endpoint.

This flexibility is useful in several ways:

* **Start on one, move to the other.** Begin hosted for the fastest path to production, then move on-premise later if you want more control over performance, scalability, or update timing — or start on-premise and offload operations to hosted without rewriting your integration.
* **Run both if your architecture calls for it.** The hosted API is engineered for near-100% uptime, but some customers with the strictest availability requirements choose to run the on-premise SDK alongside it for added redundancy.

<Note>
  The hosted API and the on-premise SDK are licensed separately. Running both at once requires the appropriate license for each. See [Licensing](/ste/overview/licensing).
</Note>

## Licensing

Both options require a license from Symmetry — an API key for the hosted API and a license file for the on-premise SDK. See [Licensing](/ste/overview/licensing) for details.
