SutTax Developers

Sales & Use 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.

API Description

SutTax API Description

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

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 & Use 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

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': 'SSESS15015b0cac82dbe973e0c259d028a34g', 'sessid':
u'INa40aCVAbcBKvF1ODyPJXulhrvPa4-sqqKZOAdTnzk', 'token':
u'u3FNNRkQRV_prmo5Cc3w3agfOyOhgWa0wyozltzwngL'}

REQUEST

Post https://www.developer.aviordata.net/1.0/tax/sut/get
Headers: Accept:application/json Content-type: application/json application/json
cookie: SSESS15015b0cac82dbe973e0c259d028a34g=u'INa40aCVAbcBKvF1ODyPJXulhrvPa4-
sqqKZOAdTnzk token: u3FNNRkQRV_prmo5Cc3w3agfOyOhgWa0wyozltzwngL
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: SSESS15015b0cac82dbe973e0c259d028a34g=u'INa40aCVAbcBKvF1ODyPJXulhrvPa4-
sqqKZOAdTnzk token: u3FNNRkQRV_prmo5Cc3w3agfOyOhgWa0wyozltzwngL
response body: [true]

PHP Client

Client Sample

PHP
<?php
$ArrayOfLineItem
= array(
   
"number" => "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);

?>

C# Client

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<Dictionary<string, dynamic>>(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 + "tob/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<Dictionary<string, dynamic>>(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);
}

Ruby Client

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 + "tob/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)