Skip to main content

Sales and Use Tax Determination

Sales Tax Determination

Connect your e-commerce system to SutTax Determination web services for easy addition of accurate sales tax to your transactions.
Sales Tax Determination

Sales Tax Real-Time Identification and Computation

SutTax Determination makes adding sales tax a breeze. It automates identification and calculation of sales taxes for transactions associated with all of your salable products. Tax rules and rates are complex and are constantly being updated, and keeping up with them is an exhaustive process. Replace your high-maintenance in-house sales tax with a real-time determination engine with comprehensive support for all jurisdictions and tax procedures.

Overview

Any sales tax determination error can negatively impact your bottom line by decreasing your sales margins, causing liabilities, or racking up potential penalties and fines. The addition of sales tax is a crucial part of every single business transaction, and you can have a more accurate and visible tax determination process using an automated system like SutTax determinations. Get an accurate sales tax determination before closing out each transaction and you’ll optimize your operations, lower risk, and best of all, lower your cost.
SutTax Determination Block Diagram
SutTax Determination easily integrates with any back-office accounting system to simplify and automate necessary items like invoices, sales and purchases orders. The management of software and the monitoring of changing tax rules can come at a high cost, but automating these processes can save you money and time. With on-going timely tax rule and rate updates, SutTax Determination guarantees compliance accuracy. With effortlessly calculated sales tax amounts automatically added during each purchase, your customer service teams will spend less time answering questions and correcting mistakes. Automating your tax determination can support and enhance multiple departments across your business.

Key Features

  • Complete Coverage – Get full support in all 50 states including city and county jurisdictions Sales tax for salable products
  • Regular Updates – Continual updated tax rules and rates in real time
  • Data Collecting and Reporting – Get flexible data import capabilities and audit support for all your tax processes.
  • Configurable Tax Rules and Reports – Users can custom tax calculation to fit their needs.
  • Error Notifications – Get a detail report on tax calculation errors
  • Smooth and Effective Integration – Benefit from seamless integration into ERP or your financial system

Benefits

By integrating SutTax Determination to manage your sales & use tax filing processes, you’ll be able to:
  1. Accurately ensure compliance with tax rules and rates
  2. Reduce costs by eliminating the need for IT software and Tax Accounting services
  3. Customize Rules and Rates and get access to easy changes by tax analysts
  4. Ensure transparency through identifying data sources and have complete visibility to how calculations are preformed

Sales Tax Development

Identification and computation of sales taxes in real-time for financial transactions involving taxable products.
SutTax Determination integrates with existing financial, billing, e-commerce, or point of sale system to automate the process of identifying and computing sales taxes on taxable transactions. It automates the process of completing and electronically filing sales & use tax returns and schedules. It’s an easy to use, off-the-shelf tax solution for retailers, distributors, and other sellers, with extensive support for sales & use taxes.

Test Sales Tax Request

Company : Company name
User Id : Company user id or company code
Transaction number : Invoice number
Transaction Date : Invoice date
Street : Address of origin/destination
City : City of origin/destination 
County : County of origin/destination 
State : State of origin/destination 
Zip code : Zip code of origin/destination 
Zip plus : Zip extension of origin/destination
SKU : Unique item code assigned exclusively for each product by the distributor
Amount : Dollar amount charged for a particular SKU to a customer.
Discount : Discount amount
Shipping : Shipping amount for the order

Test Sales Tax Response Success

Result code : Success
Jurisdiction : Jurisdiction type "state", "county", "city"
Jurisdiction name : Jurisdiction name "TX"
Jurisdiction tax rate : Jurisdiction tax rate "8.25"
Jurisdiction tax amount : Jurisdiction tax amount "3.35"

Test Sales Tax Response Error

Result code : Error, Warning, Exception
Summary : State unavailable or incorrect format
Details : State must be two character state abbreviation
Refer to field : ship_to_state
Severity : Error, Warning, Exception

REST JSON API V1.5

