lexware_create_invoice takes finalize=true to come out with status open; the API does not support finalizing an existing draft, so a draft made without it stays one. Documents connect through the pursue tools rather than through edits — a quotation leads to an order confirmation, that or the quotation to a delivery note, an invoice to a credit note or a dunning — each by precedingSalesVoucherId. Webhook verification is exacting for a reason: it wants the raw HTTP body bytes as received, because the signature covers the compact JSON as transmitted, whitespace and key order included.
A Lexware Office client of 66 tools across 20 resource domains, covering the sales-voucher chain, bookkeeping vouchers, contacts and articles, file upload and webhook subscriptions. Five narrower entry points ship alongside the full one, so a client with a tool limit can load only the domain it needs.
- The sales-voucher chain, each document created and read on its own: lexware_create_invoice, lexware_create_credit_note, lexware_create_quotation, lexware_create_order_confirmation and lexware_create_delivery_note, with matching lexware_get_invoice, lexware_get_credit_note, lexware_get_quotation, lexware_get_order_confirmation, lexware_get_delivery_note and lexware_get_down_payment_invoice.
- Follow-up creation that keeps the paper trail: lexware_pursue_invoice, lexware_pursue_credit_note, lexware_pursue_order_confirmation, lexware_pursue_delivery_note and lexware_pursue_dunning, each taking the precedingSalesVoucherId of the document it follows.
- Files out: lexware_download_invoice_file, lexware_download_credit_note_file and lexware_download_down_payment_invoice_file default to PDF and take format="xml" for the XRechnung e-invoice; lexware_download_quotation_file, lexware_download_order_confirmation_file, lexware_download_delivery_note_file and lexware_download_dunning_file return PDF.
- Deep links straight into the Lexware web app for invoices, credit notes, quotations, order confirmations, delivery notes, down payment invoices, dunnings, contacts, vouchers, recurring templates and the bookkeeping inbox.
- Master data: lexware_list_contacts, lexware_get_contact, lexware_create_contact and lexware_update_contact; lexware_list_articles, lexware_get_article, lexware_create_article, lexware_update_article and lexware_delete_article; plus lexware_list_countries with their tax classifications, lexware_list_payment_conditions, lexware_list_posting_categories, lexware_list_print_layouts and lexware_get_profile.
- Bookkeeping: lexware_create_voucher, lexware_get_voucher, lexware_update_voucher, lexware_list_vouchers, lexware_upload_voucher_file and lexware_get_payments, with lexware_list_voucherlist searching across every voucher type at once.
- Files and recurring templates: lexware_upload_file, lexware_download_file returning base64 content, lexware_get_file_status, and lexware_list_recurring_templates with lexware_get_recurring_template.
- Webhooks: lexware_create_event_subscription, lexware_list_event_subscriptions, lexware_get_event_subscription and lexware_delete_event_subscription, with lexware_verify_webhook_signature checking the X-Lxo-Signature against the raw body.
A Lexware Office organization and an API token from its public-API settings. The token is read from your OS keyring first and from LEXWARE_API_TOKEN second — the keyring route is the one the author documents, with prompts that keep the token out of your shell history and the process list. Install with npm and run the full server, or pick one of the narrower entry points for sales, contacts, bookkeeping, reference data or system when your client caps how many tools it will load. Creating an event subscription needs a callbackUrl Lexware can reach, and the update tools for articles, contacts and vouchers need the record's version field for optimistic locking. Unofficial and not affiliated with Lexware.
One command plus a key — npm install -g @lazyants/lexware-mcp-server, then supply credentials
