TaxCloud API

TaxCloud US main APIs

Instantly determine the correct sales tax amount due for any address in the United States (over 15,000 jurisdictions).

TaxCloud US main APIs Overview

{
  "apiLoginID": "XXXXXXX ",
String

Your TaxCloud API ID uniquely identifies which Website associated with your TaxCloud account is making this request. Find your API ID(s) in the TaxCloud Websites Area.

  "apiKey": "1022F5BC-B0B4-44F4-944E-804E0E8F9514"
String

Your TaxCloud API KEY is a secure generated password issued for each API ID.

}

Ping

Open in API Explorer
POST 1.0/TaxCloud/Ping

Hello world? Is your implementation communicating with TaxCloud using a valid API ID and API Key?

Example Request

Format:
curl --request POST \
  --url 'https://api.taxcloud.net/1.0/TaxCloud/Ping?apiKey=YOUR%20API%20KEY%20HERE' \
  --header 'accept: application/json' \
  --header 'content-type: application/json' \
  --data '{"apiLoginID":"115E9050"}'
require 'uri'
require 'net/http'

url = URI("https://api.taxcloud.net/1.0/TaxCloud/Ping?apiKey=YOUR%20API%20KEY%20HERE")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE

request = Net::HTTP::Post.new(url)
request["accept"] = 'application/json'
request["content-type"] = 'application/json'
request.body = "{\"apiLoginID\":\"115E9050\"}"

response = http.request(request)
puts response.read_body
var http = require("https");

var options = {
  "method": "POST",
  "hostname": "api.taxcloud.net",
  "port": null,
  "path": "/1.0/TaxCloud/Ping?apiKey=YOUR%20API%20KEY%20HERE",
  "headers": {
    "accept": "application/json",
    "content-type": "application/json"
  }
};

var req = http.request(options, function (res) {
  var chunks = [];

  res.on("data", function (chunk) {
    chunks.push(chunk);
  });

  res.on("end", function () {
    var body = Buffer.concat(chunks);
    console.log(body.toString());
  });
});

req.write(JSON.stringify({ apiLoginID: '115E9050' }));
req.end();
import http.client

conn = http.client.HTTPSConnection("api.taxcloud.net")

payload = "{\"apiLoginID\":\"115E9050\"}"

headers = {
    'accept': "application/json",
    'content-type': "application/json"
    }

conn.request("POST", "/1.0/TaxCloud/Ping?apiKey=YOUR%20API%20KEY%20HERE", payload, headers)

res = conn.getresponse()
data = res.read()

print(data.decode("utf-8"))
<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.taxcloud.net/1.0/TaxCloud/Ping?apiKey=YOUR%20API%20KEY%20HERE",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POSTFIELDS => "{\"apiLoginID\":\"115E9050\"}",
  CURLOPT_HTTPHEADER => array(
    "accept: application/json",
    "content-type: application/json"
  ),
));

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
  echo "cURL Error #:" . $err;
} else {
  echo $response;
}
package main

import (
	"fmt"
	"strings"
	"net/http"
	"io/ioutil"
)

func main() {

	url := "https://api.taxcloud.net/1.0/TaxCloud/Ping?apiKey=YOUR%20API%20KEY%20HERE"

	payload := strings.NewReader("{\"apiLoginID\":\"115E9050\"}")

	req, _ := http.NewRequest("POST", url, payload)

	req.Header.Add("accept", "application/json")
	req.Header.Add("content-type", "application/json")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := ioutil.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}

Request Body

Name Type Required Description Example
apiLoginID Object Required

Your TaxCloud API ID uniquely identifies which Website associated with your TaxCloud account is making this request. Find your API ID(s) in the TaxCloud Websites Area.

{
  "apiLoginID": "115E9050"
String

Your TaxCloud API ID uniquely identifies which Website associated with your TaxCloud account is making this request. Find your API ID(s) in the TaxCloud Websites Area.

}

Responses

200 PingResponse

Confirmed - TaxCloud hears you!

(Empty Response)

Captured

Open in API Explorer
POST 1.0/TaxCloud/Captured

Mark a previous Lookup as Captured - do this AFTER calling Authorized API and after capturing payment with payment processor.

Example Request

