@fin.cx/einvoice 9.0.0 → 10.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (126) hide show
  1. package/dist_ts/00_commitinfo_data.js +2 -2
  2. package/dist_ts/einvoice.d.ts +12 -0
  3. package/dist_ts/einvoice.js +45 -3
  4. package/dist_ts/formats/base/base.decoder.d.ts +27 -2
  5. package/dist_ts/formats/base/base.decoder.js +52 -27
  6. package/dist_ts/formats/cii/cii.decoder.d.ts +89 -6
  7. package/dist_ts/formats/cii/cii.decoder.js +125 -30
  8. package/dist_ts/formats/cii/cii.encoder.d.ts +71 -1
  9. package/dist_ts/formats/cii/cii.encoder.js +191 -12
  10. package/dist_ts/formats/cii/cii.types.d.ts +2 -5
  11. package/dist_ts/formats/cii/cii.types.js +7 -9
  12. package/dist_ts/formats/cii/cii.validator.d.ts +13 -6
  13. package/dist_ts/formats/cii/cii.validator.js +29 -30
  14. package/dist_ts/formats/cii/facturx/facturx.decoder.js +15 -3
  15. package/dist_ts/formats/cii/facturx/facturx.encoder.d.ts +0 -6
  16. package/dist_ts/formats/cii/facturx/facturx.encoder.js +11 -25
  17. package/dist_ts/formats/cii/facturx/facturx.types.d.ts +0 -5
  18. package/dist_ts/formats/cii/facturx/facturx.types.js +1 -8
  19. package/dist_ts/formats/cii/facturx/facturx.validator.d.ts +0 -5
  20. package/dist_ts/formats/cii/facturx/facturx.validator.js +5 -29
  21. package/dist_ts/formats/cii/zugferd/zugferd.decoder.js +15 -2
  22. package/dist_ts/formats/cii/zugferd/zugferd.encoder.d.ts +0 -7
  23. package/dist_ts/formats/cii/zugferd/zugferd.encoder.js +9 -67
  24. package/dist_ts/formats/cii/zugferd/zugferd.types.d.ts +0 -5
  25. package/dist_ts/formats/cii/zugferd/zugferd.types.js +1 -8
  26. package/dist_ts/formats/cii/zugferd/zugferd.v1.decoder.d.ts +26 -0
  27. package/dist_ts/formats/cii/zugferd/zugferd.v1.decoder.js +43 -1
  28. package/dist_ts/formats/cii/zugferd/zugferd.validator.js +6 -2
  29. package/dist_ts/formats/semantic/semantic.adapter.js +20 -18
  30. package/dist_ts/formats/ubl/en16931.ubl.validator.d.ts +0 -4
  31. package/dist_ts/formats/ubl/en16931.ubl.validator.js +5 -42
  32. package/dist_ts/formats/ubl/generic/ubl.encoder.js +18 -24
  33. package/dist_ts/formats/ubl/ubl.decoder.d.ts +4 -0
  34. package/dist_ts/formats/ubl/ubl.decoder.js +9 -1
  35. package/dist_ts/formats/ubl/ubl.encoder.js +9 -5
  36. package/dist_ts/formats/ubl/ubl.validator.d.ts +13 -0
  37. package/dist_ts/formats/ubl/ubl.validator.js +28 -1
  38. package/dist_ts/formats/ubl/xrechnung/xrechnung.decoder.js +10 -1
  39. package/dist_ts/formats/ubl/xrechnung/xrechnung.encoder.d.ts +0 -7
  40. package/dist_ts/formats/ubl/xrechnung/xrechnung.encoder.js +30 -45
  41. package/dist_ts/formats/ubl/xrechnung.validator.d.ts +5 -4
  42. package/dist_ts/formats/ubl/xrechnung.validator.js +71 -68
  43. package/dist_ts/formats/utils/date.value.d.ts +35 -0
  44. package/dist_ts/formats/utils/date.value.js +98 -1
  45. package/dist_ts/formats/utils/format.detector.js +16 -10
  46. package/dist_ts/formats/utils/party.contact.d.ts +16 -0
  47. package/dist_ts/formats/utils/party.contact.js +16 -0
  48. package/dist_ts/formats/utils/party.identifier.d.ts +28 -0
  49. package/dist_ts/formats/utils/party.identifier.js +49 -0
  50. package/dist_ts/formats/utils/peppol.profile.d.ts +10 -0
  51. package/dist_ts/formats/utils/peppol.profile.js +12 -0
  52. package/dist_ts/formats/utils/seller.identifier.d.ts +46 -0
  53. package/dist_ts/formats/utils/seller.identifier.js +78 -0
  54. package/dist_ts/formats/utils/stated.values.d.ts +80 -0
  55. package/dist_ts/formats/utils/stated.values.js +418 -0
  56. package/dist_ts/formats/utils/vat.category.d.ts +30 -2
  57. package/dist_ts/formats/utils/vat.category.js +36 -6
  58. package/dist_ts/formats/utils/vat.id.d.ts +18 -0
  59. package/dist_ts/formats/utils/vat.id.js +22 -0
  60. package/dist_ts/formats/validation/conformance.harness.js +6 -6
  61. package/dist_ts/formats/validation/en16931.business-rules.validator.js +4 -21
  62. package/dist_ts/formats/validation/facturx.validator.js +6 -6
  63. package/dist_ts/formats/validation/integrated.validator.js +4 -13
  64. package/dist_ts/formats/validation/peppol.validator.js +6 -13
  65. package/dist_ts/formats/validation/validation.types.d.ts +5 -0
  66. package/dist_ts/formats/validation/validation.types.js +6 -1
  67. package/dist_ts/formats/validation/vat-categories.validator.d.ts +21 -42
  68. package/dist_ts/formats/validation/vat-categories.validator.js +137 -431
  69. package/dist_ts/formats/validation/xrechnung.validator.d.ts +11 -58
  70. package/dist_ts/formats/validation/xrechnung.validator.js +58 -324
  71. package/dist_ts/index.d.ts +1 -0
  72. package/dist_ts/index.js +1 -1
  73. package/dist_ts/interfaces/en16931-metadata.d.ts +0 -4
  74. package/dist_ts/interfaces/stated.values.d.ts +93 -0
  75. package/dist_ts/interfaces/stated.values.js +2 -0
  76. package/package.json +4 -4
  77. package/readme.md +152 -7
  78. package/ts/00_commitinfo_data.ts +1 -1
  79. package/ts/einvoice.ts +52 -2
  80. package/ts/formats/base/base.decoder.ts +55 -45
  81. package/ts/formats/cii/cii.decoder.ts +159 -32
  82. package/ts/formats/cii/cii.encoder.ts +206 -14
  83. package/ts/formats/cii/cii.types.ts +7 -9
  84. package/ts/formats/cii/cii.validator.ts +30 -32
  85. package/ts/formats/cii/facturx/facturx.decoder.ts +16 -2
  86. package/ts/formats/cii/facturx/facturx.encoder.ts +13 -25
  87. package/ts/formats/cii/facturx/facturx.types.ts +0 -9
  88. package/ts/formats/cii/facturx/facturx.validator.ts +5 -43
  89. package/ts/formats/cii/zugferd/zugferd.decoder.ts +16 -1
  90. package/ts/formats/cii/zugferd/zugferd.encoder.ts +10 -72
  91. package/ts/formats/cii/zugferd/zugferd.types.ts +0 -9
  92. package/ts/formats/cii/zugferd/zugferd.v1.decoder.ts +56 -0
  93. package/ts/formats/cii/zugferd/zugferd.validator.ts +5 -1
  94. package/ts/formats/semantic/semantic.adapter.ts +19 -17
  95. package/ts/formats/ubl/en16931.ubl.validator.ts +5 -64
  96. package/ts/formats/ubl/generic/ubl.encoder.ts +19 -23
  97. package/ts/formats/ubl/ubl.decoder.ts +12 -0
  98. package/ts/formats/ubl/ubl.encoder.ts +8 -4
  99. package/ts/formats/ubl/ubl.validator.ts +29 -0
  100. package/ts/formats/ubl/xrechnung/xrechnung.decoder.ts +8 -0
  101. package/ts/formats/ubl/xrechnung/xrechnung.encoder.ts +33 -45
  102. package/ts/formats/ubl/xrechnung.validator.ts +75 -127
  103. package/ts/formats/utils/date.value.ts +106 -0
  104. package/ts/formats/utils/format.detector.ts +15 -9
  105. package/ts/formats/utils/party.contact.ts +30 -0
  106. package/ts/formats/utils/party.identifier.ts +61 -0
  107. package/ts/formats/utils/peppol.profile.ts +13 -0
  108. package/ts/formats/utils/seller.identifier.ts +102 -0
  109. package/ts/formats/utils/stated.values.ts +499 -0
  110. package/ts/formats/utils/vat.category.ts +47 -5
  111. package/ts/formats/utils/vat.id.ts +24 -0
  112. package/ts/formats/validation/conformance.harness.ts +5 -5
  113. package/ts/formats/validation/en16931.business-rules.validator.ts +3 -28
  114. package/ts/formats/validation/facturx.validator.ts +5 -5
  115. package/ts/formats/validation/integrated.validator.ts +3 -16
  116. package/ts/formats/validation/peppol.validator.ts +5 -16
  117. package/ts/formats/validation/validation.types.ts +7 -1
  118. package/ts/formats/validation/vat-categories.validator.ts +179 -761
  119. package/ts/formats/validation/xrechnung.validator.ts +61 -382
  120. package/ts/index.ts +9 -0
  121. package/ts/interfaces/en16931-metadata.ts +3 -7
  122. package/ts/interfaces/stated.values.ts +94 -0
  123. package/ts/readme.md +1 -1
  124. package/dist_ts/formats/utils/eu.memberstates.d.ts +0 -11
  125. package/dist_ts/formats/utils/eu.memberstates.js +0 -16
  126. package/ts/formats/utils/eu.memberstates.ts +0 -16
