Skip to main content

ONESOURCE Indirect Tax Determination App V2

Zuora

ONESOURCE Indirect Tax Determination App V2

Zuora’s tax app now supports the OneSource Indirect Tax Determination V2 App, which is built on a new tax platform and integrates with the latest OneSource Indirect Tax Determination product. The existing ONESOURCE Indirect Tax Determination app is built on OneSource legacy SOAP (Simple Object Access Protocol) API. Migrating from the existing OneSource SOAP configuration to REST has several key improvements and benefits, such as improved security, built-in void functionality, API version support, customization flexibility, and so on.

The V2 application integrates with ONESOURCE Indirect Tax Determination using the latest REST API and operates independently as a separate tax solution. Introducing the V2 App will have no impact on users currently utilizing the ONESOURCE Indirect Tax Determination App.

Prerequisites

Difference between legacy OneSource App and OneSource Indirect Tax Determination V2 app

The existing ONESOURCE Indirect Tax Determination app is built on OneSource legacy SOAP API. The new App V2 is built on a new tax platform and integrates with the latest REST API. Following are the differences between the existing OneSource App and the new App V2:

  • Authentication
    The legacy ONESOURCE App supports various authentication methods including Basic-Auth, BearedId, OAuth 2.0, whereas REST exclusively uses OAuth2 for enhanced security.
  • Void Functionality
    ONESOURCE App V2 includes a straightforward built-in void/reverse feature. The legacy ONESOURCE App’s void function involves sending a negative total amount of the previous transaction, though this method is not recommended.
  • API Version
    OneSource recommends using the REST API version moving forward, as updates to their legacy SOAP API are no longer supported.

Configure Tax Engine

  1. Navigate to Settings > Billing > Setup Tax Engine and Tax Date.
  2. Click Setup New Tax Engine and select ONESOURCE Indirect Tax Determination V2 from the dropdown list.
  3. Toggle Use Test Environment if you want Billing to use the test service URL. This enables you to test tax calculations during your Billing setup.
  4. Enter the following details:
    1. Engine Name - The name of the engine.
    2. Authentication Type - OAuth 2.0 is the default authentication type. Enter the client ID and client secret from your tax vendor.
  5. Enter the following in the Company and Seller Information section:
    1. Company Code - A unique identifier for the company in the AvaTax system, used to link billing information to the appropriate business entity. This field is critical for ensuring the correct company is referenced in tax calculations.
    2. Origin Address - The address where transactions originate from, which is essential for accurate tax calculation. The tax rate can vary depending on the origin location, as different jurisdictions may have different tax rules. This field helps ensure that the correct tax rates are applied based on where the transaction begins.
    3. Add Company - The option to add new company details.
  6. Select the required authentication type from the drop-down list.
  7. Toggle to enable Advanced Settings and adjust the Settings as needed.
  1. Click Save.
  2. Toggle to enable Advanced Settings and adjust the Settings as needed.
Field Description
Request Template

Configure the template as required. Click Use Default Template to use the preconfigured template. 

Zuora uses the Request Template in Text/XML or Application/JSON format to populate invoice information according to your setup. Templates are rendered dynamically using the Liquid Template Language, available in Text/XML or Application/JSON format. 

Ensure the utilization of Context Object information while creating a tax template.

Note: transaction_items is no longer supported as a context object for template rendering in V2; instead, the default document_items must be used. In V1, transaction_items were specifically tailored to exclude discount charges from being sent to Taxamo as negative transaction lines. In V2, however, we now manage discount and credit items as negative transaction lines by default, so transaction_items are no longer necessary.

Custom Fields Choose from the available custom fields from the tax engine.
Response Field Mapping: Field Mappings The option to retrieve data from the tax engine response and store it on the Taxation Item object. For more information on Flexible Field Mapping, see Flexible Tax Mapping.

Network : Timeout

Net Read Timeout

The timeout period for tax requests. The available options are 1 minute, 2 minutes, 5 minutes, and 10 minutes.
Request Headers Additional headers to tax requests are beneficial in scenarios requiring authentication through firewalls or other specific cases.

You can also enter the following in the Standard section of Request Templates:

Default Standard Template

{
    "callingSystemNumber": "SAP1000",
    "hostSystem": "VGD",
    "companyRole": "S",
    "externalCompanyId": "DPPZUORADEV_1000",
    "processingOptions":
    {
        "chargeIncludedInAmounts": false,
        "chargeResponse": "SeparateAuthority",
        "responseSummary": "FullDetails",
        "documentAmountType": "GrossAmount"
    },
    "documents":
    [
        {
            "documentType": "Sales Invoice",
            "documentNumber": "{{document["invoiceNumber"]}}",
            "currencyCode": "{{document["currency"]}}",
            "addresses":
            [
                {
                    "type": "shipFrom",
                    "country": "{{seller["country"]}}",
                    "region": "{{seller["state"]}}",
                    "city": "{{seller["city"]}}",
                    "postcode": "{{seller["zipCode"]}}"
                },
                {
                    "type": "shipTo",
                    "country": "{{customer["country"]}}",
                    "region": "{{customer["state"]}}",
                    "city": "{{customer["city"]}}",
                    "postcode": "{{customer["zipCode"]}}"
                }
            ],
            "documentDate": "{{document["invoiceDate"]}}",
            "lines":
            [
                {% for document_item in document_items %}
                    {% if forloop.first != true %},{% endif %}
                {
                    "lineNumber": "{{document_item["id"]}}",
                    "amount": "{{document_item["totalAmount"]}}",
                    "productCode": "{{document_item["productName"]}}"
                }
                {% endfor %}
            ]
        }
    ]
}

You can refer to ONESOURCE Indirect Tax Calculation REST API to understand the request payload fields for tax calculation API.

  1. <Optional> Enter the following to void the default template:

 Refer to ONESOURCE Indirect Tax Calculation REST API to understand the request payload fields for reverse or void  tax API.

{
"callingSystemNumber": "SAP1000",
"companyRole": "S",
"documentNumber": "{{document["invoiceNumber"]}}",
"externalCompanyId": "DPPZUORADEV_2000",
"hostSystem": "VGD",
"documentDate": "{{document["documentDate"]}}"
}
  1. Click Save.

Migration Guidelines

  • Migrating existing ONESOURCE Indirect Tax Determination app customers to App V2 may require template redesign.
  • Certain fields like companyId/externalCompanyId and companyRole remain similar between the two apps.