Format:
curl --request POST \
  --url 'https://api.taxcloud.net/1.0/TaxCloud/Captured?apiKey=YOUR%20API%20KEY%20HERE' \
  --header 'accept: application/json' \
  --header 'content-type: application/json' \
  --data '{"apiLoginId":"115E9050","dateCaptured":"2016-03-05","orderID":"Order4"}'
require 'uri'
require 'net/http'

url = URI("https://api.taxcloud.net/1.0/TaxCloud/Captured?apiKey=YOUR%20API%20KEY%20HERE")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE

request = Net::HTTP::Post.new(url)
request["accept"] = 'application/json'
request["content-type"] = 'application/json'
request.body = "{\"apiLoginId\":\"115E9050\",\"dateCaptured\":\"2016-03-05\",\"orderID\":\"Order4\"}"

response = http.request(request)
puts response.read_body
var http = require("https");

var options = {
  "method": "POST",
  "hostname": "api.taxcloud.net",
  "port": null,
  "path": "/1.0/TaxCloud/Captured?apiKey=YOUR%20API%20KEY%20HERE",
  "headers": {
    "accept": "application/json",
    "content-type": "application/json"
  }
};

var req = http.request(options, function (res) {
  var chunks = [];

  res.on("data", function (chunk) {
    chunks.push(chunk);
  });

  res.on("end", function () {
    var body = Buffer.concat(chunks);
    console.log(body.toString());
  });
});

req.write(JSON.stringify({ apiLoginId: '115E9050',
  dateCaptured: '2016-03-05',
  orderID: 'Order4' }));
req.end();
import http.client

conn = http.client.HTTPSConnection("api.taxcloud.net")

payload = "{\"apiLoginId\":\"115E9050\",\"dateCaptured\":\"2016-03-05\",\"orderID\":\"Order4\"}"

headers = {
    'accept': "application/json",
    'content-type': "application/json"
    }

conn.request("POST", "/1.0/TaxCloud/Captured?apiKey=YOUR%20API%20KEY%20HERE", payload, headers)

res = conn.getresponse()
data = res.read()

print(data.decode("utf-8"))
<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.taxcloud.net/1.0/TaxCloud/Captured?apiKey=YOUR%20API%20KEY%20HERE",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POSTFIELDS => "{\"apiLoginId\":\"115E9050\",\"dateCaptured\":\"2016-03-05\",\"orderID\":\"Order4\"}",
  CURLOPT_HTTPHEADER => array(
    "accept: application/json",
    "content-type: application/json"
  ),
));

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
  echo "cURL Error #:" . $err;
} else {
  echo $response;
}
package main

import (
	"fmt"
	"strings"
	"net/http"
	"io/ioutil"
)

func main() {

	url := "https://api.taxcloud.net/1.0/TaxCloud/Captured?apiKey=YOUR%20API%20KEY%20HERE"

	payload := strings.NewReader("{\"apiLoginId\":\"115E9050\",\"dateCaptured\":\"2016-03-05\",\"orderID\":\"Order4\"}")

	req, _ := http.NewRequest("POST", url, payload)

	req.Header.Add("accept", "application/json")
	req.Header.Add("content-type", "application/json")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := ioutil.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}

Request Body

Name Type Required Description Example
CapturedRequest Object Required

This is the Captured Request

{
  "orderID": "Order4",
String

Commerce system-issued unique transaction/order identifier. IMPORTANT This must be the exact same orderID passed in with Authorized.

  "dateCaptured": "2017-05-26",
String (Date)

This should be triggered/invoked when an order is completed or shipped.

  "apiLoginId": "115E9050"
String

Your TaxCloud API ID uniquely identifies which Website associated with your TaxCloud account is making this request. Find your API ID(s) in the TaxCloud Websites Area.

}

Responses

200 Success (Empty Response)

Authorized

Open in API Explorer
POST 1.0/TaxCloud/Authorized

Mark an order as authorized (pending payment).

Example Request

Format:
curl --request POST \
  --url 'https://api.taxcloud.net/1.0/TaxCloud/Authorized?apiKey=YOUR%20API%20KEY%20HERE' \
  --header 'accept: application/json' \
  --header 'content-type: application/json' \
  --data '{"dateAuthorized":"2016-04-01","orderID":"Order4","cartID":"foo","apiLoginID":"115E9050","customerID":"CustomerX"}'