@@ -6,15 +6,11 @@
6
6
  * Required for B2G invoicing in Germany since November 2020
7
7
  */
8
8
  import type { EInvoice } from '../../einvoice.js';
9
- import type { ValidationResult } from './validation.types.js';
9
+ import { type ValidationResult } from './validation.types.js';
10
10
  /**
11
11
  * XRechnung-specific validator implementing German CIUS rules
12
12
  */
13
13
  export declare class XRechnungValidator {
14
- private static readonly LEITWEG_ID_PATTERN;
15
- private static readonly IBAN_PATTERNS;
16
- private static readonly BIC_PATTERN;
17
- private static readonly SEPA_COUNTRIES;
18
14
  /**
19
15
  * Validate XRechnung-specific requirements
20
16
  */
@@ -24,67 +20,24 @@ export declare class XRechnungValidator {
24
20
  */
25
21
  private isXRechnungInvoice;
26
22
  /**
27
- * Validate Leitweg-ID (routing ID for German public administration)
28
- * Pattern: [0-9]{2,3}-[0-9]{1,12}-[0-9]{2,30}
29
- * Rule: XR-DE-01
30
- */
31
- private validateLeitwegId;
32
- /**
33
- * Check if string looks like a Leitweg-ID
34
- */
35
- private looksLikeLeitwegId;
36
- /**
37
- * Check if this is a B2G invoice
38
- */
39
- private isB2GInvoice;
40
- /**
41
- * Validate mandatory buyer reference (BT-10)
42
- * Rule: XR-DE-15
23
+ * The buyer reference (BT-10) is stated (BR-DE-15). In German public procurement it carries
24
+ * the Leitweg-ID; the XRechnung rules do not check its format.
43
25
  */
44
26
  private validateBuyerReference;
45
27
  /**
46
- * Validate payment details (IBAN/BIC for SEPA)
47
- * Rules: XR-DE-19, XR-DE-20
48
- */
49
- private validatePaymentDetails;
50
- /**
51
- * Validate IBAN format and checksum
52
- */
53
- private validateIBAN;
54
- /**
55
- * Validate BIC format
56
- */
57
- private validateBIC;
58
- /**
59
- * Validate seller contact details
60
- * Rule: XR-DE-02
28
+ * The seller contact (BG-6), as the XRechnung encoder writes it from the seller
29
+ * (`metadata.contactInformation`, otherwise its name, telephone number and email address):
30
+ * BR-DE-2 asks for it, BR-DE-27 and BR-DE-28 ask a telephone number (BT-42) and an email
31
+ * address (BT-43) to have the forms the XRechnung rules state (warnings).
61
32
  */
62
33
  private validateSellerContact;
63
34
  /**
64
- * Validate email format
65
- */
66
- private isValidEmail;
67
- /**
68
- * Validate phone format (basic)
69
- */
70
- private isValidPhone;
71
- /**
72
- * Validate tax registration details
73
- * Rules: XR-DE-03, XR-DE-04
35
+ * The seller VAT identifier (BT-31) or tax registration identifier (BT-32) of the seller's
36
+ * registration details, `vatId` and `taxNumber` (BR-DE-16). The rule applies when a line
37
+ * states a VAT category code S, Z, E, AE, K, G, L or M; the encoders write S or AE for every
38
+ * line. It also accepts a tax representative (BG-11), which the envelope cannot state.
74
39
  */
75
40
  private validateTaxRegistration;
76
- /**
77
- * Validate German VAT ID format
78
- */
79
- private isValidGermanVatId;
80
- /**
81
- * Check if value looks like a German Tax ID
82
- */
83
- private looksLikeGermanTaxId;
84
- /**
85
- * Validate German Tax ID format
86
- */
87
- private isValidGermanTaxId;
88
41
  /**
89
42
  * Create XRechnung profile validator instance
90
43
  */
@@ -5,29 +5,14 @@
5
5
  * XRechnung is the German Core Invoice Usage Specification (CIUS) of EN16931
6
6
  * Required for B2G invoicing in Germany since November 2020
7
7
  */
8
+ import { EINVOICE_RULE_SOURCE } from './validation.types.js';
8
9
  import { UBL_CUSTOMIZATION_IDS } from '../ubl/ubl.types.js';
10
+ import { getPartyContact } from '../utils/party.contact.js';
11
+ import { GERMAN_VAT_ID_FORMAT_CODE, germanVatIdFormatMessage, isMalformedGermanVatId } from '../utils/vat.id.js';
9
12
  /**
10
13
  * XRechnung-specific validator implementing German CIUS rules
11
14
  */
12
15
  export class XRechnungValidator {
13
- static LEITWEG_ID_PATTERN = /^[0-9]{2,3}-[0-9]{1,12}-[0-9]{2,30}$/;
14
- static IBAN_PATTERNS = {
15
- DE: { length: 22, pattern: /^DE[0-9]{2}[0-9]{8}[0-9]{10}$/ },
16
- AT: { length: 20, pattern: /^AT[0-9]{2}[0-9]{5}[0-9]{11}$/ },
17
- CH: { length: 21, pattern: /^CH[0-9]{2}[0-9]{5}[0-9A-Z]{12}$/ },
18
- FR: { length: 27, pattern: /^FR[0-9]{2}[0-9]{5}[0-9]{5}[0-9A-Z]{11}[0-9]{2}$/ },
19
- NL: { length: 18, pattern: /^NL[0-9]{2}[A-Z]{4}[0-9]{10}$/ },
20
- BE: { length: 16, pattern: /^BE[0-9]{2}[0-9]{3}[0-9]{7}[0-9]{2}$/ },
21
- IT: { length: 27, pattern: /^IT[0-9]{2}[A-Z][0-9]{5}[0-9]{5}[0-9A-Z]{12}$/ },
22
- ES: { length: 24, pattern: /^ES[0-9]{2}[0-9]{4}[0-9]{4}[0-9]{2}[0-9]{10}$/ }
23
- };
24
- static BIC_PATTERN = /^[A-Z]{6}[A-Z0-9]{2}([A-Z0-9]{3})?$/;
25
- // SEPA countries
26
- static SEPA_COUNTRIES = new Set([
27
- 'AD', 'AT', 'BE', 'BG', 'CH', 'CY', 'CZ', 'DE', 'DK', 'EE', 'ES', 'FI',
28
- 'FR', 'GB', 'GI', 'GR', 'HR', 'HU', 'IE', 'IS', 'IT', 'LI', 'LT', 'LU',
29
- 'LV', 'MC', 'MT', 'NL', 'NO', 'PL', 'PT', 'RO', 'SE', 'SI', 'SK', 'SM', 'VA'
30
- ]);
31
16
  /**
32
17
  * Validate XRechnung-specific requirements
33
18
  */
@@ -38,9 +23,7 @@ export class XRechnungValidator {
38
23
  return results; // Not XRechnung, skip validation
39
24
  }
40
25
  // Validate mandatory fields
41
- results.push(...this.validateLeitwegId(invoice));
42
26
  results.push(...this.validateBuyerReference(invoice));
43
- results.push(...this.validatePaymentDetails(invoice));
44
27
  results.push(...this.validateSellerContact(invoice));
45
28
  results.push(...this.validateTaxRegistration(invoice));
46
29
  return results;
@@ -63,352 +46,103 @@ export class XRechnungValidator {
63
46
  customizationId.toLowerCase().includes(profile.toLowerCase()));
64
47
  }
65
48
  /**
66
- * Validate Leitweg-ID (routing ID for German public administration)
67
- * Pattern: [0-9]{2,3}-[0-9]{1,12}-[0-9]{2,30}
68
- * Rule: XR-DE-01
69
- */
70
- validateLeitwegId(invoice) {
71
- const results = [];
72
- // Leitweg-ID is typically in buyer reference (BT-10) for B2G
73
- const buyerReference = invoice.metadata?.buyerReference || invoice.buyerReference || '';
74
- // Check if it looks like a Leitweg-ID
75
- if (buyerReference && this.looksLikeLeitwegId(buyerReference)) {
76
- if (!XRechnungValidator.LEITWEG_ID_PATTERN.test(buyerReference.trim())) {
77
- results.push({
78
- ruleId: 'XR-DE-01',
79
- severity: 'error',
80
- source: 'XRECHNUNG',
81
- message: `Invalid Leitweg-ID format: ${buyerReference}. Expected pattern: [0-9]{2,3}-[0-9]{1,12}-[0-9]{2,30}`,
82
- btReference: 'BT-10',
83
- field: 'buyerReference',
84
- value: buyerReference
85
- });
86
- }
87
- }
88
- // For B2G invoices, Leitweg-ID might be mandatory
89
- if (this.isB2GInvoice(invoice) && !buyerReference) {
90
- results.push({
91
- ruleId: 'XR-DE-15',
92
- severity: 'error',
93
- source: 'XRECHNUNG',
94
- message: 'Buyer reference (Leitweg-ID) is mandatory for B2G invoices in Germany',
95
- btReference: 'BT-10',
96
- field: 'buyerReference'
97
- });
98
- }
99
- return results;
100
- }
101
- /**
102
- * Check if string looks like a Leitweg-ID
103
- */
104
- looksLikeLeitwegId(value) {
105
- // Contains dashes and numbers in the right proportion
106
- return value.includes('-') && /^\d+-\d+-\d+$/.test(value.trim());
107
- }
108
- /**
109
- * Check if this is a B2G invoice
110
- */
111
- isB2GInvoice(invoice) {
112
- // Check if buyer is a public entity (simplified check)
113
- const buyerName = invoice.to?.name?.toLowerCase() || '';
114
- const buyerType = invoice.metadata?.extensions?.buyerType?.toLowerCase() || '';
115
- const publicIndicators = [
116
- 'bundesamt', 'landesamt', 'stadtverwaltung', 'gemeinde',
117
- 'ministerium', 'behörde', 'öffentlich', 'public', 'government'
118
- ];
119
- return publicIndicators.some(indicator => buyerName.includes(indicator) || buyerType.includes(indicator));
120
- }
121
- /**
122
- * Validate mandatory buyer reference (BT-10)
123
- * Rule: XR-DE-15
49
+ * The buyer reference (BT-10) is stated (BR-DE-15). In German public procurement it carries
50
+ * the Leitweg-ID; the XRechnung rules do not check its format.
124
51
  */
125
52
  validateBuyerReference(invoice) {
126
- const results = [];
127
- const buyerReference = invoice.metadata?.buyerReference || invoice.buyerReference || '';
128
- // Skip if B2G invoice - already handled in validateLeitwegId
129
- if (this.isB2GInvoice(invoice)) {
130
- return results;
53
+ const buyerReference = invoice.buyerReference || '';
54
+ if (buyerReference.trim().length > 0) {
55
+ return [];
131
56
  }
132
- if (!buyerReference || buyerReference.trim().length === 0) {
133
- results.push({
134
- ruleId: 'XR-DE-15',
57
+ return [{
58
+ ruleId: 'BR-DE-15',
135
59
  severity: 'error',
136
60
  source: 'XRECHNUNG',
137
- message: 'Buyer reference (BT-10) is mandatory in XRechnung',
61
+ message: 'The buyer reference (BT-10) is stated',
138
62
  btReference: 'BT-10',
139
63
  field: 'buyerReference'
140
- });
141
- }
142
- return results;
143
- }
144
- /**
145
- * Validate payment details (IBAN/BIC for SEPA)
146
- * Rules: XR-DE-19, XR-DE-20
147
- */
148
- validatePaymentDetails(invoice) {
149
- const results = [];
150
- // Check payment means
151
- const paymentMeans = invoice.metadata?.extensions?.paymentMeans;
152
- if (!paymentMeans || paymentMeans.length === 0) {
153
- return results; // No payment details to validate
154
- }
155
- for (const payment of paymentMeans) {
156
- // Validate IBAN if present
157
- if (payment.iban) {
158
- const ibanResult = this.validateIBAN(payment.iban);
159
- if (!ibanResult.valid) {
160
- results.push({
161
- ruleId: 'XR-DE-19',
162
- severity: 'error',
163
- source: 'XRECHNUNG',
164
- message: `Invalid IBAN: ${ibanResult.message}`,
165
- btReference: 'BT-84',
166
- field: 'iban',
167
- value: payment.iban
168
- });
169
- }
170
- // Check if IBAN country is in SEPA zone
171
- const countryCode = payment.iban.substring(0, 2);
172
- if (!XRechnungValidator.SEPA_COUNTRIES.has(countryCode)) {
173
- results.push({
174
- ruleId: 'XR-DE-19',
175
- severity: 'warning',
176
- source: 'XRECHNUNG',
177
- message: `IBAN country ${countryCode} is not in SEPA zone`,
178
- btReference: 'BT-84',
179
- field: 'iban',
180
- value: payment.iban
181
- });
182
- }
183
- }
184
- // Validate BIC if present
185
- if (payment.bic) {
186
- const bicResult = this.validateBIC(payment.bic);
187
- if (!bicResult.valid) {
188
- results.push({
189
- ruleId: 'XR-DE-20',
190
- severity: 'error',
191
- source: 'XRECHNUNG',
192
- message: `Invalid BIC: ${bicResult.message}`,
193
- btReference: 'BT-86',
194
- field: 'bic',
195
- value: payment.bic
196
- });
197
- }
198
- }
199
- // For German domestic payments, BIC is optional if IBAN starts with DE
200
- if (payment.iban?.startsWith('DE') && !payment.bic) {
201
- // This is fine, BIC is optional for domestic German payments
202
- }
203
- else if (payment.iban && !payment.iban.startsWith('DE') && !payment.bic) {
204
- results.push({
205
- ruleId: 'XR-DE-20',
206
- severity: 'warning',
207
- source: 'XRECHNUNG',
208
- message: 'BIC is recommended for international SEPA transfers',
209
- btReference: 'BT-86',
210
- field: 'bic'
211
- });
212
- }
213
- }
214
- return results;
215
- }
216
- /**
217
- * Validate IBAN format and checksum
218
- */
219
- validateIBAN(iban) {
220
- // Remove spaces and convert to uppercase
221
- const cleanIBAN = iban.replace(/\s/g, '').toUpperCase();
222
- // Check basic format
223
- if (!/^[A-Z]{2}[0-9]{2}[A-Z0-9]+$/.test(cleanIBAN)) {
224
- return { valid: false, message: 'Invalid IBAN format' };
225
- }
226
- // Get country code
227
- const countryCode = cleanIBAN.substring(0, 2);
228
- // Check country-specific format
229
- const countryFormat = XRechnungValidator.IBAN_PATTERNS[countryCode];
230
- if (countryFormat) {
231
- if (cleanIBAN.length !== countryFormat.length) {
232
- return {
233
- valid: false,
234
- message: `Invalid IBAN length for ${countryCode}: expected ${countryFormat.length}, got ${cleanIBAN.length}`
235
- };
236
- }
237
- if (!countryFormat.pattern.test(cleanIBAN)) {
238
- return {
239
- valid: false,
240
- message: `Invalid IBAN format for ${countryCode}`
241
- };
242
- }
243
- }
244
- // Validate checksum using mod-97 algorithm
245
- const rearranged = cleanIBAN.substring(4) + cleanIBAN.substring(0, 4);
246
- const numeric = rearranged.replace(/[A-Z]/g, char => (char.charCodeAt(0) - 55).toString());
247
- // Calculate mod 97 for large numbers
248
- let remainder = 0;
249
- for (let i = 0; i < numeric.length; i++) {
250
- remainder = (remainder * 10 + parseInt(numeric[i])) % 97;
251
- }
252
- if (remainder !== 1) {
253
- return { valid: false, message: 'Invalid IBAN checksum' };
254
- }
255
- return { valid: true };
256
- }
257
- /**
258
- * Validate BIC format
259
- */
260
- validateBIC(bic) {
261
- const cleanBIC = bic.replace(/\s/g, '').toUpperCase();
262
- if (!XRechnungValidator.BIC_PATTERN.test(cleanBIC)) {
263
- return {
264
- valid: false,
265
- message: 'Invalid BIC format. Expected 8 or 11 alphanumeric characters'
266
- };
267
- }
268
- // Additional validation could check if BIC exists in SWIFT directory
269
- // but that requires external data
270
- return { valid: true };
64
+ }];
271
65
  }
272
66
  /**
273
- * Validate seller contact details
274
- * Rule: XR-DE-02
67
+ * The seller contact (BG-6), as the XRechnung encoder writes it from the seller
68
+ * (`metadata.contactInformation`, otherwise its name, telephone number and email address):
69
+ * BR-DE-2 asks for it, BR-DE-27 and BR-DE-28 ask a telephone number (BT-42) and an email
70
+ * address (BT-43) to have the forms the XRechnung rules state (warnings).
275
71
  */
276
72
  validateSellerContact(invoice) {
277
73
  const results = [];
278
- // Seller contact is mandatory in XRechnung
279
- const sellerContact = invoice.metadata?.extensions?.sellerContact;
280
- if (!sellerContact || (!sellerContact.name && !sellerContact.email && !sellerContact.phone)) {
74
+ const sellerContact = getPartyContact(invoice.from);
75
+ if (!sellerContact) {
281
76
  results.push({
282
- ruleId: 'XR-DE-02',
77
+ ruleId: 'BR-DE-2',
283
78
  severity: 'error',
284
79
  source: 'XRECHNUNG',
285
- message: 'Seller contact information (name, email, or phone) is mandatory in XRechnung',
80
+ message: 'The seller contact (BG-6) is stated',
286
81
  bgReference: 'BG-6',
287
- field: 'sellerContact'
82
+ field: 'from'
288
83
  });
84
+ return results;
289
85
  }
290
- // Validate email format if present
291
- if (sellerContact?.email && !this.isValidEmail(sellerContact.email)) {
86
+ // XR-TELEPHONE-REGEX of the XRechnung rules: at least three digits
87
+ if (sellerContact.phone && !/([0-9].*){3,}/.test(sellerContact.phone.trim())) {
292
88
  results.push({
293
- ruleId: 'XR-DE-02',
89
+ ruleId: 'BR-DE-27',
294
90
  severity: 'warning',
295
91
  source: 'XRECHNUNG',
296
- message: `Invalid email format: ${sellerContact.email}`,
297
- btReference: 'BT-43',
298
- field: 'email',
299
- value: sellerContact.email
92
+ message: `The seller contact telephone number (BT-42) contains at least three digits: ${sellerContact.phone}`,
93
+ btReference: 'BT-42',
94
+ field: 'from.phone',
95
+ value: sellerContact.phone
300
96
  });
301
97
  }
302
- // Validate phone format if present (basic validation)
303
- if (sellerContact?.phone && !this.isValidPhone(sellerContact.phone)) {
98
+ // XR-EMAIL-REGEX of the XRechnung rules
99
+ if (sellerContact.email && !/^[^@\s]+@([^@.\s]+\.)+[^@.\s]+$/.test(sellerContact.email.trim())) {
304
100
  results.push({
305
- ruleId: 'XR-DE-02',
101
+ ruleId: 'BR-DE-28',
306
102
  severity: 'warning',
307
103
  source: 'XRECHNUNG',
308
- message: `Invalid phone format: ${sellerContact.phone}`,
309
- btReference: 'BT-42',
310
- field: 'phone',
311
- value: sellerContact.phone
104
+ message: `The seller contact email address (BT-43) has exactly one @, with a domain after it: ${sellerContact.email}`,
105
+ btReference: 'BT-43',
106
+ field: 'from.email',
107
+ value: sellerContact.email
312
108
  });
313
109
  }
314
110
  return results;
315
111
  }
316
112
  /**
317
- * Validate email format
318
- */
319
- isValidEmail(email) {
320
- const emailPattern = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
321
- return emailPattern.test(email);
322
- }
323
- /**
324
- * Validate phone format (basic)
325
- */
326
- isValidPhone(phone) {
327
- // Remove common formatting characters
328
- const cleanPhone = phone.replace(/[\s\-\(\)\.]/g, '');
329
- // Check if it contains only numbers and optional + at start
330
- return /^\+?[0-9]{6,15}$/.test(cleanPhone);
331
- }
332
- /**
333
- * Validate tax registration details
334
- * Rules: XR-DE-03, XR-DE-04
113
+ * The seller VAT identifier (BT-31) or tax registration identifier (BT-32) of the seller's
114
+ * registration details, `vatId` and `taxNumber` (BR-DE-16). The rule applies when a line
115
+ * states a VAT category code S, Z, E, AE, K, G, L or M; the encoders write S or AE for every
116
+ * line. It also accepts a tax representative (BG-11), which the envelope cannot state.
335
117
  */
336
118
  validateTaxRegistration(invoice) {
337
119
  const results = [];
338
- const sellerVatId = invoice.metadata?.sellerTaxId ||
339
- (invoice.from?.type === 'company' ? invoice.from.registrationDetails?.vatId : undefined) ||
340
- invoice.metadata?.extensions?.sellerVatId;
341
- const sellerTaxId = invoice.metadata?.extensions?.sellerTaxId;
342
- // Either VAT ID or Tax ID must be present
343
- if (!sellerVatId && !sellerTaxId) {
120
+ const sellerVatId = invoice.from?.registrationDetails?.vatId?.trim() || '';
121
+ const sellerTaxNumber = invoice.from?.registrationDetails?.taxNumber?.trim() || '';
122
+ if ((invoice.items ?? []).length > 0 && !sellerVatId && !sellerTaxNumber) {
344
123
  results.push({
345
- ruleId: 'XR-DE-03',
124
+ ruleId: 'BR-DE-16',
346
125
  severity: 'error',
347
126
  source: 'XRECHNUNG',
348
- message: 'Either seller VAT ID (BT-31) or Tax ID (BT-32) must be provided',
127
+ message: 'The seller states its VAT identifier (BT-31) or tax registration identifier (BT-32), from.registrationDetails.vatId or .taxNumber',
349
128
  btReference: 'BT-31',
350
- field: 'sellerTaxRegistration'
129
+ field: 'from.registrationDetails'
351
130
  });
352
131
  }
353
- // Validate German VAT ID format if present
354
- if (sellerVatId && sellerVatId.startsWith('DE')) {
355
- if (!this.isValidGermanVatId(sellerVatId)) {
356
- results.push({
357
- ruleId: 'XR-DE-04',
358
- severity: 'error',
359
- source: 'XRECHNUNG',
360
- message: `Invalid German VAT ID format: ${sellerVatId}`,
361
- btReference: 'BT-31',
362
- field: 'vatId',
363
- value: sellerVatId
364
- });
365
- }
366
- }
367
- // Validate German Tax ID format if present
368
- if (sellerTaxId && this.looksLikeGermanTaxId(sellerTaxId)) {
369
- if (!this.isValidGermanTaxId(sellerTaxId)) {
370
- results.push({
371
- ruleId: 'XR-DE-04',
372
- severity: 'warning',
373
- source: 'XRECHNUNG',
374
- message: `Invalid German Tax ID format: ${sellerTaxId}`,
375
- btReference: 'BT-32',
376
- field: 'taxId',
377
- value: sellerTaxId
378
- });
379
- }
132
+ // The package's own check of the German VAT identification number format (no official rule)
133
+ if (isMalformedGermanVatId(sellerVatId)) {
134
+ results.push({
135
+ ruleId: GERMAN_VAT_ID_FORMAT_CODE,
136
+ severity: 'error',
137
+ source: EINVOICE_RULE_SOURCE,
138
+ message: germanVatIdFormatMessage(sellerVatId),
139
+ btReference: 'BT-31',
140
+ field: 'from.registrationDetails.vatId',
141
+ value: sellerVatId
142
+ });
380
143
  }
381
144
  return results;
382
145
  }
383
- /**
384
- * Validate German VAT ID format
385
- */
386
- isValidGermanVatId(vatId) {
387
- // German VAT ID: DE followed by 9 digits
388
- const germanVatPattern = /^DE[0-9]{9}$/;
389
- return germanVatPattern.test(vatId.replace(/\s/g, ''));
390
- }
391
- /**
392
- * Check if value looks like a German Tax ID
393
- */
394
- looksLikeGermanTaxId(value) {
395
- const clean = value.replace(/[\s\/\-]/g, '');
396
- return /^[0-9]{10,11}$/.test(clean);
397
- }
398
- /**
399
- * Validate German Tax ID format
400
- */
401
- isValidGermanTaxId(taxId) {
402
- // German Tax ID: 11 digits with specific checksum algorithm
403
- const clean = taxId.replace(/[\s\/\-]/g, '');
404
- if (!/^[0-9]{11}$/.test(clean)) {
405
- return false;
406
- }
407
- // Simplified validation - full algorithm would require checksum calculation
408
- // At least check that not all digits are the same
409
- const firstDigit = clean[0];
410
- return !clean.split('').every(digit => digit === firstDigit);
411
- }
412
146
  /**
413
147
  * Create XRechnung profile validator instance
414
148
  */
@@ -416,4 +150,4 @@ export class XRechnungValidator {
416
150
  return new XRechnungValidator();
417
151
  }
418
152
  }
419
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieHJlY2hudW5nLnZhbGlkYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3RzL2Zvcm1hdHMvdmFsaWRhdGlvbi94cmVjaG51bmcudmFsaWRhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUlILE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRTVEOztHQUVHO0FBQ0gsTUFBTSxPQUFPLGtCQUFrQjtJQUNyQixNQUFNLENBQVUsa0JBQWtCLEdBQUcsc0NBQXNDLENBQUM7SUFDNUUsTUFBTSxDQUFVLGFBQWEsR0FBd0Q7UUFDM0YsRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsK0JBQStCLEVBQUU7UUFDNUQsRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsK0JBQStCLEVBQUU7UUFDNUQsRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsa0NBQWtDLEVBQUU7UUFDL0QsRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsa0RBQWtELEVBQUU7UUFDL0UsRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsK0JBQStCLEVBQUU7UUFDNUQsRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsc0NBQXNDLEVBQUU7UUFDbkUsRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsK0NBQStDLEVBQUU7UUFDNUUsRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsK0NBQStDLEVBQUU7S0FDN0UsQ0FBQztJQUNNLE1BQU0sQ0FBVSxXQUFXLEdBQUcscUNBQXFDLENBQUM7SUFFNUUsaUJBQWlCO0lBQ1QsTUFBTSxDQUFVLGNBQWMsR0FB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
153
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieHJlY2hudW5nLnZhbGlkYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3RzL2Zvcm1hdHMvdmFsaWRhdGlvbi94cmVjaG51bmcudmFsaWRhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUdILE9BQU8sRUFBRSxvQkFBb0IsRUFBeUIsTUFBTSx1QkFBdUIsQ0FBQztBQUNwRixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDNUQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLHdCQUF3QixFQUFFLHNCQUFzQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFakg7O0dBRUc7QUFDSCxNQUFNLE9BQU8sa0JBQWtCO0lBQzdCOztPQUVHO0lBQ0gsaUJBQWlCLENBQUMsT0FBaUI7UUFDakMsTUFBTSxPQUFPLEdBQXVCLEVBQUUsQ0FBQztRQUV2Qyx3Q0FBd0M7UUFDeEMsSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ3RDLE9BQU8sT0FBTyxDQUFDLENBQUMsaUNBQWlDO1FBQ25ELENBQUM7UUFFRCw0QkFBNEI7UUFDNUIsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1FBQ3RELE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUNyRCxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFFdkQsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztJQUVEOztPQUVHO0lBQ0ssa0JBQWtCLENBQUMsT0FBaUI7UUFDMUMsTUFBTSxTQUFTLEdB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
@@ -28,6 +28,7 @@ import { ZUGFeRDEncoder } from './formats/cii/zugferd/zugferd.encoder.js';
28
28
  import { ZUGFeRDValidator } from './formats/cii/zugferd/zugferd.validator.js';
29
29
  import { ZUGFeRDV1Decoder } from './formats/cii/zugferd/zugferd.v1.decoder.js';
30
30
  export type { TInvoice, TCorrectedInvoice, TCorrectedInvoiceReference, TInvoiceCorrection, TCreditNote, TDebitNote, TSelfBilledInvoice, TAccountingDoc, TAccountingDocType, TAccountingDocEnvelope, TInvoiceDocument, TContact, TLetterEnvelope, TDocumentEnvelope, IPdf, ValidationError, ValidationResult, IValidator, ExportFormat, EInvoiceOptions } from './interfaces/common.js';
31
+ export type { IEInvoiceStatedValues, IStatedDocumentTotals, IStatedVatBreakdown, IStatedLine, IStatedAllowanceCharge, } from './interfaces/stated.values.js';
31
32
  export { ValidationLevel, InvoiceFormat } from './interfaces/common.js';
32
33
  export { common as interfaces };
33
34
  export { EInvoice };
package/dist_ts/index.js CHANGED
@@ -98,4 +98,4 @@ export function validateXml(xml, level = common.ValidationLevel.SYNTAX) {
98
98
  export function createEInvoice() {
99
99
  return new EInvoice();
100
100
  }
101
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxvQkFBb0I7QUFDcEIsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV6QyxvQkFBb0I7QUFDcEIsT0FBTyxLQUFLLE1BQU0sTUFBTSx3QkFBd0IsQ0FBQztBQUVqRCxtQkFBbUI7QUFDbkIsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUN4RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUU1RSxzQkFBc0I7QUFDdEIsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzdELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUM3RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFFakUsMEJBQTBCO0FBQzFCLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDOUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFFbEUsMEJBQTBCO0FBQzFCLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDOUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFFbEUsdUJBQXVCO0FBQ3ZCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUM1RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDOUQsT0FBTyxFQUNMLGdCQUFnQixF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
101
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxvQkFBb0I7QUFDcEIsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV6QyxvQkFBb0I7QUFDcEIsT0FBTyxLQUFLLE1BQU0sTUFBTSx3QkFBd0IsQ0FBQztBQUVqRCxtQkFBbUI7QUFDbkIsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUN4RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUU1RSxzQkFBc0I7QUFDdEIsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzdELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUM3RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFFakUsMEJBQTBCO0FBQzFCLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDOUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFFbEUsMEJBQTBCO0FBQzFCLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDOUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFFbEUsdUJBQXVCO0FBQ3ZCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUM1RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDOUQsT0FBTyxFQUNMLGdCQUFnQixF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
@@ -14,10 +14,6 @@ export interface IEInvoiceMetadata {
14
14
  vatAccountingCurrency?: string;
15
15
  documentTypeCode?: string;
16
16
  paymentMeansCode?: string;
17
- amountDue?: number;
18
- sellerTaxId?: string;
19
- buyerTaxId?: string;
20
- buyerReference?: string;
21
17
  profileId?: string;
22
18
  paymentTerms?: string;
23
19
  deliveryAddress?: {