电子发票合规服务器

一个MCP服务器,使AI代理能够验证、生成、解析和检查符合EN 16931标准的电子发票,无需编写任何集成代码。

  • by Mavengence
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 Mavengence/einvoice-mcp

使用说明

einvoice mcp

用于德国电子发票合规的MCP服务器——XRechnung 3.0和ZUGFeRD 2.x

MCP服务器,使AI代理(Claude、Cursor、Copilot)能够根据EN 16931验证、生成、解析和检查电子发票的合规性,而无需一行集成代码。


为什么存在

德国自2025年1月起强制B2B电子发票接收(BMF 2024-11-15)。发行授权将于2027年(Vorjahresumsat>80万)和2028年(所有企业)执行。每家德国公司都需要工具——这个MCP服务器为AI代理提供了这种能力。


合规证明

675次测试| 100%覆盖率(2106 stmts)| 0次失败|棉绒清洁(ruff+mypy严格)

跑 make test 以验证。

EN 16931/X计算3.0现场覆盖

在生成的XML输出中测试每个强制性业务术语:

BT 现场 测试 结果
BT-1 发票号码 test_contains_invoice_id 通行证
BT-2 发布日期 test_produces_valid_xml 通行证
BT-3 发票类型代码(380/381/384) test_type_code_380_rechnung, test_type_code_381_gutschrift 通行证
BT-5 货币代码(欧元) test_currency_eur 通行证
BT-10 买方参考/Liteweg ID test_buyer_reference_set 通行证
BT-27 卖方名称 test_contains_seller 通行证
BT-31 卖方增值税ID(schemeID=VA) test_tax_registration_scheme_id_correct 通行证
BT-32 卖方税号(schemeID=FC) test_steuernummer_bt32_scheme_fc 通行证
BT-34 卖方电子地址(schemaID=EM) test_seller_electronic_address_bt34 通行证
BT-35..38 卖方地址 test_contains_seller 通行证
BT-39 卖方国家细分 test_country_subdivision_seller_buyer 通行证
BT-40 卖方国家代码 test_contains_seller 通行证
BT-41 卖方联系人姓名(BR-DE-5) test_seller_contact_br_de_5 通行证
BT-42 卖家联系电话 test_seller_contact_phone 通行证
bt-43 卖家联系邮箱(br de-7) test_seller_contact_email_br_de_7 通行证
BT-44 买方名称 test_contains_buyer 通行证
BT-49 买方电子地址(方案ID=EM) test_buyer_electronic_address_bt49 通行证
BT-50..53 买方地址 test_contains_buyer 通行证
BT-54 买方国家细分 test_country_subdivision_seller_buyer 通行证
BT-55 买方国家代码 test_contains_buyer 通行证
BT-71 交货日期(美国法典第14条第4款第6项) test_delivery_date_bt71 通行证
BT-20 付款条件文本 test_payment_terms_text_roundtrip 通行证
BT-22 发票备注 test_invoice_note_roundtrip 通行证
BT-73/74 服务期开始/结束 test_service_period_bt73_bt74 通行证
BT-11 项目参考 test_project_reference_bt11 通行证
BT-12 合同参考 test_contract_reference_bt12 通行证
BT-13 采购订单参考 test_purchase_order_reference_bt13 通行证
BT-25 前面的发票号码 test_preceding_invoice_bt25 通行证
BT-81 付款方式类型代码 test_payment_means_type_code_custom 通行证
BT-83 汇款信息 test_remittance_information_roundtrip 通行证
BT-84 IBAN(SEPA贷记转账) test_iban_in_xml 通行证
BT-9 到期日 test_due_date_roundtrip 通行证
BT-14 销售订单参考 test_sales_order_roundtrip 通行证
BT-29 卖家注册ID(GLN) test_seller_registration_id_roundtrip 通行证
BT-36/37 卖家地址2/3行 test_address_lines_full_roundtrip 通行证
BT-44 买方联系人姓名 test_buyer_contact_roundtrip 通行证
BT-46 买方联系电话 test_buyer_contact_roundtrip 通行证
BT-47 买家联系邮箱 test_buyer_contact_roundtrip 通行证
BT-51/52 买方地址行2/3 test_address_lines_full_roundtrip 通行证
BT-70..80 交货地点 test_delivery_location_roundtrip 通行证
BT-127 行项目注释 test_item_note_roundtrip 通行证
BT-155 卖方项目标识符 test_seller_item_id_roundtrip 通行证
BT-156 买方项目标识符 test_buyer_item_id_roundtrip 通行证
BT-157 标准项目ID(GTIN) test_standard_item_id_roundtrip 通行证
BG-20/21 文件级津贴/费用 test_allowance_roundtrip 通行证
BG-27/28 线路级津贴/费用 test_line_allowance_roundtrip 通行证
BT-16 调度建议参考 test_despatch_advice_roundtrip 通行证
BT-18 发票对象标识符 test_invoiced_object_identifier_roundtrip 通行证
BT-23 业务流程类型 test_business_process_type_roundtrip 通行证
BT-89 SEPA授权参考(BG-19) test_sepa_direct_debit_roundtrip 通行证
BT-91 买方IBAN(BG-19) test_sepa_direct_debit_roundtrip 通行证
BT-120 增值税免税原因文本(BR-E-10) test_exemption_reason_roundtrip 通行证
BT-121 增值税免税原因代码 test_exemption_reason_roundtrip 通行证
BT-28 卖方交易名称 test_trading_names_roundtrip 通行证
BT-45 买方交易名称 test_trading_names_roundtrip 通行证
BT-17 投标书或标段参考 test_tender_reference_roundtrip 通行证
BT-133 买方会计参考 test_bt133_roundtrip 通行证
BT-134/135 线路级计费周期 test_line_period_roundtrip 通行证
BT-147/148 总价/价格折扣 test_gross_price_and_discount_roundtrip 通行证
BT-158 项目分类(CPV等) test_item_classification_roundtrip 通行证
BG-11 卖方税务代表(BT-62..65) test_seller_tax_rep_roundtrip 通行证
BG-10 收款方(BT-59..61) test_payee_party_roundtrip 通行证
BG-18 支付卡(BT-87/88) test_payment_card_roundtrip 通行证
BT-159 项目原产国 test_country_of_origin_roundtrip 通行证
BG-30 项目属性(BT-160/161) test_single_attribute_roundtrip 通行证
BT-15 接收建议参考 test_receiving_advice_roundtrip 通行证
BT-71 交货地点标识符 test_delivery_location_id_roundtrip 通行证
BT-82 付款方式为文本 test_payment_means_text_roundtrip 通行证
BG-24 支持文件(BT-122..125) test_supporting_doc_with_uri 通行证
Skonto 付款折扣条款 test_skonto_roundtrip 通行证

