IP Library › Granted Patent US 12,597,078
Granted Patent B2
US 12,597,078 · App. 16/696,062 · Granted Apr 7, 2026

Assembling parameters to compute taxes for cross-border sales

Inventors: Amy E. Morgan (Seattle, WA); Duncan K. Carey (Seattle, WA); Kevin James Hess (Hillsborough, NC); Aaron David Wilson (Kenmore, WA); Mark Wilhelm (Bainbridge Island, WA); Naveen K. Agrawal (Bellevue, WA); Mark Alan Withers (Bainbridge Island, WA); David Kempe (Auburn, WA)
Assignee: Avalara, Inc.
G06Q40/123G06Q20/207G06Q30/04G06Q30/06G06Q40/02G06Q40/10
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 12,597,078
App. No.
16/696,062
Granted
Apr 7, 2026
Kind
B2
Abstract

A system may learn what parameters are required for an item in order to compute tax for the item based on preliminary data regarding the item and/or the transaction. The system may determine a classification code based on such preliminary data and use that classification code to search or query a database storing information indicative of parameters required to compute tax for items having such a classification code. The system may map the received preliminary data into the learned required parameters and determine whether there are any required parameters for which there has not been any preliminary data mapped into them. The system may prompt the customer (e.g., seller of the item) or other user for data values of such missing required parameters or otherwise obtain data values of such parameters in order to compute the tax for the item.

Claims (151)

1 . A method of using a computer system, including:

receiving, by a customer inputs engine of the computer system, preliminary data about an item;

then the customer inputs engine sending to a classifier application programming interface (API) and a mapper API the received preliminary data;

then, in response to receiving the received preliminary data, the classifier API invoking a classifier of the computer system to look up, and based on the received preliminary data, a classification code for the item;

then, in response to looking up the classification code, the classifier returning the looked-up classification code to the mapper API via the classifier API;

then, in response to the classifier returning the looked-up classification code to the mapper API via the classifier API, a mapper storing the looked-up classification code in a digital item record for the item in stored data;

then, in response to the mapper storing the looked-up classification code in the digital item record, the mapper transmitting the looked-up classification code for the item to a content database via the mapper API;

then, in response to the mapper transmitting the looked-up classification code for the item to a content database via the mapper API, the mapper generating, via the mapper API, and based on the looked-up classification code, a parameter request for parameters associated with computing a data value associated with providing the item in a particular state;

then, in response to the mapper generating the parameter request, the mapper communicating, via the mapper API, the parameter request to the content database;

then, in response to the mapper communicating, via the mapper API, the parameter request to the content database, the content database using the looked-up classification code to query the content database to determine parameters required for computing the data value;

then, based on the content database using the looked-up classification code to query the content database to determine parameters required, the content database inputting to the mapper, and responsive to the generated parameter request, the parameters required for computing the data value;

then, in response to the content database inputting to the mapper the parameters required for computing the data value, storing in the digital item record for the item the parameters required for computing the data value;

then, based on the storing in the digital item record for the item the parameters required for computing the data value, transmitting the parameters required for computing the data value to a configuration control of the customer inputs engine for future reference;

the mapper mapping the received preliminary data into the required parameters to determine for which of the required parameters the computer system is missing corresponding data;

the mapper determining for which of the required parameters the computer system is missing corresponding data, including at least determining, by the computer system and after the mapping, that a certain one of the required parameters has not had any of the received preliminary data mapped into it;

the mapper transmitting, via the mapper API, and based on the determination, a supplemental request for supplemental data for the certain parameter, including at least:

transmitting, via the mapper API, a request for missing data to a customer inputs engine that is handled by the configuration control of the customer inputs engine; and

in response to receiving the request for missing data, the customer inputs engine transmitting the supplemental request for supplemental data to automated smart systems that extract missing data from other stored data of various other remote systems and locations;

receiving, by the computer system and responsive to the transmitted supplemental request, supplemental data over a computer network from remote electronic automated smart systems that extract missing data from other stored data of various other remote systems and locations, wherein the supplemental request is transmitted by the customer inputs engine for missing data for a plurality of required parameters for which there had not been any preliminary data mapped for the item and a plurality of responses including the supplemental data are electronically received in response to the transmitted supplemental request;

