Transfer Pricing Algorithm WIP: Difference between revisions

From Wiki Algonomia
Jump to navigation Jump to search
(Added and modified WIP page for Thin-Capitalisation in TP Algorithm)
No edit summary
Line 1: Line 1:
(WIP)
== Thin-Capitalisation (“Thin-Cap”) module ==
== Thin-Capitalisation (“Thin-Cap”) module ==


=== Context ===
=== Context ===
This module plugs into the Transfer Pricing Algorithm '''''<u>after</u>''''' the TP-convergence loop and '''<u>before</u>''' the withholding-tax stage, adjusting ATP PBT and creating carry-forward variables where interest is disallowed.
This module runs '''<u>after</u>''' the TP-convergence loop and '''<u>before</u>''' the withholding-tax stage
It caps interest deductibility, adjusts '''ATP PBT''', and manages an interest carry-forward bucket.


=== Data structure additions ===
=== Data structure additions ===
Line 10: Line 9:
{| class="wikitable sortable mw-collapsible mw-collapsed"
{| class="wikitable sortable mw-collapsible mw-collapsed"
|+Input Data Points – Thin-Cap
|+Input Data Points – Thin-Cap
!Role
!Role!!Label!!Definition!!Typing!!Multiplicity behaviour!!Mandatory
!Label
!Definition
!Typing
!Multiplicity behavior
!Mandatory
|-
|-
|Financials
|Financials||ATP Debt – Related-party||Average debt owed to associated enterprises||Couple (Decimal; ISO 3 Currency)||Aggregate||No (=0 if absent)
|ATP Debt – Related-party
|Average book value of debt owed to associated enterprises during the period
|Couple (Decimal;ISO 3 Currency Code)
|If multiple defined, are aggregated for computation
|No, if absent and Thin-Cap in scope, assumed 0
|-
|-
|Financials
|Financials||ATP Debt – Third-party||Average debt owed to independent lenders||Couple (Decimal; ISO 3 Currency)||Aggregate||No (=0 if absent)
|ATP Debt – Third-party
|Average book value of debt owed to independent lenders
|Couple (Decimal;ISO 3 Currency Code)
|If multiple defined, are aggregated for computation
|No, if absent, assumed 0
|-
|-
|Financials
|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
|ATP Equity – Thin-Cap
|Book or tax equity relevant for thin-cap calculations (may differ from accounting equity)
|Couple (Decimal;ISO 3 Currency Code)
|If multiple defined, are aggregated for computation
|Yes, if Thin-Cap in scope; otherwise optional
|-
|-
|Financials
|Financials||ATP Net Interest Expense||Interest expense – interest income (post-TP)||Couple (Decimal; ISO 3 Currency)||Aggregate||Yes if Thin-Cap in scope
|ATP Net Interest Expense
|Net interest expense (interest expense – interest income) *after* TP adjustments, *before* thin-cap limitation
|Couple (Decimal;ISO 3 Currency Code)
|If multiple defined, are aggregated for computation
|Yes, if Thin-Cap in scope
|-
|-
|Financials
|Financials||ATP EBITDA||EBITDA (after TP Adjustment)||Couple (Decimal; ISO 3 Currency)||Aggregate||Only for EBITDA-based rules
|ATP EBITDA
|Earnings before interest, tax, depreciation & amortisation (post-TP, pre-thin-cap)
|Couple (Decimal;ISO 3 Currency Code)
|If multiple defined, are aggregated for computation
|No, required only for EBITDA-based rules
|-
|-
|Financials
|Financials||ATP Excess Interest Carry-forward N-1||Disallowed interest still available||Couple (Decimal; ISO 3 Currency)||Aggregate||No (default 0)
|ATP Excess Interest Carry-forward N-1
|Disallowed interest from the previous year still available for future deduction
|Couple (Decimal;ISO 3 Currency Code)
|If multiple defined, are aggregated for computation
|No, default 0
|}
|}


