Sales Tax Real-Time Identification and Computation
SutTax Determination provides automated identification and calculation of sales taxes for transactions associated with salable products. With tax complexity of ever-changing tax rules and rates, in-house sales tax system is hard to maintain and can be easily replaced by its real-time determination engine with comprehensive support for all jurisdictions and tax procedures.
Overview
Sales taxes are an important part of a sales transaction. Any tax determination errors can impact sales margins, cause tax liabilities, and potentially jurisdictions penalties and fines. A more accurate and transparent tax determination engine will greatly benefit retailers and other filers. Sellers can clearly understand tax ramifications before closing a transaction, causing tax optimization, risk reduction, and lower costs.Key Features
- Comprehensive Coverage - Full support of U.S. Federal and all 50 states including city and county jurisdictions Sales tax for salable products
- Tax Updates - Continually updated tax rules and rates
- Data Importing and Reporting - Flexible data import capabilities and audit support
- User Configurable Tax Rules and Reports - Custom tax calculation
- Error Reporting - Detailed tax calculation errors
- Seamless Integration - Full integration into ERP or financial system
Benefits
By integrating SutTax Determination to manage your sales & use tax filing processes, you’ll be able to:- Accuracy - Tax accuracy ensures compliance with tax rules and rates
- Reduce Costs - Reduce IT software and Tax Accounting costs
- Custom Rules and Rates - Tax rules and rates can be easily changed by tax analysts
- Gain Transparency - Identify data sources and get complete visibility to how calculation preformed
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.
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
Posthttps://www.developer.aviordata.net/1.0/tax/user/login.jsonHeaders: 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
Posthttps://www.developer.aviordata.net/1.0/tax/sut/getHeaders: 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
posthttps://www.developer.aviordata.net/1.0/tax/user/logout.jsonheaders: 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)