# Core requirements

Source: https://developer.avalara.com/vat-erp/about-this-guide/core-requirements/

This section provides an overview of the core VAT badge requirements that you need to meet to become a certified partner. Review this section to help you plan your integration.

In addition to these core requirements, the next section describes advanced features that you can include in your integration.

[![Closed](https://avalara-devdocs-prod.mcoutput.com/vat-erp/Skins/Default/Stylesheets/Images/transparent.gif)Administration and utilities](javascript:void\(0\);)

This section describes the settings window of your integration.

Requirement

Use case

Endpoints/Models

Type

[AvaTax configuration window](/vat-erp/designing/avatax-configuration-window)  

Merchants/users need to be able to access a URL that points to AvaTax and sign in using either their username/password or their account number/license key.

[QueryCompanies](https://developer.avalara.com/api-reference/avatax/rest/v2/methods/Companies/QueryCompanies/)  

Required

[Company code](/vat-erp/designing/company-code)  

Merchants/users must have the ability to designate which company within their account is linked to this integration.

[QueryCompanies](https://developer.avalara.com/api-reference/avatax/rest/v2/methods/Companies/QueryCompanies/)  

Required

[Test AvaTax connection](/vat-erp/designing/test-avatax-connection)  

Merchants/users need to be able to test the connection to the AvaTax service and verify their AvaTax credentials. This is required if a company code isn't lookup isn't provided on the admin page.

[Ping](https://developer.avalara.com/api-reference/avatax/rest/v2/methods/Utilities/Ping/), [QueryCompanies](https://developer.avalara.com/api-reference/avatax/rest/v2/methods/Companies/QueryCompanies/)

Conditional

[Option to disable document recording](/vat-erp/designing/option-to-disable-document-recording)  

In order for this connector to be used with other integrations, merchants/users must be able to control which connector to use for recording (committing) documents to AvaTax.

[CreateTransactionModel > Type](https://developer.avalara.com/api-reference/avatax/rest/v2/models/enums/CreateTransactionModel%20%3E%20type/)  

Required

[Option to disable AvaTax](/vat-erp/designing/option-to-disable-avatax)  

Your integration must allow merchants/users to turn on or off the Avalara Calculation engine service, independent of any other Avalara product or service. For example, if a customer doesn't agree with the amount of tax that AvaTax calculated, they can turn off this calculation and post using their own calculated tax.

N/A

Required

[Option to enable client-side logging](/vat-erp/designing/option-to-enable-client-side-logging)  

Your integration must allow merchants/users to retrieve detailed AvaTax transaction logging within the application, including the capture of round-trip processing time, and they need the complete request/response for each call made to Avalara services.

N/A

Required

[User guide](/vat-erp/designing/user-guide)  

Your integration must provide merchants/users with a user guide. Include in this guide screenshots and information allowing the user to configure AvaTax, including to where enter the company code, where to enter credentials, and how to map tax codes within the application.

N/A

Required

[Option to display prices with tax included](/vat-erp/designing/tax-included-option)  

Your integration must allow merchants/users to show prices in transactions with the tax included. They can do this by enabling the `taxIncluded` parameter in the line level of the `CreateTransaction` model.

[LineItemModel](https://developer.avalara.com/api-reference/avatax/rest/v2/models/LineItemModel/)  

Required

[![Closed](https://avalara-devdocs-prod.mcoutput.com/vat-erp/Skins/Default/Stylesheets/Images/transparent.gif)Items/charge integration](javascript:void\(0\);)

This section describes the requirements for how you define what you're selling and how you associated those with an item in AvaTax.

Requirement

Use case

Endpoints/Models

Type

[Item code](/vat-erp/designing/item-code)

Merchants/users must be able to specify a unique item code that's passed to AvaTax. Item codes allow for a maximum of 50 characters.

[ItemModel](https://developer.avalara.com/api-reference/avatax/rest/v2/models/ItemModel/)  

Required

[Item description](/vat-erp/designing/item-description)  

Merchants/users must be able to input a human-readable description for each `ItemCode` in their product catalog.

[ItemModel](https://developer.avalara.com/api-reference/avatax/rest/v2/models/ItemModel/)  

Required

[AvaTax tax code mapping](/vat-erp/designing/tax-code-mapping)  

Merchants/users must be able to associate an item or item category to an Avalara tax code to describe the taxability (for example, "Clothing-Shirts" – "B-to-C").

[ListTaxCodes](https://developer.avalara.com/api-reference/avatax/rest/v2/methods/Definitions/ListTaxCodes/)  

Required

[Tax code lookup](/vat-erp/designing/tax-code-lookup)  

Merchants/users should be provided with a method for looking up tax codes.

[ListTaxCodes](https://developer.avalara.com/api-reference/avatax/rest/v2/methods/Definitions/ListTaxCodes/)  

Required

[Non-standard items](/vat-erp/designing/non-standard-items)  

Merchants/users must have a way of associating Freight/Shipping and/or Handling charges to an Avalara tax code to describe the taxability.

[LineItemModel](https://developer.avalara.com/api-reference/avatax/rest/v2/models/LineItemModel/)  

Required

[![Closed](https://avalara-devdocs-prod.mcoutput.com/vat-erp/Skins/Default/Stylesheets/Images/transparent.gif)Sales/billing document integration](javascript:void\(0\);)

This section describes requirements for how to pass information from an invoice or quote.

Requirement

Use case

Endpoints/Models

Type

[Invoice messages](/vat-erp/transactions/certification-requirements/invoice-messages)  

Users must display and store any messages returned by the AvaTax engine on the customer invoice.

N/A  

Required

[Display and store the VAT code in responses](/vat-erp/transactions/certification-requirements/vat-code-in-responses)  

Users must display and store the VAT code returned by the AvaTax engine in the ERP transaction record.

N/A  

Required

[Display and store the AvaTax user's VAT code in responses](/vat-erp/transactions/certification-requirements/users-vat-code-in-response)  

Users must display and store the AvaTax user's VAT code returned by the AvaTax engine in the ERP transaction record  

N/A

Required

[Document code](/vat-erp/transactions/certification-requirements/document-code)  

Users must have a way to enter a document code to tie transactions in AvaTax to the transactions in their underlying system.  

[CreateTransactionModel](https://developer.avalara.com/api-reference/avatax/rest/v2/models/CreateTransactionModel/)  

Required

[Customer code](/vat-erp/transactions/certification-requirements/customer-code)  

Users must have a way to specify a customer code that can be used to identify any certificates linked to the customer.

[CreateTransactionModel](https://developer.avalara.com/api-reference/avatax/rest/v2/models/CreateTransactionModel/)  

Required

[Document date](/vat-erp/transactions/certification-requirements/document-date)  

Users must be able to specify the calendar date when a transaction occurs.  

[CreateTransactionModel](https://developer.avalara.com/api-reference/avatax/rest/v2/models/CreateTransactionModel/)  

Required

[Ship-from address (header and line levels)](/vat-erp/transactions/certification-requirements/ship-from-address)  

Your integration must be able to store at the header and line levels the address where items are shipped from.  

[AddressModel](https://developer.avalara.com/api-reference/avatax/rest/v2/models/AddressesModel/)  

Required  

[Ship-to address (header and line levels)](/vat-erp/transactions/certification-requirements/ship-to-address)  

Your integration must be able to store at both the header or line levels the address where items are shipped to.

[AddressModel](https://developer.avalara.com/api-reference/avatax/rest/v2/models/AddressesModel/)  

Required

[Point-of-order origin address (header and line levels)](/vat-erp/transactions/certification-requirements/poo-address)  

Your integration must be able to store at the header level or line levels the address from where your customer (home or business) placed the order to you.

[AddressModel](https://developer.avalara.com/api-reference/avatax/rest/v2/models/AddressesModel/)  

Required

[Goods place or service address (header and line levels)](/vat-erp/transactions/certification-requirements/gpos-address)  

Your integration should be able to store at the header or line levels the full address where the goods are located when there’s no transportation. This is required if your platform accepts this address.  

[AddressModel](https://developer.avalara.com/api-reference/avatax/rest/v2/models/AddressesModel/)  

Suggested  

[Import address (header and line levels)](/vat-erp/transactions/certification-requirements/import-address)  

If your system stores import addresses, then your integration must be able to store at the header or line levels the full address where goods are imported into. This is required if your platform accepts this address.

[AddressModel](https://developer.avalara.com/api-reference/avatax/rest/v2/models/AddressesModel/)  

Conditional

[Line number](/vat-erp/transactions/certification-requirements/line-number)  

Users must be able to include multiple lines on a transaction, with each line specified using a unique line number.  

[LineItemModel](https://developer.avalara.com/api-reference/avatax/rest/v2/models/LineItemModel/)  

Required

[Item code](/vat-erp/transactions/certification-requirements/item-code)  

Merchants/users must be able to specify an item code for each line in a transaction in order to associate a tax code for that item.

[LineItemModel](https://developer.avalara.com/api-reference/avatax/rest/v2/models/LineItemModel/)  

Required

[Item description](/vat-erp/transactions/certification-requirements/item-description)  

Merchants/users must be able to include a description of an item on each line of a transaction.

[LineItemModel](https://developer.avalara.com/api-reference/avatax/rest/v2/models/LineItemModel/)  

Required

[Quantity](/vat-erp/transactions/certification-requirements/quantity)  

Users must be able to specify the quantity of an item for each line of a transaction.  

[LineItemModel](https://developer.avalara.com/api-reference/avatax/rest/v2/models/LineItemModel/)  

Required

[Amount](/vat-erp/transactions/certification-requirements/amount)

Users must be able to specify the total amount for each line item in a transaction, keeping in mind the status of the `isTaxIncluded` flag.

[LineItemModel](https://developer.avalara.com/api-reference/avatax/rest/v2/models/LineItemModel/)  

Required

[Include tax in line amounts](/vat-erp/transactions/certification-requirements/include-tax-in-line-amounts)  

Users must be able to specify on each line in a transaction whether the total line amount includes tax.

[LineItemModel](https://developer.avalara.com/api-reference/avatax/rest/v2/models/LineItemModel/)  

Required

[Tax code](/vat-erp/transactions/certification-requirements/tax-code)  

Users must be able to specify a tax code for each line item in a transaction.

[LineItemModel](https://developer.avalara.com/api-reference/avatax/rest/v2/models/LineItemModel/)  

Required

[Verify that the transaction uses the Avalara-calculated tax amount](/vat-erp/transactions/certification-requirements/verify-avalara-calculated-tax)  

Users must ensure that the tax amount value from a transaction response is used to populate the tax field in the integration.

N/A

Required

[Shipping/freight handling](/vat-erp/transactions/certification-requirements/shipping-freight-handling)  

The handling of shipping and freight in AvaTax must match your system's implementation. For VAT transactions, freight can be included in the total amount or added as a separate line.

[LineItemModel](https://developer.avalara.com/api-reference/avatax/rest/v2/models/LineItemModel/)  

Required

[Discount transactions](/vat-erp/transactions/certification-requirements/discount-transactions)  

Users must ensure that discounts on transactions are processed appropriately.

[CreateTransactionModel](https://developer.avalara.com/api-reference/avatax/rest/v2/models/CreateTransactionModel/)  

[LineItemModel](https://developer.avalara.com/api-reference/avatax/rest/v2/models/LineItemModel/)  

Required

[Purchase orders/purchase invoices](/vat-erp/transactions/certification-requirements/purchase-orders-and-invoices)  

Your integration must mirror your system's workflow as it relates to orders and invoices and use the appropriate document types.

[CreateTransactionModel](https://developer.avalara.com/api-reference/avatax/rest/v2/models/CreateTransactionModel/)  

Suggested

[Commit transactions](/vat-erp/transactions/certification-requirements/commit-transactions)  

Your integration must mirror your system's workflow for a transaction lifecycle when committing documents.

[CommitTransaction](https://developer.avalara.com/api-reference/avatax/rest/v2/methods/Transactions/CommitTransaction/)  

Required

[Business identification number](/vat-erp/transactions/certification-requirements/business-identification-number)  

Users must have a way to specify the customer's business identification number (also known as VAT Registration ID). This data element should be found directly on the transaction header.

[CreateTransaction](https://developer.avalara.com/api-reference/avatax/rest/v2/methods/Transactions/CreateTransaction/)  

[LineItemModel](https://developer.avalara.com/api-reference/avatax/rest/v2/models/LineItemModel/)  

Required

[Country code](/vat-erp/transactions/certification-requirements/country-code)  

Your integration must allow users to specify the two-digit country code in transaction addresses.

[AddressModel](https://developer.avalara.com/api-reference/avatax/rest/v2/models/AddressesModel/)  

Required

[Transport](/vat-erp/transactions/certification-requirements/transport)  

Users must be able to specify who in the VAT transaction is responsible for handling the transportation of the physical goods.

[TransactionParameterModel](https://developer.avalara.com/api-reference/avatax/rest/v2/models/TransactionParameterModel/)  

[TransactionLineParameterModel](https://developer.avalara.com/api-reference/avatax/rest/v2/models/TransactionLineParameterModel/)  

Required

[Void/delete a document](/vat-erp/transactions/certification-requirements/void-delete-document)  

If the merchant's source application supports voiding/deleting invoices, then they must allow users to void/delete invoices in AvaTax.

[VoidTransactionModel](https://developer.avalara.com/api-reference/avatax/rest/v2/models/enums/VoidTransactionModel%20%3E%20code/)  

Conditional. This is required if the source application supports voiding/deleting invoices.

[Currency code](/vat-erp/transactions/certification-requirements/currency-code)  

Users must have a way to specify the three-character currency code at the document level.

[CreateTransaction](https://developer.avalara.com/api-reference/avatax/rest/v2/methods/Transactions/CreateTransaction/)  

Required

[Exchange rate](/vat-erp/transactions/certification-requirements/exchange-rate)  

Your integration should allow users to specify an exchange rate for transactions.

[CreateTransaction](https://developer.avalara.com/api-reference/avatax/rest/v2/methods/Transactions/CreateTransaction/)  

Suggested

[Exchange rate currency code](/vat-erp/transactions/certification-requirements/exchange-rate-currency-code)  

If your integration allows users to input an exchange rate, then you must allow users to also include the currency code for the exchange rate.

[CreateTransaction](https://developer.avalara.com/api-reference/avatax/rest/v2/methods/Transactions/CreateTransaction/)  

Conditional

[Exchange rate effective date](/vat-erp/transactions/certification-requirements/exchange-rate-effective-date)  

If your integration allows users to input an exchange rate, then you must also allow users to specify the effective date of the exchange rate in a transaction.

[CreateTransaction](https://developer.avalara.com/api-reference/avatax/rest/v2/methods/Transactions/CreateTransaction/)  

Conditional

[The user is the importer of record](/vat-erp/transactions/certification-requirements/user-is-the-importer-of-record)

Your integration should allow users to specify whether the user is the importer of record for a transaction.

[CreateTransaction](https://developer.avalara.com/api-reference/avatax/rest/v2/methods/Transactions/CreateTransaction/)  

[NexusModel](https://developer.avalara.com/api-reference/avatax/rest/v2/models/NexusModel/)  

Suggested

[Delivery terms](/vat-erp/transactions/certification-requirements/delivery-terms)  

Your integration should allow users to specify delivery terms for a transaction.

[TransactionParameterModel](https://developer.avalara.com/api-reference/avatax/rest/v2/models/TransactionParameterModel/)  

[TransactionLineParameterModel](https://developer.avalara.com/api-reference/avatax/rest/v2/models/TransactionLineParameterModel/)  

Suggested

[Second-hand goods](/vat-erp/transactions/certification-requirements/second-hand-goods)  

Users should be able to specify whether the goods being sold in a VAT transaction are second hand (used).

[LineItemModel](https://developer.avalara.com/api-reference/avatax/rest/v2/models/LineItemModel/)  

Suggested

[The counterparty is registered through a fiscal representative](/vat-erp/transactions/certification-requirements/counterparty-registered-through-rep)  

Your integration should allow users to specify whether the counterparty in a sales transaction is registered through a fiscal representative in a given country calculating VAT.

[TransactionParameterModel](https://developer.avalara.com/api-reference/avatax/rest/v2/models/TransactionParameterModel/)  

[TransactionLineParameterModel](https://developer.avalara.com/api-reference/avatax/rest/v2/models/TransactionLineParameterModel/)  

Suggested

[The Avalara client is registered through a fiscal representative](/vat-erp/transactions/certification-requirements/avalara-client-registered-through-fiscal-rep)  

Your integration should allow users to specify whether the Avalara client is registered through a fiscal representative in the given nexus country for VAT.

[CustomerSupplierCountryParamModel](https://developer.avalara.com/api-reference/avatax/rest/v2/models/CustomerSupplierCountryParamModel/)  

[TransactionParameterModel](https://developer.avalara.com/api-reference/avatax/rest/v2/models/TransactionParameterModel/)  

[TransactionLineParameterModel](https://developer.avalara.com/api-reference/avatax/rest/v2/models/TransactionLineParameterModel/)  

Suggested

[![Closed](https://avalara-devdocs-prod.mcoutput.com/vat-erp/Skins/Default/Stylesheets/Images/transparent.gif)Server and installation requirements](javascript:void\(0\);)

This section provides requirements for including calls made from the integration and for demonstrating/documenting the software installation process.

Requirement

Use case

Endpoints/Models

Type

[Pass integration identifier information](/vat-erp/designing/pass-integration-identifier)  

Users must include information about the connection as a signature in each transaction.

N/A

Required

[Consume and display error messages from API responses](/vat-erp/error-handling/consume-display-error-messages-from-responses)  

Users must ensure that the integration doesn’t include messages (errors, warnings, and so on) except those that would result from normal (but not valid) user input (for example, incorrect address data). In addition, these messages must be logged/displayed appropriately in the application.

N/A

Required

[A reasonable ratio of calculation calls to committed documents](/vat-erp/design-the-document-workflow/reasonable-ratio-of-calls)  

Users must ensure that the integration minimizes traffic. AvaTax will expect to see up to approximately 10 calculations per finalized document (including for abandoned carts). Failing to do so will drive up usage and billing.

You can also provide a simple "estimated tax" option, just ensure that the estimate doesn’t call to AvaTax.

N/A

Required  

[Demonstrate and document installation of software](/vat-erp/designing/demonstrate-and-document-installation)  

If there’s something to install on the source application, then you must demonstrate and document that process.

N/A

Required