Test Sales Tax POST Request

  {
    "company":"Product Dist Inc.",
    "transaction_number":"123",
    "transaction_date":"20160623",
    "origin_street":"5904 N. MacArthur",
    "origin_city":"Irving",
    "origin_county":"Dallas",
    "origin_state":"TX",
    "origin_zip":"75038",
    "origin_plus":"1234",
    "destination_address":"123 Palm Grove Ln",
    "destination_city":"Los Angeles",
    "destination_county":"Los Angeles",
    "destination_state":"CA",
    "destination_zip":"90002",
    "destination_zip_plus":"1234",
    "shipping":"4.50",
    "line_items":[
       {
          "number":"123",
          "sku":"12345",
          "tax_code":"20070",
          "amount":"11.50",
          "discount":"0.50",
       }
    ]
  }


Test Sales Tax Response

{ // transactions
"company":"Product Dist Inc."
"invoice_number":"141826",
"invoice_date":"20150525",
"line_items":[
  {
    "transaction_date":"20150523",
    "transaction_number":"123",
    "origin_street":"5904 N. MacArthur",
    "origin_city":"Irving",
    "origin_county":"Dallas",
    "origin_state":"TX",
    "origin_zip":"75038",
    "origin_zip_plus":"5001",
    "destination_address":"123 Palm Grove Ln",
    "destination_city":"Los Angeles",
    "destination_county":"Los Angeles",
    "destination_state":"CA",
    "destination_zip":"90002",
    "destination_zip_plus":"1234",
    "shipping":"4.50",
    "line_items":[
       {
          "sku":"12345",
          "tax_code":"20070",
          "amount":"11.50",
          "discount":"0.50",
          "result_type":"Success",
          "taxibility_code":"Taxable",
          "result_code":"Success",
          "tax_results":[ 
            {
              "jurisdiction":"state",
              "jur_name":"CA",
              "jur_tax_type":"sales",
              "juris_tax_rate":"9.0",
              "jur_tax_amount":'0.99"
            }
          ]
       }
    ]
  }
]
}

Test Sales Tax Error Messages

{
    "result_code":"Error",
    "messages":[
        {
            "summary":"State unavailable or incorrect format",
            "details":"State must be two character state abbreviation",
            "refer_to_field":"ship_to_state",
            "severity":"Error"
        }
    ]
}

End Point

URL AND METHOD

Development: POST https://www.developer.aviordata.net/1.0/tax/sut/get Production: POST https://www.tax.aviordata.net/1.0/tax/sut/get

LOGIN

Post
https://www.developer.aviordata.net/1.0/tax/user/login.json
Headers: Accept:application/json Content-type: application/json Body: {"username":"avior", "password":"1234"} RESPONSE: {'session_name': 'SSESS15015b0cac82dbe973e0c259d028a34f', 'sessid': u'INa40aCVAbcBKvF1ODyPJXulhrvPa4-sqqKZOAdTnzo', 'token': u'u3FNNRkQRV_prmo5Cc3w3agfOyOhgWa0wyozltzwngE'}

REQUEST

Post
https://www.developer.aviordata.net/1.0/tax/sut/get
Headers: Accept:application/json Content-type: application/json application/json cookie: SSESS15015b0cac82dbe973e0c259d028a34f=u'INa40aCVAbcBKvF1ODyPJXulhrvPa4- sqqKZOAdTnzo x-csrf-token: u3FNNRkQRV_prmo5Cc3w3agfOyOhgWa0wyozltzwngE Body: {"Transaction":{ //transactions ...}} RESPONSE: {"Transaction":{ //transactions ,"result_code":"Success", "tax_results":[ {...} ] }} or {"Transaction":{ //transactions ,"result_code":"Error", "messages":[ {...} ] }}

LOGOUT

post
https://www.developer.aviordata.net/1.0/tax/user/logout.json
headers: Accept:application/json Content-type: application/json application/json cookie: SSESS15015b0cac82dbe973e0c259d028a34f=u'INa40aCVAbcBKvF1ODyPJXulhrvPa4- sqqKZOAdTnzo x-csrf-token: u3FNNRkQRV_prmo5Cc3w3agfOyOhgWa0wyozltzwngE response body: [true]