storing the received supplemental data in the digital item record along with, and associated with, an item code, the received preliminary data, the looked-up classification code and the required parameters for the item;

mapping, by the computer system, the received supplemental data into the certain parameter;

a computation engine (CE) API receiving, a request to compute the data value;

a CE receiving the item code via the CE API;

the computation engine using the item code to identify the digital item record by transmitting a request for digital item record to the stored data using the item code;

in response to the request for the digital item record, the computation engine receiving items stored in the digital item record including the preliminary data and the mapped supplemental data;

the computation engine computing, by the computer system and responsive to the request to compute the data value, the data value based on the mapped preliminary data and on the mapped supplemental data; and

transmitting, by the computer system, a response encoding the computed data value.

2 . The method of claim 1 , in which:

the classification code is looked up also based on the particular state.

3 . The method of claim 1 , in which:

the classification code is a harmonized system (HS) code.

4 . The method of claim 1 , further including:

forming, by the computer system and based on the received preliminary data, a classification code request; and

receiving, by the computer system and responsive to the classification code request, a classification code response, and

in which: the classification code is looked up from the classification code response.

5 . The method of claim 4 , in which:

the classification code request is formed as hints from the received preliminary data.

6 . The method of claim 1 , further including:

transmitting, by the computer system, the generated parameter request to a first computer system different from the computer system, and

in which: the required parameters are inputted by being received from a second computer system different from the computer system.

7 . The method of claim 6 , in which:

the first computer system is the same as the second computer system.

8 . The method of claim 1 , in which:

the supplemental data includes log-in information about a U.S. government agency.

9 . The method of claim 1 , further including:

determining, by the computer system and after the mapping, that an additional one of the required parameters has not had any data mapped into the additional one of the required parameters;

transmitting, by the computer system and based on the determination, an additional request for supplemental data for the additional one of the required parameters;

receiving, by the computer system and responsive to the transmitted additional request, additional data; and

mapping, by the computer system, the received additional data into the additional parameter, and

in which: the data value is computed based also on the mapped additional data.

10 . A system, comprising:

at least one processor; and

a memory coupled to the at least one processor, the memory storing instructions that, when executed by the at least one processor, cause the system to perform operations comprising:

receiving by a customer inputs engine of the computer system, preliminary data about an item;

then the customer inputs engine sending to a classifier application programming interface (API) and a mapper API the received preliminary data;

then, in response to receiving the received preliminary data, the classifier API invoking a classifier of the computer system to look up, and based on the received preliminary data, a classification code for the item;

then, in response to looking up the classification code, the classifier returning the looked-up classification code to the mapper API via the classifier API;

then, in response to the classifier returning the looked-up classification code to the mapper API via the classifier API, a mapper storing the looked-up classification code in a digital item record for the item in stored data;

then, in response to the mapper storing the looked-up classification code in the digital item record, the mapper transmitting the looked-up classification code for the item to a content database via the mapper API;

then, in response to the mapper transmitting the looked-up classification code for the item to a content database via the mapper API, the mapper generating via mapper API, and based on the looked-up classification code, a parameter request for parameters associated with computing a data value associated with providing the item in a particular state;

then, based on the content database using the looked-up classification code to query the content database to determine parameters required, the content database inputting to the mapper, and responsive to the generated parameter request, the parameters required for computing the data value;

then, in response to the content database inputting to the mapper the parameters required for computing the data value, storing in the digital item record for the item the parameters required for computing the data value;

then, based on the storing in the digital item record for the item the parameters required for computing the data value, transmitting the parameters required for computing the data value to a configuration control of the customer inputs engine for future reference;

the mapper mapping the received preliminary data into the required parameters to determine for which of the required parameters the computer system is missing corresponding data;

the mapper determining for which of the required parameters the computer system is missing corresponding data, including at least determining, after the mapping, that a certain one of the required parameters has not had any of the received preliminary data mapped into it;

the mapper transmitting via the mapper API, based on the determination, a supplemental request for supplemental data for the certain parameter, including at least:

transmitting via the mapper API, a request for missing data to a customer inputs engine that is handled by the configuration control of the customer inputs engine; and

