> ## Documentation Index
> Fetch the complete documentation index at: https://docs.corsair.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# sevdesk plugin

> Access sevdesk contacts, bookkeeping, invoices, orders, vouchers, exports, and related REST resources through validated JSON operations.

Use **sevdesk** through Corsair: one client, typed API calls.

This plugin uses the API token as a raw 32-character hexadecimal Authorization header. Calls use JSON only. X-Version is optional through the per-call resourceVersion input or plugin-level fallback. List responses use the documented objects array and optional total count; list routes document limit (1–1000), offset, and countAll pagination. For Update 2.0 accounting, prefer taxRule and verify allowed tax rates through ReceiptGuidance. Enshrinement is legally irreversible. Webhook receiving is excluded because the official OpenAPI inventory defines no callback/webhook routes. Multipart voucher upload and invoice XML retrieval are excluded from this JSON-only plugin.

**What you get:**

* 152 typed API operations

## Setup

**1. Install**

```bash npm theme={null}
npm install corsair @corsair-dev/sevdesk better-sqlite3
npm install --save-dev @types/better-sqlite3
```

```bash yarn theme={null}
yarn add corsair @corsair-dev/sevdesk better-sqlite3
yarn add --dev @types/better-sqlite3
```

```bash pnpm theme={null}
pnpm install corsair @corsair-dev/sevdesk better-sqlite3
pnpm install --save-dev @types/better-sqlite3
```

```bash bun theme={null}
bun add corsair @corsair-dev/sevdesk better-sqlite3
bun add --dev @types/better-sqlite3
```

**2. Add the plugin**

```ts corsair.ts theme={null}
import Database from 'better-sqlite3';
import { createCorsair } from 'corsair';
import { sevdesk } from '@corsair-dev/sevdesk';

export const corsair = createCorsair({
	plugins: [
		sevdesk(),
	],
	database: new Database('corsair.db'),
	kek: process.env.CORSAIR_KEK!,
	multiTenancy: true,
	hub: {
		projectApiKey: process.env.CORSAIR_API_KEY!,
		signingSecret: process.env.CORSAIR_SIGNING_SECRET!,
	},
});
```

With `multiTenancy: true`, scope calls with `corsair.withTenant(id)`. See [Quick start](https://docs.corsair.dev/quick-start.md) for KEK + Hub keys, and [Multi-tenancy](https://docs.corsair.dev/concepts/multi-tenancy.md) for account isolation.

**3. Choose authentication**

> [tab] API Key (Recommended)
>
> Store the sevdesk API key before the first call: `pnpm corsair setup --plugin=sevdesk --tenant=acme api_key=<your-key>` (leave out `--tenant` without `multiTenancy`), or pass it as `key` in the plugin options. With Hub, each tenant enters their own key on the connect page. See [API key auth](https://docs.corsair.dev/concepts/api-key).
>
> ```ts theme={null}
> sevdesk()
> ```
>
> More: [API Key](https://docs.corsair.dev/concepts/api-key)

**4. Connect a tenant**

Mint a connect link and send the tenant to it. Hub hosts the page and delivers the result to your app — see [Connect / OAuth](https://docs.corsair.dev/management/connect).

```ts theme={null}
const { connectUrl } = await corsair.manage.connect.createLink({
	plugin: 'sevdesk',
	tenantId: 'acme',
});
// redirect the user's browser to connectUrl
```

## Example API calls

**`contact.getContacts`**

```ts theme={null}
const tenant = corsair.withTenant('acme');
await tenant.sevdesk.api.contact.getContacts({});
```

**`contact.createContact`**

```ts theme={null}
const tenant = corsair.withTenant('acme');
await tenant.sevdesk.api.contact.createContact({
	body: {
		name: 'Corsair sample contact',
		category: { id: 3, objectName: 'Category' },
	},
});
```

See the full list on the [API](https://docs.corsair.dev/plugins/sevdesk/api.md) page.

## What's next

> [card] [API reference](https://docs.corsair.dev/plugins/sevdesk/api.md)
>
> Every `sevdesk.api.*` operation with input and output types.

> [card] [Connect / OAuth](https://docs.corsair.dev/management/connect)
>
> createLink, Hub delivery, and tenant connect flows.

> [card] [Use with agents](https://docs.corsair.dev/mcp-adapters/mcp-adapters)
>
> Expose this plugin's operations as MCP tools.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.