Every change Wellknown observed on this MCP server, newest first, with what it was before and what it became. Tool-surface changes carry the definition diff. Nothing here is edited after the fact.
Added "parse_invoice" (3 tools before, 4 now)
Read an e-invoice into data — Read a received e-invoice — XRechnung or any EN 16931 invoice as UBL or CII XML, or a ZUGFeRD/Factur-X PDF — into structured data. `invoice` is in exactly the shape generate_invoice takes (fields the document lacks are left out); `stated` has the totals, the VAT breakdown and each line net as the document states them, as exact decimal strings; `notMapped` lists by path every value of the document the data does not carry. Send the XML as text in `xml`, or the PDF base64-encoded in `pdfBase64` — exactly one. `validate: true` adds the KoSIT verdict. Free, no account needed, 5 MB at most.
Changed the definition of "generate_invoice"
Produce anXRechnunge-invoice(as `ubl` or `cii` XML)or a ZUGFeRD hybrid PDF (`zugferd`) from invoicedata.data: an XRechnung for a public-sector buyer (profile `xrechnung`, the default), a plain EN 16931 invoice for a business (profile `en16931`). Totals are computed server-side in decimal arithmetic, ⟨45 unchanged words⟩
before
{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"invoice":{"properties":{"allowances":{"description":"BG-20","items":{"description":"A document-level allowance (BG-20) or charge (BG-21)","properties":{"amount":{"anyOf":[{"type":"number"},{"pattern":"^-?\\d+(\\.\\d+)?$","type":"string"}],"description":"Two decimals. Give amount or percent, exactly one."},"baseAmount":{"anyOf":[{"type":"number"},{"pattern":"^-?\\d+(\\.\\d+)?$","type":"string"}],"description":"What the percentage is taken of. Only with percent (PEPPOL-EN16931-R042)."},"percent":{"anyOf":[{"type":"number"},{"pattern":"^-?\\d+(\\.\\d+)?$","type":"string"}],"description":"Give amount or percent, exactly one."},"reason":{"description":"This or reasonCode is required","maxLength":500,"type":"string"},"reasonCode":{"description":"UNTDID 5189 for an allowance (95 discount), UNTDID 7161 for a charge (FC freight)","pattern":"^[0-9A-Z]{1,3}$","type":"string"},"vatCategory":{"description":"UNTDID 5305: S standard, Z zero-rated, E exempt, AE reverse charge, K intra-community supply, G export, O outside scope, L Canary Islands, M Ceuta/Melilla","enum":["S","Z","E","AE","K","G","O","L","M"],"type":"string"},"vatExemptionReason":{"description":"BT-120, as on a line","maxLength":500,"type":"string"},"vatRate":{"anyOf":[{"type":"number"},{"pattern":"^-?\\d+(\\.\\d+)?$","type":"string"}],"description":"Percent"}},"required":["vatCategory"],"type":"object"},"maxItems":100,"type":"array"},"buyer":{"description":"BG-7","properties":{"address":{"description":"BG-5 / BG-8","properties":{"city":{"description":"BT-37 / BT-52, mandatory (BR-DE-3, BR-DE-8)","maxLength":100,"minLength":1,"type":"string"},"country":{"description":"BT-40 / BT-55, ISO 3166-1 alpha-2, e.g. DE","pattern":"^[A-Z]{2}$","type":"string"},"postcode":{"description":"BT-38 / BT-53, mandatory (BR-DE-4, BR-DE-9)","maxLength":20,"minLength":1,"type":"string"},"street":{"description":"BT-35 / BT-50","maxLength":200,"type":"string"}},"required":["city","postcode","country"],"type":"object"},"contact":{"description":"BG-6. XRechnung requires all three on the seller (BR-DE-2, BR-DE-5 to 7).","properties":{"email":{"description":"BT-43","maxLength":254,"minLength":1,"type":"string"},"name":{"description":"BT-41","maxLength":200,"minLength":1,"type":"string"},"phone":{"description":"BT-42","maxLength":50,"minLength":1,"type":"string"}},"required":["name","phone","email"],"type":"object"},"electronicAddress":{"description":"BT-34 / BT-49, an email address unless a scheme says otherwise","maxLength":254,"type":"string"},"electronicAddressScheme":{"description":"EAS code for the electronic address; EM (email) when absent","pattern":"^[0-9A-Z]{2,10}$","type":"string"},"identifier":{"description":"BT-29 / BT-46. A seller without a VAT id repeats its tax number here: BT-32 alone satisfies BR-DE-16 but not BR-CO-26.","maxLength":100,"type":"string"},"name":{"description":"BT-27 / BT-44, the legal name","maxLength":200,"minLength":1,"type":"string"},"taxNumber":{"description":"BT-32, the German Steuernummer","maxLength":30,"type":"string"},"vatId":{"description":"BT-31 / BT-48, e.g. DE123456789","maxLength":30,"type":"string"}},"required":["name","address"],"type":"object"},"buyerReference":{"description":"BT-10, mandatory in XRechnung (BR-DE-15): the Leitweg-ID for public-sector buyers, else the buyer reference","maxLength":200,"minLength":1,"type":"string"},"charges":{"description":"BG-21: freight, packaging …","items":{"description":"A document-level allowance (BG-20) or charge (BG-21)","properties":{"amount":{"anyOf":[{"type":"number"},{"pattern":"^-?\\d+(\\.\\d+)?$","type":"string"}],"description":"Two decimals. Give amount or percent, exactly one."},"baseAmount":{"anyOf":[{"type":"number"},{"pattern":"^-?\\d+(\\.\\d+)?$","type":"string"}],"description":"What the percentage is taken of. Only with percent (PEPPOL-EN16931-R042)."},"percent":{"anyOf":[{"type":"number"},{"pattern":"^-?\\d+(\\.\\d+)?$","type":"string"}],"description":"Give amount or percent, exactly one."},"reason":{"description":"This or reasonCode is required","maxLength":500,"type":"string"},"reasonCode":{"description":"UNTDID 5189 for an allowance (95 discount), UNTDID 7161 for a charge (FC freight)","pattern":"^[0-9A-Z]{1,3}$","type":"string"},"vatCategory":{"description":"UNTDID 5305: S standard, Z zero-rated, E exempt, AE reverse charge, K intra-community supply, G export, O outside scope, L Canary Islands, M Ceuta/Melilla","enum":["S","Z","E","AE","K","G","O","L","M"],"type":"string"},"vatExemptionReason":{"description":"BT-120, as on a line","maxLength":500,"type":"string"},"vatRate":{"anyOf":[{"type":"number"},{"pattern":"^-?\\d+(\\.\\d+)?$","type":"string"}],"description":"Percent"}},"required":["vatCategory"],"type":"object"},"maxItems":100,"type":"array"},"currency":{"description":"BT-5, ISO 4217, e.g. EUR","pattern":"^[A-Z]{3}$","type":"string"},"deliveryDate":{"description":"BT-72. Omitting it draws an advisory.","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$","type":"string"},"dueDate":{"description":"BT-9. XRechnung wants this or paymentTerms on a payable invoice.","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$","type":"string"},"invoiceNumber":{"description":"BT-1","maxLength":100,"minLength":1,"type":"string"},"issueDate":{"description":"BT-2, YYYY-MM-DD","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$","type":"string"},"lines":{"description":"BG-25. Totals are computed server-side in decimal arithmetic.","items":{"properties":{"allowances":{"items":{"description":"A line allowance (BG-27) or charge (BG-28); it changes the line net, in the line VAT category","properties":{"amount":{"anyOf":[{"type":"number"},{"pattern":"^-?\\d+(\\.\\d+)?$","type":"string"}],"description":"Two decimals. Give amount or percent, exactly one."},"baseAmount":{"anyOf":[{"type":"number"},{"pattern":"^-?\\d+(\\.\\d+)?$","type":"string"}],"description":"What the percentage is taken of. Only with percent (PEPPOL-EN16931-R042)."},"percent":{"anyOf":[{"type":"number"},{"pattern":"^-?\\d+(\\.\\d+)?$","type":"string"}],"description":"Give amount or percent, exactly one."},"reason":{"description":"This or reasonCode is required","maxLength":500,"type":"string"},"reasonCode":{"description":"UNTDID 5189 for an allowance (95 discount), UNTDID 7161 for a charge (FC freight)","pattern":"^[0-9A-Z]{1,3}$","type":"string"}},"type":"object"},"maxItems":20,"type":"array"},"charges":{"items":{"description":"A line allowance (BG-27) or charge (BG-28); it changes the line net, in the line VAT category","properties":{"amount":{"anyOf":[{"type":"number"},{"pattern":"^-?\\d+(\\.\\d+)?$","type":"string"}],"description":"Two decimals. Give amount or percent, exactly one."},"baseAmount":{"anyOf":[{"type":"number"},{"pattern":"^-?\\d+(\\.\\d+)?$","type":"string"}],"description":"What the percentage is taken of. Only with percent (PEPPOL-EN16931-R042)."},"percent":{"anyOf":[{"type":"number"},{"pattern":"^-?\\d+(\\.\\d+)?$","type":"string"}],"description":"Give amount or percent, exactly one."},"reason":{"description":"This or reasonCode is required","maxLength":500,"type":"string"},"reasonCode":{"description":"UNTDID 5189 for an allowance (95 discount), UNTDID 7161 for a charge (FC freight)","pattern":"^[0-9A-Z]{1,3}$","type":"string"}},"type":"object"},"maxItems":20,"type":"array"},"description":{"description":"BT-154","maxLength":1000,"type":"string"},"id":{"description":"BT-126; assigned 1..n when absent","maxLength":50,"type":"string"},"name":{"description":"BT-153","maxLength":200,"minLength":1,"type":"string"},"quantity":{"anyOf":[{"type":"number"},{"pattern":"^-?\\d+(\\.\\d+)?$","type":"string"}],"description":"BT-129, up to six decimals"},"unit":{"description":"BT-130, UN/ECE Rec 20: C62 piece, HUR hour, DAY day, KGM kilogram …","pattern":"^[0-9A-Z]{1,8}$","type":"string"},"unitPrice":{"anyOf":[{"type":"number"},{"pattern":"^-?\\d+(\\.\\d+)?$","type":"string"}],"description":"BT-146, net, up to four decimals"},"vatCategory":{"description":"UNTDID 5305: S standard, Z zero-rated, E exempt, AE reverse charge, K intra-community supply, G export, O outside scope, L Canary Islands, M Ceuta/Melilla","enum":["S","Z","E","AE","K","G","O","L","M"],"type":"string"},"vatExemptionReason":{"description":"BT-120; the rule set wants it for the exempt-family categories","maxLength":500,"type":"string"},"vatRate":{"anyOf":[{"type":"number"},{"pattern":"^-?\\d+(\\.\\d+)?$","type":"string"}],"description":"BT-152, percent; required for category S"}},"required":["name","quantity","unit","unitPrice","vatCategory"],"type":"object"},"maxItems":500,"minItems":1,"type":"array"},"note":{"description":"BT-22","maxLength":1000,"type":"string"},"payment":{"description":"BG-16 and the group its code calls for: BG-17 transfer, BG-18 card, BG-19 direct debit","properties":{"accountName":{"description":"BT-85, the payee account holder","maxLength":200,"type":"string"},"bic":{"description":"BT-86, the payee bank","pattern":"^[A-Z]{6}[A-Z0-9]{2}([A-Z0-9]{3})?$","type":"string"},"card":{"description":"BG-18, with payment means 48, 54 or 55","properties":{"holder":{"description":"BT-88","maxLength":200,"type":"string"},"network":{"description":"VISA, MasterCard …; UBL writes NA when absent","maxLength":50,"type":"string"},"number":{"description":"BT-87, masked: at most the first 6 and the last 4 digits, never the full number. Send digits without mask characters.","maxLength":50,"minLength":1,"pattern":"^[^0-9]*([0-9][^0-9]*){0,10}$","type":"string"}},"required":["number"],"type":"object"},"directDebit":{"description":"BG-19, with payment means 59. Leave out the payee IBAN (BR-DE-25-b).","properties":{"creditorId":{"description":"BT-90, the SEPA creditor identifier","maxLength":35,"type":"string"},"debitedAccount":{"description":"BT-91, the buyer IBAN debited","maxLength":34,"type":"string"},"mandateReference":{"description":"BT-89","maxLength":35,"type":"string"}},"type":"object"},"iban":{"description":"BT-84, the payee account; required for transfers (BR-DE-23-a)","maxLength":34,"type":"string"},"meansCode":{"description":"BT-81, UNTDID 4461: 58 SEPA credit transfer, 30 credit transfer, 59 SEPA direct debit, 48/54/55 card, 10 cash, ZZZ mutually defined","pattern":"^([0-9]{1,3}|ZZZ)$","type":"string"},"meansText":{"description":"BT-82, the payment means in words","maxLength":200,"type":"string"},"reference":{"description":"BT-83, what the payer should quote","maxLength":140,"type":"string"}},"required":["meansCode"],"type":"object"},"paymentTerms":{"description":"BT-20","maxLength":1000,"type":"string"},"precedingInvoices":{"description":"BG-3, the invoices this one corrects, credits or settles. CII and ZUGFeRD carry one.","items":{"properties":{"issueDate":{"description":"BT-26","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$","type":"string"},"number":{"description":"BT-25","maxLength":100,"minLength":1,"type":"string"}},"required":["number"],"type":"object"},"maxItems":50,"type":"array"},"prepaidAmount":{"anyOf":[{"type":"number"},{"pattern":"^-?\\d+(\\.\\d+)?$","type":"string"}],"description":"BT-113, already paid; the amount due is the total less this"},"seller":{"description":"BG-4. Needs a VAT id or tax number (BR-DE-16) and a contact (BR-DE-2).","properties":{"address":{"description":"BG-5 / BG-8","properties":{"city":{"description":"BT-37 / BT-52, mandatory (BR-DE-3, BR-DE-8)","maxLength":100,"minLength":1,"type":"string"},"country":{"description":"BT-40 / BT-55, ISO 3166-1 alpha-2, e.g. DE","pattern":"^[A-Z]{2}$","type":"string"},"postcode":{"description":"BT-38 / BT-53, mandatory (BR-DE-4, BR-DE-9)","maxLength":20,"minLength":1,"type":"string"},"street":{"description":"BT-35 / BT-50","maxLength":200,"type":"string"}},"required":["city","postcode","country"],"type":"object"},"contact":{"description":"BG-6. XRechnung requires all three on the seller (BR-DE-2, BR-DE-5 to 7).","properties":{"email":{"description":"BT-43","maxLength":254,"minLength":1,"type":"string"},"name":{"description":"BT-41","maxLength":200,"minLength":1,"type":"string"},"phone":{"description":"BT-42","maxLength":50,"minLength":1,"type":"string"}},"required":["name","phone","email"],"type":"object"},"electronicAddress":{"description":"BT-34 / BT-49, an email address unless a scheme says otherwise","maxLength":254,"type":"string"},"electronicAddressScheme":{"description":"EAS code for the electronic address; EM (email) when absent","pattern":"^[0-9A-Z]{2,10}$","type":"string"},"identifier":{"description":"BT-29 / BT-46. A seller without a VAT id repeats its tax number here: BT-32 alone satisfies BR-DE-16 but not BR-CO-26.","maxLength":100,"type":"string"},"name":{"description":"BT-27 / BT-44, the legal name","maxLength":200,"minLength":1,"type":"string"},"taxNumber":{"description":"BT-32, the German Steuernummer","maxLength":30,"type":"string"},"vatId":{"description":"BT-31 / BT-48, e.g. DE123456789","maxLength":30,"type":"string"}},"required":["name","address"],"type":"object"},"typeCode":{"description":"BT-3, UNTDID 1001; 380 when absent. 381 credit note, 384 corrected invoice, 326 partial, 389 self-billed, 875/876/877 construction invoices.","pattern":"^[0-9]{3}$","type":"string"}},"required":["invoiceNumber","issueDate","currency","buyerReference","seller","buyer","payment","lines"],"type":"object"},"language":{"default":"en","description":"Language of the plain-language explanations: en (default) or de","enum":["en","de"],"type":"string"},"syntax":{"default":"ubl","description":"ubl or cii for XRechnung XML, zugferd for the PDF/A-3 with the invoice embedded","enum":["ubl","cii","zugferd"],"type":"string"}},"required":["invoice"],"type":"object"}Authorization not required, issuer https://normapi.com
Changed the definition of "generate_invoice"
Only numbers and dates differ: this server embeds live figures in the definition, so the text moves without the contract changing.
⟨58 unchanged words⟩ each document counts against the monthly allowance (2550 free).
Certificate recorded, valid to 2027-01-01
Authorization not required, issuer https://normapi.com
Unknown → Live
First tool surface recorded: 3 tools (server version 1.0.1)
npm:@normapi/mcp (package_npm) — from mcp_registry, with the record
https://normapi.com/mcp (mcp_streamable_http) — from mcp_registry, with the record
Showing the latest 10 events. The API returns up to 500 and filters by kind: ?kind=tool_surface_changed
after
{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"invoice":{"properties":{"allowances":{"description":"BG-20","items":{"description":"A document-level allowance (BG-20) or charge (BG-21)","properties":{"amount":{"anyOf":[{"type":"number"},{"pattern":"^-?\\d+(\\.\\d+)?$","type":"string"}],"description":"Two decimals. Give amount or percent, exactly one."},"baseAmount":{"anyOf":[{"type":"number"},{"pattern":"^-?\\d+(\\.\\d+)?$","type":"string"}],"description":"What the percentage is taken of. Only with percent (PEPPOL-EN16931-R042)."},"percent":{"anyOf":[{"type":"number"},{"pattern":"^-?\\d+(\\.\\d+)?$","type":"string"}],"description":"Give amount or percent, exactly one."},"reason":{"description":"This or reasonCode is required","maxLength":500,"type":"string"},"reasonCode":{"description":"UNTDID 5189 for an allowance (95 discount), UNTDID 7161 for a charge (FC freight)","pattern":"^[0-9A-Z]{1,3}$","type":"string"},"vatCategory":{"description":"UNTDID 5305: S standard, Z zero-rated, E exempt, AE reverse charge, K intra-community supply, G export, O outside scope, L Canary Islands, M Ceuta/Melilla","enum":["S","Z","E","AE","K","G","O","L","M"],"type":"string"},"vatExemptionReason":{"description":"BT-120, as on a line","maxLength":500,"type":"string"},"vatRate":{"anyOf":[{"type":"number"},{"pattern":"^-?\\d+(\\.\\d+)?$","type":"string"}],"description":"Percent"}},"required":["vatCategory"],"type":"object"},"maxItems":100,"type":"array"},"attachments":{"description":"BG-24","items":{"description":"BG-24, a supporting document: a file inside the invoice (a timesheet, a delivery note), a link, or a reference alone","properties":{"content":{"contentEncoding":"base64","description":"BT-125, the file as base64, with filename and mimeCode; it must be of that type. At most 3 MB of files per invoice.","format":"base64","pattern":"^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$","type":"string"},"description":{"description":"BT-123","maxLength":500,"type":"string"},"filename":{"description":"BT-125-2, unique within the invoice (BR-DE-22)","maxLength":200,"type":"string"},"id":{"description":"BT-122, the document's number or name; the filename when absent (BR-52)","maxLength":200,"type":"string"},"mimeCode":{"description":"BT-125-1, one of BR-CL-24: application/pdf, image/png, image/jpeg, text/csv, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.oasis.opendocument.spreadsheet","maxLength":100,"type":"string"},"url":{"description":"BT-124, where the buyer can fetch the document","maxLength":2000,"pattern":"^https?:\\/\\/\\S+$","type":"string"}},"type":"object"},"maxItems":20,"type":"array"},"buyer":{"description":"BG-7","properties":{"address":{"description":"BG-5 / BG-8 / BG-15","properties":{"city":{"description":"BT-37 / BT-52 / BT-77, mandatory (BR-DE-3, BR-DE-8, BR-DE-10)","maxLength":100,"minLength":1,"type":"string"},"country":{"description":"BT-40 / BT-55 / BT-80, ISO 3166-1 alpha-2, e.g. DE","pattern":"^[A-Z]{2}$","type":"string"},"postcode":{"description":"BT-38 / BT-53 / BT-78, mandatory (BR-DE-4, BR-DE-9, BR-DE-11)","maxLength":20,"minLength":1,"type":"string"},"street":{"description":"BT-35 / BT-50 / BT-75","maxLength":200,"type":"string"}},"required":["city","postcode","country"],"type":"object"},"contact":{"description":"BG-6. XRechnung requires all three on the seller (BR-DE-2, BR-DE-5 to 7); EN 16931 none.","properties":{"email":{"description":"BT-43","maxLength":254,"type":"string"},"name":{"description":"BT-41","maxLength":200,"type":"string"},"phone":{"description":"BT-42","maxLength":50,"type":"string"}},"type":"object"},"electronicAddress":{"description":"BT-34 / BT-49, an email address unless a scheme says otherwise. XRechnung requires both (PEPPOL-EN16931-R020 seller, R010 buyer); EN 16931 neither.","maxLength":254,"type":"string"},"electronicAddressScheme":{"description":"EAS code for the electronic address; EM (email) when absent","pattern":"^[0-9A-Z]{2,10}$","type":"string"},"identifier":{"description":"BT-29 / BT-46. A seller without a VAT id repeats its tax number here: BT-32 alone satisfies BR-DE-16 but not BR-CO-26.","maxLength":100,"type":"string"},"legalInformation":{"description":"BT-33, seller only: what company law wants on business letters beyond the name, e.g. \"Sitz Berlin, Amtsgericht Charlottenburg · Geschäftsführer: Maria Muster\" (§ 35a GmbHG)","maxLength":1000,"type":"string"},"name":{"description":"BT-27 / BT-44, the legal name","maxLength":200,"minLength":1,"type":"string"},"registrationId":{"description":"BT-30 / BT-47, the register entry, e.g. HRB 123456 for a GmbH; identifies a seller for BR-CO-26 like a VAT id does","maxLength":100,"type":"string"},"registrationIdScheme":{"description":"BT-30-1 / BT-47-1, ISO 6523 ICD of registrationId: none for a German register number, 0002 for a French SIREN","pattern":"^[0-9]{4}$","type":"string"},"taxNumber":{"description":"BT-32, the German Steuernummer","maxLength":30,"type":"string"},"tradingName":{"description":"BT-28 / BT-45, the name the party trades under beside its legal name","maxLength":200,"type":"string"},"vatId":{"description":"BT-31 / BT-48, e.g. DE123456789","maxLength":30,"type":"string"}},"required":["name","address"],"type":"object"},"buyerReference":{"description":"BT-10: the Leitweg-ID for public-sector buyers, else the buyer reference. Mandatory in XRechnung (BR-DE-15), optional in EN 16931.","maxLength":200,"type":"string"},"charges":{"description":"BG-21: freight, packaging …","items":{"description":"A document-level allowance (BG-20) or charge (BG-21)","properties":{"amount":{"anyOf":[{"type":"number"},{"pattern":"^-?\\d+(\\.\\d+)?$","type":"string"}],"description":"Two decimals. Give amount or percent, exactly one."},"baseAmount":{"anyOf":[{"type":"number"},{"pattern":"^-?\\d+(\\.\\d+)?$","type":"string"}],"description":"What the percentage is taken of. Only with percent (PEPPOL-EN16931-R042)."},"percent":{"anyOf":[{"type":"number"},{"pattern":"^-?\\d+(\\.\\d+)?$","type":"string"}],"description":"Give amount or percent, exactly one."},"reason":{"description":"This or reasonCode is required","maxLength":500,"type":"string"},"reasonCode":{"description":"UNTDID 5189 for an allowance (95 discount), UNTDID 7161 for a charge (FC freight)","pattern":"^[0-9A-Z]{1,3}$","type":"string"},"vatCategory":{"description":"UNTDID 5305: S standard, Z zero-rated, E exempt, AE reverse charge, K intra-community supply, G export, O outside scope, L Canary Islands, M Ceuta/Melilla","enum":["S","Z","E","AE","K","G","O","L","M"],"type":"string"},"vatExemptionReason":{"description":"BT-120, as on a line","maxLength":500,"type":"string"},"vatRate":{"anyOf":[{"type":"number"},{"pattern":"^-?\\d+(\\.\\d+)?$","type":"string"}],"description":"Percent"}},"required":["vatCategory"],"type":"object"},"maxItems":100,"type":"array"},"contractReference":{"description":"BT-12","maxLength":100,"type":"string"},"currency":{"description":"BT-5, ISO 4217, e.g. EUR","pattern":"^[A-Z]{3}$","type":"string"},"deliverTo":{"description":"BG-13: where the supply went, when not simply to the buyer. Required for VAT category K: the country the goods went to (BR-IC-12).","properties":{"address":{"description":"BG-15, the delivery address","properties":{"city":{"description":"BT-37 / BT-52 / BT-77, mandatory (BR-DE-3, BR-DE-8, BR-DE-10)","maxLength":100,"minLength":1,"type":"string"},"country":{"description":"BT-40 / BT-55 / BT-80, ISO 3166-1 alpha-2, e.g. DE","pattern":"^[A-Z]{2}$","type":"string"},"postcode":{"description":"BT-38 / BT-53 / BT-78, mandatory (BR-DE-4, BR-DE-9, BR-DE-11)","maxLength":20,"minLength":1,"type":"string"},"street":{"description":"BT-35 / BT-50 / BT-75","maxLength":200,"type":"string"}},"required":["city","postcode","country"],"type":"object"},"locationId":{"description":"BT-71, an identifier of the place, e.g. its GLN","maxLength":100,"type":"string"},"locationIdScheme":{"description":"BT-71-1, ISO 6523 ICD of locationId: 0088 for a GLN; absent means the seller's own","pattern":"^[0-9]{4}$","type":"string"},"name":{"description":"BT-70, who received the goods: a branch, a warehouse, a site","maxLength":200,"type":"string"}},"type":"object"},"deliveryDate":{"description":"BT-72. Omitting it and invoicePeriod draws an advisory.","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$","type":"string"},"despatchAdviceReference":{"description":"BT-16, the delivery note (Lieferschein) number","maxLength":100,"type":"string"},"dueDate":{"description":"BT-9. XRechnung wants this or paymentTerms on a payable invoice.","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$","type":"string"},"invoiceNumber":{"description":"BT-1","maxLength":100,"minLength":1,"type":"string"},"invoicePeriod":{"description":"BG-14, the period a monthly or yearly invoice covers, instead of deliveryDate or beside it","properties":{"endDate":{"description":"BT-74 / BT-135, YYYY-MM-DD","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$","type":"string"},"startDate":{"description":"BT-73 / BT-134, YYYY-MM-DD","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$","type":"string"}},"type":"object"},"issueDate":{"description":"BT-2, YYYY-MM-DD","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$","type":"string"},"lines":{"description":"BG-25. Totals are computed server-side in decimal arithmetic.","items":{"properties":{"allowances":{"items":{"description":"A line allowance (BG-27) or charge (BG-28); it changes the line net, in the line VAT category","properties":{"amount":{"anyOf":[{"type":"number"},{"pattern":"^-?\\d+(\\.\\d+)?$","type":"string"}],"description":"Two decimals. Give amount or percent, exactly one."},"baseAmount":{"anyOf":[{"type":"number"},{"pattern":"^-?\\d+(\\.\\d+)?$","type":"string"}],"description":"What the percentage is taken of. Only with percent (PEPPOL-EN16931-R042)."},"percent":{"anyOf":[{"type":"number"},{"pattern":"^-?\\d+(\\.\\d+)?$","type":"string"}],"description":"Give amount or percent, exactly one."},"reason":{"description":"This or reasonCode is required","maxLength":500,"type":"string"},"reasonCode":{"description":"UNTDID 5189 for an allowance (95 discount), UNTDID 7161 for a charge (FC freight)","pattern":"^[0-9A-Z]{1,3}$","type":"string"}},"type":"object"},"maxItems":20,"type":"array"},"baseQuantity":{"anyOf":[{"type":"number"},{"pattern":"^-?\\d+(\\.\\d+)?$","type":"string"}],"description":"BT-149, how many units unitPrice and listPrice are for, e.g. 100 for a price per hundred; 1 when absent"},"buyerItemId":{"description":"BT-156, the buyer's own number for the article","maxLength":100,"type":"string"},"charges":{"items":{"description":"A line allowance (BG-27) or charge (BG-28); it changes the line net, in the line VAT category","properties":{"amount":{"anyOf":[{"type":"number"},{"pattern":"^-?\\d+(\\.\\d+)?$","type":"string"}],"description":"Two decimals. Give amount or percent, exactly one."},"baseAmount":{"anyOf":[{"type":"number"},{"pattern":"^-?\\d+(\\.\\d+)?$","type":"string"}],"description":"What the percentage is taken of. Only with percent (PEPPOL-EN16931-R042)."},"percent":{"anyOf":[{"type":"number"},{"pattern":"^-?\\d+(\\.\\d+)?$","type":"string"}],"description":"Give amount or percent, exactly one."},"reason":{"description":"This or reasonCode is required","maxLength":500,"type":"string"},"reasonCode":{"description":"UNTDID 5189 for an allowance (95 discount), UNTDID 7161 for a charge (FC freight)","pattern":"^[0-9A-Z]{1,3}$","type":"string"}},"type":"object"},"maxItems":20,"type":"array"},"description":{"description":"BT-154","maxLength":1000,"type":"string"},"id":{"description":"BT-126; assigned 1..n when absent","maxLength":50,"type":"string"},"listPrice":{"anyOf":[{"type":"number"},{"pattern":"^-?\\d+(\\.\\d+)?$","type":"string"}],"description":"BT-148, the price before the price discount, at least unitPrice; the discount (BT-147) is listPrice − unitPrice"},"name":{"description":"BT-153","maxLength":200,"minLength":1,"type":"string"},"note":{"description":"BT-127, free text on this line","maxLength":1000,"type":"string"},"orderLineReference":{"description":"BT-132, the line of the buyer's purchase order this one bills","maxLength":50,"type":"string"},"period":{"description":"BG-26, the period this line covers","properties":{"endDate":{"description":"BT-74 / BT-135, YYYY-MM-DD","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$","type":"string"},"startDate":{"description":"BT-73 / BT-134, YYYY-MM-DD","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$","type":"string"}},"type":"object"},"quantity":{"anyOf":[{"type":"number"},{"pattern":"^-?\\d+(\\.\\d+)?$","type":"string"}],"description":"BT-129, up to six decimals"},"sellerItemId":{"description":"BT-155, the seller's article number","maxLength":100,"type":"string"},"standardItemId":{"description":"BT-157, e.g. the GTIN (EAN) on the packaging","maxLength":100,"type":"string"},"standardItemIdScheme":{"description":"BT-157-1, ISO 6523 ICD of standardItemId; 0160 (GTIN) when absent","pattern":"^[0-9]{4}$","type":"string"},"unit":{"description":"BT-130, UN/ECE Rec 20: C62 piece, HUR hour, DAY day, KGM kilogram …","pattern":"^[0-9A-Z]{1,8}$","type":"string"},"unitPrice":{"anyOf":[{"type":"number"},{"pattern":"^-?\\d+(\\.\\d+)?$","type":"string"}],"description":"BT-146, net, up to four decimals; per baseQuantity units when one is given"},"vatCategory":{"description":"UNTDID 5305: S standard, Z zero-rated, E exempt, AE reverse charge, K intra-community supply, G export, O outside scope, L Canary Islands, M Ceuta/Melilla","enum":["S","Z","E","AE","K","G","O","L","M"],"type":"string"},"vatExemptionReason":{"description":"BT-120; the rule set wants it for the exempt-family categories","maxLength":500,"type":"string"},"vatRate":{"anyOf":[{"type":"number"},{"pattern":"^-?\\d+(\\.\\d+)?$","type":"string"}],"description":"BT-152, percent; required for category S"}},"required":["name","quantity","unit","unitPrice","vatCategory"],"type":"object"},"maxItems":500,"minItems":1,"type":"array"},"note":{"description":"BT-22","maxLength":1000,"type":"string"},"orderReference":{"description":"BT-13, the buyer's purchase order number","maxLength":100,"type":"string"},"payment":{"description":"BG-16 and the group its code calls for: BG-17 transfer, BG-18 card, BG-19 direct debit","properties":{"accountName":{"description":"BT-85, the payee account holder","maxLength":200,"type":"string"},"bic":{"description":"BT-86, the payee bank","pattern":"^[A-Z]{6}[A-Z0-9]{2}([A-Z0-9]{3})?$","type":"string"},"card":{"description":"BG-18, with payment means 48, 54 or 55","properties":{"holder":{"description":"BT-88","maxLength":200,"type":"string"},"network":{"description":"VISA, MasterCard …; UBL writes NA when absent","maxLength":50,"type":"string"},"number":{"description":"BT-87, masked: at most the first 6 and the last 4 digits, never the full number. Send digits without mask characters.","maxLength":50,"minLength":1,"pattern":"^[^0-9]*([0-9][^0-9]*){0,10}$","type":"string"}},"required":["number"],"type":"object"},"directDebit":{"description":"BG-19, with payment means 59. Leave out the payee IBAN (BR-DE-25-b).","properties":{"creditorId":{"description":"BT-90, the SEPA creditor identifier","maxLength":35,"type":"string"},"debitedAccount":{"description":"BT-91, the buyer IBAN debited","maxLength":34,"type":"string"},"mandateReference":{"description":"BT-89","maxLength":35,"type":"string"}},"type":"object"},"iban":{"description":"BT-84, the payee account; required for transfers (BR-DE-23-a)","maxLength":34,"type":"string"},"meansCode":{"description":"BT-81, UNTDID 4461: 58 SEPA credit transfer, 30 credit transfer, 59 SEPA direct debit, 48/54/55 card, 10 cash, ZZZ mutually defined","pattern":"^([0-9]{1,3}|ZZZ)$","type":"string"},"meansText":{"description":"BT-82, the payment means in words","maxLength":200,"type":"string"},"reference":{"description":"BT-83, what the payer should quote","maxLength":140,"type":"string"}},"required":["meansCode"],"type":"object"},"paymentTerms":{"description":"BT-20","maxLength":1000,"type":"string"},"precedingInvoices":{"description":"BG-3, the invoices this one corrects, credits or settles. CII and ZUGFeRD carry one.","items":{"properties":{"issueDate":{"description":"BT-26","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$","type":"string"},"number":{"description":"BT-25","maxLength":100,"minLength":1,"type":"string"}},"required":["number"],"type":"object"},"maxItems":50,"type":"array"},"prepaidAmount":{"anyOf":[{"type":"number"},{"pattern":"^-?\\d+(\\.\\d+)?$","type":"string"}],"description":"BT-113, already paid; the amount due is the total less this"},"projectReference":{"description":"BT-11","maxLength":100,"type":"string"},"seller":{"description":"BG-4. Needs a VAT id or tax number (BR-DE-16); XRechnung also a contact (BR-DE-2).","properties":{"address":{"description":"BG-5 / BG-8 / BG-15","properties":{"city":{"description":"BT-37 / BT-52 / BT-77, mandatory (BR-DE-3, BR-DE-8, BR-DE-10)","maxLength":100,"minLength":1,"type":"string"},"country":{"description":"BT-40 / BT-55 / BT-80, ISO 3166-1 alpha-2, e.g. DE","pattern":"^[A-Z]{2}$","type":"string"},"postcode":{"description":"BT-38 / BT-53 / BT-78, mandatory (BR-DE-4, BR-DE-9, BR-DE-11)","maxLength":20,"minLength":1,"type":"string"},"street":{"description":"BT-35 / BT-50 / BT-75","maxLength":200,"type":"string"}},"required":["city","postcode","country"],"type":"object"},"contact":{"description":"BG-6. XRechnung requires all three on the seller (BR-DE-2, BR-DE-5 to 7); EN 16931 none.","properties":{"email":{"description":"BT-43","maxLength":254,"type":"string"},"name":{"description":"BT-41","maxLength":200,"type":"string"},"phone":{"description":"BT-42","maxLength":50,"type":"string"}},"type":"object"},"electronicAddress":{"description":"BT-34 / BT-49, an email address unless a scheme says otherwise. XRechnung requires both (PEPPOL-EN16931-R020 seller, R010 buyer); EN 16931 neither.","maxLength":254,"type":"string"},"electronicAddressScheme":{"description":"EAS code for the electronic address; EM (email) when absent","pattern":"^[0-9A-Z]{2,10}$","type":"string"},"identifier":{"description":"BT-29 / BT-46. A seller without a VAT id repeats its tax number here: BT-32 alone satisfies BR-DE-16 but not BR-CO-26.","maxLength":100,"type":"string"},"legalInformation":{"description":"BT-33, seller only: what company law wants on business letters beyond the name, e.g. \"Sitz Berlin, Amtsgericht Charlottenburg · Geschäftsführer: Maria Muster\" (§ 35a GmbHG)","maxLength":1000,"type":"string"},"name":{"description":"BT-27 / BT-44, the legal name","maxLength":200,"minLength":1,"type":"string"},"registrationId":{"description":"BT-30 / BT-47, the register entry, e.g. HRB 123456 for a GmbH; identifies a seller for BR-CO-26 like a VAT id does","maxLength":100,"type":"string"},"registrationIdScheme":{"description":"BT-30-1 / BT-47-1, ISO 6523 ICD of registrationId: none for a German register number, 0002 for a French SIREN","pattern":"^[0-9]{4}$","type":"string"},"taxNumber":{"description":"BT-32, the German Steuernummer","maxLength":30,"type":"string"},"tradingName":{"description":"BT-28 / BT-45, the name the party trades under beside its legal name","maxLength":200,"type":"string"},"vatId":{"description":"BT-31 / BT-48, e.g. DE123456789","maxLength":30,"type":"string"}},"required":["name","address"],"type":"object"},"typeCode":{"description":"BT-3, UNTDID 1001; 380 when absent. 381 credit note, 384 corrected invoice, 326 partial, 389 self-billed, 875/876/877 construction invoices.","pattern":"^[0-9]{3}$","type":"string"}},"required":["invoiceNumber","issueDate","currency","seller","buyer","payment","lines"],"type":"object"},"language":{"default":"en","description":"Language of the plain-language explanations: en (default) or de","enum":["en","de"],"type":"string"},"profile":{"default":"xrechnung","description":"xrechnung for public-sector buyers: it requires buyerReference (the Leitweg-ID), a seller contact and both electronic addresses. en16931 for businesses (§ 14 UStG accepts it), without those.","enum":["xrechnung","en16931"],"type":"string"},"syntax":{"default":"ubl","description":"ubl or cii for XML, zugferd for the PDF/A-3 with the invoice embedded","enum":["ubl","cii","zugferd"],"type":"string"}},"required":["invoice"],"type":"object"}⟨16 unchanged words⟩ ,"mimeType":{"type":"string"},"profile":{"description":"xrechnung for public-sector buyers: it requires buyerReference (the Leitweg-ID), a seller contact and both electronic addresses. en16931 for businesses (§ 14 UStG accepts it), without those.","enum":["xrechnung","en16931"],"type":"string"},"rulesetVersion":{"anyOf":[{"type":"string ⟨25 unchanged words⟩ string"},"xml":{"description":"TheXRechnungXML document; absent for the ZUGFeRD PDF, which ⟨4 unchanged words⟩ type":"string"}},"required":["syntax","profile","fileName","mimeType","bytes","rulesetVersion ⟨3 unchanged words⟩