in response to receiving the request for missing data, the customer inputs engine transmitting the supplemental request for supplemental data to automated smart systems that extract missing data from other stored data of various other remote systems and locations;

receiving, by the computer system and responsive to the transmitted supplemental request, supplemental data over a computer network from remote electronic automated smart systems that extract missing data from other stored data of various other remote systems and locations, wherein the supplemental request is transmitted by the customer inputs engine for missing data for a plurality of required parameters for which there had not been any preliminary data mapped for the item and a plurality of responses including the supplemental data are electronically received in response to the transmitted supplemental request;

storing the received supplemental data in the digital item record along with, and associated with, an item code, the received preliminary data, the looked-up classification code and the required parameters for the item;

receiving, responsive to the transmitted supplemental request, supplemental data;

mapping the received supplemental data into the certain parameter;

a computation engine (CE) API receiving a request to compute the data value;

a CE receiving the item code via the CE API;

the computation engine using the item code to identify the digital item record by transmitting a request for digital item record to the stored data using the item code;

in response to the request for the digital item record, the computation engine receiving items stored in the digital item record including the preliminary data and the mapped supplemental data;

the computation engine computing, responsive to the request to compute the data value, the data value based on the mapped preliminary data and on the mapped supplemental data; and

transmitting a response encoding the computed data value.

11 . The system of claim 10 , in which:

the classification code is looked up also based on the particular state.

12 . The system of claim 10 , in which:

the classification code is a harmonized system (HS) code.

13 . The system of claim 10 , wherein the instructions, when executed by the at least one processor, further cause the system to perform:

forming, based on the received preliminary data, a classification code request; and

receiving, responsive to the classification code request, a classification code response, and

in which: the classification code is looked up from the classification code response.

14 . The system of claim 13 , in which:

the classification code request is formed as hints from the received preliminary data.

15 . The system of claim 10 , wherein the instructions, when executed by the at least one processor, further cause the system to perform:

transmitting the generated parameter request to a first computer system, and

in which: the required parameters are inputted by being received from a second computer system different from the computer system.

16 . The system of claim 15 , in which:

the first computer system is the same as the second computer system.

17 . The system of claim 10 , in which:

the supplemental data includes log-in information about a U.S. government agency.

18 . The system of claim 10 , wherein the instructions, when executed by the at least one processor, further cause the system to perform:

determining, after the mapping, that an additional one of the required parameters has not had any data mapped into the additional one of the required parameters;

transmitting, based on the determination, an additional request for supplemental data for the additional one of the required parameters;

receiving, responsive to the transmitted additional request, additional data; and

mapping the received additional data into the additional parameter, and

in which: the data value is computed based also on the mapped additional data.

19 . A non-transitory computer-readable storage medium having computer-executable instructions stored thereon that, when executed by at least one processor, cause the at least one processor to perform operations comprising:

receiving, by a customer inputs engine of the computer system, preliminary data about an item;

then the customer inputs engine sending to a classifier application programming interface (API) and a mapper API the received preliminary data;

then, in response to receiving the received preliminary data, the classifier API invoking a classifier of the computer system to look up, and based on the received preliminary data, a classification code for the item;

then, in response to looking up the classification code, the classifier returning the looked-up classification code to the mapper API via the classifier API;

then, in response to the classifier returning the looked-up classification code to the mapper API via the classifier API, a mapper storing the looked-up classification code in a digital item record for the item in stored data;

then, in response to the mapper storing the looked-up classification code in the digital item record, the mapper transmitting the looked-up classification code for the item to a content database via the mapper API;

then, in response to the mapper transmitting the looked-up classification code for the item to a content database via the mapper API, the mapper generating, via the mapper API and based on the looked-up classification code, a parameter request for parameters required for computing a data value associated with providing the item in a particular state;

then, in response to the mapper generating the parameter request, the mapper communicating, via the mapper API, the parameter request to the content database;

then, in response to the mapper communicating, via the mapper API, the parameter request to the content database, the content database using the looked-up classification code to query the content database to determine parameters required for computing the data value;

then, based on the content database using the looked-up classification code to query the content database to determine parameters required, the content database inputting to the mapper, and responsive to the generated parameter request, the parameters required for computing the data value;

