---
schema_version: "1"
id: 6c6ed13242f406afc14caf56d05cac3b4416b5a1a072091133c0a403a9170dfb
title: Integrate Avalara for Point of Sale
collection: admin
version: current
locale: en-us
portal_url: https://docs.salesforce.com/admin/current/en-us/commerce/264-0-0/rt_adv_config_3p_int_tax_avalara.md
canonical_url: https://help.salesforce.com/s/articleView?id=commerce.rt_adv_config_3p_int_tax_avalara.htm&release=264.0.0&type=5
source_site: help.salesforce.com
content_type: documentation
content_hash: dcf1831991c91c58f7dcca69adf34c5af6dca0e888b0960fd653f2e8d37ed014
description: Automate tax calculations and tax filing by using Avalara in Point of Sale.
products:
  - Commerce
release: "264"
---
# Integrate Avalara for Point of Sale

Automate tax calculations and tax filing by using Avalara in Point of Sale.

When you configure Avalara for POS, Avalara performs all tax computations for sale transactions.

**Requirements:**

- Modern POS App Build: 6.2.3 or later
- Platform Support: iPad
- Offline Support: Yes
- Avalara account
- Product feed file with a column for Avalara's [Tax Code](https://developer.avalara.com/ecommerce-integration-guide/sales-tax-badge/transactions/item-classification/)
- OMS integration for refunds, exchanges, and cancellations

## Set Up Tax Engine

![Important](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-commerce-retail-264-0-0-production-enus/17d647fb-8988-49fb-9add-c4f4cc79c9e4/images/icon_important.png)

Important Use Avalara V2 integration. Avalara V2 synchronizes detailed tax information, including item tax, shipping tax, and total tax, with Avalara's system to verify accurate tax calculations for all orders. Avalara V1 doesn't offer syncing support and can result in tax miscalculations.