计算规则

规则 描述 测试 结果
BR-CO-14 税款总额=每组计算金额的总和 test_br_co_14_tax_total_equals_sum_of_trade_tax 通行证
BR-CO-14 PDF/XML/API总计使用相同的逐组舍入 test_total_tax_uses_per_group_rounding 通行证
BR-CO-10 行项目行总金额量化为0.01 test_line_item_net_amount_quantized 通行证
BR-DE-23 当Payment MeansCode=58时,IBAN是强制性的 test_iban_missing_flags_bt84 通行证
§14/4/2 BT-31或BT-32必须存在 test_neither_bt31_nor_bt32_flags_missing 通行证
§14/4/6 BT-71或BT-73/74必须存在 test_no_delivery_date_or_period_flags_missing 通行证
BT-3 根据EN 16931规范验证的TypeCode test_invalid_type_code_rejected 通行证
BT-25 贷记单(381)必须参考之前的发票 test_credit_note_without_bt25_flags_missing 通行证
384-BT-25 更正发票(384)必须参考之前的发票 test_384_with_preceding_ref 通行证
RC-CONTRY 反向收费:卖方≠买方国家咨询 test_ae_same_country_advisory 通行证
IC-COUNTRY 共同体内部:卖方≠买方国家要求 test_k_same_country_error 通行证
§13b UStG 反向收费:卖方+买方增值税ID,0%税率 test_reverse_charge_* 通行证
§4/1b UStG 社区内部(K):买方增值税ID,0%税率 test_k_* 通行证
§19 UStG 小型企业家:豁免说明咨询 test_exempt_without_note_suggests_ku 通行证
LW-FMT Leitweg-ID 格式咨询 test_invalid_leitweg_format 通行证
VAT-FMT 德国USt识别号。格式建议(DE+9位数字) test_invalid_german_vat_format 通行证
§4/1a UStG 出口(G):0%税率 test_export_g_* 通行证
§33 增值税 小额账户咨询 (≤250欧元) test_small_invoice_gets_kb_hint 通行证
BR-E-10 E类税所需的豁免理由 test_compliance_missing_exemption_reason 通行证
BR-DE-24 SEPA DD:授权书(BT-89)+买方IBAN(BT-91) test_dd_missing_mandate_and_iban 通行证
BR-DE-15 XRechnung所需的付款条件(BT-20) test_payment_terms_missing 通行证
BR-DE-20 最多一种付款指令类型(不混合CT+DD) test_mixed_ct_and_dd_flagged 通行证
CC-BT-87 代码=48时需要信用卡PAN test_credit_card_missing_pan 通行证
REP-BT-63 当BG-11出现时,需要税务代表增值税ID test_tax_rep_without_tax_id 通行证
IBAN IBAN格式验证(ISO 13616) test_invalid_iban_* 通行证
BIC BIC格式验证(ISO 9362) test_invalid_bic_* 通行证

