# Tax Registrations and Business Licenses — API Reference

Tax Registrations and Business Licenses help you identify, obtain, and manage the registrations and licenses required to operate across jurisdictions. This includes understanding obligations, completing filings, and maintaining compliance over time.

Source: https://developer.avalara.com/products/registration-and-licensing/api/
**Total endpoints:** 18 across 8 APIs

---

## Avalara License Guidance Order API

Used for placing Avalara License Guidance orders and passing in known information into the ALG questionnaire.

**Version:** 1.0.0
**Base URL:** https://www.businesslicenses.com
**Endpoints:** 2

### Endpoints

#### Orders

##### Create an Avalara License Guidance order

`POST /licensesuite/endpoint.php`

Creates a new order for business license compliance processing. This endpoint accepts business information, location data, and business activities to generate a license report. The API validates the API key and processes the submitted data, including location validation and business activity classification.


#### Order Status

##### Retrieve the order status

`GET /blms/webservice/license-guidance/order/status.json`

Retrieves status information after the order is created

**Parameters:**

| Name | Type | In | Required | Description |
|---|---|---|---|---|
| `key` | string | query | Yes | API key provided by Avalara for authentication |
| `order_number` | string | query | Yes | Order number |

### Models

#### Location

Business location information

| Property | Type | Description |
|---|---|---|
| `address1` | string | Street address line 1 |
| `city` | string | City name |
| `state` | string | Two character state abbreviation |
| `postal_code` | string | ZIP or postal code |
| `county` | string | County name |
| `country` | string | Two-character country code |

#### BusinessActivity

Business activity information

| Property | Type | Description |
|---|---|---|
| `business_activity_id` | string | Business activity ID in the format 'master-sub-industry-activity' |

#### OrderAnswer

Answers to questions in the order flow

| Property | Type | Description |
|---|---|---|
| `Incorporated Type` | string | Business incorporation type |
| `Incorporated State` | string | State where the business was incorporated, using a two-character code |
| `DBA` | string | Indicates whether the business uses a DBA name |
| `Employees` | string | Business has employees |
| `Residential or Commercial` | string | Indicates whether the business operates in a residential or commercial area |

#### OrderStatusResponse

Successful order status response

| Property | Type | Description |
|---|---|---|
| `ReturnCode` | string | Return code for the request |
| `ErrorCode` | number | Error code for the request |
| `ErrorMessage` | string | Error message for the request |
| `Order` | object | Order status details |

#### OrderStatusInvalidResponse

Invalid order status request response

| Property | Type | Description |
|---|---|---|
| `ReturnCode` | string | Return code for the request |
| `ErrorCode` | number | Error code for the request |
| `ErrorMessage` | string | Error message for the request |


---

## Avalara License Guidance Teaser API

API for retrieving license counts by jurisdiction based on location and business activities. This API serves as a teaser for the full Avalara License Guidance (ALG) system.

**Version:** 1.0.0
**Base URL:** https://www.businesslicenses.com/blms/webservice/api
**Endpoints:** 3

### Endpoints

#### License Teaser

##### Retrieve license counts by jurisdiction.

`GET /licenses/jurisdiction/totals`

Returns the total number of licenses by jurisdiction for the requested locations and business activities. Use this endpoint to retrieve data for a teaser page.

**Parameters:**

| Name | Type | In | Required | Description |
|---|---|---|---|---|
| `key` | string | query | Yes | Secure ID provided by Business Licenses, LLC. |
| `locations[0][state]` | string | query | No | Two character state abbreviation of the location. |
| `locations[0][country]` | string | query | No | Two character country code of the location. |
| `locations[0][address]` | string | query | No | Street address of the location. |
| `locations[0][city]` | string | query | No | City of the location. |
| `locations[0][zip]` | string | query | No | ZIP code of the location. |
| `locations[0][plus4]` | string | query | No | ZIP 4 code of the location. |
| `locations[0][county]` | string | query | No | County of the location. |
| `business_activities[0][business_activity_id]` | string | query | No | Business activity ID provided by Business Licenses, LLC. |
| `keywords[0][keyword_id]` | string | query | No | Keyword ID provided by Business Licenses, LLC. |
| `activities[0][activity_id]` | string | query | No | Industry activity ID provided by Business Licenses, LLC. |
| `answers[0][question]` | string | query | No | Question associated with the answer. |
| `answers[0][answer]` | string | query | No | Answer corresponding to the specified question. |


