@mudraforge/statutory 2.11.0 → 2.13.0

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.
Files changed (176) hide show
  1. package/CHANGELOG.md +172 -1
  2. package/CONTRIBUTING.md +2 -2
  3. package/README.md +14 -1
  4. package/SECURITY.md +2 -2
  5. package/SKILL.md +1 -1
  6. package/bin/cli.js +288 -27
  7. package/docs/ACCOUNTING_ASSURANCE_AUDIT_DOSSIER.md +276 -0
  8. package/docs/ARCHITECTURE.md +76 -53
  9. package/docs/ARCHITECTURE_DECISIONS.md +22 -2
  10. package/docs/CASE_01_FORM_TEXT.txt +48 -0
  11. package/docs/CATALOG.md +405 -39
  12. package/docs/CA_PILOT_BENCHMARK_CASES.md +282 -0
  13. package/docs/CORPUS_QUALITY.md +31 -22
  14. package/docs/DOMAIN_BREADTH_AND_DEPTH_COMPARISON.md +5 -5
  15. package/docs/ENTERPRISE_GOVERNANCE.md +2 -1
  16. package/docs/OKF_MAINTENANCE_SOP.md +5 -5
  17. package/docs/PILOT_EVALUATION_GUIDE.md +5 -4
  18. package/docs/PROVENANCE.md +6 -6
  19. package/docs/VERIFICATION.md +6 -6
  20. package/okf/corporate_ma_restructuring/business_combinations_indas_103/ast.json +20 -0
  21. package/okf/corporate_ma_restructuring/business_combinations_indas_103/circulars/mca_notification_indas_103_business_combinations.md +41 -0
  22. package/okf/corporate_ma_restructuring/business_combinations_indas_103/forms/purchase_price_allocation_schedule.json +110 -0
  23. package/okf/corporate_ma_restructuring/business_combinations_indas_103/section.json +65 -0
  24. package/okf/corporate_ma_restructuring/impairment_of_assets_indas_36/ast.json +20 -0
  25. package/okf/corporate_ma_restructuring/impairment_of_assets_indas_36/circulars/mca_notification_indas_36_impairment.md +45 -0
  26. package/okf/corporate_ma_restructuring/impairment_of_assets_indas_36/forms/cgu_impairment_testing_register.json +53 -0
  27. package/okf/corporate_ma_restructuring/impairment_of_assets_indas_36/section.json +61 -0
  28. package/okf/corporate_ma_restructuring/loss_carryforward_sec79/ast.json +33 -0
  29. package/okf/corporate_ma_restructuring/share_based_payments_indas_102/ast.json +20 -0
  30. package/okf/corporate_ma_restructuring/share_based_payments_indas_102/circulars/icai_guidance_share_based_payments.md +37 -0
  31. package/okf/corporate_ma_restructuring/share_based_payments_indas_102/forms/esop_graded_vesting_amortization_schedule.json +49 -0
  32. package/okf/corporate_ma_restructuring/share_based_payments_indas_102/section.json +60 -0
  33. package/okf/corporate_ma_restructuring/slump_sale_50b/ast.json +21 -0
  34. package/okf/corporate_ma_restructuring/tax_clearance_sec281/ast.json +21 -0
  35. package/okf/direct_tax/corporate_tax_115baa_115jb/ast.json +23 -0
  36. package/okf/direct_tax/income_taxes_deferred_tax_indas_12/ast.json +20 -0
  37. package/okf/direct_tax/income_taxes_deferred_tax_indas_12/circulars/mca_notification_indas_12_income_taxes.md +40 -0
  38. package/okf/direct_tax/income_taxes_deferred_tax_indas_12/forms/deferred_tax_asset_liability_reconciliation_schedule.json +46 -0
  39. package/okf/direct_tax/income_taxes_deferred_tax_indas_12/section.json +61 -0
  40. package/okf/direct_tax/special_rates_non_filer_206ab/ast.json +26 -0
  41. package/okf/direct_tax/statutory_disallowance_43b/ast.json +35 -0
  42. package/okf/direct_tax/tcs_goods_206c_1h/ast.json +69 -0
  43. package/okf/direct_tax/tds_commission_194h/ast.json +60 -0
  44. package/okf/direct_tax/tds_commission_194h/section.json +5 -4
  45. package/okf/direct_tax/tds_contractor_194c/ast.json +71 -0
  46. package/okf/direct_tax/tds_contractor_194c/section.json +3 -3
  47. package/okf/direct_tax/tds_ecommerce_194o/ast.json +48 -0
  48. package/okf/direct_tax/tds_ecommerce_194o/section.json +3 -3
  49. package/okf/direct_tax/tds_goods_194q/ast.json +71 -0
  50. package/okf/direct_tax/tds_goods_194q/circulars/cbdt_circular_13_2021_guidelines.md +2 -2
  51. package/okf/direct_tax/tds_goods_194q/section.json +9 -3
  52. package/okf/direct_tax/tds_goods_393/ast.json +59 -0
  53. package/okf/direct_tax/tds_goods_393/section.json +6 -4
  54. package/okf/direct_tax/tds_individual_contract_194m/ast.json +59 -0
  55. package/okf/direct_tax/tds_individual_contract_194m/section.json +3 -3
  56. package/okf/direct_tax/tds_interest_194a/ast.json +59 -0
  57. package/okf/direct_tax/tds_interest_194a/section.json +7 -4
  58. package/okf/direct_tax/tds_perquisites_194r/ast.json +47 -0
  59. package/okf/direct_tax/tds_perquisites_194r/section.json +1 -1
  60. package/okf/direct_tax/tds_property_194ia/ast.json +70 -0
  61. package/okf/direct_tax/tds_property_194ia/section.json +3 -3
  62. package/okf/direct_tax/tds_rent_194i/ast.json +60 -0
  63. package/okf/direct_tax/tds_rent_194i/section.json +5 -4
  64. package/okf/direct_tax/tds_rent_individual_194ib/ast.json +59 -0
  65. package/okf/direct_tax/tds_rent_individual_194ib/section.json +2 -2
  66. package/okf/direct_tax/tds_services_194j/ast.json +60 -0
  67. package/okf/direct_tax/tds_services_194j/circulars/cbdt_circular_03_2020_fts_rate_cut.md +1 -1
  68. package/okf/direct_tax/tds_services_194j/section.json +10 -3
  69. package/okf/indirect_tax_gst/blocked_itc_17_5/ast.json +26 -0
  70. package/okf/indirect_tax_gst/common_itc_reversal_rule42_43/ast.json +26 -0
  71. package/okf/indirect_tax_gst/common_itc_reversal_rule42_43/circulars/cbic_circular_170_2022_itc_reporting.md +30 -0
  72. package/okf/indirect_tax_gst/common_itc_reversal_rule42_43/circulars/cbic_notification_18_2022_cutoff_amendment.md +26 -0
  73. package/okf/indirect_tax_gst/common_itc_reversal_rule42_43/forms/gstr_3b_table_4b1_reversal_schedule.json +101 -0
  74. package/okf/indirect_tax_gst/common_itc_reversal_rule42_43/forms/rule_42_43_annual_reconciliation_worksheet.json +87 -0
  75. package/okf/indirect_tax_gst/common_itc_reversal_rule42_43/section.json +65 -0
  76. package/okf/indirect_tax_gst/composite_mixed_supplies_sec8/ast.json +21 -0
  77. package/okf/indirect_tax_gst/composition_levy_sec10/ast.json +23 -0
  78. package/okf/indirect_tax_gst/credit_debit_notes_sec34/ast.json +21 -0
  79. package/okf/indirect_tax_gst/e_invoicing_rule48_4/ast.json +20 -0
  80. package/okf/indirect_tax_gst/export_services_lut_sec16/ast.json +20 -0
  81. package/okf/indirect_tax_gst/gst_tds_sec51/ast.json +23 -0
  82. package/okf/indirect_tax_gst/itc_eligibility_16_2/ast.json +20 -0
  83. package/okf/indirect_tax_gst/itc_reversal_rule37_37a/ast.json +45 -0
  84. package/okf/indirect_tax_gst/itc_reversal_rule37_37a/circulars/cbic_circular_192_2023_ecl_interest_calculation.md +36 -0
  85. package/okf/indirect_tax_gst/itc_reversal_rule37_37a/section.json +8 -1
  86. package/okf/indirect_tax_gst/rcm_liability_sec9_3/ast.json +26 -0
  87. package/okf/indirect_tax_gst/rcm_liability_sec9_3/circulars/cbic_notification_07_2025_composition_rent_exclusion.md +41 -0
  88. package/okf/indirect_tax_gst/rcm_liability_sec9_3/circulars/cbic_notification_09_2024_renting_rcm.md +37 -0
  89. package/okf/indirect_tax_gst/rcm_liability_sec9_3/circulars/gst_council_55th_meeting_renting_rcm_regularization.md +31 -0
  90. package/okf/indirect_tax_gst/rcm_liability_sec9_3/section.json +24 -2
  91. package/okf/international_tax/cross_border_remittance_195/ast.json +39 -0
  92. package/okf/international_tax/financial_instruments_ecl_indas_109/ast.json +24 -0
  93. package/okf/international_tax/financial_instruments_ecl_indas_109/circulars/mca_notification_indas_109_financial_instruments.md +43 -0
  94. package/okf/international_tax/financial_instruments_ecl_indas_109/forms/indas_109_ecl_provision_matrix_schedule.json +43 -0
  95. package/okf/international_tax/financial_instruments_ecl_indas_109/section.json +62 -0
  96. package/okf/international_tax/foreign_exchange_indas_21_109/ast.json +20 -0
  97. package/okf/international_tax/foreign_tax_credit_irc_901_904/ast.json +20 -0
  98. package/okf/international_tax/transfer_pricing_alp_92c/ast.json +25 -0
  99. package/okf/manifest.json +117 -20
  100. package/okf/msme_commercial/delayed_payments_15_16/ast.json +38 -0
  101. package/okf/msme_commercial/enterprise_classification_sec7/ast.json +25 -0
  102. package/okf/msme_commercial/lease_accounting_indas_116/ast.json +20 -0
  103. package/okf/msme_commercial/lease_accounting_indas_116/circulars/mca_notification_indas_116_leases.md +48 -0
  104. package/okf/msme_commercial/lease_accounting_indas_116/forms/lease_rou_asset_and_liability_schedule.json +55 -0
  105. package/okf/msme_commercial/lease_accounting_indas_116/section.json +67 -0
  106. package/okf/msme_commercial/mca_msme_1_filing/ast.json +20 -0
  107. package/okf/msme_commercial/provisions_contingencies_indas_37/ast.json +20 -0
  108. package/okf/msme_commercial/provisions_contingencies_indas_37/circulars/mca_notification_indas_37_provisions.md +36 -0
  109. package/okf/msme_commercial/provisions_contingencies_indas_37/forms/provisions_and_contingent_liabilities_register.json +38 -0
  110. package/okf/msme_commercial/provisions_contingencies_indas_37/section.json +61 -0
  111. package/okf/msme_commercial/revenue_recognition_indas_115/ast.json +20 -0
  112. package/okf/msme_commercial/revenue_recognition_indas_115/circulars/mca_notification_indas_115_revenue_contracts.md +56 -0
  113. package/okf/msme_commercial/revenue_recognition_indas_115/forms/revenue_contract_5step_allocation_schedule.json +54 -0
  114. package/okf/msme_commercial/revenue_recognition_indas_115/section.json +69 -0
  115. package/okf/msme_commercial/statutory_disclosures_sec22/ast.json +21 -0
  116. package/package.json +22 -1
  117. package/src/calculators.js +2195 -260
  118. package/src/constants.js +1 -1
  119. package/src/index.js +421 -23
  120. package/src/payroll.js +506 -0
  121. package/src/tally.js +812 -0
  122. package/src/usvm/evaluation_vm.js +504 -0
  123. package/src/usvm/index.js +65 -0
  124. package/src/usvm/math_rational.js +165 -0
  125. package/src/usvm/rules/sec_115baa_115jb_mat.json +23 -0
  126. package/src/usvm/rules/sec_192_salary_tds.json +23 -0
  127. package/src/usvm/rules/sec_194a_interest.json +59 -0
  128. package/src/usvm/rules/sec_194c_contractors.json +71 -0
  129. package/src/usvm/rules/sec_194h_commission.json +60 -0
  130. package/src/usvm/rules/sec_194i_rent.json +60 -0
  131. package/src/usvm/rules/sec_194ia_property.json +70 -0
  132. package/src/usvm/rules/sec_194ib_rent_ind.json +59 -0
  133. package/src/usvm/rules/sec_194j_services.json +60 -0
  134. package/src/usvm/rules/sec_194m_contract_ind.json +59 -0
  135. package/src/usvm/rules/sec_194o_ecommerce.json +48 -0
  136. package/src/usvm/rules/sec_194q_goods.json +71 -0
  137. package/src/usvm/rules/sec_194r_perquisites.json +47 -0
  138. package/src/usvm/rules/sec_195_cross_border.json +39 -0
  139. package/src/usvm/rules/sec_206ab_non_filer.json +26 -0
  140. package/src/usvm/rules/sec_206c1h_tcs.json +69 -0
  141. package/src/usvm/rules/sec_281_tax_clearance.json +21 -0
  142. package/src/usvm/rules/sec_393_goods.json +59 -0
  143. package/src/usvm/rules/sec_43bh_disallowance.json +35 -0
  144. package/src/usvm/rules/sec_50b_slump_sale.json +21 -0
  145. package/src/usvm/rules/sec_79_loss_continuity.json +33 -0
  146. package/src/usvm/rules/sec_92c_transfer_pricing.json +25 -0
  147. package/src/usvm/rules/sec_ftc_dtaa_relief.json +20 -0
  148. package/src/usvm/rules/sec_gst_blocked_itc_17_5.json +26 -0
  149. package/src/usvm/rules/sec_gst_composite_mixed_8.json +21 -0
  150. package/src/usvm/rules/sec_gst_composition_levy_10.json +23 -0
  151. package/src/usvm/rules/sec_gst_credit_debit_notes_34.json +21 -0
  152. package/src/usvm/rules/sec_gst_einvoicing_rule48_4.json +20 -0
  153. package/src/usvm/rules/sec_gst_ewaybill_rule138.json +21 -0
  154. package/src/usvm/rules/sec_gst_export_lut_16.json +20 -0
  155. package/src/usvm/rules/sec_gst_itc_eligibility_16_2.json +20 -0
  156. package/src/usvm/rules/sec_gst_itc_reversal_rule37_37a.json +45 -0
  157. package/src/usvm/rules/sec_gst_rcm_liability_9_3.json +26 -0
  158. package/src/usvm/rules/sec_gst_rule42_43_apportionment.json +26 -0
  159. package/src/usvm/rules/sec_gst_tds_sec51.json +23 -0
  160. package/src/usvm/rules/sec_indas102_esop.json +20 -0
  161. package/src/usvm/rules/sec_indas103_mna.json +20 -0
  162. package/src/usvm/rules/sec_indas109_ecl.json +24 -0
  163. package/src/usvm/rules/sec_indas115_revenue.json +20 -0
  164. package/src/usvm/rules/sec_indas116_leases.json +20 -0
  165. package/src/usvm/rules/sec_indas12_deferred_tax.json +20 -0
  166. package/src/usvm/rules/sec_indas21_fx_reval.json +20 -0
  167. package/src/usvm/rules/sec_indas36_impairment.json +20 -0
  168. package/src/usvm/rules/sec_indas37_provisions.json +20 -0
  169. package/src/usvm/rules/sec_msme_classification_sec7.json +25 -0
  170. package/src/usvm/rules/sec_msme_delayed_payments_15_16.json +38 -0
  171. package/src/usvm/rules/sec_msme_disclosures_sec22.json +21 -0
  172. package/src/usvm/rules/sec_msme_mca_form_1.json +20 -0
  173. package/src/usvm/schemas/statutory_ast_schema.js +203 -0
  174. package/src/usvm/usvm_domain_evaluators.js +1021 -0
  175. package/src/zoho_gstr2b.js +2964 -0
  176. package/types/index.d.ts +515 -0