解析忠诚

场景 描述 测试 结果
SchemeID剥离 DE123456789 (VA) → DE123456789 test_str_element_strips_scheme_id 通行证
数字方案ID 4000000000098 (9930) → 4000000000098 test_strips_numeric_scheme 通行证
说明文本 Reisekosten (pauschal) 保存完好 test_preserves_lowercase_parens 通行证
Unicode安全 Artikel (3Ü) 保存(未剥离) test_preserves_unicode_parens 通行证
BT-32 roundtrip 税号 FC generate → parse test_steuernummer_roundtrip 通行证
TypeCode roundtrip 381 Credit generate → parse test_type_code_381_roundtrip 通行证
交货日期往返 BT-71生成→ 解析 test_delivery_date_roundtrip 通行证
服务期往返 BT-73/74发电→ 解析 test_service_period_roundtrip 通行证
电子地址往返 BT-34生成→ 解析 test_seller_electronic_address_roundtrip 通行证
发票票据往返 BT-22生成→ 解析 test_invoice_note_roundtrip 通行证
付款条件往返 BT-20生成→ 解析 test_payment_terms_text_roundtrip 通行证
付款条件优先 BT-20文本优先于天数 test_payment_terms_text_overrides_days 通行证
采购订单往返 BT-13生成→ 解析 test_purchase_order_reference_bt13 通行证
合同往返 BT-12发电→ 解析 test_contract_reference_bt12 通行证
项目往返 BT-11发电→ 解析 test_project_reference_bt11 通行证
前一张发票往返 BT-25生成→ 解析 test_preceding_invoice_bt25 通行证
汇款往返 BT-83生成→ 解析 test_remittance_information_roundtrip 通行证
空方案剥离 "PO-42 ()" → "PO-42" test_strips_empty_parens 通行证
往返发票 生成→ 解析→ 验证关键字段 test_xrechnung_roundtrip 通行证
截止日期往返 BT-9生成→ 解析 test_due_date_roundtrip 通行证
地址行2/3往返 BT-36/37,BT-51/52生成→ 解析 test_address_lines_full_roundtrip 通行证
买方联系往返 BT-44/46/47生成→ 解析 test_buyer_contact_roundtrip 通行证
注册ID往返 BT-29生成→ 解析 test_seller_registration_id_roundtrip 通行证
销售订单往返 BT-14生成→ 解析 test_sales_order_roundtrip 通行证
项目标识符往返 BT-155/156/157生成→ 解析 test_all_item_ids_together 通行证
行项目注释往返 BT-127生成→ 解析 test_item_note_roundtrip 通行证
交货地点往返 BT-70..80生成→ 解析 test_delivery_location_roundtrip 通行证
返程补贴 BG-20生成→ 解析 test_allowance_roundtrip 通行证
充电往返 BG-21发电→ 解析 test_charge_roundtrip 通行证
线路允许往返 BG-27生成→ 解析 test_line_allowance_roundtrip 通行证
调度建议往返 BT-16生成→ 解析 test_despatch_advice_roundtrip 通行证
发票对象往返 BT-18生成→ 解析 test_invoiced_object_identifier_roundtrip 通行证
业务流程往返 BT-23生成→ 解析 test_business_process_type_roundtrip 通行证
SEPA直接借记往返 BG-19生成→ 解析 test_sepa_direct_debit_roundtrip 通行证
Skonto往返 付款折扣条款生成→ 解析 test_skonto_roundtrip 通行证
BT-133往返 生成买方会计参考→ 解析 test_bt133_roundtrip 通行证
交易名称往返 BT-28/BT-45生成→ 解析 test_trading_names_roundtrip 通行证
投标参考往返 BT-17生成→ 解析 test_tender_reference_roundtrip 通行证
豁免原因往返 BT-120/BT-121生成→ 解析 test_exemption_reason_roundtrip 通行证
线路周期往返 BT-134/BT-135发电→ 解析 test_line_period_roundtrip 通行证
卖方税务代表往返 BG-11生成→ 解析 test_seller_tax_rep_roundtrip 通行证
收款人往返 BT-59/60/61生成→ 解析 test_payee_party_roundtrip 通行证
支付卡往返 BT-87/88生成→ 解析 test_payment_card_roundtrip 通行证
总价往返 BT-147/148生成→ 解析 test_gross_price_and_discount_roundtrip 通行证
分类往返 BT-158生成→ 解析 test_item_classification_roundtrip 通行证
原产国往返 BT-159生成→ 解析 test_country_of_origin_roundtrip 通行证
项目属性往返 BT-160/161生成→ 解析 test_single_attribute_roundtrip 通行证
接收建议往返 BT-15生成→ 解析 test_receiving_advice_roundtrip 通行证
交货地点ID往返 BT-71生成→ 解析 test_delivery_location_id_roundtrip 通行证
付款方式文本往返 BT-82生成→ 解析 test_payment_means_text_roundtrip 通行证
支持文档往返 BG-24生成→ 解析 test_supporting_doc_with_uri 通行证
支持文件+招标参考 BG-24+BT-17共存 test_supporting_docs_coexist_with_tender_ref 通行证
国家细分往返 BT-39/BT-54生成→ 解析 test_country_subdivision_seller_buyer 通行证
支付方式类型代码往返 BT-81生成→ 解析 test_sepa_type_code_roundtrip 通行证
买方参考往返 BT-10生成→ 解析 test_buyer_reference_roundtrip 通行证
税务代表细分往返 BG-11 BT-39生成→ 解析 test_tax_rep_subdivision_roundtrip 通行证
组合项目特征 BT-159+BG-30+BT-148一起 test_all_item_features_together 通行证
多参照共存 BT-17+BT-18在同一发票中 test_tender_and_invoiced_object_coexist 通行证
非ASCII政党名称 西里尔文/中文名称 test_non_ascii_party_names 通行证
所有类型代码 380、381、384、389、875、876、877 test_all_type_codes 通行证
所有税种 S、Z、E、AE、K、G、O、L、M test_all_tax_categories 通行证
50行项目 大发票构建+解析 test_many_line_items 通行证
混合税种 同一发票中的S+G项目 test_mixed_tax_category_invoice 通行证
Unicode安全(变音) 所有文本字段中的ÄÖÜäöüß test_unicode_invoice 通行证
大额发票 50行金额高的项目 test_high_value_invoice 通行证
混合税率 7%+19%,精确四舍五入 test_reduced_tax_rate 通行证
分类版本 BT-158-2版本往返 test_classification_with_version_roundtrip 通行证
UBL检测 UBL发票/贷方票据被拒绝 test_ubl_invoice_rejected 通行证
防御性处理程序 买方参考/税务申报/收款人/豁免中的异常 TestDefensiveExceptionHandlers 通行证
Pydantic BT映射 验证错误显示BT编号 test_invalid_iban_shows_bt84 通行证