==== Rules ====
==== Rules ====
<small>(multiple rows per entity allowed; tightest cap wins)</small>
{| class="wikitable sortable mw-collapsible mw-collapsed"
{| class="wikitable sortable mw-collapsible mw-collapsed"
|+Input Rules – Thin-Cap
|+Input Rules – Thin-Cap
!Role
!Role!!Label!!Definition!!Typing / Domain!!Multiplicity behaviour!!Mandatory
!Label
|-
!Definition
|Thin-Cap||ATP Thin-Cap in scope||Flags whether any thin-capitalisation restriction applies to the entity.||Boolean||One per segment||No, default False
!Typing
!Multiplicity behavior
!Mandatory
|-
|-
|Thin-Cap
|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 (e.g. 30 % EBITDA '''AND''' 3 : 1 debt-equity).||Yes if “in scope” is True
|ATP Thin-Cap rule type
|Specifies which national limitation applies
|Single choice Enum : {Debt-Equity ; Fixed-Ratio ; EBITDA ; Group-Ratio ; Safe-Harbour-None}
|Only one value acceptable per analysis segment
|Yes if any entity flagged Thin-Cap in scope
|-
|-
|Thin-Cap
|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
|ATP Thin-Cap in scope
|Flags whether thin-capitalisation rules apply to the entity
|Boolean
|Only one value acceptable per segment
|No, default False
|-
|-
|Thin-Cap
|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
|ATP Debt/Equity Safe-Harbour ratio
|Maximum Debt ÷ Equity allowed (e.g. 3 : 1) for Debt-Equity type
|Decimal
|Only one value acceptable per segment
|Mandatory for Debt-Equity rules
|-
|-
|Thin-Cap
|Thin-Cap||ATP Fixed-Ratio threshold||Numeric limit '''T'''.<br>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
|ATP Fixed-Ratio % EBITDA
|Maximum percentage of EBITDA deductible as net interest (e.g. 30 %)
|percentage
|Only one value acceptable per segment
|Mandatory for Fixed-Ratio / EBITDA rules
|-
|-
|Thin-Cap
|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
|ATP De-minimis interest threshold
|Amount of net interest always deductible regardless of ratios
|Couple (Decimal;ISO 3 Currency Code)
|Only one value acceptable per segment
|Optional – default 0
|-
|-
|Thin-Cap
|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
|ATP Group-Ratio election
|Allows use of a group ratio if more favourable than fixed ratio
|Boolean
|Only one value acceptable per segment
|Optional – default False
|-
|-
|Thin-Cap
|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
|ATP Group-Ratio %
|Group net-interest ÷ EBITDA ratio when election taken
|percentage
|Only one value acceptable per segment
|Required if Group-Ratio election = True
|-
|-
|Thin-Cap
|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 ∞
|ATP Excess Interest carry-forward period
|Number of years disallowed interest may be carried forward
|Integer
|Only one value acceptable per segment
|Optional – default ∞
|}
|}


Line 130: Line 52:
{| class="wikitable"
{| class="wikitable"
|+New Output Data Points
|+New Output Data Points
!Role
!Role!!Label!!Definition
!Label
!Definition
|-
|-
|Taxation
|Taxation||ATP Disallowed Interest N||Interest denied in current year (−PBT)
|ATP Disallowed Interest N
|Net interest expense denied in the current year (negative adjustment to ATP PBT)
|-
|-
|Taxation
|Taxation||ATP Excess Interest Carry-forward N||Disallowed interest carried forward
|ATP Excess Interest Carry-forward N
|Disallowed interest to carry forward to future years, after utilisation tests
|}
|}


=== Computational step – Thin-Cap limitation ===
=== Computational step – Thin-Cap limitation ===
This step is performed '''entity-by-entity''' at the “Declaring Entity” level.
This step is executed '''entity-by-entity''' at the Declaring-Entity level.
 
# '''Pre-checks'''
#* If <code>Thin-Cap in scope = False</code> ⇒ skip module. 
# '''Net interest expense (NI) after de-minimis'''
#* <code>NI = max(0 ; ATP Net Interest Expense − ATP De-minimis interest threshold)</code>
# '''Allowable Interest Ceiling (AIC)'''
#* For each rule row i where rule type = Fixed-Ratio: 
#** Fetch <code>Numerator_i ← choose(NumeratorTag_i , data block)</code>
#** Fetch <code>Denominator_i ← choose(DenominatorTag_i , data block)</code>
#** if <code>Denominator_i = 0</code> → raise validation error
#** <code>Threshold_i ← ATP Fixed-Ratio threshold_i</code>
#** <code>Cap_i ← Threshold_i × Denominator_i</code>
#** if <code>NumeratorTag_i ∈ { NetInterestExpense }</code>:
#*** <code>AIC_i = min( NI , Cap_i )</code>
#** if <code>NumeratorTag_i ∈ { DebtRelatedParty ; DebtTotal }</code>:
#*** <code>AllowedDebt  = Cap_i</code>
#*** <code>ActualDebt    = Numerator_i</code>
#*** <code>AllowedInterest = NI × AllowedDebt / ActualDebt</code>  (if ActualDebt > 0)
#*** <code>AIC_i = min( NI , AllowedInterest )</code>
#** if <code>Group-Ratio election_i = True</code> (Apply group-ratio uplift if elected on this row):
#*** <code>GRCap = Group-Ratio %_i × Denominator_i</code>
#*** <code>AIC_i = min( NI , max( Cap_i , GRCap ) )</code>
#* Combine multiple rows: 
#** <code>AIC_final = MIN( AIC_i for all Fixed-Ratio rows )</code>
#** If the entity has only one row and <code>ATP Thin-Cap rule type = Safe-Harbour-None</code>:
#*** <code>AIC_final = NI</code>
# '''Current-year disallowance'''
#* <code>Disallowed_Before_Carry = max(0 ; NI − AIC_final)</code>
# '''Utilise carry-forward bucket  (FIFO single pool)'''
#* <code>Headroom = max( 0 ; AIC_final – ( NI – Disallowed_Before_Carry ) )</code> 
#* <code>Allowed_from_carry = min(ATP Excess Interest Carry-forward N-1 ; Headroom)</code> 
#* <code>Disallowed_N = Disallowed_Before_Carry − Allowed_from_carry</code>
# '''Update variables'''
## <code>ΔPBT_Thin-Cap = − Disallowed_N</code>
## <code>ATP Disallowed Interest N = Disallowed_N</code>
## <code>ATP Excess Interest Carry-forward N = Disallowed_N</code> (drops FIFO after ‘‘carry-forward period’’)
## Replace <code>ATP_PBT</code> downstream with: <code>New_ATP_PBT = ATP PBT + ΔPBT_Thin-Cap + ΔPBT_WHT (paid + due)</code>


