@fin.cx/chartdata 3.0.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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fin.cx/chartdata",
3
- "version": "3.0.0",
3
+ "version": "3.2.0",
4
4
  "private": false,
5
5
  "description": "Year-versioned German SKR03/SKR04 chart-of-accounts datasets with Automatikkonto functions, BU-key rules, UStVA-Kennzahl and Anlage EÜR mappings",
6
6
  "main": "dist_ts/index.js",
package/readme.md CHANGED
@@ -38,6 +38,10 @@ For reporting bugs, issues, or security vulnerabilities, please visit [community
38
38
  of a payroll until they are paid, the company-car benefit and the levy
39
39
  refunds, and the clearing account, one account per role, found with
40
40
  `getPayrollAccount`
41
+ - Expense accounts with their expense role (`expenseRole`): an employee's
42
+ travel, the business's other expenses an employee lays out and claims back,
43
+ and the Kreditkartenabrechnung, one account per role, found with
44
+ `getExpenseAccount`
41
45
  - DATEV's mark "HB" (`commercialOnly`): an account posted in the commercial
42
46
  balance sheet only
43
47
  - The tax rule an income or expense account is kept for (`taxRule`):
@@ -217,6 +221,51 @@ Nebenkosten" (Anleitung 2026); the company-car benefit is a taxable receipt
217
221
  (Kz 112), the levy refunds a non-taxable one (Kz 103). An individual account
218
222
  takes no payroll role: a role names the DATEV account.
219
223
 
224
+ ### Expense claims
225
+
226
+ An expense claim (Reisekostenabrechnung, Auslagenersatz) finds the accounts of
227
+ its lines by the expense role; within a chart each role names one account, and
228
+ every role has its account in both standard charts. None of them carries a tax
229
+ function: a receipt's input VAT is booked by BU key. The claim is settled
230
+ through the payroll role `clearing` (the Lohn- und Gehaltsverrechnungskonto),
231
+ which takes no expense role.
232
+
233
+ ```typescript
234
+ import { getExpenseAccount } from '@fin.cx/chartdata';
235
+
236
+ getExpenseAccount('SKR03', 2026, 'travel_employee_meals')?.accountNumber; // '4664' Reisekosten Arbeitnehmer Verpflegungsmehraufwand
237
+ getExpenseAccount('SKR04', 2026, 'business_meals_nondeductible')?.euer; // { kennzahl: 165 }
238
+ getExpenseAccount('SKR04', 2026, 'credit_card_settlement')?.hgb266Position; // 'Passiva C.8'
239
+ ```
240
+
241
+ | Role | What it books | SKR03 | SKR04 | Anlage EÜR |
242
+ | --- | --- | --- | --- | --- |
243
+ | `travel_employee` | Reisekosten Arbeitnehmer: travel costs of no other role, such as parking and tolls | 4660 | 6650 | Kz 120 |
244
+ | `travel_employee_transport` | Fahrtkosten: tickets, taxis, a hired car and its fuel | 4663 | 6663 | Kz 120 |
245
+ | `travel_employee_meals` | Verpflegungsmehraufwand | 4664 | 6664 | Kz 120 |
246
+ | `travel_employee_lodging` | Übernachtungsaufwand | 4666 | 6660 | Kz 120 |
247
+ | `mileage_employee` | Kilometergelderstattung Arbeitnehmer | 4668 | 6668 | Kz 120 |
248
+ | `business_meals` | Bewirtungskosten, the deductible 70 % | 4650 | 6640 | Kz 175 |
249
+ | `business_meals_nondeductible` | nicht abzugsfähige Bewirtungskosten, the other 30 % | 4654 | 6644 | Kz 165 |
250
+ | `vehicle_running_costs` | Laufende Fahrzeug-Betriebskosten: a company car's fuel | 4530 | 6530 | Kz 146 |
251
+ | `office_supplies` | Bürobedarf | 4930 | 6815 | Kz 229 |
252
+ | `postage` | Porto | 4910 | 6800 | Kz 229 |
253
+ | `literature` | Zeitschriften, Bücher, digitale Medien (Fachliteratur) | 4940 | 6820 | Kz 229 |
254
+ | `training` | Fortbildungskosten | 4945 | 6821 | Kz 281 |
255
+ | `software` | software licensed or subscribed to (Wartungskosten für Hard- und Software) | 4806 | 6495 | Kz 228 |
256
+ | `other_operating_expenses` | Sonstige betriebliche Aufwendungen | 4900 | 6300 | Kz 183 |
257
+ | `credit_card_settlement` | Kreditkartenabrechnung, a balance (Passiva C.8) | 1730 | 3610 | balance |
258
+
259
+ The expenses stand under the other operating expenses (GuV 8). An employee's
260
+ travel goes with the staff in the Anlage EÜR (Zeile 31): "Aufwendungen für
261
+ Reisen von Arbeitnehmern sind in Zeile 31 zu erfassen" (Anleitung 2026,
262
+ Zeile 45). Software books on DATEV's Wartungskosten für Hard- und Software,
263
+ the running EDV costs of the Anlage EÜR (Zeile 51), not on the licences of
264
+ rights (SKR03 4964, SKR04 6837), which DATEV's trade tax program adds back in
265
+ part (§ 8 Nr. 1 f GewStG); the books book a licence of a right there
266
+ themselves. An individual account takes no expense role: a role names the
267
+ DATEV account.
268
+
220
269
  ### Individual accounts