税种覆盖范围(欧盟所有9个增值税类别)

类别 代码 描述 结果
标准 S 19%/7%USt PASS
零 Z 0%评分 PASS
豁免 E 豁免 PASS
Reverse Charge(英语:Reverse Charge)
Intra-community K 欧盟供应 PASS
出口 G 欧盟以外 (第三国交付) PASS
无主题 O 无增值税 PASS
加那利群岛 L IGIC PASS
休达/梅利利亚 M IPSI 通行证

安全强化

攻击向量 保护 测试 结果
XXE实体扩展 defectedxml预筛选 test_parse_xml_blocks_xxe 通行证
十亿笑声(实体炸弹) defectedxml预屏 test_parse_xml_blocks_billion_laughs 通行证
外部实体注入 defectedxml预筛选 test_parse_xml_blocks_external_entity 通行证
XML炸弹(>10 MB) 大小限制 test_validate_rejects_oversized_xml 通行证
PDF炸弹(>50 MB base64) 大小限制 test_validate_rejects_oversized_pdf 通行证
解码后的PDF炸弹(>50 MB) 解码后保护 test_validate_rejects_oversized_decoded_pdf 通行证
KoSIT响应炸弹 10 MB+512 KB上限 test_oversized_content_length_header 通行证
错误中的输入反映 山宁泰 test_parse_rejects_unknown_file_type 通行证
错误详细信息泄漏 通用消息 test_connection_error_no_hostname_in_message_de 通行证
通过重定向进行SSRF follow_redirects=False 纵深防御 强化
供应链(Docker) SHA-256校验和验证 Dockerfile.kosit 硬化
容器权限 非root用户(两个容器) Dockerfile, Dockerfile.kosit 硬化
端口暴露 KoSIT仅绑定到127.0.0.1 docker-compose.yml 硬化
供应链(Python) uv.lock 用于可重复构建 uv.lock 硬化
IBAN注射 ISO 13616格式验证 test_invalid_iban_* 硬化
BIC注射 ISO 9362格式验证 test_invalid_bic_* 硬化

个人资料覆盖范围

配置文件 生成 解析 验证 合规性
XRechnung 3.0 通过 通过
ZUGFeRD EN16931 通过 通过
ZUGFRD基础 通过* - - -
ZUGFeRD延长 通过* - - -

*生成生成具有正确指南URI的XML;计划提供完整的解析/验证/合规支持。

模块覆盖范围

