Transfer Pricing Algorithm WIP: Difference between revisions
Jump to navigation
Jump to search
No edit summary |
No edit summary |
||
Line 32: | Line 32: | ||
|Thin-Cap||ATP Thin-Cap in scope||Flags whether any thin-capitalisation restriction applies to the entity.||Boolean||One per segment||No, default False | |Thin-Cap||ATP Thin-Cap in scope||Flags whether any thin-capitalisation restriction applies to the entity.||Boolean||One per segment||No, default False | ||
|- | |- | ||
|Thin-Cap||ATP Thin-Cap rule type||Chooses the statutory approach.<br>• '''Fixed-Ratio''' – a cap expressed as A / B ≤ Threshold (covers debt-equity, interest-EBITDA, interest-assets, etc.).<br>• '''Safe-Harbour-None''' – no mechanical limitation; deduct all interest.||Enum:{Fixed-Ratio; Safe-Harbour-None}||Several rows may coexist ( | |Thin-Cap||ATP Thin-Cap rule type||Chooses the statutory approach.<br>• '''Fixed-Ratio''' – a cap expressed as A / B ≤ Threshold (covers debt-equity, interest-EBITDA, interest-assets, etc.).<br>• '''Safe-Harbour-None''' – no mechanical limitation; deduct all interest.||Enum:{Fixed-Ratio; Safe-Harbour-None}||Several rows may coexist when the jurisdiction has multiple interest expense limitation rules. For example, Canada Income Tax Act 18.4 mentions "... on outstanding debts to specified non-residents that ... exceeds (ii) 1.5 times the equity amount of the corporation or trust for the year ...", while Excessive interest and financing expenses (IFE) limitation rules contained in 18.2 and 18.21 mentions that "The cap on net IFE is equal to a fixed ratio of adjusted taxable income (ATI): 30% ..." ||Yes if “in scope” is True | ||
|- | |- | ||
|Thin-Cap||ATP Fixed-Ratio numerator||Variable '''A''' in the ratio to be tested (what is limited).||Enum:{NetInterestExpense; DebtRelatedParty; DebtTotal}||One per Fixed-Ratio row||Yes for Fixed-Ratio | |Thin-Cap||ATP Fixed-Ratio numerator||Variable '''A''' in the ratio to be tested (what is limited).||Enum:{NetInterestExpense; DebtRelatedParty; DebtTotal}||One per Fixed-Ratio row||Yes for Fixed-Ratio |
Revision as of 16:55, 13 June 2025
Thin-Capitalisation (“Thin-Cap”) module
Context
This module runs after the TP-convergence loop and before the withholding-tax stage. It caps interest deductibility, adjusts ATP PBT, and manages an interest carry-forward bucket.
Data structure additions
Data
Role | Label | Definition | Typing | Multiplicity behaviour | Mandatory |
---|---|---|---|---|---|
Financials | ATP Debt – Related-party | Average debt owed to associated enterprises | Couple (Decimal; ISO 3 Currency) | Aggregate | No (=0 if absent) |
Financials | ATP Debt – Third-party | Average debt owed to independent lenders | Couple (Decimal; ISO 3 Currency) | Aggregate | No (=0 if absent) |
Financials | ATP Equity – Thin-Cap | Equity figure prescribed by local thin-cap rules | Couple (Decimal; ISO 3 Currency) | Aggregate | Yes if Thin-Cap in scope |
Financials | ATP Net Interest Expense | Interest expense – interest income (post-TP) | Couple (Decimal; ISO 3 Currency) | Aggregate | Yes if Thin-Cap in scope |
Financials | ATP EBITDA | EBITDA (after TP Adjustment) | Couple (Decimal; ISO 3 Currency) | Aggregate | Only for EBITDA-based rules |
Financials | ATP Excess Interest Carry-forward N-1 | Disallowed interest still available | Couple (Decimal; ISO 3 Currency) | Aggregate | No (default 0) |
Rules
(multiple rows per entity allowed; tightest cap wins)
Role | Label | Definition | Typing / Domain | Multiplicity behaviour | Mandatory |
---|---|---|---|---|---|
Thin-Cap | ATP Thin-Cap in scope | Flags whether any thin-capitalisation restriction applies to the entity. | Boolean | One per segment | No, default False |
Thin-Cap | ATP Thin-Cap rule type | Chooses the statutory approach. • Fixed-Ratio – a cap expressed as A / B ≤ Threshold (covers debt-equity, interest-EBITDA, interest-assets, etc.). • Safe-Harbour-None – no mechanical limitation; deduct all interest. |
Enum:{Fixed-Ratio; Safe-Harbour-None} | Several rows may coexist when the jurisdiction has multiple interest expense limitation rules. For example, Canada Income Tax Act 18.4 mentions "... on outstanding debts to specified non-residents that ... exceeds (ii) 1.5 times the equity amount of the corporation or trust for the year ...", while Excessive interest and financing expenses (IFE) limitation rules contained in 18.2 and 18.21 mentions that "The cap on net IFE is equal to a fixed ratio of adjusted taxable income (ATI): 30% ..." | Yes if “in scope” is True |
Thin-Cap | ATP Fixed-Ratio numerator | Variable A in the ratio to be tested (what is limited). | Enum:{NetInterestExpense; DebtRelatedParty; DebtTotal} | One per Fixed-Ratio row | Yes for Fixed-Ratio |
Thin-Cap | ATP Fixed-Ratio denominator | Variable B that forms the economic base. | Enum:{EBITDA; EBIT; PBT; EquityThinCap; TotalAssets; TaxableIncome; OperatingCashFlow} | One per Fixed-Ratio row | Yes for Fixed-Ratio |
Thin-Cap | ATP Fixed-Ratio threshold | Numeric limit T. Enter 0 – 1 for percentage caps (e.g. 0.30 = 30 %) or > 1 for pure ratios (e.g. 3 = 3 : 1). |
Decimal | One per Fixed-Ratio row | Yes for Fixed-Ratio |
Thin-Cap | ATP De-minimis interest threshold | Absolute amount of net interest always deductible before applying any ratio test (e.g. €3 m in ATAD). | Couple (Decimal; ISO 3 Currency) | Several rows allowed (but typically one) | No, default 0 |
Thin-Cap | ATP Group-Ratio election | True if the taxpayer elects to substitute the Group-Ratio cap in this row (ATAD art. 4 §5; UK CIR). | Boolean | One per Fixed-Ratio row | No, default False |
Thin-Cap | ATP Group-Ratio % | Group net-interest ÷ group EBITDA used when the election above is True. | Percentage | One per Fixed-Ratio row | Yes if election = True |
Thin-Cap | ATP Excess-Interest carry-forward period | Number of years disallowed interest can be carried forward (FIFO bucket; ≥ 5 y for ATAD countries, ∞ allowed). | Integer (years) | One per segment | No, default ∞ |
Taxation / Output
Role | Label | Definition |
---|---|---|
Taxation | ATP Disallowed Interest N | Interest denied in current year (−PBT) |
Taxation | ATP Excess Interest Carry-forward N | Disallowed interest carried forward |
Computational step – Thin-Cap limitation
This step is executed entity-by-entity at the Declaring-Entity level.
- Pre-checks
- If
Thin-Cap in scope = False
⇒ skip module.
- If
- Net interest expense (NI) after de-minimis
NI = max(0 ; ATP Net Interest Expense − ATP De-minimis interest threshold)
- Allowable Interest Ceiling (AIC)
- For each rule row i where rule type = Fixed-Ratio:
- Fetch
Numerator_i ← choose(NumeratorTag_i , data block)
- Fetch
Denominator_i ← choose(DenominatorTag_i , data block)
- if
Denominator_i = 0
→ raise validation error Threshold_i ← ATP Fixed-Ratio threshold_i
Cap_i ← Threshold_i × Denominator_i
- if
NumeratorTag_i ∈ { NetInterestExpense }
:AIC_i = min( NI , Cap_i )
- if
NumeratorTag_i ∈ { DebtRelatedParty ; DebtTotal }
:AllowedDebt = Cap_i
ActualDebt = Numerator_i
AllowedInterest = NI × AllowedDebt / ActualDebt
(if ActualDebt > 0)AIC_i = min( NI , AllowedInterest )
- if
Group-Ratio election_i = True
(Apply group-ratio uplift if elected on this row):GRCap = Group-Ratio %_i × Denominator_i
AIC_i = min( NI , max( Cap_i , GRCap ) )
- Fetch
- Combine multiple rows:
AIC_final = MIN( AIC_i for all Fixed-Ratio rows )
- If the entity has only one row and
ATP Thin-Cap rule type = Safe-Harbour-None
:AIC_final = NI
- For each rule row i where rule type = Fixed-Ratio:
- Current-year disallowance
Disallowed_Before_Carry = max(0 ; NI − AIC_final)
- Utilise carry-forward bucket (FIFO single pool)
Headroom = max( 0 ; AIC_final – ( NI – Disallowed_Before_Carry ) )
Allowed_from_carry = min(ATP Excess Interest Carry-forward N-1 ; Headroom)
Disallowed_N = Disallowed_Before_Carry − Allowed_from_carry
- Update variables
ΔPBT_Thin-Cap = − Disallowed_N
ATP Disallowed Interest N = Disallowed_N
ATP Excess Interest Carry-forward N = Disallowed_N
(drops FIFO after ‘‘carry-forward period’’)- Replace
ATP_PBT
downstream with:New_ATP_PBT = ATP PBT + ΔPBT_Thin-Cap + ΔPBT_WHT (paid + due)
Interaction with other modules
- TP convergence – uses after TP Ajustment interest; does NOT trigger another TP loop.
- Withholding-tax – unchanged (WHT on gross interest).
- Tax-loss computation – starts from
New_ATP_PBT
. - Optimiser – may vary Debt/Equity Ratio or other Fixed Ratio, interest rate or Group-Ratio election. ΔPBT_Thin-Cap feeds into the objective function.
Example – Fixed-ratio cap that creates a disallowance
Data
Role | Label | Value |
---|---|---|
Matching | ATP Declaring Entity segmentation | ("Entity"; "FR001") |
Financials | ATP Debt – Related-party | (15 000 000; EUR) |
Financials | ATP Debt – Third-party | (10 000 000; EUR) |
Financials | ATP Equity – Thin-Cap | (8 000 000; EUR) |
Financials | ATP Net Interest Expense | (4 000 000; EUR) |
Financials | ATP EBITDA | (10 000 000; EUR) |
Financials | ATP Excess Interest Carry-forward N-1 | (0; EUR) |
Rules
Role | Label | Value |
---|---|---|
Thin-Cap | ATP Thin-Cap in scope | True |
Thin-Cap | ATP Thin-Cap rule type | Fixed-Ratio |
Thin-Cap | ATP Fixed-Ratio numerator | NetInterestExpense |
Thin-Cap | ATP Fixed-Ratio denominator | EBITDA |
Thin-Cap | ATP Fixed-Ratio threshold | 0.30 |
Thin-Cap | ATP De-minimis interest threshold | (500 000; EUR) |
Thin-Cap | ATP Group-Ratio election | False |
Thin-Cap | ATP Excess-Interest carry-forward period | 5 |
Thin-Cap computation
- Step 1 – Pre-checks
ATP Thin-Cap in scope = TRUE so continue with the following steps
- Step 2 – De-minimis
ATP Net Interest Expense = €4 000 000 ATP De-minimis interest threshold = €500 000 NI = max(0 ; ATP Net Interest Expense − ATP De-minimis interest threshold) = €3 500 000
- Step 3 – Fixed-ratio cap
Cap = 0.30 × EBITDA = €3 000 000 AIC_final = min(NI , Cap) = €3 000 000
- Step 4 – Disallowance before carry-forward
Disallowed_Before_Carry = NI − AIC = €500 000
- Step 5 – Utilise carry-forward
Prior bucket = €0 ⇒ Allowed_from_carry = €0 Disallowed_N = €500 000
- Step 6 – Outputs
ATP Disallowed Interest N = €500 000 ATP Excess Interest Carry-forward N = €500 000 ΔPBT_Thin-Cap = –€500 000 New_ATP_PBT = ATP_PBT – €500 000 + ΔPBT_WHT