require 'uri'
require 'net/http'

url = URI("https://api.taxcloud.net/1.0/TaxCloud/Authorized?apiKey=YOUR%20API%20KEY%20HERE")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE

request = Net::HTTP::Post.new(url)
request["accept"] = 'application/json'
request["content-type"] = 'application/json'
request.body = "{\"dateAuthorized\":\"2016-04-01\",\"orderID\":\"Order4\",\"cartID\":\"foo\",\"apiLoginID\":\"115E9050\",\"customerID\":\"CustomerX\"}"

response = http.request(request)
puts response.read_body
var http = require("https");

var options = {
  "method": "POST",
  "hostname": "api.taxcloud.net",
  "port": null,
  "path": "/1.0/TaxCloud/Authorized?apiKey=YOUR%20API%20KEY%20HERE",
  "headers": {
    "accept": "application/json",
    "content-type": "application/json"
  }
};

var req = http.request(options, function (res) {
  var chunks = [];

  res.on("data", function (chunk) {
    chunks.push(chunk);
  });

  res.on("end", function () {
    var body = Buffer.concat(chunks);
    console.log(body.toString());
  });
});

req.write(JSON.stringify({ dateAuthorized: '2016-04-01',
  orderID: 'Order4',
  cartID: 'foo',
  apiLoginID: '115E9050',
  customerID: 'CustomerX' }));
req.end();
import http.client

conn = http.client.HTTPSConnection("api.taxcloud.net")

payload = "{\"dateAuthorized\":\"2016-04-01\",\"orderID\":\"Order4\",\"cartID\":\"foo\",\"apiLoginID\":\"115E9050\",\"customerID\":\"CustomerX\"}"

headers = {
    'accept': "application/json",
    'content-type': "application/json"
    }

conn.request("POST", "/1.0/TaxCloud/Authorized?apiKey=YOUR%20API%20KEY%20HERE", payload, headers)

res = conn.getresponse()
data = res.read()

print(data.decode("utf-8"))
<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.taxcloud.net/1.0/TaxCloud/Authorized?apiKey=YOUR%20API%20KEY%20HERE",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POSTFIELDS => "{\"dateAuthorized\":\"2016-04-01\",\"orderID\":\"Order4\",\"cartID\":\"foo\",\"apiLoginID\":\"115E9050\",\"customerID\":\"CustomerX\"}",
  CURLOPT_HTTPHEADER => array(
    "accept: application/json",
    "content-type: application/json"
  ),
));

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
  echo "cURL Error #:" . $err;
} else {
  echo $response;
}
package main

import (
	"fmt"
	"strings"
	"net/http"
	"io/ioutil"
)

func main() {

	url := "https://api.taxcloud.net/1.0/TaxCloud/Authorized?apiKey=YOUR%20API%20KEY%20HERE"

	payload := strings.NewReader("{\"dateAuthorized\":\"2016-04-01\",\"orderID\":\"Order4\",\"cartID\":\"foo\",\"apiLoginID\":\"115E9050\",\"customerID\":\"CustomerX\"}")

	req, _ := http.NewRequest("POST", url, payload)

	req.Header.Add("accept", "application/json")
	req.Header.Add("content-type", "application/json")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := ioutil.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}

Request Body

Name Type Required Description Example
AuthorizedRequest Object Required

Mark an order as authorized (pending payment).

{
  "customerID": "CustomerX",
String

The unique identifier for the customer entity making a purchase. This should be your system's internal identifier (usually a integer or GUID). This value should not be a value (such as an email address) which could be used to personally identify your customer.

  "apiLoginID": "115E9050",
String

Your TaxCloud API ID uniquely identifies which Website associated with your TaxCloud account is making this request. Find your API ID(s) in the TaxCloud Websites Area.

  "cartID": "foo",
String

TaxCloud requires a customer's shopping cart to be assigned a unique identifier before checkout. That way, TaxCloud can later connect the Capture event with the correct Lookup. IMPORTANT: You must have the ability to persist (via server-side database or client-side cookie) and re-associate the unique cartID for each unique customer session. If no cartID was provided in the Lookup request, TaxCloud will respond with a UUID/GUID which should be persisted and used in subsequent API calls for this customer's session.

  "orderID": "Order4",
String

Commerce system-issued unique transaction/order identifier.

  "dateAuthorized": "2017-05-26"
String (Date)

Date a transaction was authorized with payment processor.

}

