Calculate a gross-up payment
curl --request POST \
--url https://ste.symmetry.com/ste-hosted/v2/grossUp \
--header 'Authorization: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"GrossUpRequest": {
"netPay": 1000,
"regularWages": 0,
"wageType": "Regular",
"payCalc": {
"employeeID": "Employee 123",
"payrollRunParameters": {
"payDate": "2026-03-24",
"payPeriodsPerYear": 52,
"payPeriodNumber": 1
},
"wages": [
{
"locationCode": "00-000-0000",
"wageType": "Regular",
"calcMethodRegularWages": "Annualized",
"calcMethodSupplementalWages": "None",
"hours": 40,
"grossWages": 1000,
"mtdWages": 0,
"qtdWages": 0,
"ytdWages": 0
},
{
"locationCode": "04-000-0000",
"wageType": "Regular",
"calcMethodRegularWages": "Annualized",
"calcMethodSupplementalWages": "None",
"hours": 40,
"grossWages": 1000,
"mtdWages": 0,
"qtdWages": 0,
"ytdWages": 0
}
],
"taxJurisdictionParms": [
{
"uniqueTaxID": "00-000-0000-OLF-000",
"locationCode": "00-000-0000",
"isExempt": false,
"isResident": true,
"periodWH": 0,
"mtdWH": 0,
"qtdWH": 0,
"ytdWH": 0,
"roundResult": "No",
"autoAdjust": false,
"overrideRate": 0,
"overrideWageBase": 0,
"miscParameters": []
},
{
"uniqueTaxID": "04-000-0000-OLF-000",
"locationCode": "04-000-0000",
"isExempt": false,
"isResident": true,
"periodWH": 0,
"mtdWH": 0,
"qtdWH": 0,
"ytdWH": 0,
"roundResult": "No",
"autoAdjust": false,
"overrideRate": 0,
"overrideWageBase": 0,
"miscParameters": []
}
]
}
}
}
'import requests
url = "https://ste.symmetry.com/ste-hosted/v2/grossUp"
payload = { "GrossUpRequest": {
"netPay": 1000,
"regularWages": 0,
"wageType": "Regular",
"payCalc": {
"employeeID": "Employee 123",
"payrollRunParameters": {
"payDate": "2026-03-24",
"payPeriodsPerYear": 52,
"payPeriodNumber": 1
},
"wages": [
{
"locationCode": "00-000-0000",
"wageType": "Regular",
"calcMethodRegularWages": "Annualized",
"calcMethodSupplementalWages": "None",
"hours": 40,
"grossWages": 1000,
"mtdWages": 0,
"qtdWages": 0,
"ytdWages": 0
},
{
"locationCode": "04-000-0000",
"wageType": "Regular",
"calcMethodRegularWages": "Annualized",
"calcMethodSupplementalWages": "None",
"hours": 40,
"grossWages": 1000,
"mtdWages": 0,
"qtdWages": 0,
"ytdWages": 0
}
],
"taxJurisdictionParms": [
{
"uniqueTaxID": "00-000-0000-OLF-000",
"locationCode": "00-000-0000",
"isExempt": False,
"isResident": True,
"periodWH": 0,
"mtdWH": 0,
"qtdWH": 0,
"ytdWH": 0,
"roundResult": "No",
"autoAdjust": False,
"overrideRate": 0,
"overrideWageBase": 0,
"miscParameters": []
},
{
"uniqueTaxID": "04-000-0000-OLF-000",
"locationCode": "04-000-0000",
"isExempt": False,
"isResident": True,
"periodWH": 0,
"mtdWH": 0,
"qtdWH": 0,
"ytdWH": 0,
"roundResult": "No",
"autoAdjust": False,
"overrideRate": 0,
"overrideWageBase": 0,
"miscParameters": []
}
]
}
} }
headers = {
"Authorization": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
GrossUpRequest: {
netPay: 1000,
regularWages: 0,
wageType: 'Regular',
payCalc: {
employeeID: 'Employee 123',
payrollRunParameters: {payDate: '2026-03-24', payPeriodsPerYear: 52, payPeriodNumber: 1},
wages: [
{
locationCode: '00-000-0000',
wageType: 'Regular',
calcMethodRegularWages: 'Annualized',
calcMethodSupplementalWages: 'None',
hours: 40,
grossWages: 1000,
mtdWages: 0,
qtdWages: 0,
ytdWages: 0
},
{
locationCode: '04-000-0000',
wageType: 'Regular',
calcMethodRegularWages: 'Annualized',
calcMethodSupplementalWages: 'None',
hours: 40,
grossWages: 1000,
mtdWages: 0,
qtdWages: 0,
ytdWages: 0
}
],
taxJurisdictionParms: [
{
uniqueTaxID: '00-000-0000-OLF-000',
locationCode: '00-000-0000',
isExempt: false,
isResident: true,
periodWH: 0,
mtdWH: 0,
qtdWH: 0,
ytdWH: 0,
roundResult: 'No',
autoAdjust: false,
overrideRate: 0,
overrideWageBase: 0,
miscParameters: []
},
{
uniqueTaxID: '04-000-0000-OLF-000',
locationCode: '04-000-0000',
isExempt: false,
isResident: true,
periodWH: 0,
mtdWH: 0,
qtdWH: 0,
ytdWH: 0,
roundResult: 'No',
autoAdjust: false,
overrideRate: 0,
overrideWageBase: 0,
miscParameters: []
}
]
}
}
})
};
fetch('https://ste.symmetry.com/ste-hosted/v2/grossUp', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://ste.symmetry.com/ste-hosted/v2/grossUp",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'GrossUpRequest' => [
'netPay' => 1000,
'regularWages' => 0,
'wageType' => 'Regular',
'payCalc' => [
'employeeID' => 'Employee 123',
'payrollRunParameters' => [
'payDate' => '2026-03-24',
'payPeriodsPerYear' => 52,
'payPeriodNumber' => 1
],
'wages' => [
[
'locationCode' => '00-000-0000',
'wageType' => 'Regular',
'calcMethodRegularWages' => 'Annualized',
'calcMethodSupplementalWages' => 'None',
'hours' => 40,
'grossWages' => 1000,
'mtdWages' => 0,
'qtdWages' => 0,
'ytdWages' => 0
],
[
'locationCode' => '04-000-0000',
'wageType' => 'Regular',
'calcMethodRegularWages' => 'Annualized',
'calcMethodSupplementalWages' => 'None',
'hours' => 40,
'grossWages' => 1000,
'mtdWages' => 0,
'qtdWages' => 0,
'ytdWages' => 0
]
],
'taxJurisdictionParms' => [
[
'uniqueTaxID' => '00-000-0000-OLF-000',
'locationCode' => '00-000-0000',
'isExempt' => false,
'isResident' => true,
'periodWH' => 0,
'mtdWH' => 0,
'qtdWH' => 0,
'ytdWH' => 0,
'roundResult' => 'No',
'autoAdjust' => false,
'overrideRate' => 0,
'overrideWageBase' => 0,
'miscParameters' => [
]
],
[
'uniqueTaxID' => '04-000-0000-OLF-000',
'locationCode' => '04-000-0000',
'isExempt' => false,
'isResident' => true,
'periodWH' => 0,
'mtdWH' => 0,
'qtdWH' => 0,
'ytdWH' => 0,
'roundResult' => 'No',
'autoAdjust' => false,
'overrideRate' => 0,
'overrideWageBase' => 0,
'miscParameters' => [
]
]
]
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: <api-key>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://ste.symmetry.com/ste-hosted/v2/grossUp"
payload := strings.NewReader("{\n \"GrossUpRequest\": {\n \"netPay\": 1000,\n \"regularWages\": 0,\n \"wageType\": \"Regular\",\n \"payCalc\": {\n \"employeeID\": \"Employee 123\",\n \"payrollRunParameters\": {\n \"payDate\": \"2026-03-24\",\n \"payPeriodsPerYear\": 52,\n \"payPeriodNumber\": 1\n },\n \"wages\": [\n {\n \"locationCode\": \"00-000-0000\",\n \"wageType\": \"Regular\",\n \"calcMethodRegularWages\": \"Annualized\",\n \"calcMethodSupplementalWages\": \"None\",\n \"hours\": 40,\n \"grossWages\": 1000,\n \"mtdWages\": 0,\n \"qtdWages\": 0,\n \"ytdWages\": 0\n },\n {\n \"locationCode\": \"04-000-0000\",\n \"wageType\": \"Regular\",\n \"calcMethodRegularWages\": \"Annualized\",\n \"calcMethodSupplementalWages\": \"None\",\n \"hours\": 40,\n \"grossWages\": 1000,\n \"mtdWages\": 0,\n \"qtdWages\": 0,\n \"ytdWages\": 0\n }\n ],\n \"taxJurisdictionParms\": [\n {\n \"uniqueTaxID\": \"00-000-0000-OLF-000\",\n \"locationCode\": \"00-000-0000\",\n \"isExempt\": false,\n \"isResident\": true,\n \"periodWH\": 0,\n \"mtdWH\": 0,\n \"qtdWH\": 0,\n \"ytdWH\": 0,\n \"roundResult\": \"No\",\n \"autoAdjust\": false,\n \"overrideRate\": 0,\n \"overrideWageBase\": 0,\n \"miscParameters\": []\n },\n {\n \"uniqueTaxID\": \"04-000-0000-OLF-000\",\n \"locationCode\": \"04-000-0000\",\n \"isExempt\": false,\n \"isResident\": true,\n \"periodWH\": 0,\n \"mtdWH\": 0,\n \"qtdWH\": 0,\n \"ytdWH\": 0,\n \"roundResult\": \"No\",\n \"autoAdjust\": false,\n \"overrideRate\": 0,\n \"overrideWageBase\": 0,\n \"miscParameters\": []\n }\n ]\n }\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://ste.symmetry.com/ste-hosted/v2/grossUp")
.header("Authorization", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"GrossUpRequest\": {\n \"netPay\": 1000,\n \"regularWages\": 0,\n \"wageType\": \"Regular\",\n \"payCalc\": {\n \"employeeID\": \"Employee 123\",\n \"payrollRunParameters\": {\n \"payDate\": \"2026-03-24\",\n \"payPeriodsPerYear\": 52,\n \"payPeriodNumber\": 1\n },\n \"wages\": [\n {\n \"locationCode\": \"00-000-0000\",\n \"wageType\": \"Regular\",\n \"calcMethodRegularWages\": \"Annualized\",\n \"calcMethodSupplementalWages\": \"None\",\n \"hours\": 40,\n \"grossWages\": 1000,\n \"mtdWages\": 0,\n \"qtdWages\": 0,\n \"ytdWages\": 0\n },\n {\n \"locationCode\": \"04-000-0000\",\n \"wageType\": \"Regular\",\n \"calcMethodRegularWages\": \"Annualized\",\n \"calcMethodSupplementalWages\": \"None\",\n \"hours\": 40,\n \"grossWages\": 1000,\n \"mtdWages\": 0,\n \"qtdWages\": 0,\n \"ytdWages\": 0\n }\n ],\n \"taxJurisdictionParms\": [\n {\n \"uniqueTaxID\": \"00-000-0000-OLF-000\",\n \"locationCode\": \"00-000-0000\",\n \"isExempt\": false,\n \"isResident\": true,\n \"periodWH\": 0,\n \"mtdWH\": 0,\n \"qtdWH\": 0,\n \"ytdWH\": 0,\n \"roundResult\": \"No\",\n \"autoAdjust\": false,\n \"overrideRate\": 0,\n \"overrideWageBase\": 0,\n \"miscParameters\": []\n },\n {\n \"uniqueTaxID\": \"04-000-0000-OLF-000\",\n \"locationCode\": \"04-000-0000\",\n \"isExempt\": false,\n \"isResident\": true,\n \"periodWH\": 0,\n \"mtdWH\": 0,\n \"qtdWH\": 0,\n \"ytdWH\": 0,\n \"roundResult\": \"No\",\n \"autoAdjust\": false,\n \"overrideRate\": 0,\n \"overrideWageBase\": 0,\n \"miscParameters\": []\n }\n ]\n }\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://ste.symmetry.com/ste-hosted/v2/grossUp")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"GrossUpRequest\": {\n \"netPay\": 1000,\n \"regularWages\": 0,\n \"wageType\": \"Regular\",\n \"payCalc\": {\n \"employeeID\": \"Employee 123\",\n \"payrollRunParameters\": {\n \"payDate\": \"2026-03-24\",\n \"payPeriodsPerYear\": 52,\n \"payPeriodNumber\": 1\n },\n \"wages\": [\n {\n \"locationCode\": \"00-000-0000\",\n \"wageType\": \"Regular\",\n \"calcMethodRegularWages\": \"Annualized\",\n \"calcMethodSupplementalWages\": \"None\",\n \"hours\": 40,\n \"grossWages\": 1000,\n \"mtdWages\": 0,\n \"qtdWages\": 0,\n \"ytdWages\": 0\n },\n {\n \"locationCode\": \"04-000-0000\",\n \"wageType\": \"Regular\",\n \"calcMethodRegularWages\": \"Annualized\",\n \"calcMethodSupplementalWages\": \"None\",\n \"hours\": 40,\n \"grossWages\": 1000,\n \"mtdWages\": 0,\n \"qtdWages\": 0,\n \"ytdWages\": 0\n }\n ],\n \"taxJurisdictionParms\": [\n {\n \"uniqueTaxID\": \"00-000-0000-OLF-000\",\n \"locationCode\": \"00-000-0000\",\n \"isExempt\": false,\n \"isResident\": true,\n \"periodWH\": 0,\n \"mtdWH\": 0,\n \"qtdWH\": 0,\n \"ytdWH\": 0,\n \"roundResult\": \"No\",\n \"autoAdjust\": false,\n \"overrideRate\": 0,\n \"overrideWageBase\": 0,\n \"miscParameters\": []\n },\n {\n \"uniqueTaxID\": \"04-000-0000-OLF-000\",\n \"locationCode\": \"04-000-0000\",\n \"isExempt\": false,\n \"isResident\": true,\n \"periodWH\": 0,\n \"mtdWH\": 0,\n \"qtdWH\": 0,\n \"ytdWH\": 0,\n \"roundResult\": \"No\",\n \"autoAdjust\": false,\n \"overrideRate\": 0,\n \"overrideWageBase\": 0,\n \"miscParameters\": []\n }\n ]\n }\n }\n}"
response = http.request(request)
puts response.read_body{
"GrossUpResponse": {
"grossUpCalc": 1020.41,
"targetNetPay": 1000,
"payCalc": {
"employeeID": "Employee 123",
"benefitCalculation": [
{
"employerCalculatedAmt": 11.34,
"isCatchUp": false,
"locationCode": "00-000-0000",
"benefitAmt": 11.34,
"benefitReferenceCode": "401K",
"benefitType": "Benefit401K",
"wageType": "Regular"
}
],
"errorStatus": {
"errorCode": 0,
"errorMessage": "No error"
}
},
"transactionStamp": {
"calcDateTime": "2026-03-24T13:32:44Z",
"steVersion": "2026-R1",
"schemaVersion": "v2",
"totalTransactions": 1,
"failedTransactions": 0,
"transactionType": "GrossUp"
},
"errorStatus": {
"errorCode": 0,
"errorMessage": "No error"
}
}
}Calculate a gross-up payment
Compute the gross wages required for desired net pay amount.
POST
/
v2
/
grossUp
Calculate a gross-up payment
curl --request POST \
--url https://ste.symmetry.com/ste-hosted/v2/grossUp \
--header 'Authorization: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"GrossUpRequest": {
"netPay": 1000,
"regularWages": 0,
"wageType": "Regular",
"payCalc": {
"employeeID": "Employee 123",
"payrollRunParameters": {
"payDate": "2026-03-24",
"payPeriodsPerYear": 52,
"payPeriodNumber": 1
},
"wages": [
{
"locationCode": "00-000-0000",
"wageType": "Regular",
"calcMethodRegularWages": "Annualized",
"calcMethodSupplementalWages": "None",
"hours": 40,
"grossWages": 1000,
"mtdWages": 0,
"qtdWages": 0,
"ytdWages": 0
},
{
"locationCode": "04-000-0000",
"wageType": "Regular",
"calcMethodRegularWages": "Annualized",
"calcMethodSupplementalWages": "None",
"hours": 40,
"grossWages": 1000,
"mtdWages": 0,
"qtdWages": 0,
"ytdWages": 0
}
],
"taxJurisdictionParms": [
{
"uniqueTaxID": "00-000-0000-OLF-000",
"locationCode": "00-000-0000",
"isExempt": false,
"isResident": true,
"periodWH": 0,
"mtdWH": 0,
"qtdWH": 0,
"ytdWH": 0,
"roundResult": "No",
"autoAdjust": false,
"overrideRate": 0,
"overrideWageBase": 0,
"miscParameters": []
},
{
"uniqueTaxID": "04-000-0000-OLF-000",
"locationCode": "04-000-0000",
"isExempt": false,
"isResident": true,
"periodWH": 0,
"mtdWH": 0,
"qtdWH": 0,
"ytdWH": 0,
"roundResult": "No",
"autoAdjust": false,
"overrideRate": 0,
"overrideWageBase": 0,
"miscParameters": []
}
]
}
}
}
'import requests
url = "https://ste.symmetry.com/ste-hosted/v2/grossUp"
payload = { "GrossUpRequest": {
"netPay": 1000,
"regularWages": 0,
"wageType": "Regular",
"payCalc": {
"employeeID": "Employee 123",
"payrollRunParameters": {
"payDate": "2026-03-24",
"payPeriodsPerYear": 52,
"payPeriodNumber": 1
},
"wages": [
{
"locationCode": "00-000-0000",
"wageType": "Regular",
"calcMethodRegularWages": "Annualized",
"calcMethodSupplementalWages": "None",
"hours": 40,
"grossWages": 1000,
"mtdWages": 0,
"qtdWages": 0,
"ytdWages": 0
},
{
"locationCode": "04-000-0000",
"wageType": "Regular",
"calcMethodRegularWages": "Annualized",
"calcMethodSupplementalWages": "None",
"hours": 40,
"grossWages": 1000,
"mtdWages": 0,
"qtdWages": 0,
"ytdWages": 0
}
],
"taxJurisdictionParms": [
{
"uniqueTaxID": "00-000-0000-OLF-000",
"locationCode": "00-000-0000",
"isExempt": False,
"isResident": True,
"periodWH": 0,
"mtdWH": 0,
"qtdWH": 0,
"ytdWH": 0,
"roundResult": "No",
"autoAdjust": False,
"overrideRate": 0,
"overrideWageBase": 0,
"miscParameters": []
},
{
"uniqueTaxID": "04-000-0000-OLF-000",
"locationCode": "04-000-0000",
"isExempt": False,
"isResident": True,
"periodWH": 0,
"mtdWH": 0,
"qtdWH": 0,
"ytdWH": 0,
"roundResult": "No",
"autoAdjust": False,
"overrideRate": 0,
"overrideWageBase": 0,
"miscParameters": []
}
]
}
} }
headers = {
"Authorization": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
GrossUpRequest: {
netPay: 1000,
regularWages: 0,
wageType: 'Regular',
payCalc: {
employeeID: 'Employee 123',
payrollRunParameters: {payDate: '2026-03-24', payPeriodsPerYear: 52, payPeriodNumber: 1},
wages: [
{
locationCode: '00-000-0000',
wageType: 'Regular',
calcMethodRegularWages: 'Annualized',
calcMethodSupplementalWages: 'None',
hours: 40,
grossWages: 1000,
mtdWages: 0,
qtdWages: 0,
ytdWages: 0
},
{
locationCode: '04-000-0000',
wageType: 'Regular',
calcMethodRegularWages: 'Annualized',
calcMethodSupplementalWages: 'None',
hours: 40,
grossWages: 1000,
mtdWages: 0,
qtdWages: 0,
ytdWages: 0
}
],
taxJurisdictionParms: [
{
uniqueTaxID: '00-000-0000-OLF-000',
locationCode: '00-000-0000',
isExempt: false,
isResident: true,
periodWH: 0,
mtdWH: 0,
qtdWH: 0,
ytdWH: 0,
roundResult: 'No',
autoAdjust: false,
overrideRate: 0,
overrideWageBase: 0,
miscParameters: []
},
{
uniqueTaxID: '04-000-0000-OLF-000',
locationCode: '04-000-0000',
isExempt: false,
isResident: true,
periodWH: 0,
mtdWH: 0,
qtdWH: 0,
ytdWH: 0,
roundResult: 'No',
autoAdjust: false,
overrideRate: 0,
overrideWageBase: 0,
miscParameters: []
}
]
}
}
})
};
fetch('https://ste.symmetry.com/ste-hosted/v2/grossUp', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://ste.symmetry.com/ste-hosted/v2/grossUp",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'GrossUpRequest' => [
'netPay' => 1000,
'regularWages' => 0,
'wageType' => 'Regular',
'payCalc' => [
'employeeID' => 'Employee 123',
'payrollRunParameters' => [
'payDate' => '2026-03-24',
'payPeriodsPerYear' => 52,
'payPeriodNumber' => 1
],
'wages' => [
[
'locationCode' => '00-000-0000',
'wageType' => 'Regular',
'calcMethodRegularWages' => 'Annualized',
'calcMethodSupplementalWages' => 'None',
'hours' => 40,
'grossWages' => 1000,
'mtdWages' => 0,
'qtdWages' => 0,
'ytdWages' => 0
],
[
'locationCode' => '04-000-0000',
'wageType' => 'Regular',
'calcMethodRegularWages' => 'Annualized',
'calcMethodSupplementalWages' => 'None',
'hours' => 40,
'grossWages' => 1000,
'mtdWages' => 0,
'qtdWages' => 0,
'ytdWages' => 0
]
],
'taxJurisdictionParms' => [
[
'uniqueTaxID' => '00-000-0000-OLF-000',
'locationCode' => '00-000-0000',
'isExempt' => false,
'isResident' => true,
'periodWH' => 0,
'mtdWH' => 0,
'qtdWH' => 0,
'ytdWH' => 0,
'roundResult' => 'No',
'autoAdjust' => false,
'overrideRate' => 0,
'overrideWageBase' => 0,
'miscParameters' => [
]
],
[
'uniqueTaxID' => '04-000-0000-OLF-000',
'locationCode' => '04-000-0000',
'isExempt' => false,
'isResident' => true,
'periodWH' => 0,
'mtdWH' => 0,
'qtdWH' => 0,
'ytdWH' => 0,
'roundResult' => 'No',
'autoAdjust' => false,
'overrideRate' => 0,
'overrideWageBase' => 0,
'miscParameters' => [
]
]
]
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: <api-key>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://ste.symmetry.com/ste-hosted/v2/grossUp"
payload := strings.NewReader("{\n \"GrossUpRequest\": {\n \"netPay\": 1000,\n \"regularWages\": 0,\n \"wageType\": \"Regular\",\n \"payCalc\": {\n \"employeeID\": \"Employee 123\",\n \"payrollRunParameters\": {\n \"payDate\": \"2026-03-24\",\n \"payPeriodsPerYear\": 52,\n \"payPeriodNumber\": 1\n },\n \"wages\": [\n {\n \"locationCode\": \"00-000-0000\",\n \"wageType\": \"Regular\",\n \"calcMethodRegularWages\": \"Annualized\",\n \"calcMethodSupplementalWages\": \"None\",\n \"hours\": 40,\n \"grossWages\": 1000,\n \"mtdWages\": 0,\n \"qtdWages\": 0,\n \"ytdWages\": 0\n },\n {\n \"locationCode\": \"04-000-0000\",\n \"wageType\": \"Regular\",\n \"calcMethodRegularWages\": \"Annualized\",\n \"calcMethodSupplementalWages\": \"None\",\n \"hours\": 40,\n \"grossWages\": 1000,\n \"mtdWages\": 0,\n \"qtdWages\": 0,\n \"ytdWages\": 0\n }\n ],\n \"taxJurisdictionParms\": [\n {\n \"uniqueTaxID\": \"00-000-0000-OLF-000\",\n \"locationCode\": \"00-000-0000\",\n \"isExempt\": false,\n \"isResident\": true,\n \"periodWH\": 0,\n \"mtdWH\": 0,\n \"qtdWH\": 0,\n \"ytdWH\": 0,\n \"roundResult\": \"No\",\n \"autoAdjust\": false,\n \"overrideRate\": 0,\n \"overrideWageBase\": 0,\n \"miscParameters\": []\n },\n {\n \"uniqueTaxID\": \"04-000-0000-OLF-000\",\n \"locationCode\": \"04-000-0000\",\n \"isExempt\": false,\n \"isResident\": true,\n \"periodWH\": 0,\n \"mtdWH\": 0,\n \"qtdWH\": 0,\n \"ytdWH\": 0,\n \"roundResult\": \"No\",\n \"autoAdjust\": false,\n \"overrideRate\": 0,\n \"overrideWageBase\": 0,\n \"miscParameters\": []\n }\n ]\n }\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://ste.symmetry.com/ste-hosted/v2/grossUp")
.header("Authorization", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"GrossUpRequest\": {\n \"netPay\": 1000,\n \"regularWages\": 0,\n \"wageType\": \"Regular\",\n \"payCalc\": {\n \"employeeID\": \"Employee 123\",\n \"payrollRunParameters\": {\n \"payDate\": \"2026-03-24\",\n \"payPeriodsPerYear\": 52,\n \"payPeriodNumber\": 1\n },\n \"wages\": [\n {\n \"locationCode\": \"00-000-0000\",\n \"wageType\": \"Regular\",\n \"calcMethodRegularWages\": \"Annualized\",\n \"calcMethodSupplementalWages\": \"None\",\n \"hours\": 40,\n \"grossWages\": 1000,\n \"mtdWages\": 0,\n \"qtdWages\": 0,\n \"ytdWages\": 0\n },\n {\n \"locationCode\": \"04-000-0000\",\n \"wageType\": \"Regular\",\n \"calcMethodRegularWages\": \"Annualized\",\n \"calcMethodSupplementalWages\": \"None\",\n \"hours\": 40,\n \"grossWages\": 1000,\n \"mtdWages\": 0,\n \"qtdWages\": 0,\n \"ytdWages\": 0\n }\n ],\n \"taxJurisdictionParms\": [\n {\n \"uniqueTaxID\": \"00-000-0000-OLF-000\",\n \"locationCode\": \"00-000-0000\",\n \"isExempt\": false,\n \"isResident\": true,\n \"periodWH\": 0,\n \"mtdWH\": 0,\n \"qtdWH\": 0,\n \"ytdWH\": 0,\n \"roundResult\": \"No\",\n \"autoAdjust\": false,\n \"overrideRate\": 0,\n \"overrideWageBase\": 0,\n \"miscParameters\": []\n },\n {\n \"uniqueTaxID\": \"04-000-0000-OLF-000\",\n \"locationCode\": \"04-000-0000\",\n \"isExempt\": false,\n \"isResident\": true,\n \"periodWH\": 0,\n \"mtdWH\": 0,\n \"qtdWH\": 0,\n \"ytdWH\": 0,\n \"roundResult\": \"No\",\n \"autoAdjust\": false,\n \"overrideRate\": 0,\n \"overrideWageBase\": 0,\n \"miscParameters\": []\n }\n ]\n }\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://ste.symmetry.com/ste-hosted/v2/grossUp")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"GrossUpRequest\": {\n \"netPay\": 1000,\n \"regularWages\": 0,\n \"wageType\": \"Regular\",\n \"payCalc\": {\n \"employeeID\": \"Employee 123\",\n \"payrollRunParameters\": {\n \"payDate\": \"2026-03-24\",\n \"payPeriodsPerYear\": 52,\n \"payPeriodNumber\": 1\n },\n \"wages\": [\n {\n \"locationCode\": \"00-000-0000\",\n \"wageType\": \"Regular\",\n \"calcMethodRegularWages\": \"Annualized\",\n \"calcMethodSupplementalWages\": \"None\",\n \"hours\": 40,\n \"grossWages\": 1000,\n \"mtdWages\": 0,\n \"qtdWages\": 0,\n \"ytdWages\": 0\n },\n {\n \"locationCode\": \"04-000-0000\",\n \"wageType\": \"Regular\",\n \"calcMethodRegularWages\": \"Annualized\",\n \"calcMethodSupplementalWages\": \"None\",\n \"hours\": 40,\n \"grossWages\": 1000,\n \"mtdWages\": 0,\n \"qtdWages\": 0,\n \"ytdWages\": 0\n }\n ],\n \"taxJurisdictionParms\": [\n {\n \"uniqueTaxID\": \"00-000-0000-OLF-000\",\n \"locationCode\": \"00-000-0000\",\n \"isExempt\": false,\n \"isResident\": true,\n \"periodWH\": 0,\n \"mtdWH\": 0,\n \"qtdWH\": 0,\n \"ytdWH\": 0,\n \"roundResult\": \"No\",\n \"autoAdjust\": false,\n \"overrideRate\": 0,\n \"overrideWageBase\": 0,\n \"miscParameters\": []\n },\n {\n \"uniqueTaxID\": \"04-000-0000-OLF-000\",\n \"locationCode\": \"04-000-0000\",\n \"isExempt\": false,\n \"isResident\": true,\n \"periodWH\": 0,\n \"mtdWH\": 0,\n \"qtdWH\": 0,\n \"ytdWH\": 0,\n \"roundResult\": \"No\",\n \"autoAdjust\": false,\n \"overrideRate\": 0,\n \"overrideWageBase\": 0,\n \"miscParameters\": []\n }\n ]\n }\n }\n}"
response = http.request(request)
puts response.read_body{
"GrossUpResponse": {
"grossUpCalc": 1020.41,
"targetNetPay": 1000,
"payCalc": {
"employeeID": "Employee 123",
"benefitCalculation": [
{
"employerCalculatedAmt": 11.34,
"isCatchUp": false,
"locationCode": "00-000-0000",
"benefitAmt": 11.34,
"benefitReferenceCode": "401K",
"benefitType": "Benefit401K",
"wageType": "Regular"
}
],
"errorStatus": {
"errorCode": 0,
"errorMessage": "No error"
}
},
"transactionStamp": {
"calcDateTime": "2026-03-24T13:32:44Z",
"steVersion": "2026-R1",
"schemaVersion": "v2",
"totalTransactions": 1,
"failedTransactions": 0,
"transactionType": "GrossUp"
},
"errorStatus": {
"errorCode": 0,
"errorMessage": "No error"
}
}
}Authorizations
API key for authentication. Provide the raw key as the value of the Authorization header (no "Bearer" prefix).
Body
application/jsonapplication/xml
Show child attributes
Show child attributes
Was this page helpful?