Client Sample

PHP

 "123",
    "sku" => "1234",
    "tax_code" => "0",
    "amount" => "11.50",
    "discount" => "1.50",
);
    
$ArrayOfLineItems = array($ArrayOfLineItem);

$Transaction = array(
   "company" => "Product Dist Inc.",
   "transaction_number" => "141826",
   "transaction_date" => "20160525",
   "origin_street" => "5904 N. MacArthur",
   "origin_city" => "Irving",
   "origin_county" => "Dallas",
   "origin_state" => "TX",
   "origin_zip" => "75038",
   "origin_plus" => "5001",
   "destination_address" => "123 Palm Grove Ln",
   "destination_city" => "los angeles",
   "destination_county" => "los angeles",
   "destination_state" => "CA",
   "destination_zip" => "90002",
   "destination_zip_plus" => "1234",
   "shipping" => "4.50",
   "line_items" => $ArrayOfLineItems
);

$data = array("transaction" => $Transaction);

//API Url
$url = 'https://www.developer.aviordata.net/1.0/tax/';

//Initiate cURL.
$ch = curl_init($url.'user/login.json');
curl_setopt($ch, CURLOPT_VERBOSE, true);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$jsonData = array(
    'username' => 'avior',
    'password' => '1234'
);

//Encode the array into JSON.
$jsonDataEncoded = json_encode($jsonData);
 
//Tell cURL that we want to send a POST request.
curl_setopt($ch, CURLOPT_POST, 1);
 
//Attach our encoded JSON string to the POST fields.
curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonDataEncoded);
 
//Set the content type to application/json
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json','accept:application/json','Connection: keep-alive'));
 
//Execute the request
$result = curl_exec($ch);
$resp = json_decode($result, true);

curl_setopt($ch, CURLOPT_URL, $url.'sut/get');
$DataEncoded = json_encode($data);
curl_setopt($ch, CURLOPT_POSTFIELDS, $DataEncoded);
$session_name = $resp['session_name'];
$sessid = $resp['sessid'];
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json','accept:application/json','Connection: keep-alive','X-CSRFToken: '.$resp['token'],'Cookie: '.$session_name.'='.$sessid));

$result = curl_exec($ch);
print_r($result);

?>

Client Sample

C#

var ArrayOfLineItem = new
{
    number = "123",
    sku = "1234",
    tax_code = "0",
    amount = "11.50",
    discount = "1.50",
};

var ArrayOfLineItems = new[]
{
    ArrayOfLineItem
};

var Transaction = new
{
   company = "Product Dist Inc.",
   transaction_number = "141826",
   transaction_date = "20160525",
   origin_street = "5904 N. MacArthur",
   origin_city = "Irving",
   origin_county = "Dallas",
   origin_state = "TX",
   origin_zip = "75038",
   origin_plus = "5001",
   destination_address = "123 Palm Grove Ln",
   destination_city = "los angeles",
   destination_county = "los angeles",
   destination_state = "CA",
   destination_zip = "90002",
   destination_zip_plus = "1234",
   shipping = "4.50",
   line_items = ArrayOfLineItems
};

var data = new
{
    transaction = Transaction,
};

// login request
var login = new
{
    username = "avior",
    password = "1234"
};
var api_url = "https://www.developer.aviordata.net/1.0/tax/"

var request = (HttpWebRequest)WebRequest.Create(api_url + "user/login.json");
request.ContentType = "application/json";
request.Accept = "application/json";
request.Method = "POST";

using (var streamWriter = new StreamWriter(request.GetRequestStream()))
{
    string json = new JavaScriptSerializer().Serialize(login);
    streamWriter.Write(json);
}

// login response
var response = (HttpWebResponse)request.GetResponse();
using (var streamReader = new StreamReader(response.GetResponseStream()))
{
    var result = streamReader.ReadToEnd();
    var jss = new JavaScriptSerializer();
    var resp = jss.Deserialize>(result);
}

