CCH® SureTax® Integration for SAP S/4HANA Cloud Technical Guide
Updated: Nov 5, 2024
Introduction
This guide will cover technical details for CCH SureTax's iFlows used to integrate with SAP's 'External Sales & Use Tax Calculation -- Integration with 3^rd^ Party Tax Solution on SAP S/4HANA Cloud (S4HC)'.
This integration supports:
- General Merchandise
- Certified by SAP ICC
- Support for SAP S4HC 2011
This uses SAP Communication Scenario SAP_COM_0177, which uses 6 outbound services from S4HC to pass all needed data to CCH SureTax Artifacts (iFlows) deployed on CI.
- CO_TAX_JURI_DETER_SPRX: Determine Tax Jurisdiction Codes
- CO_TAX_CALCULATION_SPRX: Calculate Taxes
- CO_TAX_UPDATE_SPRX: Update Tax Documents
- CO_TAX_FORCE_UPDATE_SPRX: Force Update Tax Documents
- CO_TAX_JURI_GET_CHANGE_LIST_SPRX: Gets all changed Tax Jurisdiction Codes
- CO_TAX_JURI_REDEFINE_SPRX: Mass Redefine Tax Jurisdiction Codes
Installation and Configuration
Requirements:
- CCH SureTax account for V07 with an active ClientNumber and ValidationKey
- SAP Cloud Integration (CI formerly CI) instance
- Used for Deploying SAP integration Flows (iFlows)
- SAP S4HANA Cloud (S4HC)
- Supported Countries: USA
- As stated in SAP Documentation SA_COM_0177 only supports USA Tax calculation.
SAP S4HC Configuration Requirements
- DOC_NUMBER is expected to be unique
- TAX_DATE is expected to be the date of the transaction
- REP_DATE is expected to be the date of posting of the transaction
Package needed for Installation:
- Get the latest SAP CI package for CCH SureTax (CCH SureTax Integration for SAP S/4HANA Cloud).
- This package contains the following CCH SureTax artifacts (iFlows):
- CalculateTax
- DetermineJurisdiction
- UpdateTax
- ForceUpdate
- GetChanged
- MassRedefine
- This package contains the following CCH SureTax artifacts (iFlows):
In SAP CI: Install Package and Deploy Artifacts
- Log in to your SAP CI instance and click on 'Design'
- If you have the CCH SureTax package
- Select 'Import' from the top right corner
- Import using the CCH SureTax package (CCH® SureTax® Integration for SAP S/4HANA Cloud)
- Alternative:
- You can use SAP CI's Discover section and search (if available) from there
- You should see it imported in your SAP CI instance -> 'Design':
- To Deploy in SAP CI, you can go to 'Design' -> select the CCH SureTax package -> Select 'Artifacts' tab -> deploy each of the below artifacts via 'Actions':
- CalculateTax
- DetermineJurisdiction
- All steps for CCH SureAddress in this document are only required if Address Validation is enabled for DetermineJurisdiction iFlow.
- Address Validation using CCH SureAddress is used only when address validation is enabled, CCH SureAddress connection and user are setup in SAP CI, and the address received in TAX_JURISDICTION_SEND from SAP meets the minimum address requirements.
- CCH SureAddress requires the following information at minimum:
- PrimaryAddressLine
- State
- City or Zipcode
- CCH SureAddress requires the following information at minimum:
- UpdateTax
- ForceUpdate
- MassRedifine
- GetChanged
- Verify deployment via SAP CI -> 'Monitor' -> Manage Integration Content -> 'All'
In SAP CI: Configure your SAP CI instance for CCH SureTax Artifacts (iFlows)
- Add 'suretaxuser' to SAP CI:
- Log into SAP CI and select 'Monitor' -> open 'Security Material'
- Click on Add -> User Credentials
- Name = suretaxuser
- Use this exact name because it is used by the iFlows
- User = Your CCH SureTax ClientNumber
- Password = Your CCH SureTax ValidationKey
- Name = suretaxuser
Note: Client Number Validation key combination would be different for prod and cert
You can add multiple combination of Client number and Validation Key as Security Materials, as per your needs for Testing environment and Prod Environments.
After adding, you should see similar to below:
Add 'sureaddressuser' to SAP CI:
- Log into SAP CI and select 'Monitor' -> open 'Security Material'
- Click on Add -> User Credentials
- Name = sureaddressuser
- Use this exact name because it is used by the iFlows
- User = Your CCH SureAddress ClientNumber
- Password = Your CCH SureAddress ValidationKey Note: Client Number Validation key combination would be different for prod and cert
- Name = sureaddressuser
You can add multiple combination of Client number and Validation Key as Security Materials, as per your needs for Testing environment and Prod Environments
This two user credentials fields are configurable and can be configured at the artifact level
- Enter the value of credentials name as either of the above-mentioned Security Materials.
- Eg. 🡺 Suretaxuser_prod, suretaxuser_cert, sureaddressuser_prod, sureaddressuser_cert
Add CCH SureTax's SSL certificate to the keystore for connections to work
- Log into SAP CI and select 'Monitor' -> open 'Manage Keystore'
- Click on Add -> Certificate
- Alias = you can use a descriptive name here (e.g. suretaxprod)
- File = upload SSL certificate for CCH SureTax
- You can easily download the SSL certificate by using your internet browser.
- E.g. for Cert
- With your browser go to https://testapi.taxrating.net (hostname may vary for Production/Cert/QA)
- Use browser's export certificate feature (steps vary depending on browser used)
- Note that you do not need to export the 'chain' version of this file as it may exceed the max upload size in SAP CI for certificates.
- E.g. for Cert
- You can easily download the SSL certificate by using your internet browser.
- After adding, you should see:
- You can verify connectivity via 'Monitor' -> 'Connectivity Tests' -> enter CCH SureTax hostname (e.g. testapi.taxrating.net)
- You can follow the same steps as above to add multiple suretax SSL certificates (Prod/Cert).
Add CCH SureAddress's SSL certificate to the keystore for connections to work
- Log into SAP CI and select 'Monitor' -> open 'Manage Keystore'
- Click on Add -> Certificate
- Alias = you can use a descriptive name here (e.g. sslcertsureaddress)
- File = upload SSL certificate for CCH SureTax
- You can easily download the SSL certificate by using your internet browser.
- E.g. for Cert
- With your browser go to https://testapi.sureaddress.net/sureaddress.asmx (hostname may vary for Production/Cert/QA)
- Use browser's export certificate feature (steps vary depending on browser used)
- Note that you do not need to export the 'chain' version of this file as it may exceed the max upload size in SAP CI for certificates.
- E.g. for Cert
- You can easily download the SSL certificate by using your internet browser.
- After adding, you should see:
- You can verify connectivity via 'Monitor' -> 'Connectivity Tests' -> enter CCH SureAddress hostname (e.g. testapi.sureaddress.net)
- You can follow the same steps as above to add multiple sureaddress SSL certificates (Prod/Cert).
In SAP CI: Configure CCH SureTax URLs
The CCH SureTax iFlows must have the externalized parameter 'SureTax_URL' configured before use.
- CCH SureTax iFlows use CCH SureTax's V07 web services, so their URLS will be in the following format:
-
- E.g. for CERT: https://testapi.taxrating.net/Services/V07/SureTax.asmx
- Please contact your CCH SureTax representative for the URLs for your account.
- Verify that the 'suretaxuser_cert' added in the previous section's 'Security Material' has the CCH SureTax ClientNumber and ValidationKey for the CCH SureTax URL you want to use.
-
- Configure SureTax_URL in the following steps for each CCH SureTax artifact
- Open SAP CI -> 'Design' -> Select the CCH SureTax package -> Select DetermineJurisdiction Artifact -> Click on 'Configure'
- Select 'Receiver' tab there is 'Connection' section where in 'Address' field would hold the URL to SureTax API.
- Edit the hostname in the Address field
- Click on Save and then Deploy
- Highlighted areas are referred to in the above steps
- If using CCH SureAddress, update the Address for SureAddress_Receiver on the above screen by selecting SureAddress_Receiver for 'Receiver'
- You can Optionally enable address validation from the above form by selecting 'More' in the header and entering '1' for Enable_Address_Validation field:
- Additionally, user should be able to configure set of user credentials they would like to be used in communication with SureTax.
- Open SAP CI -> 'Design' -> Select the CCH SureTax package -> Select CalculateTax Artifact -> Click on 'Configure'
- Select 'Receiver' tab there is 'Connection' section where in 'Address' field would hold the URL to SureTax API.
- Edit the hostname in the Address field
- Click on Save and then Deploy
- Highlighted areas are referred to in the above steps
- Select 'More' tab to add all the other parameters that are needed for SureTax request
- 'SureTax_Credentials_Name' and 'SureTax_TTCode_Map_ExtensionField' are unique in the sense their values should be coming from SAP CPI Environment
- 'SureTax_Credentials_Name' 🡪 values would be any values that would be added in Security Material step. This will make sure correct Client Number and Validation Key is picked for the calculation.
- 'SureTax_TTCode_Map_ExtensionField' 🡪 This field gives an ability to add any field from the SAP SOAP request to be added and its corresponding value will be sent to SureTax in the request. Possible fields are
- MATNR
- PROD_CODE
- GROUP_PROD_CODE
- Any Extension field from EXTENSION_FIELD001 to EXTENSION_FIELD040
Note: The name of the field should be exactly how it is in the SOAP element
Open SAP CI -> 'Design' -> Select the CCH SureTax package -> Select UpdateTax Artifact -> Click on 'Configure'
- Select 'Receiver' tab there is 'Connection' section where in 'Address' field would hold the URL to SureTax API.
- Edit the hostname in the Address field
- Click on Save and then Deploy
- Highlighted areas are referred to in the above steps
- Select 'More' tab to add all the other parameters that are needed for SureTax request
- 'SureTax_Credentials_Name' and 'SureTax_TTCode_Map_ExtensionField' are unique in the sense their values should be coming from SAP CPI Environment
- 'SureTax_Credentials_Name' 🡪 values would be any values that would be added in Security Material step. This will make sure correct Client Number and Validation Key is picked for the calculation.
- 'SureTax_TTCode_Map_ExtensionField' 🡪 This field gives an ability to add any field from the SAP SOAP request to be added and its corresponding value will be sent to SureTax in the request. Possible fields are
- MATNR
- PROD_CODE
- GROUP_PROD_CODE
- Any Extension field from EXTENSION_FIELD001 to EXTENSION_FIELD040
Note: The name of the field should be exactly how it is in the SOAP element
Open SAP CI -> 'Design' -> Select the CCH SureTax package -> Select ForceUpdate Artifact -> Click on 'Configure'
- Select 'Receiver' tab there is 'Connection' section where in 'Address' field would hold the URL to SureTax API.
- Edit the hostname in the Address field
- Click on Save and then Deploy
- Highlighted areas are referred to in the above steps
- Select 'More' tab to add all the other parameters that are needed for SureTax request
- 'SureTax_Credentials_Name' and 'SureTax_TTCode_Map_ExtensionField' are unique in the sense their values should be coming from SAP CPI Environment
- 'SureTax_Credentials_Name' 🡪 values would be any values that would be added in Security Material step. This will make sure correct Client Number and Validation Key is picked for the calculation.
- 'SureTax_TTCode_Map_ExtensionField' 🡪 This field gives an ability to add any field from the SAP SOAP request to be added and its corresponding value will be sent to SureTax in the request. Possible fields are
- MATNR
- PROD_CODE
- GROUP_PROD_CODE
- Any Extension field from EXTENSION_FIELD001 to EXTENSION_FIELD040
Note: The name of the field should be exactly how it is in the SOAP element
Open SAP CI -> 'Design' -> Select the CCH SureTax package -> Select MassRedefine Artifact -> Click on 'Configure'
- Select SOAP connection between Request Reply and SureTax_Receiver
- Click on the Connection tab
- Edit the hostname in the Address field
- Highlighted areas are referred to in the above steps
- Open SAP CI -> 'Design' -> Select the CCH SureTax package -> Select GetChanged Artifact -> Click on 'Configure'
- Select SOAP connection between Request Reply and SureTax_Receiver
- Click on the Connection tab
- Edit the hostname in the Address field
- Highlighted areas are referred to in the above steps
- CCH SureTax iFlows allows the customers to customize the Sender Address as per their needs.
- Open SAP CPI 🡪 'Design' 🡪 Select any Artifact 🡪 Click Configure
- Under Sender Tab 🡪 Connection 🡪 Address
- /WK_S4CLDtoWK_CalculateTax -🡪 this value can be changed by the customer
- The sender address is now a customizable parameter across all the artifacts
In CI: Configure Default Values used by Artifacts for CCH SureTax API Requests
Various other CCH SureTax values can be configured using externalized parameters for each iFlow. Please see section 3 ("CCH SureTax iFlows Configuration with Externalized Parameters") for a complete list. Below are some common configurations for CCH SureTax.
- Update by opening CCH SureTax Package -> open artifacts CalculateTax or UpdateTax or ForceUpdate -> Configure -> More, all the fields that can be configured are under this tab
- BusinessUnit
- SalesTypeCode
- 'R' is default
- RegulatorCode
- '99' is default
- UnitType
- '00' is default
- Other CCH SureTax fields can be edited to match your business needs, but the above are the most common elements.
- Screenshot of Configure page is as follows and it contains all the fields that can be set top a default value:
Configure S4/HANA Public Cloud system with External Sales and Use Tax Calculation (SAP_COM_0177)
Download and follow the directions in SAP_COM_0177_ConfigGuide file, which can be found in SAP Release Note for external Sales and Use Tax Calculation - https://launchpad.support.sap.com/#/notes/2598888
- Directions for following SAP_COM_0177_ConfigGuide file:
- In S4HC's Fiori LaunchPad - when you create the Communication Arrangement for SAP_COM_0177, please follow the below directions.
- Outbound Services section should have the following settings to match CCH SureTax iFlows:
- Determine Tax Jurisdiction Codes
- Path = /cxf/DetermineJurisdiction
- Calculate Taxes
- Path = /cxf/CalculateTax
- Update Tax Documents
- Path = /cxf/UpdateTax
- Force Update Tax Documents
- Path = /cxf/ForceUpdate
- Get Changed Jurisdictions
- Path = /cxf/GetChanged
- Mass Redefine Jurisdiction Code
- Path = /cxf/MassRedefine
- Determine Tax Jurisdiction Codes
- Screenshot of Outbound Services section
- Outbound Services section should have the following settings to match CCH SureTax iFlows:
- In S4HC's Fiori LaunchPad - when you create the Communication Arrangement for SAP_COM_0177, please follow the below directions.
- Directions for following SAP_COM_0177_ConfigGuide file:
More documentation from SAP release note can be found here - https://launchpad.support.sap.com/#/notes/2528016
In SAP S4HC Configure Tax Jurisdiction Code Structure to use CCH SureTax Geocode
This is required for configuration.
External US Tax Jurisdiction Code should be set to the following, below is screenshot from SAP S4HC Fiori Launchpad. The steps to reach the below form is found in SAP's External Tax Calculation Integration Configuration Guide -> Specify the Tax Jurisdiction Code section:
[Alternatively, the below can be performed by a SAP expert using SAP GUI:]{.underline}
Following steps are from SAP:
Specify Structure for Tax Jurisdiction Code
Use
In this activity, you determine the structure of the tax jurisdiction code. This code is used for calculating taxes which are defined below the federal level (for example, US taxes, Canadian taxes). The tax jurisdiction code can be subdivided into a maximum of four levels (for example, state/county/city/district). This way the tax rate is defined per level and the tax value is calculated individually per level
Procedure
To perform the activity, do one of the following:
IMG Menu Financial Accounting (New) → Financial Accounting Basic Settings (New) → Tax on Sales / Purchases → Basic Settings → Specify Structure for Tax Jurisdiction
Transaction code OBCO
Make the following entries:
Schema Name LG columns
0TXUSX Standard US Tax Jurisdiction Code In the four Lg columns, from left to right, enter 2, 2, 3, 5
Choose Save.
In S4HC Disable Tax Calculation on line-by-line basis
This is recommended for accurate tax calculation.
To be performed by a SAP expert.
There is a configuration setting on the tax jurisdiction structure definition that controls whether tax is determined on a line-by-line basis. This can be set on:
In S4HC: Update Tax Jurisdiction Code for all addresses
Required: SAP Tax Jurisdiction Codes for every stored address must be updated before the CCH SureTax integration can be used.
Here are the directions to update all the jurisdictions at once
- In your SAP Fiori LaunchPad:
- Open Schedule Tax Job App
- Select New (+)
- Under Job Template select 🡪 External Tax Jurisdiction Code Mass Update
- Under same screen Parameters section select all options Cost Center, Business Partner and Profit Center. You can select the last changed date as well.
- Click on Schedule which will call GetChanged iFlow and then Mass Redefine iFlow.
In S4HC: Update Tax Jurisdiction Code for Company Code & Plant Master Data
Here are directions for updating your Company Code and Plan Master Data
- In your SAP Fiori LaunchPad:
- Open Manage your solution -> Configure your Solution
- Search for 'company code master data' (for plant: search for 'plant')
- Select the search result (for plant: click on 'Logistics')
- Click on Configure for 'Company Code Master Data' (for plant: click on configure for 'Plants)
- Select Address you want to update
- Click on Edit
- Update value for Tax Jurisdiction to match CCH SureTax geocode for that address
- There is a limitation with Fiori LaunchPad, so you must manually enter the CCH SureTax geocode.
- An easy way to find the geocode is to use the DetermineJurisdiction iFlow via a test Business Partner address, or using a SOAP client like SOAP UI or Postman to call the DetermineJurisdiction iFlow you have deployed to your SAP CI instance.
CCH SureTax iFlows Configuration with Externalized Parameters
All CCH SureTax iFlows can be configured with externalized parameters.
Externalized paramaters can be accessed in SAP CI -> CCH SureTax Integration package -> <Select any CCH SureTax artifact (iFlow) -> click on 'Configure' link on top right of your browser.
Following is a complete list of CCH SureTax externalized parameters that you can 'Configure' along with their default values:
Artifact/iFlow | Section | Externalized Parameter | SureTax Mapping | Default Value |
---|---|---|---|---|
CalculateTax | Sender | Authorization | User Role (aka RoleBased) | |
CalculateTax | Sender | Body Size | 40 | |
CalculateTax | Sender | Attachments Size | 100 | |
CalculateTax | Receiver | Address | https://<suretax_hostname>/Services/V07/SureTax.asmx | |
CalculateTax | Receiver | Timeout | 60000 | |
CalculateTax | More | {{SureTax_BusinessUnit}} | BusinessUnit | SAPBusinessUnit |
CalculateTax | More | {{SureTax_DefaultTransTypeCode}} | TransTypeCode | 990101 |
CalculateTax | More | {{SureTax_UnitType}} | UnitType | "00" |
CalculateTax | More | {{SureTax_TaxSitusRule}} | TaxSitusRule | 22 |
CalculateTax | More | {{SureTax_SalesTypeCode}} | SalesTypeCode | R |
CalculateTax | More | {{SureTax_RegulatoryCode}} | RegulatoryCode | 99 |
CalculateTax | More | {{SureTax_UDF}} | UDF | |
CalculateTax | More | {{SureTax_UDF2}} | UDF2 | |
CalculateTax | More | {{SureTax_FreightOnBoard}} | FreightOnBoard | D |
CalculateTax | More | {{SureTax_ShipFromPOB}} | ShipFromPOB | 1 |
CalculateTax | More | {{SureTax_MailOrder}} | MailOrder | 1 |
CalculateTax | More | {{SureTax_CommonCarrier}} | CommonCarrier | 1 |
CalculateTax | More | {{SureTax_AuxRevenueType}} | AuxRevenueType | 03 |
CalculateTax | More | {{SureTax_ARRuleOverride}} | RuleOverride | 0 |
CalculateTax | More | {{SureTax_APRuleOverride}} | RuleOverride | 3 |
CalculateTax | More | {{SureTax_ExemptReason}} | ExemptReason | |
CalculateTax | More | {{SureTax_Param1}} | Param1 | |
CalculateTax | More | {{SureTax_Param2}} | Param2 | |
CalculateTax | More | {{SureTax_Param3}} | Param3 | |
CalculateTax | More | {{SureTax_Param4}} | Param4 | |
DetermineJurisdiction | Sender | Authorization | User Role (aka RoleBased) | |
DetermineJurisdiction | Sender | Body Size | 40 | |
DetermineJurisdiction | Sender | Attachments Size | 100 | |
DetermineJurisdiction | Receiver | (When SureTax_Receiver Selected)Address | https://<suretax_hostname>/Services/V07/SureTax.asmx | |
DetermineJurisdiction | Receiver | Timeout | 60000 | |
DetermineJurisdiction | More | Enable_Address_Validation | 0 ('1' can be used to enable Address Validation using CCH SureAddress) | |
DetermineJurisdiction | Receiver | (When SureAddress_Receiver Selected) Address | https://<sureaddress_hostname>/sureaddress.asmx | |
ForceUpdate | Sender | Authorization | User Role (aka RoleBased) | |
ForceUpdate | Sender | Body Size | 40 | |
ForceUpdate | Sender | Attachments Size | 100 | |
ForceUpdate | Receiver | Address | https://<suretax_hostname>/Services/V07/SureTax.asmx | |
ForceUpdate | Receiver | Timeout | 60000 | |
ForceUpdate | More | {{SureTax_BusinessUnit}} | BusinessUnit | SAPBusinessUnit |
ForceUpdate | More | {{SureTax_DefaultTransTypeCode}} | TransTypeCode | 990101 |
ForceUpdate | More | {{SureTax_UnitType}} | UnitType | "00" |
ForceUpdate | More | {{SureTax_TaxSitusRule}} | TaxSitusRule | 22 |
ForceUpdate | More | {{SureTax_SalesTypeCode}} | SalesTypeCode | R |
ForceUpdate | More | {{SureTax_RegulatoryCode}} | RegulatoryCode | 99 |
ForceUpdate | More | {{SureTax_UDF}} | UDF | |
ForceUpdate | More | {{SureTax_UDF2}} | UDF2 | |
ForceUpdate | More | {{SureTax_FreightOnBoard}} | FreightOnBoard | D |
ForceUpdate | More | {{SureTax_ShipFromPOB}} | ShipFromPOB | 1 |
ForceUpdate | More | {{SureTax_MailOrder}} | MailOrder | 1 |
ForceUpdate | More | {{SureTax_CommonCarrier}} | CommonCarrier | 1 |
ForceUpdate | More | {{SureTax_AuxRevenueType}} | AuxRevenueType | 03 |
ForceUpdate | More | {{SureTax_ARRuleOverride}} | RuleOverride | 0 |
ForceUpdate | More | {{SureTax_APRuleOverride}} | RuleOverride | 3 |
ForceUpdate | More | {{SureTax_DefaultExemptReason}} | ExemptReason | |
ForceUpdate | More | {{SureTax_Param1}} | Param1 | |
ForceUpdate | More | {{SureTax_Param2}} | Param2 | |
ForceUpdate | More | {{SureTax_Param3}} | Param3 | |
ForceUpdate | More | {{SureTax_Param4}} | Param4 | |
GetChanged | Sender | Authorization | User Role (aka RoleBased) | |
GetChanged | Sender | Body Size | 40 | |
GetChanged | Sender | Attachments Size | 100 | |
GetChanged | Receiver | Address | https://<suretax_hostname>/Services/V07/SureTax.asmx | |
GetChanged | Receiver | Timeout | 60000 | |
MassRedefine | Sender | Authorization | User Role (aka RoleBased) | |
MassRedefine | Sender | Body Size | 40 | |
MassRedefine | Sender | Attachments Size | 100 | |
MassRedefine | Receiver | Address | https://<suretax_hostname>/Services/V07/SureTax.asmx | |
MassRedefine | Receiver | Timeout | 60000 | |
UpdateTax | Sender | Authorization | User Role (aka RoleBased) | |
UpdateTax | Sender | Body Size | 40 | |
UpdateTax | Sender | Attachments Size | 100 | |
UpdateTax | Receiver | Address | https://<suretax_hostname>/Services/V07/SureTax.asmx | |
UpdateTax | Receiver | Timeout | 60000 | |
UpdateTax | More | {{SureTax_BusinessUnit}} | BusinessUnit | SAPBusinessUnit |
UpdateTax | More | {{SureTax_DefaultTransTypeCode}} | TransTypeCode | 990101 |
UpdateTax | More | {{SureTax_UnitType}} | UnitType | 00 |
UpdateTax | More | {{SureTax_TaxSitusRule}} | TaxSitusRule | 22 |
UpdateTax | More | {{SureTax_SalesTypeCode}} | SalesTypeCode | R |
UpdateTax | More | {{SureTax_RegulatoryCode}} | RegulatoryCode | 99 |
UpdateTax | More | {{SureTax_UDF}} | UDF | |
UpdateTax | More | {{SureTax_UDF2}} | UDF2 | |
UpdateTax | More | {{SureTax_FreightOnBoard}} | FreightOnBoard | D |
UpdateTax | More | {{SureTax_ShipFromPOB}} | ShipFromPOB | 1 |
UpdateTax | More | {{SureTax_MailOrder}} | MailOrder | 1 |
UpdateTax | More | {{SureTax_CommonCarrier}} | CommonCarrier | 1 |
UpdateTax | More | {{SureTax_AuxRevenueType}} | AuxRevenueType | 03 |
UpdateTax | More | {{SureTax_ARRuleOverride}} | RuleOverride | 0 |
UpdateTax | More | {{SureTax_APRuleOverride}} | RuleOverride | 3 |
UpdateTax | More | {{SureTax_DefaultExemptReason}} | ExemptReason | |
UpdateTax | More | {{SureTax_Param1}} | Param1 | |
UpdateTax | More | {{SureTax_Param2}} | Param2 | |
UpdateTax | More | {{SureTax_Param3}} | Param3 | |
UpdateTax | More | {{SureTax_Param4}} | Param4 |
CCH SureTax iFlows Logging and Log Configuration
In SAP CI all CCH SureTax iFlows log at the DEBUG or TRACE levels, which can be set for deployed artifacts' Log Configuration.
- CCH SureTax artifacts will log all payloads when enabled.
- Only recommended for debugging and not to be used on production systems.
- Artifact Log configuration is accessed via SAP CI -> Monitor -> Manage Integration Content -> All -> select artifact (see below screenshot)
CCH SureTax iFlows Error Codes and Messages
Error codes and messages returned by CCH SureTax iFlows.
1xxx for General iFlow issue:
- 1001: Duplicate TID 'XXXXXXXXXXXXXXXXX' used in update call
- 1002: Credential Error: 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
- 1999: Uncatched Error: 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
2xxx for master data from SAP is missing external system:
- 2001: Company Code 'XXXX' is not supported in external system 🡪 Not supported
- 2002: Tax Type 'X' is not supported in external system 🡪 Not supported
- 2003: Material 'XXXXXX' is not supported in external system 🡪 Not supported
- 2004: Currency 'XXX' is not supported in external system 🡪 Supported for USD
- 2005: Tax Jurisdiction Code is not supported in external system. Invalid value for YYYYY = 'XXXXX'
- E.g. 2005: Tax Jurisdiction Code is not supported in external system. TXJCD_ST = '000000'
3xxx iFlow element errors (error raised by iFlow):
- 3001: Missing required data elements
- 3002: Script Error
- 3003: Router Error
- 3004: ZIPCODE has invalid value 'XXXX'
- Returned by DetermineJurisdiction iFlow
- 3005: COUNTRY is required
- Returned by DetermineJurisdiction iFlow
- 3006: STATE is required
- Returned by DetermineJurisdiction iFlow
4xxx External network errors:
- 4001: Network Timeout
- 4002: Server not found
5xxx Soap Client Fault:
- 5001: Bad Date
- 5002: Jurisdiction Code not found
- 5003: Generic Soap Fault
6xxx Soap Server Fault:
- 6001: Database Error
- 6002: Calculation Failure not due to information in the request
- 6003: Address Validation Error: <Message from CCH SureAddress>
SAP S4HC Data Mappings to CCH SureTax's Web Service Data Elements used in Artifacts
DetermineJurisdiction Artifact
SureTax Field | SAP API Field | SAP Description |
---|---|---|
CountryCode | COUNTRY | Required |
StateCode | STATE | Required |
County | COUNTY | Optional |
City | CITY | Recommended |
Zipcode | ZIPCODE | for US, ZIPCODE can be Zip 5 (e.g. 12345) or Zip 9 (e.g. 12345-1234) CCH SureTax Zipcode is Zip 5. |
Plus4 | ZIPCODE | if Zip Plus4 is available from ZIPCODE |
PrimaryAddressLine (SureAddress) | STREET_ADDRESS->STREET | optional |
SecondaryAddressLine (SureAddress) | STREET_ADDRESS->STREET1 | optional |
N/A | TXJCD_L1 | 2 |
N/A | TXJCD_L2 | 2 |
N/A | TXJCD_L3 | 3 |
N/A | TXJCD_L4 | 5 |
Geocode | TXJCD | SAP Tax Jurisdiction Code is set by CCH SureTax Geocode |
N/A | OUTOF_CITY | |
ResponseCode | RETCODE | 0 for success (ResponseCode = 9999 for success) |
ResponseCode | ERRCODE | 0000 for success (ResponseCode = 9999 for success) |
CalculateTax Artifact
SureTax Field | SAP API Field | SAP Description |
---|---|---|
CurrencyCode | CURRENCY | CCH SureTax does not perform currency conversion, so currency is expected to be the currency of the Ship To country. |
ResponseType | CURR_DEC | Currency Decimal value is taken and concatenated with D to map to ResponseType. E.g. 2 = D2 |
ReturnFileCode | N/A | Q for Quote |
LineNumber | ITEM_NO | |
CurrencyCode | COUNTRY | Expect 2 digit Country Code |
TransTypeCode | MATNR | Material Number and Prod Code are mapped to TransTypeCode. ProdCode is sent. If not present then Material number is sent. If not default 990101 is sent |
TransTypeCode | PROD_CODE | Material Number and Prod Code are mapped to TransTypeCode. ProdCode is sent. If not present then Material number is sent. If not default 990101 is sent |
N/A | TAX_TYPE | Not Supported |
TaxExemptionCodeList/string | EXEMPT_AMT | Exempt amount is used to calculate the exemption percentage we set for TaxExemptionCodeList. We use code 99:(exempt percentage) for exemption and 00 otherwise |
AuxRevenue | FREIGHT_AM | Freight amount is divided by 100 to get correct amount sent by SAP and mapped to AuxRevenue |
AuxRevenueType | FREIGHT_AM | AuxRevenueType is set to default 03 (externalized variable) if we have freight amount. Otherwise it's 01. |
Parameter5 | N/A | Reserved for future use |
Parameter6 | N/A | Reserved for future use |
Parameter7 | N/A | Reserved for future use |
Parameter8 | N/A | Reserved for future use |
Parameter9 | SOLD_TO_CUST | If available, SOLD_TO_CUST is sent as Parameter9 in calculation requests |
Parameter10 | Constant | FREIGHT (SKU named 'FREIGHT' must be mapped in SureTax) is sent as Parameter10. |
Units | QUANTITY | Quantity is divided by 1000 and mapped to units |
N/A | TAX_PER_ITEM | X |
N/A | NR_LINE_ITEMS | |
RuleOverride | APAR_IND | If value of APAR_IND is A then RuleOverride is set to 1, if V then 2 else 0 |
TransDate | TAX_DATE | Date of the transaction |
DataYear | TAX_DATE | Year is extracted from TAX_DATE and set to DataYear |
DataMonth | TAX_DATE | Month is extracted from TAX_DATE and set to DataMonth |
CmplDataYear | TAX_DATE | Year is extracted from TAX_DATE and set to CmplDataYear. |
CmplDataMonth | TAX_DATE | Month is extracted from TAX_DATE and set to CmplDataMonth |
ShipToAddress-Geocode | TXJCD_ST | Ship To geocode from SAP is mapped to ShipToAddress geocode. Expected to be CCH SureTax geocode. |
ShipFromAddress-Geocode | TXJCD_SF | Expected to be CCH SureTax geocode. |
OrderPlacementAddress-Geocode | TXJCD_POO | Expected to be CCH SureTax geocode. (Optional) |
OrderApprovalAddress-Geocode | TXJCD_POA | Expected to be CCH SureTax geocode. (Optional) |
N/A | AMOUNT | Not used since GROSS_AMOUNT is the same value |
Revenue | GROSS_AMOUNT | Gross Amount is divided by 100 to get correct amount sent by SAP and mapped to each item level Revenue |
TotalRevenue | GROSS_AMOUNT | Item Level Gross amounts added up and set to TotalRevenue at the SureTax request level |
LineNumber | ITEM_NO | in CALCULATION_ITEM |
TaxTypeCode | TXJLV | 1. State 2. County 3. City 4. Local 5. Reporting Agency |
TaxTypeDesc | TXJLVDESC | The description that corresponds to the TaxTypeCode. |
Revenue | TAXBAS | Revenue is multiplied by 100 to match SAP representation of amounts |
Revenue PercentTaxable | EXAMT | This amount is calculated based on Revenue and PercentTaxable element |
TaxAmount | TAXAMOV | All TaxAmount are added under TaxAmountList and multiplied by 100 to get TAXAMOV |
TaxAmount | TAXAMT | All TaxAmount are added under TaxAmountList and multiplied by 100 to get TAXAMT |
TaxRate | TAXPCT | All TaxRate are added under TaxRateList multiplied by 10000 and then assigned to TAXPCT |
ClientNumber | N/A | taken from Security Material 'suretaxuser' |
ValidationKey | N/A | taken from Security Material 'suretaxuser' |
ResponseType | CURR_DEC | '12D' + the integer value of the currency if it exists. Otherwise ResponseType is '12D2' |
ResponseGroup | N/A | '00' |
BusinessUnit | N/A | Can be updated in artifact's Mapping_S4HC_Request_to_SoapRequest. |
UnitType | UNIT | UnitType set to default of '00' since no mapping available to SAP's UNIT |
TaxSitusRule | N/A | Only General Sales Supported, default value set to '22' |
SalesTypeCode | N/A | Can be updated in artifact's Mapping_S4HC_Request_to_SoapRequest. Default is 'R'. Important to update this to match your business |
RegulatoryCode | N/A | Can be updated in artifact's Mapping_S4HC_Request_to_SoapRequest. Default is '99'. Important to update this to match your business. |
FreightOnBoard | N/A | Can be updated in artifact's Mapping_S4HC_Request_to_SoapRequest. Default is 'D' |
ShipFromPOB | N/A | Can be updated in artifact's Mapping_S4HC_Request_to_SoapRequest. Default is '1' |
MailOrder | N/A | Can be updated in artifact's Mapping_S4HC_Request_to_SoapRequest. Default is '1' |
CommonCarrier | N/A | Can be updated in artifact's Mapping_S4HC_Request_to_SoapRequest. Default is '1' |
UpdateTax Artifact
(Similar to CalculateTax, only different items added below)
SureTax Field | SAP API Field | SAP Description |
---|---|---|
CmplDataYear | REP_DATE | Year value is set to CmplDataYear |
CmplDataMonth | REP_DATE | Month value is set to CmplDataMonth |
N/A | TID | Not supported |
INVOICE_NUMBER | DOC_NUMBER | DOC_NUMBER is expected to be unique |
ReturnFileCode | N/A | Value set to '0' to post in CCH SureTax |
ForceUpdate Artifact
(Similar to CalculateTax, only different items added below)
SureTax Field | SAP API Field | SAP Description |
---|---|---|
N/A | TID | Not supported |
INVOICE_NUMBER | DOC_NUMBER | DOC_NUMBER is expected to be unique |
ReturnFileCode | N/A | Set to '0' for Post to CCH SureTax |
TAX_TYPE | Tax Category of tax code configuration (T007A-TXIND). Is not used for all tax codes and may appear as empty in the system, but is always filled | |
EXEMP_IND | Empty: Tax-relevant; external system decides whether the tax code is tax-relevant 0 - Tax-relevant; external system decides whether the tax code is tax-relevant 1 - Is always tax-relevant; external system is not used 2 - Is not tax-relevant; external system is not used |
|
CmplYear | REP_DATE | Year is extracted from REP_DATE and set to CmplDataYear. |
CmplMonth | REP_DATE | Month is extracted from REP_DATE and set to CmplDataMonth. |
CREDIT_IND | " " or 0 - SAP Tax liability account is credited 1 - SAP Tax liability account is debited |
|
CustomerNumber | ACCNT_NO | |
TAXPCOV | Sum of tax rates of all jurisdiction code levels. Must be filled and must match values in TAX_CAL_JUR_LEVEL_OUTXX-TAXPCT. The last three characters in TAXPCOV are the digits after the decimal point | |
Tax | TAXAMOV | Sum of tax rates of all jurisdiction code levels. Must be filled and must match values in TAX_CAL_JUR_LEVEL_OUTXX-TAXAMT. Relies on CURR_DEC |
TaxTypeCode | TXJLV | TXJLV is mapped to CCH SureTax TaxTypeCode: 1. State 2. County 3. City 4. Local - CCH SureTax county local and city locals mapped to this 5. Reporting Agency |
TaxCatCode | N/A | "-1" is hardcoded in mapping |
TaxAuthorityID | N/A | "-1" is hardcoded in mapping |
TaxAmount | TAXAMT | TAXAMT is sent in TaxAmount |
TaxRate | TAXPCT | TAXPCT is sent in TaxRate |
N/A | CREDIT_IND | 0 = Credit, 1 = Debit. When Value is '1', amounts for CCH SureTax REVENUE and TAX are multiplied by -1 |
MassRedefine Artifact
SureTax Field | SAP API Field | SAP Description |
---|---|---|
DataYear | N/A | Current Year sent |
DataMonth | N/A | Current Month sent |
SequenceNum | SEQUENCE_NUM | Sequence number of the location |
CountryCode | COUNTRY | Country Code |
StateCode | STATE | State Code |
County | COUNTY | County name |
City | CITY | City name |
Zipcode | ZIPCODE | ZipCode |
Plus4 | ZIPCODE | ZipCode -- We send Plus4 if present in case if Country is "US" |
AddressLine1 | STREET | Address line1 |
AddressLine2 | STREET1 | Address line2 |
Important Notes and Known Issues:
- SAP's Tax Jurisdiction Code must be updated frequently for addresses; otherwise, stale Tax Jurisdiction Code can be sent to CCH SureTax for tax calculation. This can lead to incorrect or no tax calculation.
- SAP's TID cannot be supported by CCH SureTax due to its length being too long
- SAP's FREIGHT_AM is supported in the following manner for Calculate and Update iFlows:
- SAP only supports taxes for freight to be returned with the tax for the associated line item.
- Your CCH SureTax account must have a product code mapping for a SKU named 'FREIGHT'. This can be done via CCH SureTax console.
- Each line item's FREIGHT_AM is sent to CCH SureTax in the AuxRevenue request field. When AuxRevenueType is '03', your freight amount's taxability will follow what is mapped to your 'FREIGHT' SKU
- Taxes returned for each line item's FREIGHT line item is added to the taxes returned for the associated line item
- ForceUpdate iFlow
- Only line item level taxes are supported. Although CCH SureTax supports tax jurisdiction level tax adjustments, this cannot be supported due to lack CCH SureTax required data from SAP S4HC requests.
- GetChanged iFlow
- Uses SureTax method GetAllGeocodes.
- Calculate/Update/Force iFlows currently support 2 digit precision (CURR_DEC = 2). Support for higher precision planned in upcoming release.
- EXEMPT_AMT is used with GROSS_AMOUNT to get the exempt ratio sent to SureTax for calculation, so only absolute values are used.
Release Notes
V2.0.12
- Returing Exemption Code and Reason Desc in Calculate Iflow.
- TID is sent in STAN field in Update and Force Update Iflows.
- Technical Guide Document is a link to online Documentation.
V2.0.11
- WK Headers added to SureTax Reqest.
- 2401 WSDL changes applied.
V2.0.10
- Added a configurable Credentials name.
- Customers can now use CERT or PROD user credentials from same tenant
- Added a configurable variable to Map any SOAP Element to CCH SureTax Transaction Type code
- Customers can now add a Field that they would like to be used to send the value in Transaction Type Code
- Added a configurable Credentials name.
V2.0.9
- Sender URL is now a customizable parameter where customer can update the URL based on their needs.
V2.0.8
- Calculate/Update/Force Update Iflows -- Changes to support precision based on CURR_DEC.
- Changes related to Unified Jurisdiction Code
V2.0.7
- Changes pertaining to date sent to SureTax in Determine Jurisdiction iflow.
V2.0.6
- Calculate iFlow -- Fixed ClientTracking send to CCH SureTax
- Update/Force iFlows -- updated version for ClientTracking
v2.0.5
- Fixed Calculate iFlow, so the same number of line items will be returned for when no taxes are returned by CCH SureTax (e.g. no tax states).
v2.0.4
- Added address validation support with CCH SureAddress to DetermineJurisdiction iFlow.
v2.0.3
- Calculate/Update/Force iFlows updated to handle SAP format for negative numbers (- symbol on right e.g. for -100, SAP sends 100-) sent in amount fields.
v2.0.2
- Removed configuration for Parameter5 to 9 for Calculate/Update/Force iFlows as they are now reserved for internal use.
- Calculate/Update/Force iFlows will now send SOLD_TO_CUST in CCH SureTax Parameter9 request field.
- Updated logic for Parameter10 mapping in SureTax request.
v2.0.1
- Patch for Calculate, Update, and Force iFlows to correctly assign CCH SureTax TransTypeCode (calculate request input) based on PROD_CODE, MATNR, or configured default Transaction Type code value.
v2.0.0
- Certified update with support for SAP S4HC 1908.
- Added GetChanged and MassRedefine iFlows
- Existing iFlows updated to support updated WSDLs from 1908
- Added externalized parameters for easy configuration of data used in CCH SureTax requests.
v1.0.0
- Initial certified release.