Tax accounting algorithm
Introduction
Context
Welcome to the OpenSource Tax accounting Algorithm with Tax Impact Computation wiki page! This platform serves as a comprehensive resource for understanding and implementing a pioneering open-source algorithm specifically designed to compute and prepare the tax proof and the deffered tax report.
Objectives
The objective of this algorithm is to perform tax accounting computations on a dataset from a company, produce the tax proof and/or the deferred tax report. This algorithm allows to run the computation on an arbitrary data structure through the use of labelling systems and gives back the result at the requested level of segmentation.
Feature Overview
The algorithm will present the following features:
- Computation of the tax impact of the temporary differences, per flow;
- Inclusion of Tax losses and tax credits in the computation, with detail;
- Management of Core and Non-core analysis;
- Variable number of Reconciliation steps with configurable origin of the reconciliation;
- Central management of tax rates;
- Availability of a distinct rate basked;
- Compatibility with the Pillar 2 computation;
- Generation of the Tax proof component;
- Generation of the Deferred Tax Report.
General logic of the algorithm
Development Program
The Tax accounting algorithl presented in this page is an ongoing work and its documentation on this wiki is also a work in progress. It is by no means complete and definitive, and changes will occur in the upcoming weeks and months.
Both GitHub and MediaWiki are amazing tools to manage collaborative work and track the progress and modifications that happen with time.
The detailed to-do list is presented Tax accounting algorithm development program.
Data structure
Structure overview
Algonomia API Framework
The Tax Accounting Algorithm uses Algonomia API Framework to receive input data and send output data for the computations. In the following sections, it is assumed that data has been transferred to the Tax Accounting Algorithm using this framework.
Input
The input data follows the usual division required by the Algonomia API Framework : Data, Rules, Other.
Data
The following tables presents the data points allowed as "Data" :
Role | Label | Definition | Typing | Multiplicity behavior | Mandatory |
---|---|---|---|---|---|
Matching | DTX Entity segmentation | Allows to define the segmentation of the data input that corresponds to the base aggregation level for the entity involved in the Tax accounting computation | Couple (String; Integer) | Several Values can be defined as "DTX Entity segmentation", but the Integer has to be unique among the set | Yes |
Data segmentation | DTX Level 1 | Enum : from the list of available DTX referencing tree levels | Forbidden | Yes | |
Data segmentation | DTX Level 2 | Enum : from the list of available DTX referencing tree levels | Forbidden | Yes | |
Data segmentation | DTX Level 3 | Enum : from the list of available DTX referencing tree levels | Forbidden | Yes | |
Data segmentation | DTX Level 4 | Enum : from the list of available DTX referencing tree levels | Forbidden | Yes | |
Data segmentation | DTX Level 5 | Enum : from the list of available DTX referencing tree levels | Forbidden | Yes | |
Data segmentation | DTX Free Account segmentation | Arbitrary segmentation level to preserve | Couple (String; Integer) | Several Values can be defined as "DTX Free Account segmentation", but the Integer has to be unique among the set | No |
Data segmentation | Type of difference | Enum : from the list of available "Type of differences" | Forbidden | Yes | |
Data segmentation | Primary account | Enum : from the list of available "Primary account" for the selected "Type of differences" | Forbidden | Yes | |
Data segmentation | Sub-account | Enum : from the list of available "Sub-account" for the selected "Primary accounts" | Forbidden | Yes | |
Data segmentation | Nature | Enum : Base; Tax | Forbidden | Yes | |
Data segmentation | Step | Enum : Reporting to Separate; Separate to Contribution; Reporting to Local; Local To Tax; Tax losses and Tax credits; Local to Tax - Separate Basket | Forbidden | Yes | |
Data segmentation | Sign | Enum : Positive; Negative | Forbidden | Yes | |
Data segmentation | Expiration | Enum : Expiring in Y+0->5 (6 items); Expiring in over Y+ 5; Unlimited; Expired; N.a. | Forbidden | No | |
Data segmentation | Basket | Enum : Standard; Separate | Forbidden | Yes | |
Data segmentation | Tax rate multiplication | Enum: deferred rate; current rate | Forbidden | Yes | |
Flows | Opening FYN-1 | Couple (Decimal;ISO 3 Currency Code) | If multiple defined, are aggregated for computation | No, if absent and required by computation, assumed to be 0 | |
Flows | Change in opening | Couple (Decimal;ISO 3 Currency Code) | If multiple defined, are aggregated for computation | No, if absent and required by computation, assumed to be 0 | |
Flows | True-up P&L | Couple (Decimal;ISO 3 Currency Code) | If multiple defined, are aggregated for computation | No, if absent and required by computation, assumed to be 0 | |
Flows | Income input - core | Couple (Decimal;ISO 3 Currency Code) | If multiple defined, are aggregated for computation | No, if absent and required by computation, assumed to be 0 | |
Flows | Income input - non core | Couple (Decimal;ISO 3 Currency Code) | If multiple defined, are aggregated for computation | No, if absent and required by computation, assumed to be 0 | |
Flows | Income input - total | Couple (Decimal;ISO 3 Currency Code) | If multiple defined, are aggregated for computation | No, if absent and required by computation, assumed to be 0 | |
Flows | Change in tax rate P&L (only for tax) | Couple (Decimal;ISO 3 Currency Code) | If multiple defined, are aggregated for computation | No, if absent and required by computation, assumed to be 0 | |
Flows | Total Income (only for tax) | Couple (Decimal;ISO 3 Currency Code) | If multiple defined, are aggregated for computation | No, if absent and required by computation, assumed to be 0 | |
Flows | Change in scope | Couple (Decimal;ISO 3 Currency Code) | If multiple defined, are aggregated for computation | No, if absent and required by computation, assumed to be 0 | |
Flows | OCI | Couple (Decimal;ISO 3 Currency Code) | If multiple defined, are aggregated for computation | No, if absent and required by computation, assumed to be 0 | |
Flows | Change in tax rate OCI (only for tax) | Couple (Decimal;ISO 3 Currency Code) | If multiple defined, are aggregated for computation | No, if absent and required by computation, assumed to be 0 | |
Flows | Total OCI (only for tax) | Couple (Decimal;ISO 3 Currency Code) | If multiple defined, are aggregated for computation | No, if absent and required by computation, assumed to be 0 | |
Flows | Reclass and Other | Couple (Decimal;ISO 3 Currency Code) | If multiple defined, are aggregated for computation | No, if absent and required by computation, assumed to be 0 | |
Flows | CTA | Couple (Decimal;ISO 3 Currency Code) | If multiple defined, are aggregated for computation | No, if absent and required by computation, assumed to be 0 | |
Flows | Closing | Couple (Decimal;ISO 3 Currency Code) | If multiple defined, are aggregated for computation | No, if absent and required by computation, assumed to be 0 | |
Manual Tax rates | Opening Tax Rate | percentage | Only one value is acceptable for a given segment of the analysis, see Rule mapping | No, if required but absent, computation is aborted | |
Manual Tax rates | Annual Tax Rate | percentage | Only one value is acceptable for a given segment of the analysis, see Rule mapping | No, if required but absent, computation is aborted | |
Manual Tax rates | Closing Tax Rate | percentage | Only one value is acceptable for a given segment of the analysis, see Rule mapping | No, if required but absent, computation is aborted |
Rules
The following tables presents the data points allowed as "Rules" :
Role | Label | Definition | Typing | Multiplicity behavior | Mandatory |
---|---|---|---|---|---|
Matching | DTX Rule segmentation | Allows to define the segmentation level of the Rule component to be retrieved | Couple (String; Integer) | Several Values can be defined as "ATP Rule segmentation", but the Integer has to be unique among the set | Yes |
National taxation | DTX Consolidation Tax Rate | Input of the group's consolidation tax rate | percentage | Only one value is acceptable for a given segment of the analysis, see Rule mapping | Yes |
National taxation | DTX Deferred Standard CIT rate - Opening | Input of the applicable national tax rate affecting the entity's deferred tax computation, for the Opening flows | percentage | Only one value is acceptable for a given segment of the analysis, see Rule mapping | Yes |
National taxation | DTX Deferred Standard CIT rate - Current Year | Input of the applicable national tax rate affecting the entity's deferred tax computation, for the Current year flows | percentage | Only one value is acceptable for a given segment of the analysis, see Rule mapping | Yes |
National taxation | DTX Deferred Standard CIT rate - Closing | Input of the applicable national tax rate affecting the entity's deferred tax computation, for the Closing year flows | percentage | Only one value is acceptable for a given segment of the analysis, see Rule mapping | Yes |
National taxation | DTX Current Standard CIT rate - Opening | Input of the applicable national tax rate affecting the entity's local tax computation, for the Opening flows | percentage | Only one value is acceptable for a given segment of the analysis, see Rule mapping | Yes |
National taxation | DTX Current Standard CIT rate - Current Year | Input of the applicable national tax rate affecting the entity's local tax computation, for the Current year flows | percentage | Only one value is acceptable for a given segment of the analysis, see Rule mapping | Yes |
National taxation | DTX Current Standard CIT rate - Closing | Input of the applicable national tax rate affecting the entity's local tax computation, for the Closing year flows | percentage | Only one value is acceptable for a given segment of the analysis, see Rule mapping | Yes |
National taxation | DTX Current Separate CIT rate - Opening | Input of the applicable separate tax rate affecting the entity's local tax computation, for the Opening flows | percentage | Only one value is acceptable for a given segment of the analysis, see Rule mapping | Yes |
National taxation | DTX Current Separate CIT rate - Current Year | Input of the applicable separate tax rate affecting the entity's local tax computation, for the Current year flows | percentage | Only one value is acceptable for a given segment of the analysis, see Rule mapping | Yes |
National taxation | DTX Current Separate CIT rate - Closing | Input of the applicable separate tax rate affecting the entity's local tax computation, for the Closing year flows | percentage | Only one value is acceptable for a given segment of the analysis, see Rule mapping | Yes |
Other
Output
Role | Label | Definition | Typing | Multiplicity behavior | Mandatory |
---|---|---|---|---|---|
Result Entity segmentation | DTX Entity segmentation | Allows to define the segmentation of the data input that corresponds to the base aggregation level for the entity involved in the Tax accounting computation | Couple (String; Integer) | - | No, if absent data are aggregated by the algorithm at the defined level |
Result Data segmentation | DTX Level 1 | Enum : from the list of available DTX referencing tree levels | - | No, if absent data are aggregated by the algorithm at the defined level | |
Result Data segmentation | DTX Level 2 | Enum : from the list of available DTX referencing tree levels | - | No, if absent data are aggregated by the algorithm at the defined level | |
Result Data segmentation | DTX Level 3 | Enum : from the list of available DTX referencing tree levels | - | No, if absent data are aggregated by the algorithm at the defined level | |
Result Data segmentation | DTX Level 4 | Enum : from the list of available DTX referencing tree levels | - | No, if absent data are aggregated by the algorithm at the defined level | |
Result Data segmentation | DTX Level 5 | Enum : from the list of available DTX referencing tree levels | - | No, if absent data are aggregated by the algorithm at the defined level | |
Result Data segmentation | DTX Free Account segmentation | Arbitrary segmentation level to preserve | Couple (String; Integer) | - | No, if absent data are aggregated by the algorithm at the defined level |
Result Data segmentation | Type of difference | Enum : from the list of available "Type of differences" | - | No, if absent data are aggregated by the algorithm at the defined level | |
Result Data segmentation | Primary account | Enum : from the list of available "Primary account" for the selected "Type of differences" | - | No, if absent data are aggregated by the algorithm at the defined level | |
Result Data segmentation | Sub-account | Enum : from the list of available "Sub-account" for the selected "Primary accounts" | - | No, if absent data are aggregated by the algorithm at the defined level | |
Result Flows | DT Report - Opening FYN-1 | Couple (Decimal;ISO 3 Currency Code) | - | No | |
Result Flows | DT Report - Change in opening | Couple (Decimal;ISO 3 Currency Code) | - | No | |
Result Flows | DT Report - True-up P&L | Couple (Decimal;ISO 3 Currency Code) | - | No | |
Result Flows | DT Report - Income input - core | Couple (Decimal;ISO 3 Currency Code) | - | No | |
Result Flows | DT Report - Income input - non core | Couple (Decimal;ISO 3 Currency Code) | - | No | |
Result Flows | DT Report - Income input - total | Couple (Decimal;ISO 3 Currency Code) | - | No | |
Result Flows | DT Report - Change in tax rate P&L (only for tax) | Couple (Decimal;ISO 3 Currency Code) | - | No | |
Result Flows | DT Report - Total Income (only for tax) | Couple (Decimal;ISO 3 Currency Code) | - | No | |
Result Flows | DT Report - Change in scope | Couple (Decimal;ISO 3 Currency Code) | - | No | |
Result Flows | DT Report - OCI | Couple (Decimal;ISO 3 Currency Code) | - | No | |
Result Flows | DT Report - Change in tax rate OCI (only for tax) | Couple (Decimal;ISO 3 Currency Code) | - | No | |
Result Flows | DT Report - Total OCI (only for tax) | Couple (Decimal;ISO 3 Currency Code) | - | No | |
Result Flows | DT Report - Reclass and Other | Couple (Decimal;ISO 3 Currency Code) | - | No | |
Result Flows | DT Report - CTA | Couple (Decimal;ISO 3 Currency Code) | - | No | |
Result Flows | DT Report - Closing | Couple (Decimal;ISO 3 Currency Code) | - | No |
Role | Label | Definition | Typing | Multiplicity behavior | Mandatory |
---|---|---|---|---|---|
Result Entity segmentation | DTX Entity segmentation | Allows to define the segmentation of the data input that corresponds to the base aggregation level for the entity involved in the Tax accounting computation | Couple (String; Integer) | - | No, if absent data are aggregated by the algorithm at the defined level |
Result Data segmentation | DTX Tax proof element level 1 | Enum : from the list of available "Type of differences" | - | No, if absent data are aggregated by the algorithm at the defined level | |
Result Data segmentation | DTX Tax proof element level 2 | Enum : from the list of available "Primary account" for the selected "Type of differences" | - | No, if absent data are aggregated by the algorithm at the defined level | |
Result Data segmentation | DTX Tax proof element level 3 | Enum : from the list of available "Sub-account" for the selected "Primary accounts" | - | No, if absent data are aggregated by the algorithm at the defined level | |
Result Flows | DTX Tax proof values - monetary | Couple (Decimal;ISO 3 Currency Code) | - | No | |
Result Flows | DTX Tax proof values relative entity | Couple (Decimal;ISO 3 Currency Code) | - | No | |
Result Flows | DTX Tax proof values relative group | Couple (Decimal;ISO 3 Currency Code) | - | No | |
Result Flows | DTX Tax proof values - monetary - core | Couple (Decimal;ISO 3 Currency Code) | - | No | |
Result Flows | DTX Tax proof values relative entity - core | Couple (Decimal;ISO 3 Currency Code) | - | No | |
Result Flows | DTX Tax proof values relative group - core | Couple (Decimal;ISO 3 Currency Code) | - | No | |
Result Flows | DTX Tax proof values - monetary - non core | Couple (Decimal;ISO 3 Currency Code) | - | No | |
Result Flows | DTX Tax proof values relative entity - non core | Couple (Decimal;ISO 3 Currency Code) | - | No | |
Result Flows | DTX Tax proof values relative group - non core | Couple (Decimal;ISO 3 Currency Code) | - | No |
Computational steps
Data received by the algorithm are processed using the standardized Rule matching methodology. At this stage every single entry contains both the financial data and the rules to be applied.