@mudraforge/statutory 2.10.0 → 2.12.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +214 -0
- package/CONTRIBUTING.md +3 -2
- package/README.md +42 -39
- package/SECURITY.md +2 -2
- package/SKILL.md +1 -1
- package/bin/cli.js +288 -29
- package/docs/ACCOUNTING_ASSURANCE_AUDIT_DOSSIER.md +276 -0
- package/docs/ARCHITECTURE.md +14 -14
- package/docs/ARCHITECTURE_DECISIONS.md +3 -3
- package/docs/CASE_01_FORM_TEXT.txt +48 -0
- package/docs/CATALOG.md +877 -111
- package/docs/CA_PILOT_BENCHMARK_CASES.md +282 -0
- package/docs/CORPUS_QUALITY.md +33 -16
- package/docs/DATA_LICENSING.md +1 -1
- package/docs/DOMAIN_BREADTH_AND_DEPTH_COMPARISON.md +36 -34
- package/docs/OKF_MAINTENANCE_SOP.md +12 -12
- package/docs/PROVENANCE.md +2 -2
- package/docs/VERIFICATION.md +6 -6
- package/okf/corporate_ma_restructuring/business_combinations_indas_103/circulars/mca_notification_indas_103_business_combinations.md +41 -0
- package/okf/corporate_ma_restructuring/business_combinations_indas_103/forms/purchase_price_allocation_schedule.json +110 -0
- package/okf/corporate_ma_restructuring/business_combinations_indas_103/section.json +65 -0
- package/okf/corporate_ma_restructuring/impairment_of_assets_indas_36/circulars/mca_notification_indas_36_impairment.md +45 -0
- package/okf/corporate_ma_restructuring/impairment_of_assets_indas_36/forms/cgu_impairment_testing_register.json +53 -0
- package/okf/corporate_ma_restructuring/impairment_of_assets_indas_36/section.json +61 -0
- package/okf/corporate_ma_restructuring/share_based_payments_indas_102/circulars/icai_guidance_share_based_payments.md +37 -0
- package/okf/corporate_ma_restructuring/share_based_payments_indas_102/forms/esop_graded_vesting_amortization_schedule.json +49 -0
- package/okf/corporate_ma_restructuring/share_based_payments_indas_102/section.json +60 -0
- package/okf/corporate_ma_restructuring/tax_clearance_sec281/circulars/cbdt_circular_04_2011_sec281_clearance.md +57 -0
- package/okf/corporate_ma_restructuring/tax_clearance_sec281/forms/form_281_tax_clearance_application.json +42 -0
- package/okf/corporate_ma_restructuring/tax_clearance_sec281/section.json +70 -0
- package/okf/direct_tax/income_taxes_deferred_tax_indas_12/circulars/mca_notification_indas_12_income_taxes.md +40 -0
- package/okf/direct_tax/income_taxes_deferred_tax_indas_12/forms/deferred_tax_asset_liability_reconciliation_schedule.json +46 -0
- package/okf/direct_tax/income_taxes_deferred_tax_indas_12/section.json +61 -0
- package/okf/direct_tax/statutory_disallowance_43b/circulars/supreme_court_checkmate_services_2022.md +64 -0
- package/okf/direct_tax/statutory_disallowance_43b/forms/tax_audit_form_3cd_clause_26_schedule.json +71 -0
- package/okf/direct_tax/statutory_disallowance_43b/section.json +77 -0
- package/okf/direct_tax/tds_commission_194h/section.json +5 -4
- package/okf/direct_tax/tds_contractor_194c/section.json +3 -3
- package/okf/direct_tax/tds_ecommerce_194o/circulars/cbdt_circular_20_2020_guidelines_194o.md +36 -0
- package/okf/direct_tax/tds_ecommerce_194o/forms/form_26q_ecommerce_schedule.json +75 -0
- package/okf/direct_tax/tds_ecommerce_194o/section.json +65 -0
- package/okf/direct_tax/tds_goods_194q/circulars/cbdt_circular_13_2021_guidelines.md +2 -2
- package/okf/direct_tax/tds_goods_194q/section.json +9 -3
- package/okf/direct_tax/tds_goods_393/section.json +6 -4
- package/okf/direct_tax/tds_individual_contract_194m/circulars/finance_act_2024_194m_rate_cut_memo.md +24 -0
- package/okf/direct_tax/tds_individual_contract_194m/forms/form_26qd_contractor_statement.json +64 -0
- package/okf/direct_tax/tds_individual_contract_194m/section.json +58 -0
- package/okf/direct_tax/tds_interest_194a/circulars/cbdt_circular_03_2010_interest_tds.md +28 -0
- package/okf/direct_tax/tds_interest_194a/forms/form_15g_15h_interest_declaration.json +55 -0
- package/okf/direct_tax/tds_interest_194a/forms/form_26q_interest_schedule.json +72 -0
- package/okf/direct_tax/tds_interest_194a/section.json +67 -0
- package/okf/direct_tax/tds_perquisites_194r/forms/form_26q_perquisites_schedule.json +83 -0
- package/okf/direct_tax/tds_perquisites_194r/section.json +2 -2
- package/okf/direct_tax/tds_property_194ia/circulars/cbdt_notification_67_2022_property_tds.md +57 -0
- package/okf/direct_tax/tds_property_194ia/forms/form_26qb_property_tds_challan.json +43 -0
- package/okf/direct_tax/tds_property_194ia/section.json +73 -0
- package/okf/direct_tax/tds_rent_194i/section.json +5 -4
- package/okf/direct_tax/tds_rent_individual_194ib/circulars/finance_act_2024_rent_rate_cut_memo.md +24 -0
- package/okf/direct_tax/tds_rent_individual_194ib/forms/form_26qc_challan_cum_statement.json +74 -0
- package/okf/direct_tax/tds_rent_individual_194ib/section.json +57 -0
- package/okf/direct_tax/tds_services_194j/circulars/cbdt_circular_03_2020_fts_rate_cut.md +1 -1
- package/okf/direct_tax/tds_services_194j/section.json +10 -3
- package/okf/indirect_tax_gst/common_itc_reversal_rule42_43/circulars/cbic_circular_170_2022_itc_reporting.md +30 -0
- package/okf/indirect_tax_gst/common_itc_reversal_rule42_43/circulars/cbic_notification_18_2022_cutoff_amendment.md +26 -0
- package/okf/indirect_tax_gst/common_itc_reversal_rule42_43/forms/gstr_3b_table_4b1_reversal_schedule.json +101 -0
- package/okf/indirect_tax_gst/common_itc_reversal_rule42_43/forms/rule_42_43_annual_reconciliation_worksheet.json +87 -0
- package/okf/indirect_tax_gst/common_itc_reversal_rule42_43/section.json +65 -0
- package/okf/indirect_tax_gst/itc_reversal_rule37_37a/circulars/cbic_circular_192_2023_ecl_interest_calculation.md +36 -0
- package/okf/indirect_tax_gst/itc_reversal_rule37_37a/circulars/cbic_notification_19_2022_rule37.md +31 -0
- package/okf/indirect_tax_gst/itc_reversal_rule37_37a/forms/gstr_3b_table_4b_reversal.json +81 -0
- package/okf/indirect_tax_gst/itc_reversal_rule37_37a/section.json +71 -0
- package/okf/indirect_tax_gst/rcm_liability_sec9_3/circulars/cbic_notification_07_2025_composition_rent_exclusion.md +41 -0
- package/okf/indirect_tax_gst/rcm_liability_sec9_3/circulars/cbic_notification_09_2024_renting_rcm.md +37 -0
- package/okf/indirect_tax_gst/rcm_liability_sec9_3/circulars/gst_council_55th_meeting_renting_rcm_regularization.md +31 -0
- package/okf/indirect_tax_gst/rcm_liability_sec9_3/section.json +24 -2
- package/okf/international_tax/financial_instruments_ecl_indas_109/circulars/mca_notification_indas_109_financial_instruments.md +43 -0
- package/okf/international_tax/financial_instruments_ecl_indas_109/forms/indas_109_ecl_provision_matrix_schedule.json +43 -0
- package/okf/international_tax/financial_instruments_ecl_indas_109/section.json +62 -0
- package/okf/manifest.json +108 -15
- package/okf/msme_commercial/lease_accounting_indas_116/circulars/mca_notification_indas_116_leases.md +48 -0
- package/okf/msme_commercial/lease_accounting_indas_116/forms/lease_rou_asset_and_liability_schedule.json +55 -0
- package/okf/msme_commercial/lease_accounting_indas_116/section.json +67 -0
- package/okf/msme_commercial/provisions_contingencies_indas_37/circulars/mca_notification_indas_37_provisions.md +36 -0
- package/okf/msme_commercial/provisions_contingencies_indas_37/forms/provisions_and_contingent_liabilities_register.json +38 -0
- package/okf/msme_commercial/provisions_contingencies_indas_37/section.json +61 -0
- package/okf/msme_commercial/revenue_recognition_indas_115/circulars/mca_notification_indas_115_revenue_contracts.md +56 -0
- package/okf/msme_commercial/revenue_recognition_indas_115/forms/revenue_contract_5step_allocation_schedule.json +54 -0
- package/okf/msme_commercial/revenue_recognition_indas_115/section.json +69 -0
- package/package.json +7 -1
- package/src/calculators.js +7898 -638
- package/src/constants.js +1 -1
- package/src/index.js +604 -23
- package/src/tally.js +812 -0
- package/src/zoho_gstr2b.js +2964 -0
- package/types/index.d.ts +516 -0
package/src/index.js
CHANGED
|
@@ -17,11 +17,59 @@ import { fileURLToPath } from 'node:url';
|
|
|
17
17
|
import {
|
|
18
18
|
roundToPaisa,
|
|
19
19
|
roundSection288B,
|
|
20
|
+
cleanNumericAmount,
|
|
21
|
+
toIntegerPaise,
|
|
22
|
+
fromIntegerPaise,
|
|
23
|
+
MalformedNumericInputError,
|
|
24
|
+
MissingMandatoryParameterError,
|
|
25
|
+
assertMandatoryNumeric,
|
|
20
26
|
calculateCorporateTaxMatVsConcessional,
|
|
21
27
|
evaluatePlaceOfSupplyAndLut,
|
|
22
28
|
calculateTransferPricingAlp,
|
|
23
29
|
evaluateSection79LossContinuity,
|
|
24
|
-
|
|
30
|
+
evaluateSection281TaxClearance,
|
|
31
|
+
revalueForeignExchangeIndAs109,
|
|
32
|
+
calculateBusinessCombinationsIndAs103,
|
|
33
|
+
calculateImpairmentIndAs36,
|
|
34
|
+
calculateRevenueAllocationIndAs115,
|
|
35
|
+
calculateLeaseAmortizationIndAs116,
|
|
36
|
+
calculateExpectedCreditLossIndAs109,
|
|
37
|
+
calculateEsopAmortizationIndAs102,
|
|
38
|
+
calculateDeferredTaxIndAs12,
|
|
39
|
+
evaluateProvisionsAndContingenciesIndAs37,
|
|
40
|
+
calculateForeignCurrencyIndAs21,
|
|
41
|
+
resolveMissingPanPenaltyFloor,
|
|
42
|
+
evaluateSection194Q,
|
|
43
|
+
evaluateSection194C,
|
|
44
|
+
evaluateSection194H,
|
|
45
|
+
evaluateSection194I,
|
|
46
|
+
evaluateSection194J,
|
|
47
|
+
evaluateSection194A,
|
|
48
|
+
evaluateSection194O,
|
|
49
|
+
evaluateSection194IA,
|
|
50
|
+
evaluateSection194IB,
|
|
51
|
+
evaluateSection194M,
|
|
52
|
+
evaluateSection194R,
|
|
53
|
+
evaluateSection43BStatutoryPayables,
|
|
54
|
+
calculateItcReversalRule37,
|
|
55
|
+
calculateRule37ASupplierNonFilingReversal,
|
|
56
|
+
evaluateSection206C1H,
|
|
57
|
+
evaluateSection43bH,
|
|
58
|
+
calculateMsmeCompoundInterest,
|
|
59
|
+
calculateAdvanceTaxAndInterest,
|
|
60
|
+
calculateRule42InputServiceReversal,
|
|
61
|
+
reconcileRule42AnnualTrueUp,
|
|
62
|
+
calculateRule43CapitalGoodsReversal,
|
|
63
|
+
calculateGstItcApportionmentRule42_43,
|
|
64
|
+
evaluateCrossBorderRemittance,
|
|
65
|
+
generateMsme1AndScheduleThreeAging,
|
|
66
|
+
evaluateLowerDeductionCertificateValidity,
|
|
67
|
+
getRbiBankRateForDate,
|
|
68
|
+
DEFAULT_RBI_BANK_RATE,
|
|
69
|
+
MSMED_RATE_MULTIPLIER,
|
|
70
|
+
RBI_BANK_RATE_SCHEDULE,
|
|
71
|
+
AUTHORITATIVE_STATUTORY_RATES,
|
|
72
|
+
VALID_194J_CATEGORIES
|
|
25
73
|
} from './calculators.js';
|
|
26
74
|
import {
|
|
27
75
|
getStatutoryOutcomes,
|
|
@@ -29,6 +77,27 @@ import {
|
|
|
29
77
|
STATUTORY_OUTCOMES_DICTIONARY,
|
|
30
78
|
enrichWithOutcomeExplanation
|
|
31
79
|
} from './outcomes.js';
|
|
80
|
+
import {
|
|
81
|
+
parseTallyDaybookCsv,
|
|
82
|
+
parseTallyDaybookXml,
|
|
83
|
+
reconcile194QDaybook,
|
|
84
|
+
generateTally194QJournalXml,
|
|
85
|
+
generateAuditMarkdownReport,
|
|
86
|
+
getIndianFinancialYear
|
|
87
|
+
} from './tally.js';
|
|
88
|
+
import {
|
|
89
|
+
parseZohoBillsCsv,
|
|
90
|
+
parseZohoBillsJson,
|
|
91
|
+
parseGstr2bJson,
|
|
92
|
+
reconcileZohoGstr2b,
|
|
93
|
+
generateGstr2bAuditMarkdownReport,
|
|
94
|
+
normalizeInvoiceNumber,
|
|
95
|
+
normalizeGstin,
|
|
96
|
+
calculateOverdueStartDate,
|
|
97
|
+
calculateEclUtilizationInterest,
|
|
98
|
+
calculatePortfolioEclUtilizationInterest,
|
|
99
|
+
buildEvidenceProvenance
|
|
100
|
+
} from './zoho_gstr2b.js';
|
|
32
101
|
|
|
33
102
|
import { STATUTORY_CLIENT_VERSION, DEFAULT_BASE_URL } from './constants.js';
|
|
34
103
|
|
|
@@ -45,11 +114,30 @@ try {
|
|
|
45
114
|
export const DEFAULT_LOCAL_OKF_DIR = defaultOkfDir;
|
|
46
115
|
export { STATUTORY_CLIENT_VERSION, DEFAULT_BASE_URL };
|
|
47
116
|
|
|
117
|
+
/**
|
|
118
|
+
* Current verified Merkle root digest for the active OKF v0.2 corpus.
|
|
119
|
+
*/
|
|
120
|
+
export const CURRENT_RELEASE_MERKLE_ROOT = 'sha256-b17c37b2724aece2a28beaab5720a777ae27e661ac51f1436be6eff3ca5ef64b';
|
|
121
|
+
export const MERKLE_ROOT_OKF_V2 = CURRENT_RELEASE_MERKLE_ROOT;
|
|
122
|
+
|
|
48
123
|
/**
|
|
49
124
|
* Pinned official release Merkle root digests.
|
|
50
125
|
* Prevents unauthorized bundle substitution attacks even if an attacker controls the remote endpoint.
|
|
51
126
|
*/
|
|
52
127
|
export const PINNED_RELEASE_ROOTS = new Set([
|
|
128
|
+
'sha256-318004673a779499e82fd7316c7a6728f3bcdaf449bb4a557b6bd685b899dee3', // fix/public-okf-table1-sl-nos-and-temporal-thresholds (Section 393 Table 1 Sl Nos & 2025 Act thresholds)
|
|
129
|
+
'sha256-b17c37b2724aece2a28beaab5720a777ae27e661ac51f1436be6eff3ca5ef64b', // feat/okf-accounting-domain-expansion (46 Sections across 5 Domains, 52 Circulars, 47 Forms)
|
|
130
|
+
'sha256-a94baf08cbdea064a7b1bd25c1e1311821bf75e9b0d15cc8e0648339d487c79b', // feat/zoho-gstr2b-ap-reconciliation (38 Sections across 5 Domains, 44 Circulars, 39 Forms)
|
|
131
|
+
'sha256-df76c16ed86673426eeb87fafa1c23712830ce5314339ff17fbb2e0e1795e046', // feat/notification-07-2025-composition-rent-rcm-exclusion (38 Sections across 5 Domains, 42 Circulars)
|
|
132
|
+
'sha256-f7709f6a77a3b5ae16d69baf49f6e5c69bb01e29a4f13a506eb757220bf68e03', // feat/notification-09-2024-commercial-rent-rcm (38 Sections across 5 Domains, 41 Circulars)
|
|
133
|
+
'sha256-2e402bb02fe71939c79b9f11ad737d20faac21daf8e27417cb13ec1933511c19', // feat/gst-rule-42-43 (38 Sections across 5 Domains)
|
|
134
|
+
'sha256-feb1555f10c9f5c70de18ef340e0ba6cf1f060fb19cae866aa36240345c46f3a', // feat/rent-194ib-contract-194m (37 Sections across 5 Domains)
|
|
135
|
+
'sha256-02090e4063a863e3486401215469350c911dc0c9a24855e1d9db2903946aa644', // feat/perquisites-194r (35 Sections across 5 Domains)
|
|
136
|
+
'sha256-bd351719a8235c44f2bac87cc347423baa8ac3ecb74c0ee63d1fffa9f33dbebe', // feat/property-194ia (35 Sections across 5 Domains)
|
|
137
|
+
'sha256-fc208ff012bfc3044cfc6edc5fcbf1c0e445e387a8c7d806e271968b511919ce', // feat/mna-sec281 (34 Sections across 5 Domains)
|
|
138
|
+
'sha256-7f2bd99d81a261743773230d2ab3e21717ac9ca02a55c867545f5777b1a7d69f', // feat/statutory-43b-payroll (33 Sections across 5 Domains)
|
|
139
|
+
'sha256-bf547512a57f26eae9a5ebcb9f0ec41c397421366b1b4223ab9e17d282721ca7', // feat/ecommerce-194o (32 Sections across 5 Domains)
|
|
140
|
+
'sha256-b12fab61f0ddcc8852a7db1b4831151163d1d0ff97112168d8dccf693cfe70a7', // v2.11.0 Complete Accounts Payable (31 Sections across 5 Domains)
|
|
53
141
|
'sha256-4bbe36c3db841b833dd2bebbd6c1c5ed735498e7b20d1221c323ceb211529fe0', // v2.9.0 Corporate Finance 5 Domains Merkle Root (29 Sections across 5 Domains)
|
|
54
142
|
'sha256-3fb34bdcd34eec794b1f8e6abb2c0e0e87664746ec2f50ad2599c34bf57565b3', // v2.8.1 Finance Act, 2025 Section 206AB Sunset Root (24 Sections across 5 Domains)
|
|
55
143
|
'sha256-239641de2bef05917673f693f9ba4d14bd5e137d64554fba5db87e426bc13e14', // v2.8.0 Deep Semantic Citation Merkle Root (24 Sections across 5 Domains)
|
|
@@ -1805,6 +1893,428 @@ export class StatutoryClient {
|
|
|
1805
1893
|
return revalueForeignExchangeIndAs109(payload);
|
|
1806
1894
|
}
|
|
1807
1895
|
|
|
1896
|
+
/**
|
|
1897
|
+
* Business Combinations & Purchase Price Allocation (PPA) under Ind AS 103 / IFRS 3 / ASC 805.
|
|
1898
|
+
*/
|
|
1899
|
+
calculateBusinessCombinationsIndAs103(payload) {
|
|
1900
|
+
return calculateBusinessCombinationsIndAs103(payload);
|
|
1901
|
+
}
|
|
1902
|
+
|
|
1903
|
+
/**
|
|
1904
|
+
* Asset & CGU Impairment Testing & DCF Value in Use under Ind AS 36 / IAS 36 / ASC 360.
|
|
1905
|
+
*/
|
|
1906
|
+
calculateImpairmentIndAs36(payload) {
|
|
1907
|
+
return calculateImpairmentIndAs36(payload);
|
|
1908
|
+
}
|
|
1909
|
+
|
|
1910
|
+
/**
|
|
1911
|
+
* 5-Step Revenue Recognition & Relative SSP Allocation under Ind AS 115 / IFRS 15 / ASC 606.
|
|
1912
|
+
*/
|
|
1913
|
+
calculateRevenueAllocationIndAs115(payload) {
|
|
1914
|
+
return calculateRevenueAllocationIndAs115(payload);
|
|
1915
|
+
}
|
|
1916
|
+
|
|
1917
|
+
/**
|
|
1918
|
+
* Right-of-Use Asset & Lease Liability Amortization under Ind AS 116 / IFRS 16 / ASC 842.
|
|
1919
|
+
*/
|
|
1920
|
+
calculateLeaseAmortizationIndAs116(payload) {
|
|
1921
|
+
return calculateLeaseAmortizationIndAs116(payload);
|
|
1922
|
+
}
|
|
1923
|
+
|
|
1924
|
+
/**
|
|
1925
|
+
* Expected Credit Loss (ECL) Impairment under Ind AS 109 / IFRS 9 / ASC 326.
|
|
1926
|
+
*/
|
|
1927
|
+
calculateExpectedCreditLossIndAs109(payload) {
|
|
1928
|
+
return calculateExpectedCreditLossIndAs109(payload);
|
|
1929
|
+
}
|
|
1930
|
+
|
|
1931
|
+
/**
|
|
1932
|
+
* ESOP Graded Vesting Front-Loaded Amortization under Ind AS 102 / IFRS 2 / ASC 718.
|
|
1933
|
+
*/
|
|
1934
|
+
calculateEsopAmortizationIndAs102(payload) {
|
|
1935
|
+
return calculateEsopAmortizationIndAs102(payload);
|
|
1936
|
+
}
|
|
1937
|
+
|
|
1938
|
+
/**
|
|
1939
|
+
* Balance Sheet Deferred Tax (DTA / DTL) and ETR Reconciliation under Ind AS 12 / IAS 12 / ASC 740.
|
|
1940
|
+
*/
|
|
1941
|
+
calculateDeferredTaxIndAs12(payload) {
|
|
1942
|
+
return calculateDeferredTaxIndAs12(payload);
|
|
1943
|
+
}
|
|
1944
|
+
|
|
1945
|
+
/**
|
|
1946
|
+
* Provisions, Contingent Liabilities & Tax Dispute Triangulation under Ind AS 37 / IAS 37 / ASC 450.
|
|
1947
|
+
*/
|
|
1948
|
+
evaluateProvisionsAndContingenciesIndAs37(payload) {
|
|
1949
|
+
return evaluateProvisionsAndContingenciesIndAs37(payload);
|
|
1950
|
+
}
|
|
1951
|
+
|
|
1952
|
+
/**
|
|
1953
|
+
* Foreign Currency Monetary Revaluation & FCTR Translation under Ind AS 21 / IAS 21 / ASC 830.
|
|
1954
|
+
*/
|
|
1955
|
+
calculateForeignCurrencyIndAs21(payload) {
|
|
1956
|
+
return calculateForeignCurrencyIndAs21(payload);
|
|
1957
|
+
}
|
|
1958
|
+
|
|
1959
|
+
/**
|
|
1960
|
+
* Section 194Q: Deduction of tax at source on purchase of goods exceeding ₹50 Lakh.
|
|
1961
|
+
*/
|
|
1962
|
+
evaluateSection194Q(payload) {
|
|
1963
|
+
return evaluateSection194Q(payload);
|
|
1964
|
+
}
|
|
1965
|
+
|
|
1966
|
+
/**
|
|
1967
|
+
* Section 194C: Withholding on contractor and sub-contractor payments.
|
|
1968
|
+
*/
|
|
1969
|
+
evaluateSection194C(payload) {
|
|
1970
|
+
return evaluateSection194C(payload);
|
|
1971
|
+
}
|
|
1972
|
+
|
|
1973
|
+
/**
|
|
1974
|
+
* Section 194H: Withholding on commission and brokerage payments.
|
|
1975
|
+
*/
|
|
1976
|
+
evaluateSection194H(payload) {
|
|
1977
|
+
return evaluateSection194H(payload);
|
|
1978
|
+
}
|
|
1979
|
+
|
|
1980
|
+
/**
|
|
1981
|
+
* Section 194I: Withholding on rent (land/building vs plant/machinery).
|
|
1982
|
+
*/
|
|
1983
|
+
evaluateSection194I(payload) {
|
|
1984
|
+
return evaluateSection194I(payload);
|
|
1985
|
+
}
|
|
1986
|
+
|
|
1987
|
+
/**
|
|
1988
|
+
* Section 194J: Withholding on professional and technical services (FTS).
|
|
1989
|
+
*/
|
|
1990
|
+
evaluateSection194J(payload) {
|
|
1991
|
+
return evaluateSection194J(payload);
|
|
1992
|
+
}
|
|
1993
|
+
|
|
1994
|
+
/**
|
|
1995
|
+
* Section 194A: Withholding on interest other than interest on securities.
|
|
1996
|
+
*/
|
|
1997
|
+
evaluateSection194A(payload) {
|
|
1998
|
+
return evaluateSection194A(payload);
|
|
1999
|
+
}
|
|
2000
|
+
|
|
2001
|
+
/**
|
|
2002
|
+
* Section 194O: E-commerce operator marketplace withholding & 194Q/206C(1H) override.
|
|
2003
|
+
*/
|
|
2004
|
+
evaluateSection194O(payload) {
|
|
2005
|
+
return evaluateSection194O(payload);
|
|
2006
|
+
}
|
|
2007
|
+
|
|
2008
|
+
/**
|
|
2009
|
+
* Section 194-IA: Immovable property transfer TDS (higher of consideration or SDV) & Form 26QB.
|
|
2010
|
+
*/
|
|
2011
|
+
evaluateSection194IA(payload) {
|
|
2012
|
+
return evaluateSection194IA(payload);
|
|
2013
|
+
}
|
|
2014
|
+
|
|
2015
|
+
/**
|
|
2016
|
+
* Section 194-IB: Individual/HUF rent TDS, 2% rate cut, Form 26QC, and Section 194-IB(4) last-month rent ceiling.
|
|
2017
|
+
*/
|
|
2018
|
+
evaluateSection194IB(payload) {
|
|
2019
|
+
return evaluateSection194IB(payload);
|
|
2020
|
+
}
|
|
2021
|
+
|
|
2022
|
+
/**
|
|
2023
|
+
* Section 194M: Individual/HUF contract/commission/professional TDS, 2% rate cut, Form 26QD, and 50L threshold.
|
|
2024
|
+
*/
|
|
2025
|
+
evaluateSection194M(payload) {
|
|
2026
|
+
return evaluateSection194M(payload);
|
|
2027
|
+
}
|
|
2028
|
+
|
|
2029
|
+
/**
|
|
2030
|
+
* Section 194R: Benefit or perquisite in business or profession TDS, in-kind advance tax, and de minimis threshold.
|
|
2031
|
+
*/
|
|
2032
|
+
evaluateSection194R(payload) {
|
|
2033
|
+
return evaluateSection194R(payload);
|
|
2034
|
+
}
|
|
2035
|
+
|
|
2036
|
+
/**
|
|
2037
|
+
* Section 43B / Section 36(1)(va): Statutory payables disallowance & Supreme Court Checkmate Doctrine.
|
|
2038
|
+
*/
|
|
2039
|
+
evaluateSection43B(payload) {
|
|
2040
|
+
return evaluateSection43BStatutoryPayables(payload);
|
|
2041
|
+
}
|
|
2042
|
+
|
|
2043
|
+
/**
|
|
2044
|
+
* Section 281: M&A asset transfer tax clearance & voidability evaluation under CBDT Circular 04/2011.
|
|
2045
|
+
*/
|
|
2046
|
+
evaluateSection281(payload) {
|
|
2047
|
+
return evaluateSection281TaxClearance(payload);
|
|
2048
|
+
}
|
|
2049
|
+
|
|
2050
|
+
/**
|
|
2051
|
+
* Rule 37: 180-day vendor non-payment ITC reversal & Section 50(1) 18% interest.
|
|
2052
|
+
*/
|
|
2053
|
+
calculateItcReversalRule37(payload) {
|
|
2054
|
+
return calculateItcReversalRule37(payload);
|
|
2055
|
+
}
|
|
2056
|
+
|
|
2057
|
+
/**
|
|
2058
|
+
* Rule 37A: Reversal of ITC where supplier failed to furnish Form GSTR-3B by November 30.
|
|
2059
|
+
*/
|
|
2060
|
+
calculateRule37ASupplierNonFilingReversal(payload) {
|
|
2061
|
+
return calculateRule37ASupplierNonFilingReversal(payload);
|
|
2062
|
+
}
|
|
2063
|
+
|
|
2064
|
+
/**
|
|
2065
|
+
* Rule 42: Inputs and input services common ITC reversal (monthly provisional).
|
|
2066
|
+
*/
|
|
2067
|
+
calculateRule42InputServiceReversal(payload) {
|
|
2068
|
+
return calculateRule42InputServiceReversal(payload);
|
|
2069
|
+
}
|
|
2070
|
+
|
|
2071
|
+
/**
|
|
2072
|
+
* Rule 42(2): Annual common credit true-up reconciliation & Section 50(1) interest.
|
|
2073
|
+
*/
|
|
2074
|
+
reconcileRule42AnnualTrueUp(payload) {
|
|
2075
|
+
return reconcileRule42AnnualTrueUp(payload);
|
|
2076
|
+
}
|
|
2077
|
+
|
|
2078
|
+
/**
|
|
2079
|
+
* Rule 43: Capital goods common ITC 60-month amortisation and reversal.
|
|
2080
|
+
*/
|
|
2081
|
+
calculateRule43CapitalGoodsReversal(payload) {
|
|
2082
|
+
return calculateRule43CapitalGoodsReversal(payload);
|
|
2083
|
+
}
|
|
2084
|
+
|
|
2085
|
+
/**
|
|
2086
|
+
* Rule 42 & 43: Combined input tax credit apportionment orchestrator.
|
|
2087
|
+
*/
|
|
2088
|
+
calculateGstItcApportionmentRule42_43(payload) {
|
|
2089
|
+
return calculateGstItcApportionmentRule42_43(payload);
|
|
2090
|
+
}
|
|
2091
|
+
|
|
2092
|
+
/**
|
|
2093
|
+
* MSMED Act Section 16: Compound interest with monthly rests at 3x RBI Bank Rate.
|
|
2094
|
+
*/
|
|
2095
|
+
calculateMsmeCompoundInterest(payload) {
|
|
2096
|
+
return calculateMsmeCompoundInterest(payload);
|
|
2097
|
+
}
|
|
2098
|
+
|
|
2099
|
+
/**
|
|
2100
|
+
* Section 43B(h): Year-end tax disallowance on overdue MSME invoices.
|
|
2101
|
+
*/
|
|
2102
|
+
evaluateSection43bH(payload) {
|
|
2103
|
+
return evaluateSection43bH(payload);
|
|
2104
|
+
}
|
|
2105
|
+
|
|
2106
|
+
/**
|
|
2107
|
+
* Section 195: Cross-border foreign remittance tax withholding.
|
|
2108
|
+
*/
|
|
2109
|
+
evaluateCrossBorderRemittance(payload) {
|
|
2110
|
+
return evaluateCrossBorderRemittance(payload);
|
|
2111
|
+
}
|
|
2112
|
+
|
|
2113
|
+
/**
|
|
2114
|
+
* Parse raw Tally or ERP daybook CSV text into normalized vouchers.
|
|
2115
|
+
* @param {string} csvText
|
|
2116
|
+
*/
|
|
2117
|
+
parseTallyDaybookCsv(csvText) {
|
|
2118
|
+
return parseTallyDaybookCsv(csvText);
|
|
2119
|
+
}
|
|
2120
|
+
|
|
2121
|
+
/**
|
|
2122
|
+
* Parse raw Tally XML daybook export into normalized vouchers.
|
|
2123
|
+
* @param {string} xmlText
|
|
2124
|
+
*/
|
|
2125
|
+
parseTallyDaybookXml(xmlText) {
|
|
2126
|
+
return parseTallyDaybookXml(xmlText);
|
|
2127
|
+
}
|
|
2128
|
+
|
|
2129
|
+
/**
|
|
2130
|
+
* Reconcile daybook vouchers against Section 194Q and Section 40(a)(ia) rules.
|
|
2131
|
+
* @param {Array<Object>} vouchers
|
|
2132
|
+
* @param {Object} [options]
|
|
2133
|
+
*/
|
|
2134
|
+
reconcileDaybook(vouchers, options = {}) {
|
|
2135
|
+
return reconcile194QDaybook(vouchers, options);
|
|
2136
|
+
}
|
|
2137
|
+
|
|
2138
|
+
/**
|
|
2139
|
+
* Programmatic alias for reconcileDaybook.
|
|
2140
|
+
*/
|
|
2141
|
+
reconcile194QDaybook(vouchers, options = {}) {
|
|
2142
|
+
return reconcile194QDaybook(vouchers, options);
|
|
2143
|
+
}
|
|
2144
|
+
|
|
2145
|
+
/**
|
|
2146
|
+
* Generate Tally-compliant XML compensating journal vouchers for unwithheld TDS.
|
|
2147
|
+
* @param {Object} reconciliationResult
|
|
2148
|
+
* @param {Object} [options]
|
|
2149
|
+
*/
|
|
2150
|
+
generateTallyJournalXml(reconciliationResult, options = {}) {
|
|
2151
|
+
return generateTally194QJournalXml(reconciliationResult, options);
|
|
2152
|
+
}
|
|
2153
|
+
|
|
2154
|
+
/**
|
|
2155
|
+
* Programmatic alias for generateTallyJournalXml.
|
|
2156
|
+
*/
|
|
2157
|
+
generateTally194QJournalXml(reconciliationResult, options = {}) {
|
|
2158
|
+
return generateTally194QJournalXml(reconciliationResult, options);
|
|
2159
|
+
}
|
|
2160
|
+
|
|
2161
|
+
/**
|
|
2162
|
+
* Format a clean Markdown audit exception report for Form 3CD working papers.
|
|
2163
|
+
* @param {Object} reconciliationResult
|
|
2164
|
+
*/
|
|
2165
|
+
generateAuditReport(reconciliationResult) {
|
|
2166
|
+
return generateAuditMarkdownReport(reconciliationResult);
|
|
2167
|
+
}
|
|
2168
|
+
|
|
2169
|
+
/**
|
|
2170
|
+
* Parse raw Zoho Books Bills CSV text into normalized bill records.
|
|
2171
|
+
* @param {string} csvText
|
|
2172
|
+
*/
|
|
2173
|
+
parseZohoBillsCsv(csvText) {
|
|
2174
|
+
return parseZohoBillsCsv(csvText);
|
|
2175
|
+
}
|
|
2176
|
+
|
|
2177
|
+
/**
|
|
2178
|
+
* Parse raw Zoho Books API JSON payload into normalized bill records.
|
|
2179
|
+
* @param {Object|string} jsonData
|
|
2180
|
+
*/
|
|
2181
|
+
parseZohoBillsJson(jsonData) {
|
|
2182
|
+
return parseZohoBillsJson(jsonData);
|
|
2183
|
+
}
|
|
2184
|
+
|
|
2185
|
+
/**
|
|
2186
|
+
* Parse raw GST Portal Form GSTR-2B JSON payload into normalized invoice and CDNR records.
|
|
2187
|
+
* @param {Object|string} gstr2bData
|
|
2188
|
+
*/
|
|
2189
|
+
parseGstr2bJson(gstr2bData) {
|
|
2190
|
+
return parseGstr2bJson(gstr2bData);
|
|
2191
|
+
}
|
|
2192
|
+
|
|
2193
|
+
/**
|
|
2194
|
+
* Reconcile Zoho Books AP Bills with Form GSTR-2B and audit Rule 37 180-day aging.
|
|
2195
|
+
* @param {Object} params
|
|
2196
|
+
* @param {Array<Object>|string} params.zohoBills
|
|
2197
|
+
* @param {Array<Object>|string} params.gstr2b
|
|
2198
|
+
* @param {Object} [params.options]
|
|
2199
|
+
*/
|
|
2200
|
+
reconcileZohoGstr2b(params) {
|
|
2201
|
+
return reconcileZohoGstr2b(params);
|
|
2202
|
+
}
|
|
2203
|
+
|
|
2204
|
+
/**
|
|
2205
|
+
* Generate an executive Markdown audit exception memorandum for Zoho Books & GSTR-2B.
|
|
2206
|
+
* @param {Object} reconResult
|
|
2207
|
+
*/
|
|
2208
|
+
generateGstr2bAuditMarkdownReport(reconResult) {
|
|
2209
|
+
return generateGstr2bAuditMarkdownReport(reconResult);
|
|
2210
|
+
}
|
|
2211
|
+
|
|
2212
|
+
/**
|
|
2213
|
+
* Programmatic alias for generateGstr2bAuditMarkdownReport.
|
|
2214
|
+
*/
|
|
2215
|
+
generateGstr2bAuditReport(reconResult) {
|
|
2216
|
+
return generateGstr2bAuditMarkdownReport(reconResult);
|
|
2217
|
+
}
|
|
2218
|
+
|
|
2219
|
+
/**
|
|
2220
|
+
* Reconstruct cumulative portfolio ECL utilization for multiple overlapping overdue invoices under Rule 88B(3).
|
|
2221
|
+
* @param {Object} params
|
|
2222
|
+
*/
|
|
2223
|
+
calculatePortfolioEclUtilizationInterest(params) {
|
|
2224
|
+
return calculatePortfolioEclUtilizationInterest(params);
|
|
2225
|
+
}
|
|
2226
|
+
|
|
2227
|
+
/**
|
|
2228
|
+
* Run regulatory watchtower surveillance and generate Empanelment Freshness Certificate.
|
|
2229
|
+
* @param {Object} [options]
|
|
2230
|
+
*/
|
|
2231
|
+
async runWatchtower(options = {}) {
|
|
2232
|
+
const { runStatutoryWatchtower: runner } = await import('../scripts/watchtower.js');
|
|
2233
|
+
return runner({ okfDir: this.okfDir, ...options });
|
|
2234
|
+
}
|
|
2235
|
+
|
|
2236
|
+
/**
|
|
2237
|
+
* Calculate exact Day 180 overdue start date for an invoice.
|
|
2238
|
+
* @param {string} billDateIso
|
|
2239
|
+
*/
|
|
2240
|
+
calculateOverdueStartDate(billDateIso) {
|
|
2241
|
+
return calculateOverdueStartDate(billDateIso);
|
|
2242
|
+
}
|
|
2243
|
+
|
|
2244
|
+
/**
|
|
2245
|
+
* Calculate chronological interest under Section 50(1) read with Rule 88B(3)
|
|
2246
|
+
* across Electronic Credit Ledger (ECL) movements.
|
|
2247
|
+
* @param {Object} params
|
|
2248
|
+
*/
|
|
2249
|
+
calculateEclUtilizationInterest(params) {
|
|
2250
|
+
return calculateEclUtilizationInterest(params);
|
|
2251
|
+
}
|
|
2252
|
+
|
|
2253
|
+
/**
|
|
2254
|
+
* Construct an immutable evidence provenance record for a reconciliation item.
|
|
2255
|
+
* @param {Object} params
|
|
2256
|
+
*/
|
|
2257
|
+
buildEvidenceProvenance(params) {
|
|
2258
|
+
return buildEvidenceProvenance(params);
|
|
2259
|
+
}
|
|
2260
|
+
|
|
2261
|
+
/**
|
|
2262
|
+
* Normalize invoice number for exact and alphanumeric canonical matching.
|
|
2263
|
+
* @param {string} raw
|
|
2264
|
+
*/
|
|
2265
|
+
normalizeInvoiceNumber(raw) {
|
|
2266
|
+
return normalizeInvoiceNumber(raw);
|
|
2267
|
+
}
|
|
2268
|
+
|
|
2269
|
+
/**
|
|
2270
|
+
* Normalize and validate GSTIN string.
|
|
2271
|
+
* @param {string} raw
|
|
2272
|
+
*/
|
|
2273
|
+
normalizeGstin(raw) {
|
|
2274
|
+
return normalizeGstin(raw);
|
|
2275
|
+
}
|
|
2276
|
+
|
|
2277
|
+
/**
|
|
2278
|
+
* Programmatic alias for generateAuditReport.
|
|
2279
|
+
*/
|
|
2280
|
+
generateAuditMarkdownReport(reconciliationResult) {
|
|
2281
|
+
return generateAuditMarkdownReport(reconciliationResult);
|
|
2282
|
+
}
|
|
2283
|
+
|
|
2284
|
+
/**
|
|
2285
|
+
* Clean and normalize raw accounting numeric input.
|
|
2286
|
+
* @param {any} val
|
|
2287
|
+
* @param {Object} [options]
|
|
2288
|
+
*/
|
|
2289
|
+
cleanNumericAmount(val, options = {}) {
|
|
2290
|
+
return cleanNumericAmount(val, options);
|
|
2291
|
+
}
|
|
2292
|
+
|
|
2293
|
+
/**
|
|
2294
|
+
* Round an amount to paisa precision (2 decimal places).
|
|
2295
|
+
* @param {any} amount
|
|
2296
|
+
*/
|
|
2297
|
+
roundToPaisa(amount) {
|
|
2298
|
+
return roundToPaisa(amount);
|
|
2299
|
+
}
|
|
2300
|
+
|
|
2301
|
+
/**
|
|
2302
|
+
* Convert rupee amount to integer paise for zero-drift arithmetic.
|
|
2303
|
+
* @param {any} amount
|
|
2304
|
+
* @param {string} [fieldName='amount']
|
|
2305
|
+
*/
|
|
2306
|
+
toIntegerPaise(amount, fieldName = 'amount') {
|
|
2307
|
+
return toIntegerPaise(amount, fieldName);
|
|
2308
|
+
}
|
|
2309
|
+
|
|
2310
|
+
/**
|
|
2311
|
+
* Convert integer paise back to rounded rupees.
|
|
2312
|
+
* @param {number} paise
|
|
2313
|
+
*/
|
|
2314
|
+
fromIntegerPaise(paise) {
|
|
2315
|
+
return fromIntegerPaise(paise);
|
|
2316
|
+
}
|
|
2317
|
+
|
|
1808
2318
|
/**
|
|
1809
2319
|
* Retrieve statutory outcomes and disposition codes.
|
|
1810
2320
|
* @param {string} [provision] Optional section code or provision alias
|
|
@@ -2049,7 +2559,7 @@ export const STATUTORY_CROSSWALK_CATALOG = [
|
|
|
2049
2559
|
successor: {
|
|
2050
2560
|
act: 'Income-tax Act, 2025 (Act No. 1 of 2025)',
|
|
2051
2561
|
sectionCode: '393',
|
|
2052
|
-
statutorySection: 'Section 393(1), Table
|
|
2562
|
+
statutorySection: 'Section 393(1), Table 1, Sl. No. 8(ii)',
|
|
2053
2563
|
title: 'Deduction of tax at source on payment of a certain sum for purchase of goods',
|
|
2054
2564
|
effectiveDate: '2026-04-01',
|
|
2055
2565
|
threshold: 'Buyer turnover > ₹10 Cr in preceding FY; annual purchases > ₹50 Lakhs in current FY',
|
|
@@ -2064,10 +2574,10 @@ export const STATUTORY_CROSSWALK_CATALOG = [
|
|
|
2064
2574
|
subsidiary: 'General Clauses Act, 1897 Section 6 (Effect of Repeal)',
|
|
2065
2575
|
legalPrinciple: 'Tax withholding liability crystallizes on the earlier of credit to payee account in books or payment disbursement. If the trigger event occurred on or before 31 March 2026, the 1961 Act governs the deduction, remittance, and compliance obligations, notwithstanding subsequent settlement.'
|
|
2066
2576
|
},
|
|
2067
|
-
aliases: ['194q', 'sec194q', 'section 194q', '393', 'sec393', 'section 393', '393(1)', '393(1)(table 8)(ii)', 'goods tds', 'purchase of goods']
|
|
2577
|
+
aliases: ['194q', 'sec194q', 'section 194q', '393', 'sec393', 'section 393', '393(1)', '393(1)(table 1)(sl 8)(ii)', '393(1)(table 8)(ii)', 'ita2025_sec393_table1_sl8_ii', 'goods tds', 'purchase of goods']
|
|
2068
2578
|
},
|
|
2069
2579
|
{
|
|
2070
|
-
id: '
|
|
2580
|
+
id: 'CROSSWALK_194J_393_TABLE1_SL6_III',
|
|
2071
2581
|
domain: 'direct_tax',
|
|
2072
2582
|
predecessor: {
|
|
2073
2583
|
act: 'Income-tax Act, 1961 (Act No. 43 of 1961)',
|
|
@@ -2083,10 +2593,10 @@ export const STATUTORY_CROSSWALK_CATALOG = [
|
|
|
2083
2593
|
successor: {
|
|
2084
2594
|
act: 'Income-tax Act, 2025 (Act No. 1 of 2025)',
|
|
2085
2595
|
sectionCode: '393',
|
|
2086
|
-
statutorySection: 'Section 393(1), Table
|
|
2596
|
+
statutorySection: 'Section 393(1), Table 1, Sl. No. 6(iii)',
|
|
2087
2597
|
title: 'Deduction of tax at source on fees for professional or technical services',
|
|
2088
2598
|
effectiveDate: '2026-04-01',
|
|
2089
|
-
threshold: '₹
|
|
2599
|
+
threshold: '₹50,000 aggregate in financial year per category',
|
|
2090
2600
|
standardRate: '2.0% (FTS) / 10.0% (Professional)',
|
|
2091
2601
|
penaltyRate: '20.0% (Section 397(2))',
|
|
2092
2602
|
challan: 'Challan under Income-tax Act, 2025',
|
|
@@ -2098,10 +2608,10 @@ export const STATUTORY_CROSSWALK_CATALOG = [
|
|
|
2098
2608
|
subsidiary: 'General Clauses Act, 1897 Section 6 (Effect of Repeal)',
|
|
2099
2609
|
legalPrinciple: 'Liability crystallizes on earlier of credit or payment. Pre-April 1, 2026 events are saved and governed under the 1961 Act.'
|
|
2100
2610
|
},
|
|
2101
|
-
aliases: ['194j', 'sec194j', 'section 194j', '393(1)(table 6)', 'technical services tds', 'professional fees tds', 'fts']
|
|
2611
|
+
aliases: ['194j', 'sec194j', 'section 194j', '393(1)(table 1)(sl 6)(iii)', '393(1)(table 6)', 'ita2025_sec393_table1_sl6_iii', 'technical services tds', 'professional fees tds', 'fts']
|
|
2102
2612
|
},
|
|
2103
2613
|
{
|
|
2104
|
-
id: '
|
|
2614
|
+
id: 'CROSSWALK_194C_393_TABLE1_SL6_I',
|
|
2105
2615
|
domain: 'direct_tax',
|
|
2106
2616
|
predecessor: {
|
|
2107
2617
|
act: 'Income-tax Act, 1961 (Act No. 43 of 1961)',
|
|
@@ -2117,7 +2627,7 @@ export const STATUTORY_CROSSWALK_CATALOG = [
|
|
|
2117
2627
|
successor: {
|
|
2118
2628
|
act: 'Income-tax Act, 2025 (Act No. 1 of 2025)',
|
|
2119
2629
|
sectionCode: '393',
|
|
2120
|
-
statutorySection: 'Section 393(1), Table
|
|
2630
|
+
statutorySection: 'Section 393(1), Table 1, Sl. No. 6(i)',
|
|
2121
2631
|
title: 'Deduction of tax at source on payments to contractors',
|
|
2122
2632
|
effectiveDate: '2026-04-01',
|
|
2123
2633
|
threshold: 'Single contract > ₹30,000 or aggregate > ₹1,00,000 in FY',
|
|
@@ -2132,17 +2642,17 @@ export const STATUTORY_CROSSWALK_CATALOG = [
|
|
|
2132
2642
|
subsidiary: 'General Clauses Act, 1897 Section 6 (Effect of Repeal)',
|
|
2133
2643
|
legalPrinciple: 'Liability crystallizes on earlier of credit or payment. Pre-April 1, 2026 events are saved and governed under the 1961 Act.'
|
|
2134
2644
|
},
|
|
2135
|
-
aliases: ['194c', 'sec194c', 'section 194c', '393(1)(table 3)', 'contractor tds', 'subcontractor tds']
|
|
2645
|
+
aliases: ['194c', 'sec194c', 'section 194c', '393(1)(table 1)(sl 6)(i)', '393(1)(table 3)', 'contractor tds', 'subcontractor tds']
|
|
2136
2646
|
},
|
|
2137
2647
|
{
|
|
2138
|
-
id: '
|
|
2648
|
+
id: 'CROSSWALK_194I_393_TABLE1_SL2',
|
|
2139
2649
|
domain: 'direct_tax',
|
|
2140
2650
|
predecessor: {
|
|
2141
2651
|
act: 'Income-tax Act, 1961 (Act No. 43 of 1961)',
|
|
2142
2652
|
sectionCode: '194I',
|
|
2143
2653
|
statutorySection: 'Section 194I',
|
|
2144
2654
|
title: 'Deduction of tax at source on rent',
|
|
2145
|
-
threshold: '₹
|
|
2655
|
+
threshold: '₹50,000 per month (or part of month)',
|
|
2146
2656
|
standardRate: '2.0% (Plant & Machinery) / 10.0% (Land & Building)',
|
|
2147
2657
|
penaltyRate: '20.0% (Section 206AA)',
|
|
2148
2658
|
challan: 'ITNS 281',
|
|
@@ -2151,7 +2661,7 @@ export const STATUTORY_CROSSWALK_CATALOG = [
|
|
|
2151
2661
|
successor: {
|
|
2152
2662
|
act: 'Income-tax Act, 2025 (Act No. 1 of 2025)',
|
|
2153
2663
|
sectionCode: '393',
|
|
2154
|
-
statutorySection: 'Section 393(1), Table
|
|
2664
|
+
statutorySection: 'Section 393(1), Table 1, Sl. No. 2',
|
|
2155
2665
|
title: 'Deduction of tax at source on rent',
|
|
2156
2666
|
effectiveDate: '2026-04-01',
|
|
2157
2667
|
threshold: '₹2,40,000 aggregate in financial year',
|
|
@@ -2166,10 +2676,10 @@ export const STATUTORY_CROSSWALK_CATALOG = [
|
|
|
2166
2676
|
subsidiary: 'General Clauses Act, 1897 Section 6 (Effect of Repeal)',
|
|
2167
2677
|
legalPrinciple: 'Liability crystallizes on earlier of credit or payment. Pre-April 1, 2026 events are saved and governed under the 1961 Act.'
|
|
2168
2678
|
},
|
|
2169
|
-
aliases: ['194i', 'sec194i', 'section 194i', '393(1)(table 5)', 'rent tds']
|
|
2679
|
+
aliases: ['194i', 'sec194i', 'section 194i', '393(1)(table 1)(sl 2)', '393(1)(table 5)', 'rent tds']
|
|
2170
2680
|
},
|
|
2171
2681
|
{
|
|
2172
|
-
id: '
|
|
2682
|
+
id: 'CROSSWALK_194H_393_TABLE1_SL1_II',
|
|
2173
2683
|
domain: 'direct_tax',
|
|
2174
2684
|
predecessor: {
|
|
2175
2685
|
act: 'Income-tax Act, 1961 (Act No. 43 of 1961)',
|
|
@@ -2185,10 +2695,10 @@ export const STATUTORY_CROSSWALK_CATALOG = [
|
|
|
2185
2695
|
successor: {
|
|
2186
2696
|
act: 'Income-tax Act, 2025 (Act No. 1 of 2025)',
|
|
2187
2697
|
sectionCode: '393',
|
|
2188
|
-
statutorySection: 'Section 393(1), Table
|
|
2698
|
+
statutorySection: 'Section 393(1), Table 1, Sl. No. 1(ii)',
|
|
2189
2699
|
title: 'Deduction of tax at source on commission or brokerage',
|
|
2190
2700
|
effectiveDate: '2026-04-01',
|
|
2191
|
-
threshold: '₹
|
|
2701
|
+
threshold: '₹20,000 aggregate in financial year',
|
|
2192
2702
|
standardRate: '2.0%',
|
|
2193
2703
|
penaltyRate: '20.0% (Section 397(2))',
|
|
2194
2704
|
challan: 'Challan under Income-tax Act, 2025',
|
|
@@ -2200,10 +2710,10 @@ export const STATUTORY_CROSSWALK_CATALOG = [
|
|
|
2200
2710
|
subsidiary: 'General Clauses Act, 1897 Section 6 (Effect of Repeal)',
|
|
2201
2711
|
legalPrinciple: 'Liability crystallizes on earlier of credit or payment. Pre-April 1, 2026 events are saved and governed under the 1961 Act.'
|
|
2202
2712
|
},
|
|
2203
|
-
aliases: ['194h', 'sec194h', 'section 194h', '393(1)(table 4)', 'commission tds', 'brokerage tds']
|
|
2713
|
+
aliases: ['194h', 'sec194h', 'section 194h', '393(1)(table 1)(sl 1)(ii)', '393(1)(table 4)', 'commission tds', 'brokerage tds']
|
|
2204
2714
|
},
|
|
2205
2715
|
{
|
|
2206
|
-
id: '
|
|
2716
|
+
id: 'CROSSWALK_194R_393_TABLE1_SL8_IV',
|
|
2207
2717
|
domain: 'direct_tax',
|
|
2208
2718
|
predecessor: {
|
|
2209
2719
|
act: 'Income-tax Act, 1961 (Act No. 43 of 1961)',
|
|
@@ -2219,7 +2729,7 @@ export const STATUTORY_CROSSWALK_CATALOG = [
|
|
|
2219
2729
|
successor: {
|
|
2220
2730
|
act: 'Income-tax Act, 2025 (Act No. 1 of 2025)',
|
|
2221
2731
|
sectionCode: '393',
|
|
2222
|
-
statutorySection: 'Section 393(1), Table
|
|
2732
|
+
statutorySection: 'Section 393(1), Table 1, Sl. No. 8(iv)',
|
|
2223
2733
|
title: 'Deduction of tax at source on benefit or perquisite in respect of business or profession',
|
|
2224
2734
|
effectiveDate: '2026-04-01',
|
|
2225
2735
|
threshold: '₹20,000 aggregate value in financial year',
|
|
@@ -2234,7 +2744,7 @@ export const STATUTORY_CROSSWALK_CATALOG = [
|
|
|
2234
2744
|
subsidiary: 'General Clauses Act, 1897 Section 6 (Effect of Repeal)',
|
|
2235
2745
|
legalPrinciple: 'Liability crystallizes on earlier of credit or payment. Pre-April 1, 2026 events are saved and governed under the 1961 Act.'
|
|
2236
2746
|
},
|
|
2237
|
-
aliases: ['194r', 'sec194r', 'section 194r', 'perquisites tds', 'business benefits tds']
|
|
2747
|
+
aliases: ['194r', 'sec194r', 'section 194r', '393(1)(table 1)(sl 8)(iv)', 'perquisites tds', 'business benefits tds']
|
|
2238
2748
|
},
|
|
2239
2749
|
{
|
|
2240
2750
|
id: 'CROSSWALK_195_393_2',
|
|
@@ -2762,7 +3272,7 @@ export const STATUTORY_AMENDMENTS_CHANGELOG = [
|
|
|
2762
3272
|
statute: 'Income-tax Act, 2025 (Act No. 1 of 2025)',
|
|
2763
3273
|
legalAuthority: 'Parliament of India / Income-tax Act, 2025',
|
|
2764
3274
|
previousValue: 'Income-tax Act, 1961 (Scattered Chapter XVII-B sections: 194C, 194J, 194Q, 194I, 194H, 194R, 195)',
|
|
2765
|
-
amendedValue: 'Income-tax Act, 2025 Section 393
|
|
3275
|
+
amendedValue: 'Income-tax Act, 2025 Section 393 Table 1 (Sl No 1: Commission, Sl No 2: Rent, Sl No 5: Interest, Sl No 6: Contractors/FTS, Sl No 8: Goods/Perquisites)',
|
|
2766
3276
|
changeSummary: 'The Income-tax Act, 2025 consolidates and restructures direct tax withholding into unified schedules under Section 393, repealing the 1961 Act subject to Section 536 savings.',
|
|
2767
3277
|
statutoryImpact: 'Withholding liabilities on or after 1 April 2026 are governed by 2025 Act section references and procedural compliance.',
|
|
2768
3278
|
aliases: ['393', 'income tax act 2025', '2025 act']
|
|
@@ -2820,18 +3330,89 @@ export function getStatutoryDiff(options = {}) {
|
|
|
2820
3330
|
}
|
|
2821
3331
|
|
|
2822
3332
|
// ── Deterministic Zero-Dependency Statutory Calculators Export ──────────────
|
|
3333
|
+
async function runStatutoryWatchtower(options = {}) {
|
|
3334
|
+
const { runStatutoryWatchtower: runner } = await import('../scripts/watchtower.js');
|
|
3335
|
+
return runner(options);
|
|
3336
|
+
}
|
|
3337
|
+
|
|
2823
3338
|
export {
|
|
2824
3339
|
roundToPaisa,
|
|
2825
3340
|
roundSection288B,
|
|
3341
|
+
cleanNumericAmount,
|
|
3342
|
+
toIntegerPaise,
|
|
3343
|
+
fromIntegerPaise,
|
|
3344
|
+
MalformedNumericInputError,
|
|
3345
|
+
MissingMandatoryParameterError,
|
|
3346
|
+
assertMandatoryNumeric,
|
|
2826
3347
|
calculateCorporateTaxMatVsConcessional,
|
|
2827
3348
|
evaluatePlaceOfSupplyAndLut,
|
|
2828
3349
|
calculateTransferPricingAlp,
|
|
2829
3350
|
evaluateSection79LossContinuity,
|
|
3351
|
+
evaluateSection281TaxClearance,
|
|
2830
3352
|
revalueForeignExchangeIndAs109,
|
|
3353
|
+
calculateBusinessCombinationsIndAs103,
|
|
3354
|
+
calculateImpairmentIndAs36,
|
|
3355
|
+
calculateRevenueAllocationIndAs115,
|
|
3356
|
+
calculateLeaseAmortizationIndAs116,
|
|
3357
|
+
calculateExpectedCreditLossIndAs109,
|
|
3358
|
+
calculateEsopAmortizationIndAs102,
|
|
3359
|
+
calculateDeferredTaxIndAs12,
|
|
3360
|
+
evaluateProvisionsAndContingenciesIndAs37,
|
|
3361
|
+
calculateForeignCurrencyIndAs21,
|
|
3362
|
+
resolveMissingPanPenaltyFloor,
|
|
3363
|
+
evaluateSection194Q,
|
|
3364
|
+
evaluateSection194C,
|
|
3365
|
+
evaluateSection194H,
|
|
3366
|
+
evaluateSection194I,
|
|
3367
|
+
evaluateSection194J,
|
|
3368
|
+
evaluateSection194A,
|
|
3369
|
+
evaluateSection194O,
|
|
3370
|
+
evaluateSection194IA,
|
|
3371
|
+
evaluateSection194IB,
|
|
3372
|
+
evaluateSection194M,
|
|
3373
|
+
evaluateSection194R,
|
|
3374
|
+
evaluateSection43BStatutoryPayables,
|
|
3375
|
+
calculateItcReversalRule37,
|
|
3376
|
+
calculateRule37ASupplierNonFilingReversal,
|
|
3377
|
+
evaluateSection206C1H,
|
|
3378
|
+
evaluateSection43bH,
|
|
3379
|
+
calculateMsmeCompoundInterest,
|
|
3380
|
+
calculateAdvanceTaxAndInterest,
|
|
3381
|
+
calculateRule42InputServiceReversal,
|
|
3382
|
+
reconcileRule42AnnualTrueUp,
|
|
3383
|
+
calculateRule43CapitalGoodsReversal,
|
|
3384
|
+
calculateGstItcApportionmentRule42_43,
|
|
3385
|
+
evaluateCrossBorderRemittance,
|
|
3386
|
+
generateMsme1AndScheduleThreeAging,
|
|
3387
|
+
evaluateLowerDeductionCertificateValidity,
|
|
3388
|
+
getRbiBankRateForDate,
|
|
3389
|
+
DEFAULT_RBI_BANK_RATE,
|
|
3390
|
+
MSMED_RATE_MULTIPLIER,
|
|
3391
|
+
RBI_BANK_RATE_SCHEDULE,
|
|
3392
|
+
AUTHORITATIVE_STATUTORY_RATES,
|
|
3393
|
+
VALID_194J_CATEGORIES,
|
|
2831
3394
|
getStatutoryOutcomes,
|
|
2832
3395
|
explainStatutoryDisposition,
|
|
2833
3396
|
STATUTORY_OUTCOMES_DICTIONARY,
|
|
2834
|
-
enrichWithOutcomeExplanation
|
|
3397
|
+
enrichWithOutcomeExplanation,
|
|
3398
|
+
parseTallyDaybookCsv,
|
|
3399
|
+
parseTallyDaybookXml,
|
|
3400
|
+
reconcile194QDaybook,
|
|
3401
|
+
generateTally194QJournalXml,
|
|
3402
|
+
generateAuditMarkdownReport,
|
|
3403
|
+
getIndianFinancialYear,
|
|
3404
|
+
parseZohoBillsCsv,
|
|
3405
|
+
parseZohoBillsJson,
|
|
3406
|
+
parseGstr2bJson,
|
|
3407
|
+
reconcileZohoGstr2b,
|
|
3408
|
+
generateGstr2bAuditMarkdownReport,
|
|
3409
|
+
normalizeInvoiceNumber,
|
|
3410
|
+
normalizeGstin,
|
|
3411
|
+
calculateOverdueStartDate,
|
|
3412
|
+
calculateEclUtilizationInterest,
|
|
3413
|
+
calculatePortfolioEclUtilizationInterest,
|
|
3414
|
+
buildEvidenceProvenance,
|
|
3415
|
+
runStatutoryWatchtower
|
|
2835
3416
|
};
|
|
2836
3417
|
|
|
2837
3418
|
|