#### Validation

##### Validate a location.

`GET /validation/location`

Validates a location and returns geocoded information if the location is valid. This endpoint can be used before calling the teaser endpoint.

**Parameters:**

| Name | Type | In | Required | Description |
|---|---|---|---|---|
| `key` | string | query | Yes | Secure ID provided by Business Licenses, LLC. |
| `location[address]` | string | query | No | Street address of the location. |
| `location[city]` | string | query | No | City of the location. |
| `location[state]` | string | query | No | Two character state abbreviation of the location. |
| `location[zip]` | string | query | No | ZIP code of the location. |
| `location[plus4]` | string | query | No | ZIP4 code of the location. |
| `location[county]` | string | query | No | County of the location. |
| `location[country]` | string | query | Yes | Two character country code of the location. |

##### Validate business activities.

`GET /validation/business_activities`

Retrieves Business Licenses business activities that correspond to the activities used on your website.

**Parameters:**

| Name | Type | In | Required | Description |
|---|---|---|---|---|
| `key` | string | query | Yes | Secure ID provided by Business Licenses, LLC. |
| `business_activities[0]` | string | query | Yes | Business activity from the partner business activity list. |

### Models

#### LicenseCounts

| Property | Type | Description |
|---|---|---|
| `Federal` | integer | Number of federal licenses required. |
| `State` | integer | Number of state licenses required. |
| `County` | integer | Number of county licenses required. |
| `Local` | integer | Number of local licenses required. |

#### Error

| Property | Type | Description |
|---|---|---|
| `ReturnCode` | string | Error message. |
| `ErrorCode` | integer | Error code. |
| `ErrorMessage` | string | Detailed error message. |

#### LocationValidationResponse

| Property | Type | Description |
|---|---|---|
| `ResultCode` | string | Status message for the validation result. |
| `ErrorCode` | integer | Error code (0 = no error, 1 = invalid, 2 = warning) |
| `ErrorMessage` | string | Error message if an error occurs. |
| `Location` | object | Validated location details. |

#### BusinessActivityValidationResponse

| Property | Type | Description |
|---|---|---|
| `ReturnCode` | string | Status message for the request. |
| `BusinessActivities` | array | List of validated business activities. |


---

## Registrations and Licenses

The Registrations and Licenses API will allow for the provisioning of a customer account, create orders, and return account and order information for an account within the Avalara system.Related APIsIndustry Keyword APIUsed to request a complete list of keywords to describe Business Activities in Avalara's License and Registration offerings.Filing Assist Locations Quantity APIUsed to determine if local registrations are required for an address, and the order quantity to be used when placing "Payroll Tax Registration Only" orders.Filing Assist Registration Details APIGet detailed information for the registrations that have been completed by Avalara (e.g. Tax ID, Filing Frequency, etc.)Question Keys APIReturns the Question Keys that can be used to provide answers to questions in Avalara's online questionnaire which will pre-populate the online questionnaire and reduce the amount of data that your customer will need to provide.

**Version:** 1.0.0
**Base URL:** https://www.businesslicenses.com
**Endpoints:** 5

### Endpoints

#### Accounts

##### Create a customer account.

`POST /blms/webservice/filingassist/customer_account/create.json`

Create a new customer account that can be referenced in other functions by using the account ID provided in your system or the Avalara customer account ID (BLAccountID) returned in the response.

**Parameters:**

| Name | Type | In | Required | Description |
|---|---|---|---|---|
| `avalara-version` | string | header | No | Specifies the API version to use. |
| `X-Avalara-Client` | string | header | No | Identifies the software you are using to call this API. |
| `X-Correlation-ID` | string | header | No | Use the X-Correlation-ID header to support request correlation. |

##### Retrieve customer account orders.

`GET /blms/webservice/filingassist/customer_account/orders.json`

Retrieve orders for a customer account. At least one of the following fields is required: account_id or bl_account_id.

**Parameters:**

