Look up contacts, invoices, vouchers, orders, bank transactions and parts, and create drafts.
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.
Attach an email address, phone/mobile number or website to a contact. key_id labels it (2 Arbeit/work is a good default; see sevdesk_list_communication_way_keys). sevdesk: POST /CommunicationWay.
What kind of value this is.
The email address, number or URL.
The contact's numeric id.
Make this the contact's main communication way of its type.
Communication way key id (1 Privat, 2 Arbeit, 3 Fax, 4 Mobil, 8 Rechnungsadresse). Default 2.
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.
Attach an email address, phone/mobile number or website to a contact. key_id labels it (2 Arbeit/work is a good default; see sevdesk_list_communication_way_keys). sevdesk: POST /CommunicationWay.
| Argument | Type | Description |
|---|---|---|
| main | boolean | Make this the contact's main communication way of its type. |
| type* | string | What kind of value this is. |
| value* | string | The email address, number or URL. |
| key_id | integer | Communication way key id (1 Privat, 2 Arbeit, 3 Fax, 4 Mobil, 8 Rechnungsadresse). Default 2. |
| contact_id* | integer | The contact's numeric id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"contact_id",
"type",
"value"
],
"properties": {
"main": {
"type": "boolean",
"description": "Make this the contact's main communication way of its type."
},
"type": {
"enum": [
"EMAIL",
"PHONE",
"MOBILE",
"WEB"
],
"type": "string",
"description": "What kind of value this is."
},
"value": {
"type": "string",
"minLength": 1,
"description": "The email address, number or URL."
},
"key_id": {
"type": "integer",
"default": 2,
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Communication way key id (1 Privat, 2 Arbeit, 3 Fax, 4 Mobil, 8 Rechnungsadresse). Default 2."
},
"contact_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "The contact's numeric id.",
"exclusiveMinimum": 0
}
}
}Create a contact. Give `name` for an organisation, or `surename`/`familyname` for a person. Addresses and emails are separate (use sevdesk_add_communication_way). sevdesk: POST /Contact.
| Argument | Type | Description |
|---|---|---|
| name | string | Organisation name. Setting it makes the contact an ORGANISATION — leave empty for a person. |
| status | any | 100 Lead, 500 Pending, 1000 Active. |
| surename | string | First name of a PERSON (sevdesk's field is really spelled 'surename'). |
| parent_id | integer | For a person: the id of the organisation they belong to. |
| familyname | string | Last name of a PERSON. |
| tax_number | string | Tax number (Steuernummer). |
| vat_number | string | VAT id (USt-IdNr.). |
| category_id* | integer | Required category: 2 Supplier, 3 Customer, 4 Partner, 28 Prospect customer. |
| description |
Create a normal invoice (type RE) with its line items, ALWAYS saved as a DRAFT (status 100): it is not sent, not booked and stays editable in sevdesk. contact_person_id is the sevdesk USER responsible for it — copy contactPerson.id from any existing invoice (sevdesk_get_invoice). Bookkeeping 2.0 accounts use tax_rule_id (1 = taxable sales in Germany, the usual choice); 1.0 accounts pass tax_type instead (check sevdesk_get_bookkeeping_system_version). sevdesk: POST /Invoice/Factory/saveInvoice.
| Argument | Type | Description |
|---|---|---|
| header | string | Invoice header/title line. |
| address | string | Complete recipient address with line breaks. Omit to leave it empty. |
| currency | string | ISO-4217 currency code. Default EUR. |
| show_net | boolean | If true (default), position prices are net. |
| tax_text | string | VAT text printed on the invoice. Default 'Umsatzsteuer 19%'. |
| tax_type | string | Bookkeeping 1.0 only — leave unset on 2.0 accounts. |
| foot_text | string | Text below the line items (some HTML allowed). |
| head_text |
Return whether the account runs sevdesk bookkeeping 1.0 or 2.0 (2.0 uses taxRule instead of taxType on invoices). Also a cheap way to confirm the API token works. sevdesk: GET /Tools/bookkeepingSystemVersion.
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}Balance of one check account as the sum of every transaction sevdesk knows up to and including the given date. May differ from the real bank balance if older transactions were never imported. sevdesk: GET /CheckAccount/{checkAccountId}/getBalanceAtDate.
| Argument | Type | Description |
|---|---|---|
| date* | string | Consider transactions up to this date (YYYY-MM-DD, inclusive to 23:59:59). |
| check_account_id* | integer | The check account's numeric id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"check_account_id",
"date"
],
"properties": {
"date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Consider transactions up to this date (YYYY-MM-DD, inclusive to 23:59:59)."
},
"check_account_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "The check account's numeric id.",
"exclusiveMinimum": 0
}
}
}Fetch a single contact by id. sevdesk: GET /Contact/{contactId}.
| Argument | Type | Description |
|---|---|---|
| embed | string | Comma-separated nested resources to expand inline, e.g. contact,category. |
| contact_id* | integer | The contact's numeric id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"contact_id"
],
"properties": {
"embed": {
"type": "string",
"description": "Comma-separated nested resources to expand inline, e.g. contact,category."
},
"contact_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "The contact's numeric id.",
"exclusiveMinimum": 0
}
}
}Fetch a single invoice by id — totals, status, dates, contact and contact person. sevdesk: GET /Invoice/{invoiceId}.
| Argument | Type | Description |
|---|---|---|
| embed | string | Comma-separated nested resources to expand inline, e.g. contact,category. |
| invoice_id* | integer | The invoice's numeric id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"invoice_id"
],
"properties": {
"embed": {
"type": "string",
"description": "Comma-separated nested resources to expand inline, e.g. contact,category."
},
"invoice_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "The invoice's numeric id.",
"exclusiveMinimum": 0
}
}
}List the positions (line items) of one invoice: name, quantity, price, tax rate, sums. sevdesk: GET /Invoice/{invoiceId}/getPositions.
| Argument | Type | Description |
|---|---|---|
| embed | string | Comma-separated nested resources to expand inline, e.g. contact,category. |
| limit | integer | Max entries to return, 1-1000 (sevdesk suggests 10-100). |
| offset | integer | Number of entries to skip, for paging. |
| invoice_id* | integer | The invoice's numeric id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"invoice_id"
],
"properties": {
"embed": {
"type": "string",
"description": "Comma-separated nested resources to expand inline, e.g. contact,category."
},
"limit": {
"type": "integer",
"maximum": 1000,
"minimum": 1,
"description": "Max entries to return, 1-1000 (sevdesk suggests 10-100)."
},
"offset": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Number of entries to skip, for paging."
},
"invoice_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "The invoice's numeric id.",
"exclusiveMinimum": 0
}
}
}Fetch a single voucher (receipt) by id. sevdesk: GET /Voucher/{voucherId}.
| Argument | Type | Description |
|---|---|---|
| embed | string | Comma-separated nested resources to expand inline, e.g. contact,category. |
| voucher_id* | integer | The voucher's numeric id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"voucher_id"
],
"properties": {
"embed": {
"type": "string",
"description": "Comma-separated nested resources to expand inline, e.g. contact,category."
},
"voucher_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "The voucher's numeric id.",
"exclusiveMinimum": 0
}
}
}List check accounts — the bank accounts, cash registers and clearing accounts sevdesk tracks payments on, with IBAN, type and sync status. sevdesk: GET /CheckAccount.
| Argument | Type | Description |
|---|---|---|
| embed | string | Comma-separated nested resources to expand inline, e.g. contact,category. |
| limit | integer | Max entries to return, 1-1000 (sevdesk suggests 10-100). |
| offset | integer | Number of entries to skip, for paging. |
| count_all | boolean | If true, the response also carries `total`, the full match count. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"embed": {
"type": "string",
"description": "Comma-separated nested resources to expand inline, e.g. contact,category."
},
"limit": {
"type": "integer",
"maximum": 1000,
"minimum": 1,
"description": "Max entries to return, 1-1000 (sevdesk suggests 10-100)."
},
"offset": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Number of entries to skip, for paging."
},
"count_all": {
"type": "boolean",
"description": "If true, the response also carries `total`, the full match count."
}
}
}List the labels a communication way can carry (1 Privat, 2 Arbeit, 3 Fax, 4 Mobil, 6 Autobox, 7 Newsletter, 8 Rechnungsadresse). Needed for sevdesk_add_communication_way. sevdesk: GET /CommunicationWayKey.
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}List communication ways (email addresses, phone and mobile numbers, websites), optionally for one contact. sevdesk: GET /CommunicationWay.
| Argument | Type | Description |
|---|---|---|
| type | string | Only this type. |
| embed | string | Comma-separated nested resources to expand inline, e.g. contact,category. |
| limit | integer | Max entries to return, 1-1000 (sevdesk suggests 10-100). |
| offset | integer | Number of entries to skip, for paging. |
| count_all | boolean | If true, the response also carries `total`, the full match count. |
| main_only | boolean | If true, only the main communication way(s). |
| contact_id | integer | Only this contact's communication ways. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"type": {
"enum": [
"EMAIL",
"PHONE",
"MOBILE",
"WEB"
],
"type": "string",
"description": "Only this type."
},
"embed": {
"type": "string",
"description": "Comma-separated nested resources to expand inline, e.g. contact,category."
},
"limit": {
"type": "integer",
"maximum": 1000,
"minimum": 1,
"description": "Max entries to return, 1-1000 (sevdesk suggests 10-100)."
},
"offset": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Number of entries to skip, for paging."
},
"count_all": {
"type": "boolean",
"description": "If true, the response also carries `total`, the full match count."
},
"main_only": {
"type": "boolean",
"description": "If true, only the main communication way(s)."
},
"contact_id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Only this contact's communication ways."
}
}
}List contacts (customers, suppliers, partners, prospects). By default sevdesk returns only organisations; set include_persons to also get individual persons. sevdesk: GET /Contact.
| Argument | Type | Description |
|---|---|---|
| zip | string | Only contacts with this ZIP code. |
| city | string | Only contacts in this city. |
| name | string | Only contacts whose name, first name or last name matches. |
| embed | string | Comma-separated nested resources to expand inline, e.g. contact,category. |
| limit | integer | Max entries to return, 1-1000 (sevdesk suggests 10-100). |
| offset | integer | Number of entries to skip, for paging. |
| count_all | boolean | If true, the response also carries `total`, the full match count. |
| parent_id | integer | Only persons belonging to this parent organisation's id. |
| category_id | integer |
List credit notes (Gutschriften), filterable by status, number, date range and contact. Status: 100 draft, 200 open/delivered, 750 partially paid, 1000 paid. sevdesk: GET /CreditNote.
| Argument | Type | Description |
|---|---|---|
| embed | string | Comma-separated nested resources to expand inline, e.g. contact,category. |
| limit | integer | Max entries to return, 1-1000 (sevdesk suggests 10-100). |
| offset | integer | Number of entries to skip, for paging. |
| status | string | Only credit notes with this status code. |
| end_date | integer | Only credit notes dated on or before this, as a Unix timestamp in seconds. |
| count_all | boolean | If true, the response also carries `total`, the full match count. |
| contact_id | integer | Only credit notes for this contact id. |
| start_date | integer | Only credit notes dated on or after this, as a Unix timestamp in seconds. |
List invoices, filterable by status, number, date range and contact. Status: 50 deactivated recurring, 100 draft, 200 open/due, 750 partially paid, 1000 paid. sevdesk: GET /Invoice.
| Argument | Type | Description |
|---|---|---|
| embed | string | Comma-separated nested resources to expand inline, e.g. contact,category. |
| limit | integer | Max entries to return, 1-1000 (sevdesk suggests 10-100). |
| offset | integer | Number of entries to skip, for paging. |
| status | string | Only invoices with this status code. |
| end_date | integer | Only invoices dated on or before this, as a Unix timestamp in seconds. |
| count_all | boolean | If true, the response also carries `total`, the full match count. |
| contact_id | integer | Only invoices for this contact id. |
| delinquent | boolean | If true, only overdue (delinquent) invoices. |
| start_date | integer |
List orders — quotes (Angebote), order confirmations and delivery notes — filterable by status, number, date range and contact. Status: 100 draft, 200 delivered, 300 rejected, 500 accepted, 750 partially calculated, 1000 calculated. sevdesk: GET /Order.
| Argument | Type | Description |
|---|---|---|
| embed | string | Comma-separated nested resources to expand inline, e.g. contact,category. |
| limit | integer | Max entries to return, 1-1000 (sevdesk suggests 10-100). |
| offset | integer | Number of entries to skip, for paging. |
| status | string | Only orders with this status code. |
| end_date | integer | Only orders dated on or before this, as a Unix timestamp in seconds. |
| count_all | boolean | If true, the response also carries `total`, the full match count. |
| contact_id | integer | Only orders for this contact id. |
| start_date | integer | Only orders dated on or after this, as a Unix timestamp in seconds. |
List parts — the products and services in the sevdesk inventory, with prices, tax rate and stock. sevdesk: GET /Part.
| Argument | Type | Description |
|---|---|---|
| name | string | Only parts with this name. |
| embed | string | Comma-separated nested resources to expand inline, e.g. contact,category. |
| limit | integer | Max entries to return, 1-1000 (sevdesk suggests 10-100). |
| offset | integer | Number of entries to skip, for paging. |
| count_all | boolean | If true, the response also carries `total`, the full match count. |
| part_number | string | Only the part with this part number. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"name": {
"type": "string",
"description": "Only parts with this name."
},
"embed": {
"type": "string",
"description": "Comma-separated nested resources to expand inline, e.g. contact,category."
},
"limit": {
"type": "integer",
"maximum": 1000,
"minimum": 1,
"description": "Max entries to return, 1-1000 (sevdesk suggests 10-100)."
},
"offset": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Number of entries to skip, for paging."
},
"count_all": {
"type": "boolean",
"description": "If true, the response also carries `total`, the full match count."
},
"part_number": {
"type": "string",
"description": "Only the part with this part number."
}
}
}List check-account transactions (bank payments in and out), filterable by account, booking state, date range, payee/payer and purpose. sevdesk: GET /CheckAccountTransaction.
| Argument | Type | Description |
|---|---|---|
| embed | string | Comma-separated nested resources to expand inline, e.g. contact,category. |
| limit | integer | Max entries to return, 1-1000 (sevdesk suggests 10-100). |
| offset | integer | Number of entries to skip, for paging. |
| end_date | string | Only transactions up to this date (ISO 8601). |
| count_all | boolean | If true, the response also carries `total`, the full match count. |
| is_booked | boolean | If true, only transactions already booked against a document. |
| only_debit | boolean | If true, only outgoing (debit) transactions. |
| start_date | string | Only transactions from this date on (ISO 8601, e.g. 2026-01-01). |
| only_credit |
List vouchers — receipts and incoming/outgoing bills. Status: 50 draft, 100 unpaid/due, 1000 paid. credit_debit C = credit (revenue), D = debit (expense). sevdesk: GET /Voucher.
| Argument | Type | Description |
|---|---|---|
| embed | string | Comma-separated nested resources to expand inline, e.g. contact,category. |
| limit | integer | Max entries to return, 1-1000 (sevdesk suggests 10-100). |
| offset | integer | Number of entries to skip, for paging. |
| status | string | Only vouchers with this status code. |
| end_date | integer | Only vouchers dated on or before this, as a Unix timestamp in seconds. |
| count_all | boolean | If true, the response also carries `total`, the full match count. |
| contact_id | integer | Only vouchers for this contact id. |
| start_date | integer | Only vouchers dated on or after this, as a Unix timestamp in seconds. |
| credit_debit |
Update fields on an existing contact; only the fields you pass are sent. sevdesk: PUT /Contact/{contactId}.
| Argument | Type | Description |
|---|---|---|
| name | string | Organisation name. Setting it makes the contact an ORGANISATION — leave empty for a person. |
| status | any | 100 Lead, 500 Pending, 1000 Active. |
| surename | string | First name of a PERSON (sevdesk's field is really spelled 'surename'). |
| parent_id | integer | For a person: the id of the organisation they belong to. |
| contact_id* | integer | The contact's numeric id. |
| familyname | string | Last name of a PERSON. |
| tax_number | string | Tax number (Steuernummer). |
| vat_number | string | VAT id (USt-IdNr.). |
| category_id | integer | Move to category: 2 Supplier, 3 Customer, 4 Partner, 28 Prospect. |
| string |
| Free-text description. |
| customer_number | string | Customer number. Omit to let sevdesk leave it unset. |
| default_time_to_pay | integer | Default payment term in days for this contact's invoices. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"category_id"
],
"properties": {
"name": {
"type": "string",
"description": "Organisation name. Setting it makes the contact an ORGANISATION — leave empty for a person."
},
"status": {
"anyOf": [
{
"type": "number",
"const": 100
},
{
"type": "number",
"const": 500
},
{
"type": "number",
"const": 1000
}
],
"description": "100 Lead, 500 Pending, 1000 Active."
},
"surename": {
"type": "string",
"description": "First name of a PERSON (sevdesk's field is really spelled 'surename')."
},
"parent_id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "For a person: the id of the organisation they belong to."
},
"familyname": {
"type": "string",
"description": "Last name of a PERSON."
},
"tax_number": {
"type": "string",
"description": "Tax number (Steuernummer)."
},
"vat_number": {
"type": "string",
"description": "VAT id (USt-IdNr.)."
},
"category_id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Required category: 2 Supplier, 3 Customer, 4 Partner, 28 Prospect customer."
},
"description": {
"type": "string",
"description": "Free-text description."
},
"customer_number": {
"type": "string",
"description": "Customer number. Omit to let sevdesk leave it unset."
},
"default_time_to_pay": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Default payment term in days for this contact's invoices."
}
}
}| string |
| Text above the line items (some HTML allowed). |
| positions* | array | Line items (at least one). |
| contact_id* | integer | The contact (customer)'s numeric id. |
| tax_rule_id | string | Bookkeeping 2.0 VAT rule id. 1 taxable sales (Umsatzsteuerpflichtige Umsätze), 2 exports, 3 intra-EU supplies, 4 tax-free §4 UStG, 5 reverse charge §13b, 11 small business §19 (Kleinunternehmer), 17 not taxable in Germany, 18-20 One Stop Shop, 21 reverse charge §18b. Default 1. |
| time_to_pay | integer | Payment term in days. |
| invoice_date* | string | Invoice date as dd.mm.yyyy. |
| delivery_date | string | Delivery / service date as dd.mm.yyyy (must not be after invoice_date for a normal invoice). |
| small_settlement | boolean | True if the account uses the small-business scheme (no VAT). |
| contact_person_id* | integer | Id of the sevdesk user (SevUser) acting as contact person — e.g. contactPerson.id of an existing invoice. |
| address_country_id | integer | sevdesk StaticCountry id of the billing address (1 = Germany). Default 1. |
| customer_internal_note | string | Reference / order number field. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"contact_id",
"contact_person_id",
"invoice_date",
"positions"
],
"properties": {
"header": {
"type": "string",
"description": "Invoice header/title line."
},
"address": {
"type": "string",
"description": "Complete recipient address with line breaks. Omit to leave it empty."
},
"currency": {
"type": "string",
"default": "EUR",
"maxLength": 3,
"minLength": 3,
"description": "ISO-4217 currency code. Default EUR."
},
"show_net": {
"type": "boolean",
"default": true,
"description": "If true (default), position prices are net."
},
"tax_text": {
"type": "string",
"default": "Umsatzsteuer 19%",
"description": "VAT text printed on the invoice. Default 'Umsatzsteuer 19%'."
},
"tax_type": {
"enum": [
"default",
"eu",
"noteu",
"custom",
"ss"
],
"type": "string",
"description": "Bookkeeping 1.0 only — leave unset on 2.0 accounts."
},
"foot_text": {
"type": "string",
"description": "Text below the line items (some HTML allowed)."
},
"head_text": {
"type": "string",
"description": "Text above the line items (some HTML allowed)."
},
"positions": {
"type": "array",
"items": {
"type": "object",
"required": [
"name",
"quantity",
"price",
"tax_rate"
],
"properties": {
"name": {
"type": "string",
"minLength": 1,
"description": "Line item name."
},
"text": {
"type": "string",
"description": "Longer description shown under the name."
},
"price": {
"type": "number",
"description": "Unit price — net if show_net is true (default), otherwise gross."
},
"part_id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Link the line to this inventory part id."
},
"quantity": {
"type": "number",
"description": "Quantity.",
"exclusiveMinimum": 0
},
"tax_rate": {
"type": "number",
"minimum": 0,
"description": "VAT rate in percent, e.g. 19, 7 or 0."
},
"unity_id": {
"type": "integer",
"default": 1,
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Unit id (1 = Stück/piece). Default 1."
}
}
},
"minItems": 1,
"description": "Line items (at least one)."
},
"contact_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "The contact (customer)'s numeric id.",
"exclusiveMinimum": 0
},
"tax_rule_id": {
"enum": [
"1",
"2",
"3",
"4",
"5",
"11",
"17",
"18",
"19",
"20",
"21"
],
"type": "string",
"default": "1",
"description": "Bookkeeping 2.0 VAT rule id. 1 taxable sales (Umsatzsteuerpflichtige Umsätze), 2 exports, 3 intra-EU supplies, 4 tax-free §4 UStG, 5 reverse charge §13b, 11 small business §19 (Kleinunternehmer), 17 not taxable in Germany, 18-20 One Stop Shop, 21 reverse charge §18b. Default 1."
},
"time_to_pay": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Payment term in days."
},
"invoice_date": {
"type": "string",
"pattern": "^\\d{2}\\.\\d{2}\\.\\d{4}$",
"description": "Invoice date as dd.mm.yyyy."
},
"delivery_date": {
"type": "string",
"pattern": "^\\d{2}\\.\\d{2}\\.\\d{4}$",
"description": "Delivery / service date as dd.mm.yyyy (must not be after invoice_date for a normal invoice)."
},
"small_settlement": {
"type": "boolean",
"description": "True if the account uses the small-business scheme (no VAT)."
},
"contact_person_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Id of the sevdesk user (SevUser) acting as contact person — e.g. contactPerson.id of an existing invoice.",
"exclusiveMinimum": 0
},
"address_country_id": {
"type": "integer",
"default": 1,
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "sevdesk StaticCountry id of the billing address (1 = Germany). Default 1."
},
"customer_internal_note": {
"type": "string",
"description": "Reference / order number field."
}
}
}| Only contacts in this category: 2 Supplier, 3 Customer, 4 Partner, 28 Prospect customer. |
| customer_number | string | Only the contact with this customer number. |
| include_persons | boolean | If true, return organisations AND persons (sevdesk depth=1). Default: organisations only. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"zip": {
"type": "string",
"description": "Only contacts with this ZIP code."
},
"city": {
"type": "string",
"description": "Only contacts in this city."
},
"name": {
"type": "string",
"description": "Only contacts whose name, first name or last name matches."
},
"embed": {
"type": "string",
"description": "Comma-separated nested resources to expand inline, e.g. contact,category."
},
"limit": {
"type": "integer",
"maximum": 1000,
"minimum": 1,
"description": "Max entries to return, 1-1000 (sevdesk suggests 10-100)."
},
"offset": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Number of entries to skip, for paging."
},
"count_all": {
"type": "boolean",
"description": "If true, the response also carries `total`, the full match count."
},
"parent_id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Only persons belonging to this parent organisation's id."
},
"category_id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Only contacts in this category: 2 Supplier, 3 Customer, 4 Partner, 28 Prospect customer."
},
"customer_number": {
"type": "string",
"description": "Only the contact with this customer number."
},
"include_persons": {
"type": "boolean",
"description": "If true, return organisations AND persons (sevdesk depth=1). Default: organisations only."
}
}
}| credit_note_number |
| string |
| Only the credit note with this number. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"embed": {
"type": "string",
"description": "Comma-separated nested resources to expand inline, e.g. contact,category."
},
"limit": {
"type": "integer",
"maximum": 1000,
"minimum": 1,
"description": "Max entries to return, 1-1000 (sevdesk suggests 10-100)."
},
"offset": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Number of entries to skip, for paging."
},
"status": {
"enum": [
"100",
"200",
"750",
"1000"
],
"type": "string",
"description": "Only credit notes with this status code."
},
"end_date": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Only credit notes dated on or before this, as a Unix timestamp in seconds."
},
"count_all": {
"type": "boolean",
"description": "If true, the response also carries `total`, the full match count."
},
"contact_id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Only credit notes for this contact id."
},
"start_date": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Only credit notes dated on or after this, as a Unix timestamp in seconds."
},
"credit_note_number": {
"type": "string",
"description": "Only the credit note with this number."
}
}
}| Only invoices dated on or after this, as a Unix timestamp in seconds. |
| invoice_type | string | Only this type: RE normal, WKR recurring, SR cancellation, MA reminder, TR partial, AR advance, ER final. |
| invoice_number | string | Only the invoice with this number. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"embed": {
"type": "string",
"description": "Comma-separated nested resources to expand inline, e.g. contact,category."
},
"limit": {
"type": "integer",
"maximum": 1000,
"minimum": 1,
"description": "Max entries to return, 1-1000 (sevdesk suggests 10-100)."
},
"offset": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Number of entries to skip, for paging."
},
"status": {
"enum": [
"50",
"100",
"200",
"750",
"1000"
],
"type": "string",
"description": "Only invoices with this status code."
},
"end_date": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Only invoices dated on or before this, as a Unix timestamp in seconds."
},
"count_all": {
"type": "boolean",
"description": "If true, the response also carries `total`, the full match count."
},
"contact_id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Only invoices for this contact id."
},
"delinquent": {
"type": "boolean",
"description": "If true, only overdue (delinquent) invoices."
},
"start_date": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Only invoices dated on or after this, as a Unix timestamp in seconds."
},
"invoice_type": {
"enum": [
"RE",
"WKR",
"SR",
"MA",
"TR",
"AR",
"ER"
],
"type": "string",
"description": "Only this type: RE normal, WKR recurring, SR cancellation, MA reminder, TR partial, AR advance, ER final."
},
"invoice_number": {
"type": "string",
"description": "Only the invoice with this number."
}
}
}| order_number |
| string |
| Only the order with this number. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"embed": {
"type": "string",
"description": "Comma-separated nested resources to expand inline, e.g. contact,category."
},
"limit": {
"type": "integer",
"maximum": 1000,
"minimum": 1,
"description": "Max entries to return, 1-1000 (sevdesk suggests 10-100)."
},
"offset": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Number of entries to skip, for paging."
},
"status": {
"enum": [
"100",
"200",
"300",
"500",
"750",
"1000"
],
"type": "string",
"description": "Only orders with this status code."
},
"end_date": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Only orders dated on or before this, as a Unix timestamp in seconds."
},
"count_all": {
"type": "boolean",
"description": "If true, the response also carries `total`, the full match count."
},
"contact_id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Only orders for this contact id."
},
"start_date": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Only orders dated on or after this, as a Unix timestamp in seconds."
},
"order_number": {
"type": "string",
"description": "Only the order with this number."
}
}
}| boolean |
| If true, only incoming (credit) transactions. |
| payment_purpose | string | Only transactions with this payment purpose (Verwendungszweck). |
| check_account_id | integer | Only transactions on this check account id. |
| payee_payer_name | string | Only transactions with this payee / payer name. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"embed": {
"type": "string",
"description": "Comma-separated nested resources to expand inline, e.g. contact,category."
},
"limit": {
"type": "integer",
"maximum": 1000,
"minimum": 1,
"description": "Max entries to return, 1-1000 (sevdesk suggests 10-100)."
},
"offset": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Number of entries to skip, for paging."
},
"end_date": {
"type": "string",
"description": "Only transactions up to this date (ISO 8601)."
},
"count_all": {
"type": "boolean",
"description": "If true, the response also carries `total`, the full match count."
},
"is_booked": {
"type": "boolean",
"description": "If true, only transactions already booked against a document."
},
"only_debit": {
"type": "boolean",
"description": "If true, only outgoing (debit) transactions."
},
"start_date": {
"type": "string",
"description": "Only transactions from this date on (ISO 8601, e.g. 2026-01-01)."
},
"only_credit": {
"type": "boolean",
"description": "If true, only incoming (credit) transactions."
},
"payment_purpose": {
"type": "string",
"description": "Only transactions with this payment purpose (Verwendungszweck)."
},
"check_account_id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Only transactions on this check account id."
},
"payee_payer_name": {
"type": "string",
"description": "Only transactions with this payee / payer name."
}
}
}| string |
| C for credit (revenue) or D for debit (expense) vouchers. |
| description_like | string | Only vouchers whose description contains this text. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"embed": {
"type": "string",
"description": "Comma-separated nested resources to expand inline, e.g. contact,category."
},
"limit": {
"type": "integer",
"maximum": 1000,
"minimum": 1,
"description": "Max entries to return, 1-1000 (sevdesk suggests 10-100)."
},
"offset": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Number of entries to skip, for paging."
},
"status": {
"enum": [
"50",
"100",
"1000"
],
"type": "string",
"description": "Only vouchers with this status code."
},
"end_date": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Only vouchers dated on or before this, as a Unix timestamp in seconds."
},
"count_all": {
"type": "boolean",
"description": "If true, the response also carries `total`, the full match count."
},
"contact_id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Only vouchers for this contact id."
},
"start_date": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Only vouchers dated on or after this, as a Unix timestamp in seconds."
},
"credit_debit": {
"enum": [
"C",
"D"
],
"type": "string",
"description": "C for credit (revenue) or D for debit (expense) vouchers."
},
"description_like": {
"type": "string",
"description": "Only vouchers whose description contains this text."
}
}
}| description | string | Free-text description. |
| customer_number | string | Customer number. Omit to let sevdesk leave it unset. |
| default_time_to_pay | integer | Default payment term in days for this contact's invoices. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"contact_id"
],
"properties": {
"name": {
"type": "string",
"description": "Organisation name. Setting it makes the contact an ORGANISATION — leave empty for a person."
},
"status": {
"anyOf": [
{
"type": "number",
"const": 100
},
{
"type": "number",
"const": 500
},
{
"type": "number",
"const": 1000
}
],
"description": "100 Lead, 500 Pending, 1000 Active."
},
"surename": {
"type": "string",
"description": "First name of a PERSON (sevdesk's field is really spelled 'surename')."
},
"parent_id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "For a person: the id of the organisation they belong to."
},
"contact_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "The contact's numeric id.",
"exclusiveMinimum": 0
},
"familyname": {
"type": "string",
"description": "Last name of a PERSON."
},
"tax_number": {
"type": "string",
"description": "Tax number (Steuernummer)."
},
"vat_number": {
"type": "string",
"description": "VAT id (USt-IdNr.)."
},
"category_id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Move to category: 2 Supplier, 3 Customer, 4 Partner, 28 Prospect."
},
"description": {
"type": "string",
"description": "Free-text description."
},
"customer_number": {
"type": "string",
"description": "Customer number. Omit to let sevdesk leave it unset."
},
"default_time_to_pay": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Default payment term in days for this contact's invoices."
}
}
}