TobTax Developers

Tobacco Tax Development

Identification and computation of excise taxes in real-time for financial transactions involving tobacco products.

TobTax Determination integrates with existing financial, billing, e-commerce, or point of sale system to automate the process of identifying and computing indirect taxes on tobacco transactions. It automates the process of completing and electronically filing tobacco returns and schedules. It’s an easy to use, off-the-shelf tax solution for tobacco suppliers, distributors, and traders, with extensive support for both weight-based and valuation taxes, including: excise and sales & use taxes.

API Reference

API Description

API Description

Test Excise Tax Tobacco Request
Company : Company name
User Id : Company user id or company code
Invoice number : Invoice number
Invoice Date : Invoice date
Transaction number : Transaction number
Product Category : Predefined Category Code to classify the SKU by product type. "Cigarettes", "Moist Snuff", "Cigars", "Little Cigars", "Roll Your Own", "Chewing Tobacco", "Snuff", "Pipe Tobacco"
Product UPC : Industry standard UPC of the selling unit
Product SKU : Unique item code assigned exclusively for each product by the distributor
Product Description : Detailed description of the SKU. Must contain brand name and attributes of the item
Product Type : "All Natural Leaf", "None Tobacco Filler", "Other"
Product UOM : The unit in which the Item Type is sold such as "case", "pack", "pouch", "carton", "can"
Ship to name : Specific banner name of the customer receiving shipment
Ship to FEIN : Customer FEIN
Ship to address : Ship to address of the customer receiving shipment
Ship to city : City of the customer receiving shipment
Ship to county : County of the customer receiving shipment
Ship to state : State of the customer receiving shipment
Ship to zip code : Zip code of the customer receiving shipment
Ship to country : Country of the customer receiving shipment "US"
Ship to class of trade : Retailer, Distributor, Wholesaler,Consumer,Tribal,Military
Ship to permit number : Customer license number
Ship to tax number : Customer Tax identification
Ship to account number : Customer account number issued by jurisdiction like state, county, or city
Quantity : Total number of selling units
Unit price : Dollar amount charged for a particular SKU to a customer.
Taxable : Taxable amount
Currency : USD


Test Excise Tax Tobacco Response Success
Result code : Success
Jurisdiction : Jurisdiction type "state", "county", "city"
Jurisdiction name : Jurisdiction name "TX"
Jurisdiction tax rate : Jurisdiction tax rate "1.25"
Jurisdiction tax amount : Jurisdiction tax amount "3.35"


Test Excise Tax Tobacco 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

REST JSON API V1.5

Test Excise Tax Tobacco POST Request
{ // transactions
"company":"Tobacco Dist Inc.",
"invoice_number":"141826",
"invoice_date":"20150525",
"line_items":[
  {
    "transaction_number":"123",
    "product_category":"Cigars",
    "product_upc":"",
    "product_sku":"",
    "product_description":"",
    "product_type":"",
    "product_uom":"case",
    "ship_to_name":"Cash & Carry",
    "ship_to_fein":"123456789",
    "ship_to_address":"123 Palm Grove Ln",
    "ship_to_city":"Los Angeles",
    "ship_to_county":"Orange",
    "ship_to_state":"CA",
    "ship_to_zip":"90002",
    "ship_to_country":"USA",
    "ship_to_class_of_trade":"Wholesaler",
    "ship_to_permit_number":"LIC-960",
    "ship_to_tax_number":"123",
    "ship_to_account_number":"123",
    "quantity":"20",
    "unit_price":"3.99",
    "taxable":"3.99",
    "currency":"USD",
  }
]
}


Test Excise Tobacco Tax Response

{ // transactions
"company":"Tobacco Dist Inc."
"invoice_number":"141826",
"invoice_date":"20150525",
"line_items":[
  {
    "transaction_number":"123",
    "product_category":"Cigars",
    "product_upc":"",
    "product_sku":"",
    "product_description":"",
    "product_type":"",
    "product_uom":"case",
    "ship_to_name":"Cash & Carry",
    "ship_to_fein":"123456789",
    "ship_to_address":"123 Palm Grove Ln",
    "ship_to_city":"Los Angeles",
    "ship_to_county":"Orange",
    "ship_to_state":"CA",
    "ship_to_zip":"90002",
    "ship_to_country":"USA",
    "ship_to_class_of_trade":"Wholesaler",
    "ship_to_permit_number":"LIC-960",
    "ship_to_tax_number":"123",
    "ship_to_account_number":"123",
    "quantity":"20",
    "unit_price":"3.99",
    "taxable":"3.99",
    "currency":"USD",
    "result_code":"Success",
    "tax_results":[
            {
              "jurisdiction":"state",
              "jur_name":"CA",
              "jur_tax_rate":"27.3",
              "jur_tax_amount":"21.78"
            }
    ]
  }
]
}