| Name | Type | In | Required | Description |
|---|---|---|---|---|
| `key` | string | query | Yes | The entity key provided by Avalara. |
| `avalara-version` | string | header | No | Specifies the API version to use. |
| `X-Avalara-Client` | string | header | No | Identifies the software you are using to call this API. |
| `X-Correlation-ID` | string | header | No | Use the X-Correlation-ID header to support request correlation. |
| `account_id` | string | query | No | The customer account ID. Required if bl_account_id is not provided. |
| `bl_account_id` | string | query | No | The Avalara customer account ID. Required if account_id is not provided. |


#### Sales Representatives

##### Create a sales representative account.

`POST /blms/webservice/filingassist/salesreps/create.json`

Create a new sales representative that can be referenced in other functions using the SalesRepID returned in the response.

**Parameters:**

| Name | Type | In | Required | Description |
|---|---|---|---|---|
| `avalara-version` | string | header | No | Specifies the API version to use. |
| `X-Avalara-Client` | string | header | No | Identifies the software you are using to call this API. |
| `X-Correlation-ID` | string | header | No | Use the X-Correlation-ID header to support request correlation. |


#### Orders

##### CreateOrder

`POST /blms/webservice/filingassist/orders.json`

Create orders using the customer account ID and order ID. A single SKU and quantity must be provided to the API. The response returns a list of generated Avalara orders with URLs for each order.Question Pre-populationFor License Suite Order SKU: Provide questions and answers using the following format:answers[0][question]=Question Nameanswers[0][answer]=Answer ValueSupported question types for License Suite Order include the following:Incorporated Type: Limited Liability Company (LLC), S-Corporation, Corporation, Non-profit Corporation, General Partnership, and Sole ProprietorshipIncorporated State: Two-character state codes such as WA and CA.DBA, which stands for Doing Business As: Yes or No.Employees: Yes, NoResidential or Commercial: Residential, CommercialFor all other SKUs, use the Question Keys API endpoint to retrieve available question keys for the specified SKU and location.Details arrays (general, entities, officers, location details): For comprehensive pre-population of the online questionnaire, you can use the details object with general, entities, and officers arrays, as well as details within each location. Use the Question Keys API endpoint to retrieve the exact question names for the specified SKU and location. The endpoint returns available question keys that can be used to provide answers in the details arrays.Common question categories include the following:General questions: Business_Start_Date, Business_Description, Federal_Tax_ID, State_Tax_IDEntity questions: Entity_Name, Entity_Type, Entity_Address, Entity_City, Entity_State, Entity_ZipOfficer questions: Officer_First_Name, Officer_Last_Name, Officer_Title, Officer_SSN, Officer_AddressLocation questions: Location_Description, Location_Phone, Location_Email, Location_Contact_Name

**Parameters:**

| Name | Type | In | Required | Description |
|---|---|---|---|---|
| `avalara-version` | string | header | No | Specifies the API version to use. |
| `X-Avalara-Client` | string | header | No | Identifies the software you are using to call this API. |
| `X-Correlation-ID` | string | header | No | Use the X-Correlation-ID header to support request correlation. |

##### UploadOrderFile

`POST /blms/webservice/filingassist/orders/file-upload.json`

Attach a file to an existing order using the Order ID. The Order ID, file, and file type are required. This endpoint is used to attach the renewal invoice file for an Avalara License Filing Renewal order.

**Parameters:**

| Name | Type | In | Required | Description |
|---|---|---|---|---|
| `avalara-version` | string | header | No | Specifies the API version to use. |
| `X-Avalara-Client` | string | header | No | Identifies the software you are using to call this API. |
| `X-Correlation-ID` | string | header | No | Use the X-Correlation-ID header to support request correlation. |


---

## Registrations and Licenses Industry Keywords

Partners can use the Industry Keywords Odata API to request a complete list of  keywords that are used to describe Business Activities in Registration products. Partners will then use the Keyword ID when submitted orders through Avalara Order APIs.

**Version:** v1
**Base URL:** https://integration.businesslicenses.com/
**Endpoints:** 2

### Endpoints

#### IndustryKeywords

##### Retrieve all/multiple Keywords

`GET /odata/Partner_Industry_Keywords`

