sevDesk – Gotchas
German freelancer/SMB cloud accounting and invoicing platform.
11 gotchas across 4 resources
These are connector-specific behaviors and limitations to be aware of when integrating.
Attachments5 gotchas
attachmentsAllOnly invoice, bill and credit-note are supported as a reference_type.
Listing with any other value returns a vendor error rather than an empty list.
Only files a caller has uploaded through this endpoint are returned — sevDesk's own auto-generated invoice/credit note PDFs are not included, since they are linked internally in a way this endpoint does not surface.
attachmentsUploadOnly png, jpeg, jpg, pdf, xls, xlsx, doc, docx and xml files are accepted — anything
else (including plain text) is rejected. Only invoice, bill and credit-note are
supported as a reference_type; uploading against any other value returns a vendor
error rather than a clean rejection.
attachmentsOneThe id must belong to the record named by reference_type/reference_id. An id from a
different record — or from a document not linked to any invoice, bill or credit note —
returns 404 rather than another record's file, matching the same ownership scoping
attachmentsDelete and attachmentsDownload enforce on this connector.
attachmentsDeleteThe id must belong to the record named by reference_type/reference_id. An id from a
different record returns 404 rather than deleting it — attachments are scoped to the
record they are attached to.
attachmentsDownloadThe id must belong to the record named by reference_type/reference_id. An id from a
different record returns 404 rather than another record's file content — the same
ownership scoping attachmentsOne and attachmentsDelete enforce on this connector.
Bills2 gotchas
billsAddEvery bill line is booked to a generic "Miscellaneous" expense account — there is no field on this endpoint to choose a specific expense category. Re-categorize individual lines in the sevDesk UI if a specific account is needed for bookkeeping.
Line items have no quantity/unit-price breakdown — sevDesk records each bill line as a
single lump-sum amount plus tax rate, so quantity is always 1 and unit_price equals
total_amount.
New bills are always created as draft, regardless of the status you send — a
non-draft bill needs additional fields this connector does not currently set. Transition
it to a later status from within sevDesk after creation.
Bills are created under a fixed VAT rule ("Regelbesteuerung") — there is no field on this
endpoint to change it. Unlike invoices and credit notes, this rule does not restrict
line_items[].tax_rate.rate to a fixed set of values — any rate is accepted unchanged.
billsUpdateline_items cannot be changed on update — sevDesk's update endpoint only accepts header
fields (description, currency, supplier, due date, paid date). A request that includes
line item changes returns 200 but the line items are unaffected; delete and recreate the
bill if the amounts need to change.
Credit Notes3 gotchas
creditNotesAddsevDesk requires every credit note to have an internal contact person (the sevDesk user acting as biller) assigned — there is no field on this endpoint to choose one. This connector automatically assigns the account's active administrator, falling back to any other active user, and — only if the account has no active user at all — the first user returned by sevDesk regardless of status. On a multi-user account, credit notes created through this API are always attributed to that auto-selected user rather than a specific person you choose.
Credit notes are created with a fixed internal booking category and VAT rule — there is
no field on this endpoint to change either. Only 0%, 7% and 19% tax rates are accepted
under this rule; a line_items[].tax_rate.rate outside that set is rounded to the
nearest of the three rather than rejected. type is always accounts_receivable_credit;
sevDesk has no accounts-payable credit note concept on this endpoint.
New credit notes are always created as draft, regardless of the status you send —
sevDesk rejects creating a credit note in any other status. Transition it to a later
status from within sevDesk after creation.
line_items[].unit_of_measure only recognizes a fixed set of German abbreviations
(Stk, kg, m, Std, ...). Any other value — including a plain English word like
hour — is silently mapped to Stk (piece) instead of being rejected.
billing_address.country_code defaults to Germany when omitted or when it doesn't match
a recognized country. This affects the tax rule sevDesk applies (this endpoint uses a
cross-border OSS VAT rule), so an omitted or unrecognized country code is treated as a
domestic (Germany) transaction rather than being rejected.
creditNotesOnebalance and remaining_credit report the full gross amount for any credit note that
is not yet fully paid, including one that is partially applied — sevDesk does not expose
the applied/remaining amount on a credit note, only its total. A fully paid credit note
correctly reports both fields as 0.
creditNotesUpdateOnly reference and currency can be changed after creation. note is accepted by
this endpoint but not persisted — sending it has no effect and reading the credit note
back afterward will not reflect it. status cannot be changed through this endpoint at
all; transition a credit note's status from within sevDesk directly.
Invoices1 gotcha
invoicesAddsevDesk requires every invoice to have an internal contact person (the sevDesk user acting as biller) assigned — there is no field on this endpoint to choose one. This connector automatically assigns the account's active administrator, falling back to any other active user, and — only if the account has no active user at all — the first user returned by sevDesk regardless of status. On a multi-user account, invoices created through this API are always attributed to that auto-selected user rather than a specific person you choose.
There is no header-level tax rate field — set line_items[].tax_rate.rate on each line;
the invoice's overall tax/subtotal/total are computed from the line items.
Invoices are created under a fixed VAT rule ("Regelbesteuerung") — there is no field on
this endpoint to change it. Only 0%, 7% and 19% tax rates are accepted under this rule; a
line_items[].tax_rate.rate outside that set is rounded to the nearest of the three
rather than rejected.
New invoices are always created as draft, regardless of the status you send — sevDesk
rejects creating an invoice in any other status. Transition it to a later status from
within sevDesk after creation.
Once created, an invoice's line items are fixed — update only changes header fields (customer memo, reference). There is no void action either: cancelling an invoice creates a separate reversal document rather than removing or editing the original.
type only maps to two distinct sevDesk document types, not the full unified enum:
standard and credit/service/product/supplier (which have no sevDesk equivalent)
all create sevDesk's normal invoice type; other creates a second, different sevDesk
type. sevDesk also has down-payment, partial and final invoice variants, but the unified
API has no value that selects them, and on read they are indistinguishable from a normal
invoice — type always reports back standard or other, never a more specific variant.
line_items[].unit_of_measure only recognizes a fixed set of German abbreviations
(Stk, kg, m, Std, ...). Any other value — including a plain English word like
hour — is silently mapped to Stk (piece) instead of being rejected.