模块 行 描述
config.py 16 Pydantic设置
errors.py 36 自定义例外
models/ 600+ Pydantic模型(发票、派对、行项目、结果、枚举)
prompts/guides.py 633 14个德国税收情景提示
prompts/guides_advanced.py 511 8 advanced prompts (欧盟贸易,经常性,结算,形式,第三国,信用)
prompts/guides_additional.py 304 5 additional prompts (更正, RC+税务代表, 部分结算, IG deep, 折扣)
resources/ 1200+ 24种资源(模式、参考代码、合规性、SEPA、CPV、BT-23、增值税豁免、UNCL 5189)
services/invoice_builder.py 576 通过drafthorse生成CII XML
services/invoice_data_builder.py 320 平面参数生成器
services/cii_extractors.py 457 党、项目、属性提取
services/kosit.py 80 KoSIT HTTP客户端
services/pdf_generator.py 182 视觉PDF+制作-x嵌入
services/xml_parser.py 720 CII/ZUGFRD XML解析器
tools/compliance.py 217 合规性编排
tools/compliance_checks.py 795 BR-DE/BR-CO 现场检查
tools/arithmetic_checks.py 230 BR-CO-10/11/12/13/14/15/16数学检查
tools/generate.py 50 生成工具
tools/parse.py 39 解析工具
tools/validate.py 33 验证工具

server.py 排除——FastMCP上下文不能进行单元测试;测试助手 test_server_helpers.py.


工具

工具 说明
einvoice_validate_xrechnung 根据KoSIT验证器验证XRechnung XML
einvoice_validate_zugferd 验证ZUGFeRD PDF(提取+验证嵌入的XML)
einvoice_generate_xrechnung 生成符合XRechnung标准的CII XML发票
einvoice_generate_zugferd 生成ZUGFeRD混合PDF(视觉+机器可读)
einvoice_parse 将电子发票(XML或PDF)解析为结构化数据
einvoice_check_compliance 根据德国建议检查必填字段+KoSIT验证

MCP资源

资源URI 描述
einvoice://schemas/line-item 发票项目的 JSON 架构 (items-Array)
einvoice://schemas/allowance-charge 加入/减少的 JSON 方案
einvoice://schemas/item-attribute 文章特征的 JSON 架构 (BG-30)
einvoice://schemas/supporting-document 文件的 JSON 架构 (BG-24)
einvoice://schemas/invoice-data InvoiceData 的完整 JSON 架构
einvoice://reference/type-codes Rechnungstyp-Codes (380, 381, 384, 389, 875, 876, 877)
einvoice://reference/payment-means-codes 付款方式代码(58=SEPA,59=直接支付,48=信用卡,…)
einvoice://reference/tax-categories 欧盟增值税类别(S,Z,E,AE,K,G,O,L,M)
einvoice://reference/unit-codes 数量单位代码(H87=单位,HUR=小时,KGM=公斤,…)
einvoice://reference/eas-codes 电子地址方案 (EM=电子邮件, 9930=税号, …)
einvoice://system/kosit-status 按需KoSIT验证器状态
einvoice://reference/e-rechnung-pflichten 2020-2028年电子账户义务及其法律依据
einvoice://reference/br-de-rules 德国商业规则 (BR-DE-1..24) 与解决方案说明
einvoice://reference/skr04-mapping SKR04 常见发票类型账户分配 (DATEV)
einvoice://reference/credit-note-reasons 信用原因和更正代码与建议
einvoice://reference/leitweg-id-format 路由 ID 结构 (粗地址-细地址检查码), Regex, 示例
einvoice://reference/tax-category-decision-tree 税务类别决策树(S/Z/E/AE/K/G/O/L/M)
einvoice://reference/sepa-mandate-type-codes SEPA授权类型(CORE/B2B)、序列类型(FRST/RCUR/OOFF)、债权人ID
einvoice://reference/cpv-classification-codes 公共采购CPV代码(BT-158),IT/建筑/咨询/健康
einvoice://reference/business-process-identifiers BT-23 业务流程类型标识符 (Peppol BIS, XInvoice)
einvoice://reference/vat-exemption-reason-texts 免税理由 (BT-120/BT-121) — §19, §4, §13b UStG与文本
einvoice://reference/uncl-5189-allowance-reason-codes UNCL 5189折扣代码(折扣,折扣,附加费)

MCP提示

