@fin.cx/chartdata 3.1.0 → 3.2.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.
@@ -3,6 +3,6 @@
3
3
  */
4
4
  export const commitinfo = {
5
5
  name: '@fin.cx/chartdata',
6
- version: '3.1.0',
6
+ version: '3.2.0',
7
7
  description: 'Year-versioned German SKR03/SKR04 chart-of-accounts datasets with Automatikkonto functions, BU-key rules, UStVA-Kennzahl and Anlage EÜR mappings'
8
8
  }
@@ -9,6 +9,7 @@ import type {
9
9
  TAccountRole,
10
10
  TChartName,
11
11
  TEuerAccountLines,
12
+ TExpenseRole,
12
13
  TMappingDimension,
13
14
  TPayrollRole,
14
15
  TSecuritiesRole,
@@ -310,6 +311,11 @@ export class BooksChart implements IChart {
310
311
  return this.accounts.find((account) => account.payrollRole === roleArg) ?? null;
311
312
  }
312
313
 
314
+ /** The one account of the books that books the expense role, or `null`; an individual account takes none. */
315
+ public getExpenseAccount(roleArg: TExpenseRole): IChartAccount | null {
316
+ return this.accounts.find((account) => account.expenseRole === roleArg) ?? null;
317
+ }
318
+
313
319
  public getMappingCoverage(usedAccountsArg: string[], dimensionArg: TMappingDimension): IMappingCoverage {
314
320
  return mappingCoverageOf(this.accounts, usedAccountsArg, dimensionArg);
315
321
  }
@@ -6,6 +6,7 @@ import type {
6
6
  TAccountRole,
7
7
  TChartName,
8
8
  TEuerAccountLines,
9
+ TExpenseRole,
9
10
  TMappingDimension,
10
11
  TPayrollRole,
11
12
  TSecuritiesRole,
@@ -122,6 +123,14 @@ export function getPayrollAccount(chart: TChartName, year: number, role: TPayrol
122
123
  return getChart(chart, year).accounts.find((account) => account.payrollRole === role) ?? null;
123
124
  }
124
125
 
126
+ /**
127
+ * The one account of a chart that books the expense role (`IChartAccount.expenseRole`), or `null` where the chart
128
+ * keeps none for it. Throws for unknown chart/year combinations, as `getChart`.
129
+ */
130
+ export function getExpenseAccount(chart: TChartName, year: number, role: TExpenseRole): IChartAccount | null {
131
+ return getChart(chart, year).accounts.find((account) => account.expenseRole === role) ?? null;
132
+ }
133
+
125
134
  function hasMapping(account: IChartAccount, dimension: TMappingDimension): boolean {
126
135
  switch (dimension) {
127
136
  case 'ustva':
@@ -198,6 +198,60 @@ export type TPayrollRole =
198
198
  | 'estimated_contributions'
199
199
  | 'clearing';
200
200
 
201
+ /**
202
+ * What an account books of the expenses an employee lays out for the business
203
+ * and claims back (Reisekostenabrechnung, Auslagenersatz), and of the
204
+ * business's card through which such expenses are paid. An expense claim
205
+ * finds its account by this role: within a chart, no two accounts share one,
206
+ * and every role has its account in both standard charts (DATEV Kontenrahmen
207
+ * SKR 03 Art.-Nr. 11174, pp. 10, 23, 24, 25, and SKR 04 Art.-Nr. 11175,
208
+ * pp. 12, 23, 24, gültig für 2026). None of the accounts carries a tax
209
+ * function: the input VAT of a receipt is booked by BU key. The claim itself
210
+ * is settled through the payroll role 'clearing' (the Lohn- und
211
+ * Gehaltsverrechnungskonto), which takes no expense role.
212
+ *
213
+ * An employee's business travel, under the other operating expenses
214
+ * (§ 275 Abs. 2 Nr. 8 HGB, `GuV 8`), all of it with the staff in the Anlage
215
+ * EÜR (Zeile 31): 'travel_employee' (Reisekosten Arbeitnehmer: the travel
216
+ * costs of no other role, such as parking and tolls, the Reisenebenkosten),
217
+ * 'travel_employee_transport' (Fahrtkosten: tickets, taxis, a hired car and
218
+ * its fuel), 'travel_employee_meals' (Verpflegungsmehraufwand),
219
+ * 'travel_employee_lodging' (Übernachtungsaufwand) and 'mileage_employee'
220
+ * (Kilometergelderstattung Arbeitnehmer, for an employee's own car).
221
+ *
222
+ * The business's other expenses an employee lays out, under the other
223
+ * operating expenses (`GuV 8`): 'business_meals' (Bewirtungskosten, the
224
+ * deductible 70 %) and 'business_meals_nondeductible' (their non-deductible
225
+ * 30 %, § 4 Abs. 5 Satz 1 Nr. 2 EStG), 'vehicle_running_costs' (Laufende
226
+ * Fahrzeug-Betriebskosten: a company car's fuel), 'office_supplies'
227
+ * (Bürobedarf), 'postage' (Porto), 'literature' (Zeitschriften, Bücher,
228
+ * digitale Medien), 'training' (Fortbildungskosten), 'software' (software
229
+ * licensed or subscribed to as an expense, on DATEV's Wartungskosten für
230
+ * Hard- und Software, the running EDV costs of the Anlage EÜR) and
231
+ * 'other_operating_expenses' (Sonstige betriebliche Aufwendungen).
232
+ *
233
+ * 'credit_card_settlement': the Kreditkartenabrechnung, the clearing account
234
+ * of a card's charges until its statement is paid, under the other
235
+ * liabilities (§ 266 Abs. 3 C.8 HGB; DATEV states it under the other assets
236
+ * or the other liabilities by its balance).
237
+ */
238
+ export type TExpenseRole =
239
+ | 'travel_employee'
240
+ | 'travel_employee_transport'
241
+ | 'travel_employee_meals'
242
+ | 'travel_employee_lodging'
243
+ | 'mileage_employee'
244
+ | 'business_meals'
245
+ | 'business_meals_nondeductible'
246
+ | 'vehicle_running_costs'
247
+ | 'office_supplies'
248
+ | 'postage'
249
+ | 'literature'
250
+ | 'training'
251
+ | 'software'
252
+ | 'other_operating_expenses'
253
+ | 'credit_card_settlement';
254
+
201
255
  /**
202
256
  * A rule of the income tax law an income or expense account is kept for, as
203
257
  * its DATEV name states it:
@@ -343,6 +397,8 @@ export interface IChartAccount {
343
397
  securitiesRole?: TSecuritiesRole;
344
398
  /** what the account books of a business's payroll; unset = nothing of its own */
345
399
  payrollRole?: TPayrollRole;
400
+ /** what the account books of the expenses an employee lays out and claims back; unset = nothing of its own */
401
+ expenseRole?: TExpenseRole;
346
402
  /** the income tax rule the account is kept for, as its DATEV name states it; unset = none of its own */
347
403
  taxRule?: TTaxRule;
348
404
  /**
@@ -640,6 +640,17 @@ export const SKR03_2026: IChart = {
640
640
  "provenance": "own designation; number/purpose verified vs DATEV Kontenrahmen SKR 03 (Art.-Nr. 11174) and SKR 04 (Art.-Nr. 11175), gültig für 2026, and vs public oracle (2026-09-25)",
641
641
  "validFrom": 2026
642
642
  },
643
+ {
644
+ "accountNumber": "1730",
645
+ "accountName": "Kreditkartenabrechnung",
646
+ "accountClass": 1,
647
+ "accountType": "liability",
648
+ "expenseRole": "credit_card_settlement",
649
+ "hgb266Position": "Passiva C.8",
650
+ "euerExclusion": "balance_sheet",
651
+ "provenance": "own designation; number/purpose/position verified vs DATEV Kontenrahmen SKR 03 (Art.-Nr. 11174, p. 10), gültig für 2026 (no tax function there), and vs public oracle (2026-10-08)",
652
+ "validFrom": 2026
653
+ },
643
654
  {
644
655
  "accountNumber": "1740",
645
656
  "accountName": "Verbindlichkeiten aus Lohn und Gehalt",
@@ -1857,6 +1868,19 @@ export const SKR03_2026: IChart = {
1857
1868
  "provenance": "own designation; number/purpose verified vs public oracle (2026-07-09); pending official DATEV table verification",
1858
1869
  "validFrom": 2026
1859
1870
  },
1871
+ {
1872
+ "accountNumber": "4530",
1873
+ "accountName": "Laufende Fahrzeug-Betriebskosten",
1874
+ "accountClass": 4,
1875
+ "accountType": "expense",
1876
+ "expenseRole": "vehicle_running_costs",
1877
+ "hgb275Position": "GuV 8",
1878
+ "euer": {
1879
+ "kennzahl": 146
1880
+ },
1881
+ "provenance": "own designation; number/purpose/position verified vs DATEV Kontenrahmen SKR 03 (Art.-Nr. 11174, p. 23), gültig für 2026 (no tax function there), and vs public oracle (2026-10-08)",
1882
+ "validFrom": 2026
1883
+ },
1860
1884
  {
1861
1885
  "accountNumber": "4600",
1862
1886
  "accountName": "Werbekosten",
@@ -1898,11 +1922,90 @@ export const SKR03_2026: IChart = {
1898
1922
  "accountName": "Bewirtungskosten",
1899
1923
  "accountClass": 4,
1900
1924
  "accountType": "expense",
1925
+ "expenseRole": "business_meals",
1901
1926
  "hgb275Position": "GuV 8",
1902
1927
  "euer": {
1903
1928
  "kennzahl": 175
1904
1929
  },
1905
- "provenance": "own designation; number/purpose verified vs public oracle (2026-07-09); pending official DATEV table verification",
1930
+ "provenance": "own designation; number/purpose/position verified vs DATEV Kontenrahmen SKR 03 (Art.-Nr. 11174, p. 23), gültig für 2026 (no tax function there), and vs public oracle (2026-10-08)",
1931
+ "validFrom": 2026
1932
+ },
1933
+ {
1934
+ "accountNumber": "4654",
1935
+ "accountName": "Nicht abzugsfähige Bewirtungskosten",
1936
+ "accountClass": 4,
1937
+ "accountType": "expense",
1938
+ "expenseRole": "business_meals_nondeductible",
1939
+ "hgb275Position": "GuV 8",
1940
+ "euer": {
1941
+ "kennzahl": 165
1942
+ },
1943
+ "provenance": "own designation; number/purpose/position verified vs DATEV Kontenrahmen SKR 03 (Art.-Nr. 11174, p. 23), gültig für 2026 (no tax function there), and vs public oracle (2026-10-08)",
1944
+ "validFrom": 2026
1945
+ },
1946
+ {
1947
+ "accountNumber": "4660",
1948
+ "accountName": "Reisekosten Arbeitnehmer",
1949
+ "accountClass": 4,
1950
+ "accountType": "expense",
1951
+ "expenseRole": "travel_employee",
1952
+ "hgb275Position": "GuV 8",
1953
+ "euer": {
1954
+ "kennzahl": 120
1955
+ },
1956
+ "provenance": "own designation; number/purpose/position verified vs DATEV Kontenrahmen SKR 03 (Art.-Nr. 11174, p. 23), gültig für 2026 (no tax function there), and vs public oracle (2026-10-08)",
1957
+ "validFrom": 2026
1958
+ },
1959
+ {
1960
+ "accountNumber": "4663",
1961
+ "accountName": "Reisekosten Arbeitnehmer Fahrtkosten",
1962
+ "accountClass": 4,
1963
+ "accountType": "expense",
1964
+ "expenseRole": "travel_employee_transport",
1965
+ "hgb275Position": "GuV 8",
1966
+ "euer": {
1967
+ "kennzahl": 120
1968
+ },
1969
+ "provenance": "own designation; number/purpose/position verified vs DATEV Kontenrahmen SKR 03 (Art.-Nr. 11174, p. 23), gültig für 2026 (no tax function there), and vs public oracle (2026-10-08)",
1970
+ "validFrom": 2026
1971
+ },
1972
+ {
1973
+ "accountNumber": "4664",
1974
+ "accountName": "Reisekosten Arbeitnehmer Verpflegungsmehraufwand",
1975
+ "accountClass": 4,
1976
+ "accountType": "expense",
1977
+ "expenseRole": "travel_employee_meals",
1978
+ "hgb275Position": "GuV 8",
1979
+ "euer": {
1980
+ "kennzahl": 120
1981
+ },
1982
+ "provenance": "own designation; number/purpose/position verified vs DATEV Kontenrahmen SKR 03 (Art.-Nr. 11174, p. 23), gültig für 2026 (no tax function there), and vs public oracle (2026-10-08)",
1983
+ "validFrom": 2026
1984
+ },
1985
+ {
1986
+ "accountNumber": "4666",
1987
+ "accountName": "Reisekosten Arbeitnehmer Übernachtungsaufwand",
1988
+ "accountClass": 4,
1989
+ "accountType": "expense",
1990
+ "expenseRole": "travel_employee_lodging",
1991
+ "hgb275Position": "GuV 8",
1992
+ "euer": {
1993
+ "kennzahl": 120
1994
+ },
1995
+ "provenance": "own designation; number/purpose/position verified vs DATEV Kontenrahmen SKR 03 (Art.-Nr. 11174, p. 23), gültig für 2026 (no tax function there), and vs public oracle (2026-10-08)",
1996
+ "validFrom": 2026
1997
+ },
1998
+ {
1999
+ "accountNumber": "4668",
2000
+ "accountName": "Kilometergelderstattung Arbeitnehmer",
2001
+ "accountClass": 4,
2002
+ "accountType": "expense",
2003
+ "expenseRole": "mileage_employee",
2004
+ "hgb275Position": "GuV 8",
2005
+ "euer": {
2006
+ "kennzahl": 120
2007
+ },
2008
+ "provenance": "own designation; number/purpose/position verified vs DATEV Kontenrahmen SKR 03 (Art.-Nr. 11174, p. 23), gültig für 2026 (no tax function there), and vs public oracle (2026-10-08)",
1906
2009
  "validFrom": 2026
1907
2010
  },
1908
2011
  {
@@ -1946,11 +2049,12 @@ export const SKR03_2026: IChart = {
1946
2049
  "accountName": "Wartungskosten für Hard- und Software",
1947
2050
  "accountClass": 4,
1948
2051
  "accountType": "expense",
2052
+ "expenseRole": "software",
1949
2053
  "hgb275Position": "GuV 8",
1950
2054
  "euer": {
1951
2055
  "kennzahl": 228
1952
2056
  },
1953
- "provenance": "own designation; number/purpose verified vs DATEV Kontenrahmen SKR 03 (Art.-Nr. 11174, p. 24), gültig für 2026 (no tax function there), and vs public oracle (2026-10-06)",
2057
+ "provenance": "own designation; number/purpose/position verified vs DATEV Kontenrahmen SKR 03 (Art.-Nr. 11174, p. 24), gültig für 2026 (no tax function there), and vs public oracle (2026-10-08)",
1954
2058
  "validFrom": 2026
1955
2059
  },
1956
2060
  {
@@ -2039,11 +2143,12 @@ export const SKR03_2026: IChart = {
2039
2143
  "accountName": "Sonstige betriebliche Aufwendungen",
2040
2144
  "accountClass": 4,
2041
2145
  "accountType": "expense",
2146
+ "expenseRole": "other_operating_expenses",
2042
2147
  "hgb275Position": "GuV 8",
2043
2148
  "euer": {
2044
2149
  "kennzahl": 183
2045
2150
  },
2046
- "provenance": "own designation; number/purpose verified vs public oracle (2026-07-09); pending official DATEV table verification",
2151
+ "provenance": "own designation; number/purpose/position verified vs DATEV Kontenrahmen SKR 03 (Art.-Nr. 11174, p. 25), gültig für 2026 (no tax function there), and vs public oracle (2026-10-08)",
2047
2152
  "validFrom": 2026
2048
2153
  },
2049
2154
  {
@@ -2051,11 +2156,12 @@ export const SKR03_2026: IChart = {
2051
2156
  "accountName": "Porto",
2052
2157
  "accountClass": 4,
2053
2158
  "accountType": "expense",
2159
+ "expenseRole": "postage",
2054
2160
  "hgb275Position": "GuV 8",
2055
2161
  "euer": {
2056
2162
  "kennzahl": 229
2057
2163
  },
2058
- "provenance": "own designation; number/purpose verified vs public oracle (2026-07-09); pending official DATEV table verification",
2164
+ "provenance": "own designation; number/purpose/position verified vs DATEV Kontenrahmen SKR 03 (Art.-Nr. 11174, p. 25), gültig für 2026 (no tax function there), and vs public oracle (2026-10-08)",
2059
2165
  "validFrom": 2026
2060
2166
  },
2061
2167
  {
@@ -2087,11 +2193,12 @@ export const SKR03_2026: IChart = {
2087
2193
  "accountName": "Bürobedarf",
2088
2194
  "accountClass": 4,
2089
2195
  "accountType": "expense",
2196
+ "expenseRole": "office_supplies",
2090
2197
  "hgb275Position": "GuV 8",
2091
2198
  "euer": {
2092
2199
  "kennzahl": 229
2093
2200
  },
2094
- "provenance": "own designation; number/purpose verified vs DATEV Kontenrahmen SKR 03 (Art.-Nr. 11174, p. 25), gültig für 2026 (no tax function there), and vs public oracle (2026-10-06)",
2201
+ "provenance": "own designation; number/purpose/position verified vs DATEV Kontenrahmen SKR 03 (Art.-Nr. 11174, p. 25), gültig für 2026 (no tax function there), and vs public oracle (2026-10-08)",
2095
2202
  "validFrom": 2026
2096
2203
  },
2097
2204
  {
@@ -2099,11 +2206,12 @@ export const SKR03_2026: IChart = {
2099
2206
  "accountName": "Zeitschriften, Bücher, digitale Medien (Fachliteratur)",
2100
2207
  "accountClass": 4,
2101
2208
  "accountType": "expense",
2209
+ "expenseRole": "literature",
2102
2210
  "hgb275Position": "GuV 8",
2103
2211
  "euer": {
2104
2212
  "kennzahl": 229
2105
2213
  },
2106
- "provenance": "own designation; number/purpose verified vs DATEV Kontenrahmen SKR 03 (Art.-Nr. 11174, p. 25), gültig für 2026 (no tax function there), and vs public oracle (2026-10-06)",
2214
+ "provenance": "own designation; number/purpose/position verified vs DATEV Kontenrahmen SKR 03 (Art.-Nr. 11174, p. 25), gültig für 2026 (no tax function there), and vs public oracle (2026-10-08)",
2107
2215
  "validFrom": 2026
2108
2216
  },
2109
2217
  {
@@ -2111,11 +2219,12 @@ export const SKR03_2026: IChart = {
2111
2219
  "accountName": "Fortbildungskosten",
2112
2220
  "accountClass": 4,
2113
2221
  "accountType": "expense",
2222
+ "expenseRole": "training",
2114
2223
  "hgb275Position": "GuV 8",
2115
2224
  "euer": {
2116
2225
  "kennzahl": 281
2117
2226
  },
2118
- "provenance": "own designation; number/purpose verified vs DATEV Kontenrahmen SKR 03 (Art.-Nr. 11174, p. 25), gültig für 2026 (no tax function there), and vs public oracle (2026-10-06)",
2227
+ "provenance": "own designation; number/purpose/position verified vs DATEV Kontenrahmen SKR 03 (Art.-Nr. 11174, p. 25), gültig für 2026 (no tax function there), and vs public oracle (2026-10-08)",
2119
2228
  "validFrom": 2026
2120
2229
  },
2121
2230
  {
@@ -651,6 +651,17 @@ export const SKR04_2026: IChart = {
651
651
  "provenance": "own designation; number/purpose verified vs public oracle (2026-07-09); pending official DATEV table verification",
652
652
  "validFrom": 2026
653
653
  },
654
+ {
655
+ "accountNumber": "3610",
656
+ "accountName": "Kreditkartenabrechnung",
657
+ "accountClass": 3,
658
+ "accountType": "liability",
659
+ "expenseRole": "credit_card_settlement",
660
+ "hgb266Position": "Passiva C.8",
661
+ "euerExclusion": "balance_sheet",
662
+ "provenance": "own designation; number/purpose/position verified vs DATEV Kontenrahmen SKR 04 (Art.-Nr. 11175, p. 12), gültig für 2026 (no tax function there), and vs public oracle (2026-10-08)",
663
+ "validFrom": 2026
664
+ },
654
665
  {
655
666
  "accountNumber": "3630",
656
667
  "accountName": "Sonstige Verrechnungskonten (Interimskonto)",
@@ -2081,11 +2092,12 @@ export const SKR04_2026: IChart = {
2081
2092
  "accountName": "Sonstige betriebliche Aufwendungen",
2082
2093
  "accountClass": 6,
2083
2094
  "accountType": "expense",
2095
+ "expenseRole": "other_operating_expenses",
2084
2096
  "hgb275Position": "GuV 8",
2085
2097
  "euer": {
2086
2098
  "kennzahl": 183
2087
2099
  },
2088
- "provenance": "own designation; number/purpose verified vs public oracle (2026-07-09); pending official DATEV table verification",
2100
+ "provenance": "own designation; number/purpose/position verified vs DATEV Kontenrahmen SKR 04 (Art.-Nr. 11175, p. 23), gültig für 2026 (no tax function there), and vs public oracle (2026-10-08)",
2089
2101
  "validFrom": 2026
2090
2102
  },
2091
2103
  {
@@ -2129,11 +2141,12 @@ export const SKR04_2026: IChart = {
2129
2141
  "accountName": "Wartungskosten für Hard- und Software",
2130
2142
  "accountClass": 6,
2131
2143
  "accountType": "expense",
2144
+ "expenseRole": "software",
2132
2145
  "hgb275Position": "GuV 8",
2133
2146
  "euer": {
2134
2147
  "kennzahl": 228
2135
2148
  },
2136
- "provenance": "own designation; number/purpose verified vs DATEV Kontenrahmen SKR 04 (Art.-Nr. 11175, p. 23), gültig für 2026 (no tax function there), and vs public oracle (2026-10-06)",
2149
+ "provenance": "own designation; number/purpose/position verified vs DATEV Kontenrahmen SKR 04 (Art.-Nr. 11175, p. 23), gültig für 2026 (no tax function there), and vs public oracle (2026-10-08)",
2137
2150
  "validFrom": 2026
2138
2151
  },
2139
2152
  {
@@ -2165,11 +2178,12 @@ export const SKR04_2026: IChart = {
2165
2178
  "accountName": "Laufende Fahrzeug-Betriebskosten",
2166
2179
  "accountClass": 6,
2167
2180
  "accountType": "expense",
2181
+ "expenseRole": "vehicle_running_costs",
2168
2182
  "hgb275Position": "GuV 8",
2169
2183
  "euer": {
2170
2184
  "kennzahl": 146
2171
2185
  },
2172
- "provenance": "own designation; number/purpose verified vs DATEV Kontenrahmen SKR 04 (Art.-Nr. 11175, p. 23), gültig für 2026 (no tax function there), and vs public oracle (2026-10-06)",
2186
+ "provenance": "own designation; number/purpose/position verified vs DATEV Kontenrahmen SKR 04 (Art.-Nr. 11175, p. 23), gültig für 2026 (no tax function there), and vs public oracle (2026-10-08)",
2173
2187
  "validFrom": 2026
2174
2188
  },
2175
2189
  {
@@ -2220,16 +2234,95 @@ export const SKR04_2026: IChart = {
2220
2234
  "provenance": "own designation; number/purpose verified vs DATEV Kontenrahmen SKR 03 (Art.-Nr. 11174) and SKR 04 (Art.-Nr. 11175), gültig für 2026 (no tax function there), and vs public oracle (2026-09-28)",
2221
2235
  "validFrom": 2026
2222
2236
  },
2237
+ {
2238
+ "accountNumber": "6640",
2239
+ "accountName": "Bewirtungskosten",
2240
+ "accountClass": 6,
2241
+ "accountType": "expense",
2242
+ "expenseRole": "business_meals",
2243
+ "hgb275Position": "GuV 8",
2244
+ "euer": {
2245
+ "kennzahl": 175
2246
+ },
2247
+ "provenance": "own designation; number/purpose/position verified vs DATEV Kontenrahmen SKR 04 (Art.-Nr. 11175, p. 24), gültig für 2026 (no tax function there), and vs public oracle (2026-10-08)",
2248
+ "validFrom": 2026
2249
+ },
2250
+ {
2251
+ "accountNumber": "6644",
2252
+ "accountName": "Nicht abzugsfähige Bewirtungskosten",
2253
+ "accountClass": 6,
2254
+ "accountType": "expense",
2255
+ "expenseRole": "business_meals_nondeductible",
2256
+ "hgb275Position": "GuV 8",
2257
+ "euer": {
2258
+ "kennzahl": 165
2259
+ },
2260
+ "provenance": "own designation; number/purpose/position verified vs DATEV Kontenrahmen SKR 04 (Art.-Nr. 11175, p. 24), gültig für 2026 (no tax function there), and vs public oracle (2026-10-08)",
2261
+ "validFrom": 2026
2262
+ },
2223
2263
  {
2224
2264
  "accountNumber": "6650",
2225
2265
  "accountName": "Reisekosten Arbeitnehmer",
2226
2266
  "accountClass": 6,
2227
2267
  "accountType": "expense",
2268
+ "expenseRole": "travel_employee",
2228
2269
  "hgb275Position": "GuV 8",
2229
2270
  "euer": {
2230
2271
  "kennzahl": 120
2231
2272
  },
2232
- "provenance": "own designation; number/purpose verified vs DATEV Kontenrahmen SKR 04 (Art.-Nr. 11175, p. 24), gültig für 2026 (no tax function there), and vs public oracle (2026-10-06)",
2273
+ "provenance": "own designation; number/purpose/position verified vs DATEV Kontenrahmen SKR 04 (Art.-Nr. 11175, p. 24), gültig für 2026 (no tax function there), and vs public oracle (2026-10-08)",
2274
+ "validFrom": 2026
2275
+ },
2276
+ {
2277
+ "accountNumber": "6660",
2278
+ "accountName": "Reisekosten Arbeitnehmer Übernachtungsaufwand",
2279
+ "accountClass": 6,
2280
+ "accountType": "expense",
2281
+ "expenseRole": "travel_employee_lodging",
2282
+ "hgb275Position": "GuV 8",
2283
+ "euer": {
2284
+ "kennzahl": 120
2285
+ },
2286
+ "provenance": "own designation; number/purpose/position verified vs DATEV Kontenrahmen SKR 04 (Art.-Nr. 11175, p. 24), gültig für 2026 (no tax function there), and vs public oracle (2026-10-08)",
2287
+ "validFrom": 2026
2288
+ },
2289
+ {
2290
+ "accountNumber": "6663",
2291
+ "accountName": "Reisekosten Arbeitnehmer Fahrtkosten",
2292
+ "accountClass": 6,
2293
+ "accountType": "expense",
2294
+ "expenseRole": "travel_employee_transport",
2295
+ "hgb275Position": "GuV 8",
2296
+ "euer": {
2297
+ "kennzahl": 120
2298
+ },
2299
+ "provenance": "own designation; number/purpose/position verified vs DATEV Kontenrahmen SKR 04 (Art.-Nr. 11175, p. 24), gültig für 2026 (no tax function there), and vs public oracle (2026-10-08)",
2300
+ "validFrom": 2026
2301
+ },
2302
+ {
2303
+ "accountNumber": "6664",
2304
+ "accountName": "Reisekosten Arbeitnehmer Verpflegungsmehraufwand",
2305
+ "accountClass": 6,
2306
+ "accountType": "expense",
2307
+ "expenseRole": "travel_employee_meals",
2308
+ "hgb275Position": "GuV 8",
2309
+ "euer": {
2310
+ "kennzahl": 120
2311
+ },
2312
+ "provenance": "own designation; number/purpose/position verified vs DATEV Kontenrahmen SKR 04 (Art.-Nr. 11175, p. 24), gültig für 2026 (no tax function there), and vs public oracle (2026-10-08)",
2313
+ "validFrom": 2026
2314
+ },
2315
+ {
2316
+ "accountNumber": "6668",
2317
+ "accountName": "Kilometergelderstattung Arbeitnehmer",
2318
+ "accountClass": 6,
2319
+ "accountType": "expense",
2320
+ "expenseRole": "mileage_employee",
2321
+ "hgb275Position": "GuV 8",
2322
+ "euer": {
2323
+ "kennzahl": 120
2324
+ },
2325
+ "provenance": "own designation; number/purpose/position verified vs DATEV Kontenrahmen SKR 04 (Art.-Nr. 11175, p. 24), gültig für 2026 (no tax function there), and vs public oracle (2026-10-08)",
2233
2326
  "validFrom": 2026
2234
2327
  },
2235
2328
  {
@@ -2249,11 +2342,12 @@ export const SKR04_2026: IChart = {
2249
2342
  "accountName": "Porto",
2250
2343
  "accountClass": 6,
2251
2344
  "accountType": "expense",
2345
+ "expenseRole": "postage",
2252
2346
  "hgb275Position": "GuV 8",
2253
2347
  "euer": {
2254
2348
  "kennzahl": 229
2255
2349
  },
2256
- "provenance": "own designation; number/purpose verified vs public oracle (2026-07-09); pending official DATEV table verification",
2350
+ "provenance": "own designation; number/purpose/position verified vs DATEV Kontenrahmen SKR 04 (Art.-Nr. 11175, p. 24), gültig für 2026 (no tax function there), and vs public oracle (2026-10-08)",
2257
2351
  "validFrom": 2026
2258
2352
  },
2259
2353
  {
@@ -2285,11 +2379,25 @@ export const SKR04_2026: IChart = {
2285
2379
  "accountName": "Bürobedarf",
2286
2380
  "accountClass": 6,
2287
2381
  "accountType": "expense",
2382
+ "expenseRole": "office_supplies",
2288
2383
  "hgb275Position": "GuV 8",
2289
2384
  "euer": {
2290
2385
  "kennzahl": 229
2291
2386
  },
2292
- "provenance": "own designation; number/purpose verified vs DATEV Kontenrahmen SKR 04 (Art.-Nr. 11175, p. 24), gültig für 2026 (no tax function there), and vs public oracle (2026-10-06)",
2387
+ "provenance": "own designation; number/purpose/position verified vs DATEV Kontenrahmen SKR 04 (Art.-Nr. 11175, p. 24), gültig für 2026 (no tax function there), and vs public oracle (2026-10-08)",
2388
+ "validFrom": 2026
2389
+ },
2390
+ {
2391
+ "accountNumber": "6820",
2392
+ "accountName": "Zeitschriften, Bücher, digitale Medien (Fachliteratur)",
2393
+ "accountClass": 6,
2394
+ "accountType": "expense",
2395
+ "expenseRole": "literature",
2396
+ "hgb275Position": "GuV 8",
2397
+ "euer": {
2398
+ "kennzahl": 229
2399
+ },
2400
+ "provenance": "own designation; number/purpose/position verified vs DATEV Kontenrahmen SKR 04 (Art.-Nr. 11175, p. 24), gültig für 2026 (no tax function there), and vs public oracle (2026-10-08)",
2293
2401
  "validFrom": 2026
2294
2402
  },
2295
2403
  {
@@ -2297,11 +2405,12 @@ export const SKR04_2026: IChart = {
2297
2405
  "accountName": "Fortbildungskosten",
2298
2406
  "accountClass": 6,
2299
2407
  "accountType": "expense",
2408
+ "expenseRole": "training",
2300
2409
  "hgb275Position": "GuV 8",
2301
2410
  "euer": {
2302
2411
  "kennzahl": 281
2303
2412
  },
2304
- "provenance": "own designation; number/purpose verified vs DATEV Kontenrahmen SKR 04 (Art.-Nr. 11175, p. 24), gültig für 2026 (no tax function there), and vs public oracle (2026-10-06)",
2413
+ "provenance": "own designation; number/purpose/position verified vs DATEV Kontenrahmen SKR 04 (Art.-Nr. 11175, p. 24), gültig für 2026 (no tax function there), and vs public oracle (2026-10-08)",
2305
2414
  "validFrom": 2026
2306
2415
  },
2307
2416
  {