1. In CMS, go to **Integrations** | **Tax Engine Configuration**.
2. Click **Create**.
3. Under **Tax Engine**, select **Avalara V2**.
4. Configure the remaining fields. For field descriptions, see [Integrate Tax Engines](https://help.salesforce.com/s/articleView?id=commerce.rt_adv_config_3p_int_tax_overview.htm&release=264.0.0&type=5 "To calculate taxes, apply exemptions, and support tax overrides during checkout, configure a tax engine in the Point of Sale CMS.").
5. (Optional) After filling out the fields under Connectivity and Authentication, click **Verify** to test the connection to Avalara.
6. In CMS, go to **Store Management** | **Store Settings** | **OMS** | **Advanced**.
7. Turn on **Pre-generate order ID and use it as cart ID**. This setting enables Avalara's Sales Invoice Number to use Point of Sale's Order ID.
8. Save your changes.

## Product Field Mapping

Field mapping applies only if you upload products using feed files and support both online and offline transactions. If you upload products using an API, provide the tax class using the selected custom attribute in the payload. For payload specifications, see Point of Sale's [SwaggerHub documentation](https://app.swaggerhub.com/apis/PredictSpring1/POSAPI_SPEC/).

To support tax calculation in offline mode, map product feed attributes to include tax types dynamically.

1. In CMS, go to **Feeds** | **Field Mapping** | **Products**.
2. Under **Source Fields**, map the tax custom attributes to a different custom attribute. For example, map taxClassID to CustomString12.![A form shows field transformation from SKU to custom string.](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-commerce-retail-264-0-0-production-enus/17d647fb-8988-49fb-9add-c4f4cc79c9e4/retail/images/rt_adv_config_3p_int_tax_avalara_prod_map.png)
3. In CMS, go to **Store Management** | **Store Settings** | **Checkout**.
4. Expand **Tax**.
5. Under **Product Field to read tax class**, enter the custom string you previously mapped in camelCase format (for example, customString12).![An input box contains a product field.](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-commerce-retail-264-0-0-production-enus/17d647fb-8988-49fb-9add-c4f4cc79c9e4/retail/images/rt_adv_config_3p_int_tax_avalara_prod_field.png)

![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-commerce-retail-264-0-0-production-enus/17d647fb-8988-49fb-9add-c4f4cc79c9e4/images/icon_note.png)

Note Don't send a separate tax class field in the product feed.

This screenshot shows the tax class "GENERIC" configured in the product feed. During offline processing, this tax class determines the tax rate. Your tax class can differ (for example, PC040100 or PC000000) based on your Avalara mapping.

![A field transformation form enables modification of a string with regular expressions.](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-commerce-retail-264-0-0-production-enus/17d647fb-8988-49fb-9add-c4f4cc79c9e4/retail/images/rt_adv_config_3p_int_tax_avalara_field_trans.png)

Offline process requires this product feed setting because offline processing supports a default tax class configured for all store locations.

![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-commerce-retail-264-0-0-production-enus/17d647fb-8988-49fb-9add-c4f4cc79c9e4/images/icon_note.png)

Note Upload the product feed after completing these settings.

## Schedule Tax Rate File Download

Avalara computes taxes directly, so the tax feed isn't necessary for online processing. If you support both online and offline processing, upload the tax feed from Avalara to calculate taxes during offline mode. Tax rates are zip code-specific, so make sure that the store's postal code in CMS and Avalara match. For more information, see Avalara's [Download Feature](https://developer.avalara.com/api-reference/avatax/rest/v2/methods/TaxContent/DownloadTaxRatesByZipCode/).

You can upload the tax feed from Avalara at scheduled intervals.

1. In CMS, go to **Feeds** | **Scheduled Upload**.
2. Click the plus (+) icon and select **Tax Rates**.
3. Configure the date and time of the schedule. For field descriptions, see [Scheduling Feeds](https://help.salesforce.com/s/articleView?id=commerce.rt_adv_config_data_feeds_manage_schedule.htm&release=264.0.0&type=5 "Schedule your data feeds in Point of Sale so that you have the most up-to-date data. Select a runtime that meets your business needs. Get advice on creating the schedule. When no longer needed, delete a schedule.").
4. Under **Feed Source Type**, select **Avalara**.
5. Under **Account ID**, enter your Avalara account ID.
6. Under **License Key**, enter your Avalara license key.
7. Under **Base URL**, enter the Avalara base URL (for example, `https://sandbox-rest.avatax.com/api/v2`).
8. Under **Feed File Type**, select the feed file type (for example, CSV or TSV).

![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-commerce-retail-264-0-0-production-enus/17d647fb-8988-49fb-9add-c4f4cc79c9e4/images/icon_note.png)

Note A separate feed file for the tax rate isn't required.

## Commit Tax Transaction

Point of Sale supports conditional tax transaction commits in Avalara after a sale transaction to confirm that the appropriate tax applies in the app. By default, Point of Sale doesn't auto-commit the tax transaction. To turn on auto-commit after completing a sale transaction, configure this setting.

1. In CMS, go to **Store Management** | **Store Settings**.
2. Under **Modules**, go to **Tax**.
3. Turn on **Submit/Finalize Tax Details After Order Submission**.

## Enable Value-added Tax (VAT)

To send tax-inclusive pricing to Avalara and map external tax IDs to your downstream systems, enable the VAT setting.

1. In CMS, go to **Store Management** | **Store Settings** | **Tax**.
2. Turn on **Is VAT enabled for this merchant**.

## OMS Integration

Set up an OMS integration (for example, NetSuite) to post order refunds, exchanges, and cancellations to Avalara.

1. In CMS, go to **Integrations** | **OMS Configuration**.
2. Click **Create**.
3. Select the OMS type and configure the remaining fields.

## Additional Information

### Onboard Merchant for Avalara Integration

Point of Sale's integration with Avalara uses the REST model for authentication. For more information, see Avalara's [Authentication Method](https://developer.avalara.com/ecommerce-integration-guide/sales-tax-badge/authentication-in-avatax/authentication-methods/).

For offline transactions, Point of Sale supports tax rate file downloads from Avalara. Tax rates are zip code-specific. For more information, see Avalara's [Download Feature](https://developer.avalara.com/api-reference/avatax/rest/v2/methods/TaxContent/DownloadTaxRatesByZipCode/).

**Product feed changes for Avalara integration:**

- Online transactions only: You don't need to add tax-related attributes in the product feed.
- Online and offline transactions: POS requires the CMS configurations in this topic for proper tax computation during offline transactions.

### Tax Codes

Avalara Tax Codes apply the appropriate tax rates to individual products. Map the codes to your products as described in [Product Field Mapping](https://help.salesforce.com/s/articleView?id=commerce.rt_adv_config_3p_int_tax_avalara.htm&release=264.0.0&type=5).

After mapping, Point of Sale sends the product ID as the itemCode and the mapped field (for example, CustomString12) as the taxCode. Avalara first looks for a match of the itemCode. If found, Avalara associates it with a tax code. If not found, Avalara looks for a match of the taxCode and applies the appropriate tax rate. Avalara defaults to P0000000 if the taxCode isn't available.

### Offline Tax Feed Generation

![A sequence diagram illustrates offline tax file generation.](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-commerce-retail-264-0-0-production-enus/17d647fb-8988-49fb-9add-c4f4cc79c9e4/retail/images/rt_adv_config_3p_int_tax_avalara_offline_tax_feed_generation.png)

### Supported Avalara Endpoints

Point of Sale supports these Avalara endpoints:

<table class="slds-table slds-table_bordered slds-max-medium-table_stacked slds-m-bottom_small ">
            <colgroup>
              <col>
              <col>
            </colgroup>
            <thead class="slds-text-title_caps ">
              <tr class="">
                <th scope="col" class="slds-cell-wrap" style="vertical-align:top;" id="d124315e677"> Avalara Endpoint</th>
                <th scope="col" class="slds-cell-wrap" style="vertical-align:top;" id="d124315e680">Point of Sale Usage</th>
              </tr>
            </thead>
            <tbody>
              <tr class="">
                <td data-label="Avalara Endpoint" class="slds-cell-wrap" style="vertical-align:top;" headers="d124315e677 "> CreateOrAdjustTransaction</td>

                <td data-label="Point of Sale Usage" class="slds-cell-wrap" style="vertical-align:top;" headers="d124315e680 ">
                  <ul>
                    <li>Tax computation during cart operations.</li>

                    <li>All Avalara tax requests, belonging to the same Point of Sale cart, group
                      under the same Avalara transaction code.</li>

                    <li>Point of Sale cart uses salesInvoice to perform Avalara transactions for
                      sale purposes.</li>

                  </ul>
                </td>

              </tr>
              <tr class="">
                <td data-label="Avalara Endpoint" class="slds-cell-wrap" style="vertical-align:top;" headers="d124315e677 "> CommitTransaction</td>

                <td data-label="Point of Sale Usage" class="slds-cell-wrap" style="vertical-align:top;" headers="d124315e680 ">
                  <ul>
                    <li>After completing the sales transaction, Point of Sale commits the Avalara
                      transaction created during cart operation.</li>

                    <li>This commit is conditional and POS does auto-commit if <span class="menucascade"><strong class="uicontrol">Submit/Finalize Tax Details After Order Submission</strong></span> is on. Refer to <a href="https://help.salesforce.com/s/articleView?id=commerce.rt_adv_config_3p_int_tax_avalara.htm&amp;release=264.0.0&amp;type=5">Commit Tax Transaction</a>
                    </li>

                  </ul>
                </td>

              </tr>
              <tr class="">
                <td data-label="Avalara Endpoint" class="slds-cell-wrap" style="vertical-align:top;" headers="d124315e677 "> DownloadTaxRatesByZipCode</td>

                <td data-label="Point of Sale Usage" class="slds-cell-wrap" style="vertical-align:top;" headers="d124315e680 ">
                  <ul>
                    <li>To schedule the tax rate download. Refer to <a href="https://help.salesforce.com/s/articleView?id=commerce.rt_adv_config_3p_int_tax_avalara.htm&amp;release=264.0.0&amp;type=5">Schedule Tax Rate File Download</a> .</li>

                  </ul>
                </td>

              </tr>
            </tbody>
          </table>

### Example JSON Request

When Point of Sale calls Avalara's API, we provide the following information and more:

- Product IDs
- Tax classes
- Shipping addresses
- Store addresses

![Example](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-commerce-retail-264-0-0-production-enus/17d647fb-8988-49fb-9add-c4f4cc79c9e4/images/icon_example.png)

Example

```
Tax service request: {
 "createTransactionModel": {
   "code": "PS00270499",
   "type": "SalesInvoice",
   "companyCode": "DEFAULT",
   "date": "2023-11-28",
   "purchaseOrderNo": "PS00270499",
   "currencyCode": "USD",
   "lines": [
     {
       "number": "1",
       "quantity": 1,
       "amount": 40.00,
       "taxCode": "P0000000",
       "itemCode": "HRL75-RF1A",
       "description": "CRMSN SPARKLE DRESS-TM D",
       "addresses": {
         "shipFrom": {
           "line1": "75 Rockefeller Plaza",
           "city": "New York",
           "region": "NY",
           "postalCode": "10019"
       },
       "shipTo": {
         "line1": "75 Rockefeller Plaza",
         "city": "New York",
         "region": "NY",
         "postalCode": "10019"
       }
     }
   },
   {
     "number": "2",
     "quantity": 1,
     "amount": 0.05,
     "itemCode": "ECHOBAGNY05",
     "description": "ORDINANCE BAG TAX",
     "addresses": {
       "shipFrom": {
         "line1": "75 Rockefeller Plaza",
         "city": "New York",
         "region": "NY",
         "postalCode": "10019"
     },
     "shipTo": {
       "line1": "75 Rockefeller Plaza",
       "city": "New York",
       "region": "NY",
       "postalCode": "10019"
     }
   }
 }
 ],
   "addresses": {
     "shipFrom": {
       "line1": "75 Rockefeller Plaza",
       "city": "New York",
       "region": "NY",
       "postalCode": "10019"
  },
   "shipTo": {
     "line1": "75 Rockefeller Plaza",
     "city": "New York",
     "region": "NY",
     "postalCode": "10019"
    }
  },
  "customerCode": "Guest"
}
}, apiEndpoint: /transactions/createoradjust, method:POST
```

## Known Issues and Restrictions

The following features have limitations with Avalara integration:

- POS uses tax class during offline tax calculation only. Online tax calculation is based on the mapping provided in Avalara.
- Offline tax exemption isn't available because Avalara doesn't provide a tax exemption feed for offline processing.
- Configure overridden tax rates (for example, tax holidays) in Avalara to support tax override.
- Fee for online mode is available only if configured in the Avalara system.
- POS doesn't support offline tax override.
- POS doesn't support fee for offline mode.