# '''Compute the Allowable Interest Ceiling (AIC)'''
#* Debt-Equity rule: AIC = min(Net Interest (NI) ; (Debt/Equity Safe-Harbour × ATP Equity – Thin-Cap))
#* Fixed-Ratio / EBITDA rule: <nowiki>AIC = min(NI ; Fixed-Ratio % × ATP EBITDA)</nowiki>
#* Group-Ratio election: substitute the higher of Fixed-Ratio % and Group-Ratio % in the above.
# '''Apply the de-minimis threshold'''
#* If <nowiki>NI ≤ De-minimis</nowiki> → entire NI is deductible → skip to step 4.
# '''Determine current-year disallowance'''
#* <nowiki>Disallowed_N = max(0 ; NI – AIC)</nowiki> 
# '''Utilise prior-year carry-forward:'''
#* <nowiki>Allowed_from_carry = min(Excess Carry-forward N-1 ; AIC – (NI – Disallowed_N))</nowiki>
#* <nowiki>Disallowed_N = Disallowed_N – Allowed_from_carry</nowiki> 
# '''Update variables''':
## <nowiki>ΔPBT_Thin-Cap = (-1) × Disallowed_N</nowiki> 
## <nowiki>ATP Disallowed Interest N = Disallowed_N</nowiki> 
## <nowiki>ATP Excess Interest Carry-forward N = Disallowed_N</nowiki> (subject to carry-forward period) 
## Replace <nowiki>ATP PBT</nowiki> in the downstream '''Tax losses''' stage with <nowiki>New_ATP_PBT = ATP PBT + ΔPBT_Thin-Cap + ΔPBT_WHT (paid + due)</nowiki> 
=== Interaction with other modules ===
=== Interaction with other modules ===
* '''Transfer Pricing convergence''': thin-cap uses the '''post-TP''' interest figures; it does NOT trigger another TP iteration.
* '''TP convergence''' uses after TP Ajustment interest; does NOT trigger another TP loop.
* '''Withholding-tax engine''': unchanged WHT remains computed on gross interest flows.
* '''Withholding-tax''' unchanged (WHT on gross interest).
* '''Tax-loss computation''': use <nowiki>New_ATP_PBT</nowiki> that includes thin-cap adjustment.
* '''Tax-loss computation''' – starts from <code>New_ATP_PBT</code>
* '''Genetic optimiser''': may treat the '''Debt/Equity ratio''', '''interest rate''', or '''Group-Ratio election''' as additional variables, bounded by statutory rules.
* '''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 ====
{| class="wikitable"
!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 ====
{| class="wikitable"
!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  <!-- 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


=== Summary of new labels ===
* '''Step 6 – Outputs''' 
;Data
  ATP Disallowed Interest N = €500 000 
:ATP Debt – Related-party • ATP Debt – Third-party • ATP Equity – Thin-Cap • ATP Net Interest Expense • ATP EBITDA • ATP Excess Interest Carry-forward N-1  
  ATP Excess Interest Carry-forward N = €500 000  
;Rules
  ΔPBT_Thin-Cap = –€500 000  
:ATP Thin-Cap rule type • ATP Thin-Cap in scope • ATP Debt/Equity Safe-Harbour ratio • ATP Fixed-Ratio % EBITDA • ATP De-minimis interest threshold • ATP Group-Ratio election • ATP Group-Ratio % • ATP Excess Interest carry-forward period  
  New_ATP_PBT = ATP PBT – €500 000 + ΔPBT_WHT
;Outputs
:ATP Disallowed Interest N • ATP Excess Interest Carry-forward N • ΔPBT_Thin-Cap

Revision as of 16:16, 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

Input Data Points – Thin-Cap
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)

Input Rules – Thin-Cap
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 (e.g. 30 % EBITDA AND 3 : 1 debt-equity). 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

New Output Data Points
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.

  1. Pre-checks
    • If Thin-Cap in scope = False ⇒ skip module.
  2. Net interest expense (NI) after de-minimis
    • NI = max(0 ; ATP Net Interest Expense − ATP De-minimis interest threshold)
  3. 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 ) )
    • 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
  4. Current-year disallowance
    • Disallowed_Before_Carry = max(0 ; NI − AIC_final)
  5. 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
  6. Update variables
    1. ΔPBT_Thin-Cap = − Disallowed_N
    2. ATP Disallowed Interest N = Disallowed_N
    3. ATP Excess Interest Carry-forward N = Disallowed_N (drops FIFO after ‘‘carry-forward period’’)
    4. 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