then, in response to the content database inputting to the mapper the parameters required for computing the data value, storing in the digital item record for the item the parameters required for computing the data value;

then, based on the storing in the digital item record for the item the parameters required for computing the data value, transmitting the parameters required for computing the data value to a configuration control of the customer inputs engine for future reference;

the mapper mapping the received preliminary data into the required parameters to determine for which of the required parameters the computer system is missing corresponding data;

the mapper determining for which of the required parameters the computer system is missing corresponding data, including at least determining, after the mapping, that a certain one of the required parameters has not had any of the received preliminary data mapped into it;

the mapper transmitting, via the mapper API and based on the determination, a supplemental request for supplemental data for the certain parameter, including at least:

transmitting, via the mapper API, a request for missing data to a customer inputs engine that is handled by the configuration control of the customer inputs engine; and

in response to receiving the request for missing data, the customer inputs engine transmitting the supplemental request for supplemental data to automated smart systems that extract missing data from other stored data of various other remote systems and locations;

receiving, responsive to the transmitted supplemental request, supplemental data over a computer network from remote electronic automated smart systems that extract missing data from other stored data of various other remote systems and locations, wherein the supplemental request is transmitted by the customer inputs engine for missing data for a plurality of required parameters for which there had not been any preliminary data mapped for the item and a plurality of responses including the supplemental data are electronically received in response to the transmitted supplemental request;

storing the received supplemental data in the digital item record along with, and associated with, an item code, the received preliminary data, the looked-up classification code and the required parameters for the item;

mapping the received supplemental data into the certain parameter;

a computation engine (CE) API receiving a request to compute the data value;

a computation engine receiving the item code via the CE API;

the computation engine using the item code to identify the digital item record by transmitting a request for digital item record to the stored data using the item code;

in response to the request for the digital item record, the computation engine receiving items stored in the digital item record including the preliminary data and the mapped supplemental data;

the computation engine computing, responsive to the request to compute the data value, the data value based on the mapped preliminary data and on the mapped supplemental data; and

transmitting a response encoding the computed data value.

20 . The non-transitory computer-readable storage medium of claim 19 , in which:

the classification code is looked up also based on the particular state.

21 . The non-transitory computer-readable storage medium of claim 19 , in which:

the classification code is a harmonized system (HS) code.

22 . The non-transitory computer-readable storage medium of claim 19 , wherein the instructions, when executed by the at least one processor, further cause the at least one processor to perform:

forming, based on the received preliminary data, a classification code request; and

receiving, responsive to the classification code request, a classification code response, and

in which: the classification code is looked up from the classification code response.

23 . The non-transitory computer-readable storage medium of claim 22 , in which:

the classification code request is formed as hints from the received preliminary data.

24 . The non-transitory computer-readable storage medium of claim 19 , wherein the instructions, when executed by the at least one processor, further cause the at least one processor to perform:

transmitting the generated parameter request to a first computer system, and

in which: the required parameters are inputted by being received from a second computer system different from the computer system.

25 . The non-transitory computer-readable storage medium of claim 24 , in which:

the first computer system is the same as the second computer system.

26 . The non-transitory computer-readable storage medium of claim 19 , in which:

the supplemental data includes log-in information about a U.S. government agency.

27 . The non-transitory computer-readable storage medium of claim 19 , wherein the instructions, when executed by the at least one processor, further cause the at least one processor to perform:

determining, after the mapping, that an additional one of the required parameters has not had any data mapped into the additional one of the required parameters;

transmitting, based on the determination, an additional request for supplemental data for the additional one of the required parameters;

receiving, responsive to the transmitted additional request, additional data; and

mapping the received additional data into the additional parameter, and

in which: the data value is computed based also on the mapped additional data.

