sevDesk – Gotchas

Service ID: sevdesk

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

allattachmentsAll

Only 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.

uploadattachmentsUpload

Only 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.

oneattachmentsOne

The 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.

deleteattachmentsDelete

The 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.

downloadattachmentsDownload

The 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

addbillsAdd

Every 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.

updatebillsUpdate

line_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

addcreditNotesAdd

sevDesk 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.

onecreditNotesOne

balance 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.

updatecreditNotesUpdate

Only 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

addinvoicesAdd

sevDesk 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.