Create and validate XRechnung, ZUGFeRD and Peppol e-invoices (KoSIT); Peppol lookup, rule help.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Check a German Leitweg-ID (buyer reference BT-10 for invoices to German public authorities) against the official format and check digit (spec v2.0.2), and whether the authority is registered on Peppol (peppol_registered). Returns validity, the parts and the expected check digits.
e.g. 991-33333TEST-33
Check a German Leitweg-ID (buyer reference BT-10 for invoices to German public authorities) against the official format and check digit (spec v2.0.2), and whether the authority is registered on Peppol (peppol_registered). Returns validity, the parts and the expected check digits.
| Argument | Type | Description |
|---|---|---|
| lang | string | |
| leitweg_id* | string | e.g. 991-33333TEST-33 |
{
"type": "object",
"required": [
"leitweg_id"
],
"properties": {
"lang": {
"enum": [
"en",
"de"
],
"type": "string",
"default": "en"
},
"leitweg_id": {
"type": "string",
"description": "e.g. 991-33333TEST-33"
}
}
}Create a valid e-invoice from structured data: XRechnung 3.0 (UBL or CII), ZUGFeRD / Factur-X PDF (EN 16931) or Peppol BIS Billing 3.0. The file is checked with the official KoSIT validator before it is returned; if it fails, you get the rule errors instead of a file. XML comes back as text in `xml`, the ZUGFeRD PDF as base64 in `pdf_base64`. XRechnung needs a seller contact (contact, phone, email), a buyer email or Peppol ID (electronic address), a buyer_reference (Leitweg-ID for German authorities) and payment details (iban). Peppol needs peppol_id for seller and buyer.
| Argument | Type | Description |
|---|---|---|
| bic | string | |
| iban | string | |
| note | string | |
| buyer* | object | |
| lines* | array | |
| format | string | |
| number* | string | |
| seller* | object | |
| currency | string | |
| due_date | string | YYYY-MM-DD, default issue + 14 days |
| issue_date | string | YYYY-MM-DD, default today |
| period_end | string | |
| credit_note | boolean | |
| paid_amount | number | Already paid (BT-113), e.g. down payments |
Explain an e-invoice business rule code (EN 16931 BR-*, BR-CO-*, XRechnung BR-DE-*, Peppol PEPPOL-EN16931-*): official text (with an English translation for German-only rules), plain-language meaning, severity, the fields (BT/BG) involved and a link to the reference page.
| Argument | Type | Description |
|---|---|---|
| code* | string | Rule code, e.g. BR-DE-15 or BR-CO-10. |
{
"type": "object",
"required": [
"code"
],
"properties": {
"code": {
"type": "string",
"description": "Rule code, e.g. BR-DE-15 or BR-CO-10."
}
}
}Check whether a company can receive e-invoices over Peppol. Accepts a Peppol ID (e.g. 0208:0123456749), a VAT number (e.g. BE0123456749, NL...B01) or a Belgian enterprise number. Returns each matching participant ID, whether it is registered, whether it accepts Peppol BIS invoices, and name/country from the Peppol Directory when published.
| Argument | Type | Description |
|---|---|---|
| query* | string | Peppol ID, VAT number or enterprise number. |
{
"type": "object",
"required": [
"query"
],
"properties": {
"query": {
"type": "string",
"description": "Peppol ID, VAT number or enterprise number."
}
}
}Read an ordinary (non-e-invoice) PDF invoice and return its data in the input format of create_einvoice: seller and buyer (name, address, VAT ID, country), invoice number, dates, IBAN/BIC, Leitweg-ID and the invoice lines (only if quantity x price and the line sum match the PDF's net total; otherwise one line with the net total). Regex-based, no guessing: fields we can't read reliably are missing and listed in `missing`. Check and complete them, then call create_einvoice to get XRechnung, ZUGFeRD or Peppol. Scanned PDFs (no text layer) are not supported. Pass the PDF base64-encoded in `file_base64`. Max 5 MB.
| Argument | Type | Description |
|---|---|---|
| file_base64* | string | The PDF invoice, base64-encoded. |
{
"type": "object",
"required": [
"file_base64"
],
"properties": {
"file_base64": {
"type": "string",
"description": "The PDF invoice, base64-encoded."
}
}
}Validate an e-invoice (XRechnung UBL/CII, ZUGFeRD / Factur-X PDF, Peppol BIS Billing 3.0, EN 16931) with the official KoSIT validator. Returns valid/invalid, the detected format, every error and warning with its rule code, and the exact corrected value for common calculation errors. Pass the XML as text in `xml`, or a PDF/XML file base64-encoded in `file_base64`. Max 5 MB.
| Argument | Type | Description |
|---|---|---|
| xml | string | The invoice XML (UBL or CII) as text. |
| france | boolean | Also check the French rules (BR-FR, XP Z12-012), reported as a separate `france` block. Automatic when the seller country is FR. |
| file_base64 | string | Alternative: the file (ZUGFeRD/Factur-X PDF or XML), base64-encoded. |
{
"type": "object",
"properties": {
"xml": {
"type": "string",
"description": "The invoice XML (UBL or CII) as text."
},
"france": {
"type": "boolean",
"description": "Also check the French rules (BR-FR, XP Z12-012), reported as a separate `france` block. Automatic when the seller country is FR."
},
"file_base64": {
"type": "string",
"description": "Alternative: the file (ZUGFeRD/Factur-X PDF or XML), base64-encoded."
}
}
}| skonto_base |
| number |
| Optional base amount if Skonto applies to part of the amount due |
| skonto_days | integer | Early-payment discount (Skonto): days; written into BT-20 in the XRechnung format (BR-DE-18) |
| period_start | string |
| delivery_date | string | YYYY-MM-DD delivery / service date (BT-72); default: issue date unless a period is given |
| exempt_reason | string | BT-120 text for VAT-exempt (E) lines; default for DE/FR small businesses without VAT ID: § 19 UStG / art. 293 B CGI |
| payment_terms | string |
| skonto_percent | number | Skonto percentage, e.g. 2 |
| buyer_reference | string |
| order_reference | string |
| payment_reference | string |
| preceding_invoice | string | Original invoice number (credit notes) |
| preceding_invoice_date | string | YYYY-MM-DD, date of the original invoice (BT-26; required for French sellers) |
{
"type": "object",
"required": [
"number",
"seller",
"buyer",
"lines"
],
"properties": {
"bic": {
"type": "string"
},
"iban": {
"type": "string"
},
"note": {
"type": "string"
},
"buyer": {
"type": "object",
"required": [
"name",
"country"
],
"properties": {
"vat": {
"type": "string",
"description": "VAT ID, e.g. DE123456789"
},
"zip": {
"type": "string"
},
"city": {
"type": "string"
},
"name": {
"type": "string"
},
"email": {
"type": "string"
},
"phone": {
"type": "string"
},
"street": {
"type": "string"
},
"contact": {
"type": "string",
"description": "Contact person"
},
"country": {
"type": "string",
"description": "2-letter code, e.g. DE, BE"
},
"legal_id": {
"type": "string",
"description": "Company registration number"
},
"peppol_id": {
"type": "string",
"description": "e.g. 0208:0123456749 (needed for Peppol)"
}
}
},
"lines": {
"type": "array",
"items": {
"type": "object",
"required": [
"name",
"price"
],
"properties": {
"qty": {
"type": "number",
"default": 1
},
"name": {
"type": "string"
},
"unit": {
"enum": [
"C62",
"HUR",
"DAY",
"MON",
"KGM",
"MTR",
"LS"
],
"type": "string",
"default": "C62"
},
"price": {
"type": "number",
"description": "Net unit price"
},
"vat_rate": {
"type": "number",
"description": "Percent, e.g. 19 (for category S)"
},
"vat_category": {
"enum": [
"S",
"Z",
"E",
"AE",
"K",
"O",
"G"
],
"type": "string",
"default": "S"
}
}
},
"minItems": 1
},
"format": {
"enum": [
"xrechnung-ubl",
"xrechnung-cii",
"zugferd",
"peppol"
],
"type": "string",
"default": "xrechnung-ubl"
},
"number": {
"type": "string"
},
"seller": {
"type": "object",
"required": [
"name",
"country"
],
"properties": {
"vat": {
"type": "string",
"description": "VAT ID, e.g. DE123456789"
},
"zip": {
"type": "string"
},
"city": {
"type": "string"
},
"name": {
"type": "string"
},
"email": {
"type": "string"
},
"phone": {
"type": "string"
},
"street": {
"type": "string"
},
"contact": {
"type": "string",
"description": "Contact person"
},
"country": {
"type": "string",
"description": "2-letter code, e.g. DE, BE"
},
"legal_id": {
"type": "string",
"description": "Company registration number"
},
"peppol_id": {
"type": "string",
"description": "e.g. 0208:0123456749 (needed for Peppol)"
},
"tax_number": {
"type": "string",
"description": "Tax number (BT-32) if the seller has no VAT ID: German Steuernummer (Kleinunternehmer), French SIREN (franchise en base)"
},
"supplier_id": {
"type": "string",
"description": "Seller identifier at the buyer (BT-29)"
}
}
},
"currency": {
"type": "string",
"default": "EUR"
},
"due_date": {
"type": "string",
"description": "YYYY-MM-DD, default issue + 14 days"
},
"issue_date": {
"type": "string",
"description": "YYYY-MM-DD, default today"
},
"period_end": {
"type": "string"
},
"credit_note": {
"type": "boolean",
"default": false
},
"paid_amount": {
"type": "number",
"description": "Already paid (BT-113), e.g. down payments"
},
"skonto_base": {
"type": "number",
"description": "Optional base amount if Skonto applies to part of the amount due"
},
"skonto_days": {
"type": "integer",
"description": "Early-payment discount (Skonto): days; written into BT-20 in the XRechnung format (BR-DE-18)"
},
"period_start": {
"type": "string"
},
"delivery_date": {
"type": "string",
"description": "YYYY-MM-DD delivery / service date (BT-72); default: issue date unless a period is given"
},
"exempt_reason": {
"type": "string",
"description": "BT-120 text for VAT-exempt (E) lines; default for DE/FR small businesses without VAT ID: § 19 UStG / art. 293 B CGI"
},
"payment_terms": {
"type": "string"
},
"skonto_percent": {
"type": "number",
"description": "Skonto percentage, e.g. 2"
},
"buyer_reference": {
"type": "string"
},
"order_reference": {
"type": "string"
},
"payment_reference": {
"type": "string"
},
"preceding_invoice": {
"type": "string",
"description": "Original invoice number (credit notes)"
},
"preceding_invoice_date": {
"type": "string",
"description": "YYYY-MM-DD, date of the original invoice (BT-26; required for French sellers)"
}
}
}