Invoiceer e-invoicing tools

Create and validate XRechnung, ZUGFeRD and Peppol e-invoices (KoSIT); Peppol lookup, rule help.

Should I use this

Quality & Safety

A
Description quality
95%
Schema completeness
95%
Naming quality
93%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Findings (1)

  • LOWTool 'explain_rule' description lacks action verbin explain_rule

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~2,007Tokens (tool definitions)
~2.2 KBTypical response size
Moderate attention impact (1.57% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "einvoicing": {
      "url": "https://invoiceer.io/mcp"
    }
  }
}

Remote endpoints

https://invoiceer.io/mcpstreamable-http

What it can do

Tool inventory

Tools (6)

๐ŸŸข Read-only๐ŸŸก Write๐Ÿ”ด Deleteโšช Unknown
๐ŸŸขvalidate_einvoice(xml, file_base64, france)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "xml": {
      "type": "string",
      "description": "The invoice XML (UBL or CII) as text."
    },
    "file_base64": {
      "type": "string",
      "description": "Alternative: the file (ZUGFeRD/Factur-X PDF or XML), base64-encoded."
    },
    "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."
    }
  }
}
๐ŸŸขpeppol_lookup(query)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "description": "Peppol ID, VAT number or enterprise number."
    }
  },
  "required": [
    "query"
  ]
}
๐ŸŸขcheck_leitweg_id(leitweg_id, lang)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "leitweg_id": {
      "type": "string",
      "description": "e.g. 991-33333TEST-33"
    },
    "lang": {
      "type": "string",
      "enum": [
        "en",
        "de"
      ],
      "default": "en"
    }
  },
  "required": [
    "leitweg_id"
  ]
}
๐ŸŸขcreate_einvoice(format, number, issue_date, due_date, currency, ...)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "format": {
      "type": "string",
      "enum": [
        "xrechnung-ubl",
        "xrechnung-cii",
        "zugferd",
        "peppol"
      ],
      "default": "xrechnung-ubl"
    },
    "number": {
      "type": "string"
    },
    "issue_date": {
      "type": "string",
      "description": "YYYY-MM-DD, default today"
    },
    "due_date": {
      "type": "string",
      "description": "YYYY-MM-DD, default issue + 14 days"
    },
    "currency": {
      "type": "string",
      "default": "EUR"
    },
    "seller": {
      "type": "object",
      "required": [
        "name",
        "country"
      ],
      "properties": {
        "name": {
          "type": "string"
        },
        "street": {
          "type": "string"
        },
        "zip": {
          "type": "string"
        },
        "city": {
          "type": "string"
        },
        "country": {
          "type": "string",
          "description": "2-letter code, e.g. DE, BE"
        },
        "vat": {
          "type": "string",
          "description": "VAT ID, e.g. DE123456789"
        },
        "legal_id": {
          "type": "string",
          "description": "Company registration number"
        },
        "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)"
        },
        "email": {
          "type": "string"
        },
        "contact": {
          "type": "string",
          "description": "Contact person"
        },
        "phone": {
          "type": "string"
        },
        "peppol_id": {
          "type": "string",
          "description": "e.g. 0208:0123456749 (needed for Peppol)"
        }
      }
    },
    "buyer": {
      "type": "object",
      "required": [
        "name",
        "country"
      ],
      "properties": {
        "name": {
          "type": "string"
        },
        "street": {
          "type": "string"
        },
        "zip": {
          "type": "string"
        },
        "city": {
          "type": "string"
        },
        "country": {
          "type": "string",
          "description": "2-letter code, e.g. DE, BE"
        },
        "vat": {
          "type": "string",
          "description": "VAT ID, e.g. DE123456789"
        },
        "legal_id": {
          "type": "string",
          "description": "Company registration number"
        },
        "email": {
          "type": "string"
        },
        "contact": {
          "type": "string",
          "description": "Contact person"
        },
        "phone": {
          "type": "string"
        },
        "peppol_id": {
          "type": "string",
          "description": "e.g. 0208:0123456749 (needed for Peppol)"
        }
      }
    },
    "lines": {
      "type": "array",
      "minItems": 1,
      "items": {
        "type": "object",
        "required": [
          "name",
          "price"
        ],
        "properties": {
          "name": {
            "type": "string"
          },
          "qty": {
            "type": "number",
            "default": 1
          },
          "unit": {
            "type": "string",
            "enum": [
              "C62",
              "HUR",
              "DAY",
              "MON",
              "KGM",
              "MTR",
              "LS"
            ],
            "default": "C62"
          },
          "price": {
            "type": "number",
            "description": "Net unit price"
          },
          "vat_category": {
            "type": "string",
            "enum": [
              "S",
              "Z",
              "E",
              "AE",
              "K",
              "O",
              "G"
            ],
            "default": "S"
          },
          "vat_rate": {
            "type": "number",
            "description": "Percent, e.g. 19 (for category S)"
          }
        }
      }
    },
    "buyer_reference": {
      "type": "string"
    },
    "order_reference": {
      "type": "string"
    },
    "payment_terms": {
      "type": "string"
    },
    "skonto_days": {
      "type": "integer",
      "description": "Early-payment discount (Skonto): days; written into BT-20 in the XRechnung format (BR-DE-18)"
    },
    "skonto_percent": {
      "type": "number",
      "description": "Skonto percentage, e.g. 2"
    },
    "skonto_base": {
      "type": "number",
      "description": "Optional base amount if Skonto applies to part of the amount due"
    },
    "paid_amount": {
      "type": "number",
      "description": "Already paid (BT-113), e.g. down payments"
    },
    "iban": {
      "type": "string"
    },
    "bic": {
      "type": "string"
    },
    "payment_reference": {
      "type": "string"
    },
    "note": {
      "type": "string"
    },
    "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"
    },
    "credit_note": {
      "type": "boolean",
      "default": false
    },
    "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)"
    },
    "delivery_date": {
      "type": "string",
      "description": "YYYY-MM-DD delivery / service date (BT-72); default: issue date unless a period is given"
    },
    "period_start": {
      "type": "string"
    },
    "period_end": {
      "type": "string"
    }
  },
  "required": [
    "number",
    "seller",
    "buyer",
    "lines"
  ]
}
๐ŸŸขread_invoice_pdf(file_base64)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "file_base64": {
      "type": "string",
      "description": "The PDF invoice, base64-encoded."
    }
  },
  "required": [
    "file_base64"
  ]
}
๐ŸŸขexplain_rule(code)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "code": {
      "type": "string",
      "description": "Rule code, e.g. BR-DE-15 or BR-CO-10."
    }
  },
  "required": [
    "code"
  ]
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded6 tools