Assignments (4)
RELEASE OF SECURITY INTEREST Recorded Mar 28, 2025
From: BLUE OWL CREDIT INCOME CORP (F/K/A OWL ROCK CORE INCOME CORP.), AS COLLATERAL AGENT
To: AVALARA, INC.; EDISON VAULT, LLC
Reel/Frame 070671/0486 →
SECURITY INTEREST Recorded Mar 28, 2025
From: AVALARA, INC.; EDISON VAULT, LLC
To: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT
Reel/Frame 070671/0097 →
SECURITY INTEREST Recorded Oct 20, 2022
From: AVALARA, INC.; EDISON VAULT, LLC
To: OWL ROCK CORE INCOME CORP., AS COLLATERAL AGENT
Reel/Frame 061728/0201 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 18, 2020
From: MORGAN, AMY E.; CAREY, DUNCAN K.; HESS, KEVIN JAMES; WILSON, AARON DAVID; WILHELM, MARK; AGRAWAL, NAVEEN K.; WITHERS, MARK ALAN; KEMPE, DAVID
To: AVALARA, INC.
Reel/Frame 052978/0467 →
Continuity (1)
Related Publication 20210158456A1 · May 27, 2021
References Cited (88)
US 5903881A · Schrader · 1999 [cited by examiner]
US 6983261B1 · Francisco et al. · 2006 [cited by applicant]
US 6993502B1 · Gryglewicz · 2006 [cited by examiner]
US 7676407B2 · Van De Van · 2010 [cited by examiner]
US 7739160B1 · Ryan · 2010 [cited by examiner]
US 7765132B2 · Wilson et al. · 2010 [cited by applicant]
US 7783536B2 · William et al. · 2010 [cited by applicant]
US 7792863B2 · Uy · 2010 [cited by examiner]
US 7865427B2 · Wright · 2011 [cited by examiner]
US 7873566B1 · Templeton · 2011 [cited by examiner]
US 7925537B2 · Ryan, Jr. · 2011 [cited by examiner]
US 7933803B1 · Nadler et al. · 2011 [cited by applicant]
US 8620578B1 · Brown et al. · 2013 [cited by applicant]
US 8725407B2 · Hurley et al. · 2014 [cited by applicant]
US 9760915B2 · Pavlou · 2017 [cited by examiner]
US 9830326B2 · Bay et al. · 2017 [cited by applicant]
US 10332216B2 · Barsade · 2019 [cited by examiner]
US 10445818B1 · Chowdhary · 2019 [cited by applicant]
US 10546278B2 · Dreicer · 2020 [cited by examiner]
US 10713596B2 · Cozine · 2020 [cited by examiner]
US 10769611B2 · McNeel · 2020 [cited by examiner]
US 10891535B1 · Mancuso · 2021 [cited by examiner]
US 10909591B2 · Chase · 2021 [cited by examiner]
US 20020010665A1 · Lefebvre · 2002 [cited by examiner]
US 20020052792A1 · Johnson · 2002 [cited by examiner]
US 20020116302A1 · Wilmes · 2002 [cited by examiner]
US 20020194123A1 · Agee · 2002 [cited by examiner]
US 20020198832A1 · Agee · 2002 [cited by examiner]
US 20030055754A1 · Sullivan · 2003 [cited by examiner]
US 20030061131A1 · Parkan, Jr. · 2003 [cited by examiner]
US 20030093320A1 · Sullivan · 2003 [cited by examiner]
US 20030101111A1 · Dang et al. · 2003 [cited by applicant]
US 20030101112A1 · Gallagher et al. · 2003 [cited by applicant]
US 20030167224A1 · Periwal · 2003 [cited by examiner]
US 20040002906A1 · Von Drehnen · 2004 [cited by examiner]
US 20040230525A1 · Barsade et al. · 2004 [cited by applicant]
US 20050240524A1 · Van De Van · 2005 [cited by examiner]
US 20050261967A1 · Barry et al. · 2005 [cited by applicant]
US 20050261995A1 · Phelan · 2005 [cited by examiner]
US 20050289027A1 · Buarque De Macedo · 2005 [cited by examiner]
US 20060085305A1 · Sindambiwe · 2006 [cited by applicant]
US 20060095521A1 · Patinkin · 2006 [cited by applicant]
US 20070043636A1 · Foster · 2007 [cited by examiner]
US 20070136158A1 · Rawlings · 2007 [cited by examiner]
US 20070136159A1 · Rawlings · 2007 [cited by examiner]
US 20070244777A1 · Torre · 2007 [cited by examiner]
US 20070250440A1 · Paulsen et al. · 2007 [cited by applicant]
US 20070299733A1 · Derby · 2007 [cited by examiner]
US 20080071653A1 · Cirulli · 2008 [cited by examiner]
US 20080294538A1 · Barsade et al. · 2008 [cited by applicant]
US 20090204610A1 · Hellstrom et al. · 2009 [cited by applicant]
US 20090271282A1 · Pool · 2009 [cited by examiner]
US 20090299916A1 · Glinberg · 2009 [cited by examiner]
US 20100293079A1 · Wilson · 2010 [cited by examiner]
US 20100306071A1 · Kay · 2010 [cited by examiner]
US 20110246318A1 · Coulter · 2011 [cited by examiner]
US 20120323749A1 · Lapidus · 2012 [cited by applicant]
US 20130013471A1 · Fishman · 2013 [cited by applicant]
US 20130085913A1 · Luongo · 2013 [cited by applicant]
US 20140379531A1 · Huang et al. · 2014 [cited by applicant]
US 20150248657A1 · Loock et al. · 2015 [cited by applicant]
US 20160026693A1 · Dreicer · 2016 [cited by examiner]
US 20160140211A1 · Riggs · 2016 [cited by examiner]
US 20160188751A1 · Agrawal et al. · 2016 [cited by applicant]
US 20160364474A1 · Bay et al. · 2016 [cited by applicant]
US 20170116682A1 · Matsumoto · 2017 [cited by applicant]
US 20170132603A1 · McNeel · 2017 [cited by examiner]
US 20170242825A1 · Riggs · 2017 [cited by examiner]
US 20180053115A1 · Vachhani et al. · 2018 [cited by applicant]
US 20180067811A1 · Mowatt · 2018 [cited by examiner]
US 20180189478A1 · Richardson · 2018 [cited by examiner]
US 20180267847A1 · Smith · 2018 [cited by examiner]
US 20180365201A1 · Hunn · 2018 [cited by examiner]
US 20190228035A1 · Riggs · 2019 [cited by examiner]
US 20190370308A1 · Riggs · 2019 [cited by examiner]
US 20190392001A1 · Carothers et al. · 2019 [cited by applicant]
US 20200153711A1 · Chauhan · 2020 [cited by examiner]
US 20200364277A1 · Wang · 2020 [cited by examiner]
US 20210142334A1 · Webster · 2021 [cited by examiner]
US 20240193608A1 · Tholar et al. · 2024 [cited by applicant]
US 20250104145A1 · Mintz · 2025 [cited by applicant]
Azam, R. (2012). Global Taxation of Cross-Border E-Commerce Income. Virginia Tax Review, 31(4), 639-694. (GlobalTax) (Year: 2012). [cited by examiner]
Financial Transaction Manager Technical Overview, Craig Bryce, Sean Dunne, Prasad Edlabadkar, Peter McGrath, Sandesh Udupa, IBM Redbooks (Financial). (Year: 2014). [cited by examiner]
Y. Zhang et al., “Parallel Processing Systems for Big Data: A Survey,” in Proceedings of the IEEE, vol. 104, No. 11, pp. 2114-2136, Nov. 2016 (Survey) (Year: 2016). [cited by examiner]
H. Hu, Y. Wen, T.-S. Chua and X. Li, “Toward Scalable Systems for Big Data Analytics: A Technology Tutorial,” in IEEE Access, vol. 2, pp. 652-687, 2014 (Data Analytics). (Year: 2014). [cited by applicant]
Data Mining: Concepts, Models, Methods, and Algorithms, Mehmed Kantardzic (Models, Methods and Algorithms). [cited by applicant]
N. Makrynioti and V. Vassalos, “Declarative Data Analytics: A Survey,” in IEEE Transactions on Knowledge and Data Engineering, vol. 33, No. 6, pp. 2392-2411, Jun. 1, 2021, doi: 10.1109/TKDE.2019.2958084 (Data) (Year: 20… [cited by applicant]
W. Yan, H. Shuanggen, P. Jun and P. Fang, “The Tax Issue and Counterplan within Process of the Electronic Commerce Development,” 2010 International Conference on E-Business and E-Government, Guangzhou, China, 2010, pp. … [cited by applicant]