@fin.cx/tax 1.1.0 → 2.1.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/dist_ts/00_commitinfo_data.js +1 -1
- package/dist_ts/index.d.ts +2 -0
- package/dist_ts/index.js +3 -1
- package/dist_ts/rates.d.ts +112 -0
- package/dist_ts/rates.js +136 -0
- package/dist_ts/ustva.accounts.d.ts +3 -1
- package/dist_ts/ustva.accounts.js +4 -2
- package/dist_ts/ustva.d.ts +17 -0
- package/dist_ts/ustva.js +33 -6
- package/dist_ts/ustva.types.d.ts +6 -0
- package/dist_ts/zm.d.ts +92 -0
- package/dist_ts/zm.js +100 -0
- package/package.json +6 -6
- package/readme.md +25 -2
- package/ts/00_commitinfo_data.ts +1 -1
- package/ts/index.ts +2 -0
- package/ts/rates.ts +180 -0
- package/ts/ustva.accounts.ts +6 -2
- package/ts/ustva.ts +36 -5
- package/ts/ustva.types.ts +6 -0
- package/ts/zm.ts +166 -0
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
export const commitinfo = {
|
|
5
5
|
name: '@fin.cx/tax',
|
|
6
|
-
version: '
|
|
6
|
+
version: '2.1.0',
|
|
7
7
|
description: 'German tax computation engine: UStVA Kennzahl aggregation from ledger balances with form rounding, Zahllast and reconciliation checks — exact cents'
|
|
8
8
|
};
|
|
9
9
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMDBfY29tbWl0aW5mb19kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvMDBfY29tbWl0aW5mb19kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHO0lBQ3hCLElBQUksRUFBRSxhQUFhO0lBQ25CLE9BQU8sRUFBRSxPQUFPO0lBQ2hCLFdBQVcsRUFBRSxxSkFBcUo7Q0FDbkssQ0FBQSJ9
|
package/dist_ts/index.d.ts
CHANGED
package/dist_ts/index.js
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
export * from './ustva.types.js';
|
|
2
2
|
export * from './ustva.accounts.js';
|
|
3
3
|
export * from './ustva.js';
|
|
4
|
-
|
|
4
|
+
export * from './zm.js';
|
|
5
|
+
export * from './rates.js';
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyxZQUFZLENBQUM7QUFDM0IsY0FBYyxTQUFTLENBQUM7QUFDeEIsY0FBYyxZQUFZLENBQUMifQ==
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The rates of German VAT, dated: which rates German law sets for a supply
|
|
3
|
+
* carried out on a day, and the transition rules the administration granted
|
|
4
|
+
* around the rate changes of 2020 and 2021. The rate in force when the supply
|
|
5
|
+
* is carried out applies (§ 27 Abs. 1 Satz 1 UStG).
|
|
6
|
+
*/
|
|
7
|
+
/** A rate German law sets for a supply, and the days it applies to: from `from`, until `to` inclusive when it ended. */
|
|
8
|
+
export interface IGermanVatRate {
|
|
9
|
+
ratePercent: number;
|
|
10
|
+
/** `YYYY-MM-DD` */
|
|
11
|
+
from: string;
|
|
12
|
+
/** `YYYY-MM-DD`, inclusive; absent while the rate is in force */
|
|
13
|
+
to?: string;
|
|
14
|
+
/** the rate this is: the general rate, the reduced rate, the 0 % of § 12 Abs. 3 UStG, or an average rate of § 24 Abs. 1 Satz 1 UStG by its number */
|
|
15
|
+
provision: 'general' | 'reduced' | 'zero' | 'average_nr1' | 'average_nr2' | 'average_nr3';
|
|
16
|
+
/** the provision that sets the rate for these days, and the act that set it */
|
|
17
|
+
basis: string;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* The rates of German VAT, dated. The table begins on 2007-01-01.
|
|
21
|
+
* - The general rate, 19 % (§ 12 Abs. 1 UStG, since Art. 4 Nr. 1
|
|
22
|
+
* Haushaltsbegleitgesetz 2006, BGBl. I S. 1402, from 2007-01-01), and the
|
|
23
|
+
* reduced rate, 7 % (§ 12 Abs. 2 UStG). From 2020-07-01 to 2020-12-31, 16 %
|
|
24
|
+
* and 5 % in their place (§ 28 Abs. 1, 2 UStG, Art. 3 Zweites
|
|
25
|
+
* Corona-Steuerhilfegesetz, BGBl. I 2020 S. 1512).
|
|
26
|
+
* - § 24 Abs. 1 Satz 1 Nr. 2 UStG (Sägewerkserzeugnisse, Getränke and
|
|
27
|
+
* alkoholische Flüssigkeiten of a farmer or forester taxed by average
|
|
28
|
+
* rates): 19 %, the rate it states as read on gesetze-im-internet.de on
|
|
29
|
+
* 2026-09-27; 16 % from 2020-07-01 to 2020-12-31 (§ 24 Abs. 1 Satz 1 Nr. 2
|
|
30
|
+
* i. V. m. § 28 Abs. 3 UStG, Art. 3 Zweites Corona-Steuerhilfegesetz, BGBl. I
|
|
31
|
+
* 2020 S. 1512, as the BMF letter of 30 June 2020, Rz. 1, cites it; the act's
|
|
32
|
+
* own text was not read). That 19 % applied from 2007-01-01 is not verified
|
|
33
|
+
* from the amending act: the table starts it there with the general rate.
|
|
34
|
+
* - The average rates of § 24 Abs. 1 Satz 1 UStG, at which a farmer or
|
|
35
|
+
* forester taxed by them charges VAT on the invoice; the recipient deducts
|
|
36
|
+
* it as input tax (§ 15 Abs. 1 Satz 1 Nr. 1 UStG). Each from the amending
|
|
37
|
+
* act's text:
|
|
38
|
+
* - Nr. 1, forestry products: 5,5 % from 2007-01-01 (Art. 4 Nr. 2
|
|
39
|
+
* Buchst. a Doppelbuchst. aa Haushaltsbegleitgesetz 2006, "5 Prozent"
|
|
40
|
+
* replaced by "5,5 Prozent"); unchanged since.
|
|
41
|
+
* - Nr. 3, the other supplies: 10,7 % from 2007-01-01 (the same, Doppelbuchst.
|
|
42
|
+
* cc, "9 Prozent" by "10,7 Prozent"); 9,5 % from 2022-01-01 (Art. 1 Nr. 5
|
|
43
|
+
* Gesetz zur Umsetzung unionsrechtlicher Vorgaben im Umsatzsteuerrecht of
|
|
44
|
+
* 21.12.2021, BGBl. I S. 5250); 9,0 % from 2023-01-01 (Art. 12 Nr. 3 Achtes
|
|
45
|
+
* Gesetz zur Änderung von Verbrauchsteuergesetzen of 24.10.2022, BGBl. I
|
|
46
|
+
* S. 1838); 8,4 % from 2024-12-06 (Art. 24 Nr. 13 Jahressteuergesetz 2024
|
|
47
|
+
* of 02.12.2024, BGBl. 2024 I Nr. 387, in force the day after its
|
|
48
|
+
* promulgation on 2024-12-05, Art. 56 Abs. 1); 7,8 % from 2025-01-01
|
|
49
|
+
* (Art. 25 Nr. 21 of the same, Art. 56 Abs. 7), the rate § 24 Abs. 1 Satz 1
|
|
50
|
+
* Nr. 3 UStG states as read on gesetze-im-internet.de on 2026-09-25.
|
|
51
|
+
* - 0 % for the supplies of § 12 Abs. 3 UStG (photovoltaic installations:
|
|
52
|
+
* the modules and components delivered to their operator, their
|
|
53
|
+
* intra-Community acquisition, import and installation) from 2023-01-01
|
|
54
|
+
* (Art. 16 Nr. 5 Jahressteuergesetz 2022 of 16.12.2022, BGBl. I S. 2294,
|
|
55
|
+
* in force on 2023-01-01 by its Art. 43; the amending text as read on
|
|
56
|
+
* buzer.de on 2026-09-28, § 12 Abs. 3 as read on gesetze-im-internet.de).
|
|
57
|
+
*/
|
|
58
|
+
export declare const GERMAN_VAT_RATES: readonly IGermanVatRate[];
|
|
59
|
+
/**
|
|
60
|
+
* The rates of German VAT for a supply carried out on a day (`YYYY-MM-DD`),
|
|
61
|
+
* each once, in the order of `GERMAN_VAT_RATES`. `undefined` for a day before
|
|
62
|
+
* the table begins (2007-01-01): the table holds no law for it.
|
|
63
|
+
*/
|
|
64
|
+
export declare function germanVatRatesOn(dayArg: string): readonly number[] | undefined;
|
|
65
|
+
/**
|
|
66
|
+
* A rate the administration names for some supplies of some days around a
|
|
67
|
+
* change of the rates, with its source and the supplies it covers. Whether a
|
|
68
|
+
* supply is one of them is a fact the caller states; this table cannot tell.
|
|
69
|
+
*/
|
|
70
|
+
export interface IGermanVatRateConcession {
|
|
71
|
+
ratePercent: number;
|
|
72
|
+
/**
|
|
73
|
+
* `required`: the letter says the rate is to be applied ("sind … anzuwenden");
|
|
74
|
+
* `accepted`: the letter allows it or does not object to it ("wird
|
|
75
|
+
* zugelassen", "wird nicht beanstandet"), and the law's rate of the day may be
|
|
76
|
+
* applied as well.
|
|
77
|
+
*/
|
|
78
|
+
standing: 'required' | 'accepted';
|
|
79
|
+
/** `YYYY-MM-DD` */
|
|
80
|
+
from: string;
|
|
81
|
+
/** `YYYY-MM-DD`, inclusive */
|
|
82
|
+
to: string;
|
|
83
|
+
/** the BMF letter, its GZ and its Rz. */
|
|
84
|
+
source: string;
|
|
85
|
+
/** the supplies it covers, and what it allows */
|
|
86
|
+
covers: string;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* The transition rules of the administration around the rate changes of
|
|
90
|
+
* 1 July 2020 and 1 January 2021, each read in the letter itself (the copies of
|
|
91
|
+
* 8 July 2020 and 5 November 2020 in the Internet Archive of the PDFs on
|
|
92
|
+
* bundesfinanzministerium.de, read 2026-09-27):
|
|
93
|
+
* - Rz. 44 of the letter of 30 June 2020 allows the new rates on
|
|
94
|
+
* Bewirtungsleistungen in the night of 30 June to 1 July 2020 (accepted), and
|
|
95
|
+
* Rz. 22 of the letter of 4 November 2020 requires them on Beherbergungen of
|
|
96
|
+
* that night (required), which Rz. 44 had left out.
|
|
97
|
+
* - Rz. 46 of the letter of 30 June 2020 accepts the old rates, 19 and
|
|
98
|
+
* 7 percent, on supplies to entrepreneurs in July 2020, with the input tax
|
|
99
|
+
* deduction of the stated tax.
|
|
100
|
+
* - Rz. 22 of the letter of 4 November 2020 allows 16 and 5 percent on
|
|
101
|
+
* Bewirtungsleistungen and Beherbergungen in the night of 31 December 2020
|
|
102
|
+
* to 1 January 2021.
|
|
103
|
+
* Not here: Rz. 47 of the letter of 30 June 2020 applies its rules "entsprechend"
|
|
104
|
+
* to the rise on 1 January 2021; the letters grant no deduction of 16 or
|
|
105
|
+
* 5 percent stated on a supply of January 2021 beyond the night above, except
|
|
106
|
+
* for advance payment invoices issued before 2021 (4 November 2020, Rz. 1 and
|
|
107
|
+
* 2), whose case needs the invoice's date. No letter on the § 24 changes of
|
|
108
|
+
* 2022, 2023, 2024-12-06 and 2025 was found.
|
|
109
|
+
*/
|
|
110
|
+
export declare const GERMAN_VAT_RATE_CONCESSIONS: readonly IGermanVatRateConcession[];
|
|
111
|
+
/** The transition rules that cover a day of supply (`YYYY-MM-DD`), in the order of `GERMAN_VAT_RATE_CONCESSIONS`. */
|
|
112
|
+
export declare function germanVatRateConcessionsOn(dayArg: string): readonly IGermanVatRateConcession[];
|
package/dist_ts/rates.js
ADDED
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The rates of German VAT, dated: which rates German law sets for a supply
|
|
3
|
+
* carried out on a day, and the transition rules the administration granted
|
|
4
|
+
* around the rate changes of 2020 and 2021. The rate in force when the supply
|
|
5
|
+
* is carried out applies (§ 27 Abs. 1 Satz 1 UStG).
|
|
6
|
+
*/
|
|
7
|
+
const GENERAL = '§ 12 Abs. 1 UStG (Art. 4 Nr. 1 Haushaltsbegleitgesetz 2006, BGBl. I S. 1402)';
|
|
8
|
+
const REDUCED = '§ 12 Abs. 2 UStG';
|
|
9
|
+
const TEMPORARY = '§ 28 Abs. 1, 2 UStG (Art. 3 Zweites Corona-Steuerhilfegesetz, BGBl. I 2020 S. 1512)';
|
|
10
|
+
const SPECIAL_AVERAGE = '§ 24 Abs. 1 Satz 1 Nr. 2 UStG';
|
|
11
|
+
const FORESTRY = '§ 24 Abs. 1 Satz 1 Nr. 1 UStG (Art. 4 Nr. 2 Buchst. a Doppelbuchst. aa Haushaltsbegleitgesetz 2006)';
|
|
12
|
+
const AVERAGE_OTHER = '§ 24 Abs. 1 Satz 1 Nr. 3 UStG';
|
|
13
|
+
const ZERO = '§ 12 Abs. 3 UStG (Art. 16 Nr. 5 Jahressteuergesetz 2022 vom 16.12.2022, BGBl. I S. 2294, in force 2023-01-01 by its Art. 43)';
|
|
14
|
+
/**
|
|
15
|
+
* The rates of German VAT, dated. The table begins on 2007-01-01.
|
|
16
|
+
* - The general rate, 19 % (§ 12 Abs. 1 UStG, since Art. 4 Nr. 1
|
|
17
|
+
* Haushaltsbegleitgesetz 2006, BGBl. I S. 1402, from 2007-01-01), and the
|
|
18
|
+
* reduced rate, 7 % (§ 12 Abs. 2 UStG). From 2020-07-01 to 2020-12-31, 16 %
|
|
19
|
+
* and 5 % in their place (§ 28 Abs. 1, 2 UStG, Art. 3 Zweites
|
|
20
|
+
* Corona-Steuerhilfegesetz, BGBl. I 2020 S. 1512).
|
|
21
|
+
* - § 24 Abs. 1 Satz 1 Nr. 2 UStG (Sägewerkserzeugnisse, Getränke and
|
|
22
|
+
* alkoholische Flüssigkeiten of a farmer or forester taxed by average
|
|
23
|
+
* rates): 19 %, the rate it states as read on gesetze-im-internet.de on
|
|
24
|
+
* 2026-09-27; 16 % from 2020-07-01 to 2020-12-31 (§ 24 Abs. 1 Satz 1 Nr. 2
|
|
25
|
+
* i. V. m. § 28 Abs. 3 UStG, Art. 3 Zweites Corona-Steuerhilfegesetz, BGBl. I
|
|
26
|
+
* 2020 S. 1512, as the BMF letter of 30 June 2020, Rz. 1, cites it; the act's
|
|
27
|
+
* own text was not read). That 19 % applied from 2007-01-01 is not verified
|
|
28
|
+
* from the amending act: the table starts it there with the general rate.
|
|
29
|
+
* - The average rates of § 24 Abs. 1 Satz 1 UStG, at which a farmer or
|
|
30
|
+
* forester taxed by them charges VAT on the invoice; the recipient deducts
|
|
31
|
+
* it as input tax (§ 15 Abs. 1 Satz 1 Nr. 1 UStG). Each from the amending
|
|
32
|
+
* act's text:
|
|
33
|
+
* - Nr. 1, forestry products: 5,5 % from 2007-01-01 (Art. 4 Nr. 2
|
|
34
|
+
* Buchst. a Doppelbuchst. aa Haushaltsbegleitgesetz 2006, "5 Prozent"
|
|
35
|
+
* replaced by "5,5 Prozent"); unchanged since.
|
|
36
|
+
* - Nr. 3, the other supplies: 10,7 % from 2007-01-01 (the same, Doppelbuchst.
|
|
37
|
+
* cc, "9 Prozent" by "10,7 Prozent"); 9,5 % from 2022-01-01 (Art. 1 Nr. 5
|
|
38
|
+
* Gesetz zur Umsetzung unionsrechtlicher Vorgaben im Umsatzsteuerrecht of
|
|
39
|
+
* 21.12.2021, BGBl. I S. 5250); 9,0 % from 2023-01-01 (Art. 12 Nr. 3 Achtes
|
|
40
|
+
* Gesetz zur Änderung von Verbrauchsteuergesetzen of 24.10.2022, BGBl. I
|
|
41
|
+
* S. 1838); 8,4 % from 2024-12-06 (Art. 24 Nr. 13 Jahressteuergesetz 2024
|
|
42
|
+
* of 02.12.2024, BGBl. 2024 I Nr. 387, in force the day after its
|
|
43
|
+
* promulgation on 2024-12-05, Art. 56 Abs. 1); 7,8 % from 2025-01-01
|
|
44
|
+
* (Art. 25 Nr. 21 of the same, Art. 56 Abs. 7), the rate § 24 Abs. 1 Satz 1
|
|
45
|
+
* Nr. 3 UStG states as read on gesetze-im-internet.de on 2026-09-25.
|
|
46
|
+
* - 0 % for the supplies of § 12 Abs. 3 UStG (photovoltaic installations:
|
|
47
|
+
* the modules and components delivered to their operator, their
|
|
48
|
+
* intra-Community acquisition, import and installation) from 2023-01-01
|
|
49
|
+
* (Art. 16 Nr. 5 Jahressteuergesetz 2022 of 16.12.2022, BGBl. I S. 2294,
|
|
50
|
+
* in force on 2023-01-01 by its Art. 43; the amending text as read on
|
|
51
|
+
* buzer.de on 2026-09-28, § 12 Abs. 3 as read on gesetze-im-internet.de).
|
|
52
|
+
*/
|
|
53
|
+
export const GERMAN_VAT_RATES = [
|
|
54
|
+
{ ratePercent: 19, from: '2007-01-01', to: '2020-06-30', provision: 'general', basis: GENERAL },
|
|
55
|
+
{ ratePercent: 19, from: '2021-01-01', provision: 'general', basis: GENERAL },
|
|
56
|
+
{ ratePercent: 7, from: '2007-01-01', to: '2020-06-30', provision: 'reduced', basis: REDUCED },
|
|
57
|
+
{ ratePercent: 7, from: '2021-01-01', provision: 'reduced', basis: REDUCED },
|
|
58
|
+
{ ratePercent: 0, from: '2023-01-01', provision: 'zero', basis: ZERO },
|
|
59
|
+
{ ratePercent: 16, from: '2020-07-01', to: '2020-12-31', provision: 'general', basis: `${TEMPORARY}, in place of the rate of § 12 Abs. 1 UStG` },
|
|
60
|
+
{ ratePercent: 5, from: '2020-07-01', to: '2020-12-31', provision: 'reduced', basis: `${TEMPORARY}, in place of the rate of § 12 Abs. 2 UStG` },
|
|
61
|
+
{ ratePercent: 19, from: '2007-01-01', to: '2020-06-30', provision: 'average_nr2', basis: `${SPECIAL_AVERAGE} (the act that set 19 % from 2007-01-01 not verified)` },
|
|
62
|
+
{ ratePercent: 19, from: '2021-01-01', provision: 'average_nr2', basis: `${SPECIAL_AVERAGE} (19 % as read on gesetze-im-internet.de, 2026-09-27)` },
|
|
63
|
+
{ ratePercent: 16, from: '2020-07-01', to: '2020-12-31', provision: 'average_nr2', basis: `${SPECIAL_AVERAGE} i. V. m. § 28 Abs. 3 UStG (Art. 3 Zweites Corona-Steuerhilfegesetz, BGBl. I 2020 S. 1512, as cited by BMF 30.06.2020 Rz. 1)` },
|
|
64
|
+
{ ratePercent: 5.5, from: '2007-01-01', provision: 'average_nr1', basis: FORESTRY },
|
|
65
|
+
{ ratePercent: 10.7, from: '2007-01-01', to: '2021-12-31', provision: 'average_nr3', basis: `${AVERAGE_OTHER} (Art. 4 Nr. 2 Buchst. a Doppelbuchst. cc Haushaltsbegleitgesetz 2006)` },
|
|
66
|
+
{ ratePercent: 9.5, from: '2022-01-01', to: '2022-12-31', provision: 'average_nr3', basis: `${AVERAGE_OTHER} (Art. 1 Nr. 5 Gesetz zur Umsetzung unionsrechtlicher Vorgaben im Umsatzsteuerrecht, BGBl. I 2021 S. 5250)` },
|
|
67
|
+
{ ratePercent: 9, from: '2023-01-01', to: '2024-12-05', provision: 'average_nr3', basis: `${AVERAGE_OTHER} (Art. 12 Nr. 3 Achtes Gesetz zur Änderung von Verbrauchsteuergesetzen, BGBl. I 2022 S. 1838)` },
|
|
68
|
+
{ ratePercent: 8.4, from: '2024-12-06', to: '2024-12-31', provision: 'average_nr3', basis: `${AVERAGE_OTHER} (Art. 24 Nr. 13 Jahressteuergesetz 2024, BGBl. 2024 I Nr. 387)` },
|
|
69
|
+
{ ratePercent: 7.8, from: '2025-01-01', provision: 'average_nr3', basis: `${AVERAGE_OTHER} (Art. 25 Nr. 21 Jahressteuergesetz 2024, BGBl. 2024 I Nr. 387)` },
|
|
70
|
+
];
|
|
71
|
+
const TABLE_BEGINS = '2007-01-01';
|
|
72
|
+
const assertDay = (dayArg) => {
|
|
73
|
+
const match = /^(\d{4})-(\d{2})-(\d{2})$/.exec(dayArg);
|
|
74
|
+
const date = match ? new Date(Date.UTC(Number(match[1]), Number(match[2]) - 1, Number(match[3]))) : undefined;
|
|
75
|
+
if (!date || date.toISOString().slice(0, 10) !== dayArg) {
|
|
76
|
+
throw new Error(`a day of supply is written YYYY-MM-DD, got '${dayArg}'`);
|
|
77
|
+
}
|
|
78
|
+
};
|
|
79
|
+
/**
|
|
80
|
+
* The rates of German VAT for a supply carried out on a day (`YYYY-MM-DD`),
|
|
81
|
+
* each once, in the order of `GERMAN_VAT_RATES`. `undefined` for a day before
|
|
82
|
+
* the table begins (2007-01-01): the table holds no law for it.
|
|
83
|
+
*/
|
|
84
|
+
export function germanVatRatesOn(dayArg) {
|
|
85
|
+
assertDay(dayArg);
|
|
86
|
+
if (dayArg < TABLE_BEGINS) {
|
|
87
|
+
return undefined;
|
|
88
|
+
}
|
|
89
|
+
return [...new Set(GERMAN_VAT_RATES
|
|
90
|
+
.filter((rateArg) => rateArg.from <= dayArg && (rateArg.to === undefined || dayArg <= rateArg.to))
|
|
91
|
+
.map((rateArg) => rateArg.ratePercent))];
|
|
92
|
+
}
|
|
93
|
+
const BMF_2020_06_30 = 'BMF-Schreiben vom 30. Juni 2020, III C 2 - S 7030/20/10009 :004, BStBl I S. 584';
|
|
94
|
+
const BMF_2020_11_04 = 'BMF-Schreiben vom 4. November 2020, III C 2 - S 7030/20/10009 :016';
|
|
95
|
+
const NIGHT_2020_06_30_BEWIRTUNG = 'Bewirtungsleistungen (food and drink for consumption on the spot, tobacco and the like) in the night of 30 June to 1 July 2020, at the rates in force from 1 July 2020 ("wird zugelassen")';
|
|
96
|
+
const NIGHT_2020_06_30_BEHERBERGUNG = 'Beherbergungen and the services that go with them in the night of 30 June to 1 July 2020, at the rates in force from 1 July 2020 ("sind … anzuwenden"; the letter of 30 June 2020, Rz. 44, had left them out)';
|
|
97
|
+
const JULY_2020 = '("wird es … nicht beanstandet") a supply to an entrepreneur carried out in July 2020 whose invoice states the rate in force before 1 July 2020 and whose supplier paid that tax: the invoice need not be corrected, and a recipient entitled to deduct input tax deducts the tax as stated (for § 13b supplies, the tax the recipient computed)';
|
|
98
|
+
const NIGHT_2020_12_31 = 'Bewirtungsleistungen, and Beherbergungen with the services that go with them, in the night of 31 December 2020 to 1 January 2021, at the rates of 16 and 5 percent ("wird zugelassen")';
|
|
99
|
+
/**
|
|
100
|
+
* The transition rules of the administration around the rate changes of
|
|
101
|
+
* 1 July 2020 and 1 January 2021, each read in the letter itself (the copies of
|
|
102
|
+
* 8 July 2020 and 5 November 2020 in the Internet Archive of the PDFs on
|
|
103
|
+
* bundesfinanzministerium.de, read 2026-09-27):
|
|
104
|
+
* - Rz. 44 of the letter of 30 June 2020 allows the new rates on
|
|
105
|
+
* Bewirtungsleistungen in the night of 30 June to 1 July 2020 (accepted), and
|
|
106
|
+
* Rz. 22 of the letter of 4 November 2020 requires them on Beherbergungen of
|
|
107
|
+
* that night (required), which Rz. 44 had left out.
|
|
108
|
+
* - Rz. 46 of the letter of 30 June 2020 accepts the old rates, 19 and
|
|
109
|
+
* 7 percent, on supplies to entrepreneurs in July 2020, with the input tax
|
|
110
|
+
* deduction of the stated tax.
|
|
111
|
+
* - Rz. 22 of the letter of 4 November 2020 allows 16 and 5 percent on
|
|
112
|
+
* Bewirtungsleistungen and Beherbergungen in the night of 31 December 2020
|
|
113
|
+
* to 1 January 2021.
|
|
114
|
+
* Not here: Rz. 47 of the letter of 30 June 2020 applies its rules "entsprechend"
|
|
115
|
+
* to the rise on 1 January 2021; the letters grant no deduction of 16 or
|
|
116
|
+
* 5 percent stated on a supply of January 2021 beyond the night above, except
|
|
117
|
+
* for advance payment invoices issued before 2021 (4 November 2020, Rz. 1 and
|
|
118
|
+
* 2), whose case needs the invoice's date. No letter on the § 24 changes of
|
|
119
|
+
* 2022, 2023, 2024-12-06 and 2025 was found.
|
|
120
|
+
*/
|
|
121
|
+
export const GERMAN_VAT_RATE_CONCESSIONS = [
|
|
122
|
+
{ ratePercent: 16, standing: 'accepted', from: '2020-06-30', to: '2020-06-30', source: `${BMF_2020_06_30}, Rz. 44; ${BMF_2020_11_04}, Rz. 22`, covers: NIGHT_2020_06_30_BEWIRTUNG },
|
|
123
|
+
{ ratePercent: 5, standing: 'accepted', from: '2020-06-30', to: '2020-06-30', source: `${BMF_2020_06_30}, Rz. 44; ${BMF_2020_11_04}, Rz. 22`, covers: NIGHT_2020_06_30_BEWIRTUNG },
|
|
124
|
+
{ ratePercent: 16, standing: 'required', from: '2020-06-30', to: '2020-06-30', source: `${BMF_2020_11_04}, Rz. 22`, covers: NIGHT_2020_06_30_BEHERBERGUNG },
|
|
125
|
+
{ ratePercent: 5, standing: 'required', from: '2020-06-30', to: '2020-06-30', source: `${BMF_2020_11_04}, Rz. 22`, covers: NIGHT_2020_06_30_BEHERBERGUNG },
|
|
126
|
+
{ ratePercent: 19, standing: 'accepted', from: '2020-07-01', to: '2020-07-31', source: `${BMF_2020_06_30}, Rz. 46`, covers: JULY_2020 },
|
|
127
|
+
{ ratePercent: 7, standing: 'accepted', from: '2020-07-01', to: '2020-07-31', source: `${BMF_2020_06_30}, Rz. 46`, covers: JULY_2020 },
|
|
128
|
+
{ ratePercent: 16, standing: 'accepted', from: '2021-01-01', to: '2021-01-01', source: `${BMF_2020_11_04}, Rz. 22`, covers: NIGHT_2020_12_31 },
|
|
129
|
+
{ ratePercent: 5, standing: 'accepted', from: '2021-01-01', to: '2021-01-01', source: `${BMF_2020_11_04}, Rz. 22`, covers: NIGHT_2020_12_31 },
|
|
130
|
+
];
|
|
131
|
+
/** The transition rules that cover a day of supply (`YYYY-MM-DD`), in the order of `GERMAN_VAT_RATE_CONCESSIONS`. */
|
|
132
|
+
export function germanVatRateConcessionsOn(dayArg) {
|
|
133
|
+
assertDay(dayArg);
|
|
134
|
+
return GERMAN_VAT_RATE_CONCESSIONS.filter((entryArg) => entryArg.from <= dayArg && dayArg <= entryArg.to);
|
|
135
|
+
}
|
|
136
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmF0ZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9yYXRlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7R0FLRztBQWVILE1BQU0sT0FBTyxHQUFHLDhFQUE4RSxDQUFDO0FBQy9GLE1BQU0sT0FBTyxHQUFHLGtCQUFrQixDQUFDO0FBQ25DLE1BQU0sU0FBUyxHQUFHLHFGQUFxRixDQUFDO0FBQ3hHLE1BQU0sZUFBZSxHQUFHLCtCQUErQixDQUFDO0FBQ3hELE1BQU0sUUFBUSxHQUFHLHFHQUFxRyxDQUFDO0FBQ3ZILE1BQU0sYUFBYSxHQUFHLCtCQUErQixDQUFDO0FBQ3RELE1BQU0sSUFBSSxHQUFHLDhIQUE4SCxDQUFDO0FBRTVJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXNDRztBQUNILE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUE4QjtJQUN6RCxFQUFFLFdBQVcsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxFQUFFLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRTtJQUMvRixFQUFFLFdBQVcsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUU7SUFDN0UsRUFBRSxXQUFXLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsRUFBRSxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUU7SUFDOUYsRUFBRSxXQUFXLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFO0lBQzVFLEVBQUUsV0FBVyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUs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
|
|
@@ -4,7 +4,9 @@
|
|
|
4
4
|
* the bases); the tax module needs them for reconciliation and for deriving
|
|
5
5
|
* igE/§13b bases when no scenario bases are supplied.
|
|
6
6
|
*
|
|
7
|
-
* Numbers
|
|
7
|
+
* Numbers follow the DATEV Kontenrahmen SKR 03 (Art.-Nr. 11174) and SKR 04
|
|
8
|
+
* (Art.-Nr. 11175), "Gültig für 2026", and match the @fin.cx/skr account
|
|
9
|
+
* policies (SKR03/SKR04 defaults).
|
|
8
10
|
*/
|
|
9
11
|
import type { TChartName } from '@fin.cx/chartdata';
|
|
10
12
|
import type { IVatAccountSet } from './ustva.types.js';
|
|
@@ -3,7 +3,8 @@ export const VAT_ACCOUNTS = {
|
|
|
3
3
|
outputStandard: ['1776'],
|
|
4
4
|
outputReduced: ['1771'],
|
|
5
5
|
outputGeneric: ['1770'],
|
|
6
|
-
outputIntraEuAcquisition: ['
|
|
6
|
+
outputIntraEuAcquisition: ['1774'],
|
|
7
|
+
outputIntraEuAcquisitionNewVehicles: ['1784'],
|
|
7
8
|
outputReverseCharge: ['1787'],
|
|
8
9
|
},
|
|
9
10
|
SKR04: {
|
|
@@ -11,7 +12,8 @@ export const VAT_ACCOUNTS = {
|
|
|
11
12
|
outputReduced: ['3801'],
|
|
12
13
|
outputGeneric: ['3800'],
|
|
13
14
|
outputIntraEuAcquisition: ['3804'],
|
|
15
|
+
outputIntraEuAcquisitionNewVehicles: ['3834'],
|
|
14
16
|
outputReverseCharge: ['3837'],
|
|
15
17
|
},
|
|
16
18
|
};
|
|
17
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXN0dmEuYWNjb3VudHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy91c3R2YS5hY2NvdW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFhQSxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQXVDO0lBQzlELEtBQUssRUFBRTtRQUNMLGNBQWMsRUFBRSxDQUFDLE1BQU0sQ0FBQztRQUN4QixhQUFhLEVBQUUsQ0FBQyxNQUFNLENBQUM7UUFDdkIsYUFBYSxFQUFFLENBQUMsTUFBTSxDQUFDO1FBQ3ZCLHdCQUF3QixFQUFFLENBQUMsTUFBTSxDQUFDO1FBQ2xDLG1DQUFtQyxFQUFFLENBQUMsTUFBTSxDQUFDO1FBQzdDLG1CQUFtQixFQUFFLENBQUMsTUFBTSxDQUFDO0tBQzlCO0lBQ0QsS0FBSyxFQUFFO1FBQ0wsY0FBYyxFQUFFLENBQUMsTUFBTSxDQUFDO1FBQ3hCLGFBQWEsRUFBRSxDQUFDLE1BQU0sQ0FBQztRQUN2QixhQUFhLEVBQUUsQ0FBQyxNQUFNLENBQUM7UUFDdkIsd0JBQXdCLEVBQUUsQ0FBQyxNQUFNLENBQUM7UUFDbEMsbUNBQW1DLEVBQUUsQ0FBQyxNQUFNLENBQUM7UUFDN0MsbUJBQW1CLEVBQUUsQ0FBQyxNQUFNLENBQUM7S0FDOUI7Q0FDRixDQUFDIn0=
|
package/dist_ts/ustva.d.ts
CHANGED
|
@@ -1,2 +1,19 @@
|
|
|
1
1
|
import type { IUstvaInput, IUstvaResult } from './ustva.types.js';
|
|
2
|
+
/**
|
|
3
|
+
* The labels of the Kennzahlen this module fills. Kz 21, 45 and 87 carry the
|
|
4
|
+
* titles of their fields in ELSTER's "Anleitung zur UStVA 2026" (read
|
|
5
|
+
* 2026-09-25).
|
|
6
|
+
*/
|
|
7
|
+
export declare const USTVA_KENNZAHL_LABELS: Readonly<Record<number, string>>;
|
|
8
|
+
/**
|
|
9
|
+
* The Kennzahlen this module fills, in the order of the UStVA 2026 form
|
|
10
|
+
* (ELSTER, "Anleitung zur UStVA 2026"): taxable supplies (81, 86, 87), tax-free
|
|
11
|
+
* supplies (41, 43, 48), intra-Community acquisitions (89, 93), the tax the
|
|
12
|
+
* recipient owes (46/47, 84/85), supplies whose recipient owes the tax (60),
|
|
13
|
+
* services in the rest of the Community (21), other non-taxable turnover (45),
|
|
14
|
+
* input tax (66, 61, 62, 67), the Sondervorauszahlung (39) and the result (83).
|
|
15
|
+
* A Kennzahl computed but not listed here is reported as an issue, never
|
|
16
|
+
* dropped.
|
|
17
|
+
*/
|
|
18
|
+
export declare const USTVA_KENNZAHL_ORDER: readonly number[];
|
|
2
19
|
export declare function computeUstva(input: IUstvaInput): IUstvaResult;
|
package/dist_ts/ustva.js
CHANGED
|
@@ -21,9 +21,15 @@
|
|
|
21
21
|
import { vatFromNetCents } from '@fin.cx/calculation';
|
|
22
22
|
import { getChart } from '@fin.cx/chartdata';
|
|
23
23
|
import { VAT_ACCOUNTS } from './ustva.accounts.js';
|
|
24
|
-
|
|
24
|
+
/**
|
|
25
|
+
* The labels of the Kennzahlen this module fills. Kz 21, 45 and 87 carry the
|
|
26
|
+
* titles of their fields in ELSTER's "Anleitung zur UStVA 2026" (read
|
|
27
|
+
* 2026-09-25).
|
|
28
|
+
*/
|
|
29
|
+
export const USTVA_KENNZAHL_LABELS = {
|
|
25
30
|
81: 'Steuerpflichtige Umsätze 19 %',
|
|
26
31
|
86: 'Steuerpflichtige Umsätze 7 %',
|
|
32
|
+
87: 'Steuerpflichtige Lieferungen und sonstige Leistungen (0 %)',
|
|
27
33
|
89: 'Innergemeinschaftliche Erwerbe 19 %',
|
|
28
34
|
93: 'Innergemeinschaftliche Erwerbe 7 %',
|
|
29
35
|
41: 'Steuerfreie innergemeinschaftliche Lieferungen',
|
|
@@ -34,6 +40,8 @@ const KENNZAHL_LABELS = {
|
|
|
34
40
|
84: 'Andere Leistungen eines im Ausland ansässigen Unternehmers (§13b)',
|
|
35
41
|
85: 'Steuer zu Kennzahl 84',
|
|
36
42
|
60: 'Steuerpflichtige Umsätze, für die der Leistungsempfänger die Steuer schuldet (§13b)',
|
|
43
|
+
21: 'Sonstige Leistungen im übrigen Gemeinschaftsgebiet',
|
|
44
|
+
45: 'Übrige nicht steuerbare Umsätze (Leistungsort nicht im Inland)',
|
|
37
45
|
66: 'Vorsteuer aus Rechnungen anderer Unternehmer',
|
|
38
46
|
61: 'Vorsteuer aus innergemeinschaftlichem Erwerb',
|
|
39
47
|
62: 'Entrichtete Einfuhrumsatzsteuer',
|
|
@@ -41,8 +49,17 @@ const KENNZAHL_LABELS = {
|
|
|
41
49
|
39: 'Anrechnung der Sondervorauszahlung (Dauerfristverlängerung)',
|
|
42
50
|
83: 'Verbleibende Umsatzsteuer-Vorauszahlung / Überschuss',
|
|
43
51
|
};
|
|
44
|
-
/**
|
|
45
|
-
|
|
52
|
+
/**
|
|
53
|
+
* The Kennzahlen this module fills, in the order of the UStVA 2026 form
|
|
54
|
+
* (ELSTER, "Anleitung zur UStVA 2026"): taxable supplies (81, 86, 87), tax-free
|
|
55
|
+
* supplies (41, 43, 48), intra-Community acquisitions (89, 93), the tax the
|
|
56
|
+
* recipient owes (46/47, 84/85), supplies whose recipient owes the tax (60),
|
|
57
|
+
* services in the rest of the Community (21), other non-taxable turnover (45),
|
|
58
|
+
* input tax (66, 61, 62, 67), the Sondervorauszahlung (39) and the result (83).
|
|
59
|
+
* A Kennzahl computed but not listed here is reported as an issue, never
|
|
60
|
+
* dropped.
|
|
61
|
+
*/
|
|
62
|
+
export const USTVA_KENNZAHL_ORDER = [81, 86, 87, 41, 43, 48, 89, 93, 46, 47, 84, 85, 60, 21, 45, 66, 61, 62, 67, 39, 83];
|
|
46
63
|
/** full euros, cents truncated toward zero (form rule for bases) */
|
|
47
64
|
function truncateToEur(cents) {
|
|
48
65
|
return Math.trunc(cents / 100);
|
|
@@ -105,6 +122,10 @@ export function computeUstva(input) {
|
|
|
105
122
|
ledgerRcOutputCents += -signedCents;
|
|
106
123
|
continue;
|
|
107
124
|
}
|
|
125
|
+
if (vatAccounts.outputIntraEuAcquisitionNewVehicles.includes(accountNumber)) {
|
|
126
|
+
issues.push(`account ${accountNumber} (output VAT on the intra-EU acquisition of new vehicles from suppliers without a VAT ID) carries ${-signedCents} cents — this module does not compute that acquisition; ordinary igE output VAT at 19 % belongs on ${vatAccounts.outputIntraEuAcquisition.join('/')}`);
|
|
127
|
+
continue;
|
|
128
|
+
}
|
|
108
129
|
const account = byNumber.get(accountNumber);
|
|
109
130
|
if (!account) {
|
|
110
131
|
const numeric = Number.parseInt(accountNumber, 10);
|
|
@@ -204,7 +225,7 @@ export function computeUstva(input) {
|
|
|
204
225
|
kennzahl,
|
|
205
226
|
kind,
|
|
206
227
|
value,
|
|
207
|
-
label:
|
|
228
|
+
label: USTVA_KENNZAHL_LABELS[kennzahl] ?? `Kennzahl ${kennzahl}`,
|
|
208
229
|
accounts,
|
|
209
230
|
});
|
|
210
231
|
};
|
|
@@ -256,7 +277,13 @@ export function computeUstva(input) {
|
|
|
256
277
|
if (kzValue(67) !== 0 || kz47Cents !== 0 || kz85Cents !== 0) {
|
|
257
278
|
checks.push(`§13b input vs output tax: Kz 67 ${kzValue(67)} vs Kz 47+85 ${kz47Cents + kz85Cents} (diff ${rcDeductionDiff}; non-zero = partial deduction or inconsistency)`);
|
|
258
279
|
}
|
|
259
|
-
const kennzahlen =
|
|
280
|
+
const kennzahlen = USTVA_KENNZAHL_ORDER.filter((kennzahl) => values.has(kennzahl)).map((kennzahl) => values.get(kennzahl));
|
|
281
|
+
// a figure the form order does not place would be left out of the filing: say so instead
|
|
282
|
+
for (const [kennzahl, value] of values) {
|
|
283
|
+
if (!USTVA_KENNZAHL_ORDER.includes(kennzahl)) {
|
|
284
|
+
issues.push(`Kennzahl ${kennzahl} (from ${value.accounts.join(', ')}) has no place in this module's form order — it cannot be filed; add it to USTVA_KENNZAHL_ORDER`);
|
|
285
|
+
}
|
|
286
|
+
}
|
|
260
287
|
return {
|
|
261
288
|
chart: input.chart,
|
|
262
289
|
year: input.year,
|
|
@@ -273,4 +300,4 @@ export function computeUstva(input) {
|
|
|
273
300
|
issues,
|
|
274
301
|
};
|
|
275
302
|
}
|
|
276
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXN0dmEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy91c3R2YS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW1CRztBQUNILE9BQU8sRUFBRSxlQUFlLEVBQWUsTUFBTSxxQkFBcUIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsUUFBUSxFQUFzQixNQUFNLG1CQUFtQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQVNuRCxNQUFNLGVBQWUsR0FBMkI7SUFDOUMsRUFBRSxFQUFFLCtCQUErQjtJQUNuQyxFQUFFLEVBQUUsOEJBQThCO0lBQ2xDLEVBQUUsRUFBRSxxQ0FBcUM7SUFDekMsRUFBRSxFQUFFLG9DQUFvQztJQUN4QyxFQUFFLEVBQUUsZ0RBQWdEO0lBQ3BELEVBQUUsRUFBRSx3REFBd0Q7SUFDNUQsRUFBRSxFQUFFLHlDQUF5QztJQUM3QyxFQUFFLEVBQUUsZ0VBQWdFO0lBQ3BFLEVBQUUsRUFBRSx1QkFBdUI7SUFDM0IsRUFBRSxFQUFFLG1FQUFtRTtJQUN2RSxFQUFFLEVBQUUsdUJBQXVCO0lBQzNCLEVBQUUsRUFBRSxxRkFBcUY7SUFDekYsRUFBRSxFQUFFLDhDQUE4QztJQUNsRCxFQUFFLEVBQUUsOENBQThDO0lBQ2xELEVBQUUsRUFBRSxpQ0FBaUM7SUFDckMsRUFBRSxFQUFFLGlEQUFpRDtJQUNyRCxFQUFFLEVBQUUsNkRBQTZEO0lBQ2pFLEVBQUUsRUFBRSxzREFBc0Q7Q0FDM0QsQ0FBQztBQUVGLDZDQUE2QztBQUM3QyxNQUFNLGNBQWMsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFB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QUFDLFFBQVEsQ0FBQyxJQUFJLFlBQVksUUFBUSxFQUFFO1lBQzFELFFBQVE7U0FDVCxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUM7SUFFRixLQUFLLE1BQU0sQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLElBQUksYUFBYSxFQUFFLENBQUM7UUFDOUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxTQUFTLEVBQUUsYUFBYSxDQUFDLEtBQUssQ0FBQyxFQUFFLFlBQVksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7SUFDbkYsQ0FBQztJQUNELEtBQUssTUFBTSxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUM3QyxHQUFHLENBQUMsUUFBUSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsWUFBWSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUNyRSxDQUFDO0lBQ0QsSUFBSSxTQUFTLEtBQUssQ0FBQztRQUFFLEdBQUcsQ0FBQyxFQUFFLEVBQUUsU0FBUyxFQUFFLGFBQWEsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7SUFDaEYsSUFBSSxTQUFTLEtBQUssQ0FBQztRQUFFLEdBQUcsQ0FBQyxFQUFFLEVBQUUsU0FBUyxFQUFFLGFBQWEsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7SUFDbEYsSUFBSSxTQUFTLEtBQUssQ0FBQztRQUFFLEdBQUcsQ0FBQyxFQUFFLEVBQUUsU0FBUyxFQUFFLGFBQWEsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7SUFDaEYsSUFBSSxTQUFTLEtBQUssQ0FBQztRQUFFLEdBQUcsQ0FBQyxFQUFFLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxZQUFZLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLG1CQUFtQixDQUFDLENBQUM7SUFDbkcsSUFBSSxTQUFTLEtBQUss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
|
|
303
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXN0dmEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy91c3R2YS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW1CRztBQUNILE9BQU8sRUFBRSxlQUFlLEVBQWUsTUFBTSxxQkFBcUIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsUUFBUSxFQUFzQixNQUFNLG1CQUFtQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQVNuRDs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQXFDO0lBQ3JFLEVBQUUsRUFBRSwrQkFBK0I7SUFDbkMsRUFBRSxFQUFFLDhCQUE4QjtJQUNsQyxFQUFFLEVBQUUsNERBQTREO0lBQ2hFLEVBQUUsRUFBRSxxQ0FBcUM7SUFDekMsRUFBRSxFQUFFLG9DQUFvQztJQUN4QyxFQUFFLEVBQUUsZ0RBQWdEO0lBQ3BELEVBQUUsRUFBRSx3REFBd0Q7SUFDNUQsRUFBRSxFQUFFLHlDQUF5QztJQUM3QyxFQUFFLEVBQUUsZ0VBQWdFO0lBQ3BFLEVBQUUsRUFBRSx1QkFBdUI7SUFDM0IsRUFBRSxFQUFFLG1FQUFtRTtJQUN2RSxFQUFFLEVBQUUsdUJBQXVCO0lBQzNCLEVBQUUsRUFBRSxxRkFBcUY7SUFDekYsRUFBRSxFQUFFLG9EQUFvRDtJQUN4RCxFQUFFLEVBQUUsZ0VBQWdFO0lBQ3BFLEVBQUUsRUFBRSw4Q0FBOEM7SUFDbEQsRUFBRSxFQUFFLDhDQUE4QztJQUNsRCxFQUFFLEVBQUUsaUNBQWlDO0lBQ3JDLEVBQUUsRUFBRSxpREFBaUQ7SUFDckQsRUFBRSxFQUFFLDZEQUE2RDtJQUNqRSxFQUFFLEVBQUUsc0RBQXNEO0NBQzNELENBQUM7QUFFRjs7Ozs7Ozs7O0dBU0c7QUFDSCxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBc0IsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxF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
|
package/dist_ts/ustva.types.d.ts
CHANGED
|
@@ -36,6 +36,12 @@ export interface IVatAccountSet {
|
|
|
36
36
|
outputGeneric: string[];
|
|
37
37
|
/** Umsatzsteuer aus innergemeinschaftlichem Erwerb 19 % */
|
|
38
38
|
outputIntraEuAcquisition: string[];
|
|
39
|
+
/**
|
|
40
|
+
* Umsatzsteuer aus innergemeinschaftlichem Erwerb von Neufahrzeugen von
|
|
41
|
+
* Lieferanten ohne USt-IdNr. — not computed by this module; non-zero
|
|
42
|
+
* movements are flagged
|
|
43
|
+
*/
|
|
44
|
+
outputIntraEuAcquisitionNewVehicles: string[];
|
|
39
45
|
/** Umsatzsteuer nach §13b UStG 19 % */
|
|
40
46
|
outputReverseCharge: string[];
|
|
41
47
|
}
|
package/dist_ts/zm.d.ts
ADDED
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The Zusammenfassende Meldung (§ 18a UStG): its lines, and the CSV the
|
|
3
|
+
* ELSTER (or BZSt-Online-Portal) online form imports. Pure; the caller
|
|
4
|
+
* decides which supplies of which period go in (§ 18a Abs. 1, 2, 8 UStG) and
|
|
5
|
+
* transmits the form itself, authenticated, as § 18a requires.
|
|
6
|
+
*
|
|
7
|
+
* Sources, read 2026-09-25:
|
|
8
|
+
* - ELSTER, "Import von Meldelisten zur Zusammenfassenden Meldung"
|
|
9
|
+
* (helpGlobal `zmdo_import_eop`, CSV version 3.0) and the general
|
|
10
|
+
* "Anleitung zur Erstellung von CSV-Dateien für die Importfunktion":
|
|
11
|
+
* UTF-8; line 1 `#v3.0`; the form's example adds `#ve3.2.1`; one line of
|
|
12
|
+
* field names; then the lines, one per record "Meldezeilen (Satzart 1)":
|
|
13
|
+
* USt-IdNr. AN(7,14) beginning with a country code of the list; Summe
|
|
14
|
+
* (Euro) N(11), "eine ganze Zahl", minus allowed; Art der Leistung A(1),
|
|
15
|
+
* `L` innergemeinschaftliche Lieferung, `S` sonstige Leistung, `D`
|
|
16
|
+
* Dreiecksgeschäft. At most 1 500 lines. The example separates its lines
|
|
17
|
+
* with a line feed and its fields with `,`.
|
|
18
|
+
* - BZSt, "Zusammenfassende Meldung - Fragen und Antworten"
|
|
19
|
+
* (bzst.de …/ZusammenfassendeMeldung/FAQ/faq_zm.html, read 2026-09-27),
|
|
20
|
+
* Brexit: a Northern Irish business has a VAT ID with `XI`; the ZM states
|
|
21
|
+
* the intra-Community supplies, triangular trades and § 6b transfers to it,
|
|
22
|
+
* while services to recipients in Northern Ireland follow the rules for the
|
|
23
|
+
* third-country territory and are not reported (Art. 8 of the Protocol on
|
|
24
|
+
* Ireland/Northern Ireland covers goods only).
|
|
25
|
+
* - BZSt, "Anleitung zur Zusammenfassenden Meldung" (USt ZM 1/2021): one line
|
|
26
|
+
* per recipient and kind in a period, the bases summed (Tz. 8, 11); a later
|
|
27
|
+
* change of the base netted into the period of the change, possibly
|
|
28
|
+
* negative (Tz. 10); no "Nullmeldungen" (III.1); a correction states the
|
|
29
|
+
* correct totals, and `0` to storno a line (Tz. 12.2, 12.3).
|
|
30
|
+
*/
|
|
31
|
+
import type { TCents } from '@fin.cx/calculation';
|
|
32
|
+
/** `L` innergemeinschaftliche Warenlieferung, `S` sonstige Leistung (§ 3a Abs. 2), `D` Dreiecksgeschäft (§ 25b Abs. 2) */
|
|
33
|
+
export type TZmKind = 'L' | 'S' | 'D';
|
|
34
|
+
/** One supply (or a later change of its base) of the period: the recipient's VAT ID, its kind, the base in euro cents */
|
|
35
|
+
export interface IZmSupplyInput {
|
|
36
|
+
vatId: string;
|
|
37
|
+
kind: TZmKind;
|
|
38
|
+
/** signed: a later reduction of the base is negative */
|
|
39
|
+
baseCents: TCents;
|
|
40
|
+
}
|
|
41
|
+
/** One line of the report: the recipient, the kind, the summed base in euro cents */
|
|
42
|
+
export interface IZmLine {
|
|
43
|
+
vatId: string;
|
|
44
|
+
kind: TZmKind;
|
|
45
|
+
baseCents: TCents;
|
|
46
|
+
}
|
|
47
|
+
export interface IZmCsv {
|
|
48
|
+
text: string;
|
|
49
|
+
/** the text as UTF-8, as the import requires */
|
|
50
|
+
bytes: Uint8Array;
|
|
51
|
+
lineCount: number;
|
|
52
|
+
}
|
|
53
|
+
/** The country codes the ZM takes (ELSTER, "Liste der Länderkennzeichen"); `GB` only for periods before 2021, so not here. */
|
|
54
|
+
export declare const ZM_COUNTRY_CODES: readonly string[];
|
|
55
|
+
export declare const ZM_MAX_LINES = 1500;
|
|
56
|
+
/** The CSV version lines and the field names, as the form's example gives them. */
|
|
57
|
+
export declare const ZM_CSV_HEAD: readonly string[];
|
|
58
|
+
/**
|
|
59
|
+
* How a sum with cents becomes the whole euros the CSV's "Summe (Euro)"
|
|
60
|
+
* takes. No source read states it (ELSTER: "eine ganze Zahl"; ELMA5: "in Euro
|
|
61
|
+
* ohne Cent"; the paper form: "volle EUR | Ct"). The cents are dropped toward
|
|
62
|
+
* zero, as the UStVA drops those of its bases ("in vollen Euro (ohne
|
|
63
|
+
* Centbeträge)", Anleitung zur Umsatzsteuer-Voranmeldung 2026), so that the
|
|
64
|
+
* ZM and the UStVA's Kz 41 and Kz 21, which the BZSt compares, are cut alike.
|
|
65
|
+
* This is a recorded decision of 2026-09-27, pending the tax advisor's
|
|
66
|
+
* confirmation; it is not a rule a source states.
|
|
67
|
+
*/
|
|
68
|
+
export declare const ZM_EUROS_RULE = "the cents of each line's sum are dropped toward zero, as the UStVA drops those of its bases (a recorded decision of 2026-09-27, pending the tax advisor's confirmation; no source states the rule)";
|
|
69
|
+
/**
|
|
70
|
+
* The whole euros of a sum in cents, as the CSV's "Summe (Euro)" takes them:
|
|
71
|
+
* the cents dropped toward zero (`ZM_EUROS_RULE`), so 2 000,50 € is 2000 and
|
|
72
|
+
* -2 000,50 € is -2000. At most 11 digits (N(11)).
|
|
73
|
+
*/
|
|
74
|
+
export declare function zmEurosOf(centsArg: TCents): number;
|
|
75
|
+
/**
|
|
76
|
+
* A recipient's VAT ID as the form takes it: upper case, without spaces, the
|
|
77
|
+
* country code first (`GR` written `EL`, as the list has it); 7 to 14
|
|
78
|
+
* characters of letters, digits, `+` and `*`; a country code of the list.
|
|
79
|
+
*/
|
|
80
|
+
export declare function normalizeZmVatId(valueArg: string): string;
|
|
81
|
+
/** The lines of a period: one per recipient VAT ID and kind, in the order they first appear, the bases summed. */
|
|
82
|
+
export declare function aggregateZmLines(suppliesArg: readonly IZmSupplyInput[]): IZmLine[];
|
|
83
|
+
/**
|
|
84
|
+
* The CSV of one report. An original report leaves out a line that nets to
|
|
85
|
+
* zero and refuses to be written with no line left (no "Nullmeldung"); a
|
|
86
|
+
* correction keeps a `0` line, which stornos what was reported under it.
|
|
87
|
+
* Each line's sum is cut to whole euros by `zmEurosOf`. Refused beyond 1 500
|
|
88
|
+
* lines.
|
|
89
|
+
*/
|
|
90
|
+
export declare function writeZmCsv(linesArg: readonly IZmLine[], optionsArg: {
|
|
91
|
+
purpose: 'original' | 'correction';
|
|
92
|
+
}): IZmCsv;
|