Get multiple Keywords.   Search for specific objects using the criteria in the $filter parameter. Paginate your results using the $top, $skip, and $orderby parameters.   Use the $expand parameter with value Partner_Keyword_Industry_Activity to include the Business Activities per Industry in the result set.

**Parameters:**

| Name | Type | In | Required | Description |
|---|---|---|---|---|
| `$top` | string | query | No | The max number of records to be returned. Used with $skip to provide pagination for large datasets |
| `$skip` | string | query | No | The number of records to skip. Used with $top to provide pagination for large datasets. |
| `$filter` | string | query | No | Filter the keywords to get the desired id:  ‘eq’ will return keywords that match the passed in string exactly. ‘startswith’ will return keywords that start with the passed in string.  contains will return keywords that contain the passed in string. Format: (fieldname) eq 'value', for example: Keyword eq 'Retail'. Possible Uses: Keyword eq 'xxx', startswith(Keyword, 'xxx', contains(Keyword, 'xxx') |
| `$select` | string | query | No | Specifies the set of properties to return. Use a comma separated list. |
| `$orderby` | string | query | No | Determines what values are used to order a collection of records.  Format: (fieldname) [ASC|DESC], for example IndustryKeywordId ASC. Possible Values: Keyword, IndustryKeywordId |
| `$expand` | string | query | No | Use with value Partner_Keyword_Industry_Activity to return Business Activities per Industry in addition to the regular keyword call. |

##### Retrieve a single Keyword

`GET /odata/Partner_Industry_Keywords({key})`

Gets the Keyword that matches the IndustryKeywordId value you have requested.   Use the $expand parameter with value Partner_Keyword_Industry_Activity to include the Business Activities per Industry in the result set.

**Parameters:**

| Name | Type | In | Required | Description |
|---|---|---|---|---|
| `key` | integer | path | Yes | The IndustryKeywordId |
| `$expand` | string | query | No | Use with value Partner_Keyword_Industry_Activity to return Business Activities per Industry in addition to the regular keyword call. |

### Models

#### svc_Partner_Industry_Keyword

| Property | Type | Description |
|---|---|---|
| `IndustryKeywordId` | integer |  |
| `Keyword` | string |  |
| `Partner_Keyword_Industry_Activity` | array |  |

#### svc_Partner_Keyword_Industry_Activity

| Property | Type | Description |
|---|---|---|
| `IndustryKeywordId` | integer |  |
| `IndustryActivityId` | integer |  |
| `DisplayName` | string |  |
| `Partner_Industry_Keyword` | svc_Partner_Industry_Keyword |  |


---

## Registration Details

The Filing Assist Registration Details API allows you to interact with the workflow of order packages and retrieve information about specific registrations. It provides endpoints to list, retrieve, and get registration details.

**Version:** 1.0.0
**Base URL:** https://www.businesslicenses.com
**Endpoints:** 3

### Endpoints

#### Registrations

##### Acknowledge that registration details for the provided registrations have been retrieved.

`POST /filingassist/workflow-registrations/$acknowledge`

Acknowledges that registration details for the provided registrations have been retrieved. Accepts a list of registration objects and removes those registrations from the list.

**Parameters:**

| Name | Type | In | Required | Description |
|---|---|---|---|---|
| `key` | string | query | No | Key provided by Avalara. Required only for partners retrieving their registration information. |
| `avalara-version` | string | header | Yes | Specifies the API version to use. |
| `X-Avalara-Client` | string | header | No | Identifies the software you are using to call this API. |
| `X-Correlation-ID` | string | header | No | Supports request correlation across requests using the X-Correlation-ID header. |

##### Return a list of registrations.

`GET /filingassist/workflow-registrations`

Returns a paginated list of completed registrations, including registrations marked as No License Required.

**Parameters:**

| Name | Type | In | Required | Description |
|---|---|---|---|---|
| `avalara-version` | string | header | Yes | Specifies the API version to use. |
| `key` | string | query | No | Key provided by Avalara. Required only for partners retrieving their registration information. |
| `$skip` | integer | query | No | Number of records to skip before returning results. Used with $top for pagination. |
| `$top` | integer | query | No | Maximum number of records to return. Used with $skip for pagination. |
| `count` | string | query | No | Indicates whether to return the total record count. Returns -1 if the number of records is too large. |
| `countOnly` | string | query | No | Used with count. If both are true, returns only the count and does not return the list of records. |
| `X-Avalara-Client` | string | header | No | Identifies the software you are using to call this API. |
| `X-Correlation-ID` | string | header | No | Supports request correlation across requests using the X-Correlation-ID header. |

##### Return registration information.

`GET /filingassist/workflow-registrations/{id}`

Returns registration information. Use $expand to retrieve related resources: status (Completed, Completed Action Required, or No License Required), detailFields (registration detail fields used for registration), deliverableAttachments (files created during the registration process), and renewalInfo (renewal and expiration details).

**Parameters:**

| Name | Type | In | Required | Description |
|---|---|---|---|---|
| `id` | integer | path | Yes | Unique identifier of the registration. |
| `avalara-version` | string | header | Yes | Specifies the API version to use. |
| `key` | string | query | No | Key provided by Avalara. Required only for partners retrieving their registration information. |
| `$expand` | string | query | No | Comma-delimited list of related resources to include in the response. |
| `X-Avalara-Client` | string | header | No | Identifies the software you are using to call this API. |
| `X-Correlation-ID` | string | header | No | Supports request correlation across requests using the X-Correlation-ID header. |


---

## Registrations and Licenses Question Keys

**Version:** v1
**Base URL:** https://interview-integration.businesslicenses.com
**Endpoints:** 1

### Endpoints

#### QuestionKeys

##### Retrieve Question Keys per Question Group

`GET /api/QuestionKeys`

Returns the available Keys, per Question Group, that can be used to pass information along with the order into the Create Order API.Question GroupsGeneral – For regular questions; passed once per order.Locations – Each key is passed per location on the order.Officers – Each key is passed per owner/officer.Entities – Each key is passed per Business Entity.How to Use the KeysEach key has a QuestionType that defines how to format the data when submitting it in the order.Keys with AnswerParts must be passed as a JSON object using the specified key-value structure.For Multi-Component and Multi-Address types, pass an array of JSON objects.For AcceptableAnswers:List and Checkbox List: Use a single value.For other types that accept multiple values, use a pipe-separated string (e.g., 'value1 | value2').Available QuestionTypes and FormatsBoolean: 'Yes', 'No'String: Simple stringNumeric: Number as a string (e.g., '2')Telephone: '(123) 123-1234'Email: 'example@example.com'Text: Freeform text stringAddress: { 'address': '123 Main St', 'address2': 'Unit 123', 'city': 'Monsey', 'county': 'Rockland', 'state': 'NY', 'country': 'United States', 'postal': '10952' }Date: 'mm/dd/yyyy'List: String value from the AcceptableAnswersMulti-Select: Pipe-separated string (e.g., 'value1 | value2')Website: String (e.g., 'https://example.com')Date Range: Pipe-separated string of hyphen-separated ranges (e.g., '01/01/2024-01/31/2024 | 02/01/2024-02/28/2024')Date - Months Selector: Pipe-separated string of values from AcceptableAnswersDate-Month Day Selector: Format: 'dd/mm'Multi-Address: Array of address JSON objects, using AnswerPartsRadio: Single string value from AcceptableAnswersCheckbox List: Pipe-separated string (e.g., 'value1 | value2')Multi-Component: Array of JSON objects using keys returned in AnswerParts

### Models

#### QuestionKeyGroupDto

| Property | Type | Description |
|---|---|---|
| `General` | array |  |
| `Locations` | array |  |
| `Officers` | array |  |
| `Entities` | array |  |

#### QuestionKeysDto

| Property | Type | Description |
|---|---|---|
| `KeyName` | string |  |
| `QuestionType` | string |  |
| `AnswerParts` | array |  |
| `AcceptableAnswers` | array |  |


---

## Filing Assist Locations Quantity API

The Filing Assist Locations Quantity REST Web Service retrieves the total quantity of authorities that will need Payroll registrations for the provided locations.AuthorizationAn api key provided by Business Licenses, LLC is required for authorization.The api key must be added to the headers of the request as the bearer token:Authorization: Bearer &lt;api key&gt;Response CodesSuccessful requests will return a 200 HTTP response code. If the request fails, the HTTP response code will be 403, 404 or 500.

**Version:** 1.0.0
**Base URL:** https://www.businesslicenses.com
**Endpoints:** 1

### Endpoints

#### Locations Quantity

##### This endpoint returns the quantity of authorities and a list of authorities for a set of locations.

`GET /filingassist/api/locations/quantity`

Get the quantity of authorities for Payroll registrations for the specified locations.

**Parameters:**

| Name | Type | In | Required | Description |
|---|---|---|---|---|
| `avalara-version` | string | header | Yes | Specifies the API version to use for the request. |
| `key` | string | query | Yes | API key provided by Avalara used to authenticate the request. |
| `X-Avalara-Client` | string | header | No | Identifies the software used to call this API. See client header documentation for more information. |
| `X-Correlation-ID` | string | header | No | Supports request correlation across requests and responses. Include this header in all requests. |
| `locations[0][address]` | string | query | Yes | Street address of the location. |
| `locations[0][address2]` | string | query | No | Second line of the street address for the location. |
| `locations[0][city]` | string | query | Yes | City of the location. |
| `locations[0][state]` | string | query | Yes | State of the location. |
| `locations[0][zip]` | string | query | Yes | ZIP code of the location. |
| `locations[0][plus4]` | string | query | No | ZIP+4 code of the location. |
| `locations[0][country]` | string | query | Yes | Country of the location as a 2-character abbreviation. |
| `locations[0][exclude_state_registration]` | integer | query | No | Indicates whether to exclude state-level registration (0 = No, 1 = Yes). |


---

## License Filing Availability

Get information about Avalara License Filings product availability based on state and business activities.

**Version:** v1
**Base URL:** https://integration.businesslicenses.com
**Endpoints:** 1

### Endpoints

#### License Filing Availability

##### Retrieve Business Activity Info

`GET /odata/Partner_Industry_State_Keywords`

The following information will be returned based on the keyword submitted:IsRegulated - this will identify if the activity is a regulated or non-regulated activity.Possible Values: True / FalseRegulatedPriceLevel - if the activity is a regulated activity, the pricing level will be returned.Possible Values: 1, 2, 3, 499 will identify that there is no price level for an industry since it is a non-regulated industry.IsAvailableForALGP - this will identify if we are accepting orders of this activity for the Avalara License Guidance Premium Product.Possible Values: Yes / NoIsAvailableForALF - this will identify if we are accepting orders of this activity for Avalara License Filing Product.Possible Values: Yes / NoAdditional field information:Keyword - this will be a blank string if the filters do not include Keyword. If the Keyword filter is provided, it will have the Keyword filled in.StateId - this will be a blank string if the filters do not include StateId. If the StateId filter is provided, it will have the StateId filled in.IndustryActivityId - this will be 0 if the filters do not include IndustryActivityId. If the IndustryActivityId filter is provided, it will have the IndustryActivityId filled in.

**Parameters:**

| Name | Type | In | Required | Description |
|---|---|---|---|---|
| `$filter` | string | query | No | Filter using the keyword and/or state and/or industry activity properties to get the desired industry information:  Keyword - use the Industry Keywords API to get the keyword StateId - the two letter state abbreviation IndustryActivityId - use the Industry Keyword API to get the activity ids Format: (fieldname) eq 'value', Use AND to combine multiple filters. Use OR to pass in multiple IndustryActivityIds.  Possible Uses: Keyword eq 'xxx', StateId eq 'xx', IndustryActivityId eq #, (IndustryActivityId eq # or IndustryActivityId eq #).  Examples: Keyword eq 'Plastering' and StateId eq 'NY' and IndustryActivityId eq 35Keyword eq 'Archery Range' and (IndustryActivityId eq 3 or IndustryActivityId eq 4) |
| `$select` | string | query | No | Specifies the set of properties to return. Use a comma separated list. |

### Models

#### svc_Partner_Industry_State_Keyword

| Property | Type | Description |
|---|---|---|
| `Keyword` | string |  |
| `IndustryActivityId` | integer |  |
| `IsRegulated` | boolean |  |
| `RegulatedPriceLevel` | integer |  |
| `StateId` | string |  |
| `IsAvailableForALGP` | string |  |
| `IsAvailableForALF` | string |  |