Test Excise Tobacco 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/tob/get
Production: POST https://www.tax.aviordata.net/1.0/tax/tob/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/tob/get
Headers: Accept:application/json Content-type: application/json application/json
cookie: SSESS15015b0cac82dbe973e0c259d028a34f=u'INa40aCVAbcBKvF1ODyPJXulhrvPa4-
sqqKZOAdTnzo 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 token: u3FNNRkQRV_prmo5Cc3w3agfOyOhgWa0wyozltzwngE
response body: [true]

PHP Client

Client Sample

PHP
<?php
$ArrayOfLineItem
= array(
   
"transaction_number" => "123",
   
"product_category" => "Cigars",
   
"product_upc" => "681000",
   
"product_sku" => "681000",
   
"product_description" => "",
   
"product_type" => "",
   
"product_uom" => "case",
   
"ship_to_name" => "Cash & Carry",
   
"ship_to_fein" => "123456789",
   
"ship_to_address" => "123 Palm Grove Ln",
   
"ship_to_city" => "Los Angeles",
   
"ship_to_county" => "Orange",
   
"ship_to_state" => "CA",
   
"ship_to_zip" => "90002",
   
"ship_to_country" => "USA",
   
"ship_to_class_of_trade" => "Wholesaler",
   
"ship_to_permit_number" => "LIC-960",
   
"ship_to_tax_number" => "123",
   
"ship_to_account_number" => "123",
   
"carrier_name" => "DESERT REFINED",
   
"carrier_fein" => "860634977",
   
"manufacturer" => "",
   
"manufacturer_address" => "",   
   
"quantity" => "20",
   
"unit_price" => "3.99",
   
"taxable" => "3.99",
   
"currency" => "USD"
);
$ArrayOfLineItems = array($ArrayOfLineItem);

$Transaction = array(
  
"company" => "Tobacco Dist Inc.",
  
"invoice_number" => "141826",
  
"invoice_date" => "20150525",
  
"line_items" => $ArrayOfLineItems
);

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

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

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

// Will return the response, if false it print the response
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.'tob/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
{
    transaction_number = "123",
    product_category = "Cigars",
    product_upc = "681000",
    product_sku = "681000",
    product_description = "",
    product_type = "",
    product_uom = "case",
    ship_to_name = "Cash & Carry",
    ship_to_fein = "123456789",
    ship_to_address = "123 Palm Grove Ln",
    ship_to_city = "Los Angeles",
    ship_to_county = "Orange",
    ship_to_state = "CA",
    ship_to_zip = "90002",
    ship_to_country = "USA",
    ship_to_class_of_trade = "Wholesaler",
    ship_to_permit_number = "LIC-960",
    ship_to_tax_number = "123",
    ship_to_account_number = "123",
    carrier_name = "DESERT REFINED",
    carrier_fein = "860634977",
    manufacturer = "",
    manufacturer_address = "",
    quantity = "20",
    unit_price = "3.99",
    taxable = "3.99",
    currency = "USD"
};

var ArrayOfLineItems = new[]
{
    ArrayOfLineItem
};

var Transaction = new
{
    company = "Tobacco Dist Inc.",
    invoice_number = "141826",
    invoice_date = "20150525",
    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" => "Tobacco Dist Inc.",
        "invoice_number" => "141826",
        "invoice_date" => "20150525",
        "line_items" => [
            {
                "transaction_number" => "123",
                "product_category" => "cigars",
                "product_upc" => "681000",
                "product_sku" => "681000",
                "product_description" => "",
                "product_weight" => "2.0",
                "product_type" => "",
                "product_uom" => "case",
                "product_cost" => "2.90",
                "product_items" => "10",
                "ship_to_name" => "Cash & Carry",
                "ship_to_fein" => "123456789",
                "ship_to_address" => "123 Palm Grove Ln",
                "ship_to_city" => "Los Angeles",
                "ship_to_county" => "Orange",
                "ship_to_state" => "CA",
                "ship_to_zip" => "90002",
                "ship_to_country" => "USA",
                "ship_to_class_of_trade" => "Wholesaler",
                "ship_to_permit_number" => "LIC-960",
                "ship_to_tax_number" => "123",
                "ship_to_account_number" => "123",
                "carrier_name" => "DESERT REFINED",
                "carrier_fein" => "860634977",
                "manufacturer" => "",
                "manufacturer_address" => "",
                "quantity" => "20",
                "unit_price" => "3.99",
                "taxable" => "3.99",
                "currency" => "USD"
            }
        ]
    }
}.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)