VerifyAddress

Open in API Explorer
POST 1.0/taxcloud/VerifyAddress

Inspect and verify a customer provided address to ensure the most accurate tax jurisdiction(s) can be identified.

Example Request

Format:
curl --request POST \
  --url 'https://api.taxcloud.net/1.0/taxcloud/VerifyAddress?apiKey=YOUR%20API%20KEY%20HERE' \
  --header 'accept: application/json' \
  --header 'content-type: application/json' \
  --data '{"Zip4":"0000","Zip5":"06851","State":"WA","City":"Norwalk","Address2":"Third Floor","Address1":"162 East Avenue","apiLoginID":"115E9050"}'
require 'uri'
require 'net/http'

url = URI("https://api.taxcloud.net/1.0/taxcloud/VerifyAddress?apiKey=YOUR%20API%20KEY%20HERE")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE

request = Net::HTTP::Post.new(url)
request["accept"] = 'application/json'
request["content-type"] = 'application/json'
request.body = "{\"Zip4\":\"0000\",\"Zip5\":\"06851\",\"State\":\"WA\",\"City\":\"Norwalk\",\"Address2\":\"Third Floor\",\"Address1\":\"162 East Avenue\",\"apiLoginID\":\"115E9050\"}"

response = http.request(request)
puts response.read_body
var http = require("https");

var options = {
  "method": "POST",
  "hostname": "api.taxcloud.net",
  "port": null,
  "path": "/1.0/taxcloud/VerifyAddress?apiKey=YOUR%20API%20KEY%20HERE",
  "headers": {
    "accept": "application/json",
    "content-type": "application/json"
  }
};

var req = http.request(options, function (res) {
  var chunks = [];

  res.on("data", function (chunk) {
    chunks.push(chunk);
  });

  res.on("end", function () {
    var body = Buffer.concat(chunks);
    console.log(body.toString());
  });
});

req.write(JSON.stringify({ Zip4: '0000',
  Zip5: '06851',
  State: 'WA',
  City: 'Norwalk',
  Address2: 'Third Floor',
  Address1: '162 East Avenue',
  apiLoginID: '115E9050' }));
req.end();
import http.client

conn = http.client.HTTPSConnection("api.taxcloud.net")

payload = "{\"Zip4\":\"0000\",\"Zip5\":\"06851\",\"State\":\"WA\",\"City\":\"Norwalk\",\"Address2\":\"Third Floor\",\"Address1\":\"162 East Avenue\",\"apiLoginID\":\"115E9050\"}"

headers = {
    'accept': "application/json",
    'content-type': "application/json"
    }

conn.request("POST", "/1.0/taxcloud/VerifyAddress?apiKey=YOUR%20API%20KEY%20HERE", payload, headers)

res = conn.getresponse()
data = res.read()

print(data.decode("utf-8"))
<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.taxcloud.net/1.0/taxcloud/VerifyAddress?apiKey=YOUR%20API%20KEY%20HERE",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POSTFIELDS => "{\"Zip4\":\"0000\",\"Zip5\":\"06851\",\"State\":\"WA\",\"City\":\"Norwalk\",\"Address2\":\"Third Floor\",\"Address1\":\"162 East Avenue\",\"apiLoginID\":\"115E9050\"}",
  CURLOPT_HTTPHEADER => array(
    "accept: application/json",
    "content-type: application/json"
  ),
));

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
  echo "cURL Error #:" . $err;
} else {
  echo $response;
}
package main

import (
	"fmt"
	"strings"
	"net/http"
	"io/ioutil"
)

func main() {

	url := "https://api.taxcloud.net/1.0/taxcloud/VerifyAddress?apiKey=YOUR%20API%20KEY%20HERE"

	payload := strings.NewReader("{\"Zip4\":\"0000\",\"Zip5\":\"06851\",\"State\":\"WA\",\"City\":\"Norwalk\",\"Address2\":\"Third Floor\",\"Address1\":\"162 East Avenue\",\"apiLoginID\":\"115E9050\"}")

	req, _ := http.NewRequest("POST", url, payload)

	req.Header.Add("accept", "application/json")
	req.Header.Add("content-type", "application/json")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := ioutil.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}