提示 描述
gutschrift_erstellen 一步一步:创建信用 (381)
reverse_charge_checkliste 检查清单:反向充电(§13b UStG,AE类)
xrechnung_schnellstart 快速入门:公共采购商的X账单
korrekturrechnung_erstellen 说明:创建校正 (384)
abschlagsrechnung_guide 分期付款/分期付款(型号875/876/877)
ratenzahlung_rechnung 创建分期付款发票
handwerkerrechnung_35a 按照§35a EStG工人账户
typecode_entscheidungshilfe 决策帮助:什么类型的代码适用于什么场合?
b2b_pflicht_2027 清单:从2027年开始准备B2B电子账户
steuerprüfung_checkliste 准备电子发票进行业务审计(GoBD,§147 AO)
kleinunternehmer_guide 小型企业家(§19 UStG) — 不含销售税的电子发票
bauleistungen_13b_guide 建筑服务 / §13b UStG — 建筑行业的反向收费
differenzbesteuerung_25a_guide 二手商品经销商的差价税(§25a UStG)
stornobuchung_workflow 取消:381 vs 384 vs 新 380 — 决策树
reiseleistungen_25_guide 旅游服务(§25 UStG) — 利润税
innergemeinschaftliche_lieferung_guide 欧盟内部交付(UStG第4条第1b款/UStG第6a款)
dauerrechnung_guide 经常性服务的持续发票/月度发票
steuernummer_vs_ustidnr_guide 税号 vs. 税号 — 决策辅助 (BR-DE-26)
schlussrechnung_nach_abschlag 预付金额(prepaid_amount,BT-113)
proforma_rechnung_guide 形式发票 — 法律分类, 电子发票处理
drittlandlieferung_guide 欧盟以外的出口(UStG第4条第1a款,税务类别G,国际贸易条款)
gutschriftverfahren_389_guide 信用记录程序 / 自我计费 (TypeCode 389, §14 第 2 款)
rechnungsberichtigung_vs_storno 381与384:信用,更正或取消?决策树
reverse_charge_steuervertreter_combined Reverse Charge + Tax Representative (BG-11):组合方案
teilrechnung_workflow 875 → 877 生命周期:扣除,部分结算,最终结算
innergemeinschaftliche_deep_dive IG交付:抵达确认,ZM,证明义务,eVatR
skonto_berechnung_guide 折扣:计算,BT-20编码,§17 UStG税收处理

快速开始

先决条件

  • Python 3.11+
  • Docker(用于KoSIT验证器)

安装

git clone https://github.com/Mavengence/einvoice-mcp.git
cd einvoice-mcp
pip install -e ".[dev]"

启动KoSIT验证器

make docker-up

在端口8081上启动KoSIT验证器(v1.6.2,XRechnung场景v2026-01-31)。

本地操作(stdio)

make dev

配置

克劳德桌面版

{
  "mcpServers": {
    "einvoice": {
      "command": "python",
      "args": ["-m", "einvoice_mcp"],
      "env": {
        "KOSIT_URL": "http://localhost:8081"
      }
    }
  }
}

克劳德代码

claude mcp add einvoice -- python -m einvoice_mcp

光标

添加 .cursor/mcp.json:

{
  "mcpServers": {
    "einvoice": {
      "command": "python",
      "args": ["-m", "einvoice_mcp"],
      "env": {
        "KOSIT_URL": "http://localhost:8081"
      }
    }
  }
}

环境变量

变量 默认值 描述
KOSIT_URL http://localhost:8081 Kosh验证器URL
LOG_LEVEL INFO 日志级别(调试、信息、警告、错误、严重)

示例提示

Validiere diese XRechnung: [XML einfügen]

Erstelle eine Rechnung von TechCorp GmbH (DE123456789) an ClientCorp GmbH
für 40 Stunden Software-Beratung à 150€/Stunde mit 19% USt.

Parse diese E-Rechnung und zeig mir die Positionen.

Prüfe ob diese Rechnung XRechnung-konform ist und gib Verbesserungsvorschläge.

高级示例

Erstelle eine Gutschrift (TypeCode 381) für Rechnung RE-2025-099 über
200€ netto mit 19% USt.

Erstelle eine Rechnung mit Reverse Charge (§13b UStG, Kategorie AE):
Verkäufer DE123456789, Käufer ATU12345678, Dienstleistung 5.000€.

Erstelle eine Rechnung mit 2% Skonto bei Zahlung innerhalb von 10 Tagen.

Erstelle eine Rechnung mit SEPA-Lastschrift (PaymentMeansCode 59),
Käufer-IBAN DE89370400440532013000, Mandatsreferenz MREF-2025-001.

Erstelle eine Rechnung mit Lieferort: Lager Hamburg, Hafenstraße 42,
20457 Hamburg.

Erstelle eine innergemeinschaftliche Lieferung (Kategorie K) an
einen französischen Kunden (FR12345678901).

Erstelle eine steuerbefreite Rechnung (§19 UStG, Kleinunternehmer)
mit Befreiungsgrund und Code vatex-eu-132.

Erstelle eine Rechnung für ein Vergabeverfahren mit Losnummer VERGABE-2026-42
und Kontierungsreferenz KST-4711 pro Position.

Erstelle eine Korrekturrechnung (TypeCode 384) für die fehlerhafte Rechnung
RE-2026-001 mit korrigiertem Steuersatz.

