AvaTax API 18.1 Patch Notes
This article is about the January 2018 monthly update to the AvaTax API.
UPDATED 2018-01-12 - More information about importer of record added.
UPDATED 2018-01-23 - Updated release date.
Changes in Cross-Border Customs and Duty Taxes
Avalara is updating the Landed Cost tax calculation engine with new features and capabilities. Among the changes are key features including:
- Ability to designate seller/importer of record on a country-by-country configuration basis
- Each custom or duty tax contains information about whether it may be charged to the buyer
- New definitions API for browsing through the harmonized tariff system database for HS codes
- Support for company distance threshold data for EU VAT tax calculation
- Support for Mini-One-Stop-Shop metadata for EU VAT customers
Importer of Record
In AvaTax 18.1, Avalara will re-introduce the “Importer of Record” (IOR) system for identifying companies obligated to pay certain value-added and customs/tariff/duty taxes. This feature has been present in AvaTax for a while, but we are improving and upcating our documentation to clarify its purpose and utility.
With the release of Avalara’s newly researched content for IOR rules, customers may see changes in tax results for US imports/exports based on the value used for IOR. Though this is due to new and accurate content research, customers using this behavior in production will be notified and they will have the ability to set the IOR value as needed. Since some applications and connectors do not give the user control over this field, users will have the ability to set these values in their nexus configuration as well as through the transaction call.
The IOR field will be available in both the CreateTransaction API and the CreateNexus API. You can choose whether a company is considered the importer of record either by configuring the company’s nexus settings, or during each individual transaction by setting the flag on the CreateTransactionModel. Additionally, a company configuration value that controls how these fields behave will be available in the SetCompanyConfiguration API.
When you declare your company as the importer of record, many customs, duties, and value-added taxes will apply to your company. If you are not the importer of record, those taxes will not apply to your company. In general, the value you provide in the CreateTransaction API call will take precedence over the value set in your nexus, although this can be controlled with the configuration setting.
For customers calculating international taxes, or taxes that apply when products are shipped cross border, you should review how your code sets this value.
Coming Soon: Item Attributes
As AvaTax grows to handle new tax types and new content types, correct tax calculation will require more information about products in order to determine their taxability across a variety of different laws. To store this information, we will be extending the Items APIs to include attributes.
These attributes will be automatically loaded and processed by AvaTax whenever you calculate tax on a product. By using the Item system, you can offload the complexity of tax laws onto your accounting department and avoid having to update your software every time the tax classification data for your product catalog changes.
Here’s how it works:
- Your software should call the CreateItems API for each product in your catalog. You can call this API on demand any time a new product is first handled.
- Your accounting or compliance teams can manage the tax data and custom item attributes for each item using the AvaTax Website. Any items they don't configure will be calculated as tangible personal property; but any items that need special tax treatment can be managed as needed in the friendly AvaTax website user interface.
- When you call the CreateTransaction API, your software only has to pass the itemCode parameter for each line item. If your compliance team has updated any tax information for this product, AvaTax will automatically use it - without any code changes!
The item attribute system allows you to keep the complexity where it belongs: fully in control of your accounting / compliance department. You’ll never have to update your software again to customize your product catalog!
Please be on the lookout for more announcements about Item Attributes during Q1 2018 as we move more complex tax logic into the item system and simplify the AvaTax API!
TaxContent API Improvements
The TaxContent API has been updated with some usability improvements and bug fixes.
- Connecticut luxury taxes no longer have conflicting scenario ID numbers.
- Added support for attributes at the item level (as above) to allow for more complex tax calculation
- Scenarios are sorted for ease of browsing.
- Fixed an unhandled exception that occurred when providing some null values to the TaxContent API.
Exemption Certificate Provisioning
The integrated AvaTax Exemption Certificates API suite has been updated to automatically provision your exemption certificate service the first time you make any API call related to certificates, customers, or CertExpress invites.
The following changes affect the CreateTransaction API:
- Added a custom error message for discounts that could not be applied. If you set the discount field on your request, but you forget to specify which lines within the invoice will be discounted, the API will now return an error indicating that the requested discount could not be applied rather than proceeding without applying the discount.
- Fixed an unhandled exception when address data exceeded a specific length
- Improvements to the help text for LineItemModel to clarify the behavior of negative values. Negative values are allowed for the amount field, but negatives are not intended to be used for the quantity field.
- Fixed an issue that reported incorrect region names for international regions when there were ISO 3166 code matching issues.
- Taxes that are not allowed to be passed through to the customer are now present in a new data structure called the "Non Passthrough Details" structure. Taxes that can be charged to the customer will continue to appear in the details structure as normal.
Other Improvements and Bug Fixes
- Added definitions API for unit of measurement and measurement types
- Improvements to US postal code validation logic for TaxRatesByAddress and other APIs, fixing an unhandled exception that occurred in some cases.
- Free trial emails now direct you to the updated AvaTax Website
- Fixed an issue affecting SST customers when using RefundTransaction for percentage-based discounts
- Improved help text for the X-Avalara-Client value, linking to the new developer documentation page for this feature.
- Added support for different transaction types to CommitTransaction, SettleTransaction, VerifyTransaction, and VoidTransaction. You will now be able to call these APIs to handle transactions that share the same transaction code but have different transaction types.
- Corrected some issues with blank space parsing in the Free Trial API.
- The locationCode field was incorrectly set to case sensitive in some circumstances. It is intended to be case insensitive.
- The TaxRule API has been extended to include a new region field.
- Fixed an issue that affected SettleTransaction and VerifyTransaction when date values were not passed. The documentation for these APIs has been updated to match the functionality as expected.
- Added support for in-memory filtering using "IN" clauses for cached data sets.
- The onboarding API now permits payment method configuration.
- Modified the ListParameters API to only display end-user parameters.
- Updated country and region data licensed from the International Standards Organization.
- Flagged the companyCode value correctly for the Initialize API.
- Fixed an issue that allowed users to provide negative percentages in some circumstances when not intended.
- Fixed an issue that prevented users from searching for certificate exposure zones filtering by country.
- Fixed an unhandled exception that occurred when accessing logon data during a cache refresh cycle.
- Fixed an unhandled exception when providing complex query structures using the $filter parameter.
- Fixed an unhandled exception in the report API.
- Fixed an unhandled exception on cache load of ISO country data.