Request Body

Name Type Required Description Example
VerifyAddressPost Object Required

This is a complete Verify Address Post

{
  "apiLoginID": "115E9050",
String

Your TaxCloud API ID uniquely identifies which Website associated with your TaxCloud account is making this request. Find your API ID(s) in the TaxCloud Websites Area.

  "Address1": "162 East Avenue",
String

A numbered street address

  "Address2": "Third Floor",
String

A second address line

  "City": "Norwalk",
String

The name of the City

  "State": "WA",
String

Abbreviated form (only two characters) of the State.

  "Zip5": "06851",
String

The 5-digit US Zip Code.

  "Zip4": "0000"
String

The 4-digit extended Plus4 US Zip Code.

}

Responses

200 Success

Verify Address Response

TaxCloud US main APIs Verifyaddressresponse
{
  "ErrNumber": "0",
String

0 = Address Verified. Important If the address fails to verify (ErrNumber: 9x, ErrDescription "Address can't be verified") that's OK - you should proceed to Lookup using the customer-provided address information.

  "ErrDescription": "foo",
String

Important If the address fails to verify (ErrDescription "Address can't be verified") that's OK - you should proceed to Lookup using the customer-provided address information.

  "Address1": "162 East Ave # 3",
String

This is the cleansed numbered street address suggested by the United States Postal Service.

  "Address2": "foo",
String

This is the cleansed second address line (if any) suggested by the United States Postal Service.

  "City": "Norwalk",
String

This is the cleansed City Name suggested by the United States Postal Service.

  "State": "CT",
String

This is the two character State Abbreviation suggested by the United States Postal Service.

  "Zip5": "06851",
String

This is the cleansed 5-digit Zip Code suggested by the United States Postal Service.

  "Zip4": "5715"
String

This is the cleansed Plus4 Zip Code Extension suggested by the United States Postal Service.

}

Lookup

Open in API Explorer
POST 1.0/TaxCloud/Lookup

Determine applicable sales or use tax for items being purchased.

Example Request

Format:
curl --request POST \
  --url 'https://api.taxcloud.net/1.0/TaxCloud/Lookup?apiKey=YOUR%20API%20KEY%20HERE' \
  --header 'accept: application/json' \
  --header 'content-type: application/json' \
  --data '{"deliveredBySeller":false,"cartID":"04fe9a97-a579-43c5-bb1a-58ed29bf0a6a","destination":{"Zip4":"5715","Zip5":"06851","State":"CT","City":"Norwalk","Address2":"Third Floor","Address1":"162 East Avenue"},"origin":{"Zip4":"5715","Zip5":"06851","State":"CT","City":"Norwalk","Address2":"Third Floor","Address1":"162 East Avenue"},"cartItems":[{"Qty":1,"Price":9.95,"TIC":11010,"ItemID":"8LA06052","Index":0}],"customerID":"CustomerX","apiLoginId":"115E9050"}'
require 'uri'
require 'net/http'

url = URI("https://api.taxcloud.net/1.0/TaxCloud/Lookup?apiKey=YOUR%20API%20KEY%20HERE")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE

request = Net::HTTP::Post.new(url)
request["accept"] = 'application/json'
request["content-type"] = 'application/json'
request.body = "{\"deliveredBySeller\":false,\"cartID\":\"04fe9a97-a579-43c5-bb1a-58ed29bf0a6a\",\"destination\":{\"Zip4\":\"5715\",\"Zip5\":\"06851\",\"State\":\"CT\",\"City\":\"Norwalk\",\"Address2\":\"Third Floor\",\"Address1\":\"162 East Avenue\"},\"origin\":{\"Zip4\":\"5715\",\"Zip5\":\"06851\",\"State\":\"CT\",\"City\":\"Norwalk\",\"Address2\":\"Third Floor\",\"Address1\":\"162 East Avenue\"},\"cartItems\":[{\"Qty\":1,\"Price\":9.95,\"TIC\":11010,\"ItemID\":\"8LA06052\",\"Index\":0}],\"customerID\":\"CustomerX\",\"apiLoginId\":\"115E9050\"}"

response = http.request(request)
puts response.read_body
var http = require("https");

