taxjar-calcorado-node
v1.0.2
Published
Processes Colorado multiple home rule city data for TaxJar API calculations
Downloads
2
Readme
TaxJar-Calcorado-Node
Disclaimer: This package has no endorsement, maintenance, or support by TaxJar, its employees, or affiliates.
To support a business that has Colorado multiple Home-Rule city nexus, the TaxJar API for sales tax calculations /v2/taxes requires "nexus_addresses"
specification of which home-rule city sales tax should apply.
In order to simplify the requirement, this package allows sending all home-rule city nexus addresses into your request body. It uses a straight-forward comparison to look at the "to_city"
to determine which "nexus_addresses"
should apply.
Installation
Use the package manager npm to install taxjar-calcorado-node.
npm install taxjar-calcorado-node
Alternatively, the entire code used to make this work is pretty straight-forward:
module.exports = (apiReq) => {
let toCity = apiReq.to_city.toUpperCase();
let nexusAddresses = apiReq.nexus_addresses;
nexusAddresses.forEach((address, idx, array) => {
if (toCity.localeCompare(address.city.toUpperCase()) == 0) {
apiReq.nexus_addresses = address;
return apiReq
}
if (idx === array.length - 1 && apiReq.nexus_addresses.length > 1) {
delete apiReq.nexus_addresses;
return apiReq
}
});
}
Usage
Require the package
const calcorado = require('taxjar-calcorado-node');
Pass all CO nexus_addresses to request
Assuming shipping details are available, here's the request body:
taxCalc = {
to_country: 'US',
to_zip: '80217',
to_state: 'CO',
to_city: 'Centennial',
to_street: '7526 E 53rd Pl',
amount: 15,
shipping: 1.5,
nexus_addresses: [],
line_items: [
{
id: '1',
quantity: 1,
product_tax_code: '',
unit_price: 15,
discount: 0
}
]
}
..and here's where we conditionally tie in all home-rule city addresses:
if (taxCalc.toState == 'CO') {
taxCalc.nexus_addresses = [
{
id: 'Denver Nexus',
country: 'US',
zip: '80217',
state: 'CO',
city: 'Denver',
street: '7550 E 53rd Pl'
},
{
id: 'Boulder Nexus',
country: 'US',
zip: '80302',
state: 'CO',
city: 'Boulder',
street: '1905 15th St'
},
{
id: 'Centennial Nexus',
country: 'US',
zip: '80122',
state: 'CO',
city: 'Centennial',
street: '2221 E Arapahoe Rd'
},
{
id: 'Centennial Nexus',
country: 'US',
zip: '80122',
state: 'CO',
city: 'Centennial',
street: '2221 E Arapahoe Rd'
},
{
id: 'Central City Nexus',
country: 'US',
zip: '80427',
state: 'CO',
city: 'Central City',
street: '149 Gregory St'
}
];
}
Call the package, send the new calc to TaxJar
newTaxCalc = calcorado(taxCalc);
The new request:
{
to_country: 'US',
to_zip: '80217',
to_state: 'CO',
to_city: 'Centennial',
to_street: '7526 E 53rd Pl',
amount: 15,
shipping: 1.5,
nexus_addresses: [
{
id: 'Centennial Nexus',
country: 'US',
zip: '80122',
state: 'CO',
city: 'Centennial',
street: '2221 E Arapahoe Rd'
}
],
line_items: [
{
id: '1',
quantity: 1,
product_tax_code: '',
unit_price: 15,
discount: 0
}
]
}
client.taxForOrder(newTaxCalc);
Contributing
Pull requests are welcome.
License
ISC / Open-source.