建筑

[AI Client] --> stdio --> [FastMCP Server]
                              |-- drafthorse (CII XML generation/parsing)
                              |-- factur-x (PDF/A-3 embedding/extraction)
                              |-- reportlab (Visual PDF rendering)
                              |-- defusedxml (XXE protection on all parse paths)
                              '-- httpx --> [KoSIT Validator :8081]

KoSIT验证器堆栈

组件 版本 来源
KoSIT验证器 v1.6.2(SHA-256验证) itplr kosit/验证器
X技术场景 v2026-01-31(SHA-256验证) itplr kosit/验证器配置xrechnology
Java运行时 Eclipse Temurin 17 OpenJDK

发展

make install    # Install dependencies
make test       # Run tests with coverage
make lint       # Ruff + mypy strict
make fmt        # Format code
make docker-up  # Start Docker stack

支持的商业条款(EN 16931)

BT/BG 字段 生成 解析 合规性
BT-1 发票号码 是 是 有
BT-2 发布日期 是 是 有
BT-3 类型代码(380/381/384) 是 是 有
BT-5 货币代码 是 是 有
BT-9 截止日期 是 是 --
BT-10 买方参考/Liteweg ID 是 是 有
BT-11 项目参考 是 是 --
BT-12 合同参考 是 是 --
BT-13 采购订单参考 是 是 --
BT-14 销售订单参考 是 是 --
BT-16 调度建议参考 是 是 --
BT-17 投标书或标段参考 是 是 --
BT-18 发票对象标识符 是 是 --
BT-20 付款条件文本 是 是 --
BT-22 发票备注 是 是 --
BT-23 业务流程类型 是 是 --
BT-25 前一张发票(贷记单) 是 是 有
BT-27..40 卖方+地址(包括2/3行,细分) 是 是 有
BT-28 卖方交易名称 是 是 --
BT-29 卖家注册ID(GLN) 是 是 --
BT-31 卖方增值税ID(schemeID=VA) 是 是 有
BT-32 卖方税号(schemeID=FC) 是 是 有
BT-34 卖方电子地址 是 是 有
BT-41 卖家联系人姓名 是 是 有
BT-42 卖家联系电话 是 是 有
BT-43 卖家联系邮箱 是 是 有
BT-44..55 买方+地址(包括2/3行,细分) 是 是 有
BT-45 买方交易名称 是 是 --
BT-46 买方注册ID(GLN) 是 是 --
BT-49 买方电子地址 是 是 有
BT-70..80 交货地点(姓名+地址) 是 是 --
BT-71 交货日期 是 是 有
BT-73/74 服务期限 是 是 有
BT-81 付款方式类型代码 是 是 --
BT-83 汇款信息 是 是 --
BT-84 卖方IBAN 是 是 有
BT-86 BIC 是 是 --
BT-89 SEPA授权参考 是 是 有
BT-91 买方IBAN(SEPA直接借记) 是 是 有
BT-120 增值税免税原因文本 是 是 有
BT-121 增值税免税原因代码 是 是 --
BT-127 行项目注释 是 是 --
BT-155 卖家商品标识符 是 是 --
BT-156 买方项目标识符 是 是 --
BT-157 标准项目ID(GTIN/EAN) 是 是 --
BT-159 项目原产国 是 是 --
BT-160/161 项目属性(BG-30,名称/值) 是 是 --
BG-20/21 文件级津贴/费用 是 是 --
BG-27/28 线路级津贴/费用 是 是 --
BT-15 收到建议参考 是 是 --
BT-71 交货位置标识符 是 是 --
BT-82 付款方式为文本 是 是 --
BG-24 支持文件(BT-122..125) 是 是 --
BT-133 买方会计参考 是 是 --
Skonto 付款折扣条款(百分比,天数) 是 是 --

信用注释(Credit Note)

对于贷记单(类型代码381),服务器:

  • 将XML标头名称设置为“GUTSCHRIFT”,并相应地设置PDF标题
  • 合规性检查中需要BT-25(前面的发票号码)
  • 在PDF标题中显示“参考:[发票号码]”
  • 根据EN 16931类型代码白名单(380、381、384、389、875、876、877)进行验证

例子: type_code="381", preceding_invoice_number="RE-2025-099"


配置文件选择指南

配置文件 用例 指南URI
XRECHNUNG 德国公共部门(B2G),需要Leitweg ID urn:cen.eu:en16931:2017#compliant#urn:xeinkauf.de:kosit:xrechnung_3.0
ZUGFERD_EN16931 B2B发票(ZUGFeRD PDF的默认值) urn:cen.eu:en16931:2017
ZUGFERD_BASIC 简化的B2B发票 urn:cen.eu:en16931:2017#compliant#urn:factur-x.eu:1p0:basic
ZUGFERD_EXTENDED 带有附加字段的扩展B2B发票 urn:cen.eu:en16931:2017#conformant#urn:factur-x.eu:1p0:extended