var options = {
  "method": "POST",
  "hostname": "api.taxcloud.net",
  "port": null,
  "path": "/1.0/TaxCloud/Lookup?apiKey=YOUR%20API%20KEY%20HERE",
  "headers": {
    "accept": "application/json",
    "content-type": "application/json"
  }
};

var req = http.request(options, function (res) {
  var chunks = [];

  res.on("data", function (chunk) {
    chunks.push(chunk);
  });

  res.on("end", function () {
    var body = Buffer.concat(chunks);
    console.log(body.toString());
  });
});

req.write(JSON.stringify({ deliveredBySeller: false,
  cartID: '04fe9a97-a579-43c5-bb1a-58ed29bf0a6a',
  destination: 
   { Zip4: '5715',
     Zip5: '06851',
     State: 'CT',
     City: 'Norwalk',
     Address2: 'Third Floor',
     Address1: '162 East Avenue' },
  origin: 
   { Zip4: '5715',
     Zip5: '06851',
     State: 'CT',
     City: 'Norwalk',
     Address2: 'Third Floor',
     Address1: '162 East Avenue' },
  cartItems: [ { Qty: 1, Price: 9.95, TIC: 11010, ItemID: '8LA06052', Index: 0 } ],
  customerID: 'CustomerX',
  apiLoginId: '115E9050' }));
req.end();
import http.client

conn = http.client.HTTPSConnection("api.taxcloud.net")

payload = "{\"deliveredBySeller\":false,\"cartID\":\"04fe9a97-a579-43c5-bb1a-58ed29bf0a6a\",\"destination\":{\"Zip4\":\"5715\",\"Zip5\":\"06851\",\"State\":\"CT\",\"City\":\"Norwalk\",\"Address2\":\"Third Floor\",\"Address1\":\"162 East Avenue\"},\"origin\":{\"Zip4\":\"5715\",\"Zip5\":\"06851\",\"State\":\"CT\",\"City\":\"Norwalk\",\"Address2\":\"Third Floor\",\"Address1\":\"162 East Avenue\"},\"cartItems\":[{\"Qty\":1,\"Price\":9.95,\"TIC\":11010,\"ItemID\":\"8LA06052\",\"Index\":0}],\"customerID\":\"CustomerX\",\"apiLoginId\":\"115E9050\"}"

headers = {
    'accept': "application/json",
    'content-type': "application/json"
    }

conn.request("POST", "/1.0/TaxCloud/Lookup?apiKey=YOUR%20API%20KEY%20HERE", payload, headers)

res = conn.getresponse()
data = res.read()

print(data.decode("utf-8"))
<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.taxcloud.net/1.0/TaxCloud/Lookup?apiKey=YOUR%20API%20KEY%20HERE",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POSTFIELDS => "{\"deliveredBySeller\":false,\"cartID\":\"04fe9a97-a579-43c5-bb1a-58ed29bf0a6a\",\"destination\":{\"Zip4\":\"5715\",\"Zip5\":\"06851\",\"State\":\"CT\",\"City\":\"Norwalk\",\"Address2\":\"Third Floor\",\"Address1\":\"162 East Avenue\"},\"origin\":{\"Zip4\":\"5715\",\"Zip5\":\"06851\",\"State\":\"CT\",\"City\":\"Norwalk\",\"Address2\":\"Third Floor\",\"Address1\":\"162 East Avenue\"},\"cartItems\":[{\"Qty\":1,\"Price\":9.95,\"TIC\":11010,\"ItemID\":\"8LA06052\",\"Index\":0}],\"customerID\":\"CustomerX\",\"apiLoginId\":\"115E9050\"}",
  CURLOPT_HTTPHEADER => array(
    "accept: application/json",
    "content-type: application/json"
  ),
));

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
  echo "cURL Error #:" . $err;
} else {
  echo $response;
}
package main

import (
	"fmt"
	"strings"
	"net/http"
	"io/ioutil"
)