var token = resp["token"].ToString();
var session_name = resp["session_name"].ToString();
var sessid = resp["sessid"].ToString();

// tax request
var request = (HttpWebRequest)WebRequest.Create(api_url + "sut/get");
request.ContentType = "application/json";
request.Method = "POST";
request.Headers["x-csrf-token"] = token;
request.Headers["cookie"] = session_name + "=" + session_id;

using (var streamWriter = new StreamWriter(request.GetRequestStream()))
{
    string json = new JavaScriptSerializer().Serialize(data);
    streamWriter.Write(json);
}

// tax response
var response = (HttpWebResponse)request.GetResponse();
using (var streamReader = new StreamReader(response.GetResponseStream()))
{
    var result = streamReader.ReadToEnd();
    var jss = new JavaScriptSerializer();
    var resp = jss.Deserialize>(result);
}
var result_code = resp["transaction"]["line_items"][0]["result_code"].ToString();
if (result_code == "Success")
{
    Console.WriteLine(result_code);
}

// logout
var logout = new
{
};

var request = (HttpWebRequest)WebRequest.Create(api_url + "user/logout.json");
request.ContentType = "application/json";
request.Method = "POST";
request.Headers["x-csrf-token"] = token;
request.Headers["cookie"] = session_name + "=" + session_id;

using (var streamWriter = new StreamWriter(request.GetRequestStream()))
{
    string json = new JavaScriptSerializer().Serialize(data);
    streamWriter.Write(json);
}



Client Sample

Ruby

require 'net/http'
require 'json'
require 'uri'

Data = {
    "transaction" => {
        "company" => "Product Dist Inc.",
        "transaction_number' => "141826",
        "transaction_date" => "20160525",
        "origin_street" => "5904 N. MacArthur",
        "origin_city" => "Irving",
        "origin_county" => "Dallas",
        "origin_state" => "TX",
        "origin_zip" => "75038",
        "origin_plus" => "5001",
        "destination_address" => "123 Palm Grove Ln",
        "destination_city" => "los angeles",
        "destination_county" => "los angeles",
        "destination_state" => "CA",
        "destination_zip" => "90002",
        "destination_zip_plus" => "1234",
        "shipping" => "4.50",
        line_items => [
            {
               "number" => "123",
               "sku" => "1234",
               "tax_code" => "0",
               "amount" => "11.50",
               "discount" => "1.50",

            }
        ]
     }
}.to_json


login = {
    "username" => "avior",
    "password" => "1234"
}.to_json

logout = {
}.to_json

api_url = "https://www.developer.aviordata.net/1.0/tax/"

# login request
uri = URI.parse(api_url + "user/login.json")
http = Net::HTTP.new(uri.host, uri.port)
header = {
    'Content-Type' => 'application/json',
    'Accept' => 'application/json'
};
request = Net::HTTP::Post.new(
                              uri.request_uri,
                              header
)
request.body = json
response = http.request(request)

# login response
resp = response.body
puts(resp)
rdata = JSON.parse(resp)
token = rdata['token']
session_name = rdata['session_name']
sessid = rdata['sessid']

# tax request
uri = URI.parse(api_url + "sut/get")
http = Net::HTTP.new(uri.host, uri.port)
header['x-csrf-token'] = token;
header['cookie'] = cookie;
request = Net::HTTP::Post.new(
                              uri.request_uri,
                              header
)
request.body = json
response = http.request(request)

# tax response
resp = response.body
puts(resp)
rdata = JSON.parse(resp)
result_code = rdata["transaction"]["line_items"][0]["result_code"]
if result_code == 'Success'
    puts 'result: '+result_code
end

# logout request
uri = URI.parse(api_url + "user/logout.json")
http = Net::HTTP.new(uri.host, uri.port)
request = Net::HTTP::Post.new(
                              uri.request_uri,
                              header
)
request.body = json
response = http.request(request)