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. Select Global Tax Hub from the drop-down list.
  3. Click Setup New Tax Engine.
  4. Configure the necessary data as shown in the following image:
    clipboard_e75173225acec46bda772631363c6fdab.png
  5. Specify the URL for performing tax calculations in the Tax Calculation URL field. The URL may vary depending on the region or customer. If you are using ONESOURCE Indirect Tax Determination Cloud, use one of the following URLs:

OneSource_REST supports only OAuth 2.0 kind of authentication.

  1. Select the required authentication type from the drop-down list.
  2. Enter the Access Token URL as specified, if you are using ONESOURCE Indirect Tax Determination Cloud:

The Access Token URL may differ based on your region or customer specifications. Contact your vendor for confirmation.

  1. Request for the following credentials from your tax vendor:
    • Scope
    • User ID (Client ID)
    • Private Key (Client Secret)
  2. Click Save.
  3. 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 %}
            ]
        }
    ]
}
  1. Customize the fields in the template. You can refer to ONESOURCE Indirect Tax Calculation REST API to understand the request payload fields for tax calculation API.
    • externalCompanyId: The unique identifier used by your business application to indicate which company to use in Determination. This element may be passed at the header level, or with each document, and is passed through to the Determination response. 
    • callingSystemNumber: A brief description of the source system, and the origin of the transaction.
    • hostSystem: The name of the ERP instance sending the transaction.
    • companyRole: The role the company plays in a given transaction: Buyer (B), Middleman (M) or Seller (S). Each role results in different transaction tax and reporting requirements.
    • processingOption: Several options are available, ensure that the responseSummary is set to Full Details
  2. 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.