@@ -0,0 +1,165 @@
1
+ /**
2
+ * ═══════════════════════════════════════════════════════════════════════════
3
+ * MUDRAFORGE UNIVERSAL STATUTORY VIRTUAL MACHINE (USVM) - RATIONAL ARITHMETIC
4
+ * ═══════════════════════════════════════════════════════════════════════════
5
+ *
6
+ * Implements 5-stage rational arithmetic, sub-paisa remainder preservation,
7
+ * commercial currency quantization, and statutory assessment rounding (Section 288B/516).
8
+ *
9
+ * Guarantees zero floating-point drift and eliminates premature integer truncation.
10
+ *
11
+ * Specification: RFC-009 (Revision 2.1)
12
+ */
13
+
14
+ /**
15
+ * Converts any numeric or string representation of an INR rupee amount into
16
+ * an exact integer number of paise represented as a BigInt.
17
+ * Avoids floating-point drift by splitting on decimal point.
18
+ */
19
+ export function toBigIntPaise(amount) {
20
+ if (amount === undefined || amount === null) return 0n;
21
+ if (typeof amount === 'bigint') return amount;
22
+
23
+ if (typeof amount === 'number') {
24
+ if (!Number.isFinite(amount) || isNaN(amount) || Object.is(amount, -0)) return 0n;
25
+ // Format to fixed 2 decimal places to avoid standard IEEE-754 precision artifacts
26
+ const str = amount.toFixed(2);
27
+ return toBigIntPaise(str);
28
+ }
29
+
30
+ if (typeof amount === 'string') {
31
+ const clean = amount.trim().replace(/,/g, '');
32
+ if (!clean || clean === '0' || clean === '-0') return 0n;
33
+
34
+ const isNegative = clean.startsWith('-');
35
+ const absStr = isNegative ? clean.slice(1) : clean;
36
+
37
+ const parts = absStr.split('.');
38
+ const wholeRupeesStr = parts[0] || '0';
39
+ let paiseStr = parts[1] || '00';
40
+
41
+ // Pad or truncate paise to exactly 2 digits
42
+ if (paiseStr.length === 1) paiseStr += '0';
43
+ else if (paiseStr.length > 2) paiseStr = paiseStr.slice(0, 2);
44
+
45
+ const wholeRupees = BigInt(wholeRupeesStr);
46
+ const paise = BigInt(paiseStr);
47
+ const totalPaise = (wholeRupees * 100n) + paise;
48
+
49
+ return isNegative ? -totalPaise : totalPaise;
50
+ }
51
+
52
+ return 0n;
53
+ }
54
+
55
+ /**
56
+ * Converts integer paise BigInt back to a standard floating-point rupee number
57
+ * strictly rounded to 2 decimal places.
58
+ */
59
+ export function fromBigIntPaise(paiseBigInt) {
60
+ if (typeof paiseBigInt !== 'bigint') {
61
+ paiseBigInt = toBigIntPaise(paiseBigInt);
62
+ }
63
+ const isNegative = paiseBigInt < 0n;
64
+ const absPaise = isNegative ? -paiseBigInt : paiseBigInt;
65
+
66
+ const wholeRupees = absPaise / 100n;
67
+ const remPaise = absPaise % 100n;
68
+
69
+ const num = Number(wholeRupees) + (Number(remPaise) / 100);
70
+ return isNegative ? -num : num;
71
+ }
72
+
73
+ /**
74
+ * Stage 1 & 2: Exact Rational Multiplication & Remainder Extraction.
75
+ * Multiplies base in paise by rate in basis points (1 bps = 0.01% = 1/10000).
76
+ * Preserves the exact rational sub-paisa remainder without truncation.
77
+ */
78
+ export function multiplyRational(basePaise, rateBps, denominator = 10000n) {
79
+ const base = typeof basePaise === 'bigint' ? basePaise : toBigIntPaise(basePaise);
80
+ const rate = typeof rateBps === 'bigint' ? rateBps : BigInt(Math.round(Number(rateBps) || 0));
81
+ const denom = typeof denominator === 'bigint' ? denominator : BigInt(denominator);
82
+
83
+ const numerator = base * rate;
84
+ const quotient = numerator / denom;
85
+ const remainder = numerator % denom;
86
+
87
+ return {
88
+ numerator,
89
+ denominator: denom,
90
+ quotientPaise: quotient,
91
+ subPaisaRemainder: remainder
92
+ };
93
+ }
94
+
95
+ /**
96
+ * Stage 3: Currency Quantization (Commercial Paisa Rounding).
97
+ * Converts rational calculation into exact integer commercial paise using
98
+ * standard half-up rounding (>= 0.5 paise rounds up to next paisa).
99
+ */
100
+ export function quantizeCurrencyPaisa(quotientPaise, subPaisaRemainder, denominator = 10000n) {
101
+ let q = quotientPaise;
102
+ const isNegative = q < 0n || subPaisaRemainder < 0n;
103
+ const absRem = subPaisaRemainder < 0n ? -subPaisaRemainder : subPaisaRemainder;
104
+
105
+ // Half-up: if remainder * 2 >= denominator, add 1 paisa
106
+ if ((absRem * 2n) >= denominator) {
107
+ q = isNegative ? q - 1n : q + 1n;
108
+ }
109
+
110
+ return q;
111
+ }
112
+
113
+ /**
114
+ * Stage 4: Statutory Assessment Rounding.
115
+ * Applies statute-specific rounding rules:
116
+ * - INCOME_TAX_ACT_1961_SEC288B / INCOME_TAX_ACT_2025_SEC516:
117
+ * Ignores fractional paise, then rounds whole rupees to nearest multiple of 10.
118
+ * (e.g., ₹145.40 -> ignore paise -> ₹145 -> round to nearest 10 -> ₹150)
119
+ * (e.g., ₹144.90 -> ignore paise -> ₹144 -> round to nearest 10 -> ₹140)
120
+ *
121
+ * For standard transaction withholding line items, COMMERCIAL_PAISA is retained.
122
+ */
123
+ export function roundStatutoryAssessment(exactPaiseBigInt, policy = 'COMMERCIAL_PAISA') {
124
+ const paise = typeof exactPaiseBigInt === 'bigint' ? exactPaiseBigInt : toBigIntPaise(exactPaiseBigInt);
125
+
126
+ if (policy === 'COMMERCIAL_PAISA' || policy === 'NONE') {
127
+ return paise;
128
+ }
129
+
130
+ if (policy === 'INCOME_TAX_ACT_1961_SEC288B' || policy === 'INCOME_TAX_ACT_2025_SEC516') {
131
+ const isNegative = paise < 0n;
132
+ const absPaise = isNegative ? -paise : paise;
133
+
134
+ // Section 288B & 516 mandate: Ignore paise first
135
+ const wholeRupees = absPaise / 100n;
136
+ const rupeeRemainder = wholeRupees % 10n;
137
+
138
+ let roundedRupees = wholeRupees - rupeeRemainder;
139
+ if (rupeeRemainder >= 5n) {
140
+ roundedRupees += 10n;
141
+ }
142
+
143
+ const finalPaise = roundedRupees * 100n;
144
+ return isNegative ? -finalPaise : finalPaise;
145
+ }
146
+
147
+ return paise;
148
+ }
149
+
150
+ /**
151
+ * Stage 5: Formats a BigInt paise amount into a validated decimal string representation ("50000.00").
152
+ * Used at JSON disk, database, and network serialization boundaries.
153
+ */
154
+ export function formatPaiseToDecimalString(paiseBigInt) {
155
+ const paise = typeof paiseBigInt === 'bigint' ? paiseBigInt : toBigIntPaise(paiseBigInt);
156
+ const isNegative = paise < 0n;
157
+ const absPaise = isNegative ? -paise : paise;
158
+
159
+ const wholeRupees = absPaise / 100n;
160
+ const remPaise = absPaise % 100n;
161
+
162
+ const remStr = remPaise < 10n ? `0${remPaise}` : `${remPaise}`;
163
+ const sign = isNegative ? '-' : '';
164
+ return `${sign}${wholeRupees}.${remStr}`;
165
+ }
@@ -0,0 +1,23 @@
1
+ {
2
+ "sectionId": "ITACT1961_SEC115BAA_115JB",
3
+ "version": "1.0.0",
4
+ "governingStatute": "Income-tax Act, 1961",
5
+ "statutorySection": "Sections 115BAA, 115JB & 115JAA",
6
+ "successorStatute": "Income-tax Act, 2025",
7
+ "successorSection": "Section 115BAA & MAT equivalents",
8
+ "triggerPolicy": {
9
+ "type": "FISCAL_YEAR_END",
10
+ "description": "Annual Corporate Tax Return filing & MAT comparison"
11
+ },
12
+ "computation": {
13
+ "archetype": "CORPORATE_TAX_MAT_VS_CONCESSIONAL",
14
+ "concessionalBaseRate": 0.22,
15
+ "matBaseRate": 0.15,
16
+ "surchargeConcessional": 0.1,
17
+ "cessRate": 0.04
18
+ },
19
+ "rounding": {
20
+ "transactionLine": "COMMERCIAL_PAISA",
21
+ "assessmentTotal": "COMMERCIAL_PAISA"
22
+ }
23
+ }
@@ -0,0 +1,23 @@
1
+ {
2
+ "sectionId": "ITACT1961_SEC192",
3
+ "version": "1.0.0",
4
+ "governingStatute": "Income-tax Act, 1961",
5
+ "statutorySection": "Section 192",
6
+ "successorStatute": "Income-tax Act, 2025",
7
+ "successorSection": "Section 392",
8
+ "triggerPolicy": {
9
+ "type": "PAYMENT_ONLY",
10
+ "description": "Monthly payroll disbursement average rate withholding"
11
+ },
12
+ "computation": {
13
+ "archetype": "SALARY_SLAB_PROGRESSIVE_TDS",
14
+ "standardDeductionInr": 75000,
15
+ "rebate87ACeilingInr": 700000,
16
+ "cessPercent": 4
17
+ },
18
+ "rounding": {
19
+ "transactionLine": "COMMERCIAL_PAISA",
20
+ "assessmentTotal": "COMMERCIAL_PAISA"
21
+ },
22
+ "transitionalCutoverDate": "2026-04-01"
23
+ }
@@ -0,0 +1,59 @@
1
+ {
2
+ "$schema": "https://mudraforge.in/schemas/statutory-ast-v2.1.json",
3
+ "sectionId": "ITA1961_SEC194A",
4
+ "version": "2.1.0",
5
+ "title": "TDS on Interest other than Interest on Securities",
6
+ "governingStatute": "Income-tax Act, 1961",
7
+ "statutorySection": "Section 194A",
8
+ "successorStatute": "Income-tax Act, 2025",
9
+ "successorSection": "Section 393(1), Table 1, Sl. No. 1(i)",
10
+ "successorTableItem": "TABLE_1_SL_NO_1_I_INTEREST_OTHER",
11
+ "transitionalCutoverDate": "2026-04-01",
12
+ "effectivePeriod": {
13
+ "validFrom": "1967-04-01",
14
+ "validTo": null
15
+ },
16
+ "triggerPolicy": {
17
+ "type": "EARLIER_OF",
18
+ "events": [
19
+ "BOOK_CREDIT",
20
+ "PAYMENT_DISBURSEMENT"
21
+ ],
22
+ "statutoryBasis": "Section 194A(1) earlier of credit or payment"
23
+ },
24
+ "guards": [
25
+ {
26
+ "id": "GUARD_EXEMPT_PAYEE_INSTITUTION",
27
+ "field": "isExemptInstitution",
28
+ "operator": "EQ",
29
+ "value": true,
30
+ "onMatch": {
31
+ "action": "HALT_EXEMPT",
32
+ "disposition": "EXEMPT_INSTITUTION_SECTION_194A_3",
33
+ "reason": "Section 194A(3)(iii): Banking institutions and financial corporations are exempt."
34
+ }
35
+ },
36
+ {
37
+ "id": "GUARD_MISSING_PAN_206AA",
38
+ "field": "payee.isPanValid",
39
+ "operator": "EQ",
40
+ "value": false,
41
+ "onMatch": {
42
+ "action": "OVERRIDE_RATE",
43
+ "overrideRateBps": 2000,
44
+ "governingSection1961": "Section 206AA (20% missing PAN)",
45
+ "governingSection2025": "Section 397(2)"
46
+ }
47
+ }
48
+ ],
49
+ "computation": {
50
+ "archetype": "CLIFF_THRESHOLD",
51
+ "thresholdPaisa": "500000",
52
+ "standardRateBps": 1000,
53
+ "baseDetermination": "ANNUAL_AGGREGATE"
54
+ },
55
+ "rounding": {
56
+ "transactionLine": "COMMERCIAL_PAISA",
57
+ "assessmentTotal": "INCOME_TAX_ACT_1961_SEC288B"
58
+ }
59
+ }
@@ -0,0 +1,71 @@
1
+ {
2
+ "$schema": "https://mudraforge.in/schemas/statutory-ast-v2.1.json",
3
+ "sectionId": "ITA1961_SEC194C",
4
+ "version": "2.1.0",
5
+ "title": "TDS on Payments to Contractors and Sub-Contractors",
6
+ "governingStatute": "Income-tax Act, 1961",
7
+ "statutorySection": "Section 194C",
8
+ "successorStatute": "Income-tax Act, 2025",
9
+ "successorSection": "Section 393(1), Table 1, Sl. No. 2",
10
+ "successorTableItem": "TABLE_1_SL_NO_2_CONTRACTORS",
11
+ "transitionalCutoverDate": "2026-04-01",
12
+ "effectivePeriod": {
13
+ "validFrom": "1972-06-01",
14
+ "validTo": null
15
+ },
16
+ "triggerPolicy": {
17
+ "type": "EARLIER_OF",
18
+ "events": [
19
+ "BOOK_CREDIT",
20
+ "PAYMENT_DISBURSEMENT"
21
+ ],
22
+ "statutoryBasis": "Section 194C(1) earlier of credit or payment"
23
+ },
24
+ "guards": [
25
+ {
26
+ "id": "GUARD_TRANSPORTER_EXEMPTION",
27
+ "field": "isTransporterExempt",
28
+ "operator": "EQ",
29
+ "value": true,
30
+ "onMatch": {
31
+ "action": "HALT_EXEMPT",
32
+ "disposition": "EXEMPT_TRANSPORTER_SECTION_194C_6",
33
+ "reason": "Section 194C(6): Goods transport operators owning ten or fewer carriages furnishing PAN declaration are exempt."
34
+ }
35
+ },
36
+ {
37
+ "id": "GUARD_MISSING_PAN_206AA",
38
+ "field": "payee.isPanValid",
39
+ "operator": "EQ",
40
+ "value": false,
41
+ "onMatch": {
42
+ "action": "OVERRIDE_RATE",
43
+ "overrideRateBps": 2000,
44
+ "governingSection1961": "Section 206AA (20% missing PAN)",
45
+ "governingSection2025": "Section 397(2) (20% missing PAN)"
46
+ }
47
+ },
48
+ {
49
+ "id": "GUARD_INDIVIDUAL_HUF_1_PERCENT",
50
+ "field": "isIndividualOrHuf",
51
+ "operator": "EQ",
52
+ "value": true,
53
+ "onMatch": {
54
+ "action": "OVERRIDE_RATE",
55
+ "overrideRateBps": 100,
56
+ "governingSection1961": "Section 194C(1)(a) (1% for Individual/HUF)",
57
+ "governingSection2025": "Section 393(1) Table 1 (1% for Individual/HUF)"
58
+ }
59
+ }
60
+ ],
61
+ "computation": {
62
+ "archetype": "CLIFF_THRESHOLD",
63
+ "thresholdPaisa": "3000000",
64
+ "standardRateBps": 200,
65
+ "baseDetermination": "CONTRACT_VALUE_OR_AGGREGATE_ANNUAL"
66
+ },
67
+ "rounding": {
68
+ "transactionLine": "COMMERCIAL_PAISA",
69
+ "assessmentTotal": "INCOME_TAX_ACT_1961_SEC288B"
70
+ }
71
+ }
@@ -0,0 +1,60 @@
1
+ {
2
+ "$schema": "https://mudraforge.in/schemas/statutory-ast-v2.1.json",
3
+ "sectionId": "ITA1961_SEC194H",
4
+ "version": "2.1.0",
5
+ "title": "TDS on Commission or Brokerage",
6
+ "governingStatute": "Income-tax Act, 1961",
7
+ "statutorySection": "Section 194H",
8
+ "successorStatute": "Income-tax Act, 2025",
9
+ "successorSection": "Section 393(1), Table 1, Sl. No. 1(ii)",
10
+ "successorTableItem": "TABLE_1_SL_NO_1_II_COMMISSION",
11
+ "transitionalCutoverDate": "2026-04-01",
12
+ "effectivePeriod": {
13
+ "validFrom": "2001-06-01",
14
+ "validTo": null
15
+ },
16
+ "triggerPolicy": {
17
+ "type": "EARLIER_OF",
18
+ "events": [
19
+ "BOOK_CREDIT",
20
+ "PAYMENT_DISBURSEMENT"
21
+ ],
22
+ "statutoryBasis": "Section 194H earlier of credit or payment"
23
+ },
24
+ "guards": [
25
+ {
26
+ "id": "GUARD_MISSING_PAN_206AA",
27
+ "field": "payee.isPanValid",
28
+ "operator": "EQ",
29
+ "value": false,
30
+ "onMatch": {
31
+ "action": "OVERRIDE_RATE",
32
+ "overrideRateBps": 2000,
33
+ "governingSection1961": "Section 206AA (20% missing PAN)",
34
+ "governingSection2025": "Section 397(2) (20% missing PAN)"
35
+ }
36
+ },
37
+ {
38
+ "id": "GUARD_PRE_OCTOBER_2024_5_PERCENT",
39
+ "field": "isPreOctober2024",
40
+ "operator": "EQ",
41
+ "value": true,
42
+ "onMatch": {
43
+ "action": "OVERRIDE_RATE",
44
+ "overrideRateBps": 500,
45
+ "governingSection1961": "Section 194H prior to Finance (No. 2) Act 2024 (5%)",
46
+ "governingSection2025": "Section 393(1)"
47
+ }
48
+ }
49
+ ],
50
+ "computation": {
51
+ "archetype": "CLIFF_THRESHOLD",
52
+ "thresholdPaisa": "1500000",
53
+ "standardRateBps": 200,
54
+ "baseDetermination": "ANNUAL_AGGREGATE"
55
+ },
56
+ "rounding": {
57
+ "transactionLine": "COMMERCIAL_PAISA",
58
+ "assessmentTotal": "INCOME_TAX_ACT_1961_SEC288B"
59
+ }
60
+ }
@@ -0,0 +1,60 @@
1
+ {
2
+ "$schema": "https://mudraforge.in/schemas/statutory-ast-v2.1.json",
3
+ "sectionId": "ITA1961_SEC194I",
4
+ "version": "2.1.0",
5
+ "title": "TDS on Rent of Land, Building or Machinery",
6
+ "governingStatute": "Income-tax Act, 1961",
7
+ "statutorySection": "Section 194I",
8
+ "successorStatute": "Income-tax Act, 2025",
9
+ "successorSection": "Section 393(1), Table 1, Sl. No. 2",
10
+ "successorTableItem": "TABLE_1_SL_NO_2_RENT",
11
+ "transitionalCutoverDate": "2026-04-01",
12
+ "effectivePeriod": {
13
+ "validFrom": "1994-06-01",
14
+ "validTo": null
15
+ },
16
+ "triggerPolicy": {
17
+ "type": "EARLIER_OF",
18
+ "events": [
19
+ "BOOK_CREDIT",
20
+ "PAYMENT_DISBURSEMENT"
21
+ ],
22
+ "statutoryBasis": "Section 194I earlier of credit or payment"
23
+ },
24
+ "guards": [
25
+ {
26
+ "id": "GUARD_MISSING_PAN_206AA",
27
+ "field": "payee.isPanValid",
28
+ "operator": "EQ",
29
+ "value": false,
30
+ "onMatch": {
31
+ "action": "OVERRIDE_RATE",
32
+ "overrideRateBps": 2000,
33
+ "governingSection1961": "Section 206AA (20% missing PAN)",
34
+ "governingSection2025": "Section 397(2) (20% missing PAN)"
35
+ }
36
+ },
37
+ {
38
+ "id": "GUARD_LAND_BUILDING_10_PERCENT",
39
+ "field": "isLandOrBuilding",
40
+ "operator": "EQ",
41
+ "value": true,
42
+ "onMatch": {
43
+ "action": "OVERRIDE_RATE",
44
+ "overrideRateBps": 1000,
45
+ "governingSection1961": "Section 194I(b) (10% for Land, Building, Furniture)",
46
+ "governingSection2025": "Section 393(1)"
47
+ }
48
+ }
49
+ ],
50
+ "computation": {
51
+ "archetype": "CLIFF_THRESHOLD",
52
+ "thresholdPaisa": "24000000",
53
+ "standardRateBps": 200,
54
+ "baseDetermination": "ANNUAL_AGGREGATE"
55
+ },
56
+ "rounding": {
57
+ "transactionLine": "COMMERCIAL_PAISA",
58
+ "assessmentTotal": "INCOME_TAX_ACT_1961_SEC288B"
59
+ }
60
+ }
@@ -0,0 +1,70 @@
1
+ {
2
+ "$schema": "https://mudraforge.in/schemas/statutory-ast-v2.1.json",
3
+ "sectionId": "ITA1961_SEC194IA",
4
+ "version": "2.1.0",
5
+ "title": "TDS on Payment on Transfer of Certain Immovable Property",
6
+ "governingStatute": "Income-tax Act, 1961",
7
+ "statutorySection": "Section 194-IA",
8
+ "successorStatute": "Income-tax Act, 2025",
9
+ "successorSection": "Section 393(1), Table 1, Sl. No. 10",
10
+ "successorTableItem": "TABLE_1_SL_NO_10_PROPERTY_TRANSFER",
11
+ "transitionalCutoverDate": "2026-04-01",
12
+ "effectivePeriod": {
13
+ "validFrom": "2013-06-01",
14
+ "validTo": null
15
+ },
16
+ "triggerPolicy": {
17
+ "type": "EARLIER_OF",
18
+ "events": [
19
+ "BOOK_CREDIT",
20
+ "PAYMENT_DISBURSEMENT"
21
+ ],
22
+ "statutoryBasis": "Section 194-IA earlier of credit or payment"
23
+ },
24
+ "guards": [
25
+ {
26
+ "id": "GUARD_AGRICULTURAL_LAND",
27
+ "field": "isAgriculturalLand",
28
+ "operator": "EQ",
29
+ "value": true,
30
+ "onMatch": {
31
+ "action": "HALT_EXEMPT",
32
+ "disposition": "EXEMPT_AGRICULTURAL_LAND",
33
+ "reason": "Section 194-IA(1): Excludes rural agricultural land from TDS."
34
+ }
35
+ },
36
+ {
37
+ "id": "GUARD_NON_RESIDENT_SELLER",
38
+ "field": "sellerIsResident",
39
+ "operator": "EQ",
40
+ "value": false,
41
+ "onMatch": {
42
+ "action": "HALT_EXEMPT",
43
+ "disposition": "EXEMPT_GOVERNED_BY_SECTION_195",
44
+ "reason": "Non-resident seller transfer of immovable property is governed exclusively by Section 195."
45
+ }
46
+ },
47
+ {
48
+ "id": "GUARD_MISSING_PAN_206AA",
49
+ "field": "payee.isPanValid",
50
+ "operator": "EQ",
51
+ "value": false,
52
+ "onMatch": {
53
+ "action": "OVERRIDE_RATE",
54
+ "overrideRateBps": 2000,
55
+ "governingSection1961": "Section 206AA (20% missing PAN)",
56
+ "governingSection2025": "Section 397(2)"
57
+ }
58
+ }
59
+ ],
60
+ "computation": {
61
+ "archetype": "CLIFF_THRESHOLD",
62
+ "thresholdPaisa": "500000000",
63
+ "standardRateBps": 100,
64
+ "baseDetermination": "CONTRACTUAL_CONSIDERATION_OR_STAMP_DUTY_VALUE"
65
+ },
66
+ "rounding": {
67
+ "transactionLine": "COMMERCIAL_PAISA",
68
+ "assessmentTotal": "INCOME_TAX_ACT_1961_SEC288B"
69
+ }
70
+ }
@@ -0,0 +1,59 @@
1
+ {
2
+ "$schema": "https://mudraforge.in/schemas/statutory-ast-v2.1.json",
3
+ "sectionId": "ITA1961_SEC194IB",
4
+ "version": "2.1.0",
5
+ "title": "TDS on Payment of Certain Rent by Certain Individuals or HUF",
6
+ "governingStatute": "Income-tax Act, 1961",
7
+ "statutorySection": "Section 194-IB",
8
+ "successorStatute": "Income-tax Act, 2025",
9
+ "successorSection": "Section 393(1), Table 1, Sl. No. 11",
10
+ "successorTableItem": "TABLE_1_SL_NO_11_RENT_INDIVIDUAL",
11
+ "transitionalCutoverDate": "2026-04-01",
12
+ "effectivePeriod": {
13
+ "validFrom": "2017-06-01",
14
+ "validTo": null
15
+ },
16
+ "triggerPolicy": {
17
+ "type": "EARLIER_OF",
18
+ "events": [
19
+ "BOOK_CREDIT",
20
+ "PAYMENT_DISBURSEMENT"
21
+ ],
22
+ "statutoryBasis": "Section 194-IB earlier of credit to last month account or payment"
23
+ },
24
+ "guards": [
25
+ {
26
+ "id": "GUARD_TAX_AUDIT_COVERED_PAYER",
27
+ "field": "isPayerTaxAuditCovered",
28
+ "operator": "EQ",
29
+ "value": true,
30
+ "onMatch": {
31
+ "action": "HALT_EXEMPT",
32
+ "disposition": "EXEMPT_GOVERNED_BY_SECTION_194I",
33
+ "reason": "Payers covered under Section 44AB tax audit are governed by Section 194I, not Section 194-IB."
34
+ }
35
+ },
36
+ {
37
+ "id": "GUARD_MISSING_PAN_206AA",
38
+ "field": "payee.isPanValid",
39
+ "operator": "EQ",
40
+ "value": false,
41
+ "onMatch": {
42
+ "action": "OVERRIDE_RATE",
43
+ "overrideRateBps": 2000,
44
+ "governingSection1961": "Section 206AA (20% missing PAN, capped at last month rent)",
45
+ "governingSection2025": "Section 397(2)"
46
+ }
47
+ }
48
+ ],
49
+ "computation": {
50
+ "archetype": "CLIFF_THRESHOLD",
51
+ "thresholdPaisa": "5000000",
52
+ "standardRateBps": 200,
53
+ "baseDetermination": "MONTHLY_RENT"
54
+ },
55
+ "rounding": {
56
+ "transactionLine": "COMMERCIAL_PAISA",
57
+ "assessmentTotal": "INCOME_TAX_ACT_1961_SEC288B"
58
+ }
59
+ }
@@ -0,0 +1,60 @@
1
+ {
2
+ "$schema": "https://mudraforge.in/schemas/statutory-ast-v2.1.json",
3
+ "sectionId": "ITA1961_SEC194J",
4
+ "version": "2.1.0",
5
+ "title": "TDS on Fees for Professional or Technical Services",
6
+ "governingStatute": "Income-tax Act, 1961",
7
+ "statutorySection": "Section 194J",
8
+ "successorStatute": "Income-tax Act, 2025",
9
+ "successorSection": "Section 393(1), Table 1, Sl. No. 3",
10
+ "successorTableItem": "TABLE_1_SL_NO_3_PROFESSIONAL_TECHNICAL",
11
+ "transitionalCutoverDate": "2026-04-01",
12
+ "effectivePeriod": {
13
+ "validFrom": "1995-07-01",
14
+ "validTo": null
15
+ },
16
+ "triggerPolicy": {
17
+ "type": "EARLIER_OF",
18
+ "events": [
19
+ "BOOK_CREDIT",
20
+ "PAYMENT_DISBURSEMENT"
21
+ ],
22
+ "statutoryBasis": "Section 194J(1) earlier of credit or payment"
23
+ },
24
+ "guards": [
25
+ {
26
+ "id": "GUARD_MISSING_PAN_206AA",
27
+ "field": "payee.isPanValid",
28
+ "operator": "EQ",
29
+ "value": false,
30
+ "onMatch": {
31
+ "action": "OVERRIDE_RATE",
32
+ "overrideRateBps": 2000,
33
+ "governingSection1961": "Section 206AA (20% missing PAN)",
34
+ "governingSection2025": "Section 397(2) (20% missing PAN)"
35
+ }
36
+ },
37
+ {
38
+ "id": "GUARD_PROFESSIONAL_OR_NON_COMPETE_10_PERCENT",
39
+ "field": "isProfessionalOrNonCompete",
40
+ "operator": "EQ",
41
+ "value": true,
42
+ "onMatch": {
43
+ "action": "OVERRIDE_RATE",
44
+ "overrideRateBps": 1000,
45
+ "governingSection1961": "Section 194J(1) (10% for Professional Services/Non-Compete)",
46
+ "governingSection2025": "Section 393(1) Table 1 (10% for Professional Services)"
47
+ }
48
+ }
49
+ ],
50
+ "computation": {
51
+ "archetype": "CLIFF_THRESHOLD",
52
+ "thresholdPaisa": "3000000",
53
+ "standardRateBps": 200,
54
+ "baseDetermination": "CATEGORY_ANNUAL_AGGREGATE"
55
+ },
56
+ "rounding": {
57
+ "transactionLine": "COMMERCIAL_PAISA",
58
+ "assessmentTotal": "INCOME_TAX_ACT_1961_SEC288B"
59
+ }
60
+ }