Read Lexware Office contacts, articles, invoices and vouchers; create contacts and draft invoices.
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.
WRITE: creates a new customer and/or vendor in Lexware Office (Lexware assigns the customer/vendor number). Give company_name for a company OR person_last_name for a private person. One billing and one shipping address, one email and one phone at most. Check lexware_list_contacts first to avoid duplicates. POST /v1/contacts.
Internal note (max 1000 characters).
Business email address.
Business phone number.
Roles of the new contact (default customer).
Company tax number (Steuernummer).
Company name (for a company contact).
Private person: last name.
Private person: first name.
Private person: salutation, e.g. Frau, Herr.
Company VAT id (USt-IdNr.), e.g. DE123456789.
Company: allow tax-free invoices.
Company: last name of the (primary) contact person.
German public authority: Leitweg-ID (needs xrechnung_vendor_number_at_customer).
Your vendor number at that customer (with the Leitweg-ID).
The server marks this tool as destructive. Running it may delete or overwrite data on the server or in any account you connected with your headers.
WRITE: creates a new customer and/or vendor in Lexware Office (Lexware assigns the customer/vendor number). Give company_name for a company OR person_last_name for a private person. One billing and one shipping address, one email and one phone at most. Check lexware_list_contacts first to avoid duplicates. POST /v1/contacts.
| Argument | Type | Description |
|---|---|---|
| note | string | Internal note (max 1000 characters). |
| string | Business email address. | |
| phone | string | Business phone number. |
| roles | array | Roles of the new contact (default customer). |
| tax_number | string | Company tax number (Steuernummer). |
| company_name | string | Company name (for a company contact). |
| billing_address | object | |
| person_last_name | string | Private person: last name. |
| shipping_address | object | |
| person_first_name | string | Private person: first name. |
| person_salutation | string | Private person: salutation, e.g. Frau, Herr. |
| vat_registration_id | string | Company VAT id (USt-IdNr.), e.g. DE123456789. |
| contact_person_email | string | |
| contact_person_phone | string | |
| allow_tax_free_invoices | boolean | Company: allow tax-free invoices. |
| contact_person_last_name | string | Company: last name of the (primary) contact person. |
| contact_person_first_name | string | |
| contact_person_salutation | string | |
| xrechnung_buyer_reference | string | German public authority: Leitweg-ID (needs xrechnung_vendor_number_at_customer). |
| xrechnung_vendor_number_at_customer | string | Your vendor number at that customer (with the Leitweg-ID). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"note": {
"type": "string",
"maxLength": 1000,
"description": "Internal note (max 1000 characters)."
},
"email": {
"type": "string",
"format": "email",
"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
"maxLength": 255,
"description": "Business email address."
},
"phone": {
"type": "string",
"maxLength": 50,
"description": "Business phone number."
},
"roles": {
"type": "array",
"items": {
"enum": [
"customer",
"vendor"
],
"type": "string"
},
"maxItems": 2,
"minItems": 1,
"description": "Roles of the new contact (default customer)."
},
"tax_number": {
"type": "string",
"maxLength": 50,
"description": "Company tax number (Steuernummer)."
},
"company_name": {
"type": "string",
"maxLength": 255,
"minLength": 1,
"description": "Company name (for a company contact)."
},
"billing_address": {
"type": "object",
"required": [
"country_code"
],
"properties": {
"zip": {
"type": "string",
"maxLength": 20
},
"city": {
"type": "string",
"maxLength": 255
},
"street": {
"type": "string",
"maxLength": 255,
"description": "Street and number."
},
"supplement": {
"type": "string",
"maxLength": 255
},
"country_code": {
"type": "string",
"pattern": "^[A-Z]{2}(_[A-Z0-9]{1,3})?$",
"description": "ISO 3166 alpha-2 country code, e.g. DE, AT, CH (lexware_list_countries lists the supported codes)."
}
}
},
"person_last_name": {
"type": "string",
"maxLength": 255,
"minLength": 1,
"description": "Private person: last name."
},
"shipping_address": {
"type": "object",
"required": [
"country_code"
],
"properties": {
"zip": {
"type": "string",
"maxLength": 20
},
"city": {
"type": "string",
"maxLength": 255
},
"street": {
"type": "string",
"maxLength": 255,
"description": "Street and number."
},
"supplement": {
"type": "string",
"maxLength": 255
},
"country_code": {
"type": "string",
"pattern": "^[A-Z]{2}(_[A-Z0-9]{1,3})?$",
"description": "ISO 3166 alpha-2 country code, e.g. DE, AT, CH (lexware_list_countries lists the supported codes)."
}
}
},
"person_first_name": {
"type": "string",
"maxLength": 255,
"description": "Private person: first name."
},
"person_salutation": {
"type": "string",
"maxLength": 25,
"description": "Private person: salutation, e.g. Frau, Herr."
},
"vat_registration_id": {
"type": "string",
"maxLength": 50,
"description": "Company VAT id (USt-IdNr.), e.g. DE123456789."
},
"contact_person_email": {
"type": "string",
"format": "email",
"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
"maxLength": 255
},
"contact_person_phone": {
"type": "string",
"maxLength": 50
},
"allow_tax_free_invoices": {
"type": "boolean",
"description": "Company: allow tax-free invoices."
},
"contact_person_last_name": {
"type": "string",
"maxLength": 255,
"minLength": 1,
"description": "Company: last name of the (primary) contact person."
},
"contact_person_first_name": {
"type": "string",
"maxLength": 255
},
"contact_person_salutation": {
"type": "string",
"maxLength": 25
},
"xrechnung_buyer_reference": {
"type": "string",
"maxLength": 255,
"description": "German public authority: Leitweg-ID (needs xrechnung_vendor_number_at_customer)."
},
"xrechnung_vendor_number_at_customer": {
"type": "string",
"maxLength": 255,
"description": "Your vendor number at that customer (with the Leitweg-ID)."
}
}
}WRITE: creates an invoice in Lexware Office as a DRAFT (never finalized, numbered or sent; Lexware assigns the number when the user finalizes it in the app). Address it to an existing customer (contact_id) or a one-time address (name + country_code). Prices are EUR. Returns the new id and lexwareAppUrl to review and finalize it in Lexware Office. POST /v1/invoices (without finalize).
| Argument | Type | Description |
|---|---|---|
| zip | string | One-time address ZIP code. |
| city | string | One-time address city. |
| name | string | One-time recipient name (no contact is created). Required without contact_id. |
| title | string | Document title (max 25 characters; default from Lexware). |
| remark | string | Closing remark (max 2000). |
| street | string | One-time address street and number. |
| language | string | Document language (default de; en needs the INVOICING_PRO feature). |
| tax_type | string | Tax type (default net): net, gross, vatfree, intraCommunitySupply, constructionService13b, externalService13b, thirdPartyCountryService, thirdPartyCountryDelivery. |
WRITE: creates a quotation (Angebot) in Lexware Office as a DRAFT (never finalized or sent). Address it to an existing customer (contact_id) or a one-time address (name + country_code). Prices are EUR. Returns the new id and lexwareAppUrl to review and finalize it in Lexware Office. POST /v1/quotations (without finalize).
| Argument | Type | Description |
|---|---|---|
| zip | string | One-time address ZIP code. |
| city | string | One-time address city. |
| name | string | One-time recipient name (no contact is created). Required without contact_id. |
| title | string | Document title (max 25 characters; default from Lexware). |
| remark | string | Closing remark (max 2000). |
| street | string | One-time address street and number. |
| language | string | Document language (default de; en needs the INVOICING_PRO feature). |
| tax_type | string | Tax type (default net): net, gross, vatfree, intraCommunitySupply, constructionService13b, externalService13b, thirdPartyCountryService, thirdPartyCountryDelivery. |
Get one article (product or service) by id: title, type, article number, GTIN, unit, net/gross price and tax rate. GET /v1/articles/{id}.
| Argument | Type | Description |
|---|---|---|
| id* | string | The article id (from lexware_list_vouchers / lexware_list_articles). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
"description": "The article id (from lexware_list_vouchers / lexware_list_articles)."
}
}
}Get one bookkeeping voucher (salesinvoice, salescreditnote, purchaseinvoice or purchasecreditnote from the voucher list) by id: status, voucher items with posting category ids, tax amounts, contact, file ids. Includes lexwareAppUrl, a link that opens it in Lexware Office. GET /v1/vouchers/{id}.
| Argument | Type | Description |
|---|---|---|
| id* | string | The bookkeeping voucher id (from lexware_list_vouchers). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
"description": "The bookkeeping voucher id (from lexware_list_vouchers)."
}
}
}Get one contact (customer and/or vendor) by id: customer/vendor numbers, company or person, contact persons, addresses, emails, phones, note. Includes lexwareAppUrl, a link that opens it in Lexware Office. GET /v1/contacts/{id}.
| Argument | Type | Description |
|---|---|---|
| id* | string | The contact id (from lexware_list_vouchers / lexware_list_contacts). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
"description": "The contact id (from lexware_list_vouchers / lexware_list_contacts)."
}
}
}Get one credit note by id: status, line items, totals, related invoice. Includes lexwareAppUrl, a link that opens it in Lexware Office. GET /v1/credit-notes/{id}.
| Argument | Type | Description |
|---|---|---|
| id* | string | The credit note id (from lexware_list_vouchers). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
"description": "The credit note id (from lexware_list_vouchers)."
}
}
}Get one delivery note by id: status, line items, shipping conditions. Includes lexwareAppUrl, a link that opens it in Lexware Office. GET /v1/delivery-notes/{id}.
| Argument | Type | Description |
|---|---|---|
| id* | string | The delivery note id (from lexware_list_vouchers). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
"description": "The delivery note id (from lexware_list_vouchers)."
}
}
}Get one down payment invoice (Abschlagsrechnung) by id: status, amounts, related closing invoice. Includes lexwareAppUrl, a link that opens it in Lexware Office. GET /v1/down-payment-invoices/{id}.
| Argument | Type | Description |
|---|---|---|
| id* | string | The down payment invoice id (from lexware_list_vouchers). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
"description": "The down payment invoice id (from lexware_list_vouchers)."
}
}
}Get one dunning (payment reminder) by id: status, the dunned invoice in relatedVouchers, line items, totals. Includes lexwareAppUrl, a link that opens it in Lexware Office. GET /v1/dunnings/{id}.
| Argument | Type | Description |
|---|---|---|
| id* | string | The dunning id (from lexware_list_vouchers). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
"description": "The dunning id (from lexware_list_vouchers)."
}
}
}Get one invoice by id: status (draft/open/paid/voided), line items, totals, tax amounts, payment and shipping conditions, related vouchers. Includes lexwareAppUrl, a link that opens it in Lexware Office. GET /v1/invoices/{id}.
| Argument | Type | Description |
|---|---|---|
| id* | string | The invoice id (from lexware_list_vouchers). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
"description": "The invoice id (from lexware_list_vouchers)."
}
}
}Get one order confirmation by id: status, line items, totals, delivery terms. Includes lexwareAppUrl, a link that opens it in Lexware Office. GET /v1/order-confirmations/{id}.
| Argument | Type | Description |
|---|---|---|
| id* | string | The order confirmation id (from lexware_list_vouchers). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
"description": "The order confirmation id (from lexware_list_vouchers)."
}
}
}Payment status of an invoice, credit note, down payment invoice or bookkeeping voucher: open amount, payment status (balanced/openRevenue/openExpense), paid date and the payment items (bank transactions, cash, credit notes, Skonto). Not available for quotations or drafts. GET /v1/payments/{voucherId}.
| Argument | Type | Description |
|---|---|---|
| voucher_id* | string | The voucher id (from lexware_list_vouchers). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"voucher_id"
],
"properties": {
"voucher_id": {
"type": "string",
"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
"description": "The voucher id (from lexware_list_vouchers)."
}
}
}The connected Lexware Office organization: organizationId, company name, the user who created the API key, tax type (net/gross/vatfree), small-business flag (Kleinunternehmer), distance-sales principle and the plan's business features (INVOICING, INVOICING_PRO, BOOKKEEPING). Good first call. GET /v1/profile.
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}Get one quotation by id: status (draft/open/accepted/rejected), expiration date, line items, totals. Includes lexwareAppUrl, a link that opens it in Lexware Office. GET /v1/quotations/{id}.
| Argument | Type | Description |
|---|---|---|
| id* | string | The quotation id (from lexware_list_vouchers). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
"description": "The quotation id (from lexware_list_vouchers)."
}
}
}List articles (products and services usable as invoice line items), with price, tax rate and unit. Optional exact filters by article number, GTIN or type. Paged: pass next_page as page. GET /v1/articles.
| Argument | Type | Description |
|---|---|---|
| gtin | string | GTIN (EAN) of the article. |
| page | integer | Page index, 0-based (default 0). Use next_page from the previous reply. |
| size | integer | Results per page, 1-250 (default 25). |
| type | string | Only products or only services. |
| article_number | string | Exact article number. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"gtin": {
"type": "string",
"pattern": "^\\d{8,14}$",
"description": "GTIN (EAN) of the article."
},
"page": {
"type": "integer",
"maximum": 9999,
"minimum": 0,
"description": "Page index, 0-based (default 0). Use next_page from the previous reply."
},
"size": {
"type": "integer",
"maximum": 250,
"minimum": 1,
"description": "Results per page, 1-250 (default 25)."
},
"type": {
"enum": [
"PRODUCT",
"SERVICE"
],
"type": "string",
"description": "Only products or only services."
},
"article_number": {
"type": "string",
"maxLength": 255,
"minLength": 1,
"description": "Exact article number."
}
}
}List customers and vendors, optionally filtered (filters combine with AND). name and email match as case-insensitive substrings (at least 3 characters; _ and % are wildcards). Paged: pass next_page as page. GET /v1/contacts.
| Argument | Type | Description |
|---|---|---|
| name | string | Part of the contact's name (min 3 characters). |
| page | integer | Page index, 0-based (default 0). Use next_page from the previous reply. |
| size | integer | Results per page, 1-250 (default 25). |
| string | Part of any of the contact's email addresses (min 3 characters). | |
| number | integer | Customer or vendor number. |
| vendor | boolean | true = only contacts with the vendor role, false = only contacts without it. |
| customer | boolean | true = only contacts with the customer role, false = only contacts without it. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"name": {
"type": "string",
"maxLength": 255,
"minLength": 3,
"description": "Part of the contact's name (min 3 characters)."
},
"page": {
"type": "integer",
"maximum": 9999,
"minimum": 0,
"description": "Page index, 0-based (default 0). Use next_page from the previous reply."
},
"size": {
"type": "integer",
"maximum": 250,
"minimum": 1,
"description": "Results per page, 1-250 (default 25)."
},
"email": {
"type": "string",
"maxLength": 255,
"minLength": 3,
"description": "Part of any of the contact's email addresses (min 3 characters)."
},
"number": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Customer or vendor number.",
"exclusiveMinimum": 0
},
"vendor": {
"type": "boolean",
"description": "true = only contacts with the vendor role, false = only contacts without it."
},
"customer": {
"type": "boolean",
"description": "true = only contacts with the customer role, false = only contacts without it."
}
}
}Countries known to Lexware Office with their code, English and German name and tax classification (de, intraCommunity, thirdPartyCountry). GET /v1/countries.
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}The payment conditions configured in Lexware Office (days until due, early-payment discount, label template, which is the organization default). GET /v1/payment-conditions.
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}Bookkeeping posting categories (id, name, group, income or outgo, whether a contact is required and split tax rates are allowed), used by bookkeeping vouchers' categoryId. Optionally only income or outgo. GET /v1/posting-categories.
| Argument | Type | Description |
|---|---|---|
| type | string | Only income (revenue) or outgo (expense) categories. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"type": {
"enum": [
"income",
"outgo"
],
"type": "string",
"description": "Only income (revenue) or outgo (expense) categories."
}
}
}Search the voucher list: metadata (id, type, status, number, dates, contact, total and open amount) of sales documents (invoice, quotation, creditnote, orderconfirmation, deliverynote, downpaymentinvoice) and bookkeeping vouchers (salesinvoice, salescreditnote, purchaseinvoice, purchasecreditnote). Omit voucher_types / voucher_statuses for all. Then fetch details with the matching get tool (invoice → lexware_get_invoice, quotation → lexware_get_quotation, creditnote → lexware_get_credit_note, orderconfirmation → lexware_get_order_confirmation, deliverynote → lexware_get_delivery_note, downpaymentinvoice → lexware_get_down_payment_invoice, the four bookkeeping types → lexware_get_bookkeeping_voucher). Dates are yyyy-mm-dd, whole days in German time. Up to 10,000 results can be paged through; narrow the dates for more. GET /v1/voucherlist.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page index, 0-based (default 0). Use next_page from the previous reply. |
| size | integer | Results per page, 1-250 (default 25). |
| sort | string | Sort field (default voucherDate). |
| archived | boolean | true = only archived, false = only not archived. |
| direction | string | Sort direction (default DESC). |
| contact_id | string | Only vouchers of this contact. |
| contact_id | string | An existing Lexware contact with the customer role (from lexware_list_contacts). Give this OR name + country_code. |
| line_items* | array | 1-300 line items. |
| supplement | string | One-time address supplement. |
| country_code | string | ISO 3166 alpha-2 country code, e.g. DE, AT, CH (lexware_list_countries lists the supported codes). |
| introduction | string | Introduction text (max 2000). |
| voucher_date* | string | Invoice date (yyyy-mm-dd). |
| shipping_date | string | Service/delivery date, or the start of the period (yyyy-mm-dd). |
| shipping_type* | string | Leistungs-/Lieferdatum type: service or delivery (needs shipping_date), serviceperiod or deliveryperiod (needs shipping_date and shipping_end_date), none. |
| tax_type_note | string | Note for a vat-free tax type (Lexware uses the organization's default when omitted). |
| shipping_end_date | string | End of the service/delivery period (yyyy-mm-dd). |
| payment_term_label | string | Payment terms text shown on the document. |
| payment_term_duration | integer | Days until payment is due (the organization's or contact's default when omitted). |
| total_discount_percentage | number | Total discount in percent. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"voucher_date",
"shipping_type",
"line_items"
],
"properties": {
"zip": {
"type": "string",
"maxLength": 20,
"description": "One-time address ZIP code."
},
"city": {
"type": "string",
"maxLength": 255,
"description": "One-time address city."
},
"name": {
"type": "string",
"maxLength": 255,
"minLength": 1,
"description": "One-time recipient name (no contact is created). Required without contact_id."
},
"title": {
"type": "string",
"maxLength": 25,
"description": "Document title (max 25 characters; default from Lexware)."
},
"remark": {
"type": "string",
"maxLength": 2000,
"description": "Closing remark (max 2000)."
},
"street": {
"type": "string",
"maxLength": 255,
"description": "One-time address street and number."
},
"language": {
"enum": [
"de",
"en"
],
"type": "string",
"description": "Document language (default de; en needs the INVOICING_PRO feature)."
},
"tax_type": {
"enum": [
"net",
"gross",
"vatfree",
"intraCommunitySupply",
"constructionService13b",
"externalService13b",
"thirdPartyCountryService",
"thirdPartyCountryDelivery"
],
"type": "string",
"description": "Tax type (default net): net, gross, vatfree, intraCommunitySupply, constructionService13b, externalService13b, thirdPartyCountryService, thirdPartyCountryDelivery."
},
"contact_id": {
"type": "string",
"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
"description": "An existing Lexware contact with the customer role (from lexware_list_contacts). Give this OR name + country_code."
},
"line_items": {
"type": "array",
"items": {
"type": "object",
"required": [
"type",
"name"
],
"properties": {
"name": {
"type": "string",
"maxLength": 255,
"minLength": 1,
"description": "Item name (max 255 characters)."
},
"type": {
"enum": [
"custom",
"service",
"material",
"text"
],
"type": "string",
"description": "custom = a free item without an article; service/material = an existing article (article_id required); text = a text-only line."
},
"quantity": {
"type": "number",
"maximum": 1000000000,
"description": "Quantity (up to 4 decimals); required unless type is text.",
"exclusiveMinimum": 0
},
"tax_rate": {
"type": "number",
"maximum": 100,
"minimum": 0,
"description": "VAT rate in percent, e.g. 19, 7 or 0 (0 for every vat-free tax_type). Required unless type is text."
},
"unit_name": {
"type": "string",
"maxLength": 255,
"minLength": 1,
"description": "Unit, e.g. Stück, Stunde, piece, hour; required unless type is text."
},
"article_id": {
"type": "string",
"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
"description": "The article id (from lexware_list_articles); required for type service and material, not allowed otherwise."
},
"unit_price": {
"type": "number",
"maximum": 1000000000,
"minimum": -1000000000,
"description": "Unit price in EUR (up to 4 decimals): NET when tax_type is not gross, GROSS when tax_type is gross. Required unless type is text."
},
"description": {
"type": "string",
"maxLength": 2000,
"description": "Item description (max 2000; **bold**, __italic__ and '- ' lists are supported)."
},
"discount_percentage": {
"type": "number",
"maximum": 100,
"minimum": 0,
"description": "Line discount in percent (up to 2 decimals)."
}
}
},
"maxItems": 300,
"minItems": 1,
"description": "1-300 line items."
},
"supplement": {
"type": "string",
"maxLength": 255,
"description": "One-time address supplement."
},
"country_code": {
"type": "string",
"pattern": "^[A-Z]{2}(_[A-Z0-9]{1,3})?$",
"description": "ISO 3166 alpha-2 country code, e.g. DE, AT, CH (lexware_list_countries lists the supported codes)."
},
"introduction": {
"type": "string",
"maxLength": 2000,
"description": "Introduction text (max 2000)."
},
"voucher_date": {
"type": "string",
"description": "Invoice date (yyyy-mm-dd)."
},
"shipping_date": {
"type": "string",
"description": "Service/delivery date, or the start of the period (yyyy-mm-dd)."
},
"shipping_type": {
"enum": [
"service",
"serviceperiod",
"delivery",
"deliveryperiod",
"none"
],
"type": "string",
"description": "Leistungs-/Lieferdatum type: service or delivery (needs shipping_date), serviceperiod or deliveryperiod (needs shipping_date and shipping_end_date), none."
},
"tax_type_note": {
"type": "string",
"maxLength": 1000,
"description": "Note for a vat-free tax type (Lexware uses the organization's default when omitted)."
},
"shipping_end_date": {
"type": "string",
"description": "End of the service/delivery period (yyyy-mm-dd)."
},
"payment_term_label": {
"type": "string",
"maxLength": 255,
"description": "Payment terms text shown on the document."
},
"payment_term_duration": {
"type": "integer",
"maximum": 3650,
"minimum": 0,
"description": "Days until payment is due (the organization's or contact's default when omitted)."
},
"total_discount_percentage": {
"type": "number",
"maximum": 100,
"minimum": 0,
"description": "Total discount in percent."
}
}
}| contact_id | string | An existing Lexware contact with the customer role (from lexware_list_contacts). Give this OR name + country_code. |
| line_items* | array | 1-300 line items. |
| supplement | string | One-time address supplement. |
| country_code | string | ISO 3166 alpha-2 country code, e.g. DE, AT, CH (lexware_list_countries lists the supported codes). |
| introduction | string | Introduction text (max 2000). |
| voucher_date* | string | Quotation date (yyyy-mm-dd). |
| tax_type_note | string | Note for a vat-free tax type (Lexware uses the organization's default when omitted). |
| expiration_date* | string | Valid until (yyyy-mm-dd), on or after voucher_date. |
| payment_term_label | string | Payment terms text shown on the document. |
| payment_term_duration | integer | Days until payment is due (the organization's or contact's default when omitted). |
| total_discount_percentage | number | Total discount in percent. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"voucher_date",
"expiration_date",
"line_items"
],
"properties": {
"zip": {
"type": "string",
"maxLength": 20,
"description": "One-time address ZIP code."
},
"city": {
"type": "string",
"maxLength": 255,
"description": "One-time address city."
},
"name": {
"type": "string",
"maxLength": 255,
"minLength": 1,
"description": "One-time recipient name (no contact is created). Required without contact_id."
},
"title": {
"type": "string",
"maxLength": 25,
"description": "Document title (max 25 characters; default from Lexware)."
},
"remark": {
"type": "string",
"maxLength": 2000,
"description": "Closing remark (max 2000)."
},
"street": {
"type": "string",
"maxLength": 255,
"description": "One-time address street and number."
},
"language": {
"enum": [
"de",
"en"
],
"type": "string",
"description": "Document language (default de; en needs the INVOICING_PRO feature)."
},
"tax_type": {
"enum": [
"net",
"gross",
"vatfree",
"intraCommunitySupply",
"constructionService13b",
"externalService13b",
"thirdPartyCountryService",
"thirdPartyCountryDelivery"
],
"type": "string",
"description": "Tax type (default net): net, gross, vatfree, intraCommunitySupply, constructionService13b, externalService13b, thirdPartyCountryService, thirdPartyCountryDelivery."
},
"contact_id": {
"type": "string",
"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
"description": "An existing Lexware contact with the customer role (from lexware_list_contacts). Give this OR name + country_code."
},
"line_items": {
"type": "array",
"items": {
"type": "object",
"required": [
"type",
"name"
],
"properties": {
"name": {
"type": "string",
"maxLength": 255,
"minLength": 1,
"description": "Item name (max 255 characters)."
},
"type": {
"enum": [
"custom",
"service",
"material",
"text"
],
"type": "string",
"description": "custom = a free item without an article; service/material = an existing article (article_id required); text = a text-only line."
},
"quantity": {
"type": "number",
"maximum": 1000000000,
"description": "Quantity (up to 4 decimals); required unless type is text.",
"exclusiveMinimum": 0
},
"tax_rate": {
"type": "number",
"maximum": 100,
"minimum": 0,
"description": "VAT rate in percent, e.g. 19, 7 or 0 (0 for every vat-free tax_type). Required unless type is text."
},
"unit_name": {
"type": "string",
"maxLength": 255,
"minLength": 1,
"description": "Unit, e.g. Stück, Stunde, piece, hour; required unless type is text."
},
"article_id": {
"type": "string",
"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
"description": "The article id (from lexware_list_articles); required for type service and material, not allowed otherwise."
},
"unit_price": {
"type": "number",
"maximum": 1000000000,
"minimum": -1000000000,
"description": "Unit price in EUR (up to 4 decimals): NET when tax_type is not gross, GROSS when tax_type is gross. Required unless type is text."
},
"description": {
"type": "string",
"maxLength": 2000,
"description": "Item description (max 2000; **bold**, __italic__ and '- ' lists are supported)."
},
"discount_percentage": {
"type": "number",
"maximum": 100,
"minimum": 0,
"description": "Line discount in percent (up to 2 decimals)."
}
}
},
"maxItems": 300,
"minItems": 1,
"description": "1-300 line items."
},
"supplement": {
"type": "string",
"maxLength": 255,
"description": "One-time address supplement."
},
"country_code": {
"type": "string",
"pattern": "^[A-Z]{2}(_[A-Z0-9]{1,3})?$",
"description": "ISO 3166 alpha-2 country code, e.g. DE, AT, CH (lexware_list_countries lists the supported codes)."
},
"introduction": {
"type": "string",
"maxLength": 2000,
"description": "Introduction text (max 2000)."
},
"voucher_date": {
"type": "string",
"description": "Quotation date (yyyy-mm-dd)."
},
"tax_type_note": {
"type": "string",
"maxLength": 1000,
"description": "Note for a vat-free tax type (Lexware uses the organization's default when omitted)."
},
"expiration_date": {
"type": "string",
"description": "Valid until (yyyy-mm-dd), on or after voucher_date."
},
"payment_term_label": {
"type": "string",
"maxLength": 255,
"description": "Payment terms text shown on the document."
},
"payment_term_duration": {
"type": "integer",
"maximum": 3650,
"minimum": 0,
"description": "Days until payment is due (the organization's or contact's default when omitted)."
},
"total_discount_percentage": {
"type": "number",
"maximum": 100,
"minimum": 0,
"description": "Total discount in percent."
}
}
}| voucher_types | array | Voucher types to include (default: all). |
| voucher_number | string | Exact voucher number, e.g. RE1019. |
| created_date_to | string | Created to (yyyy-mm-dd, inclusive). |
| updated_date_to | string | Last changed to (yyyy-mm-dd, inclusive). |
| voucher_date_to | string | Voucher date to (yyyy-mm-dd, inclusive). |
| voucher_statuses | array | Statuses to include (default: all). overdue cannot be combined with other statuses; accepted/rejected apply to quotations, unchecked to bookkeeping vouchers. |
| created_date_from | string | Created from (yyyy-mm-dd, inclusive). |
| updated_date_from | string | Last changed from (yyyy-mm-dd, inclusive). |
| voucher_date_from | string | Voucher date from (yyyy-mm-dd, inclusive). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"page": {
"type": "integer",
"maximum": 9999,
"minimum": 0,
"description": "Page index, 0-based (default 0). Use next_page from the previous reply."
},
"size": {
"type": "integer",
"maximum": 250,
"minimum": 1,
"description": "Results per page, 1-250 (default 25)."
},
"sort": {
"enum": [
"voucherDate",
"voucherNumber",
"createdDate",
"updatedDate"
],
"type": "string",
"description": "Sort field (default voucherDate)."
},
"archived": {
"type": "boolean",
"description": "true = only archived, false = only not archived."
},
"direction": {
"enum": [
"ASC",
"DESC"
],
"type": "string",
"description": "Sort direction (default DESC)."
},
"contact_id": {
"type": "string",
"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
"description": "Only vouchers of this contact."
},
"voucher_types": {
"type": "array",
"items": {
"enum": [
"salesinvoice",
"salescreditnote",
"purchaseinvoice",
"purchasecreditnote",
"invoice",
"downpaymentinvoice",
"creditnote",
"orderconfirmation",
"quotation",
"deliverynote"
],
"type": "string"
},
"maxItems": 10,
"minItems": 1,
"description": "Voucher types to include (default: all)."
},
"voucher_number": {
"type": "string",
"maxLength": 255,
"minLength": 1,
"description": "Exact voucher number, e.g. RE1019."
},
"created_date_to": {
"type": "string",
"description": "Created to (yyyy-mm-dd, inclusive)."
},
"updated_date_to": {
"type": "string",
"description": "Last changed to (yyyy-mm-dd, inclusive)."
},
"voucher_date_to": {
"type": "string",
"description": "Voucher date to (yyyy-mm-dd, inclusive)."
},
"voucher_statuses": {
"type": "array",
"items": {
"enum": [
"draft",
"open",
"overdue",
"paid",
"paidoff",
"voided",
"transferred",
"sepadebit",
"accepted",
"rejected",
"unchecked"
],
"type": "string"
},
"maxItems": 11,
"minItems": 1,
"description": "Statuses to include (default: all). overdue cannot be combined with other statuses; accepted/rejected apply to quotations, unchecked to bookkeeping vouchers."
},
"created_date_from": {
"type": "string",
"description": "Created from (yyyy-mm-dd, inclusive)."
},
"updated_date_from": {
"type": "string",
"description": "Last changed from (yyyy-mm-dd, inclusive)."
},
"voucher_date_from": {
"type": "string",
"description": "Voucher date from (yyyy-mm-dd, inclusive)."
}
}
}