Lexware Office – Gotchas
German SMB cloud accounting and invoicing platform by Haufe Group, formerly known as lexoffice.
17 gotchas across 8 resources
These are connector-specific behaviors and limitations to be aware of when integrating.
Attachments2 gotchas
attachmentsAllOnly bill is supported as a reference_type — the equivalent endpoint on invoices and
credit notes exists but always errors. name, mime_type, size, description and the
timestamp fields are always null: there is no metadata endpoint for a file, only a raw
download, and this connector does not download file bytes just to populate a list response.
attachmentsOne (get single attachment) is unsupported — Lexware Office exposes no
per-attachment read endpoint, only a bill's own list of file ids. Use attachmentsAll to
list a bill's attachments and select the file you need by id.
attachmentsUploadOnly bill is supported as a reference_type; uploading against invoice or
credit-note errors. The upload response returns only the file's id — no name,
size or mime_type is available anywhere for a file beyond its raw downloaded bytes.
Bill Credit Notes2 gotchas
billCreditNotesAllThis list always excludes overdue bill credit notes — the vendor's status filter rejects any
request that combines an overdue filter with other statuses. This connector does not implement
any filters on this resource (including filter[status]), so there is no way to request
overdue bill credit notes on their own. An overdue bill credit note is still reachable via
billCreditNotesOne by id. List entries do not include line items; use billCreditNotesOne
to retrieve line_items.
A few fields read back differently between the list and get-one because the vendor's per-record
endpoint returns less than its list: get-one populates supplier.id only (no display_name),
and its balance is derived (0 once the credit is paid, otherwise the full total_amount)
rather than the true unapplied amount — so for a partially-paid credit note the list balance
(the vendor's real open amount) can differ from the get-one balance.
billCreditNotesAddBill credit notes can only be created in a finalized state — status: "draft" is rejected
with a 400 explaining the limitation, rather than silently creating a finalized record.
Lexware Office's own create endpoint for this document type accepts only its finalized status
value, with no draft option. status is fixed at creation and cannot be changed by a later
update — the vendor rejects a status transition on update, so a status sent on update is
ignored. There is no delete endpoint for this document type, so billCreditNotesDelete is
not supported.
Amounts are stored in EUR only; a non-EUR currency is not persisted and reads back as EUR.
Line items are stored at summary level — only total_amount, tax_amount, tax_rate and
ledger_account are kept; description, quantity, unit_price and discount fields sent on
a line are accepted but dropped.
Bills3 gotchas
billsAllThis list always excludes overdue bills — the vendor's status filter rejects any request
that combines an overdue filter with other statuses. This connector does not implement
any filters on this resource (including filter[status]), so there is no way to request
overdue bills on their own. An overdue bill is still reachable via bills.one by id.
sub_total and total_tax are not returned on this list — the vendor's list endpoint
is a lighter summary view than the get-by-id response. Fetch the bill by id for those
fields.
billsAddBills can only be created in a finalized state — status: "draft" is rejected with a
400 explaining the limitation, rather than silently creating a finalized bill. Lexware
Office's own create endpoint for this document type accepts only its finalized status
value, with no draft option.
billsOnecurrency is always "EUR" on this get-by-id operation, regardless of the bill's actual
currency — this endpoint does not return a currency field. currency is accurate on
bills.list.
Credit Notes4 gotchas
creditNotesAllThis list always excludes overdue credit notes — the vendor's status filter rejects any
request that combines an overdue filter with other statuses, and there is no unified
filter[status] on this resource to request overdue credit notes on their own. An
overdue credit note is still reachable via credit-notes.one by id.
sub_total and total_tax are not returned on this list — the vendor's list endpoint
is a lighter summary view than the get-by-id response. Fetch the credit note by id for
those fields.
creditNotesAddline_items[].discount_percentage is silently discarded on credit notes — the request
returns 201, but the line is stored at full price with no discount applied. Apply the
discount to unit_price directly instead.
creditNotesOnebalance reports the full gross amount for any credit note that is not yet fully paid,
including one that is partially applied — the vendor's status field only distinguishes
finalized from paid/paidoff, with no distinct partially-paid state and no applied/
remaining amount field. A fully paid credit note correctly reports balance as 0.
creditNotesUpdateCredit notes cannot be updated through this connector once created — there is no update operation for this resource. Credit notes can only be created and read.
Customers1 gotcha
customersAllThe vendor emits a single, undifferentiated contact-change webhook event for both
customers and suppliers, with no role information in the notification payload. Every
such event is delivered as customer.updated, including a change to a vendor-only
contact (no customer role at all) — there is currently no way to distinguish or
subscribe to supplier-only contact changes separately.
Invoices3 gotchas
invoicesAllstatus can disagree between this list and a single-record read (GET /accounting/invoices/{id}) for the same invoice at the same point in time — for example
one endpoint reporting unpaid while the other reports authorised for an invoice that
is open but not yet overdue. Prefer the single-record read as the source of truth for
status when reconciling.
This list always excludes overdue invoices — the vendor's status filter rejects any
request that combines an overdue filter with other statuses, and there is no unified
filter[status] on this resource to request overdue invoices on their own. An overdue
invoice is still reachable via invoices.one by id.
due_date, sub_total, total_tax and billing_address are not returned on this list
— the vendor's list endpoint is a lighter summary view than the get-by-id response. Fetch
the invoice by id for those fields.
invoicesOnebalance reports the full gross amount for any invoice that is not yet fully paid,
including one that is partially paid — the vendor's status field only distinguishes
finalized from paid/paidoff, with no distinct partially-paid state and no applied/
remaining amount field. A fully paid invoice correctly reports balance as 0.
invoicesUpdateInvoices cannot be updated through this connector once created — there is no update operation for this resource. To correct a mistake on an issued invoice, create a credit note against it and issue a new, corrected invoice instead.
Ledger Accounts1 gotcha
ledgerAccountsAllLedger accounts map to Lexware Office's posting categories, a small, fixed, vendor-managed reference list rather than a full chart of accounts. The list is read-only: individual accounts cannot be fetched by id, and none can be created, updated or deleted through this connector.
Suppliers1 gotcha
suppliersAllThe vendor emits a single, undifferentiated contact-change webhook event for both
customers and suppliers, with no role information in the notification payload. Every
such event is delivered as customer.updated, including a change to a vendor-only
contact (no customer role at all) — there is currently no way to distinguish or
subscribe to supplier-only contact changes separately.