Skip to main content

Beverage Alcohol Tax Determination

Beverage Alcohol Tax Determination

Add accurate beverage alcohol excise tax to your transactions by connecting your e-commerce system to AlcTax Determination web services.
Alcohol Tax Determination

Alcohol Excise Tax Real-Time Identification and Computation

Avior’s Alcohol Tax Determination (Avior AlcTax-D) is a tax determination engine that small, mid-size, and large companies trust to automatically identify and calculate indirect taxes for alcohol-related transactions. Tax regulations and rates applied to alcohol products are continually changing, which is why in-house alcohol tax systems are so tedious to maintain. With our easy integration, businesses prefer to switch their in-house system to the AlcTax engine for real-time tax determinations. Equipped with support for U.S. jurisdictional and procedural requirements, Determination is the most reliable and punctual software for handling time-and-money-sensitive tasks.

AlcTax Determination operates by connecting to your back-office accounting system, automating the tax amounts required for sales, purchase orders, invoices, and any other alcohol-related transactions. Determination updates regularly to conform to the ever-fluctuating rules and rates applied to distilled spirits, beer, wine, and other alcohol products. With Determination, tax analysts no longer have to monitor, implement, and manage new tax laws. Through our engine, businesses can cut IT costs related to the ongoing management of complex software and changing jurisdictions. Determination makes understanding calculated tax amounts effortless and gives easy-to-access insight on the new tax rules and rates that are used in the calculation. This will result in your customer service team spending less time processing customer inquiries. Avior’s AlcTax Determination makes it easy to stay ahead of changing tax laws, which benefits tax accounting, IT, and your customers.

Overview

Tax determination errors of any kind can have a harmful impact on your business, from decreasing sales margins to fines, tax liabilities, and other legal penalties. For Excise, Sales & Use, and all alcohol-related taxes, our transparent and dependable tax determination engine will allow sellers to plainly see tax ramifications before ending a transaction. For tax optimization and a reduction in risks and costs, AlcTax Determination is the engine that can process all of your needs.
AlcTax Determination Block Diagram
Determination connects to any back-office accounting system, simplifying and automating the taxes necessary for any alcohol transaction like invoices, sales and purchases orders. This has a major impact on decreasing IT costs associated with continuous management of custom software and changing tax rules and rates.
Tax analysts no longer waste time on monitoring, implementing, and managing support for new tax rules. With on-going timely tax rule and rate updates, AlcTax Determination guarantees compliance accuracy. Your customer support team will spend less time processing customer inquiries. AlcTax makes it effortless to understand calculated tax amounts and the rules and rates that are used into their determination. With thousands of tax rates and continued rule changes, this tax determination transparency provides ongoing benefits for IT, Tax Accounting, and customers.

Key Features

  1. Full Coverage-All taxes applied to alcohol products under U.S. jurisdiction-including Excise and Sales & Use taxes-are supported by Determination.
  2. Flexible Importing and Reporting-Data importation and audit support capabilities are flexible to fit your company’s needs.
  3. Flawless Integration-Our software seamlessly integrates into your financial system or ERP.
  4. Regulation Updates-Updates occur automatically to keep in-line with new tax rules and rates.
  5. Customizable Tax Rules-Users can customize tax rules, reports, and calculations
  6. Error Reports-Any tax calculation errors are reported with a detailed analysis.

Benefits

By integrating AlcTax Determination, users can:
  1. Ensure each transaction produces the expected results with infallible compliance to tax rules and rates.
  2. Make certain every data source is identified transparently to gain total visibility over how each calculation is performed.
  3. Customize tax rules and rates with ease.
  4. Lower costs related to tax accounting and IT software.

Alcohol Tax Development

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

Test Excise Tax Alcohol 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 to classify the SKU by alcohol type - Beer, Cider, Liquor, Wine
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 Items : Items per selling unit
Product UOM : Unit of measurement - gallon, liter, milliliter
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, Consumer
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 Volume : Taxable Volume
Currency : USD

Test Excise Tax Alcohol Response

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 Alcohol 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 Excise Tax Alcohol POST Request

{ // transactions
 "company":"Alcohol Dist Inc.",
 "invoice_number":"141826",
 "invoice_date":"20150525",
 "line_items":[
  { 
    "transaction_number":"123",
    "product_category":"liquor",
    "product_upc":"",
    "product_sku":"",
    "product_description":"",
    "product_uom":"gallon",
    "product_items":"20",
    "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 Alcohol Tax Response

{ // transactions
 "company":"Alcohol Dist Inc."
 "invoice_number":"141826",
 "invoice_date":"20150525",
 "line_items":[
  { 
    "transaction_number":"123",
    "product_category":"liquor",
    "product_upc":"",
    "product_sku":"",
    "product_description":"",
    "product_uom":"gallon",
    "product_items":"20",
    "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":"3.30",
              "jur_tax_amount":"30.55"
            }
    ]
  }
 ]
}

Test Excise Alcohol 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/alc/get Production: POST https://www.tax.aviordata.net/1.0/tax/alc/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/alc/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",
    "product_category" => "liquor",
    "product_upc" => "",
    "product_sku" => "",
    "product_description" => "",
    "product_uom" => "gallon",
    "product_items" => "20",
    "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",
);

$ArrayOfLineItems = array($ArrayOfLineItem);

$Transaction = array(
   "company" => "Alcohol 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.'alc/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#

ArrayOfLineItem = new
{
    transaction_number = "123",
    product_category = "liquor",
    product_upc = "",
    product_sku = "",
    product_description = "",
    product_uom = "gallon",
    product_items = "20",
    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",
};

ArrayOfLineItems = new[]
{
    ArrayOfLineItem
};

Transaction = new
{
   company = "Alcohol Dist Inc.",
   invoice_number = "141826",
   invoice_date = "20150525",
   line_items = ArrayOfLineItems
};

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 + "alc/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" => "Alcohol Dist Inc.",
        "invoice_number" => "141826",
        "invoice_date" => "20150525",
        "line_items" => [
            {
                "transaction_number" => "123",
                "product_category" => "liquor",
                "product_upc" => "",
                "product_sku" => "",
                "product_description" => "",
                "product_uom" => "gallon",
                "product_items" => "20",
                "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",
            }
        ]
    }
}.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 + "alc/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)