221
270
 
222
271
  The books may set up accounts of their own (Individualkonten) on the numbers
@@ -275,7 +324,7 @@ books.getMappingCoverage(usedAccountNumbers, 'hgb275');
275
324
  A `BooksChart` is a chart (`IChart`) with the lookups of the chart over the
276
325
  DATEV accounts and the books' own: `getAccount`, `getAccountsByRole`,
277
326
  `getAccountsBySecuritiesRole`, `getSecuritiesAccount`, `getPayrollAccount`,
278
- `getMappingCoverage`, `getEuerLines`.
327
+ `getExpenseAccount`, `getMappingCoverage`, `getEuerLines`.
279
328
 
280
329
  `INDIVIDUAL_ACCOUNT_TEMPLATES` suggests the parent and name of the results the
281
330
  law keeps apart: the gains and losses of Termingeschäfte, which § 15 Abs. 4
@@ -3,6 +3,6 @@
3
3
  */
4
4
  export const commitinfo = {
5
5
  name: '@fin.cx/chartdata',
6
- version: '3.0.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
  /**
@@ -252,12 +252,52 @@ export const SKR03_2026: IChart = {
252
252
  },
253
253
  {
254
254
  "accountNumber": "1210",
255
+ "accountName": "Bank 1",
256
+ "accountClass": 1,
257
+ "accountType": "asset",
258
+ "hgb266Position": "Aktiva B.IV",
259
+ "euerExclusion": "balance_sheet",
260
+ "provenance": "own designation; number/purpose verified vs DATEV Kontenrahmen SKR 03 (Art.-Nr. 11174, p. 6) and SKR 04 (Art.-Nr. 11175, p. 6), gültig für 2026, and vs public oracle (2026-10-07)",
261
+ "validFrom": 2026
262
+ },
263
+ {
264
+ "accountNumber": "1220",
255
265
  "accountName": "Bank 2",
256
266
  "accountClass": 1,
257
267
  "accountType": "asset",
258
268
  "hgb266Position": "Aktiva B.IV",
259
269
  "euerExclusion": "balance_sheet",
260
- "provenance": "skr-convention account (outside oracle subset), own designation (2026-07-09)",
270
+ "provenance": "own designation; number/purpose verified vs DATEV Kontenrahmen SKR 03 (Art.-Nr. 11174, p. 6) and SKR 04 (Art.-Nr. 11175, p. 6), gültig für 2026, and vs public oracle (2026-10-07)",
271
+ "validFrom": 2026
272
+ },
273
+ {
274
+ "accountNumber": "1230",
275
+ "accountName": "Bank 3",
276
+ "accountClass": 1,
277
+ "accountType": "asset",
278
+ "hgb266Position": "Aktiva B.IV",
279
+ "euerExclusion": "balance_sheet",
280
+ "provenance": "own designation; number/purpose verified vs DATEV Kontenrahmen SKR 03 (Art.-Nr. 11174, p. 6) and SKR 04 (Art.-Nr. 11175, p. 6), gültig für 2026, and vs public oracle (2026-10-07)",
281
+ "validFrom": 2026
282
+ },
283
+ {
284
+ "accountNumber": "1240",
285
+ "accountName": "Bank 4",
286
+ "accountClass": 1,
287
+ "accountType": "asset",
288
+ "hgb266Position": "Aktiva B.IV",
289
+ "euerExclusion": "balance_sheet",
290
+ "provenance": "own designation; number/purpose verified vs DATEV Kontenrahmen SKR 03 (Art.-Nr. 11174, p. 6) and SKR 04 (Art.-Nr. 11175, p. 6), gültig für 2026, and vs public oracle (2026-10-07)",
291
+ "validFrom": 2026
292
+ },
293
+ {
294
+ "accountNumber": "1250",
295
+ "accountName": "Bank 5",
296
+ "accountClass": 1,
297
+ "accountType": "asset",
298
+ "hgb266Position": "Aktiva B.IV",
299
+ "euerExclusion": "balance_sheet",
300
+ "provenance": "own designation; number/purpose verified vs DATEV Kontenrahmen SKR 03 (Art.-Nr. 11174, p. 6) and SKR 04 (Art.-Nr. 11175, p. 6), gültig für 2026, and vs public oracle (2026-10-07)",
261
301
  "validFrom": 2026
262
302
  },
263
303
  {
@@ -600,6 +640,17 @@ export const SKR03_2026: IChart = {
600
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)",
601
641
  "validFrom": 2026
602
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
+ },
603
654
  {
604
655
  "accountNumber": "1740",
605
656
  "accountName": "Verbindlichkeiten aus Lohn und Gehalt",
@@ -925,6 +976,30 @@ export const SKR03_2026: IChart = {
925
976
  "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-29)",
926
977
  "validFrom": 2026
927
978
  },
979
+ {
980
+ "accountNumber": "2200",
981
+ "accountName": "Körperschaftsteuer",
982
+ "accountClass": 2,
983
+ "accountType": "expense",
984
+ "hgb275Position": "GuV 14",
985
+ "euer": {
986
+ "kennzahl": 168
987
+ },
988
+ "provenance": "own designation; number/purpose verified vs DATEV Kontenrahmen SKR 03 (Art.-Nr. 11174, pp. 14, 23) and SKR 04 (Art.-Nr. 11175, p. 28), gültig für 2026 (no tax function there), and vs public oracle (2026-10-07)",
989
+ "validFrom": 2026
990
+ },
991
+ {
992
+ "accountNumber": "2208",
993
+ "accountName": "Solidaritätszuschlag",
994
+ "accountClass": 2,
995
+ "accountType": "expense",
996
+ "hgb275Position": "GuV 14",
997
+ "euer": {
998
+ "kennzahl": 168
999
+ },
1000
+ "provenance": "own designation; number/purpose verified vs DATEV Kontenrahmen SKR 03 (Art.-Nr. 11174, pp. 14, 23) and SKR 04 (Art.-Nr. 11175, p. 28), gültig für 2026 (no tax function there), and vs public oracle (2026-10-07)",
1001
+ "validFrom": 2026
1002
+ },
928
1003
  {
929
1004
  "accountNumber": "2213",
930
1005
  "accountName": "Kapitalertragsteuer 25 %",
@@ -1745,6 +1820,18 @@ export const SKR03_2026: IChart = {
1745
1820
  "provenance": "own designation; number/purpose verified vs public oracle (2026-07-09); pending official DATEV table verification",
1746
1821
  "validFrom": 2026
1747
1822
  },
1823
+ {
1824
+ "accountNumber": "4320",
1825
+ "accountName": "Gewerbesteuer",
1826
+ "accountClass": 4,
1827
+ "accountType": "expense",
1828
+ "hgb275Position": "GuV 14",
1829
+ "euer": {
1830
+ "kennzahl": 168
1831
+ },
1832
+ "provenance": "own designation; number/purpose verified vs DATEV Kontenrahmen SKR 03 (Art.-Nr. 11174, pp. 14, 23) and SKR 04 (Art.-Nr. 11175, p. 28), gültig für 2026 (no tax function there), and vs public oracle (2026-10-07)",
1833
+ "validFrom": 2026
1834
+ },
1748
1835
  {
1749
1836
  "accountNumber": "4360",
1750
1837
  "accountName": "Versicherungen",
@@ -1781,6 +1868,19 @@ export const SKR03_2026: IChart = {
1781
1868
  "provenance": "own designation; number/purpose verified vs public oracle (2026-07-09); pending official DATEV table verification",
1782
1869
  "validFrom": 2026
1783
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
+ },
1784
1884
  {
1785
1885
  "accountNumber": "4600",
1786
1886
  "accountName": "Werbekosten",
@@ -1822,11 +1922,90 @@ export const SKR03_2026: IChart = {
1822
1922
  "accountName": "Bewirtungskosten",
1823
1923
  "accountClass": 4,
1824
1924
  "accountType": "expense",
1925
+ "expenseRole": "business_meals",
1825
1926
  "hgb275Position": "GuV 8",
1826
1927
  "euer": {
1827
1928
  "kennzahl": 175
1828
1929
  },
1829
- "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)",
1830
2009
  "validFrom": 2026
1831
2010
  },
1832
2011
  {
@@ -1870,11 +2049,12 @@ export const SKR03_2026: IChart = {
1870
2049
  "accountName": "Wartungskosten für Hard- und Software",
1871
2050
  "accountClass": 4,
1872
2051
  "accountType": "expense",
2052
+ "expenseRole": "software",
1873
2053
  "hgb275Position": "GuV 8",
1874
2054
  "euer": {
1875
2055
  "kennzahl": 228
1876
2056
  },
1877
- "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)",
1878
2058
  "validFrom": 2026
1879
2059
  },
1880
2060
  {
@@ -1963,11 +2143,12 @@ export const SKR03_2026: IChart = {
1963
2143
  "accountName": "Sonstige betriebliche Aufwendungen",
1964
2144
  "accountClass": 4,
1965
2145
  "accountType": "expense",
2146
+ "expenseRole": "other_operating_expenses",
1966
2147
  "hgb275Position": "GuV 8",
1967
2148
  "euer": {
1968
2149
  "kennzahl": 183
1969
2150
  },
1970
- "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)",
1971
2152
  "validFrom": 2026
1972
2153
  },
1973
2154
  {
@@ -1975,11 +2156,12 @@ export const SKR03_2026: IChart = {
1975
2156
  "accountName": "Porto",
1976
2157
  "accountClass": 4,
1977
2158
  "accountType": "expense",
2159
+ "expenseRole": "postage",
1978
2160
  "hgb275Position": "GuV 8",
1979
2161
  "euer": {
1980
2162
  "kennzahl": 229
1981
2163
  },
1982
- "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)",
1983
2165
  "validFrom": 2026
1984
2166
  },
1985
2167
  {
@@ -2011,11 +2193,12 @@ export const SKR03_2026: IChart = {
2011
2193
  "accountName": "Bürobedarf",
2012
2194
  "accountClass": 4,
2013
2195
  "accountType": "expense",
2196
+ "expenseRole": "office_supplies",
2014
2197
  "hgb275Position": "GuV 8",
2015
2198
  "euer": {
2016
2199
  "kennzahl": 229
2017
2200
  },
2018
- "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)",
2019
2202
  "validFrom": 2026
2020
2203
  },
2021
2204
  {
@@ -2023,11 +2206,12 @@ export const SKR03_2026: IChart = {
2023
2206
  "accountName": "Zeitschriften, Bücher, digitale Medien (Fachliteratur)",
2024
2207
  "accountClass": 4,
2025
2208
  "accountType": "expense",
2209
+ "expenseRole": "literature",
2026
2210
  "hgb275Position": "GuV 8",
2027
2211
  "euer": {
2028
2212
  "kennzahl": 229
2029
2213
  },
2030
- "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)",
2031
2215
  "validFrom": 2026
2032
2216
  },
2033
2217
  {
@@ -2035,11 +2219,12 @@ export const SKR03_2026: IChart = {
2035
2219
  "accountName": "Fortbildungskosten",
2036
2220
  "accountClass": 4,
2037
2221
  "accountType": "expense",
2222
+ "expenseRole": "training",
2038
2223
  "hgb275Position": "GuV 8",
2039
2224
  "euer": {
2040
2225
  "kennzahl": 281
2041
2226
  },
2042
- "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)",
2043
2228
  "validFrom": 2026
2044
2229
  },
2045
2230
  {