德国合规指南

看 文档/德国_合作_ GIDE.md 用于:

  • 类型代码决策树(380/381/384/875/876/877)
  • 税种决策树(S/Z/E/AE/K/G/O/L/M)
  • Leitweg ID格式和来源
  • 反向收费与社区内部供应
  • 工人帐户 §35a EStG
  • 必填字段清单 for XInvoice 3.0

局限性

  • ZUGFeRD基本/扩展:Generation生成的XML具有正确的指导URI,但解析、验证和合规性检查仅针对XRechnung 3.0和ZUGFeRD EN16931进行了测试。
  • 批处理:每次工具调用处理一张发票。对于批量操作,请按顺序调用工具。

故障排除

无法使用 KoSIT Validator

Fehler: KoSIT-Validator nicht erreichbar. Bitte prüfen Sie die Verbindung.
  1. 启动Docker容器: make docker-up
  2. 等待健康状态: docker compose -f docker/docker-compose.yml ps
  3. 手动验证: curl http://localhost:8081/server/health
  4. 检查端口8081是否被防火墙或其他进程阻止

Docker Container 无法启动

# Check logs
docker compose -f docker/docker-compose.yml logs kosit

# Common issue: port already in use
lsof -i :8081

# Restart clean
docker compose -f docker/docker-compose.yml down
docker compose -f docker/docker-compose.yml up -d

已识别的 UBL 格式

Fehler: UBL-Format erkannt. Dieses Tool unterstützt nur CII.

解析器仅支持CII(跨行业发票)XML,这是XRechnung和ZUGFeRD的标准。如果您有UBL发票,请先使用外部工具将其转换为CII。

Pydantic验证错误

生成发票时,字段错误现在引用BT编号:

Fehler: Ungültige Rechnungsdaten:
  - BT-84 (IBAN): String should match pattern ...
  - BT-27 (Verkäufername): String should have at least 1 character

检查 德国合规指南 根据现场要求。

测试未运行

# Install dev dependencies
pip install -e ".[dev]"

# Run unit tests only (no Docker needed)
make test

# Run integration tests (requires Docker)
make docker-up
pytest -m integration

监管参考

  • EN 16931 --欧洲电子发票标准
  • X帐户3.0(场景3.0.2) --德国CIUS(核心发票使用规范)
  • ZUGFeRD 2.x / Factor-X 1.08 版本 --PDF/A-3混合发票格式
  • BMF 2024-11-15 --德国联邦财政部电子发票授权
  • §14美国贸易法委员会 --德国增值税法发票要求
  • 第14节 Abs。4号 UStG 税号或税号。需要(BT-31 / BT-32)
  • 第14节 Abs。4 第6号 UStG --要求的交货日期或服务期(BT-71/BT-73/74)
  • BR-CO-14 --税款总额必须等于每组计算金额的总和
  • BR-DE-5 --卖方联系人(XRechnung必须填写)
  • BR-DE-7 --卖家联系电子邮件(XRechnung必须提供)
  • BR-DE-23 --当PaymentMeansCode=58(SEPA)时,IBAN是强制性的
  • §13b美国贸易法委员会 --反向收费:需要卖方+买方增值税ID,0%税率
  • §4 第1b UStG --社区内供应:需要买方增值税ID,0%税率
  • §19美国贸易法委员会 《小型企业规则:免税备忘录》(exemption note advisory for TaxCategory E)
  • BG-19 --SEPA直接借记(PaymentMeansCode=59,买方IBAN,授权参考)
  • BR-DE-20 --最多一种付款指令类型(无混合贷记转账+直接借记)
  • BR-DE-24 --SEPA直接借记:授权参考+买方IBAN必填
  • BR-E-10 --E类税种要求的增值税免税理由(BT-120)
  • UStG第4条第1a款 --欧盟以外出口(G类税):要求0%的税率
  • §33 UStDV — 小额发票咨询(发票≤250欧元毛额)
  • 折扣 --提前付款折扣条款(CII中的付款折扣条款)
  • 384 校正 --更正发票必须参考之前的发票(BT-25)
  • RC-国家 --反向收费:卖方/买方国家咨询(§13b允许国内)
  • IC国家 --社区内部:要求卖方≠买方国家
  • BGB第632a条 --建筑/服务合同摘要
  • §35 A腹肌。3奥运会 --Handwerkerleistungen税收减免(劳动力的20%,最高1.200欧元/年)
  • §271 BGB 按协议付款截止日期(分期付款)
  • ISO 13616 --IBAN格式验证(卖方+买方)
  • 国际标准化组织9362 --BIC/SWIFT格式验证

许可证

麻省理工学院