func main() {

	url := "https://api.taxcloud.net/1.0/TaxCloud/Lookup?apiKey=YOUR%20API%20KEY%20HERE"

	payload := strings.NewReader("{\"deliveredBySeller\":false,\"cartID\":\"04fe9a97-a579-43c5-bb1a-58ed29bf0a6a\",\"destination\":{\"Zip4\":\"5715\",\"Zip5\":\"06851\",\"State\":\"CT\",\"City\":\"Norwalk\",\"Address2\":\"Third Floor\",\"Address1\":\"162 East Avenue\"},\"origin\":{\"Zip4\":\"5715\",\"Zip5\":\"06851\",\"State\":\"CT\",\"City\":\"Norwalk\",\"Address2\":\"Third Floor\",\"Address1\":\"162 East Avenue\"},\"cartItems\":[{\"Qty\":1,\"Price\":9.95,\"TIC\":11010,\"ItemID\":\"8LA06052\",\"Index\":0}],\"customerID\":\"CustomerX\",\"apiLoginId\":\"115E9050\"}")

	req, _ := http.NewRequest("POST", url, payload)

	req.Header.Add("accept", "application/json")
	req.Header.Add("content-type", "application/json")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := ioutil.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}

Request Body

Name Type Required Description Example
Lookup Object Required

This is a complete Lookup Post

{
  "apiLoginId": "115E9050",
String

Your TaxCloud API ID uniquely identifies which Website associated with your TaxCloud account is making this request. Find your API ID(s) in the TaxCloud Websites Area.

  "customerID": "CustomerX",
String

The unique identifier for the customer entity making a purchase. This should be your system's internal identifier (usually an integer or GUID). This value should not be a value (such as an email address) which could be used to personally identify your customer.

  cartItems: [
Array

An array of items (each a CartItem) being purchased by the customer.

    {
    { ... }
Object

CartItem

      "Index": 0,
Integer

Zero-based index of the item being purchased. Zero-based means the first item in the cart has an Index of 0, the second item has an index of 1, and so on.

      "ItemID": "8LA06052",
String

Unique identifier (such as a SKU or GUID) used by your commerce system to uniquely identify a particular product.

      "TIC": 11010,
Integer

The Taxability Information Code (or TIC) appropriate for the item being purchased. For more information, please review the Taxability Information Codes area

      "Price": 9.95,
Number

The per-item price of the item being purchased. IMPORTANT This is the price to be paid by the customer after application of any discounts or coupons

      "Qty": 1
Integer

The quantity of this particular item being purchased.

    }
  ]
  "origin": {
  "origin": { ... }
Object

This is the origin address of the shipment (your store or warehouse)

    "Address1": "162 East Avenue",
String

A numbered street address.

    "Address2": "Third Floor",
String

A second address line.

    "City": "Norwalk",
String

The name of the City.

    "State": "CT",
String

Abbreviated form (only two characters) of the State

    "Zip5": "06851",
String

The 5-digit US Zip Code.

    "Zip4": "5715"
String

The 4-digit extended Plus4 US Zip Code

  },
  "destination": {
  "destination": { ... }
Object

This is your customer's delivery address. For digital goods or services, this is your customer's billing/payment address

    "Address1": "162 East Avenue",
String

A numbered street address.

    "Address2": "Third Floor",
String

A second address line.

    "City": "Norwalk",
String

The name of the City.

    "State": "CT",
String

Abbreviated form (only two characters) of the State

    "Zip5": "06851",
String

The 5-digit US Zip Code.

    "Zip4": "5715"
String

The 4-digit extended Plus4 US Zip Code.

  },
  "cartID": "04fe9a97-a579-43c5-bb1a-58ed29bf0a6a",
String (Uuid)

If no cartID was provided in the Lookup request, TaxCloud will respond with a UUID/GUID which should be persisted and used in subsequent API calls for this customer's session.

  "deliveredBySeller": false
Boolean

Is this purchase going to be delivered by the seller in a seller-owned vehicle, and not by common carrier (such as UPS or Fedex)?

}

Responses

200 LookupResponse

LookupResponse

TaxCloud US main APIs Lookupresponse
{
  "CartID": "04fe9a97-a579-43c5-bb1a-58ed29bf0a6a",
String (Uuid)

This is the CartID passed in with Lookup. If no CartID was passed in, a unique CartID will be provided in this response which should be used for all subsequent API calls (for this customer).

  CartItemsResponse: [
Array
    {
    { ... }
Object

Cartitemsresponse

      "CartItemIndex": 0,
Integer
      "TaxAmount": 9.681
Number
    }
  ]
  "ResponseType": 3,
Integer
  "Messages": [
    "foo",
    "foo",
    "foo"
  ]
Array
}