diff --git a/.github/PULL_REQUEST_TEMPLATE/mcc_mapping.md b/.github/PULL_REQUEST_TEMPLATE/mcc_mapping.md new file mode 100644 index 0000000..0f03616 --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE/mcc_mapping.md @@ -0,0 +1,33 @@ +## MCC Mapping Contribution + +**MCC code:** +**MCC name:** + +### Suggested mapping + +| Field | Value | +|-------|-------| +| SKR03 primary | | +| SKR03 confidence | | +| SKR04 primary | | +| needs_beleg | | +| ust_abzug | | + +### Alternatives (if any) + +| Account | Condition | +|---------|-----------| +| | | + +### Rationale + + + +### Checklist + +- [ ] I have run `npm test` and all tests pass +- [ ] The account number exists in `skr03.json` +- [ ] `skr04_primary` is a valid 4-digit string +- [ ] `confidence` is set to `high` only if the MCC strongly implies this account with no ambiguity +- [ ] If the category name includes "Not Elsewhere Classified" or similar catch-alls, confidence is `medium` or `low` +- [ ] I have added a `notes` field if there are accounting edge cases (e.g. non-deductibility, VAT exemptions) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..a802bdf --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,60 @@ +name: CI + +on: + push: + branches: ["main", "initial", "scka-de/**"] + pull_request: + branches: ["main"] + +jobs: + test: + name: Test (Node ${{ matrix.node-version }}) + runs-on: ubuntu-latest + strategy: + matrix: + node-version: ["18", "20", "22"] + + steps: + - uses: actions/checkout@v4 + + - name: Set up Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v4 + with: + node-version: ${{ matrix.node-version }} + cache: "npm" + + - name: Install dependencies + run: npm ci + + - name: Type check + run: npm run typecheck + + - name: Build + run: npm run build + + - name: Test + run: npm test + + validate-schemas: + name: JSON Schema validation + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Set up Node.js + uses: actions/setup-node@v4 + with: + node-version: "20" + cache: "npm" + + - name: Install dependencies + run: npm ci + + - name: Install ajv-cli + run: npm install --no-save ajv-cli ajv-formats + + - name: Validate skr03.json against schema + run: npx ajv validate -s schemas/skr03.schema.json -d src/data/skr03.json --spec=draft2020 -c ajv-formats + + - name: Validate mcc_skr_mapping.json against schema + run: npx ajv validate -s schemas/mcc_skr_mapping.schema.json -d src/data/mcc_skr_mapping.json --spec=draft2020 -c ajv-formats diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..d08caf5 --- /dev/null +++ b/.gitignore @@ -0,0 +1,49 @@ +# Claude +CLAUDE.md +.claude/ +.context/ + +# Node +node_modules/ +dist/ + +# Internal planning docs +german-accounting-spec.md +TODOS.md + +# Python +__pycache__/ +*.py[cod] +*$py.class +*.egg-info/ +build/ +*.egg +.eggs/ + +# Virtual environments +.venv/ +venv/ +env/ + +# IDE +.idea/ +.vscode/ +*.swp +*.swo +*~ + +# OS +.DS_Store +Thumbs.db + +# Testing / Coverage +.pytest_cache/ +.mypy_cache/ +.ruff_cache/ +htmlcov/ +.coverage +coverage.xml + +# Distribution +*.whl +*.tar.gz diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..043add2 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2026 german-accounting contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md new file mode 100644 index 0000000..4020a7e --- /dev/null +++ b/README.md @@ -0,0 +1,192 @@ +# german-accounting + +Machine-readable SKR03/SKR04 chart of accounts with MCC-to-account mapping for German SME accounting. MIT licensed — code and data. + +The only open source dataset combining enriched SKR03/SKR04 metadata with ISO 18245 MCC codes mapped to specific German accounts. Use it from any language: download the JSON files directly or install the npm package for a typed TypeScript API. + +```bash +npm install german-accounting +``` + +--- + +## Quick start + +```typescript +import { SKR03, suggestAccount } from "german-accounting"; + +// Look up an account +const konto = SKR03.get("4650"); +// { konto: "4650", name: "Bewirtungskosten", klasse: 4, typ: "aufwand", +// ust_relevant: true, steuerschluessel: [9], skr04: "6640", ... } + +// Categorize a card transaction by MCC +const suggestion = suggestAccount("5812"); // restaurant +// { +// mcc: "5812", +// mcc_name: "Eating Places, Restaurants", +// primary: { konto: "4650", confidence: "high", condition: null }, +// alternatives: [{ konto: "1800", condition: "If private meal" }], +// needs_beleg: true, +// ust_abzug: true +// } + +// SaaS subscriptions (GitHub, Slack, Notion, Figma...) +suggestAccount("5817").primary.konto; // "4969" — Software-Nutzungsrechte + +// Target SKR04 instead of SKR03 +suggestAccount("5812", "SKR04").primary.konto; // "6640" + +// Returns undefined for unknown MCCs — no throws +suggestAccount("9999"); // undefined +``` + +--- + +## API + +### `SKR03` / `SKR04` + +Pre-loaded chart-of-accounts singletons. Both are instances of `Kontenrahmen`. + +```typescript +SKR03.get("4650") // → Konto | undefined +SKR03.search("Reisekosten") // → readonly Konto[] (case-insensitive substring) +SKR03.klasse(4) // → readonly Konto[] (all Klasse 4 expense accounts) +SKR03.exists("4650") // → boolean +SKR03.size // → number +``` + +### `suggestAccount(mcc, skr?)` + +```typescript +suggestAccount(mcc: string, skr?: "SKR03" | "SKR04"): MCCSuggestion | undefined +``` + +MCC range entries (airlines `3000–3350`, hotels `3351–3500`, car rentals `3501–3999`) are expanded at load time. Any code in those ranges resolves correctly. + +When `skr = "SKR04"`, the primary account is the `skr04_primary` value. `name` is `null` and `alternatives` is empty (no SKR04 name data in v0.1). + +### Types + +```typescript +interface Konto { + konto: string; // "4650" + name: string; // "Bewirtungskosten" + klasse: number; // 4 + typ: "aufwand" | "ertrag" | "aktiv" | "passiv"; + gruppe: string; + untergruppe?: string; + ust_relevant: boolean; + steuerschluessel: readonly number[]; + skr04?: string | null; // cross-ref to SKR04 account (SKR03 only) + skr03?: string | null; // back-ref to SKR03 account (SKR04 only) + notes?: string | null; +} + +interface MCCSuggestion { + mcc: string; + mcc_name: string; + category: string; + primary: AccountSuggestion; + alternatives: readonly AccountSuggestion[]; + needs_beleg: boolean; + ust_abzug: boolean; + notes: string | null; +} + +interface AccountSuggestion { + konto: string; + name: string | null; + confidence: "high" | "medium" | "low"; + condition: string | null; +} +``` + +--- + +## Data files + +The JSON files are the primary product. Download them from [GitHub Releases](https://github.com/german-accounting/german-accounting/releases) to use without Node. + +| File | Contents | +|------|----------| +| [`src/data/skr03.json`](src/data/skr03.json) | 289 SKR03 accounts with enriched metadata and SKR04 cross-references | +| [`src/data/skr04.json`](src/data/skr04.json) | 254 SKR04 accounts derived from SKR03 cross-references | +| [`src/data/mcc_skr_mapping.json`](src/data/mcc_skr_mapping.json) | 230 MCC mappings with confidence levels and alternatives | + +JSON Schemas are in [`schemas/`](schemas/) and validated by CI on every push. + +### Data schema — `skr03.json` + +```jsonc +{ + "meta": { "version": "2026.1", "last_updated": "2026-04-03", ... }, + "klassen": [{ "klasse": 0, "name": "Anlage- und Kapitalkonten" }, ...], + "konten": [ + { + "konto": "4650", + "name": "Bewirtungskosten", + "klasse": 4, + "typ": "aufwand", + "gruppe": "Betriebliche Aufwendungen", + "ust_relevant": true, + "steuerschluessel": [9, 8], + "skr04": "6640" + } + ] +} +``` + +### Data schema — `mcc_skr_mapping.json` + +```jsonc +{ + "meta": { "version": "2026.1", ... }, + "mappings": [ + { + "mcc": "5812", + "mcc_name": "Eating Places, Restaurants", + "category": "Food & Beverage", + "skr03": { "primary": "4650", "confidence": "high" }, + "skr04_primary": "6640", + "alternatives": [ + { "konto": "1800", "condition": "If private meal" } + ], + "needs_beleg": true, + "ust_abzug": true + } + ] +} +``` + +--- + +## Contributing + +### Add or fix an MCC mapping + +1. Edit `mcc_skr_mapping.json`. Required fields: `mcc`, `mcc_name`, `category`, `skr03.primary`, `skr03.confidence`, `skr04_primary`, `needs_beleg`, `ust_abzug`. +2. Run `npm test` — CI gate verifies that all referenced accounts exist in `skr03.json`. +3. Open a PR using the [MCC mapping template](.github/PULL_REQUEST_TEMPLATE/mcc_mapping.md). Include the account number, confidence level, your rationale, and your source (DATEV docs, Steuerberater guidance, SKR documentation). + +**Confidence guidelines:** +- `high` — the MCC strongly implies a specific account with no real ambiguity (e.g., fuel stations → Kfz-Betriebskosten) +- `medium` — likely correct but depends on context (e.g., office supply store → could be Bürobedarf or a larger asset) +- `low` — genuinely ambiguous; the mapping is a reasonable default but alternatives are common + +### Add or fix SKR03 accounts + +Edit `skr03.json` directly. All fields from the schema are required. Run `npm test` to verify referential integrity before opening a PR. + +--- + +## Versioning + +Data is versioned independently from the package using a year-based scheme (`2026.1`, `2026.2`, ...). The package version tracks the API. + +--- + +## License + +[MIT](LICENSE) — code and data. diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..89cfb6f --- /dev/null +++ b/package-lock.json @@ -0,0 +1,2749 @@ +{ + "name": "german-accounting", + "version": "0.1.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "german-accounting", + "version": "0.1.0", + "license": "MIT", + "devDependencies": { + "tsup": "^8.0.0", + "typescript": "^5.4.0", + "vitest": "^1.6.0" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.7.tgz", + "integrity": "sha512-EKX3Qwmhz1eMdEJokhALr0YiD0lhQNwDqkPYyPhiSwKrh7/4KRjQc04sZ8db+5DVVnZ1LmbNDI1uAMPEUBnQPg==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.7.tgz", + "integrity": "sha512-jbPXvB4Yj2yBV7HUfE2KHe4GJX51QplCN1pGbYjvsyCZbQmies29EoJbkEc+vYuU5o45AfQn37vZlyXy4YJ8RQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.7.tgz", + "integrity": "sha512-62dPZHpIXzvChfvfLJow3q5dDtiNMkwiRzPylSCfriLvZeq0a1bWChrGx/BbUbPwOrsWKMn8idSllklzBy+dgQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.7.tgz", + "integrity": "sha512-x5VpMODneVDb70PYV2VQOmIUUiBtY3D3mPBG8NxVk5CogneYhkR7MmM3yR/uMdITLrC1ml/NV1rj4bMJuy9MCg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.7.tgz", + "integrity": "sha512-5lckdqeuBPlKUwvoCXIgI2D9/ABmPq3Rdp7IfL70393YgaASt7tbju3Ac+ePVi3KDH6N2RqePfHnXkaDtY9fkw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.7.tgz", + "integrity": "sha512-rYnXrKcXuT7Z+WL5K980jVFdvVKhCHhUwid+dDYQpH+qu+TefcomiMAJpIiC2EM3Rjtq0sO3StMV/+3w3MyyqQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.7.tgz", + "integrity": "sha512-B48PqeCsEgOtzME2GbNM2roU29AMTuOIN91dsMO30t+Ydis3z/3Ngoj5hhnsOSSwNzS+6JppqWsuhTp6E82l2w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.7.tgz", + "integrity": "sha512-jOBDK5XEjA4m5IJK3bpAQF9/Lelu/Z9ZcdhTRLf4cajlB+8VEhFFRjWgfy3M1O4rO2GQ/b2dLwCUGpiF/eATNQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.7.tgz", + "integrity": "sha512-RkT/YXYBTSULo3+af8Ib0ykH8u2MBh57o7q/DAs3lTJlyVQkgQvlrPTnjIzzRPQyavxtPtfg0EopvDyIt0j1rA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.7.tgz", + "integrity": "sha512-RZPHBoxXuNnPQO9rvjh5jdkRmVizktkT7TCDkDmQ0W2SwHInKCAV95GRuvdSvA7w4VMwfCjUiPwDi0ZO6Nfe9A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.7.tgz", + "integrity": "sha512-GA48aKNkyQDbd3KtkplYWT102C5sn/EZTY4XROkxONgruHPU72l+gW+FfF8tf2cFjeHaRbWpOYa/uRBz/Xq1Pg==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.7.tgz", + "integrity": "sha512-a4POruNM2oWsD4WKvBSEKGIiWQF8fZOAsycHOt6JBpZ+JN2n2JH9WAv56SOyu9X5IqAjqSIPTaJkqN8F7XOQ5Q==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.7.tgz", + "integrity": "sha512-KabT5I6StirGfIz0FMgl1I+R1H73Gp0ofL9A3nG3i/cYFJzKHhouBV5VWK1CSgKvVaG4q1RNpCTR2LuTVB3fIw==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.7.tgz", + "integrity": "sha512-gRsL4x6wsGHGRqhtI+ifpN/vpOFTQtnbsupUF5R5YTAg+y/lKelYR1hXbnBdzDjGbMYjVJLJTd2OFmMewAgwlQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.7.tgz", + "integrity": "sha512-hL25LbxO1QOngGzu2U5xeXtxXcW+/GvMN3ejANqXkxZ/opySAZMrc+9LY/WyjAan41unrR3YrmtTsUpwT66InQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.7.tgz", + "integrity": "sha512-2k8go8Ycu1Kb46vEelhu1vqEP+UeRVj2zY1pSuPdgvbd5ykAw82Lrro28vXUrRmzEsUV0NzCf54yARIK8r0fdw==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.7.tgz", + "integrity": "sha512-hzznmADPt+OmsYzw1EE33ccA+HPdIqiCRq7cQeL1Jlq2gb1+OyWBkMCrYGBJ+sxVzve2ZJEVeePbLM2iEIZSxA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.7.tgz", + "integrity": "sha512-b6pqtrQdigZBwZxAn1UpazEisvwaIDvdbMbmrly7cDTMFnw/+3lVxxCTGOrkPVnsYIosJJXAsILG9XcQS+Yu6w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.7.tgz", + "integrity": "sha512-OfatkLojr6U+WN5EDYuoQhtM+1xco+/6FSzJJnuWiUw5eVcicbyK3dq5EeV/QHT1uy6GoDhGbFpprUiHUYggrw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.7.tgz", + "integrity": "sha512-AFuojMQTxAz75Fo8idVcqoQWEHIXFRbOc1TrVcFSgCZtQfSdc1RXgB3tjOn/krRHENUB4j00bfGjyl2mJrU37A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.7.tgz", + "integrity": "sha512-+A1NJmfM8WNDv5CLVQYJ5PshuRm/4cI6WMZRg1by1GwPIQPCTs1GLEUHwiiQGT5zDdyLiRM/l1G0Pv54gvtKIg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openharmony-arm64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.7.tgz", + "integrity": "sha512-+KrvYb/C8zA9CU/g0sR6w2RBw7IGc5J2BPnc3dYc5VJxHCSF1yNMxTV5LQ7GuKteQXZtspjFbiuW5/dOj7H4Yw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.7.tgz", + "integrity": "sha512-ikktIhFBzQNt/QDyOL580ti9+5mL/YZeUPKU2ivGtGjdTYoqz6jObj6nOMfhASpS4GU4Q/Clh1QtxWAvcYKamA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.7.tgz", + "integrity": "sha512-7yRhbHvPqSpRUV7Q20VuDwbjW5kIMwTHpptuUzV+AA46kiPze5Z7qgt6CLCK3pWFrHeNfDd1VKgyP4O+ng17CA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.7.tgz", + "integrity": "sha512-SmwKXe6VHIyZYbBLJrhOoCJRB/Z1tckzmgTLfFYOfpMAx63BJEaL9ExI8x7v0oAO3Zh6D/Oi1gVxEYr5oUCFhw==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.7.tgz", + "integrity": "sha512-56hiAJPhwQ1R4i+21FVF7V8kSD5zZTdHcVuRFMW0hn753vVfQN8xlx4uOPT4xoGH0Z/oVATuR82AiqSTDIpaHg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@jest/schemas": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sinclair/typebox": "^0.27.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "dev": true, + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.60.1.tgz", + "integrity": "sha512-d6FinEBLdIiK+1uACUttJKfgZREXrF0Qc2SmLII7W2AD8FfiZ9Wjd+rD/iRuf5s5dWrr1GgwXCvPqOuDquOowA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.60.1.tgz", + "integrity": "sha512-YjG/EwIDvvYI1YvYbHvDz/BYHtkY4ygUIXHnTdLhG+hKIQFBiosfWiACWortsKPKU/+dUwQQCKQM3qrDe8c9BA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.60.1.tgz", + "integrity": "sha512-mjCpF7GmkRtSJwon+Rq1N8+pI+8l7w5g9Z3vWj4T7abguC4Czwi3Yu/pFaLvA3TTeMVjnu3ctigusqWUfjZzvw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.60.1.tgz", + "integrity": "sha512-haZ7hJ1JT4e9hqkoT9R/19XW2QKqjfJVv+i5AGg57S+nLk9lQnJ1F/eZloRO3o9Scy9CM3wQ9l+dkXtcBgN5Ew==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.60.1.tgz", + "integrity": "sha512-czw90wpQq3ZsAVBlinZjAYTKduOjTywlG7fEeWKUA7oCmpA8xdTkxZZlwNJKWqILlq0wehoZcJYfBvOyhPTQ6w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.60.1.tgz", + "integrity": "sha512-KVB2rqsxTHuBtfOeySEyzEOB7ltlB/ux38iu2rBQzkjbwRVlkhAGIEDiiYnO2kFOkJp+Z7pUXKyrRRFuFUKt+g==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.60.1.tgz", + "integrity": "sha512-L+34Qqil+v5uC0zEubW7uByo78WOCIrBvci69E7sFASRl0X7b/MB6Cqd1lky/CtcSVTydWa2WZwFuWexjS5o6g==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.60.1.tgz", + "integrity": "sha512-n83O8rt4v34hgFzlkb1ycniJh7IR5RCIqt6mz1VRJD6pmhRi0CXdmfnLu9dIUS6buzh60IvACM842Ffb3xd6Gg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.60.1.tgz", + "integrity": "sha512-Nql7sTeAzhTAja3QXeAI48+/+GjBJ+QmAH13snn0AJSNL50JsDqotyudHyMbO2RbJkskbMbFJfIJKWA6R1LCJQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.60.1.tgz", + "integrity": "sha512-+pUymDhd0ys9GcKZPPWlFiZ67sTWV5UU6zOJat02M1+PiuSGDziyRuI/pPue3hoUwm2uGfxdL+trT6Z9rxnlMA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-gnu": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.60.1.tgz", + "integrity": "sha512-VSvgvQeIcsEvY4bKDHEDWcpW4Yw7BtlKG1GUT4FzBUlEKQK0rWHYBqQt6Fm2taXS+1bXvJT6kICu5ZwqKCnvlQ==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-musl": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.60.1.tgz", + "integrity": "sha512-4LqhUomJqwe641gsPp6xLfhqWMbQV04KtPp7/dIp0nzPxAkNY1AbwL5W0MQpcalLYk07vaW9Kp1PBhdpZYYcEw==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-gnu": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.60.1.tgz", + "integrity": "sha512-tLQQ9aPvkBxOc/EUT6j3pyeMD6Hb8QF2BTBnCQWP/uu1lhc9AIrIjKnLYMEroIz/JvtGYgI9dF3AxHZNaEH0rw==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-musl": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.60.1.tgz", + "integrity": "sha512-RMxFhJwc9fSXP6PqmAz4cbv3kAyvD1etJFjTx4ONqFP9DkTkXsAMU4v3Vyc5BgzC+anz7nS/9tp4obsKfqkDHg==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.60.1.tgz", + "integrity": "sha512-QKgFl+Yc1eEk6MmOBfRHYF6lTxiiiV3/z/BRrbSiW2I7AFTXoBFvdMEyglohPj//2mZS4hDOqeB0H1ACh3sBbg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.60.1.tgz", + "integrity": "sha512-RAjXjP/8c6ZtzatZcA1RaQr6O1TRhzC+adn8YZDnChliZHviqIjmvFwHcxi4JKPSDAt6Uhf/7vqcBzQJy0PDJg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.60.1.tgz", + "integrity": "sha512-wcuocpaOlaL1COBYiA89O6yfjlp3RwKDeTIA0hM7OpmhR1Bjo9j31G1uQVpDlTvwxGn2nQs65fBFL5UFd76FcQ==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.60.1.tgz", + "integrity": "sha512-77PpsFQUCOiZR9+LQEFg9GClyfkNXj1MP6wRnzYs0EeWbPcHs02AXu4xuUbM1zhwn3wqaizle3AEYg5aeoohhg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.60.1.tgz", + "integrity": "sha512-5cIATbk5vynAjqqmyBjlciMJl1+R/CwX9oLk/EyiFXDWd95KpHdrOJT//rnUl4cUcskrd0jCCw3wpZnhIHdD9w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-openbsd-x64": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.60.1.tgz", + "integrity": "sha512-cl0w09WsCi17mcmWqqglez9Gk8isgeWvoUZ3WiJFYSR3zjBQc2J5/ihSjpl+VLjPqjQ/1hJRcqBfLjssREQILw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ] + }, + "node_modules/@rollup/rollup-openharmony-arm64": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.60.1.tgz", + "integrity": "sha512-4Cv23ZrONRbNtbZa37mLSueXUCtN7MXccChtKpUnQNgF010rjrjfHx3QxkS2PI7LqGT5xXyYs1a7LbzAwT0iCA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.60.1.tgz", + "integrity": "sha512-i1okWYkA4FJICtr7KpYzFpRTHgy5jdDbZiWfvny21iIKky5YExiDXP+zbXzm3dUcFpkEeYNHgQ5fuG236JPq0g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.60.1.tgz", + "integrity": "sha512-u09m3CuwLzShA0EYKMNiFgcjjzwqtUMLmuCJLeZWjjOYA3IT2Di09KaxGBTP9xVztWyIWjVdsB2E9goMjZvTQg==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-gnu": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.60.1.tgz", + "integrity": "sha512-k+600V9Zl1CM7eZxJgMyTUzmrmhB/0XZnF4pRypKAlAgxmedUA+1v9R+XOFv56W4SlHEzfeMtzujLJD22Uz5zg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.60.1.tgz", + "integrity": "sha512-lWMnixq/QzxyhTV6NjQJ4SFo1J6PvOX8vUx5Wb4bBPsEb+8xZ89Bz6kOXpfXj9ak9AHTQVQzlgzBEc1SyM27xQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@sinclair/typebox": { + "version": "0.27.10", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.10.tgz", + "integrity": "sha512-MTBk/3jGLNB2tVxv6uLlFh1iu64iYOQ2PbdOSK3NW8JZsmlaOh2q6sdtKowBhfw8QFLmYNzTW4/oK4uATIi6ZA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/estree": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@vitest/expect": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-1.6.1.tgz", + "integrity": "sha512-jXL+9+ZNIJKruofqXuuTClf44eSpcHlgj3CiuNihUF3Ioujtmc0zIa3UJOW5RjDK1YLBJZnWBlPuqhYycLioog==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/spy": "1.6.1", + "@vitest/utils": "1.6.1", + "chai": "^4.3.10" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/runner": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-1.6.1.tgz", + "integrity": "sha512-3nSnYXkVkf3mXFfE7vVyPmi3Sazhb/2cfZGGs0JRzFsPFvAMBEcrweV1V1GsrstdXeKCTXlJbvnQwGWgEIHmOA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/utils": "1.6.1", + "p-limit": "^5.0.0", + "pathe": "^1.1.1" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/runner/node_modules/pathe": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz", + "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@vitest/snapshot": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-1.6.1.tgz", + "integrity": "sha512-WvidQuWAzU2p95u8GAKlRMqMyN1yOJkGHnx3M1PL9Raf7AQ1kwLKg04ADlCa3+OXUZE7BceOhVZiuWAbzCKcUQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "magic-string": "^0.30.5", + "pathe": "^1.1.1", + "pretty-format": "^29.7.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/snapshot/node_modules/pathe": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz", + "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@vitest/spy": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-1.6.1.tgz", + "integrity": "sha512-MGcMmpGkZebsMZhbQKkAf9CX5zGvjkBTqf8Zx3ApYWXr3wG+QvEu2eXWfnIIWYSJExIp4V9FCKDEeygzkYrXMw==", + "dev": true, + "license": "MIT", + "dependencies": { + "tinyspy": "^2.2.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/utils": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-1.6.1.tgz", + "integrity": "sha512-jOrrUvXM4Av9ZWiG1EajNto0u96kWAhJ1LmPmJhXXQx/32MecEKd10pOLYgS2BQx1TgkGhloPU1ArDW2vvaY6g==", + "dev": true, + "license": "MIT", + "dependencies": { + "diff-sequences": "^29.6.3", + "estree-walker": "^3.0.3", + "loupe": "^2.3.7", + "pretty-format": "^29.7.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/acorn": { + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.16.0.tgz", + "integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-walk": { + "version": "8.3.5", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.5.tgz", + "integrity": "sha512-HEHNfbars9v4pgpW6SO1KSPkfoS0xVOM/9UzkJltjlsHZmJasxg8aXkuZa7SMf8vKGIBhpUsPluQSqhJFCqebw==", + "dev": true, + "license": "MIT", + "dependencies": { + "acorn": "^8.11.0" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", + "dev": true, + "license": "MIT" + }, + "node_modules/assertion-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/bundle-require": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/bundle-require/-/bundle-require-5.1.0.tgz", + "integrity": "sha512-3WrrOuZiyaaZPWiEt4G3+IffISVC9HYlWueJEBWED4ZH4aIAC2PnkdnuRrR94M+w6yGWn4AglWtJtBI8YqvgoA==", + "dev": true, + "license": "MIT", + "dependencies": { + "load-tsconfig": "^0.2.3" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "peerDependencies": { + "esbuild": ">=0.18" + } + }, + "node_modules/cac": { + "version": "6.7.14", + "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", + "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/chai": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.5.0.tgz", + "integrity": "sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==", + "dev": true, + "license": "MIT", + "dependencies": { + "assertion-error": "^1.1.0", + "check-error": "^1.0.3", + "deep-eql": "^4.1.3", + "get-func-name": "^2.0.2", + "loupe": "^2.3.6", + "pathval": "^1.1.1", + "type-detect": "^4.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/check-error": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz", + "integrity": "sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-func-name": "^2.0.2" + }, + "engines": { + "node": "*" + } + }, + "node_modules/chokidar": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", + "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "readdirp": "^4.0.1" + }, + "engines": { + "node": ">= 14.16.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/confbox": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.1.8.tgz", + "integrity": "sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==", + "dev": true, + "license": "MIT" + }, + "node_modules/consola": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/consola/-/consola-3.4.2.tgz", + "integrity": "sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^14.18.0 || >=16.10.0" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/deep-eql": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.4.tgz", + "integrity": "sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==", + "dev": true, + "license": "MIT", + "dependencies": { + "type-detect": "^4.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/diff-sequences": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", + "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/esbuild": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.7.tgz", + "integrity": "sha512-IxpibTjyVnmrIQo5aqNpCgoACA/dTKLTlhMHihVHhdkxKyPO1uBBthumT0rdHmcsk9uMonIWS0m4FljWzILh3w==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.27.7", + "@esbuild/android-arm": "0.27.7", + "@esbuild/android-arm64": "0.27.7", + "@esbuild/android-x64": "0.27.7", + "@esbuild/darwin-arm64": "0.27.7", + "@esbuild/darwin-x64": "0.27.7", + "@esbuild/freebsd-arm64": "0.27.7", + "@esbuild/freebsd-x64": "0.27.7", + "@esbuild/linux-arm": "0.27.7", + "@esbuild/linux-arm64": "0.27.7", + "@esbuild/linux-ia32": "0.27.7", + "@esbuild/linux-loong64": "0.27.7", + "@esbuild/linux-mips64el": "0.27.7", + "@esbuild/linux-ppc64": "0.27.7", + "@esbuild/linux-riscv64": "0.27.7", + "@esbuild/linux-s390x": "0.27.7", + "@esbuild/linux-x64": "0.27.7", + "@esbuild/netbsd-arm64": "0.27.7", + "@esbuild/netbsd-x64": "0.27.7", + "@esbuild/openbsd-arm64": "0.27.7", + "@esbuild/openbsd-x64": "0.27.7", + "@esbuild/openharmony-arm64": "0.27.7", + "@esbuild/sunos-x64": "0.27.7", + "@esbuild/win32-arm64": "0.27.7", + "@esbuild/win32-ia32": "0.27.7", + "@esbuild/win32-x64": "0.27.7" + } + }, + "node_modules/estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0" + } + }, + "node_modules/execa": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", + "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^8.0.1", + "human-signals": "^5.0.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^4.1.0", + "strip-final-newline": "^3.0.0" + }, + "engines": { + "node": ">=16.17" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/fix-dts-default-cjs-exports": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/fix-dts-default-cjs-exports/-/fix-dts-default-cjs-exports-1.0.1.tgz", + "integrity": "sha512-pVIECanWFC61Hzl2+oOCtoJ3F17kglZC/6N94eRWycFgBH35hHx0Li604ZIzhseh97mf2p0cv7vVrOZGoqhlEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "magic-string": "^0.30.17", + "mlly": "^1.7.4", + "rollup": "^4.34.8" + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/get-func-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz", + "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/get-stream": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", + "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/human-signals": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", + "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=16.17.0" + } + }, + "node_modules/is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true, + "license": "ISC" + }, + "node_modules/joycon": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/joycon/-/joycon-3.1.1.tgz", + "integrity": "sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/js-tokens": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-9.0.1.tgz", + "integrity": "sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/lilconfig": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz", + "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antonk52" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true, + "license": "MIT" + }, + "node_modules/load-tsconfig": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/load-tsconfig/-/load-tsconfig-0.2.5.tgz", + "integrity": "sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, + "node_modules/local-pkg": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.5.1.tgz", + "integrity": "sha512-9rrA30MRRP3gBD3HTGnC6cDFpaE1kVDWxWgqWJUN0RvDNAo+Nz/9GxB+nHOH0ifbVFy0hSA1V6vFDvnx54lTEQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "mlly": "^1.7.3", + "pkg-types": "^1.2.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/loupe": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz", + "integrity": "sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-func-name": "^2.0.1" + } + }, + "node_modules/magic-string": { + "version": "0.30.21", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", + "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.5" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true, + "license": "MIT" + }, + "node_modules/mimic-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mlly": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.8.2.tgz", + "integrity": "sha512-d+ObxMQFmbt10sretNDytwt85VrbkhhUA/JBGm1MPaWJ65Cl4wOgLaB1NYvJSZ0Ef03MMEU/0xpPMXUIQ29UfA==", + "dev": true, + "license": "MIT", + "dependencies": { + "acorn": "^8.16.0", + "pathe": "^2.0.3", + "pkg-types": "^1.3.1", + "ufo": "^1.6.3" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/mz": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, + "node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/npm-run-path": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", + "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm-run-path/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "mimic-fn": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-limit": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-5.0.0.tgz", + "integrity": "sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^1.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/pathe": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", + "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", + "dev": true, + "license": "MIT" + }, + "node_modules/pathval": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", + "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", + "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pirates": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.7.tgz", + "integrity": "sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/pkg-types": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.3.1.tgz", + "integrity": "sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "confbox": "^0.1.8", + "mlly": "^1.7.4", + "pathe": "^2.0.1" + } + }, + "node_modules/postcss": { + "version": "8.5.8", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.8.tgz", + "integrity": "sha512-OW/rX8O/jXnm82Ey1k44pObPtdblfiuWnrd8X7GJ7emImCOstunGbXUpp7HdBrFQX6rJzn3sPT397Wp5aCwCHg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.11", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-load-config": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-6.0.1.tgz", + "integrity": "sha512-oPtTM4oerL+UXmx+93ytZVN82RrlY/wPUV8IeDxFrzIjXOLF1pN+EmKPLbubvKHT2HC20xXsCAH2Z+CKV6Oz/g==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "lilconfig": "^3.1.1" + }, + "engines": { + "node": ">= 18" + }, + "peerDependencies": { + "jiti": ">=1.21.0", + "postcss": ">=8.0.9", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + }, + "postcss": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + }, + "node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "dev": true, + "license": "MIT" + }, + "node_modules/readdirp": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", + "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14.18.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/rollup": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.60.1.tgz", + "integrity": "sha512-VmtB2rFU/GroZ4oL8+ZqXgSA38O6GR8KSIvWmEFv63pQ0G6KaBH9s07PO8XTXP4vI+3UJUEypOfjkGfmSBBR0w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "1.0.8" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.60.1", + "@rollup/rollup-android-arm64": "4.60.1", + "@rollup/rollup-darwin-arm64": "4.60.1", + "@rollup/rollup-darwin-x64": "4.60.1", + "@rollup/rollup-freebsd-arm64": "4.60.1", + "@rollup/rollup-freebsd-x64": "4.60.1", + "@rollup/rollup-linux-arm-gnueabihf": "4.60.1", + "@rollup/rollup-linux-arm-musleabihf": "4.60.1", + "@rollup/rollup-linux-arm64-gnu": "4.60.1", + "@rollup/rollup-linux-arm64-musl": "4.60.1", + "@rollup/rollup-linux-loong64-gnu": "4.60.1", + "@rollup/rollup-linux-loong64-musl": "4.60.1", + "@rollup/rollup-linux-ppc64-gnu": "4.60.1", + "@rollup/rollup-linux-ppc64-musl": "4.60.1", + "@rollup/rollup-linux-riscv64-gnu": "4.60.1", + "@rollup/rollup-linux-riscv64-musl": "4.60.1", + "@rollup/rollup-linux-s390x-gnu": "4.60.1", + "@rollup/rollup-linux-x64-gnu": "4.60.1", + "@rollup/rollup-linux-x64-musl": "4.60.1", + "@rollup/rollup-openbsd-x64": "4.60.1", + "@rollup/rollup-openharmony-arm64": "4.60.1", + "@rollup/rollup-win32-arm64-msvc": "4.60.1", + "@rollup/rollup-win32-ia32-msvc": "4.60.1", + "@rollup/rollup-win32-x64-gnu": "4.60.1", + "@rollup/rollup-win32-x64-msvc": "4.60.1", + "fsevents": "~2.3.2" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/siginfo": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz", + "integrity": "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==", + "dev": true, + "license": "ISC" + }, + "node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/source-map": { + "version": "0.7.6", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.6.tgz", + "integrity": "sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">= 12" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/stackback": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz", + "integrity": "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==", + "dev": true, + "license": "MIT" + }, + "node_modules/std-env": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.10.0.tgz", + "integrity": "sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==", + "dev": true, + "license": "MIT" + }, + "node_modules/strip-final-newline": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/strip-literal": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-2.1.1.tgz", + "integrity": "sha512-631UJ6O00eNGfMiWG78ck80dfBab8X6IVFB51jZK5Icd7XAs60Z5y7QdSd/wGIklnWvRbUNloVzhOKKmutxQ6Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "js-tokens": "^9.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/sucrase": { + "version": "3.35.1", + "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.1.tgz", + "integrity": "sha512-DhuTmvZWux4H1UOnWMB3sk0sbaCVOoQZjv8u1rDoTV0HTdGem9hkAZtl4JZy8P2z4Bg0nT+YMeOFyVr4zcG5Tw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.2", + "commander": "^4.0.0", + "lines-and-columns": "^1.1.6", + "mz": "^2.7.0", + "pirates": "^4.0.1", + "tinyglobby": "^0.2.11", + "ts-interface-checker": "^0.1.9" + }, + "bin": { + "sucrase": "bin/sucrase", + "sucrase-node": "bin/sucrase-node" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/thenify": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "dev": true, + "license": "MIT", + "dependencies": { + "any-promise": "^1.0.0" + } + }, + "node_modules/thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", + "dev": true, + "license": "MIT", + "dependencies": { + "thenify": ">= 3.1.0 < 4" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/tinybench": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz", + "integrity": "sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==", + "dev": true, + "license": "MIT" + }, + "node_modules/tinyexec": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.2.tgz", + "integrity": "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==", + "dev": true, + "license": "MIT" + }, + "node_modules/tinyglobby": { + "version": "0.2.15", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", + "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "fdir": "^6.5.0", + "picomatch": "^4.0.3" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/tinypool": { + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-0.8.4.tgz", + "integrity": "sha512-i11VH5gS6IFeLY3gMBQ00/MmLncVP7JLXOw1vlgkytLmJK7QnEr7NXf0LBdxfmNPAeyetukOk0bOYrJrFGjYJQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/tinyspy": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-2.2.1.tgz", + "integrity": "sha512-KYad6Vy5VDWV4GH3fjpseMQ/XU2BhIYP7Vzd0LG44qRWm/Yt2WCOTicFdvmgo6gWaqooMQCawTtILVQJupKu7A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/tree-kill": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", + "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", + "dev": true, + "license": "MIT", + "bin": { + "tree-kill": "cli.js" + } + }, + "node_modules/ts-interface-checker": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", + "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/tsup": { + "version": "8.5.1", + "resolved": "https://registry.npmjs.org/tsup/-/tsup-8.5.1.tgz", + "integrity": "sha512-xtgkqwdhpKWr3tKPmCkvYmS9xnQK3m3XgxZHwSUjvfTjp7YfXe5tT3GgWi0F2N+ZSMsOeWeZFh7ZZFg5iPhing==", + "dev": true, + "license": "MIT", + "dependencies": { + "bundle-require": "^5.1.0", + "cac": "^6.7.14", + "chokidar": "^4.0.3", + "consola": "^3.4.0", + "debug": "^4.4.0", + "esbuild": "^0.27.0", + "fix-dts-default-cjs-exports": "^1.0.0", + "joycon": "^3.1.1", + "picocolors": "^1.1.1", + "postcss-load-config": "^6.0.1", + "resolve-from": "^5.0.0", + "rollup": "^4.34.8", + "source-map": "^0.7.6", + "sucrase": "^3.35.0", + "tinyexec": "^0.3.2", + "tinyglobby": "^0.2.11", + "tree-kill": "^1.2.2" + }, + "bin": { + "tsup": "dist/cli-default.js", + "tsup-node": "dist/cli-node.js" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@microsoft/api-extractor": "^7.36.0", + "@swc/core": "^1", + "postcss": "^8.4.12", + "typescript": ">=4.5.0" + }, + "peerDependenciesMeta": { + "@microsoft/api-extractor": { + "optional": true + }, + "@swc/core": { + "optional": true + }, + "postcss": { + "optional": true + }, + "typescript": { + "optional": true + } + } + }, + "node_modules/type-detect": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.1.0.tgz", + "integrity": "sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/typescript": { + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", + "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/ufo": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.6.3.tgz", + "integrity": "sha512-yDJTmhydvl5lJzBmy/hyOAA0d+aqCBuwl818haVdYCRrWV84o7YyeVm4QlVHStqNrrJSTb6jKuFAVqAFsr+K3Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/vite": { + "version": "5.4.21", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.21.tgz", + "integrity": "sha512-o5a9xKjbtuhY6Bi5S3+HvbRERmouabWbyUcpXXUA1u+GNUKoROi9byOJ8M0nHbHYHkYICiMlqxkg1KkYmm25Sw==", + "dev": true, + "license": "MIT", + "dependencies": { + "esbuild": "^0.21.3", + "postcss": "^8.4.43", + "rollup": "^4.20.0" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || >=20.0.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "sass-embedded": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/vite-node": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-1.6.1.tgz", + "integrity": "sha512-YAXkfvGtuTzwWbDSACdJSg4A4DZiAqckWe90Zapc/sEX3XvHcw1NdurM/6od8J207tSDqNbSsgdCacBgvJKFuA==", + "dev": true, + "license": "MIT", + "dependencies": { + "cac": "^6.7.14", + "debug": "^4.3.4", + "pathe": "^1.1.1", + "picocolors": "^1.0.0", + "vite": "^5.0.0" + }, + "bin": { + "vite-node": "vite-node.mjs" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/vite-node/node_modules/pathe": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz", + "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/vite/node_modules/@esbuild/aix-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", + "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/android-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz", + "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/android-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", + "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/android-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz", + "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/darwin-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", + "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/darwin-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", + "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/freebsd-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", + "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/freebsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", + "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", + "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", + "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", + "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-loong64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", + "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-mips64el": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", + "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", + "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-riscv64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", + "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-s390x": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", + "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", + "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/netbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", + "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/openbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", + "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/sunos-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", + "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/win32-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", + "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/win32-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", + "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/win32-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", + "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/esbuild": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", + "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.21.5", + "@esbuild/android-arm": "0.21.5", + "@esbuild/android-arm64": "0.21.5", + "@esbuild/android-x64": "0.21.5", + "@esbuild/darwin-arm64": "0.21.5", + "@esbuild/darwin-x64": "0.21.5", + "@esbuild/freebsd-arm64": "0.21.5", + "@esbuild/freebsd-x64": "0.21.5", + "@esbuild/linux-arm": "0.21.5", + "@esbuild/linux-arm64": "0.21.5", + "@esbuild/linux-ia32": "0.21.5", + "@esbuild/linux-loong64": "0.21.5", + "@esbuild/linux-mips64el": "0.21.5", + "@esbuild/linux-ppc64": "0.21.5", + "@esbuild/linux-riscv64": "0.21.5", + "@esbuild/linux-s390x": "0.21.5", + "@esbuild/linux-x64": "0.21.5", + "@esbuild/netbsd-x64": "0.21.5", + "@esbuild/openbsd-x64": "0.21.5", + "@esbuild/sunos-x64": "0.21.5", + "@esbuild/win32-arm64": "0.21.5", + "@esbuild/win32-ia32": "0.21.5", + "@esbuild/win32-x64": "0.21.5" + } + }, + "node_modules/vitest": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-1.6.1.tgz", + "integrity": "sha512-Ljb1cnSJSivGN0LqXd/zmDbWEM0RNNg2t1QW/XUhYl/qPqyu7CsqeWtqQXHVaJsecLPuDoak2oJcZN2QoRIOag==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/expect": "1.6.1", + "@vitest/runner": "1.6.1", + "@vitest/snapshot": "1.6.1", + "@vitest/spy": "1.6.1", + "@vitest/utils": "1.6.1", + "acorn-walk": "^8.3.2", + "chai": "^4.3.10", + "debug": "^4.3.4", + "execa": "^8.0.1", + "local-pkg": "^0.5.0", + "magic-string": "^0.30.5", + "pathe": "^1.1.1", + "picocolors": "^1.0.0", + "std-env": "^3.5.0", + "strip-literal": "^2.0.0", + "tinybench": "^2.5.1", + "tinypool": "^0.8.3", + "vite": "^5.0.0", + "vite-node": "1.6.1", + "why-is-node-running": "^2.2.2" + }, + "bin": { + "vitest": "vitest.mjs" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "@edge-runtime/vm": "*", + "@types/node": "^18.0.0 || >=20.0.0", + "@vitest/browser": "1.6.1", + "@vitest/ui": "1.6.1", + "happy-dom": "*", + "jsdom": "*" + }, + "peerDependenciesMeta": { + "@edge-runtime/vm": { + "optional": true + }, + "@types/node": { + "optional": true + }, + "@vitest/browser": { + "optional": true + }, + "@vitest/ui": { + "optional": true + }, + "happy-dom": { + "optional": true + }, + "jsdom": { + "optional": true + } + } + }, + "node_modules/vitest/node_modules/pathe": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz", + "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/why-is-node-running": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.3.0.tgz", + "integrity": "sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==", + "dev": true, + "license": "MIT", + "dependencies": { + "siginfo": "^2.0.0", + "stackback": "0.0.2" + }, + "bin": { + "why-is-node-running": "cli.js" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yocto-queue": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.2.2.tgz", + "integrity": "sha512-4LCcse/U2MHZ63HAJVE+v71o7yOdIe4cZ70Wpf8D/IyjDKYQLV5GD46B+hSTjJsvV5PztjvHoU580EftxjDZFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..7a012d2 --- /dev/null +++ b/package.json @@ -0,0 +1,56 @@ +{ + "name": "german-accounting", + "version": "0.1.0", + "description": "Machine-readable SKR03/SKR04 chart of accounts with MCC-to-account mapping for German SME accounting", + "keywords": [ + "german-accounting", + "skr03", + "skr04", + "mcc", + "datev", + "buchhaltung", + "kontenrahmen", + "fintech" + ], + "author": "scka-de", + "license": "MIT", + "repository": { + "type": "git", + "url": "https://github.com/scka-de/german-accounting.git" + }, + "homepage": "https://github.com/scka-de/german-accounting#readme", + "bugs": { + "url": "https://github.com/scka-de/german-accounting/issues" + }, + "engines": { + "node": ">=18" + }, + "type": "module", + "main": "./dist/index.cjs", + "module": "./dist/index.js", + "types": "./dist/index.d.ts", + "exports": { + ".": { + "types": "./dist/index.d.ts", + "import": "./dist/index.js", + "require": "./dist/index.cjs" + } + }, + "files": [ + "dist", + "src/data", + "schemas" + ], + "scripts": { + "build": "tsup", + "test": "vitest run", + "test:watch": "vitest", + "typecheck": "tsc --noEmit", + "prepublishOnly": "npm run build" + }, + "devDependencies": { + "tsup": "^8.0.0", + "typescript": "^5.4.0", + "vitest": "^1.6.0" + } +} diff --git a/schemas/mcc_skr_mapping.schema.json b/schemas/mcc_skr_mapping.schema.json new file mode 100644 index 0000000..a35884f --- /dev/null +++ b/schemas/mcc_skr_mapping.schema.json @@ -0,0 +1,96 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "https://github.com/german-accounting/mcc_skr_mapping.schema.json", + "title": "MCC to SKR Mapping", + "description": "ISO 18245 MCC codes mapped to SKR03/SKR04 account suggestions with confidence levels", + "type": "object", + "required": ["meta", "mappings"], + "additionalProperties": false, + "properties": { + "meta": { + "type": "object", + "required": ["version", "last_updated"], + "properties": { + "version": { "type": "string" }, + "last_updated": { "type": "string" }, + "description": { "type": "string" }, + "total_mappings": { "type": "integer" } + } + }, + "mappings": { + "type": "array", + "items": { "$ref": "#/$defs/MCCMapping" } + } + }, + "$defs": { + "MCCMapping": { + "type": "object", + "required": [ + "mcc", + "mcc_name", + "category", + "skr03", + "skr04_primary", + "alternatives", + "needs_beleg", + "ust_abzug" + ], + "additionalProperties": false, + "properties": { + "mcc": { + "type": "string", + "pattern": "^(\\d{4}|\\d{4}-\\d{4})$", + "description": "4-digit MCC code, or a range in the form START-END (e.g. 3000-3350)" + }, + "mcc_name": { "type": "string", "minLength": 1 }, + "category": { "type": "string", "minLength": 1 }, + "skr03": { + "type": "object", + "required": ["primary", "confidence"], + "additionalProperties": false, + "properties": { + "primary": { + "type": "string", + "pattern": "^\\d{4}$" + }, + "confidence": { + "type": "string", + "enum": ["high", "medium", "low"] + } + } + }, + "skr04_primary": { + "type": "string", + "pattern": "^\\d{4}$" + }, + "alternatives": { + "type": "array", + "items": { "$ref": "#/$defs/Alternative" } + }, + "needs_beleg": { "type": "boolean" }, + "ust_abzug": { "type": "boolean" }, + "notes": { + "oneOf": [ + { "type": "string" }, + { "type": "null" } + ] + } + } + }, + "Alternative": { + "type": "object", + "required": ["konto", "condition"], + "additionalProperties": false, + "properties": { + "konto": { + "type": "string", + "pattern": "^\\d{4}$" + }, + "condition": { + "type": "string", + "minLength": 1 + } + } + } + } +} diff --git a/schemas/skr03.schema.json b/schemas/skr03.schema.json new file mode 100644 index 0000000..10cc915 --- /dev/null +++ b/schemas/skr03.schema.json @@ -0,0 +1,76 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "https://github.com/german-accounting/skr03.schema.json", + "title": "SKR03 Kontenrahmen", + "description": "German Standard Chart of Accounts (Standardkontenrahmen 03) with enriched metadata", + "type": "object", + "required": ["meta", "klassen", "konten"], + "additionalProperties": false, + "properties": { + "meta": { + "type": "object", + "required": ["version", "source", "last_updated"], + "properties": { + "version": { "type": "string" }, + "source": { "type": "string" }, + "last_updated": { "type": "string" }, + "description": { "type": "string" } + } + }, + "klassen": { + "type": "array", + "items": { + "type": "object", + "required": ["klasse", "name"], + "properties": { + "klasse": { "type": "integer", "minimum": 0, "maximum": 9 }, + "name": { "type": "string" } + } + } + }, + "konten": { + "type": "array", + "items": { "$ref": "#/$defs/Konto" } + } + }, + "$defs": { + "Konto": { + "type": "object", + "required": ["konto", "name", "klasse", "typ", "gruppe", "ust_relevant", "steuerschluessel"], + "additionalProperties": false, + "properties": { + "konto": { + "type": "string", + "pattern": "^\\d{4}$", + "description": "4-digit account number, zero-padded" + }, + "name": { "type": "string", "minLength": 1 }, + "klasse": { "type": "integer", "minimum": 0, "maximum": 9 }, + "typ": { + "type": "string", + "enum": ["aufwand", "ertrag", "aktiv", "passiv"] + }, + "gruppe": { "type": "string", "minLength": 1 }, + "untergruppe": { "type": "string" }, + "ust_relevant": { "type": "boolean" }, + "steuerschluessel": { + "type": "array", + "items": { "type": "integer" } + }, + "skr04": { + "oneOf": [ + { "type": "string", "pattern": "^\\d{4}$" }, + { "type": "null" } + ], + "description": "Cross-reference to the corresponding SKR04 account number" + }, + "notes": { + "oneOf": [ + { "type": "string" }, + { "type": "null" } + ] + } + } + } + } +} diff --git a/src/data/mcc_skr_mapping.json b/src/data/mcc_skr_mapping.json new file mode 100644 index 0000000..2bcf0cd --- /dev/null +++ b/src/data/mcc_skr_mapping.json @@ -0,0 +1,3716 @@ +{ + "meta": { + "version": "2026.1", + "description": "Mapping from ISO 18245 MCC codes to SKR03/SKR04 accounts for German business accounting", + "confidence_levels": { + "high": "MCC determines account in >90% of cases for typical SME", + "medium": "MCC suggests most likely account but alternatives are common (30-50%)", + "low": "MCC is ambiguous — multiple equally valid accounts possible" + }, + "default_gegenkonto": "1200 (Bank) for SKR03, 1800 for SKR04", + "license": "MIT", + "status": "draft — contributions and corrections welcome", + "notes": "This mapping assumes a typical German SME (Einzelunternehmen, GmbH, UG). Industry-specific mappings may differ. Always confirm with Steuerberater for edge cases.", + "last_updated": "2026-04-03" + }, + "mappings": [ + { + "mcc": "0742", + "mcc_name": "Veterinary Services", + "category": "Professional Services", + "skr03": { + "primary": "4900", + "confidence": "medium" + }, + "skr04_primary": "6300", + "alternatives": [ + { + "konto": "4946", + "condition": "If veterinary service is for business animal (e.g. guard dog)" + } + ], + "needs_beleg": true, + "ust_abzug": true + }, + { + "mcc": "0763", + "mcc_name": "Agricultural Co-operatives", + "category": "Agriculture", + "skr03": { + "primary": "3400", + "confidence": "medium" + }, + "skr04_primary": "5400", + "alternatives": [], + "needs_beleg": true, + "ust_abzug": true + }, + { + "mcc": "0780", + "mcc_name": "Landscaping and Horticultural Services", + "category": "Services", + "skr03": { + "primary": "4260", + "confidence": "medium" + }, + "skr04_primary": "6340", + "alternatives": [ + { + "konto": "4946", + "condition": "If contracted as Fremdleistung for client project" + } + ], + "needs_beleg": true, + "ust_abzug": true + }, + { + "mcc": "1520", + "mcc_name": "General Contractors", + "category": "Construction", + "skr03": { + "primary": "4260", + "confidence": "medium" + }, + "skr04_primary": "6340", + "alternatives": [ + { + "konto": "3100", + "condition": "If subcontractor for client project" + }, + { + "konto": "0027", + "condition": "If capital expenditure on building" + } + ], + "needs_beleg": true, + "ust_abzug": true + }, + { + "mcc": "1711", + "mcc_name": "Heating, Plumbing, A/C Contractors", + "category": "Construction", + "skr03": { + "primary": "4260", + "confidence": "high" + }, + "skr04_primary": "6340", + "alternatives": [], + "needs_beleg": true, + "ust_abzug": true + }, + { + "mcc": "1731", + "mcc_name": "Electrical Contractors", + "category": "Construction", + "skr03": { + "primary": "4260", + "confidence": "high" + }, + "skr04_primary": "6340", + "alternatives": [], + "needs_beleg": true, + "ust_abzug": true + }, + { + "mcc": "1740", + "mcc_name": "Masonry, Stonework, Tile Setting", + "category": "Construction", + "skr03": { + "primary": "4260", + "confidence": "high" + }, + "skr04_primary": "6340", + "alternatives": [], + "needs_beleg": true, + "ust_abzug": true + }, + { + "mcc": "1750", + "mcc_name": "Carpentry Contractors", + "category": "Construction", + "skr03": { + "primary": "4260", + "confidence": "high" + }, + "skr04_primary": "6340", + "alternatives": [], + "needs_beleg": true, + "ust_abzug": true + }, + { + "mcc": "1761", + "mcc_name": "Roofing, Siding, Sheet Metal", + "category": "Construction", + "skr03": { + "primary": "4260", + "confidence": "high" + }, + "skr04_primary": "6340", + "alternatives": [], + "needs_beleg": true, + "ust_abzug": true + }, + { + "mcc": "2741", + "mcc_name": "Miscellaneous Publishing and Printing", + "category": "Business Services", + "skr03": { + "primary": "4600", + "confidence": "medium" + }, + "skr04_primary": "6600", + "alternatives": [ + { + "konto": "4930", + "condition": "If printed office supplies" + } + ], + "needs_beleg": true, + "ust_abzug": true + }, + { + "mcc": "2791", + "mcc_name": "Typesetting, Plate Making", + "category": "Business Services", + "skr03": { + "primary": "4600", + "confidence": "medium" + }, + "skr04_primary": "6600", + "alternatives": [], + "needs_beleg": true, + "ust_abzug": true + }, + { + "mcc": "2842", + "mcc_name": "Specialty Cleaning, Polishing", + "category": "Services", + "skr03": { + "primary": "4250", + "confidence": "high" + }, + "skr04_primary": "6335", + "alternatives": [], + "needs_beleg": true, + "ust_abzug": true + }, + { + "mcc": "3000-3350", + "mcc_name": "Airlines", + "category": "Transportation", + "skr03": { + "primary": "4673", + "confidence": "high" + }, + "skr04_primary": "6673", + "alternatives": [ + { + "konto": "4663", + "condition": "If employee travel, not owner" + } + ], + "needs_beleg": true, + "ust_abzug": true, + "notes": "Range covers all major airlines" + }, + { + "mcc": "3351-3500", + "mcc_name": "Hotels/Motels", + "category": "Travel", + "skr03": { + "primary": "4676", + "confidence": "high" + }, + "skr04_primary": "6680", + "alternatives": [ + { + "konto": "4666", + "condition": "Employee travel, not owner" + } + ], + "needs_beleg": true, + "ust_abzug": true, + "notes": "Hotel-specific MCC range. Distinction between Unternehmer (4676) and Arbeitnehmer (4666) depends on who travels." + }, + { + "mcc": "3501-3999", + "mcc_name": "Car Rental Agencies", + "category": "Transportation", + "skr03": { + "primary": "4570", + "confidence": "high" + }, + "skr04_primary": "6570", + "alternatives": [ + { + "konto": "4673", + "condition": "If rented during business trip" + } + ], + "needs_beleg": true, + "ust_abzug": true, + "notes": "Range covers all major car rental companies" + }, + { + "mcc": "4011", + "mcc_name": "Railroads", + "category": "Transportation", + "skr03": { + "primary": "4673", + "confidence": "high" + }, + "skr04_primary": "6673", + "alternatives": [ + { + "konto": "4663", + "condition": "Employee travel" + }, + { + "konto": "4730", + "condition": "If freight transport" + } + ], + "needs_beleg": true, + "ust_abzug": true + }, + { + "mcc": "4111", + "mcc_name": "Local/Suburban Commuter Passenger Transportation", + "category": "Transportation", + "skr03": { + "primary": "4673", + "confidence": "high" + }, + "skr04_primary": "6673", + "alternatives": [ + { + "konto": "4663", + "condition": "Employee travel" + } + ], + "needs_beleg": true, + "ust_abzug": true + }, + { + "mcc": "4112", + "mcc_name": "Passenger Railways", + "category": "Transportation", + "skr03": { + "primary": "4673", + "confidence": "high" + }, + "skr04_primary": "6673", + "alternatives": [ + { + "konto": "4663", + "condition": "Employee travel" + } + ], + "needs_beleg": true, + "ust_abzug": true + }, + { + "mcc": "4121", + "mcc_name": "Taxicabs/Limousines", + "category": "Transportation", + "skr03": { + "primary": "4673", + "confidence": "high" + }, + "skr04_primary": "6673", + "alternatives": [ + { + "konto": "4663", + "condition": "Employee travel" + } + ], + "needs_beleg": true, + "ust_abzug": true + }, + { + "mcc": "4131", + "mcc_name": "Bus Lines", + "category": "Transportation", + "skr03": { + "primary": "4673", + "confidence": "high" + }, + "skr04_primary": "6673", + "alternatives": [ + { + "konto": "4663", + "condition": "Employee travel" + } + ], + "needs_beleg": true, + "ust_abzug": true + }, + { + "mcc": "4214", + "mcc_name": "Motor Freight Carriers, Trucking", + "category": "Transportation", + "skr03": { + "primary": "4730", + "confidence": "high" + }, + "skr04_primary": "6730", + "alternatives": [], + "needs_beleg": true, + "ust_abzug": true + }, + { + "mcc": "4215", + "mcc_name": "Courier Services", + "category": "Transportation", + "skr03": { + "primary": "4910", + "confidence": "high" + }, + "skr04_primary": "6800", + "alternatives": [ + { + "konto": "4730", + "condition": "If shipping goods to customers" + } + ], + "needs_beleg": true, + "ust_abzug": true + }, + { + "mcc": "4225", + "mcc_name": "Public Warehousing and Storage", + "category": "Services", + "skr03": { + "primary": "4900", + "confidence": "medium" + }, + "skr04_primary": "6300", + "alternatives": [], + "needs_beleg": true, + "ust_abzug": true + }, + { + "mcc": "4411", + "mcc_name": "Steamship/Cruise Lines", + "category": "Transportation", + "skr03": { + "primary": "4673", + "confidence": "medium" + }, + "skr04_primary": "6673", + "alternatives": [ + { + "konto": "4640", + "condition": "If client entertainment" + } + ], + "needs_beleg": true, + "ust_abzug": true + }, + { + "mcc": "4468", + "mcc_name": "Marinas", + "category": "Transportation", + "skr03": { + "primary": "4900", + "confidence": "low" + }, + "skr04_primary": "6300", + "alternatives": [], + "needs_beleg": true, + "ust_abzug": true + }, + { + "mcc": "4511", + "mcc_name": "Airlines, Air Carriers", + "category": "Transportation", + "skr03": { + "primary": "4673", + "confidence": "high" + }, + "skr04_primary": "6673", + "alternatives": [ + { + "konto": "4663", + "condition": "Employee travel" + } + ], + "needs_beleg": true, + "ust_abzug": true + }, + { + "mcc": "4722", + "mcc_name": "Travel Agencies/Tour Operators", + "category": "Travel", + "skr03": { + "primary": "4673", + "confidence": "medium" + }, + "skr04_primary": "6673", + "alternatives": [ + { + "konto": "4676", + "condition": "If hotel included" + }, + { + "konto": "4663", + "condition": "Employee travel" + } + ], + "needs_beleg": true, + "ust_abzug": true + }, + { + "mcc": "4784", + "mcc_name": "Tolls/Bridge Fees", + "category": "Transportation", + "skr03": { + "primary": "4530", + "confidence": "high" + }, + "skr04_primary": "6530", + "alternatives": [ + { + "konto": "4673", + "condition": "If during business trip" + } + ], + "needs_beleg": true, + "ust_abzug": true + }, + { + "mcc": "4789", + "mcc_name": "Transportation Services, Not Elsewhere Classified", + "category": "Transportation", + "skr03": { + "primary": "4673", + "confidence": "medium" + }, + "skr04_primary": "6673", + "alternatives": [], + "needs_beleg": true, + "ust_abzug": true + }, + { + "mcc": "4812", + "mcc_name": "Telecommunication Equipment", + "category": "Telecom", + "skr03": { + "primary": "4920", + "confidence": "high" + }, + "skr04_primary": "6805", + "alternatives": [ + { + "konto": "0410", + "condition": "If hardware purchase > 800€ net" + } + ], + "needs_beleg": true, + "ust_abzug": true + }, + { + "mcc": "4814", + "mcc_name": "Telecommunication Services", + "category": "Telecom", + "skr03": { + "primary": "4920", + "confidence": "high" + }, + "skr04_primary": "6805", + "alternatives": [], + "needs_beleg": true, + "ust_abzug": true + }, + { + "mcc": "4816", + "mcc_name": "Computer Network/Information Services", + "category": "Technology", + "skr03": { + "primary": "4925", + "confidence": "high" + }, + "skr04_primary": "6815", + "alternatives": [ + { + "konto": "4969", + "condition": "If SaaS subscription" + } + ], + "needs_beleg": true, + "ust_abzug": true + }, + { + "mcc": "4821", + "mcc_name": "Telegraph Services", + "category": "Telecom", + "skr03": { + "primary": "4920", + "confidence": "high" + }, + "skr04_primary": "6805", + "alternatives": [], + "needs_beleg": true, + "ust_abzug": true + }, + { + "mcc": "4829", + "mcc_name": "Wire Transfer Money Orders", + "category": "Financial", + "skr03": { + "primary": "4970", + "confidence": "high" + }, + "skr04_primary": "6855", + "alternatives": [], + "needs_beleg": true, + "ust_abzug": false + }, + { + "mcc": "4899", + "mcc_name": "Cable, Satellite, Pay Television/Radio", + "category": "Telecom", + "skr03": { + "primary": "4920", + "confidence": "medium" + }, + "skr04_primary": "6805", + "alternatives": [ + { + "konto": "4900", + "condition": "If not directly business related" + } + ], + "needs_beleg": true, + "ust_abzug": true + }, + { + "mcc": "4900", + "mcc_name": "Utilities — Electric, Gas, Water, Sanitary", + "category": "Utilities", + "skr03": { + "primary": "4240", + "confidence": "high" + }, + "skr04_primary": "6330", + "alternatives": [], + "needs_beleg": true, + "ust_abzug": true + }, + { + "mcc": "5013", + "mcc_name": "Motor Vehicle Supplies and New Parts", + "category": "Automotive", + "skr03": { + "primary": "4530", + "confidence": "high" + }, + "skr04_primary": "6530", + "alternatives": [ + { + "konto": "4540", + "condition": "If repair parts" + } + ], + "needs_beleg": true, + "ust_abzug": true + }, + { + "mcc": "5021", + "mcc_name": "Office and Commercial Furniture", + "category": "Office", + "skr03": { + "primary": "0420", + "confidence": "medium" + }, + "skr04_primary": "0640", + "alternatives": [ + { + "konto": "4930", + "condition": "If < 250€ net" + }, + { + "konto": "0480", + "condition": "If 250-800€ net (GWG)" + } + ], + "needs_beleg": true, + "ust_abzug": true + }, + { + "mcc": "5039", + "mcc_name": "Construction Materials", + "category": "Construction", + "skr03": { + "primary": "3400", + "confidence": "medium" + }, + "skr04_primary": "5400", + "alternatives": [ + { + "konto": "4260", + "condition": "If maintenance of own premises" + } + ], + "needs_beleg": true, + "ust_abzug": true + }, + { + "mcc": "5044", + "mcc_name": "Photographic, Photocopy, Office Equipment", + "category": "Office", + "skr03": { + "primary": "4930", + "confidence": "medium" + }, + "skr04_primary": "6820", + "alternatives": [ + { + "konto": "0410", + "condition": "If equipment > 800€ net" + }, + { + "konto": "0480", + "condition": "If 250-800€ net (GWG)" + } + ], + "needs_beleg": true, + "ust_abzug": true + }, + { + "mcc": "5045", + "mcc_name": "Computers, Computer Peripherals, Software", + "category": "Technology", + "skr03": { + "primary": "0420", + "confidence": "medium" + }, + "skr04_primary": "0640", + "alternatives": [ + { + "konto": "4969", + "condition": "If software only" + }, + { + "konto": "0480", + "condition": "If hardware 250-800€ (GWG)" + }, + { + "konto": "4930", + "condition": "If accessories < 250€" + } + ], + "needs_beleg": true, + "ust_abzug": true + }, + { + "mcc": "5046", + "mcc_name": "Commercial Equipment, Not Elsewhere Classified", + "category": "Equipment", + "skr03": { + "primary": "0400", + "confidence": "medium" + }, + "skr04_primary": "0620", + "alternatives": [ + { + "konto": "0480", + "condition": "If 250-800€ (GWG)" + } + ], + "needs_beleg": true, + "ust_abzug": true + }, + { + "mcc": "5047", + "mcc_name": "Medical, Dental, Ophthalmic Equipment", + "category": "Medical Equipment", + "skr03": { + "primary": "0400", + "confidence": "medium" + }, + "skr04_primary": "0620", + "alternatives": [], + "needs_beleg": true, + "ust_abzug": true + }, + { + "mcc": "5065", + "mcc_name": "Electrical Parts and Equipment", + "category": "Equipment", + "skr03": { + "primary": "3400", + "confidence": "medium" + }, + "skr04_primary": "5400", + "alternatives": [ + { + "konto": "4800", + "condition": "If for repairs" + } + ], + "needs_beleg": true, + "ust_abzug": true + }, + { + "mcc": "5072", + "mcc_name": "Hardware, Equipment and Supplies", + "category": "Supplies", + "skr03": { + "primary": "4980", + "confidence": "high" + }, + "skr04_primary": "6845", + "alternatives": [ + { + "konto": "3400", + "condition": "If raw materials for production" + } + ], + "needs_beleg": true, + "ust_abzug": true + }, + { + "mcc": "5094", + "mcc_name": "Precious Stones, Metals, Watches, Jewelry", + "category": "Retail", + "skr03": { + "primary": "4630", + "confidence": "low" + }, + "skr04_primary": "6620", + "alternatives": [ + { + "konto": "4635", + "condition": "If gift > 50€" + }, + { + "konto": "1800", + "condition": "If personal purchase (Privatentnahme)" + } + ], + "needs_beleg": true, + "ust_abzug": true + }, + { + "mcc": "5111", + "mcc_name": "Stationery, Office Supplies, Printing, Writing Paper", + "category": "Office", + "skr03": { + "primary": "4930", + "confidence": "high" + }, + "skr04_primary": "6820", + "alternatives": [], + "needs_beleg": true, + "ust_abzug": true + }, + { + "mcc": "5112", + "mcc_name": "Stationery Stores", + "category": "Office", + "skr03": { + "primary": "4930", + "confidence": "high" + }, + "skr04_primary": "6820", + "alternatives": [], + "needs_beleg": true, + "ust_abzug": true + }, + { + "mcc": "5131", + "mcc_name": "Piece Goods, Notions, Dry Goods", + "category": "Wholesale", + "skr03": { + "primary": "3400", + "confidence": "medium" + }, + "skr04_primary": "5400", + "alternatives": [], + "needs_beleg": true, + "ust_abzug": true + }, + { + "mcc": "5137", + "mcc_name": "Uniforms, Commercial Clothing", + "category": "Retail", + "skr03": { + "primary": "4140", + "confidence": "medium" + }, + "skr04_primary": "6130", + "alternatives": [ + { + "konto": "4900", + "condition": "If general work clothing, not Berufsbekleidung" + } + ], + "needs_beleg": true, + "ust_abzug": true, + "notes": "Berufsbekleidung (work uniforms). Common for trades, gastro, medical." + }, + { + "mcc": "5139", + "mcc_name": "Commercial Footwear", + "category": "Retail", + "skr03": { + "primary": "4140", + "confidence": "medium" + }, + "skr04_primary": "6130", + "alternatives": [ + { + "konto": "4900", + "condition": "If general work shoes, not Sicherheitsschuhe" + } + ], + "needs_beleg": true, + "ust_abzug": true, + "notes": "Arbeitsschuhe/Sicherheitsschuhe. Part of Berufsbekleidung." + }, + { + "mcc": "5192", + "mcc_name": "Books, Periodicals, Newspapers", + "category": "Publishing", + "skr03": { + "primary": "4940", + "confidence": "high" + }, + "skr04_primary": "6825", + "alternatives": [ + { + "konto": "4945", + "condition": "If training/educational material" + } + ], + "needs_beleg": true, + "ust_abzug": true, + "notes": "Books typically 7% USt in Germany" + }, + { + "mcc": "5193", + "mcc_name": "Florists Supplies, Nursery Stock, Flowers", + "category": "Retail", + "skr03": { + "primary": "4654", + "confidence": "medium" + }, + "skr04_primary": "6644", + "alternatives": [ + { + "konto": "4630", + "condition": "If gift to client < 50€" + } + ], + "needs_beleg": true, + "ust_abzug": true + }, + { + "mcc": "5200", + "mcc_name": "Home Supply Warehouse Stores", + "category": "Retail", + "skr03": { + "primary": "4260", + "confidence": "medium" + }, + "skr04_primary": "6340", + "alternatives": [ + { + "konto": "4980", + "condition": "If tools/small equipment" + }, + { + "konto": "1800", + "condition": "If personal (Privatentnahme)" + } + ], + "needs_beleg": true, + "ust_abzug": true + }, + { + "mcc": "5211", + "mcc_name": "Lumber, Building Materials Stores", + "category": "Construction", + "skr03": { + "primary": "4260", + "confidence": "medium" + }, + "skr04_primary": "6340", + "alternatives": [ + { + "konto": "3400", + "condition": "If materials for production" + } + ], + "needs_beleg": true, + "ust_abzug": true + }, + { + "mcc": "5251", + "mcc_name": "Hardware Stores", + "category": "Retail", + "skr03": { + "primary": "4980", + "confidence": "medium" + }, + "skr04_primary": "6845", + "alternatives": [ + { + "konto": "4260", + "condition": "If for premises maintenance" + } + ], + "needs_beleg": true, + "ust_abzug": true + }, + { + "mcc": "5261", + "mcc_name": "Nurseries, Lawn and Garden Supply", + "category": "Retail", + "skr03": { + "primary": "4260", + "confidence": "medium" + }, + "skr04_primary": "6340", + "alternatives": [], + "needs_beleg": true, + "ust_abzug": true + }, + { + "mcc": "5300", + "mcc_name": "Wholesale Clubs", + "category": "Wholesale", + "skr03": { + "primary": "3400", + "confidence": "low" + }, + "skr04_primary": "5400", + "alternatives": [ + { + "konto": "4930", + "condition": "If office supplies" + }, + { + "konto": "1800", + "condition": "If personal" + } + ], + "needs_beleg": true, + "ust_abzug": true + }, + { + "mcc": "5309", + "mcc_name": "Duty Free Stores", + "category": "Retail", + "skr03": { + "primary": "4630", + "confidence": "low" + }, + "skr04_primary": "6620", + "alternatives": [ + { + "konto": "1800", + "condition": "If personal" + } + ], + "needs_beleg": true, + "ust_abzug": true + }, + { + "mcc": "5310", + "mcc_name": "Discount Stores", + "category": "Retail", + "skr03": { + "primary": "4930", + "confidence": "low" + }, + "skr04_primary": "6820", + "alternatives": [ + { + "konto": "1800", + "condition": "If personal" + } + ], + "needs_beleg": true, + "ust_abzug": true + }, + { + "mcc": "5311", + "mcc_name": "Department Stores", + "category": "Retail", + "skr03": { + "primary": "4900", + "confidence": "low" + }, + "skr04_primary": "6300", + "alternatives": [ + { + "konto": "1800", + "condition": "If personal" + } + ], + "needs_beleg": true, + "ust_abzug": true, + "notes": "Very ambiguous — depends entirely on what was purchased" + }, + { + "mcc": "5331", + "mcc_name": "Variety Stores", + "category": "Retail", + "skr03": { + "primary": "4930", + "confidence": "low" + }, + "skr04_primary": "6820", + "alternatives": [ + { + "konto": "1800", + "condition": "If personal" + } + ], + "needs_beleg": true, + "ust_abzug": true + }, + { + "mcc": "5399", + "mcc_name": "General Merchandise", + "category": "Retail", + "skr03": { + "primary": "4900", + "confidence": "low" + }, + "skr04_primary": "6300", + "alternatives": [], + "needs_beleg": true, + "ust_abzug": true + }, + { + "mcc": "5411", + "mcc_name": "Grocery Stores, Supermarkets", + "category": "Food", + "skr03": { + "primary": "4650", + "confidence": "low" + }, + "skr04_primary": "6640", + "alternatives": [ + { + "konto": "4654", + "condition": "If non-deductible entertainment" + }, + { + "konto": "1800", + "condition": "If personal (Privatentnahme)" + }, + { + "konto": "3400", + "condition": "If ingredients for food business" + } + ], + "needs_beleg": true, + "ust_abzug": true, + "notes": "Highly ambiguous. Purpose determines account." + }, + { + "mcc": "5422", + "mcc_name": "Freezer and Locker Meat Provisioners", + "category": "Food", + "skr03": { + "primary": "4650", + "confidence": "low" + }, + "skr04_primary": "6640", + "alternatives": [ + { + "konto": "3400", + "condition": "If for food business" + } + ], + "needs_beleg": true, + "ust_abzug": true + }, + { + "mcc": "5441", + "mcc_name": "Candy, Nut, Confectionery Stores", + "category": "Food", + "skr03": { + "primary": "4630", + "confidence": "medium" + }, + "skr04_primary": "6620", + "alternatives": [ + { + "konto": "4654", + "condition": "If internal team treats" + } + ], + "needs_beleg": true, + "ust_abzug": true + }, + { + "mcc": "5451", + "mcc_name": "Dairy Products Stores", + "category": "Food", + "skr03": { + "primary": "4650", + "confidence": "low" + }, + "skr04_primary": "6640", + "alternatives": [ + { + "konto": "3400", + "condition": "If for food business" + } + ], + "needs_beleg": true, + "ust_abzug": true + }, + { + "mcc": "5462", + "mcc_name": "Bakeries", + "category": "Food", + "skr03": { + "primary": "4650", + "confidence": "low" + }, + "skr04_primary": "6640", + "alternatives": [ + { + "konto": "4654", + "condition": "If for office/team" + } + ], + "needs_beleg": true, + "ust_abzug": true + }, + { + "mcc": "5499", + "mcc_name": "Miscellaneous Food Stores", + "category": "Food", + "skr03": { + "primary": "4650", + "confidence": "low" + }, + "skr04_primary": "6640", + "alternatives": [], + "needs_beleg": true, + "ust_abzug": true + }, + { + "mcc": "5511", + "mcc_name": "Car and Truck Dealers (New and Used)", + "category": "Automotive", + "skr03": { + "primary": "0320", + "confidence": "medium" + }, + "skr04_primary": "0520", + "alternatives": [ + { + "konto": "4530", + "condition": "If parts/accessories only" + } + ], + "needs_beleg": true, + "ust_abzug": true, + "notes": "Major purchase — likely Anlagevermögen" + }, + { + "mcc": "5521", + "mcc_name": "Used Car Dealers", + "category": "Automotive", + "skr03": { + "primary": "0320", + "confidence": "medium" + }, + "skr04_primary": "0520", + "alternatives": [], + "needs_beleg": true, + "ust_abzug": true + }, + { + "mcc": "5531", + "mcc_name": "Auto and Home Supply Stores", + "category": "Automotive", + "skr03": { + "primary": "4530", + "confidence": "high" + }, + "skr04_primary": "6530", + "alternatives": [], + "needs_beleg": true, + "ust_abzug": true + }, + { + "mcc": "5532", + "mcc_name": "Automotive Tire Stores", + "category": "Automotive", + "skr03": { + "primary": "4530", + "confidence": "high" + }, + "skr04_primary": "6530", + "alternatives": [], + "needs_beleg": true, + "ust_abzug": true + }, + { + "mcc": "5533", + "mcc_name": "Automotive Parts, Accessories Stores", + "category": "Automotive", + "skr03": { + "primary": "4530", + "confidence": "high" + }, + "skr04_primary": "6530", + "alternatives": [], + "needs_beleg": true, + "ust_abzug": true + }, + { + "mcc": "5541", + "mcc_name": "Service Stations (Fuel)", + "category": "Automotive", + "skr03": { + "primary": "4530", + "confidence": "high" + }, + "skr04_primary": "6530", + "alternatives": [], + "needs_beleg": true, + "ust_abzug": true + }, + { + "mcc": "5542", + "mcc_name": "Automated Fuel Dispensers", + "category": "Automotive", + "skr03": { + "primary": "4530", + "confidence": "high" + }, + "skr04_primary": "6530", + "alternatives": [], + "needs_beleg": true, + "ust_abzug": true + }, + { + "mcc": "5551", + "mcc_name": "Boat Dealers", + "category": "Equipment", + "skr03": { + "primary": "0400", + "confidence": "low" + }, + "skr04_primary": "0620", + "alternatives": [], + "needs_beleg": true, + "ust_abzug": true + }, + { + "mcc": "5571", + "mcc_name": "Motorcycle Shops and Dealers", + "category": "Automotive", + "skr03": { + "primary": "0320", + "confidence": "low" + }, + "skr04_primary": "0520", + "alternatives": [], + "needs_beleg": true, + "ust_abzug": true + }, + { + "mcc": "5599", + "mcc_name": "Miscellaneous Automotive Dealers", + "category": "Automotive", + "skr03": { + "primary": "4530", + "confidence": "medium" + }, + "skr04_primary": "6530", + "alternatives": [], + "needs_beleg": true, + "ust_abzug": true + }, + { + "mcc": "5611", + "mcc_name": "Men's Clothing Stores", + "category": "Clothing", + "skr03": { + "primary": "4900", + "confidence": "low" + }, + "skr04_primary": "6300", + "alternatives": [ + { + "konto": "1800", + "condition": "If personal (Privatentnahme)" + }, + { + "konto": "4140", + "condition": "If work uniforms" + } + ], + "needs_beleg": true, + "ust_abzug": true, + "notes": "Clothing is generally not deductible unless clearly work-only (uniform, safety gear)" + }, + { + "mcc": "5621", + "mcc_name": "Women's Clothing Stores", + "category": "Clothing", + "skr03": { + "primary": "4900", + "confidence": "low" + }, + "skr04_primary": "6300", + "alternatives": [ + { + "konto": "1800", + "condition": "If personal" + } + ], + "needs_beleg": true, + "ust_abzug": true, + "notes": "Same as 5611" + }, + { + "mcc": "5641", + "mcc_name": "Children's and Infants' Wear Stores", + "category": "Clothing", + "skr03": { + "primary": "1800", + "confidence": "high" + }, + "skr04_primary": "2100", + "alternatives": [], + "needs_beleg": false, + "ust_abzug": false, + "notes": "Almost always personal (Privatentnahme)" + }, + { + "mcc": "5651", + "mcc_name": "Family Clothing Stores", + "category": "Clothing", + "skr03": { + "primary": "1800", + "confidence": "medium" + }, + "skr04_primary": "2100", + "alternatives": [ + { + "konto": "4140", + "condition": "If work uniforms" + } + ], + "needs_beleg": true, + "ust_abzug": false + }, + { + "mcc": "5655", + "mcc_name": "Sports and Riding Apparel Stores", + "category": "Clothing", + "skr03": { + "primary": "1800", + "confidence": "high" + }, + "skr04_primary": "2100", + "alternatives": [], + "needs_beleg": false, + "ust_abzug": false + }, + { + "mcc": "5661", + "mcc_name": "Shoe Stores", + "category": "Clothing", + "skr03": { + "primary": "1800", + "confidence": "high" + }, + "skr04_primary": "2100", + "alternatives": [ + { + "konto": "4140", + "condition": "If safety shoes for work" + } + ], + "needs_beleg": false, + "ust_abzug": false + }, + { + "mcc": "5699", + "mcc_name": "Miscellaneous Apparel and Accessory Shops", + "category": "Clothing", + "skr03": { + "primary": "1800", + "confidence": "medium" + }, + "skr04_primary": "2100", + "alternatives": [], + "needs_beleg": false, + "ust_abzug": false + }, + { + "mcc": "5712", + "mcc_name": "Furniture, Home Furnishings", + "category": "Furnishings", + "skr03": { + "primary": "0420", + "confidence": "medium" + }, + "skr04_primary": "0640", + "alternatives": [ + { + "konto": "0480", + "condition": "If 250-800€ (GWG)" + }, + { + "konto": "1800", + "condition": "If personal" + } + ], + "needs_beleg": true, + "ust_abzug": true + }, + { + "mcc": "5722", + "mcc_name": "Household Appliance Stores", + "category": "Furnishings", + "skr03": { + "primary": "0410", + "confidence": "low" + }, + "skr04_primary": "0630", + "alternatives": [ + { + "konto": "1800", + "condition": "If personal" + } + ], + "needs_beleg": true, + "ust_abzug": true + }, + { + "mcc": "5732", + "mcc_name": "Electronics Stores", + "category": "Technology", + "skr03": { + "primary": "0420", + "confidence": "medium" + }, + "skr04_primary": "0640", + "alternatives": [ + { + "konto": "0480", + "condition": "If 250-800€ (GWG)" + }, + { + "konto": "4930", + "condition": "If small accessories < 250€" + }, + { + "konto": "1800", + "condition": "If personal" + } + ], + "needs_beleg": true, + "ust_abzug": true + }, + { + "mcc": "5733", + "mcc_name": "Music Stores, Instruments, Pianos", + "category": "Retail", + "skr03": { + "primary": "1800", + "confidence": "high" + }, + "skr04_primary": "2100", + "alternatives": [ + { + "konto": "0400", + "condition": "If for music business" + } + ], + "needs_beleg": false, + "ust_abzug": false + }, + { + "mcc": "5734", + "mcc_name": "Computer Software Stores", + "category": "Technology", + "skr03": { + "primary": "4969", + "confidence": "high" + }, + "skr04_primary": "6838", + "alternatives": [ + { + "konto": "0135", + "condition": "If perpetual license > 800€" + } + ], + "needs_beleg": true, + "ust_abzug": true + }, + { + "mcc": "5735", + "mcc_name": "Record Stores", + "category": "Retail", + "skr03": { + "primary": "1800", + "confidence": "high" + }, + "skr04_primary": "2100", + "alternatives": [], + "needs_beleg": false, + "ust_abzug": false + }, + { + "mcc": "5811", + "mcc_name": "Caterers", + "category": "Food Service", + "skr03": { + "primary": "4650", + "confidence": "high" + }, + "skr04_primary": "6640", + "alternatives": [ + { + "konto": "4654", + "condition": "If non-deductible portion" + } + ], + "needs_beleg": true, + "ust_abzug": true, + "notes": "Bewirtungsbeleg with attendees required" + }, + { + "mcc": "5812", + "mcc_name": "Eating Places, Restaurants", + "category": "Food Service", + "skr03": { + "primary": "4650", + "confidence": "medium" + }, + "skr04_primary": "6640", + "alternatives": [ + { + "konto": "4674", + "condition": "If meal during business trip (Verpflegungsmehraufwand)" + }, + { + "konto": "4654", + "condition": "If non-deductible" + }, + { + "konto": "1800", + "condition": "If personal" + } + ], + "needs_beleg": true, + "ust_abzug": true, + "notes": "Bewirtungsbeleg required for 4650. Trip meal uses Pauschale." + }, + { + "mcc": "5813", + "mcc_name": "Bars, Cocktail Lounges, Nightclubs", + "category": "Food Service", + "skr03": { + "primary": "4650", + "confidence": "medium" + }, + "skr04_primary": "6640", + "alternatives": [ + { + "konto": "4654", + "condition": "If non-deductible" + }, + { + "konto": "1800", + "condition": "If personal" + } + ], + "needs_beleg": true, + "ust_abzug": true + }, + { + "mcc": "5814", + "mcc_name": "Fast Food Restaurants", + "category": "Food Service", + "skr03": { + "primary": "4650", + "confidence": "medium" + }, + "skr04_primary": "6640", + "alternatives": [ + { + "konto": "4674", + "condition": "If during business trip" + }, + { + "konto": "1800", + "condition": "If personal" + } + ], + "needs_beleg": true, + "ust_abzug": true + }, + { + "mcc": "5815", + "mcc_name": "Digital Goods: Media, Books, Movies, Music", + "category": "Technology", + "skr03": { + "primary": "4940", + "confidence": "medium" + }, + "skr04_primary": "6820", + "alternatives": [ + { + "konto": "4969", + "condition": "If software/streaming subscription, not book/media" + } + ], + "needs_beleg": true, + "ust_abzug": true, + "notes": "7% USt for e-books (BU 2), 19% for streaming. Distinguish Bücher (4940) from Software (4969)." + }, + { + "mcc": "5816", + "mcc_name": "Digital Goods: Games", + "category": "Entertainment", + "skr03": { + "primary": "1800", + "confidence": "high" + }, + "skr04_primary": "2100", + "alternatives": [], + "needs_beleg": true, + "ust_abzug": false, + "notes": "Almost always personal use. If used for business (game studio research), use 4969." + }, + { + "mcc": "5817", + "mcc_name": "Digital Goods: Applications (SaaS)", + "category": "Technology", + "skr03": { + "primary": "4969", + "confidence": "high" + }, + "skr04_primary": "6840", + "alternatives": [ + { + "konto": "4925", + "condition": "If internet/cloud infrastructure (AWS, GCP)" + }, + { + "konto": "4806", + "condition": "If directly attributable to specific Fremdleistung" + } + ], + "needs_beleg": true, + "ust_abzug": true, + "notes": "Covers SaaS subscriptions: GitHub, Figma, Notion, Slack, Jira, Zoom, etc. Most common MCC for tech SME expenses." + }, + { + "mcc": "5818", + "mcc_name": "Digital Goods: Large Digital Goods Merchant", + "category": "Technology", + "skr03": { + "primary": "4969", + "confidence": "low" + }, + "skr04_primary": "6840", + "alternatives": [ + { + "konto": "4940", + "condition": "If books/publications" + }, + { + "konto": "1800", + "condition": "If personal app purchase" + } + ], + "needs_beleg": true, + "ust_abzug": true, + "notes": "Apple App Store, Google Play. Low confidence because purchases are mixed business/personal." + }, + { + "mcc": "5912", + "mcc_name": "Drug Stores, Pharmacies", + "category": "Health", + "skr03": { + "primary": "1800", + "confidence": "high" + }, + "skr04_primary": "2100", + "alternatives": [ + { + "konto": "4946", + "condition": "If first aid supplies for office" + } + ], + "needs_beleg": false, + "ust_abzug": false, + "notes": "Almost always personal" + }, + { + "mcc": "5921", + "mcc_name": "Package Stores — Beer, Wine, Liquor", + "category": "Retail", + "skr03": { + "primary": "4630", + "confidence": "medium" + }, + "skr04_primary": "6620", + "alternatives": [ + { + "konto": "4650", + "condition": "If for client entertainment" + }, + { + "konto": "1800", + "condition": "If personal" + } + ], + "needs_beleg": true, + "ust_abzug": true + }, + { + "mcc": "5931", + "mcc_name": "Used Merchandise and Secondhand Stores", + "category": "Retail", + "skr03": { + "primary": "4900", + "confidence": "low" + }, + "skr04_primary": "6300", + "alternatives": [], + "needs_beleg": true, + "ust_abzug": true + }, + { + "mcc": "5941", + "mcc_name": "Sporting Goods Stores", + "category": "Retail", + "skr03": { + "primary": "1800", + "confidence": "high" + }, + "skr04_primary": "2100", + "alternatives": [ + { + "konto": "4140", + "condition": "If company sports equipment for employees" + } + ], + "needs_beleg": false, + "ust_abzug": false + }, + { + "mcc": "5942", + "mcc_name": "Book Stores", + "category": "Publishing", + "skr03": { + "primary": "4940", + "confidence": "high" + }, + "skr04_primary": "6825", + "alternatives": [ + { + "konto": "4945", + "condition": "If educational/training" + }, + { + "konto": "1800", + "condition": "If personal" + } + ], + "needs_beleg": true, + "ust_abzug": true, + "notes": "Books typically 7% USt" + }, + { + "mcc": "5943", + "mcc_name": "Stationery, Office, School Supply Stores", + "category": "Office", + "skr03": { + "primary": "4930", + "confidence": "high" + }, + "skr04_primary": "6820", + "alternatives": [], + "needs_beleg": true, + "ust_abzug": true + }, + { + "mcc": "5944", + "mcc_name": "Jewelry, Watch, Clock, Silverware Stores", + "category": "Retail", + "skr03": { + "primary": "4630", + "confidence": "low" + }, + "skr04_primary": "6620", + "alternatives": [ + { + "konto": "1800", + "condition": "If personal" + } + ], + "needs_beleg": true, + "ust_abzug": true + }, + { + "mcc": "5945", + "mcc_name": "Hobby, Toy, Game Shops", + "category": "Retail", + "skr03": { + "primary": "1800", + "confidence": "high" + }, + "skr04_primary": "2100", + "alternatives": [], + "needs_beleg": false, + "ust_abzug": false + }, + { + "mcc": "5946", + "mcc_name": "Camera and Photographic Supply Stores", + "category": "Technology", + "skr03": { + "primary": "0410", + "confidence": "medium" + }, + "skr04_primary": "0630", + "alternatives": [ + { + "konto": "0480", + "condition": "If 250-800€ (GWG)" + }, + { + "konto": "4930", + "condition": "If small accessories" + } + ], + "needs_beleg": true, + "ust_abzug": true + }, + { + "mcc": "5947", + "mcc_name": "Gift, Card, Novelty, Souvenir Shops", + "category": "Retail", + "skr03": { + "primary": "4630", + "confidence": "medium" + }, + "skr04_primary": "6620", + "alternatives": [ + { + "konto": "4635", + "condition": "If gift > 50€" + }, + { + "konto": "1800", + "condition": "If personal" + } + ], + "needs_beleg": true, + "ust_abzug": true + }, + { + "mcc": "5964", + "mcc_name": "Direct Marketing — Catalog Merchant", + "category": "Retail", + "skr03": { + "primary": "4900", + "confidence": "low" + }, + "skr04_primary": "6300", + "alternatives": [], + "needs_beleg": true, + "ust_abzug": true + }, + { + "mcc": "5965", + "mcc_name": "Direct Marketing — Combination Catalog", + "category": "Retail", + "skr03": { + "primary": "4900", + "confidence": "low" + }, + "skr04_primary": "6300", + "alternatives": [], + "needs_beleg": true, + "ust_abzug": true + }, + { + "mcc": "5967", + "mcc_name": "Direct Marketing — Inbound Teleservices", + "category": "Services", + "skr03": { + "primary": "4600", + "confidence": "medium" + }, + "skr04_primary": "6600", + "alternatives": [], + "needs_beleg": true, + "ust_abzug": true + }, + { + "mcc": "5968", + "mcc_name": "Direct Marketing — Subscription", + "category": "Services", + "skr03": { + "primary": "4940", + "confidence": "medium" + }, + "skr04_primary": "6825", + "alternatives": [ + { + "konto": "4969", + "condition": "If digital subscription/SaaS" + } + ], + "needs_beleg": true, + "ust_abzug": true + }, + { + "mcc": "5969", + "mcc_name": "Direct Marketing — Other", + "category": "Services", + "skr03": { + "primary": "4600", + "confidence": "low" + }, + "skr04_primary": "6600", + "alternatives": [], + "needs_beleg": true, + "ust_abzug": true + }, + { + "mcc": "5970", + "mcc_name": "Artist's Supply and Craft Shops", + "category": "Retail", + "skr03": { + "primary": "3400", + "confidence": "low" + }, + "skr04_primary": "5400", + "alternatives": [ + { + "konto": "4930", + "condition": "If office/presentation materials" + } + ], + "needs_beleg": true, + "ust_abzug": true + }, + { + "mcc": "5977", + "mcc_name": "Cosmetic Stores", + "category": "Retail", + "skr03": { + "primary": "1800", + "confidence": "high" + }, + "skr04_primary": "2100", + "alternatives": [], + "needs_beleg": false, + "ust_abzug": false + }, + { + "mcc": "5983", + "mcc_name": "Fuel Dealers", + "category": "Utilities", + "skr03": { + "primary": "4230", + "confidence": "high" + }, + "skr04_primary": "6325", + "alternatives": [ + { + "konto": "4530", + "condition": "If vehicle fuel" + } + ], + "needs_beleg": true, + "ust_abzug": true + }, + { + "mcc": "5999", + "mcc_name": "Miscellaneous and Specialty Retail Stores", + "category": "Retail", + "skr03": { + "primary": "4900", + "confidence": "low" + }, + "skr04_primary": "6300", + "alternatives": [], + "needs_beleg": true, + "ust_abzug": true + }, + { + "mcc": "6010", + "mcc_name": "Financial Institutions — Manual Cash Disbursements", + "category": "Financial", + "skr03": { + "primary": "4970", + "confidence": "high" + }, + "skr04_primary": "6855", + "alternatives": [], + "needs_beleg": true, + "ust_abzug": false, + "notes": "Kontoauszug serves as Beleg." + }, + { + "mcc": "6011", + "mcc_name": "Financial Institutions — Automated Cash Disbursements (ATM)", + "category": "Financial", + "skr03": { + "primary": "4970", + "confidence": "high" + }, + "skr04_primary": "6855", + "alternatives": [], + "needs_beleg": true, + "ust_abzug": false, + "notes": "ATM fees are Nebenkosten des Geldverkehrs Kontoauszug serves as Beleg." + }, + { + "mcc": "6012", + "mcc_name": "Financial Institutions — Merchandise and Services", + "category": "Financial", + "skr03": { + "primary": "4970", + "confidence": "high" + }, + "skr04_primary": "6855", + "alternatives": [], + "needs_beleg": true, + "ust_abzug": false + }, + { + "mcc": "6051", + "mcc_name": "Non-Financial Institutions — Foreign Currency, Money Orders", + "category": "Financial", + "skr03": { + "primary": "4970", + "confidence": "high" + }, + "skr04_primary": "6855", + "alternatives": [], + "needs_beleg": true, + "ust_abzug": false + }, + { + "mcc": "6211", + "mcc_name": "Security Brokers/Dealers", + "category": "Financial", + "skr03": { + "primary": "4970", + "confidence": "medium" + }, + "skr04_primary": "6855", + "alternatives": [], + "needs_beleg": true, + "ust_abzug": false + }, + { + "mcc": "6300", + "mcc_name": "Insurance Sales, Underwriting, Premiums", + "category": "Insurance", + "skr03": { + "primary": "4360", + "confidence": "high" + }, + "skr04_primary": "6400", + "alternatives": [ + { + "konto": "4520", + "condition": "If Kfz-Versicherung" + } + ], + "needs_beleg": true, + "ust_abzug": false, + "notes": "Insurance premiums are VAT-exempt in Germany" + }, + { + "mcc": "6399", + "mcc_name": "Insurance — Not Elsewhere Classified", + "category": "Insurance", + "skr03": { + "primary": "4360", + "confidence": "medium" + }, + "skr04_primary": "6400", + "alternatives": [], + "needs_beleg": true, + "ust_abzug": false + }, + { + "mcc": "6513", + "mcc_name": "Real Estate Agents and Managers — Rentals", + "category": "Real Estate", + "skr03": { + "primary": "4210", + "confidence": "high" + }, + "skr04_primary": "6310", + "alternatives": [], + "needs_beleg": true, + "ust_abzug": true + }, + { + "mcc": "7011", + "mcc_name": "Lodging — Hotels, Motels, Resorts", + "category": "Travel", + "skr03": { + "primary": "4676", + "confidence": "high" + }, + "skr04_primary": "6680", + "alternatives": [ + { + "konto": "4666", + "condition": "If employee travel" + } + ], + "needs_beleg": true, + "ust_abzug": true, + "notes": "Hotel room: 7% USt. Additional services (breakfast, minibar): 19% USt" + }, + { + "mcc": "7012", + "mcc_name": "Timeshares", + "category": "Travel", + "skr03": { + "primary": "4676", + "confidence": "medium" + }, + "skr04_primary": "6680", + "alternatives": [], + "needs_beleg": true, + "ust_abzug": true + }, + { + "mcc": "7032", + "mcc_name": "Sporting, Recreational Camps", + "category": "Recreation", + "skr03": { + "primary": "1800", + "confidence": "high" + }, + "skr04_primary": "2100", + "alternatives": [ + { + "konto": "4140", + "condition": "If company team event" + } + ], + "needs_beleg": false, + "ust_abzug": false + }, + { + "mcc": "7210", + "mcc_name": "Laundry, Cleaning, Garment Services", + "category": "Services", + "skr03": { + "primary": "4250", + "confidence": "medium" + }, + "skr04_primary": "6335", + "alternatives": [ + { + "konto": "1800", + "condition": "If personal" + } + ], + "needs_beleg": true, + "ust_abzug": true + }, + { + "mcc": "7211", + "mcc_name": "Laundry Services — Family and Commercial", + "category": "Services", + "skr03": { + "primary": "4250", + "confidence": "medium" + }, + "skr04_primary": "6335", + "alternatives": [], + "needs_beleg": true, + "ust_abzug": true + }, + { + "mcc": "7216", + "mcc_name": "Dry Cleaners", + "category": "Services", + "skr03": { + "primary": "4900", + "confidence": "low" + }, + "skr04_primary": "6300", + "alternatives": [ + { + "konto": "1800", + "condition": "If personal" + } + ], + "needs_beleg": true, + "ust_abzug": true + }, + { + "mcc": "7230", + "mcc_name": "Barber and Beauty Shops", + "category": "Services", + "skr03": { + "primary": "1800", + "confidence": "high" + }, + "skr04_primary": "2100", + "alternatives": [], + "needs_beleg": false, + "ust_abzug": false + }, + { + "mcc": "7251", + "mcc_name": "Shoe Repair, Hat Cleaning", + "category": "Services", + "skr03": { + "primary": "4900", + "confidence": "low" + }, + "skr04_primary": "6300", + "alternatives": [], + "needs_beleg": true, + "ust_abzug": true + }, + { + "mcc": "7261", + "mcc_name": "Funeral Services, Crematories", + "category": "Services", + "skr03": { + "primary": "1800", + "confidence": "high" + }, + "skr04_primary": "2100", + "alternatives": [], + "needs_beleg": false, + "ust_abzug": false + }, + { + "mcc": "7273", + "mcc_name": "Dating and Escort Services", + "category": "Services", + "skr03": { + "primary": "1800", + "confidence": "high" + }, + "skr04_primary": "2100", + "alternatives": [], + "needs_beleg": false, + "ust_abzug": false + }, + { + "mcc": "7276", + "mcc_name": "Tax Preparation Services", + "category": "Professional Services", + "skr03": { + "primary": "4955", + "confidence": "high" + }, + "skr04_primary": "6830", + "alternatives": [ + { + "konto": "4950", + "condition": "If general legal/tax advice" + } + ], + "needs_beleg": true, + "ust_abzug": true + }, + { + "mcc": "7277", + "mcc_name": "Counseling Services", + "category": "Professional Services", + "skr03": { + "primary": "4950", + "confidence": "medium" + }, + "skr04_primary": "6825", + "alternatives": [ + { + "konto": "4945", + "condition": "If coaching/training" + } + ], + "needs_beleg": true, + "ust_abzug": true + }, + { + "mcc": "7278", + "mcc_name": "Buying/Shopping Services", + "category": "Services", + "skr03": { + "primary": "4900", + "confidence": "low" + }, + "skr04_primary": "6300", + "alternatives": [], + "needs_beleg": true, + "ust_abzug": true + }, + { + "mcc": "7296", + "mcc_name": "Clothing Rental", + "category": "Services", + "skr03": { + "primary": "4960", + "confidence": "medium" + }, + "skr04_primary": "6835", + "alternatives": [], + "needs_beleg": true, + "ust_abzug": true + }, + { + "mcc": "7297", + "mcc_name": "Massage Parlors", + "category": "Services", + "skr03": { + "primary": "1800", + "confidence": "high" + }, + "skr04_primary": "2100", + "alternatives": [], + "needs_beleg": false, + "ust_abzug": false + }, + { + "mcc": "7298", + "mcc_name": "Health and Beauty Spas", + "category": "Services", + "skr03": { + "primary": "1800", + "confidence": "high" + }, + "skr04_primary": "2100", + "alternatives": [ + { + "konto": "4140", + "condition": "If company wellness for employees" + } + ], + "needs_beleg": false, + "ust_abzug": false + }, + { + "mcc": "7299", + "mcc_name": "Miscellaneous Recreation Services", + "category": "Services", + "skr03": { + "primary": "4210", + "confidence": "medium" + }, + "skr04_primary": "6310", + "alternatives": [ + { + "konto": "4900", + "condition": "If one-time service, not recurring space rental" + }, + { + "konto": "1800", + "condition": "If personal recreation" + } + ], + "needs_beleg": true, + "ust_abzug": true, + "notes": "Includes coworking spaces (WeWork, Spaces). For recurring coworking, use Miete (4210). For events/recreation, check business purpose." + }, + { + "mcc": "7311", + "mcc_name": "Advertising Services", + "category": "Business Services", + "skr03": { + "primary": "4600", + "confidence": "high" + }, + "skr04_primary": "6600", + "alternatives": [], + "needs_beleg": true, + "ust_abzug": true + }, + { + "mcc": "7321", + "mcc_name": "Consumer Credit Reporting Agencies", + "category": "Business Services", + "skr03": { + "primary": "4900", + "confidence": "medium" + }, + "skr04_primary": "6300", + "alternatives": [], + "needs_beleg": true, + "ust_abzug": true + }, + { + "mcc": "7333", + "mcc_name": "Commercial Photography, Art, Graphics", + "category": "Business Services", + "skr03": { + "primary": "4600", + "confidence": "high" + }, + "skr04_primary": "6600", + "alternatives": [ + { + "konto": "4946", + "condition": "If for client project (Fremdleistung)" + } + ], + "needs_beleg": true, + "ust_abzug": true + }, + { + "mcc": "7338", + "mcc_name": "Quick Copy, Reproduction, Blueprinting", + "category": "Business Services", + "skr03": { + "primary": "4930", + "confidence": "high" + }, + "skr04_primary": "6820", + "alternatives": [], + "needs_beleg": true, + "ust_abzug": true + }, + { + "mcc": "7339", + "mcc_name": "Stenographic and Secretarial Support Services", + "category": "Business Services", + "skr03": { + "primary": "4946", + "confidence": "high" + }, + "skr04_primary": "6835", + "alternatives": [], + "needs_beleg": true, + "ust_abzug": true + }, + { + "mcc": "7342", + "mcc_name": "Exterminating and Disinfecting Services", + "category": "Services", + "skr03": { + "primary": "4260", + "confidence": "high" + }, + "skr04_primary": "6340", + "alternatives": [], + "needs_beleg": true, + "ust_abzug": true + }, + { + "mcc": "7349", + "mcc_name": "Cleaning, Maintenance, Janitorial Services", + "category": "Services", + "skr03": { + "primary": "4250", + "confidence": "high" + }, + "skr04_primary": "6335", + "alternatives": [], + "needs_beleg": true, + "ust_abzug": true + }, + { + "mcc": "7361", + "mcc_name": "Employment Agencies, Temporary Help", + "category": "Business Services", + "skr03": { + "primary": "4946", + "confidence": "high" + }, + "skr04_primary": "6835", + "alternatives": [ + { + "konto": "4190", + "condition": "If treated as Aushilfslöhne" + } + ], + "needs_beleg": true, + "ust_abzug": true + }, + { + "mcc": "7372", + "mcc_name": "Computer Programming, Data Processing", + "category": "Technology", + "skr03": { + "primary": "4946", + "confidence": "high" + }, + "skr04_primary": "6835", + "alternatives": [ + { + "konto": "4969", + "condition": "If SaaS/software license" + }, + { + "konto": "3100", + "condition": "If subcontracted development for client" + } + ], + "needs_beleg": true, + "ust_abzug": true + }, + { + "mcc": "7375", + "mcc_name": "Information Retrieval Services", + "category": "Technology", + "skr03": { + "primary": "4969", + "confidence": "medium" + }, + "skr04_primary": "6838", + "alternatives": [ + { + "konto": "4946", + "condition": "If one-time service, not subscription" + } + ], + "needs_beleg": true, + "ust_abzug": true + }, + { + "mcc": "7379", + "mcc_name": "Computer Maintenance and Repair", + "category": "Technology", + "skr03": { + "primary": "4805", + "confidence": "high" + }, + "skr04_primary": "6475", + "alternatives": [], + "needs_beleg": true, + "ust_abzug": true + }, + { + "mcc": "7392", + "mcc_name": "Management, Consulting, Public Relations", + "category": "Professional Services", + "skr03": { + "primary": "4950", + "confidence": "high" + }, + "skr04_primary": "6825", + "alternatives": [ + { + "konto": "3100", + "condition": "If subcontracted for client project" + } + ], + "needs_beleg": true, + "ust_abzug": true + }, + { + "mcc": "7393", + "mcc_name": "Protective and Security Services", + "category": "Services", + "skr03": { + "primary": "4900", + "confidence": "medium" + }, + "skr04_primary": "6300", + "alternatives": [], + "needs_beleg": true, + "ust_abzug": true + }, + { + "mcc": "7394", + "mcc_name": "Equipment, Tool, Furniture Rental and Leasing", + "category": "Services", + "skr03": { + "primary": "4960", + "confidence": "high" + }, + "skr04_primary": "6835", + "alternatives": [], + "needs_beleg": true, + "ust_abzug": true + }, + { + "mcc": "7395", + "mcc_name": "Photofinishing Laboratories, Photo Developing", + "category": "Services", + "skr03": { + "primary": "4600", + "confidence": "medium" + }, + "skr04_primary": "6600", + "alternatives": [ + { + "konto": "4930", + "condition": "If ID photos or similar" + } + ], + "needs_beleg": true, + "ust_abzug": true + }, + { + "mcc": "7399", + "mcc_name": "Business Services — Not Elsewhere Classified", + "category": "Business Services", + "skr03": { + "primary": "4946", + "confidence": "medium" + }, + "skr04_primary": "6835", + "alternatives": [], + "needs_beleg": true, + "ust_abzug": true + }, + { + "mcc": "7512", + "mcc_name": "Automobile Rental Agency", + "category": "Transportation", + "skr03": { + "primary": "4570", + "confidence": "high" + }, + "skr04_primary": "6570", + "alternatives": [], + "needs_beleg": true, + "ust_abzug": true + }, + { + "mcc": "7513", + "mcc_name": "Truck and Utility Trailer Rentals", + "category": "Transportation", + "skr03": { + "primary": "4570", + "confidence": "high" + }, + "skr04_primary": "6570", + "alternatives": [], + "needs_beleg": true, + "ust_abzug": true + }, + { + "mcc": "7519", + "mcc_name": "Motor Home and Recreational Vehicle Rentals", + "category": "Transportation", + "skr03": { + "primary": "4570", + "confidence": "medium" + }, + "skr04_primary": "6570", + "alternatives": [ + { + "konto": "1800", + "condition": "If personal vacation" + } + ], + "needs_beleg": true, + "ust_abzug": true + }, + { + "mcc": "7523", + "mcc_name": "Parking Lots, Garages", + "category": "Transportation", + "skr03": { + "primary": "4530", + "confidence": "high" + }, + "skr04_primary": "6530", + "alternatives": [ + { + "konto": "4673", + "condition": "If during business trip" + } + ], + "needs_beleg": true, + "ust_abzug": true + }, + { + "mcc": "7531", + "mcc_name": "Automotive Body Repair Shops", + "category": "Automotive", + "skr03": { + "primary": "4540", + "confidence": "high" + }, + "skr04_primary": "6545", + "alternatives": [], + "needs_beleg": true, + "ust_abzug": true + }, + { + "mcc": "7534", + "mcc_name": "Tire Re-treading and Repair Shops", + "category": "Automotive", + "skr03": { + "primary": "4530", + "confidence": "high" + }, + "skr04_primary": "6530", + "alternatives": [], + "needs_beleg": true, + "ust_abzug": true + }, + { + "mcc": "7535", + "mcc_name": "Automotive Paint Shops", + "category": "Automotive", + "skr03": { + "primary": "4540", + "confidence": "high" + }, + "skr04_primary": "6545", + "alternatives": [], + "needs_beleg": true, + "ust_abzug": true + }, + { + "mcc": "7538", + "mcc_name": "Automotive Service Shops", + "category": "Automotive", + "skr03": { + "primary": "4540", + "confidence": "high" + }, + "skr04_primary": "6545", + "alternatives": [], + "needs_beleg": true, + "ust_abzug": true + }, + { + "mcc": "7542", + "mcc_name": "Car Washes", + "category": "Automotive", + "skr03": { + "primary": "4530", + "confidence": "high" + }, + "skr04_primary": "6530", + "alternatives": [], + "needs_beleg": true, + "ust_abzug": true + }, + { + "mcc": "7549", + "mcc_name": "Towing Services", + "category": "Automotive", + "skr03": { + "primary": "4540", + "confidence": "high" + }, + "skr04_primary": "6545", + "alternatives": [], + "needs_beleg": true, + "ust_abzug": true + }, + { + "mcc": "7622", + "mcc_name": "Electronics Repair Shops", + "category": "Services", + "skr03": { + "primary": "4800", + "confidence": "high" + }, + "skr04_primary": "6460", + "alternatives": [ + { + "konto": "4805", + "condition": "If IT equipment repair" + } + ], + "needs_beleg": true, + "ust_abzug": true + }, + { + "mcc": "7623", + "mcc_name": "A/C, Refrigeration Repair", + "category": "Services", + "skr03": { + "primary": "4260", + "confidence": "high" + }, + "skr04_primary": "6340", + "alternatives": [], + "needs_beleg": true, + "ust_abzug": true + }, + { + "mcc": "7629", + "mcc_name": "Electrical/Small Appliance Repair", + "category": "Services", + "skr03": { + "primary": "4800", + "confidence": "high" + }, + "skr04_primary": "6460", + "alternatives": [], + "needs_beleg": true, + "ust_abzug": true + }, + { + "mcc": "7631", + "mcc_name": "Watch, Clock, Jewelry Repair", + "category": "Services", + "skr03": { + "primary": "1800", + "confidence": "high" + }, + "skr04_primary": "2100", + "alternatives": [], + "needs_beleg": false, + "ust_abzug": false + }, + { + "mcc": "7641", + "mcc_name": "Furniture Repair, Refinishing", + "category": "Services", + "skr03": { + "primary": "4800", + "confidence": "medium" + }, + "skr04_primary": "6460", + "alternatives": [ + { + "konto": "1800", + "condition": "If personal furniture" + } + ], + "needs_beleg": true, + "ust_abzug": true + }, + { + "mcc": "7699", + "mcc_name": "Miscellaneous Repair Shops", + "category": "Services", + "skr03": { + "primary": "4800", + "confidence": "medium" + }, + "skr04_primary": "6460", + "alternatives": [], + "needs_beleg": true, + "ust_abzug": true + }, + { + "mcc": "7829", + "mcc_name": "Motion Picture/Video Tape Production and Distribution", + "category": "Entertainment", + "skr03": { + "primary": "4600", + "confidence": "medium" + }, + "skr04_primary": "6600", + "alternatives": [ + { + "konto": "4946", + "condition": "If production service for client" + } + ], + "needs_beleg": true, + "ust_abzug": true + }, + { + "mcc": "7832", + "mcc_name": "Motion Picture Theaters", + "category": "Entertainment", + "skr03": { + "primary": "1800", + "confidence": "high" + }, + "skr04_primary": "2100", + "alternatives": [ + { + "konto": "4640", + "condition": "If client entertainment" + } + ], + "needs_beleg": false, + "ust_abzug": false + }, + { + "mcc": "7841", + "mcc_name": "Video Tape Rental Stores", + "category": "Entertainment", + "skr03": { + "primary": "1800", + "confidence": "high" + }, + "skr04_primary": "2100", + "alternatives": [], + "needs_beleg": false, + "ust_abzug": false + }, + { + "mcc": "7911", + "mcc_name": "Dance Halls, Schools, Studios", + "category": "Entertainment", + "skr03": { + "primary": "1800", + "confidence": "high" + }, + "skr04_primary": "2100", + "alternatives": [ + { + "konto": "4140", + "condition": "If company event" + } + ], + "needs_beleg": false, + "ust_abzug": false + }, + { + "mcc": "7922", + "mcc_name": "Theatrical Producers, Ticket Agencies", + "category": "Entertainment", + "skr03": { + "primary": "4640", + "confidence": "medium" + }, + "skr04_primary": "6630", + "alternatives": [ + { + "konto": "1800", + "condition": "If personal" + } + ], + "needs_beleg": true, + "ust_abzug": true + }, + { + "mcc": "7929", + "mcc_name": "Bands, Orchestras, Entertainment", + "category": "Entertainment", + "skr03": { + "primary": "4640", + "confidence": "medium" + }, + "skr04_primary": "6630", + "alternatives": [ + { + "konto": "4946", + "condition": "If hired for company event" + } + ], + "needs_beleg": true, + "ust_abzug": true + }, + { + "mcc": "7932", + "mcc_name": "Billiard/Pool Establishments", + "category": "Entertainment", + "skr03": { + "primary": "1800", + "confidence": "high" + }, + "skr04_primary": "2100", + "alternatives": [], + "needs_beleg": false, + "ust_abzug": false + }, + { + "mcc": "7941", + "mcc_name": "Athletic Fields, Commercial Sports", + "category": "Entertainment", + "skr03": { + "primary": "1800", + "confidence": "high" + }, + "skr04_primary": "2100", + "alternatives": [ + { + "konto": "4140", + "condition": "If company team event" + } + ], + "needs_beleg": false, + "ust_abzug": false + }, + { + "mcc": "7991", + "mcc_name": "Tourist Attractions and Exhibits", + "category": "Entertainment", + "skr03": { + "primary": "1800", + "confidence": "high" + }, + "skr04_primary": "2100", + "alternatives": [ + { + "konto": "4640", + "condition": "If client entertainment" + } + ], + "needs_beleg": false, + "ust_abzug": false + }, + { + "mcc": "7992", + "mcc_name": "Golf Courses — Public", + "category": "Entertainment", + "skr03": { + "primary": "1800", + "confidence": "high" + }, + "skr04_primary": "2100", + "alternatives": [ + { + "konto": "4640", + "condition": "If client entertainment" + } + ], + "needs_beleg": false, + "ust_abzug": false + }, + { + "mcc": "7993", + "mcc_name": "Video Amusement Game Supplies", + "category": "Entertainment", + "skr03": { + "primary": "1800", + "confidence": "high" + }, + "skr04_primary": "2100", + "alternatives": [], + "needs_beleg": false, + "ust_abzug": false + }, + { + "mcc": "7994", + "mcc_name": "Video Game Arcades", + "category": "Entertainment", + "skr03": { + "primary": "1800", + "confidence": "high" + }, + "skr04_primary": "2100", + "alternatives": [], + "needs_beleg": false, + "ust_abzug": false + }, + { + "mcc": "7995", + "mcc_name": "Gambling", + "category": "Entertainment", + "skr03": { + "primary": "1800", + "confidence": "high" + }, + "skr04_primary": "2100", + "alternatives": [], + "needs_beleg": false, + "ust_abzug": false, + "notes": "Never deductible as business expense" + }, + { + "mcc": "7996", + "mcc_name": "Amusement Parks, Carnivals", + "category": "Entertainment", + "skr03": { + "primary": "1800", + "confidence": "high" + }, + "skr04_primary": "2100", + "alternatives": [ + { + "konto": "4140", + "condition": "If company event" + } + ], + "needs_beleg": false, + "ust_abzug": false + }, + { + "mcc": "7997", + "mcc_name": "Membership Clubs, Country Clubs", + "category": "Entertainment", + "skr03": { + "primary": "4380", + "confidence": "medium" + }, + "skr04_primary": "6420", + "alternatives": [ + { + "konto": "1800", + "condition": "If personal" + } + ], + "needs_beleg": true, + "ust_abzug": false, + "notes": "Club memberships often non-deductible unless clearly business-related" + }, + { + "mcc": "7998", + "mcc_name": "Aquariums, Seaquariums, Dolphinariums", + "category": "Entertainment", + "skr03": { + "primary": "1800", + "confidence": "high" + }, + "skr04_primary": "2100", + "alternatives": [], + "needs_beleg": false, + "ust_abzug": false + }, + { + "mcc": "7999", + "mcc_name": "Recreation Services — Not Elsewhere Classified", + "category": "Entertainment", + "skr03": { + "primary": "1800", + "confidence": "high" + }, + "skr04_primary": "2100", + "alternatives": [ + { + "konto": "4140", + "condition": "If company event" + } + ], + "needs_beleg": false, + "ust_abzug": false + }, + { + "mcc": "8011", + "mcc_name": "Doctors", + "category": "Health", + "skr03": { + "primary": "1800", + "confidence": "high" + }, + "skr04_primary": "2100", + "alternatives": [ + { + "konto": "4946", + "condition": "If occupational health for employees (Arbeitsmedizin)" + } + ], + "needs_beleg": false, + "ust_abzug": false + }, + { + "mcc": "8021", + "mcc_name": "Dentists, Orthodontists", + "category": "Health", + "skr03": { + "primary": "1800", + "confidence": "high" + }, + "skr04_primary": "2100", + "alternatives": [], + "needs_beleg": false, + "ust_abzug": false + }, + { + "mcc": "8031", + "mcc_name": "Osteopaths", + "category": "Health", + "skr03": { + "primary": "1800", + "confidence": "high" + }, + "skr04_primary": "2100", + "alternatives": [], + "needs_beleg": false, + "ust_abzug": false + }, + { + "mcc": "8041", + "mcc_name": "Chiropractors", + "category": "Health", + "skr03": { + "primary": "1800", + "confidence": "high" + }, + "skr04_primary": "2100", + "alternatives": [], + "needs_beleg": false, + "ust_abzug": false + }, + { + "mcc": "8042", + "mcc_name": "Optometrists, Ophthalmologists", + "category": "Health", + "skr03": { + "primary": "1800", + "confidence": "high" + }, + "skr04_primary": "2100", + "alternatives": [], + "needs_beleg": false, + "ust_abzug": false + }, + { + "mcc": "8043", + "mcc_name": "Opticians, Optical Goods, Eyeglasses", + "category": "Health", + "skr03": { + "primary": "1800", + "confidence": "high" + }, + "skr04_primary": "2100", + "alternatives": [], + "needs_beleg": false, + "ust_abzug": false + }, + { + "mcc": "8049", + "mcc_name": "Podiatrists/Chiropodists", + "category": "Health", + "skr03": { + "primary": "1800", + "confidence": "high" + }, + "skr04_primary": "2100", + "alternatives": [], + "needs_beleg": false, + "ust_abzug": false + }, + { + "mcc": "8050", + "mcc_name": "Nursing/Personal Care Facilities", + "category": "Health", + "skr03": { + "primary": "1800", + "confidence": "high" + }, + "skr04_primary": "2100", + "alternatives": [], + "needs_beleg": false, + "ust_abzug": false + }, + { + "mcc": "8062", + "mcc_name": "Hospitals", + "category": "Health", + "skr03": { + "primary": "1800", + "confidence": "high" + }, + "skr04_primary": "2100", + "alternatives": [], + "needs_beleg": false, + "ust_abzug": false + }, + { + "mcc": "8071", + "mcc_name": "Medical and Dental Labs", + "category": "Health", + "skr03": { + "primary": "1800", + "confidence": "high" + }, + "skr04_primary": "2100", + "alternatives": [], + "needs_beleg": false, + "ust_abzug": false + }, + { + "mcc": "8099", + "mcc_name": "Medical Services, Health Practitioners", + "category": "Health", + "skr03": { + "primary": "1800", + "confidence": "high" + }, + "skr04_primary": "2100", + "alternatives": [ + { + "konto": "4946", + "condition": "If Arbeitsmedizin" + } + ], + "needs_beleg": false, + "ust_abzug": false + }, + { + "mcc": "8111", + "mcc_name": "Legal Services, Attorneys", + "category": "Professional Services", + "skr03": { + "primary": "4950", + "confidence": "high" + }, + "skr04_primary": "6825", + "alternatives": [], + "needs_beleg": true, + "ust_abzug": true + }, + { + "mcc": "8211", + "mcc_name": "Elementary and Secondary Schools", + "category": "Education", + "skr03": { + "primary": "1800", + "confidence": "high" + }, + "skr04_primary": "2100", + "alternatives": [], + "needs_beleg": false, + "ust_abzug": false + }, + { + "mcc": "8220", + "mcc_name": "Colleges, Universities", + "category": "Education", + "skr03": { + "primary": "4945", + "confidence": "medium" + }, + "skr04_primary": "6830", + "alternatives": [ + { + "konto": "1800", + "condition": "If personal education" + } + ], + "needs_beleg": true, + "ust_abzug": true, + "notes": "Deductible only if directly business-related (Fortbildung, not Ausbildung)" + }, + { + "mcc": "8241", + "mcc_name": "Correspondence Schools", + "category": "Education", + "skr03": { + "primary": "4945", + "confidence": "medium" + }, + "skr04_primary": "6830", + "alternatives": [ + { + "konto": "1800", + "condition": "If personal" + } + ], + "needs_beleg": true, + "ust_abzug": true + }, + { + "mcc": "8244", + "mcc_name": "Business and Secretarial Schools", + "category": "Education", + "skr03": { + "primary": "4945", + "confidence": "high" + }, + "skr04_primary": "6830", + "alternatives": [], + "needs_beleg": true, + "ust_abzug": true + }, + { + "mcc": "8249", + "mcc_name": "Vocational/Trade Schools", + "category": "Education", + "skr03": { + "primary": "4945", + "confidence": "high" + }, + "skr04_primary": "6830", + "alternatives": [], + "needs_beleg": true, + "ust_abzug": true + }, + { + "mcc": "8299", + "mcc_name": "Educational Services — Not Elsewhere Classified", + "category": "Education", + "skr03": { + "primary": "4945", + "confidence": "medium" + }, + "skr04_primary": "6830", + "alternatives": [], + "needs_beleg": true, + "ust_abzug": true + }, + { + "mcc": "8351", + "mcc_name": "Child Day Care Services", + "category": "Services", + "skr03": { + "primary": "1800", + "confidence": "high" + }, + "skr04_primary": "2100", + "alternatives": [], + "needs_beleg": false, + "ust_abzug": false + }, + { + "mcc": "8398", + "mcc_name": "Charitable and Social Service Organizations", + "category": "Non-Profit", + "skr03": { + "primary": "4900", + "confidence": "medium" + }, + "skr04_primary": "6300", + "alternatives": [], + "needs_beleg": true, + "ust_abzug": false, + "notes": "Donations may be deductible separately (Spenden)" + }, + { + "mcc": "8641", + "mcc_name": "Civic, Social, Fraternal Associations", + "category": "Membership", + "skr03": { + "primary": "4380", + "confidence": "high" + }, + "skr04_primary": "6420", + "alternatives": [], + "needs_beleg": true, + "ust_abzug": false + }, + { + "mcc": "8651", + "mcc_name": "Political Organizations", + "category": "Membership", + "skr03": { + "primary": "4380", + "confidence": "medium" + }, + "skr04_primary": "6420", + "alternatives": [], + "needs_beleg": true, + "ust_abzug": false + }, + { + "mcc": "8661", + "mcc_name": "Religious Organizations", + "category": "Non-Profit", + "skr03": { + "primary": "1800", + "confidence": "high" + }, + "skr04_primary": "2100", + "alternatives": [], + "needs_beleg": false, + "ust_abzug": false + }, + { + "mcc": "8675", + "mcc_name": "Automobile Associations", + "category": "Membership", + "skr03": { + "primary": "4380", + "confidence": "high" + }, + "skr04_primary": "6420", + "alternatives": [ + { + "konto": "4520", + "condition": "If roadside assistance portion" + } + ], + "needs_beleg": true, + "ust_abzug": false + }, + { + "mcc": "8699", + "mcc_name": "Membership Organizations — Not Elsewhere Classified", + "category": "Membership", + "skr03": { + "primary": "4380", + "confidence": "medium" + }, + "skr04_primary": "6420", + "alternatives": [], + "needs_beleg": true, + "ust_abzug": false + }, + { + "mcc": "8734", + "mcc_name": "Testing Laboratories", + "category": "Professional Services", + "skr03": { + "primary": "4946", + "confidence": "high" + }, + "skr04_primary": "6835", + "alternatives": [], + "needs_beleg": true, + "ust_abzug": true + }, + { + "mcc": "8742", + "mcc_name": "Management Consulting Services", + "category": "Professional Services", + "skr03": { + "primary": "4950", + "confidence": "high" + }, + "skr04_primary": "6825", + "alternatives": [], + "needs_beleg": true, + "ust_abzug": true + }, + { + "mcc": "8911", + "mcc_name": "Architectural, Engineering, Surveying Services", + "category": "Professional Services", + "skr03": { + "primary": "4946", + "confidence": "high" + }, + "skr04_primary": "6835", + "alternatives": [ + { + "konto": "4950", + "condition": "If advisory/consulting only" + } + ], + "needs_beleg": true, + "ust_abzug": true + }, + { + "mcc": "8931", + "mcc_name": "Accounting, Auditing, Bookkeeping Services", + "category": "Professional Services", + "skr03": { + "primary": "4955", + "confidence": "high" + }, + "skr04_primary": "6830", + "alternatives": [ + { + "konto": "4957", + "condition": "If audit (Prüfungskosten)" + } + ], + "needs_beleg": true, + "ust_abzug": true + }, + { + "mcc": "8999", + "mcc_name": "Professional Services — Not Elsewhere Classified", + "category": "Professional Services", + "skr03": { + "primary": "4946", + "confidence": "medium" + }, + "skr04_primary": "6835", + "alternatives": [], + "needs_beleg": true, + "ust_abzug": true + }, + { + "mcc": "9211", + "mcc_name": "Court Costs, Including Alimony and Child Support", + "category": "Government", + "skr03": { + "primary": "4950", + "confidence": "medium" + }, + "skr04_primary": "6825", + "alternatives": [ + { + "konto": "1800", + "condition": "If personal matter" + } + ], + "needs_beleg": true, + "ust_abzug": false + }, + { + "mcc": "9222", + "mcc_name": "Fines", + "category": "Government", + "skr03": { + "primary": "4900", + "confidence": "medium" + }, + "skr04_primary": "6300", + "alternatives": [], + "needs_beleg": true, + "ust_abzug": false, + "notes": "Fines (Bußgelder) are generally not deductible as business expense ACHTUNG: Nicht abzugsfähig bei der Gewinnermittlung (§4 Abs.5 Nr.8 EStG). Muss bei der Steuererklärung hinzugerechnet werden." + }, + { + "mcc": "9223", + "mcc_name": "Bail and Bond Payments", + "category": "Government", + "skr03": { + "primary": "1800", + "confidence": "high" + }, + "skr04_primary": "2100", + "alternatives": [], + "needs_beleg": true, + "ust_abzug": false + }, + { + "mcc": "9311", + "mcc_name": "Tax Payments — Government Agencies", + "category": "Government", + "skr03": { + "primary": "1780", + "confidence": "medium" + }, + "skr04_primary": "3820", + "alternatives": [ + { + "konto": "4320", + "condition": "If Gewerbesteuer" + }, + { + "konto": "2650", + "condition": "If Körperschaftsteuer" + } + ], + "needs_beleg": true, + "ust_abzug": false, + "notes": "Account depends on type of tax paid" + }, + { + "mcc": "9399", + "mcc_name": "Government Services — Not Elsewhere Classified", + "category": "Government", + "skr03": { + "primary": "4390", + "confidence": "medium" + }, + "skr04_primary": "6430", + "alternatives": [], + "needs_beleg": true, + "ust_abzug": false + }, + { + "mcc": "9402", + "mcc_name": "Postal Services — Government Only", + "category": "Government", + "skr03": { + "primary": "4910", + "confidence": "high" + }, + "skr04_primary": "6800", + "alternatives": [], + "needs_beleg": true, + "ust_abzug": false, + "notes": "Deutsche Post postal services are VAT-exempt (§4 Nr.11b UStG)" + }, + { + "mcc": "9405", + "mcc_name": "Intra-Government Purchases", + "category": "Government", + "skr03": { + "primary": "4390", + "confidence": "low" + }, + "skr04_primary": "6430", + "alternatives": [], + "needs_beleg": true, + "ust_abzug": false + } + ] +} \ No newline at end of file diff --git a/src/data/skr03.json b/src/data/skr03.json new file mode 100644 index 0000000..36dc780 --- /dev/null +++ b/src/data/skr03.json @@ -0,0 +1,3167 @@ +{ + "meta": { + "name": "SKR03", + "version": "2026.1", + "description": "Standardkontenrahmen 03 (Prozessgliederungsprinzip). Community-curated dataset.", + "gliederung": "Prozessgliederungsprinzip", + "source": "Curated from publicly available Kontenrahmen documentation. Not an official DATEV product.", + "license": "MIT", + "status": "draft — contributions and corrections welcome", + "sachkontenlaenge": 4, + "last_updated": "2026-04-03" + }, + "klassen": [ + { + "name": "Anlage- und Kapitalkonten", + "range": [ + 0, + 999 + ], + "klasse": 0 + }, + { + "name": "Finanz- und Privatkonten", + "range": [ + 1000, + 1999 + ], + "klasse": 1 + }, + { + "name": "Abgrenzungskonten", + "range": [ + 2000, + 2999 + ], + "klasse": 2 + }, + { + "name": "Wareneingangs- und Bestandskonten", + "range": [ + 3000, + 3999 + ], + "klasse": 3 + }, + { + "name": "Betriebliche Aufwendungen", + "range": [ + 4000, + 4999 + ], + "klasse": 4 + }, + { + "name": "Bestände an Erzeugnissen", + "range": [ + 7000, + 7999 + ], + "klasse": 7 + }, + { + "name": "Erlöskonten", + "range": [ + 8000, + 8999 + ], + "klasse": 8 + }, + { + "name": "Vortrags- und statistische Konten", + "range": [ + 9000, + 9999 + ], + "klasse": 9 + } + ], + "konten": [ + { + "konto": "0001", + "name": "Aufwendungen für die Ingangsetzung und Erweiterung des Geschäftsbetriebs", + "klasse": 0, + "typ": "aktiv", + "gruppe": "Immaterielle Vermögensgegenstände", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": null + }, + { + "konto": "0010", + "name": "Grundstücke, grundstücksgleiche Rechte", + "klasse": 0, + "typ": "aktiv", + "gruppe": "Immaterielle Vermögensgegenstände und Sachanlagen", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "0210" + }, + { + "konto": "0015", + "name": "Bauten auf eigenen Grundstücken", + "klasse": 0, + "typ": "aktiv", + "gruppe": "Immaterielle Vermögensgegenstände und Sachanlagen", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "0220" + }, + { + "konto": "0027", + "name": "Gebäude auf eigenen Grundstücken", + "klasse": 0, + "typ": "aktiv", + "gruppe": "Immaterielle Vermögensgegenstände und Sachanlagen", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "0240" + }, + { + "konto": "0030", + "name": "Grundstückseinrichtungen", + "klasse": 0, + "typ": "aktiv", + "gruppe": "Immaterielle Vermögensgegenstände und Sachanlagen", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "0280" + }, + { + "konto": "0050", + "name": "Einbauten in fremde Grundstücke", + "klasse": 0, + "typ": "aktiv", + "gruppe": "Immaterielle Vermögensgegenstände und Sachanlagen", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "0290" + }, + { + "konto": "0070", + "name": "Geleistete Anzahlungen auf immaterielle Vermögensgegenstände", + "klasse": 0, + "typ": "aktiv", + "gruppe": "Immaterielle Vermögensgegenstände", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "0190" + }, + { + "konto": "0085", + "name": "Geschäfts- oder Firmenwert (entgeltlich erworben)", + "klasse": 0, + "typ": "aktiv", + "gruppe": "Immaterielle Vermögensgegenstände", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "0150" + }, + { + "konto": "0100", + "name": "Konzessionen", + "klasse": 0, + "typ": "aktiv", + "gruppe": "Immaterielle Vermögensgegenstände", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "0100" + }, + { + "konto": "0110", + "name": "Gewerbliche Schutzrechte", + "klasse": 0, + "typ": "aktiv", + "gruppe": "Immaterielle Vermögensgegenstände", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "0110" + }, + { + "konto": "0115", + "name": "Ähnliche Rechte und Werte", + "klasse": 0, + "typ": "aktiv", + "gruppe": "Immaterielle Vermögensgegenstände", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "0115" + }, + { + "konto": "0120", + "name": "Lizenzen an gewerblichen Schutzrechten", + "klasse": 0, + "typ": "aktiv", + "gruppe": "Immaterielle Vermögensgegenstände", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "0120" + }, + { + "konto": "0135", + "name": "EDV-Software", + "klasse": 0, + "typ": "aktiv", + "gruppe": "Immaterielle Vermögensgegenstände", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "0135" + }, + { + "konto": "0150", + "name": "Geschäfts- oder Firmenwert", + "klasse": 0, + "typ": "aktiv", + "gruppe": "Immaterielle Vermögensgegenstände", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "0150" + }, + { + "konto": "0170", + "name": "Geleistete Anzahlungen auf immaterielle Vermögensgegenstände", + "klasse": 0, + "typ": "aktiv", + "gruppe": "Immaterielle Vermögensgegenstände", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "0190" + }, + { + "konto": "0200", + "name": "Technische Anlagen und Maschinen", + "klasse": 0, + "typ": "aktiv", + "gruppe": "Sachanlagen", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "0400" + }, + { + "konto": "0210", + "name": "Maschinen", + "klasse": 0, + "typ": "aktiv", + "gruppe": "Sachanlagen", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "0410" + }, + { + "konto": "0240", + "name": "Gebäude anderer Grundstücke", + "klasse": 0, + "typ": "aktiv", + "gruppe": "Sachanlagen", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "0260" + }, + { + "konto": "0280", + "name": "Grundstücksgleiche Rechte", + "klasse": 0, + "typ": "aktiv", + "gruppe": "Sachanlagen", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "0280" + }, + { + "konto": "0300", + "name": "Andere Anlagen, Betriebs- und Geschäftsausstattung", + "klasse": 0, + "typ": "aktiv", + "gruppe": "Sachanlagen", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "0500" + }, + { + "konto": "0310", + "name": "Betriebsvorrichtungen", + "klasse": 0, + "typ": "aktiv", + "gruppe": "Sachanlagen", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "0510" + }, + { + "konto": "0320", + "name": "PKW", + "klasse": 0, + "typ": "aktiv", + "gruppe": "Sachanlagen - Fahrzeuge", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "0520" + }, + { + "konto": "0330", + "name": "Sonstige Transportmittel", + "klasse": 0, + "typ": "aktiv", + "gruppe": "Sachanlagen - Fahrzeuge", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "0540" + }, + { + "konto": "0340", + "name": "Sonstige Betriebs- und Geschäftsausstattung", + "klasse": 0, + "typ": "aktiv", + "gruppe": "Sachanlagen", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "0580" + }, + { + "konto": "0350", + "name": "LKW", + "klasse": 0, + "typ": "aktiv", + "gruppe": "Sachanlagen - Fahrzeuge", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "0550" + }, + { + "konto": "0400", + "name": "Betriebsausstattung", + "klasse": 0, + "typ": "aktiv", + "gruppe": "Sachanlagen", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "0620" + }, + { + "konto": "0410", + "name": "Geschäftsausstattung", + "klasse": 0, + "typ": "aktiv", + "gruppe": "Sachanlagen", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "0630" + }, + { + "konto": "0420", + "name": "Büroeinrichtung", + "klasse": 0, + "typ": "aktiv", + "gruppe": "Sachanlagen", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "0640" + }, + { + "konto": "0440", + "name": "Ladeneinrichtung", + "klasse": 0, + "typ": "aktiv", + "gruppe": "Sachanlagen", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "0650" + }, + { + "konto": "0450", + "name": "Einbauten in fremde Grundstücke", + "klasse": 0, + "typ": "aktiv", + "gruppe": "Sachanlagen", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "0660" + }, + { + "konto": "0480", + "name": "Geringwertige Wirtschaftsgüter (GWG)", + "klasse": 0, + "typ": "aktiv", + "gruppe": "Sachanlagen", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "0670" + }, + { + "konto": "0485", + "name": "Sammelposten GWG (Pool)", + "klasse": 0, + "typ": "aktiv", + "gruppe": "Sachanlagen", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "0675" + }, + { + "konto": "0490", + "name": "Geleistete Anzahlungen und Anlagen im Bau", + "klasse": 0, + "typ": "aktiv", + "gruppe": "Sachanlagen", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "0690" + }, + { + "konto": "0500", + "name": "Anteile an Unternehmen, mit denen ein Beteiligungsverhältnis besteht", + "klasse": 0, + "typ": "aktiv", + "gruppe": "Finanzanlagen", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "0710" + }, + { + "konto": "0520", + "name": "Anteile an verbundenen Unternehmen", + "klasse": 0, + "typ": "aktiv", + "gruppe": "Finanzanlagen", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "0700" + }, + { + "konto": "0540", + "name": "Wertpapiere des Anlagevermögens", + "klasse": 0, + "typ": "aktiv", + "gruppe": "Finanzanlagen", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "0740" + }, + { + "konto": "0550", + "name": "Beteiligungen", + "klasse": 0, + "typ": "aktiv", + "gruppe": "Finanzanlagen", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "0730" + }, + { + "konto": "0560", + "name": "Langfristige Ausleihungen an verbundene Unternehmen", + "klasse": 0, + "typ": "aktiv", + "gruppe": "Finanzanlagen", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "0750" + }, + { + "konto": "0580", + "name": "Ausleihungen an verbundene Unternehmen", + "klasse": 0, + "typ": "aktiv", + "gruppe": "Finanzanlagen", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "0760" + }, + { + "konto": "0600", + "name": "Sonstige Vermögensgegenstände", + "klasse": 0, + "typ": "aktiv", + "gruppe": "Sonstige Vermögensgegenstände", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "0800" + }, + { + "konto": "0610", + "name": "Rückdeckungsansprüche aus Lebensversicherungen", + "klasse": 0, + "typ": "aktiv", + "gruppe": "Sonstige Vermögensgegenstände", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "0810" + }, + { + "konto": "0631", + "name": "Mietkaution", + "klasse": 0, + "typ": "aktiv", + "gruppe": "Sonstige Vermögensgegenstände", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "0830" + }, + { + "konto": "0650", + "name": "Kautionen", + "klasse": 0, + "typ": "aktiv", + "gruppe": "Sonstige Vermögensgegenstände", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "0840" + }, + { + "konto": "0690", + "name": "Sonstige Ausleihungen", + "klasse": 0, + "typ": "aktiv", + "gruppe": "Finanzanlagen", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "0790" + }, + { + "konto": "0700", + "name": "Pensionsrückstellungen", + "klasse": 0, + "typ": "passiv", + "gruppe": "Rückstellungen", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "3070" + }, + { + "konto": "0710", + "name": "Steuerrückstellungen", + "klasse": 0, + "typ": "passiv", + "gruppe": "Rückstellungen", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "3030" + }, + { + "konto": "0720", + "name": "Sonstige Rückstellungen", + "klasse": 0, + "typ": "passiv", + "gruppe": "Rückstellungen", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "3090" + }, + { + "konto": "0750", + "name": "Verbindlichkeiten gegenüber Kreditinstituten (langfristig)", + "klasse": 0, + "typ": "passiv", + "gruppe": "Verbindlichkeiten", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "3150" + }, + { + "konto": "0770", + "name": "Verbindlichkeiten aus Lieferungen und Leistungen (langfristig)", + "klasse": 0, + "typ": "passiv", + "gruppe": "Verbindlichkeiten", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "3300" + }, + { + "konto": "0790", + "name": "Sonstige Verbindlichkeiten (langfristig)", + "klasse": 0, + "typ": "passiv", + "gruppe": "Verbindlichkeiten", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "3500" + }, + { + "konto": "0800", + "name": "Gezeichnetes Kapital", + "klasse": 0, + "typ": "passiv", + "gruppe": "Eigenkapital", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "2900" + }, + { + "konto": "0810", + "name": "Gewinnvortrag", + "klasse": 0, + "typ": "passiv", + "gruppe": "Eigenkapital", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "2960" + }, + { + "konto": "0820", + "name": "Verlustvortrag", + "klasse": 0, + "typ": "passiv", + "gruppe": "Eigenkapital", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "2978" + }, + { + "konto": "0830", + "name": "Entnahmen", + "klasse": 0, + "typ": "aktiv", + "gruppe": "Eigenkapital", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "2100" + }, + { + "konto": "0840", + "name": "Kapitalrücklage", + "klasse": 0, + "typ": "passiv", + "gruppe": "Eigenkapital", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "2920" + }, + { + "konto": "0850", + "name": "Privatentnahmen allgemein", + "klasse": 0, + "typ": "aktiv", + "gruppe": "Privatkonten", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "2100" + }, + { + "konto": "0860", + "name": "Gewinnrücklage", + "klasse": 0, + "typ": "passiv", + "gruppe": "Eigenkapital", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "2950" + }, + { + "konto": "0880", + "name": "Gewinnvortrag vor Verwendung", + "klasse": 0, + "typ": "passiv", + "gruppe": "Eigenkapital", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "2970" + }, + { + "konto": "0890", + "name": "Verlustvortrag vor Verwendung", + "klasse": 0, + "typ": "passiv", + "gruppe": "Eigenkapital", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "2978" + }, + { + "konto": "0900", + "name": "Eigenkapital Einzelunternehmer (Festkapital)", + "klasse": 0, + "typ": "passiv", + "gruppe": "Eigenkapital", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "2000" + }, + { + "konto": "0920", + "name": "Privat (Entnahmen)", + "klasse": 0, + "typ": "aktiv", + "gruppe": "Privatkonten", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "2100" + }, + { + "konto": "0930", + "name": "Privat (Steuern)", + "klasse": 0, + "typ": "aktiv", + "gruppe": "Privatkonten", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "2150" + }, + { + "konto": "0950", + "name": "Privateinlagen", + "klasse": 0, + "typ": "passiv", + "gruppe": "Privatkonten", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "2180" + }, + { + "konto": "1000", + "name": "Kasse", + "klasse": 1, + "typ": "aktiv", + "gruppe": "Finanzkonten", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "1600" + }, + { + "konto": "1010", + "name": "Nebenkasse", + "klasse": 1, + "typ": "aktiv", + "gruppe": "Finanzkonten", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "1610" + }, + { + "konto": "1020", + "name": "Wechselkasse / Portokasse", + "klasse": 1, + "typ": "aktiv", + "gruppe": "Finanzkonten", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "1620" + }, + { + "konto": "1100", + "name": "Postbank", + "klasse": 1, + "typ": "aktiv", + "gruppe": "Finanzkonten", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "1700" + }, + { + "konto": "1140", + "name": "Festgeldkonto", + "klasse": 1, + "typ": "aktiv", + "gruppe": "Finanzkonten", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "1740" + }, + { + "konto": "1200", + "name": "Bank", + "klasse": 1, + "typ": "aktiv", + "gruppe": "Finanzkonten", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "1800" + }, + { + "konto": "1210", + "name": "Bank 2", + "klasse": 1, + "typ": "aktiv", + "gruppe": "Finanzkonten", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "1810" + }, + { + "konto": "1300", + "name": "Wechsel", + "klasse": 1, + "typ": "aktiv", + "gruppe": "Forderungen", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "1260" + }, + { + "konto": "1310", + "name": "Besitzwechsel", + "klasse": 1, + "typ": "aktiv", + "gruppe": "Forderungen", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "1270" + }, + { + "konto": "1350", + "name": "Schecks", + "klasse": 1, + "typ": "aktiv", + "gruppe": "Finanzkonten", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "1440" + }, + { + "konto": "1360", + "name": "Geldtransit", + "klasse": 1, + "typ": "aktiv", + "gruppe": "Finanzkonten", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "1460" + }, + { + "konto": "1370", + "name": "Lohn- und Gehaltsvorschüsse", + "klasse": 1, + "typ": "aktiv", + "gruppe": "Forderungen", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "1360" + }, + { + "konto": "1400", + "name": "Forderungen aus Lieferungen und Leistungen", + "klasse": 1, + "typ": "aktiv", + "gruppe": "Forderungen", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "1200" + }, + { + "konto": "1406", + "name": "Forderungen aus L+L (Restlaufzeit >1J)", + "klasse": 1, + "typ": "aktiv", + "gruppe": "Forderungen", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "1205" + }, + { + "konto": "1410", + "name": "Forderungen aus Lieferungen und Leistungen (ohne Kontokorrent)", + "klasse": 1, + "typ": "aktiv", + "gruppe": "Forderungen", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "1210" + }, + { + "konto": "1450", + "name": "Forderungen gegen verbundene Unternehmen", + "klasse": 1, + "typ": "aktiv", + "gruppe": "Forderungen", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "1240" + }, + { + "konto": "1460", + "name": "Forderungen gegen Gesellschafter", + "klasse": 1, + "typ": "aktiv", + "gruppe": "Forderungen", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "1250" + }, + { + "konto": "1500", + "name": "Sonstige Vermögensgegenstände", + "klasse": 1, + "typ": "aktiv", + "gruppe": "Sonstige Vermögensgegenstände", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "1300" + }, + { + "konto": "1510", + "name": "Forderungen gegen Personal", + "klasse": 1, + "typ": "aktiv", + "gruppe": "Sonstige Vermögensgegenstände", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "1310" + }, + { + "konto": "1518", + "name": "Vorsteuer laufendes Jahr", + "klasse": 1, + "typ": "aktiv", + "gruppe": "Vorsteuer", + "ust_relevant": true, + "steuerschluessel": [], + "skr04": "1400" + }, + { + "konto": "1520", + "name": "Forderungen gegen GmbH-Gesellschafter", + "klasse": 1, + "typ": "aktiv", + "gruppe": "Sonstige Vermögensgegenstände", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "1320" + }, + { + "konto": "1540", + "name": "Geldtransit", + "klasse": 1, + "typ": "aktiv", + "gruppe": "Finanzkonten", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "1460" + }, + { + "konto": "1545", + "name": "Verrechnungskonto Lohn und Gehalt", + "klasse": 1, + "typ": "aktiv", + "gruppe": "Sonstige Vermögensgegenstände", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "1440" + }, + { + "konto": "1548", + "name": "Vorsteuer im Folgejahr abziehbar", + "klasse": 1, + "typ": "aktiv", + "gruppe": "Vorsteuer", + "ust_relevant": true, + "steuerschluessel": [], + "skr04": "1434" + }, + { + "konto": "1560", + "name": "Aufzuteilende Vorsteuer", + "klasse": 1, + "typ": "aktiv", + "gruppe": "Vorsteuer", + "ust_relevant": true, + "steuerschluessel": [], + "skr04": "1450" + }, + { + "konto": "1570", + "name": "Abziehbare Vorsteuer", + "klasse": 1, + "typ": "aktiv", + "gruppe": "Vorsteuer", + "ust_relevant": true, + "steuerschluessel": [], + "skr04": "1400" + }, + { + "konto": "1571", + "name": "Abziehbare Vorsteuer 7%", + "klasse": 1, + "typ": "aktiv", + "gruppe": "Vorsteuer", + "ust_relevant": true, + "steuerschluessel": [], + "skr04": "1401" + }, + { + "konto": "1576", + "name": "Abziehbare Vorsteuer 19%", + "klasse": 1, + "typ": "aktiv", + "gruppe": "Vorsteuer", + "ust_relevant": true, + "steuerschluessel": [], + "skr04": "1406" + }, + { + "konto": "1577", + "name": "Abziehbare Vorsteuer §13b UStG", + "klasse": 1, + "typ": "aktiv", + "gruppe": "Vorsteuer", + "ust_relevant": true, + "steuerschluessel": [], + "skr04": "1407" + }, + { + "konto": "1580", + "name": "Vorsteuer aus innergemeinschaftlichem Erwerb 19%", + "klasse": 1, + "typ": "aktiv", + "gruppe": "Vorsteuer", + "ust_relevant": true, + "steuerschluessel": [], + "skr04": "1407" + }, + { + "konto": "1588", + "name": "Vorsteuer aus §13b UStG 19%", + "klasse": 1, + "typ": "aktiv", + "gruppe": "Vorsteuer", + "ust_relevant": true, + "steuerschluessel": [], + "skr04": "1408" + }, + { + "konto": "1590", + "name": "Durchlaufende Posten", + "klasse": 1, + "typ": "aktiv", + "gruppe": "Sonstige Vermögensgegenstände", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "1490" + }, + { + "konto": "1600", + "name": "Verbindlichkeiten aus Lieferungen und Leistungen", + "klasse": 1, + "typ": "passiv", + "gruppe": "Verbindlichkeiten", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "3300" + }, + { + "konto": "1610", + "name": "Verbindlichkeiten aus Lieferungen und Leistungen (ohne Kontokorrent)", + "klasse": 1, + "typ": "passiv", + "gruppe": "Verbindlichkeiten", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "3310" + }, + { + "konto": "1700", + "name": "Sonstige Verbindlichkeiten", + "klasse": 1, + "typ": "passiv", + "gruppe": "Verbindlichkeiten", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "3500" + }, + { + "konto": "1710", + "name": "Erhaltene Anzahlungen auf Bestellungen", + "klasse": 1, + "typ": "passiv", + "gruppe": "Verbindlichkeiten", + "ust_relevant": true, + "steuerschluessel": [], + "skr04": "3260" + }, + { + "konto": "1720", + "name": "Verbindlichkeiten gegen verbundene Unternehmen", + "klasse": 1, + "typ": "passiv", + "gruppe": "Verbindlichkeiten", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "3400" + }, + { + "konto": "1730", + "name": "Verbindlichkeiten gegenüber Kreditinstituten (kurzfristig)", + "klasse": 1, + "typ": "passiv", + "gruppe": "Verbindlichkeiten", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "3150" + }, + { + "konto": "1740", + "name": "Verbindlichkeiten aus Steuern und Abgaben", + "klasse": 1, + "typ": "passiv", + "gruppe": "Verbindlichkeiten", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "3520" + }, + { + "konto": "1741", + "name": "Verbindlichkeiten aus Lohn und Gehalt", + "klasse": 1, + "typ": "passiv", + "gruppe": "Verbindlichkeiten", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "3720" + }, + { + "konto": "1750", + "name": "Verbindlichkeiten im Rahmen der sozialen Sicherheit", + "klasse": 1, + "typ": "passiv", + "gruppe": "Verbindlichkeiten", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "3740" + }, + { + "konto": "1755", + "name": "Lohnsteuer", + "klasse": 1, + "typ": "passiv", + "gruppe": "Verbindlichkeiten", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "3730" + }, + { + "konto": "1756", + "name": "Solidaritätszuschlag", + "klasse": 1, + "typ": "passiv", + "gruppe": "Verbindlichkeiten", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "3731" + }, + { + "konto": "1757", + "name": "Kirchensteuer", + "klasse": 1, + "typ": "passiv", + "gruppe": "Verbindlichkeiten", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "3732" + }, + { + "konto": "1760", + "name": "Umsatzsteuervorauszahlung", + "klasse": 1, + "typ": "passiv", + "gruppe": "Verbindlichkeiten", + "ust_relevant": true, + "steuerschluessel": [], + "skr04": "3820" + }, + { + "konto": "1770", + "name": "Umsatzsteuer 7%", + "klasse": 1, + "typ": "passiv", + "gruppe": "Umsatzsteuer", + "ust_relevant": true, + "steuerschluessel": [], + "skr04": "3801" + }, + { + "konto": "1771", + "name": "Umsatzsteuer frühere Jahre", + "klasse": 1, + "typ": "passiv", + "gruppe": "Umsatzsteuer", + "ust_relevant": true, + "steuerschluessel": [], + "skr04": "3845" + }, + { + "konto": "1775", + "name": "Umsatzsteuer 19%", + "klasse": 1, + "typ": "passiv", + "gruppe": "Umsatzsteuer", + "ust_relevant": true, + "steuerschluessel": [], + "skr04": "3806" + }, + { + "konto": "1776", + "name": "Umsatzsteuer aus innergemeinschaftlichem Erwerb 19%", + "klasse": 1, + "typ": "passiv", + "gruppe": "Umsatzsteuer", + "ust_relevant": true, + "steuerschluessel": [], + "skr04": "3807" + }, + { + "konto": "1780", + "name": "Umsatzsteuer-Vorauszahlungen", + "klasse": 1, + "typ": "passiv", + "gruppe": "Umsatzsteuer", + "ust_relevant": true, + "steuerschluessel": [], + "skr04": "3820" + }, + { + "konto": "1789", + "name": "Umsatzsteuer laufendes Jahr", + "klasse": 1, + "typ": "passiv", + "gruppe": "Umsatzsteuer", + "ust_relevant": true, + "steuerschluessel": [], + "skr04": "3841" + }, + { + "konto": "1790", + "name": "Umsatzsteuer Vorjahr", + "klasse": 1, + "typ": "passiv", + "gruppe": "Umsatzsteuer", + "ust_relevant": true, + "steuerschluessel": [], + "skr04": "3845" + }, + { + "konto": "1800", + "name": "Privatentnahmen allgemein", + "klasse": 1, + "typ": "aktiv", + "gruppe": "Privatkonten", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "2100" + }, + { + "konto": "1810", + "name": "Privatsteuern", + "klasse": 1, + "typ": "aktiv", + "gruppe": "Privatkonten", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "2150" + }, + { + "konto": "1890", + "name": "Privateinlagen", + "klasse": 1, + "typ": "passiv", + "gruppe": "Privatkonten", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "2180" + }, + { + "konto": "1900", + "name": "Privatentnahmen allgemein", + "klasse": 1, + "typ": "aktiv", + "gruppe": "Privatkonten", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "2100" + }, + { + "konto": "1910", + "name": "Privatsteuern", + "klasse": 1, + "typ": "aktiv", + "gruppe": "Privatkonten", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "2150" + }, + { + "konto": "1920", + "name": "Sonderausgaben beschränkt abzugsfähig", + "klasse": 1, + "typ": "aktiv", + "gruppe": "Privatkonten", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "2200" + }, + { + "konto": "1930", + "name": "Sonderausgaben unbeschränkt abzugsfähig", + "klasse": 1, + "typ": "aktiv", + "gruppe": "Privatkonten", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "2300" + }, + { + "konto": "1940", + "name": "Zuführung Investitionsabzugsbetrag", + "klasse": 1, + "typ": "aktiv", + "gruppe": "Privatkonten", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": null + }, + { + "konto": "1950", + "name": "Privateinlagen", + "klasse": 1, + "typ": "passiv", + "gruppe": "Privatkonten", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "2180" + }, + { + "konto": "2000", + "name": "Aufwendungen für Roh-, Hilfs- und Betriebsstoffe", + "klasse": 2, + "typ": "aufwand", + "gruppe": "Abgrenzungskonten", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "5000" + }, + { + "konto": "2010", + "name": "Bestandsveränderungen Roh-, Hilfs- und Betriebsstoffe", + "klasse": 2, + "typ": "aufwand", + "gruppe": "Abgrenzungskonten", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "5020" + }, + { + "konto": "2100", + "name": "Zinsen und ähnliche Aufwendungen", + "klasse": 2, + "typ": "aufwand", + "gruppe": "Abgrenzungskonten", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "7300" + }, + { + "konto": "2110", + "name": "Zinsaufwendungen für kurzfristige Verbindlichkeiten", + "klasse": 2, + "typ": "aufwand", + "gruppe": "Abgrenzungskonten", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "7310" + }, + { + "konto": "2120", + "name": "Zinsaufwendungen für langfristige Verbindlichkeiten", + "klasse": 2, + "typ": "aufwand", + "gruppe": "Abgrenzungskonten", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "7320" + }, + { + "konto": "2150", + "name": "Diskontaufwendungen", + "klasse": 2, + "typ": "aufwand", + "gruppe": "Abgrenzungskonten", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "7330" + }, + { + "konto": "2300", + "name": "Sonstige Aufwendungen für betrieblich veranlasste Abgaben", + "klasse": 2, + "typ": "aufwand", + "gruppe": "Abgrenzungskonten", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "7680" + }, + { + "konto": "2400", + "name": "Forderungsverluste", + "klasse": 2, + "typ": "aufwand", + "gruppe": "Abgrenzungskonten", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "6930" + }, + { + "konto": "2500", + "name": "Außerordentliche Aufwendungen", + "klasse": 2, + "typ": "aufwand", + "gruppe": "Abgrenzungskonten", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "7500" + }, + { + "konto": "2600", + "name": "Steuern vom Einkommen und Ertrag", + "klasse": 2, + "typ": "aufwand", + "gruppe": "Abgrenzungskonten", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "7600" + }, + { + "konto": "2650", + "name": "Körperschaftsteuer", + "klasse": 2, + "typ": "aufwand", + "gruppe": "Abgrenzungskonten", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "7610" + }, + { + "konto": "2700", + "name": "Sonstige Zinsen und ähnliche Erträge", + "klasse": 2, + "typ": "ertrag", + "gruppe": "Abgrenzungskonten", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "7100" + }, + { + "konto": "3000", + "name": "Roh-, Hilfs- und Betriebsstoffe", + "klasse": 3, + "typ": "aufwand", + "gruppe": "Wareneingang", + "ust_relevant": true, + "steuerschluessel": [ + 9, + 8 + ], + "skr04": "5000" + }, + { + "konto": "3100", + "name": "Fremdleistungen", + "klasse": 3, + "typ": "aufwand", + "gruppe": "Wareneingang", + "ust_relevant": true, + "steuerschluessel": [ + 9, + 8 + ], + "skr04": "5900" + }, + { + "konto": "3120", + "name": "Bauleistungen eines im Inland ansässigen Unternehmers 19% Vorsteuer und 19% Umsatzsteuer", + "klasse": 3, + "typ": "aufwand", + "gruppe": "Wareneingang", + "ust_relevant": true, + "steuerschluessel": [ + 9 + ], + "skr04": "5920" + }, + { + "konto": "3123", + "name": "Leistungen eines im anderen EU-Land ansässigen Unternehmens (19% VSt/19% USt)", + "klasse": 3, + "typ": "aufwand", + "gruppe": "Wareneingang", + "ust_relevant": true, + "steuerschluessel": [ + 9 + ], + "skr04": "5923" + }, + { + "konto": "3200", + "name": "Wareneingang", + "klasse": 3, + "typ": "aufwand", + "gruppe": "Wareneingang", + "ust_relevant": true, + "steuerschluessel": [ + 9, + 8 + ], + "skr04": "5200" + }, + { + "konto": "3300", + "name": "Wareneingang 7% Vorsteuer", + "klasse": 3, + "typ": "aufwand", + "gruppe": "Wareneingang", + "ust_relevant": true, + "steuerschluessel": [ + 8 + ], + "skr04": "5300" + }, + { + "konto": "3400", + "name": "Wareneingang 19% Vorsteuer", + "klasse": 3, + "typ": "aufwand", + "gruppe": "Wareneingang", + "ust_relevant": true, + "steuerschluessel": [ + 9 + ], + "skr04": "5400" + }, + { + "konto": "3425", + "name": "Innergemeinschaftlicher Erwerb 7% Vorsteuer und 7% Umsatzsteuer", + "klasse": 3, + "typ": "aufwand", + "gruppe": "Wareneingang", + "ust_relevant": true, + "steuerschluessel": [ + 8 + ], + "skr04": "5425" + }, + { + "konto": "3435", + "name": "Innergemeinschaftlicher Erwerb 19% Vorsteuer und 19% Umsatzsteuer", + "klasse": 3, + "typ": "aufwand", + "gruppe": "Wareneingang", + "ust_relevant": true, + "steuerschluessel": [ + 9 + ], + "skr04": "5435" + }, + { + "konto": "3500", + "name": "Wareneingang steuerfrei", + "klasse": 3, + "typ": "aufwand", + "gruppe": "Wareneingang", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "5500" + }, + { + "konto": "3700", + "name": "Nachlässe aus Wareneingang", + "klasse": 3, + "typ": "aufwand", + "gruppe": "Wareneingang", + "ust_relevant": true, + "steuerschluessel": [ + 9, + 8 + ], + "skr04": "5700" + }, + { + "konto": "3736", + "name": "Erhaltene Skonti aus Wareneingang 19% Vorsteuer", + "klasse": 3, + "typ": "aufwand", + "gruppe": "Wareneingang", + "ust_relevant": true, + "steuerschluessel": [ + 9 + ], + "skr04": "5736" + }, + { + "konto": "3800", + "name": "Anschaffungsnebenkosten Wareneingang", + "klasse": 3, + "typ": "aufwand", + "gruppe": "Wareneingang", + "ust_relevant": true, + "steuerschluessel": [ + 9, + 8 + ], + "skr04": "5800" + }, + { + "konto": "3960", + "name": "Bestandsveränderungen fertige Erzeugnisse", + "klasse": 3, + "typ": "aufwand", + "gruppe": "Bestandsveränderungen", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "5960" + }, + { + "konto": "4100", + "name": "Löhne", + "klasse": 4, + "typ": "aufwand", + "gruppe": "Personalaufwendungen", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "6000" + }, + { + "konto": "4110", + "name": "Löhne für Minijobber", + "klasse": 4, + "typ": "aufwand", + "gruppe": "Personalaufwendungen", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "6010" + }, + { + "konto": "4120", + "name": "Gehälter", + "klasse": 4, + "typ": "aufwand", + "gruppe": "Personalaufwendungen", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "6020" + }, + { + "konto": "4125", + "name": "Geschäftsführergehälter GmbH", + "klasse": 4, + "typ": "aufwand", + "gruppe": "Personalaufwendungen", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "6024" + }, + { + "konto": "4130", + "name": "Gesetzliche soziale Aufwendungen", + "klasse": 4, + "typ": "aufwand", + "gruppe": "Personalaufwendungen", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "6110" + }, + { + "konto": "4138", + "name": "Beiträge zur Berufsgenossenschaft", + "klasse": 4, + "typ": "aufwand", + "gruppe": "Personalaufwendungen", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "6120" + }, + { + "konto": "4140", + "name": "Freiwillige soziale Aufwendungen", + "klasse": 4, + "typ": "aufwand", + "gruppe": "Personalaufwendungen", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "6130" + }, + { + "konto": "4145", + "name": "Freiwillige Krankenversicherung", + "klasse": 4, + "typ": "aufwand", + "gruppe": "Personalaufwendungen", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "6140" + }, + { + "konto": "4150", + "name": "Vermögenswirksame Leistungen", + "klasse": 4, + "typ": "aufwand", + "gruppe": "Personalaufwendungen", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "6150" + }, + { + "konto": "4170", + "name": "Fahrgeldzuschüsse", + "klasse": 4, + "typ": "aufwand", + "gruppe": "Personalaufwendungen", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "6060" + }, + { + "konto": "4190", + "name": "Aushilfslöhne", + "klasse": 4, + "typ": "aufwand", + "gruppe": "Personalaufwendungen", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "6050" + }, + { + "konto": "4199", + "name": "Lohnsteuer-Nachzahlung, pauschale Lohnsteuer", + "klasse": 4, + "typ": "aufwand", + "gruppe": "Personalaufwendungen", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "6070" + }, + { + "konto": "4200", + "name": "Raumkosten", + "klasse": 4, + "typ": "aufwand", + "gruppe": "Raumkosten", + "ust_relevant": true, + "steuerschluessel": [ + 9 + ], + "skr04": "6300" + }, + { + "konto": "4210", + "name": "Miete (unbewegliche Wirtschaftsgüter)", + "klasse": 4, + "typ": "aufwand", + "gruppe": "Raumkosten", + "ust_relevant": true, + "steuerschluessel": [ + 9 + ], + "skr04": "6310" + }, + { + "konto": "4220", + "name": "Pacht", + "klasse": 4, + "typ": "aufwand", + "gruppe": "Raumkosten", + "ust_relevant": true, + "steuerschluessel": [ + 9 + ], + "skr04": "6315" + }, + { + "konto": "4230", + "name": "Heizung", + "klasse": 4, + "typ": "aufwand", + "gruppe": "Raumkosten", + "ust_relevant": true, + "steuerschluessel": [ + 9 + ], + "skr04": "6325" + }, + { + "konto": "4240", + "name": "Gas, Strom, Wasser", + "klasse": 4, + "typ": "aufwand", + "gruppe": "Raumkosten", + "ust_relevant": true, + "steuerschluessel": [ + 9 + ], + "skr04": "6330" + }, + { + "konto": "4250", + "name": "Reinigung", + "klasse": 4, + "typ": "aufwand", + "gruppe": "Raumkosten", + "ust_relevant": true, + "steuerschluessel": [ + 9 + ], + "skr04": "6335" + }, + { + "konto": "4260", + "name": "Instandhaltung betrieblicher Räume", + "klasse": 4, + "typ": "aufwand", + "gruppe": "Raumkosten", + "ust_relevant": true, + "steuerschluessel": [ + 9 + ], + "skr04": "6340" + }, + { + "konto": "4280", + "name": "Sonstige Raumkosten", + "klasse": 4, + "typ": "aufwand", + "gruppe": "Raumkosten", + "ust_relevant": true, + "steuerschluessel": [ + 9 + ], + "skr04": "6345" + }, + { + "konto": "4320", + "name": "Gewerbesteuer", + "klasse": 4, + "typ": "aufwand", + "gruppe": "Steuern und Versicherungen", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "7610" + }, + { + "konto": "4360", + "name": "Versicherungen", + "klasse": 4, + "typ": "aufwand", + "gruppe": "Steuern und Versicherungen", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "6400" + }, + { + "konto": "4380", + "name": "Beiträge", + "klasse": 4, + "typ": "aufwand", + "gruppe": "Steuern und Versicherungen", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "6420" + }, + { + "konto": "4390", + "name": "Sonstige Abgaben", + "klasse": 4, + "typ": "aufwand", + "gruppe": "Steuern und Versicherungen", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "6430" + }, + { + "konto": "4500", + "name": "Fahrzeugkosten", + "klasse": 4, + "typ": "aufwand", + "gruppe": "Fahrzeugkosten", + "ust_relevant": true, + "steuerschluessel": [ + 9 + ], + "skr04": "6500" + }, + { + "konto": "4510", + "name": "Kfz-Steuern", + "klasse": 4, + "typ": "aufwand", + "gruppe": "Fahrzeugkosten", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "6520" + }, + { + "konto": "4520", + "name": "Kfz-Versicherungen", + "klasse": 4, + "typ": "aufwand", + "gruppe": "Fahrzeugkosten", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "6540" + }, + { + "konto": "4530", + "name": "Laufende Kfz-Betriebskosten", + "klasse": 4, + "typ": "aufwand", + "gruppe": "Fahrzeugkosten", + "ust_relevant": true, + "steuerschluessel": [ + 9 + ], + "skr04": "6530" + }, + { + "konto": "4540", + "name": "Kfz-Reparaturen", + "klasse": 4, + "typ": "aufwand", + "gruppe": "Fahrzeugkosten", + "ust_relevant": true, + "steuerschluessel": [ + 9 + ], + "skr04": "6545" + }, + { + "konto": "4550", + "name": "Kfz-Mietleasing", + "klasse": 4, + "typ": "aufwand", + "gruppe": "Fahrzeugkosten", + "ust_relevant": true, + "steuerschluessel": [ + 9 + ], + "skr04": "6550" + }, + { + "konto": "4570", + "name": "Fremdfahrzeuge", + "klasse": 4, + "typ": "aufwand", + "gruppe": "Fahrzeugkosten", + "ust_relevant": true, + "steuerschluessel": [ + 9 + ], + "skr04": "6570" + }, + { + "konto": "4580", + "name": "Sonstige Fahrzeugkosten", + "klasse": 4, + "typ": "aufwand", + "gruppe": "Fahrzeugkosten", + "ust_relevant": true, + "steuerschluessel": [ + 9 + ], + "skr04": "6580" + }, + { + "konto": "4600", + "name": "Werbekosten", + "klasse": 4, + "typ": "aufwand", + "gruppe": "Werbung und Repräsentation", + "ust_relevant": true, + "steuerschluessel": [ + 9 + ], + "skr04": "6600" + }, + { + "konto": "4610", + "name": "Werbekosten (abziehbar)", + "klasse": 4, + "typ": "aufwand", + "gruppe": "Werbung und Repräsentation", + "ust_relevant": true, + "steuerschluessel": [ + 9 + ], + "skr04": "6610" + }, + { + "konto": "4630", + "name": "Geschenke abziehbar ohne §37b EStG", + "klasse": 4, + "typ": "aufwand", + "gruppe": "Werbung und Repräsentation", + "ust_relevant": true, + "steuerschluessel": [ + 9 + ], + "skr04": "6620", + "notes": "Abziehbar bis 50€ pro Empfänger/Jahr (seit 2024)" + }, + { + "konto": "4635", + "name": "Geschenke nicht abziehbar ohne §37b EStG", + "klasse": 4, + "typ": "aufwand", + "gruppe": "Werbung und Repräsentation", + "ust_relevant": true, + "steuerschluessel": [ + 9 + ], + "skr04": "6625", + "notes": "Über 50€ pro Empfänger/Jahr" + }, + { + "konto": "4640", + "name": "Repräsentationskosten", + "klasse": 4, + "typ": "aufwand", + "gruppe": "Werbung und Repräsentation", + "ust_relevant": true, + "steuerschluessel": [ + 9 + ], + "skr04": "6630" + }, + { + "konto": "4650", + "name": "Bewirtungskosten", + "klasse": 4, + "typ": "aufwand", + "gruppe": "Werbung und Repräsentation", + "ust_relevant": true, + "steuerschluessel": [ + 9 + ], + "skr04": "6640", + "notes": "70% abziehbar (§4 Abs.5 Nr.2 EStG). Beleg mit Angabe der bewirteten Personen erforderlich" + }, + { + "konto": "4654", + "name": "Nicht abzugsfähige Bewirtungskosten", + "klasse": 4, + "typ": "aufwand", + "gruppe": "Werbung und Repräsentation", + "ust_relevant": true, + "steuerschluessel": [ + 9 + ], + "skr04": "6644" + }, + { + "konto": "4660", + "name": "Reisekosten Arbeitnehmer", + "klasse": 4, + "typ": "aufwand", + "gruppe": "Reisekosten", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "6650" + }, + { + "konto": "4663", + "name": "Reisekosten Arbeitnehmer Fahrtkosten", + "klasse": 4, + "typ": "aufwand", + "gruppe": "Reisekosten", + "ust_relevant": true, + "steuerschluessel": [ + 9 + ], + "skr04": "6660" + }, + { + "konto": "4664", + "name": "Reisekosten Arbeitnehmer Verpflegung", + "klasse": 4, + "typ": "aufwand", + "gruppe": "Reisekosten", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "6664" + }, + { + "konto": "4666", + "name": "Reisekosten Arbeitnehmer Übernachtung", + "klasse": 4, + "typ": "aufwand", + "gruppe": "Reisekosten", + "ust_relevant": true, + "steuerschluessel": [ + 9, + 8 + ], + "skr04": "6668" + }, + { + "konto": "4670", + "name": "Reisekosten Unternehmer", + "klasse": 4, + "typ": "aufwand", + "gruppe": "Reisekosten", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "6670" + }, + { + "konto": "4673", + "name": "Reisekosten Unternehmer Fahrtkosten", + "klasse": 4, + "typ": "aufwand", + "gruppe": "Reisekosten", + "ust_relevant": true, + "steuerschluessel": [ + 9 + ], + "skr04": "6673" + }, + { + "konto": "4674", + "name": "Reisekosten Unternehmer Verpflegung", + "klasse": 4, + "typ": "aufwand", + "gruppe": "Reisekosten", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "6674" + }, + { + "konto": "4676", + "name": "Reisekosten Unternehmer Übernachtung", + "klasse": 4, + "typ": "aufwand", + "gruppe": "Reisekosten", + "ust_relevant": true, + "steuerschluessel": [ + 9, + 8 + ], + "skr04": "6680" + }, + { + "konto": "4700", + "name": "Kosten der Warenabgabe", + "klasse": 4, + "typ": "aufwand", + "gruppe": "Verschiedene betriebliche Aufwendungen", + "ust_relevant": true, + "steuerschluessel": [ + 9 + ], + "skr04": "6700" + }, + { + "konto": "4710", + "name": "Verpackungsmaterial", + "klasse": 4, + "typ": "aufwand", + "gruppe": "Verschiedene betriebliche Aufwendungen", + "ust_relevant": true, + "steuerschluessel": [ + 9 + ], + "skr04": "6740" + }, + { + "konto": "4730", + "name": "Ausgangsfrachten", + "klasse": 4, + "typ": "aufwand", + "gruppe": "Verschiedene betriebliche Aufwendungen", + "ust_relevant": true, + "steuerschluessel": [ + 9 + ], + "skr04": "6730" + }, + { + "konto": "4750", + "name": "Aufwendungen für Gewährleistungen", + "klasse": 4, + "typ": "aufwand", + "gruppe": "Verschiedene betriebliche Aufwendungen", + "ust_relevant": true, + "steuerschluessel": [ + 9 + ], + "skr04": "6780" + }, + { + "konto": "4780", + "name": "Fremdarbeiten (Fremdleistungen)", + "klasse": 4, + "typ": "aufwand", + "gruppe": "Verschiedene betriebliche Aufwendungen", + "ust_relevant": true, + "steuerschluessel": [ + 9 + ], + "skr04": "6780" + }, + { + "konto": "4800", + "name": "Reparaturen und Instandhaltungen", + "klasse": 4, + "typ": "aufwand", + "gruppe": "Verschiedene betriebliche Aufwendungen", + "ust_relevant": true, + "steuerschluessel": [ + 9 + ], + "skr04": "6460" + }, + { + "konto": "4805", + "name": "Wartungskosten für Hard- und Software", + "klasse": 4, + "typ": "aufwand", + "gruppe": "Verschiedene betriebliche Aufwendungen", + "ust_relevant": true, + "steuerschluessel": [ + 9 + ], + "skr04": "6475" + }, + { + "konto": "4806", + "name": "Wartungskosten für Software", + "klasse": 4, + "typ": "aufwand", + "gruppe": "Verschiedene betriebliche Aufwendungen", + "ust_relevant": true, + "steuerschluessel": [ + 9 + ], + "skr04": "6476" + }, + { + "konto": "4822", + "name": "Abschreibungen auf Sachanlagen", + "klasse": 4, + "typ": "aufwand", + "gruppe": "Abschreibungen", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "6220" + }, + { + "konto": "4824", + "name": "Abschreibungen auf immaterielle Vermögensgegenstände", + "klasse": 4, + "typ": "aufwand", + "gruppe": "Abschreibungen", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "6200" + }, + { + "konto": "4830", + "name": "Abschreibungen auf Sachanlagen (außerplanmäßig)", + "klasse": 4, + "typ": "aufwand", + "gruppe": "Abschreibungen", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "6230" + }, + { + "konto": "4855", + "name": "Sofortabschreibung GWG", + "klasse": 4, + "typ": "aufwand", + "gruppe": "Abschreibungen", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "6260" + }, + { + "konto": "4900", + "name": "Sonstige betriebliche Aufwendungen", + "klasse": 4, + "typ": "aufwand", + "gruppe": "Sonstige betriebliche Aufwendungen", + "ust_relevant": true, + "steuerschluessel": [ + 9 + ], + "skr04": "6300" + }, + { + "konto": "4905", + "name": "Sonstige Aufwendungen betrieblich und regelmäßig", + "klasse": 4, + "typ": "aufwand", + "gruppe": "Sonstige betriebliche Aufwendungen", + "ust_relevant": true, + "steuerschluessel": [ + 9 + ], + "skr04": "6305" + }, + { + "konto": "4910", + "name": "Porto", + "klasse": 4, + "typ": "aufwand", + "gruppe": "Sonstige betriebliche Aufwendungen", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "6800" + }, + { + "konto": "4920", + "name": "Telefon", + "klasse": 4, + "typ": "aufwand", + "gruppe": "Sonstige betriebliche Aufwendungen", + "ust_relevant": true, + "steuerschluessel": [ + 9 + ], + "skr04": "6805" + }, + { + "konto": "4921", + "name": "Mobilfunk", + "klasse": 4, + "typ": "aufwand", + "gruppe": "Sonstige betriebliche Aufwendungen", + "ust_relevant": true, + "steuerschluessel": [ + 9 + ], + "skr04": "6810" + }, + { + "konto": "4925", + "name": "Internetkosten", + "klasse": 4, + "typ": "aufwand", + "gruppe": "Sonstige betriebliche Aufwendungen", + "ust_relevant": true, + "steuerschluessel": [ + 9 + ], + "skr04": "6815" + }, + { + "konto": "4930", + "name": "Bürobedarf", + "klasse": 4, + "typ": "aufwand", + "gruppe": "Sonstige betriebliche Aufwendungen", + "ust_relevant": true, + "steuerschluessel": [ + 9 + ], + "skr04": "6820" + }, + { + "konto": "4940", + "name": "Zeitschriften, Bücher", + "klasse": 4, + "typ": "aufwand", + "gruppe": "Sonstige betriebliche Aufwendungen", + "ust_relevant": true, + "steuerschluessel": [ + 8 + ], + "skr04": "6825" + }, + { + "konto": "4945", + "name": "Fortbildungskosten", + "klasse": 4, + "typ": "aufwand", + "gruppe": "Sonstige betriebliche Aufwendungen", + "ust_relevant": true, + "steuerschluessel": [ + 9 + ], + "skr04": "6830" + }, + { + "konto": "4946", + "name": "Fremdleistungen (Nicht-Wareneingang)", + "klasse": 4, + "typ": "aufwand", + "gruppe": "Sonstige betriebliche Aufwendungen", + "ust_relevant": true, + "steuerschluessel": [ + 9 + ], + "skr04": "6835" + }, + { + "konto": "4950", + "name": "Rechts- und Beratungskosten", + "klasse": 4, + "typ": "aufwand", + "gruppe": "Sonstige betriebliche Aufwendungen", + "ust_relevant": true, + "steuerschluessel": [ + 9 + ], + "skr04": "6825" + }, + { + "konto": "4955", + "name": "Buchführungskosten", + "klasse": 4, + "typ": "aufwand", + "gruppe": "Sonstige betriebliche Aufwendungen", + "ust_relevant": true, + "steuerschluessel": [ + 9 + ], + "skr04": "6830" + }, + { + "konto": "4957", + "name": "Abschluss- und Prüfungskosten", + "klasse": 4, + "typ": "aufwand", + "gruppe": "Sonstige betriebliche Aufwendungen", + "ust_relevant": true, + "steuerschluessel": [ + 9 + ], + "skr04": "6827" + }, + { + "konto": "4960", + "name": "Mieten für Einrichtungen (bewegliche Wirtschaftsgüter)", + "klasse": 4, + "typ": "aufwand", + "gruppe": "Sonstige betriebliche Aufwendungen", + "ust_relevant": true, + "steuerschluessel": [ + 9 + ], + "skr04": "6835" + }, + { + "konto": "4964", + "name": "Aufwendungen für die zeitlich befristete Überlassung von Rechten (Lizenzen, Konzessionen)", + "klasse": 4, + "typ": "aufwand", + "gruppe": "Sonstige betriebliche Aufwendungen", + "ust_relevant": true, + "steuerschluessel": [ + 9 + ], + "skr04": "6837" + }, + { + "konto": "4969", + "name": "Aufwendungen für Software (Nutzungsrechte)", + "klasse": 4, + "typ": "aufwand", + "gruppe": "Sonstige betriebliche Aufwendungen", + "ust_relevant": true, + "steuerschluessel": [ + 9 + ], + "skr04": "6838" + }, + { + "konto": "4970", + "name": "Nebenkosten des Geldverkehrs", + "klasse": 4, + "typ": "aufwand", + "gruppe": "Sonstige betriebliche Aufwendungen", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "6855" + }, + { + "konto": "4980", + "name": "Werkzeuge und Kleingeräte", + "klasse": 4, + "typ": "aufwand", + "gruppe": "Sonstige betriebliche Aufwendungen", + "ust_relevant": true, + "steuerschluessel": [ + 9 + ], + "skr04": "6845" + }, + { + "konto": "4985", + "name": "Werkzeuge und Kleingeräte (GWG)", + "klasse": 4, + "typ": "aufwand", + "gruppe": "Sonstige betriebliche Aufwendungen", + "ust_relevant": true, + "steuerschluessel": [ + 9 + ], + "skr04": "6845" + }, + { + "konto": "7000", + "name": "Bestandsveränderungen fertige Erzeugnisse", + "klasse": 7, + "typ": "aufwand", + "gruppe": "Bestandsveränderungen", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "5800" + }, + { + "konto": "7010", + "name": "Bestandsveränderungen unfertige Erzeugnisse", + "klasse": 7, + "typ": "aufwand", + "gruppe": "Bestandsveränderungen", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "5810" + }, + { + "konto": "7020", + "name": "Bestandsveränderungen unfertige Leistungen", + "klasse": 7, + "typ": "aufwand", + "gruppe": "Bestandsveränderungen", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "5820" + }, + { + "konto": "7080", + "name": "Andere aktivierte Eigenleistungen", + "klasse": 7, + "typ": "aktiv", + "gruppe": "Aktivierte Eigenleistungen", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "5880" + }, + { + "konto": "7100", + "name": "Bestand fertige Erzeugnisse", + "klasse": 7, + "typ": "aktiv", + "gruppe": "Bestände", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "1100" + }, + { + "konto": "7110", + "name": "Bestand unfertige Erzeugnisse", + "klasse": 7, + "typ": "aktiv", + "gruppe": "Bestände", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "1110" + }, + { + "konto": "7120", + "name": "Bestand unfertige Leistungen", + "klasse": 7, + "typ": "aktiv", + "gruppe": "Bestände", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "1120" + }, + { + "konto": "7200", + "name": "Bestand Waren", + "klasse": 7, + "typ": "aktiv", + "gruppe": "Bestände", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "1140" + }, + { + "konto": "7300", + "name": "Erhaltene Anzahlungen auf Bestellungen", + "klasse": 7, + "typ": "passiv", + "gruppe": "Verbindlichkeiten", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "3260" + }, + { + "konto": "7500", + "name": "Warenbestand", + "klasse": 7, + "typ": "aktiv", + "gruppe": "Bestände", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "1160" + }, + { + "konto": "7700", + "name": "Bestand unfertige Erzeugnisse (Bewertung)", + "klasse": 7, + "typ": "aktiv", + "gruppe": "Bestände", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": null + }, + { + "konto": "7800", + "name": "Bestand fertige Erzeugnisse (Bewertung)", + "klasse": 7, + "typ": "aktiv", + "gruppe": "Bestände", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": null + }, + { + "konto": "7900", + "name": "Aktivierte Eigenleistungen", + "klasse": 7, + "typ": "aktiv", + "gruppe": "Aktivierte Eigenleistungen", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "5900" + }, + { + "konto": "8100", + "name": "Steuerfreie Umsätze §4 Nr. 1a UStG (Ausfuhrlieferungen)", + "klasse": 8, + "typ": "ertrag", + "gruppe": "Erlöse", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "4100" + }, + { + "konto": "8110", + "name": "Steuerfreie innergemeinschaftliche Lieferungen §4 Nr.1b UStG", + "klasse": 8, + "typ": "ertrag", + "gruppe": "Erlöse", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "4120" + }, + { + "konto": "8120", + "name": "Steuerfreie innergemeinschaftliche Lieferungen §4 Nr.1b UStG", + "klasse": 8, + "typ": "ertrag", + "gruppe": "Erlöse", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "4125" + }, + { + "konto": "8125", + "name": "Steuerfreie ig. Lieferungen an Abnehmer mit USt-IdNr.", + "klasse": 8, + "typ": "ertrag", + "gruppe": "Erlöse", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "4130" + }, + { + "konto": "8130", + "name": "Steuerfreie Umsätze nach §4 Nr.12 UStG (Vermietung)", + "klasse": 8, + "typ": "ertrag", + "gruppe": "Erlöse", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "4140" + }, + { + "konto": "8135", + "name": "Steuerfreie Umsätze §4 Nr.14 ff UStG (Heilberufe)", + "klasse": 8, + "typ": "ertrag", + "gruppe": "Erlöse", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "4145" + }, + { + "konto": "8150", + "name": "Sonstige steuerfreie Umsätze (Inland)", + "klasse": 8, + "typ": "ertrag", + "gruppe": "Erlöse", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "4150" + }, + { + "konto": "8190", + "name": "Erlöse aus im Inland steuerpflichtigen EU-Lieferungen", + "klasse": 8, + "typ": "ertrag", + "gruppe": "Erlöse", + "ust_relevant": true, + "steuerschluessel": [ + 1 + ], + "skr04": "4190" + }, + { + "konto": "8200", + "name": "Erlöse", + "klasse": 8, + "typ": "ertrag", + "gruppe": "Erlöse", + "ust_relevant": true, + "steuerschluessel": [ + 1, + 2 + ], + "skr04": "4200" + }, + { + "konto": "8300", + "name": "Erlöse 7% USt", + "klasse": 8, + "typ": "ertrag", + "gruppe": "Erlöse", + "ust_relevant": true, + "steuerschluessel": [ + 2 + ], + "skr04": "4300" + }, + { + "konto": "8310", + "name": "Erlöse aus Leistungen 7% USt", + "klasse": 8, + "typ": "ertrag", + "gruppe": "Erlöse", + "ust_relevant": true, + "steuerschluessel": [ + 2 + ], + "skr04": "4310" + }, + { + "konto": "8320", + "name": "Erlöse Abfallverwertung", + "klasse": 8, + "typ": "ertrag", + "gruppe": "Erlöse", + "ust_relevant": true, + "steuerschluessel": [ + 1 + ], + "skr04": "4320" + }, + { + "konto": "8335", + "name": "Erlöse 19% USt (aus Anlagenverkäufen)", + "klasse": 8, + "typ": "ertrag", + "gruppe": "Erlöse", + "ust_relevant": true, + "steuerschluessel": [ + 1 + ], + "skr04": "4335" + }, + { + "konto": "8337", + "name": "Erlöse 19% USt (Sachanlagen Restbuchwert)", + "klasse": 8, + "typ": "ertrag", + "gruppe": "Erlöse", + "ust_relevant": true, + "steuerschluessel": [ + 1 + ], + "skr04": "4337" + }, + { + "konto": "8340", + "name": "Erlöse Provisionsumsätze", + "klasse": 8, + "typ": "ertrag", + "gruppe": "Erlöse", + "ust_relevant": true, + "steuerschluessel": [ + 1 + ], + "skr04": "4340" + }, + { + "konto": "8400", + "name": "Erlöse 19% USt", + "klasse": 8, + "typ": "ertrag", + "gruppe": "Erlöse", + "ust_relevant": true, + "steuerschluessel": [ + 1 + ], + "skr04": "4400" + }, + { + "konto": "8500", + "name": "Provisionserlöse", + "klasse": 8, + "typ": "ertrag", + "gruppe": "Erlöse", + "ust_relevant": true, + "steuerschluessel": [ + 1 + ], + "skr04": "4500" + }, + { + "konto": "8510", + "name": "Erlöse aus Vermietung und Verpachtung", + "klasse": 8, + "typ": "ertrag", + "gruppe": "Erlöse", + "ust_relevant": true, + "steuerschluessel": [ + 1 + ], + "skr04": "4510" + }, + { + "konto": "8519", + "name": "Erlöse aus Vermietung/Verpachtung 19% USt", + "klasse": 8, + "typ": "ertrag", + "gruppe": "Erlöse", + "ust_relevant": true, + "steuerschluessel": [ + 1 + ], + "skr04": "4519" + }, + { + "konto": "8520", + "name": "Erlöse aus Vermittlung", + "klasse": 8, + "typ": "ertrag", + "gruppe": "Erlöse", + "ust_relevant": true, + "steuerschluessel": [ + 1 + ], + "skr04": "4520" + }, + { + "konto": "8591", + "name": "Sachbezüge 19% USt", + "klasse": 8, + "typ": "ertrag", + "gruppe": "Erlöse", + "ust_relevant": true, + "steuerschluessel": [ + 1 + ], + "skr04": "4590" + }, + { + "konto": "8600", + "name": "Erlösschmälerungen", + "klasse": 8, + "typ": "ertrag", + "gruppe": "Erlöse", + "ust_relevant": true, + "steuerschluessel": [ + 1, + 2 + ], + "skr04": "4600" + }, + { + "konto": "8610", + "name": "Erlösschmälerungen 7% USt", + "klasse": 8, + "typ": "ertrag", + "gruppe": "Erlöse", + "ust_relevant": true, + "steuerschluessel": [ + 2 + ], + "skr04": "4610" + }, + { + "konto": "8620", + "name": "Erlösschmälerungen 19% USt", + "klasse": 8, + "typ": "ertrag", + "gruppe": "Erlöse", + "ust_relevant": true, + "steuerschluessel": [ + 1 + ], + "skr04": "4620" + }, + { + "konto": "8700", + "name": "Erlöse aus Anlagenverkäufen", + "klasse": 8, + "typ": "ertrag", + "gruppe": "Sonstige betriebliche Erträge", + "ust_relevant": true, + "steuerschluessel": [ + 1 + ], + "skr04": "4845" + }, + { + "konto": "8710", + "name": "Gewährte Skonti", + "klasse": 8, + "typ": "ertrag", + "gruppe": "Erlöse", + "ust_relevant": true, + "steuerschluessel": [ + 1, + 2 + ], + "skr04": "4710" + }, + { + "konto": "8720", + "name": "Gewährte Boni", + "klasse": 8, + "typ": "ertrag", + "gruppe": "Erlöse", + "ust_relevant": true, + "steuerschluessel": [ + 1, + 2 + ], + "skr04": "4720" + }, + { + "konto": "8730", + "name": "Gewährte Skonti", + "klasse": 8, + "typ": "ertrag", + "gruppe": "Erlöse", + "ust_relevant": true, + "steuerschluessel": [ + 1, + 2 + ], + "skr04": "4730" + }, + { + "konto": "8735", + "name": "Erlösschmälerungen 7% USt", + "klasse": 8, + "typ": "ertrag", + "gruppe": "Erlöse", + "ust_relevant": true, + "steuerschluessel": [ + 2 + ], + "skr04": "4735" + }, + { + "konto": "8736", + "name": "Gewährte Skonti 19% USt", + "klasse": 8, + "typ": "ertrag", + "gruppe": "Erlöse", + "ust_relevant": true, + "steuerschluessel": [ + 1 + ], + "skr04": "4736" + }, + { + "konto": "8740", + "name": "Gutschriften", + "klasse": 8, + "typ": "ertrag", + "gruppe": "Erlöse", + "ust_relevant": true, + "steuerschluessel": [ + 1, + 2 + ], + "skr04": "4740" + }, + { + "konto": "8750", + "name": "Kapitalerträge", + "klasse": 8, + "typ": "ertrag", + "gruppe": "Sonstige betriebliche Erträge", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "4750" + }, + { + "konto": "8760", + "name": "Erträge aus Beteiligungen", + "klasse": 8, + "typ": "ertrag", + "gruppe": "Sonstige betriebliche Erträge", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "4760" + }, + { + "konto": "8800", + "name": "Erlöse Abfallverwertung", + "klasse": 8, + "typ": "ertrag", + "gruppe": "Sonstige betriebliche Erträge", + "ust_relevant": true, + "steuerschluessel": [ + 1 + ], + "skr04": "4830" + }, + { + "konto": "8820", + "name": "Erträge aus der Auflösung von Rückstellungen", + "klasse": 8, + "typ": "ertrag", + "gruppe": "Sonstige betriebliche Erträge", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "4820" + }, + { + "konto": "8900", + "name": "Private Kfz-Nutzung", + "klasse": 8, + "typ": "ertrag", + "gruppe": "Sonstige betriebliche Erträge", + "ust_relevant": true, + "steuerschluessel": [ + 1 + ], + "skr04": "4900" + }, + { + "konto": "8910", + "name": "Private Telefonnutzung", + "klasse": 8, + "typ": "ertrag", + "gruppe": "Sonstige betriebliche Erträge", + "ust_relevant": true, + "steuerschluessel": [ + 1 + ], + "skr04": "4910" + }, + { + "konto": "8920", + "name": "Verwendung von Gegenständen für Zwecke außerhalb des Unternehmens", + "klasse": 8, + "typ": "ertrag", + "gruppe": "Sonstige betriebliche Erträge", + "ust_relevant": true, + "steuerschluessel": [ + 1 + ], + "skr04": "4920" + }, + { + "konto": "8940", + "name": "Erträge aus Kursdifferenzen", + "klasse": 8, + "typ": "ertrag", + "gruppe": "Sonstige betriebliche Erträge", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "4840" + }, + { + "konto": "8950", + "name": "Sonstige betriebliche Erträge", + "klasse": 8, + "typ": "ertrag", + "gruppe": "Sonstige betriebliche Erträge", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "4950" + }, + { + "konto": "8955", + "name": "Nicht steuerbare Umsätze", + "klasse": 8, + "typ": "ertrag", + "gruppe": "Sonstige betriebliche Erträge", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "4955" + }, + { + "konto": "8960", + "name": "Erträge aus Zuschreibungen (Sachanlagen)", + "klasse": 8, + "typ": "ertrag", + "gruppe": "Sonstige betriebliche Erträge", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "4960" + }, + { + "konto": "8970", + "name": "Erträge aus Zuschreibungen (Finanzanlagen)", + "klasse": 8, + "typ": "ertrag", + "gruppe": "Sonstige betriebliche Erträge", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "4970" + }, + { + "konto": "8975", + "name": "Erträge aus der Herabsetzung der Pauschalwertberichtigung", + "klasse": 8, + "typ": "ertrag", + "gruppe": "Sonstige betriebliche Erträge", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "4975" + }, + { + "konto": "8980", + "name": "Außerordentliche Erträge", + "klasse": 8, + "typ": "ertrag", + "gruppe": "Sonstige betriebliche Erträge", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "4980" + }, + { + "konto": "9000", + "name": "Saldenvorträge Sachkonten", + "klasse": 9, + "typ": "aktiv", + "gruppe": "Vortrags- und statistische Konten", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "9000" + }, + { + "konto": "9008", + "name": "Saldenvorträge Debitoren", + "klasse": 9, + "typ": "aktiv", + "gruppe": "Vortrags- und statistische Konten", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "9008" + }, + { + "konto": "9009", + "name": "Saldenvorträge Kreditoren", + "klasse": 9, + "typ": "passiv", + "gruppe": "Vortrags- und statistische Konten", + "ust_relevant": false, + "steuerschluessel": [], + "skr04": "9009" + } + ] +} \ No newline at end of file diff --git a/src/data/skr04.json b/src/data/skr04.json new file mode 100644 index 0000000..4ee221c --- /dev/null +++ b/src/data/skr04.json @@ -0,0 +1,2817 @@ +{ + "meta": { + "name": "SKR04", + "version": "2026.1", + "description": "Standardkontenrahmen 04 (Abschlussgliederungsprinzip). Derived from SKR03 cross-references.", + "gliederung": "Abschlussgliederungsprinzip", + "source": "Derived from skr03.json cross-references. Community-curated dataset.", + "license": "MIT", + "status": "draft — derived from SKR03, contributions and corrections welcome", + "sachkontenlaenge": 4 + }, + "klassen": [ + { + "name": "Anlagevermögen", + "range": [ + 0, + 999 + ], + "klasse": 0 + }, + { + "name": "Umlaufvermögen", + "range": [ + 1000, + 1999 + ], + "klasse": 1 + }, + { + "name": "Eigenkapitalkonten", + "range": [ + 2000, + 2999 + ], + "klasse": 2 + }, + { + "name": "Fremdkapitalkonten", + "range": [ + 3000, + 3999 + ], + "klasse": 3 + }, + { + "name": "Betriebliche Erträge", + "range": [ + 4000, + 4999 + ], + "klasse": 4 + }, + { + "name": "Betriebliche Aufwendungen (Materialaufwand)", + "range": [ + 5000, + 5999 + ], + "klasse": 5 + }, + { + "name": "Betriebliche Aufwendungen (sonstige)", + "range": [ + 6000, + 6999 + ], + "klasse": 6 + }, + { + "name": "Weitere Erträge und Aufwendungen", + "range": [ + 7000, + 7999 + ], + "klasse": 7 + }, + { + "name": "Frei / Ergebniskonten", + "range": [ + 8000, + 8999 + ], + "klasse": 8 + }, + { + "name": "Vortrags- und statistische Konten", + "range": [ + 9000, + 9999 + ], + "klasse": 9 + } + ], + "konten": [ + { + "konto": "0100", + "name": "Konzessionen", + "klasse": 0, + "typ": "aktiv", + "gruppe": "Immaterielle Vermögensgegenstände", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "0100" + }, + { + "konto": "0110", + "name": "Gewerbliche Schutzrechte", + "klasse": 0, + "typ": "aktiv", + "gruppe": "Immaterielle Vermögensgegenstände", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "0110" + }, + { + "konto": "0115", + "name": "Ähnliche Rechte und Werte", + "klasse": 0, + "typ": "aktiv", + "gruppe": "Immaterielle Vermögensgegenstände", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "0115" + }, + { + "konto": "0120", + "name": "Lizenzen an gewerblichen Schutzrechten", + "klasse": 0, + "typ": "aktiv", + "gruppe": "Immaterielle Vermögensgegenstände", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "0120" + }, + { + "konto": "0135", + "name": "EDV-Software", + "klasse": 0, + "typ": "aktiv", + "gruppe": "Immaterielle Vermögensgegenstände", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "0135" + }, + { + "konto": "0150", + "name": "Geschäfts- oder Firmenwert (entgeltlich erworben)", + "klasse": 0, + "typ": "aktiv", + "gruppe": "Immaterielle Vermögensgegenstände", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "0085" + }, + { + "konto": "0190", + "name": "Geleistete Anzahlungen auf immaterielle Vermögensgegenstände", + "klasse": 0, + "typ": "aktiv", + "gruppe": "Immaterielle Vermögensgegenstände", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "0070" + }, + { + "konto": "0210", + "name": "Grundstücke, grundstücksgleiche Rechte", + "klasse": 0, + "typ": "aktiv", + "gruppe": "Sachanlagen", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "0010" + }, + { + "konto": "0220", + "name": "Bauten auf eigenen Grundstücken", + "klasse": 0, + "typ": "aktiv", + "gruppe": "Sachanlagen", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "0015" + }, + { + "konto": "0240", + "name": "Gebäude auf eigenen Grundstücken", + "klasse": 0, + "typ": "aktiv", + "gruppe": "Sachanlagen", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "0027" + }, + { + "konto": "0260", + "name": "Gebäude anderer Grundstücke", + "klasse": 0, + "typ": "aktiv", + "gruppe": "Sachanlagen", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "0240" + }, + { + "konto": "0280", + "name": "Grundstückseinrichtungen", + "klasse": 0, + "typ": "aktiv", + "gruppe": "Sachanlagen", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "0030" + }, + { + "konto": "0290", + "name": "Einbauten in fremde Grundstücke", + "klasse": 0, + "typ": "aktiv", + "gruppe": "Sachanlagen", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "0050" + }, + { + "konto": "0400", + "name": "Technische Anlagen und Maschinen", + "klasse": 0, + "typ": "aktiv", + "gruppe": "Sachanlagen", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "0200" + }, + { + "konto": "0410", + "name": "Maschinen", + "klasse": 0, + "typ": "aktiv", + "gruppe": "Sachanlagen", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "0210" + }, + { + "konto": "0500", + "name": "Andere Anlagen, Betriebs- und Geschäftsausstattung", + "klasse": 0, + "typ": "aktiv", + "gruppe": "Sachanlagen", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "0300" + }, + { + "konto": "0510", + "name": "Betriebsvorrichtungen", + "klasse": 0, + "typ": "aktiv", + "gruppe": "Sachanlagen", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "0310" + }, + { + "konto": "0520", + "name": "PKW", + "klasse": 0, + "typ": "aktiv", + "gruppe": "Sachanlagen", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "0320" + }, + { + "konto": "0540", + "name": "Sonstige Transportmittel", + "klasse": 0, + "typ": "aktiv", + "gruppe": "Sachanlagen", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "0330" + }, + { + "konto": "0550", + "name": "LKW", + "klasse": 0, + "typ": "aktiv", + "gruppe": "Sachanlagen", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "0350" + }, + { + "konto": "0580", + "name": "Sonstige Betriebs- und Geschäftsausstattung", + "klasse": 0, + "typ": "aktiv", + "gruppe": "Sachanlagen", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "0340" + }, + { + "konto": "0620", + "name": "Betriebsausstattung", + "klasse": 0, + "typ": "aktiv", + "gruppe": "Sachanlagen", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "0400" + }, + { + "konto": "0630", + "name": "Geschäftsausstattung", + "klasse": 0, + "typ": "aktiv", + "gruppe": "Sachanlagen", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "0410" + }, + { + "konto": "0640", + "name": "Büroeinrichtung", + "klasse": 0, + "typ": "aktiv", + "gruppe": "Sachanlagen", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "0420" + }, + { + "konto": "0650", + "name": "Ladeneinrichtung", + "klasse": 0, + "typ": "aktiv", + "gruppe": "Sachanlagen", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "0440" + }, + { + "konto": "0660", + "name": "Einbauten in fremde Grundstücke", + "klasse": 0, + "typ": "aktiv", + "gruppe": "Sachanlagen", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "0450" + }, + { + "konto": "0670", + "name": "Geringwertige Wirtschaftsgüter (GWG)", + "klasse": 0, + "typ": "aktiv", + "gruppe": "Sachanlagen", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "0480" + }, + { + "konto": "0675", + "name": "Sammelposten GWG (Pool)", + "klasse": 0, + "typ": "aktiv", + "gruppe": "Sachanlagen", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "0485" + }, + { + "konto": "0690", + "name": "Geleistete Anzahlungen und Anlagen im Bau", + "klasse": 0, + "typ": "aktiv", + "gruppe": "Sachanlagen", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "0490" + }, + { + "konto": "0700", + "name": "Anteile an verbundenen Unternehmen", + "klasse": 0, + "typ": "aktiv", + "gruppe": "Finanzanlagen", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "0520" + }, + { + "konto": "0710", + "name": "Anteile an Unternehmen, mit denen ein Beteiligungsverhältnis besteht", + "klasse": 0, + "typ": "aktiv", + "gruppe": "Finanzanlagen", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "0500" + }, + { + "konto": "0730", + "name": "Beteiligungen", + "klasse": 0, + "typ": "aktiv", + "gruppe": "Finanzanlagen", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "0550" + }, + { + "konto": "0740", + "name": "Wertpapiere des Anlagevermögens", + "klasse": 0, + "typ": "aktiv", + "gruppe": "Finanzanlagen", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "0540" + }, + { + "konto": "0750", + "name": "Langfristige Ausleihungen an verbundene Unternehmen", + "klasse": 0, + "typ": "aktiv", + "gruppe": "Finanzanlagen", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "0560" + }, + { + "konto": "0760", + "name": "Ausleihungen an verbundene Unternehmen", + "klasse": 0, + "typ": "aktiv", + "gruppe": "Finanzanlagen", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "0580" + }, + { + "konto": "0790", + "name": "Sonstige Ausleihungen", + "klasse": 0, + "typ": "aktiv", + "gruppe": "Finanzanlagen", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "0690" + }, + { + "konto": "0800", + "name": "Sonstige Vermögensgegenstände", + "klasse": 0, + "typ": "aktiv", + "gruppe": "Finanzanlagen", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "0600" + }, + { + "konto": "0810", + "name": "Rückdeckungsansprüche aus Lebensversicherungen", + "klasse": 0, + "typ": "aktiv", + "gruppe": "Finanzanlagen", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "0610" + }, + { + "konto": "0830", + "name": "Mietkaution", + "klasse": 0, + "typ": "aktiv", + "gruppe": "Finanzanlagen", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "0631" + }, + { + "konto": "0840", + "name": "Kautionen", + "klasse": 0, + "typ": "aktiv", + "gruppe": "Finanzanlagen", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "0650" + }, + { + "konto": "1100", + "name": "Bestand fertige Erzeugnisse", + "klasse": 1, + "typ": "aktiv", + "gruppe": "Forderungen", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "7100" + }, + { + "konto": "1110", + "name": "Bestand unfertige Erzeugnisse", + "klasse": 1, + "typ": "aktiv", + "gruppe": "Forderungen", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "7110" + }, + { + "konto": "1120", + "name": "Bestand unfertige Leistungen", + "klasse": 1, + "typ": "aktiv", + "gruppe": "Forderungen", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "7120" + }, + { + "konto": "1140", + "name": "Bestand Waren", + "klasse": 1, + "typ": "aktiv", + "gruppe": "Forderungen", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "7200" + }, + { + "konto": "1160", + "name": "Warenbestand", + "klasse": 1, + "typ": "aktiv", + "gruppe": "Forderungen", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "7500" + }, + { + "konto": "1200", + "name": "Forderungen aus Lieferungen und Leistungen", + "klasse": 1, + "typ": "aktiv", + "gruppe": "Forderungen", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "1400" + }, + { + "konto": "1205", + "name": "Forderungen aus L+L (Restlaufzeit >1J)", + "klasse": 1, + "typ": "aktiv", + "gruppe": "Forderungen", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "1406" + }, + { + "konto": "1210", + "name": "Forderungen aus Lieferungen und Leistungen (ohne Kontokorrent)", + "klasse": 1, + "typ": "aktiv", + "gruppe": "Forderungen", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "1410" + }, + { + "konto": "1240", + "name": "Forderungen gegen verbundene Unternehmen", + "klasse": 1, + "typ": "aktiv", + "gruppe": "Forderungen", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "1450" + }, + { + "konto": "1250", + "name": "Forderungen gegen Gesellschafter", + "klasse": 1, + "typ": "aktiv", + "gruppe": "Forderungen", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "1460" + }, + { + "konto": "1260", + "name": "Wechsel", + "klasse": 1, + "typ": "aktiv", + "gruppe": "Forderungen", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "1300" + }, + { + "konto": "1270", + "name": "Besitzwechsel", + "klasse": 1, + "typ": "aktiv", + "gruppe": "Forderungen", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "1310" + }, + { + "konto": "1300", + "name": "Sonstige Vermögensgegenstände", + "klasse": 1, + "typ": "aktiv", + "gruppe": "Forderungen", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "1500" + }, + { + "konto": "1310", + "name": "Forderungen gegen Personal", + "klasse": 1, + "typ": "aktiv", + "gruppe": "Forderungen", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "1510" + }, + { + "konto": "1320", + "name": "Forderungen gegen GmbH-Gesellschafter", + "klasse": 1, + "typ": "aktiv", + "gruppe": "Forderungen", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "1520" + }, + { + "konto": "1360", + "name": "Lohn- und Gehaltsvorschüsse", + "klasse": 1, + "typ": "aktiv", + "gruppe": "Forderungen", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "1370" + }, + { + "konto": "1400", + "name": "Vorsteuer laufendes Jahr", + "klasse": 1, + "typ": "aktiv", + "gruppe": "Forderungen", + "ust_relevant": true, + "steuerschluessel": [], + "skr03": "1518" + }, + { + "konto": "1401", + "name": "Abziehbare Vorsteuer 7%", + "klasse": 1, + "typ": "aktiv", + "gruppe": "Forderungen", + "ust_relevant": true, + "steuerschluessel": [], + "skr03": "1571" + }, + { + "konto": "1406", + "name": "Abziehbare Vorsteuer 19%", + "klasse": 1, + "typ": "aktiv", + "gruppe": "Forderungen", + "ust_relevant": true, + "steuerschluessel": [], + "skr03": "1576" + }, + { + "konto": "1407", + "name": "Abziehbare Vorsteuer §13b UStG", + "klasse": 1, + "typ": "aktiv", + "gruppe": "Forderungen", + "ust_relevant": true, + "steuerschluessel": [], + "skr03": "1577" + }, + { + "konto": "1408", + "name": "Vorsteuer aus §13b UStG 19%", + "klasse": 1, + "typ": "aktiv", + "gruppe": "Forderungen", + "ust_relevant": true, + "steuerschluessel": [], + "skr03": "1588" + }, + { + "konto": "1434", + "name": "Vorsteuer im Folgejahr abziehbar", + "klasse": 1, + "typ": "aktiv", + "gruppe": "Forderungen", + "ust_relevant": true, + "steuerschluessel": [], + "skr03": "1548" + }, + { + "konto": "1440", + "name": "Schecks", + "klasse": 1, + "typ": "aktiv", + "gruppe": "Forderungen", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "1350" + }, + { + "konto": "1450", + "name": "Aufzuteilende Vorsteuer", + "klasse": 1, + "typ": "aktiv", + "gruppe": "Forderungen", + "ust_relevant": true, + "steuerschluessel": [], + "skr03": "1560" + }, + { + "konto": "1460", + "name": "Geldtransit", + "klasse": 1, + "typ": "aktiv", + "gruppe": "Forderungen", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "1360" + }, + { + "konto": "1490", + "name": "Durchlaufende Posten", + "klasse": 1, + "typ": "aktiv", + "gruppe": "Forderungen", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "1590" + }, + { + "konto": "1600", + "name": "Kasse", + "klasse": 1, + "typ": "aktiv", + "gruppe": "Liquide Mittel", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "1000" + }, + { + "konto": "1610", + "name": "Nebenkasse", + "klasse": 1, + "typ": "aktiv", + "gruppe": "Liquide Mittel", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "1010" + }, + { + "konto": "1620", + "name": "Wechselkasse / Portokasse", + "klasse": 1, + "typ": "aktiv", + "gruppe": "Liquide Mittel", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "1020" + }, + { + "konto": "1700", + "name": "Postbank", + "klasse": 1, + "typ": "aktiv", + "gruppe": "Liquide Mittel", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "1100" + }, + { + "konto": "1740", + "name": "Festgeldkonto", + "klasse": 1, + "typ": "aktiv", + "gruppe": "Liquide Mittel", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "1140" + }, + { + "konto": "1800", + "name": "Bank", + "klasse": 1, + "typ": "aktiv", + "gruppe": "Sonstige Vermögensgegenstände", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "1200" + }, + { + "konto": "1810", + "name": "Bank 2", + "klasse": 1, + "typ": "aktiv", + "gruppe": "Sonstige Vermögensgegenstände", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "1210" + }, + { + "konto": "2000", + "name": "Eigenkapital Einzelunternehmer (Festkapital)", + "klasse": 2, + "typ": "passiv", + "gruppe": "Eigenkapital", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "0900" + }, + { + "konto": "2100", + "name": "Entnahmen", + "klasse": 2, + "typ": "aktiv", + "gruppe": "Eigenkapital", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "0830" + }, + { + "konto": "2150", + "name": "Privat (Steuern)", + "klasse": 2, + "typ": "aktiv", + "gruppe": "Eigenkapital", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "0930" + }, + { + "konto": "2180", + "name": "Privateinlagen", + "klasse": 2, + "typ": "passiv", + "gruppe": "Eigenkapital", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "0950" + }, + { + "konto": "2200", + "name": "Sonderausgaben beschränkt abzugsfähig", + "klasse": 2, + "typ": "aktiv", + "gruppe": "Eigenkapital", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "1920" + }, + { + "konto": "2300", + "name": "Sonderausgaben unbeschränkt abzugsfähig", + "klasse": 2, + "typ": "aktiv", + "gruppe": "Eigenkapital", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "1930" + }, + { + "konto": "2900", + "name": "Gezeichnetes Kapital", + "klasse": 2, + "typ": "passiv", + "gruppe": "Privatkonten", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "0800" + }, + { + "konto": "2920", + "name": "Kapitalrücklage", + "klasse": 2, + "typ": "passiv", + "gruppe": "Privatkonten", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "0840" + }, + { + "konto": "2950", + "name": "Gewinnrücklage", + "klasse": 2, + "typ": "passiv", + "gruppe": "Privatkonten", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "0860" + }, + { + "konto": "2960", + "name": "Gewinnvortrag", + "klasse": 2, + "typ": "passiv", + "gruppe": "Privatkonten", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "0810" + }, + { + "konto": "2970", + "name": "Gewinnvortrag vor Verwendung", + "klasse": 2, + "typ": "passiv", + "gruppe": "Privatkonten", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "0880" + }, + { + "konto": "2978", + "name": "Verlustvortrag", + "klasse": 2, + "typ": "passiv", + "gruppe": "Privatkonten", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "0820" + }, + { + "konto": "3030", + "name": "Steuerrückstellungen", + "klasse": 3, + "typ": "passiv", + "gruppe": "Rückstellungen", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "0710" + }, + { + "konto": "3070", + "name": "Pensionsrückstellungen", + "klasse": 3, + "typ": "passiv", + "gruppe": "Rückstellungen", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "0700" + }, + { + "konto": "3090", + "name": "Sonstige Rückstellungen", + "klasse": 3, + "typ": "passiv", + "gruppe": "Rückstellungen", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "0720" + }, + { + "konto": "3150", + "name": "Verbindlichkeiten gegenüber Kreditinstituten (langfristig)", + "klasse": 3, + "typ": "passiv", + "gruppe": "Verbindlichkeiten", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "0750" + }, + { + "konto": "3260", + "name": "Erhaltene Anzahlungen auf Bestellungen", + "klasse": 3, + "typ": "passiv", + "gruppe": "Verbindlichkeiten", + "ust_relevant": true, + "steuerschluessel": [], + "skr03": "1710" + }, + { + "konto": "3300", + "name": "Verbindlichkeiten aus Lieferungen und Leistungen (langfristig)", + "klasse": 3, + "typ": "passiv", + "gruppe": "Verbindlichkeiten", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "0770" + }, + { + "konto": "3310", + "name": "Verbindlichkeiten aus Lieferungen und Leistungen (ohne Kontokorrent)", + "klasse": 3, + "typ": "passiv", + "gruppe": "Verbindlichkeiten", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "1610" + }, + { + "konto": "3400", + "name": "Verbindlichkeiten gegen verbundene Unternehmen", + "klasse": 3, + "typ": "passiv", + "gruppe": "Verbindlichkeiten", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "1720" + }, + { + "konto": "3500", + "name": "Sonstige Verbindlichkeiten (langfristig)", + "klasse": 3, + "typ": "passiv", + "gruppe": "Verbindlichkeiten", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "0790" + }, + { + "konto": "3520", + "name": "Verbindlichkeiten aus Steuern und Abgaben", + "klasse": 3, + "typ": "passiv", + "gruppe": "Verbindlichkeiten", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "1740" + }, + { + "konto": "3720", + "name": "Verbindlichkeiten aus Lohn und Gehalt", + "klasse": 3, + "typ": "passiv", + "gruppe": "Verbindlichkeiten", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "1741" + }, + { + "konto": "3730", + "name": "Lohnsteuer", + "klasse": 3, + "typ": "passiv", + "gruppe": "Verbindlichkeiten", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "1755" + }, + { + "konto": "3731", + "name": "Solidaritätszuschlag", + "klasse": 3, + "typ": "passiv", + "gruppe": "Verbindlichkeiten", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "1756" + }, + { + "konto": "3732", + "name": "Kirchensteuer", + "klasse": 3, + "typ": "passiv", + "gruppe": "Verbindlichkeiten", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "1757" + }, + { + "konto": "3740", + "name": "Verbindlichkeiten im Rahmen der sozialen Sicherheit", + "klasse": 3, + "typ": "passiv", + "gruppe": "Verbindlichkeiten", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "1750" + }, + { + "konto": "3800", + "name": "Umsatzsteuer", + "klasse": 3, + "typ": "passiv", + "gruppe": "Umsatzsteuer", + "ust_relevant": true, + "steuerschluessel": [], + "skr03": "1770" + }, + { + "konto": "3801", + "name": "Umsatzsteuer 7%", + "klasse": 3, + "typ": "passiv", + "gruppe": "Umsatzsteuer", + "ust_relevant": true, + "steuerschluessel": [], + "skr03": "1770" + }, + { + "konto": "3806", + "name": "Umsatzsteuer 19%", + "klasse": 3, + "typ": "passiv", + "gruppe": "Umsatzsteuer", + "ust_relevant": true, + "steuerschluessel": [], + "skr03": "1775" + }, + { + "konto": "3807", + "name": "Umsatzsteuer aus innergemeinschaftlichem Erwerb 19%", + "klasse": 3, + "typ": "passiv", + "gruppe": "Umsatzsteuer", + "ust_relevant": true, + "steuerschluessel": [], + "skr03": "1776" + }, + { + "konto": "3820", + "name": "Umsatzsteuervorauszahlung", + "klasse": 3, + "typ": "passiv", + "gruppe": "Umsatzsteuer", + "ust_relevant": true, + "steuerschluessel": [], + "skr03": "1760" + }, + { + "konto": "3841", + "name": "Umsatzsteuer laufendes Jahr", + "klasse": 3, + "typ": "passiv", + "gruppe": "Umsatzsteuer", + "ust_relevant": true, + "steuerschluessel": [], + "skr03": "1789" + }, + { + "konto": "3845", + "name": "Umsatzsteuer frühere Jahre", + "klasse": 3, + "typ": "passiv", + "gruppe": "Umsatzsteuer", + "ust_relevant": true, + "steuerschluessel": [], + "skr03": "1771" + }, + { + "konto": "4100", + "name": "Steuerfreie Umsätze §4 Nr. 1a UStG (Ausfuhrlieferungen)", + "klasse": 4, + "typ": "ertrag", + "gruppe": "Erlöse", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "8100" + }, + { + "konto": "4120", + "name": "Steuerfreie innergemeinschaftliche Lieferungen §4 Nr.1b UStG", + "klasse": 4, + "typ": "ertrag", + "gruppe": "Erlöse", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "8110" + }, + { + "konto": "4125", + "name": "Steuerfreie innergemeinschaftliche Lieferungen §4 Nr.1b UStG", + "klasse": 4, + "typ": "ertrag", + "gruppe": "Erlöse", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "8120" + }, + { + "konto": "4130", + "name": "Steuerfreie ig. Lieferungen an Abnehmer mit USt-IdNr.", + "klasse": 4, + "typ": "ertrag", + "gruppe": "Erlöse", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "8125" + }, + { + "konto": "4140", + "name": "Steuerfreie Umsätze nach §4 Nr.12 UStG (Vermietung)", + "klasse": 4, + "typ": "ertrag", + "gruppe": "Erlöse", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "8130" + }, + { + "konto": "4145", + "name": "Steuerfreie Umsätze §4 Nr.14 ff UStG (Heilberufe)", + "klasse": 4, + "typ": "ertrag", + "gruppe": "Erlöse", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "8135" + }, + { + "konto": "4150", + "name": "Sonstige steuerfreie Umsätze (Inland)", + "klasse": 4, + "typ": "ertrag", + "gruppe": "Erlöse", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "8150" + }, + { + "konto": "4190", + "name": "Erlöse aus im Inland steuerpflichtigen EU-Lieferungen", + "klasse": 4, + "typ": "ertrag", + "gruppe": "Erlöse", + "ust_relevant": true, + "steuerschluessel": [ + 1 + ], + "skr03": "8190" + }, + { + "konto": "4200", + "name": "Erlöse", + "klasse": 4, + "typ": "ertrag", + "gruppe": "Erlöse", + "ust_relevant": true, + "steuerschluessel": [ + 1, + 2 + ], + "skr03": "8200" + }, + { + "konto": "4300", + "name": "Erlöse 7% USt", + "klasse": 4, + "typ": "ertrag", + "gruppe": "Erlöse", + "ust_relevant": true, + "steuerschluessel": [ + 2 + ], + "skr03": "8300" + }, + { + "konto": "4310", + "name": "Erlöse aus Leistungen 7% USt", + "klasse": 4, + "typ": "ertrag", + "gruppe": "Erlöse", + "ust_relevant": true, + "steuerschluessel": [ + 2 + ], + "skr03": "8310" + }, + { + "konto": "4320", + "name": "Erlöse Abfallverwertung", + "klasse": 4, + "typ": "ertrag", + "gruppe": "Erlöse", + "ust_relevant": true, + "steuerschluessel": [ + 1 + ], + "skr03": "8320" + }, + { + "konto": "4335", + "name": "Erlöse 19% USt (aus Anlagenverkäufen)", + "klasse": 4, + "typ": "ertrag", + "gruppe": "Erlöse", + "ust_relevant": true, + "steuerschluessel": [ + 1 + ], + "skr03": "8335" + }, + { + "konto": "4337", + "name": "Erlöse 19% USt (Sachanlagen Restbuchwert)", + "klasse": 4, + "typ": "ertrag", + "gruppe": "Erlöse", + "ust_relevant": true, + "steuerschluessel": [ + 1 + ], + "skr03": "8337" + }, + { + "konto": "4340", + "name": "Erlöse Provisionsumsätze", + "klasse": 4, + "typ": "ertrag", + "gruppe": "Erlöse", + "ust_relevant": true, + "steuerschluessel": [ + 1 + ], + "skr03": "8340" + }, + { + "konto": "4400", + "name": "Erlöse 19% USt", + "klasse": 4, + "typ": "ertrag", + "gruppe": "Erlöse", + "ust_relevant": true, + "steuerschluessel": [ + 1 + ], + "skr03": "8400" + }, + { + "konto": "4500", + "name": "Provisionserlöse", + "klasse": 4, + "typ": "ertrag", + "gruppe": "Erlöse", + "ust_relevant": true, + "steuerschluessel": [ + 1 + ], + "skr03": "8500" + }, + { + "konto": "4510", + "name": "Erlöse aus Vermietung und Verpachtung", + "klasse": 4, + "typ": "ertrag", + "gruppe": "Erlöse", + "ust_relevant": true, + "steuerschluessel": [ + 1 + ], + "skr03": "8510" + }, + { + "konto": "4519", + "name": "Erlöse aus Vermietung/Verpachtung 19% USt", + "klasse": 4, + "typ": "ertrag", + "gruppe": "Erlöse", + "ust_relevant": true, + "steuerschluessel": [ + 1 + ], + "skr03": "8519" + }, + { + "konto": "4520", + "name": "Erlöse aus Vermittlung", + "klasse": 4, + "typ": "ertrag", + "gruppe": "Erlöse", + "ust_relevant": true, + "steuerschluessel": [ + 1 + ], + "skr03": "8520" + }, + { + "konto": "4590", + "name": "Sachbezüge 19% USt", + "klasse": 4, + "typ": "ertrag", + "gruppe": "Erlöse", + "ust_relevant": true, + "steuerschluessel": [ + 1 + ], + "skr03": "8591" + }, + { + "konto": "4600", + "name": "Erlösschmälerungen", + "klasse": 4, + "typ": "ertrag", + "gruppe": "Erlöse", + "ust_relevant": true, + "steuerschluessel": [ + 1, + 2 + ], + "skr03": "8600" + }, + { + "konto": "4610", + "name": "Erlösschmälerungen 7% USt", + "klasse": 4, + "typ": "ertrag", + "gruppe": "Erlöse", + "ust_relevant": true, + "steuerschluessel": [ + 2 + ], + "skr03": "8610" + }, + { + "konto": "4620", + "name": "Erlösschmälerungen 19% USt", + "klasse": 4, + "typ": "ertrag", + "gruppe": "Erlöse", + "ust_relevant": true, + "steuerschluessel": [ + 1 + ], + "skr03": "8620" + }, + { + "konto": "4710", + "name": "Gewährte Skonti", + "klasse": 4, + "typ": "ertrag", + "gruppe": "Erlöse", + "ust_relevant": true, + "steuerschluessel": [ + 1, + 2 + ], + "skr03": "8710" + }, + { + "konto": "4720", + "name": "Gewährte Boni", + "klasse": 4, + "typ": "ertrag", + "gruppe": "Erlöse", + "ust_relevant": true, + "steuerschluessel": [ + 1, + 2 + ], + "skr03": "8720" + }, + { + "konto": "4730", + "name": "Gewährte Skonti", + "klasse": 4, + "typ": "ertrag", + "gruppe": "Erlöse", + "ust_relevant": true, + "steuerschluessel": [ + 1, + 2 + ], + "skr03": "8730" + }, + { + "konto": "4735", + "name": "Erlösschmälerungen 7% USt", + "klasse": 4, + "typ": "ertrag", + "gruppe": "Erlöse", + "ust_relevant": true, + "steuerschluessel": [ + 2 + ], + "skr03": "8735" + }, + { + "konto": "4736", + "name": "Gewährte Skonti 19% USt", + "klasse": 4, + "typ": "ertrag", + "gruppe": "Erlöse", + "ust_relevant": true, + "steuerschluessel": [ + 1 + ], + "skr03": "8736" + }, + { + "konto": "4740", + "name": "Gutschriften", + "klasse": 4, + "typ": "ertrag", + "gruppe": "Erlöse", + "ust_relevant": true, + "steuerschluessel": [ + 1, + 2 + ], + "skr03": "8740" + }, + { + "konto": "4750", + "name": "Kapitalerträge", + "klasse": 4, + "typ": "ertrag", + "gruppe": "Erlöse", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "8750" + }, + { + "konto": "4760", + "name": "Erträge aus Beteiligungen", + "klasse": 4, + "typ": "ertrag", + "gruppe": "Erlöse", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "8760" + }, + { + "konto": "4820", + "name": "Erträge aus der Auflösung von Rückstellungen", + "klasse": 4, + "typ": "ertrag", + "gruppe": "Erlöse", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "8820" + }, + { + "konto": "4830", + "name": "Erlöse Abfallverwertung", + "klasse": 4, + "typ": "ertrag", + "gruppe": "Erlöse", + "ust_relevant": true, + "steuerschluessel": [ + 1 + ], + "skr03": "8800" + }, + { + "konto": "4840", + "name": "Erträge aus Kursdifferenzen", + "klasse": 4, + "typ": "ertrag", + "gruppe": "Erlöse", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "8940" + }, + { + "konto": "4845", + "name": "Erlöse aus Anlagenverkäufen", + "klasse": 4, + "typ": "ertrag", + "gruppe": "Erlöse", + "ust_relevant": true, + "steuerschluessel": [ + 1 + ], + "skr03": "8700" + }, + { + "konto": "4900", + "name": "Private Kfz-Nutzung", + "klasse": 4, + "typ": "ertrag", + "gruppe": "Erlöse", + "ust_relevant": true, + "steuerschluessel": [ + 1 + ], + "skr03": "8900" + }, + { + "konto": "4910", + "name": "Private Telefonnutzung", + "klasse": 4, + "typ": "ertrag", + "gruppe": "Erlöse", + "ust_relevant": true, + "steuerschluessel": [ + 1 + ], + "skr03": "8910" + }, + { + "konto": "4920", + "name": "Verwendung von Gegenständen für Zwecke außerhalb des Unternehmens", + "klasse": 4, + "typ": "ertrag", + "gruppe": "Erlöse", + "ust_relevant": true, + "steuerschluessel": [ + 1 + ], + "skr03": "8920" + }, + { + "konto": "4950", + "name": "Sonstige betriebliche Erträge", + "klasse": 4, + "typ": "ertrag", + "gruppe": "Erlöse", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "8950" + }, + { + "konto": "4955", + "name": "Nicht steuerbare Umsätze", + "klasse": 4, + "typ": "ertrag", + "gruppe": "Erlöse", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "8955" + }, + { + "konto": "4960", + "name": "Erträge aus Zuschreibungen (Sachanlagen)", + "klasse": 4, + "typ": "ertrag", + "gruppe": "Erlöse", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "8960" + }, + { + "konto": "4970", + "name": "Erträge aus Zuschreibungen (Finanzanlagen)", + "klasse": 4, + "typ": "ertrag", + "gruppe": "Erlöse", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "8970" + }, + { + "konto": "4975", + "name": "Erträge aus der Herabsetzung der Pauschalwertberichtigung", + "klasse": 4, + "typ": "ertrag", + "gruppe": "Erlöse", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "8975" + }, + { + "konto": "4980", + "name": "Außerordentliche Erträge", + "klasse": 4, + "typ": "ertrag", + "gruppe": "Erlöse", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "8980" + }, + { + "konto": "5000", + "name": "Aufwendungen für Roh-, Hilfs- und Betriebsstoffe", + "klasse": 5, + "typ": "aufwand", + "gruppe": "Materialaufwand und Wareneinsatz", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "2000" + }, + { + "konto": "5020", + "name": "Bestandsveränderungen Roh-, Hilfs- und Betriebsstoffe", + "klasse": 5, + "typ": "aufwand", + "gruppe": "Materialaufwand und Wareneinsatz", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "2010" + }, + { + "konto": "5200", + "name": "Wareneingang", + "klasse": 5, + "typ": "aufwand", + "gruppe": "Materialaufwand und Wareneinsatz", + "ust_relevant": true, + "steuerschluessel": [ + 9, + 8 + ], + "skr03": "3200" + }, + { + "konto": "5300", + "name": "Wareneingang 7% Vorsteuer", + "klasse": 5, + "typ": "aufwand", + "gruppe": "Materialaufwand und Wareneinsatz", + "ust_relevant": true, + "steuerschluessel": [ + 8 + ], + "skr03": "3300" + }, + { + "konto": "5400", + "name": "Wareneingang 19% Vorsteuer", + "klasse": 5, + "typ": "aufwand", + "gruppe": "Materialaufwand und Wareneinsatz", + "ust_relevant": true, + "steuerschluessel": [ + 9 + ], + "skr03": "3400" + }, + { + "konto": "5425", + "name": "Innergemeinschaftlicher Erwerb 7% Vorsteuer und 7% Umsatzsteuer", + "klasse": 5, + "typ": "aufwand", + "gruppe": "Materialaufwand und Wareneinsatz", + "ust_relevant": true, + "steuerschluessel": [ + 8 + ], + "skr03": "3425" + }, + { + "konto": "5435", + "name": "Innergemeinschaftlicher Erwerb 19% Vorsteuer und 19% Umsatzsteuer", + "klasse": 5, + "typ": "aufwand", + "gruppe": "Materialaufwand und Wareneinsatz", + "ust_relevant": true, + "steuerschluessel": [ + 9 + ], + "skr03": "3435" + }, + { + "konto": "5500", + "name": "Wareneingang steuerfrei", + "klasse": 5, + "typ": "aufwand", + "gruppe": "Materialaufwand und Wareneinsatz", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "3500" + }, + { + "konto": "5700", + "name": "Nachlässe aus Wareneingang", + "klasse": 5, + "typ": "aufwand", + "gruppe": "Materialaufwand und Wareneinsatz", + "ust_relevant": true, + "steuerschluessel": [ + 9, + 8 + ], + "skr03": "3700" + }, + { + "konto": "5736", + "name": "Erhaltene Skonti aus Wareneingang 19% Vorsteuer", + "klasse": 5, + "typ": "aufwand", + "gruppe": "Materialaufwand und Wareneinsatz", + "ust_relevant": true, + "steuerschluessel": [ + 9 + ], + "skr03": "3736" + }, + { + "konto": "5800", + "name": "Anschaffungsnebenkosten Wareneingang", + "klasse": 5, + "typ": "aufwand", + "gruppe": "Materialaufwand und Wareneinsatz", + "ust_relevant": true, + "steuerschluessel": [ + 9, + 8 + ], + "skr03": "3800" + }, + { + "konto": "5810", + "name": "Bestandsveränderungen unfertige Erzeugnisse", + "klasse": 5, + "typ": "aufwand", + "gruppe": "Materialaufwand und Wareneinsatz", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "7010" + }, + { + "konto": "5820", + "name": "Bestandsveränderungen unfertige Leistungen", + "klasse": 5, + "typ": "aufwand", + "gruppe": "Materialaufwand und Wareneinsatz", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "7020" + }, + { + "konto": "5880", + "name": "Andere aktivierte Eigenleistungen", + "klasse": 5, + "typ": "aktiv", + "gruppe": "Materialaufwand und Wareneinsatz", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "7080" + }, + { + "konto": "5900", + "name": "Fremdleistungen", + "klasse": 5, + "typ": "aufwand", + "gruppe": "Materialaufwand und Wareneinsatz", + "ust_relevant": true, + "steuerschluessel": [ + 9, + 8 + ], + "skr03": "3100" + }, + { + "konto": "5920", + "name": "Bauleistungen eines im Inland ansässigen Unternehmers 19% Vorsteuer und 19% Umsatzsteuer", + "klasse": 5, + "typ": "aufwand", + "gruppe": "Materialaufwand und Wareneinsatz", + "ust_relevant": true, + "steuerschluessel": [ + 9 + ], + "skr03": "3120" + }, + { + "konto": "5923", + "name": "Leistungen eines im anderen EU-Land ansässigen Unternehmens (19% VSt/19% USt)", + "klasse": 5, + "typ": "aufwand", + "gruppe": "Materialaufwand und Wareneinsatz", + "ust_relevant": true, + "steuerschluessel": [ + 9 + ], + "skr03": "3123" + }, + { + "konto": "5960", + "name": "Bestandsveränderungen fertige Erzeugnisse", + "klasse": 5, + "typ": "aufwand", + "gruppe": "Materialaufwand und Wareneinsatz", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "3960" + }, + { + "konto": "6000", + "name": "Löhne", + "klasse": 6, + "typ": "aufwand", + "gruppe": "Betriebliche Aufwendungen", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "4100" + }, + { + "konto": "6010", + "name": "Löhne für Minijobber", + "klasse": 6, + "typ": "aufwand", + "gruppe": "Betriebliche Aufwendungen", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "4110" + }, + { + "konto": "6020", + "name": "Gehälter", + "klasse": 6, + "typ": "aufwand", + "gruppe": "Betriebliche Aufwendungen", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "4120" + }, + { + "konto": "6024", + "name": "Geschäftsführergehälter GmbH", + "klasse": 6, + "typ": "aufwand", + "gruppe": "Betriebliche Aufwendungen", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "4125" + }, + { + "konto": "6050", + "name": "Aushilfslöhne", + "klasse": 6, + "typ": "aufwand", + "gruppe": "Betriebliche Aufwendungen", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "4190" + }, + { + "konto": "6060", + "name": "Fahrgeldzuschüsse", + "klasse": 6, + "typ": "aufwand", + "gruppe": "Betriebliche Aufwendungen", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "4170" + }, + { + "konto": "6070", + "name": "Lohnsteuer-Nachzahlung, pauschale Lohnsteuer", + "klasse": 6, + "typ": "aufwand", + "gruppe": "Betriebliche Aufwendungen", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "4199" + }, + { + "konto": "6110", + "name": "Gesetzliche soziale Aufwendungen", + "klasse": 6, + "typ": "aufwand", + "gruppe": "Betriebliche Aufwendungen", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "4130" + }, + { + "konto": "6120", + "name": "Beiträge zur Berufsgenossenschaft", + "klasse": 6, + "typ": "aufwand", + "gruppe": "Betriebliche Aufwendungen", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "4138" + }, + { + "konto": "6130", + "name": "Freiwillige soziale Aufwendungen", + "klasse": 6, + "typ": "aufwand", + "gruppe": "Betriebliche Aufwendungen", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "4140" + }, + { + "konto": "6140", + "name": "Freiwillige Krankenversicherung", + "klasse": 6, + "typ": "aufwand", + "gruppe": "Betriebliche Aufwendungen", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "4145" + }, + { + "konto": "6150", + "name": "Vermögenswirksame Leistungen", + "klasse": 6, + "typ": "aufwand", + "gruppe": "Betriebliche Aufwendungen", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "4150" + }, + { + "konto": "6200", + "name": "Abschreibungen auf immaterielle Vermögensgegenstände", + "klasse": 6, + "typ": "aufwand", + "gruppe": "Betriebliche Aufwendungen", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "4824" + }, + { + "konto": "6220", + "name": "Abschreibungen auf Sachanlagen", + "klasse": 6, + "typ": "aufwand", + "gruppe": "Betriebliche Aufwendungen", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "4822" + }, + { + "konto": "6230", + "name": "Abschreibungen auf Sachanlagen (außerplanmäßig)", + "klasse": 6, + "typ": "aufwand", + "gruppe": "Betriebliche Aufwendungen", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "4830" + }, + { + "konto": "6260", + "name": "Sofortabschreibung GWG", + "klasse": 6, + "typ": "aufwand", + "gruppe": "Betriebliche Aufwendungen", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "4855" + }, + { + "konto": "6300", + "name": "Raumkosten", + "klasse": 6, + "typ": "aufwand", + "gruppe": "Betriebliche Aufwendungen", + "ust_relevant": true, + "steuerschluessel": [ + 9 + ], + "skr03": "4200" + }, + { + "konto": "6305", + "name": "Sonstige Aufwendungen betrieblich und regelmäßig", + "klasse": 6, + "typ": "aufwand", + "gruppe": "Betriebliche Aufwendungen", + "ust_relevant": true, + "steuerschluessel": [ + 9 + ], + "skr03": "4905" + }, + { + "konto": "6310", + "name": "Miete (unbewegliche Wirtschaftsgüter)", + "klasse": 6, + "typ": "aufwand", + "gruppe": "Betriebliche Aufwendungen", + "ust_relevant": true, + "steuerschluessel": [ + 9 + ], + "skr03": "4210" + }, + { + "konto": "6315", + "name": "Pacht", + "klasse": 6, + "typ": "aufwand", + "gruppe": "Betriebliche Aufwendungen", + "ust_relevant": true, + "steuerschluessel": [ + 9 + ], + "skr03": "4220" + }, + { + "konto": "6325", + "name": "Heizung", + "klasse": 6, + "typ": "aufwand", + "gruppe": "Betriebliche Aufwendungen", + "ust_relevant": true, + "steuerschluessel": [ + 9 + ], + "skr03": "4230" + }, + { + "konto": "6330", + "name": "Gas, Strom, Wasser", + "klasse": 6, + "typ": "aufwand", + "gruppe": "Betriebliche Aufwendungen", + "ust_relevant": true, + "steuerschluessel": [ + 9 + ], + "skr03": "4240" + }, + { + "konto": "6335", + "name": "Reinigung", + "klasse": 6, + "typ": "aufwand", + "gruppe": "Betriebliche Aufwendungen", + "ust_relevant": true, + "steuerschluessel": [ + 9 + ], + "skr03": "4250" + }, + { + "konto": "6340", + "name": "Instandhaltung betrieblicher Räume", + "klasse": 6, + "typ": "aufwand", + "gruppe": "Betriebliche Aufwendungen", + "ust_relevant": true, + "steuerschluessel": [ + 9 + ], + "skr03": "4260" + }, + { + "konto": "6345", + "name": "Sonstige Raumkosten", + "klasse": 6, + "typ": "aufwand", + "gruppe": "Betriebliche Aufwendungen", + "ust_relevant": true, + "steuerschluessel": [ + 9 + ], + "skr03": "4280" + }, + { + "konto": "6400", + "name": "Versicherungen", + "klasse": 6, + "typ": "aufwand", + "gruppe": "Betriebliche Aufwendungen", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "4360" + }, + { + "konto": "6420", + "name": "Beiträge", + "klasse": 6, + "typ": "aufwand", + "gruppe": "Betriebliche Aufwendungen", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "4380" + }, + { + "konto": "6430", + "name": "Sonstige Abgaben", + "klasse": 6, + "typ": "aufwand", + "gruppe": "Betriebliche Aufwendungen", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "4390" + }, + { + "konto": "6460", + "name": "Reparaturen und Instandhaltungen", + "klasse": 6, + "typ": "aufwand", + "gruppe": "Betriebliche Aufwendungen", + "ust_relevant": true, + "steuerschluessel": [ + 9 + ], + "skr03": "4800" + }, + { + "konto": "6475", + "name": "Wartungskosten für Hard- und Software", + "klasse": 6, + "typ": "aufwand", + "gruppe": "Betriebliche Aufwendungen", + "ust_relevant": true, + "steuerschluessel": [ + 9 + ], + "skr03": "4805" + }, + { + "konto": "6476", + "name": "Wartungskosten für Software", + "klasse": 6, + "typ": "aufwand", + "gruppe": "Betriebliche Aufwendungen", + "ust_relevant": true, + "steuerschluessel": [ + 9 + ], + "skr03": "4806" + }, + { + "konto": "6500", + "name": "Fahrzeugkosten", + "klasse": 6, + "typ": "aufwand", + "gruppe": "Betriebliche Aufwendungen", + "ust_relevant": true, + "steuerschluessel": [ + 9 + ], + "skr03": "4500" + }, + { + "konto": "6520", + "name": "Kfz-Steuern", + "klasse": 6, + "typ": "aufwand", + "gruppe": "Betriebliche Aufwendungen", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "4510" + }, + { + "konto": "6530", + "name": "Laufende Kfz-Betriebskosten", + "klasse": 6, + "typ": "aufwand", + "gruppe": "Betriebliche Aufwendungen", + "ust_relevant": true, + "steuerschluessel": [ + 9 + ], + "skr03": "4530" + }, + { + "konto": "6540", + "name": "Kfz-Versicherungen", + "klasse": 6, + "typ": "aufwand", + "gruppe": "Betriebliche Aufwendungen", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "4520" + }, + { + "konto": "6545", + "name": "Kfz-Reparaturen", + "klasse": 6, + "typ": "aufwand", + "gruppe": "Betriebliche Aufwendungen", + "ust_relevant": true, + "steuerschluessel": [ + 9 + ], + "skr03": "4540" + }, + { + "konto": "6550", + "name": "Kfz-Mietleasing", + "klasse": 6, + "typ": "aufwand", + "gruppe": "Betriebliche Aufwendungen", + "ust_relevant": true, + "steuerschluessel": [ + 9 + ], + "skr03": "4550" + }, + { + "konto": "6570", + "name": "Fremdfahrzeuge", + "klasse": 6, + "typ": "aufwand", + "gruppe": "Betriebliche Aufwendungen", + "ust_relevant": true, + "steuerschluessel": [ + 9 + ], + "skr03": "4570" + }, + { + "konto": "6580", + "name": "Sonstige Fahrzeugkosten", + "klasse": 6, + "typ": "aufwand", + "gruppe": "Betriebliche Aufwendungen", + "ust_relevant": true, + "steuerschluessel": [ + 9 + ], + "skr03": "4580" + }, + { + "konto": "6600", + "name": "Werbekosten", + "klasse": 6, + "typ": "aufwand", + "gruppe": "Betriebliche Aufwendungen", + "ust_relevant": true, + "steuerschluessel": [ + 9 + ], + "skr03": "4600" + }, + { + "konto": "6610", + "name": "Werbekosten (abziehbar)", + "klasse": 6, + "typ": "aufwand", + "gruppe": "Betriebliche Aufwendungen", + "ust_relevant": true, + "steuerschluessel": [ + 9 + ], + "skr03": "4610" + }, + { + "konto": "6620", + "name": "Geschenke abziehbar ohne §37b EStG", + "klasse": 6, + "typ": "aufwand", + "gruppe": "Betriebliche Aufwendungen", + "ust_relevant": true, + "steuerschluessel": [ + 9 + ], + "skr03": "4630", + "notes": "Abziehbar bis 50€ pro Empfänger/Jahr (seit 2024)" + }, + { + "konto": "6625", + "name": "Geschenke nicht abziehbar ohne §37b EStG", + "klasse": 6, + "typ": "aufwand", + "gruppe": "Betriebliche Aufwendungen", + "ust_relevant": true, + "steuerschluessel": [ + 9 + ], + "skr03": "4635", + "notes": "Über 50€ pro Empfänger/Jahr" + }, + { + "konto": "6630", + "name": "Repräsentationskosten", + "klasse": 6, + "typ": "aufwand", + "gruppe": "Betriebliche Aufwendungen", + "ust_relevant": true, + "steuerschluessel": [ + 9 + ], + "skr03": "4640" + }, + { + "konto": "6640", + "name": "Bewirtungskosten", + "klasse": 6, + "typ": "aufwand", + "gruppe": "Betriebliche Aufwendungen", + "ust_relevant": true, + "steuerschluessel": [ + 9 + ], + "skr03": "4650", + "notes": "70% abziehbar (§4 Abs.5 Nr.2 EStG). Beleg mit Angabe der bewirteten Personen erforderlich" + }, + { + "konto": "6644", + "name": "Nicht abzugsfähige Bewirtungskosten", + "klasse": 6, + "typ": "aufwand", + "gruppe": "Betriebliche Aufwendungen", + "ust_relevant": true, + "steuerschluessel": [ + 9 + ], + "skr03": "4654" + }, + { + "konto": "6650", + "name": "Reisekosten Arbeitnehmer", + "klasse": 6, + "typ": "aufwand", + "gruppe": "Betriebliche Aufwendungen", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "4660" + }, + { + "konto": "6660", + "name": "Reisekosten Arbeitnehmer Fahrtkosten", + "klasse": 6, + "typ": "aufwand", + "gruppe": "Betriebliche Aufwendungen", + "ust_relevant": true, + "steuerschluessel": [ + 9 + ], + "skr03": "4663" + }, + { + "konto": "6664", + "name": "Reisekosten Arbeitnehmer Verpflegung", + "klasse": 6, + "typ": "aufwand", + "gruppe": "Betriebliche Aufwendungen", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "4664" + }, + { + "konto": "6668", + "name": "Reisekosten Arbeitnehmer Übernachtung", + "klasse": 6, + "typ": "aufwand", + "gruppe": "Betriebliche Aufwendungen", + "ust_relevant": true, + "steuerschluessel": [ + 9, + 8 + ], + "skr03": "4666" + }, + { + "konto": "6670", + "name": "Reisekosten Unternehmer", + "klasse": 6, + "typ": "aufwand", + "gruppe": "Betriebliche Aufwendungen", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "4670" + }, + { + "konto": "6673", + "name": "Reisekosten Unternehmer Fahrtkosten", + "klasse": 6, + "typ": "aufwand", + "gruppe": "Betriebliche Aufwendungen", + "ust_relevant": true, + "steuerschluessel": [ + 9 + ], + "skr03": "4673" + }, + { + "konto": "6674", + "name": "Reisekosten Unternehmer Verpflegung", + "klasse": 6, + "typ": "aufwand", + "gruppe": "Betriebliche Aufwendungen", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "4674" + }, + { + "konto": "6680", + "name": "Reisekosten Unternehmer Übernachtung", + "klasse": 6, + "typ": "aufwand", + "gruppe": "Betriebliche Aufwendungen", + "ust_relevant": true, + "steuerschluessel": [ + 9, + 8 + ], + "skr03": "4676" + }, + { + "konto": "6700", + "name": "Kosten der Warenabgabe", + "klasse": 6, + "typ": "aufwand", + "gruppe": "Betriebliche Aufwendungen", + "ust_relevant": true, + "steuerschluessel": [ + 9 + ], + "skr03": "4700" + }, + { + "konto": "6730", + "name": "Ausgangsfrachten", + "klasse": 6, + "typ": "aufwand", + "gruppe": "Betriebliche Aufwendungen", + "ust_relevant": true, + "steuerschluessel": [ + 9 + ], + "skr03": "4730" + }, + { + "konto": "6740", + "name": "Verpackungsmaterial", + "klasse": 6, + "typ": "aufwand", + "gruppe": "Betriebliche Aufwendungen", + "ust_relevant": true, + "steuerschluessel": [ + 9 + ], + "skr03": "4710" + }, + { + "konto": "6780", + "name": "Aufwendungen für Gewährleistungen", + "klasse": 6, + "typ": "aufwand", + "gruppe": "Betriebliche Aufwendungen", + "ust_relevant": true, + "steuerschluessel": [ + 9 + ], + "skr03": "4750" + }, + { + "konto": "6800", + "name": "Porto", + "klasse": 6, + "typ": "aufwand", + "gruppe": "Betriebliche Aufwendungen", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "4910" + }, + { + "konto": "6805", + "name": "Telefon", + "klasse": 6, + "typ": "aufwand", + "gruppe": "Betriebliche Aufwendungen", + "ust_relevant": true, + "steuerschluessel": [ + 9 + ], + "skr03": "4920" + }, + { + "konto": "6810", + "name": "Mobilfunk", + "klasse": 6, + "typ": "aufwand", + "gruppe": "Betriebliche Aufwendungen", + "ust_relevant": true, + "steuerschluessel": [ + 9 + ], + "skr03": "4921" + }, + { + "konto": "6815", + "name": "Internetkosten", + "klasse": 6, + "typ": "aufwand", + "gruppe": "Betriebliche Aufwendungen", + "ust_relevant": true, + "steuerschluessel": [ + 9 + ], + "skr03": "4925" + }, + { + "konto": "6820", + "name": "Bürobedarf", + "klasse": 6, + "typ": "aufwand", + "gruppe": "Betriebliche Aufwendungen", + "ust_relevant": true, + "steuerschluessel": [ + 9 + ], + "skr03": "4930" + }, + { + "konto": "6825", + "name": "Zeitschriften, Bücher", + "klasse": 6, + "typ": "aufwand", + "gruppe": "Betriebliche Aufwendungen", + "ust_relevant": true, + "steuerschluessel": [ + 8 + ], + "skr03": "4940" + }, + { + "konto": "6827", + "name": "Abschluss- und Prüfungskosten", + "klasse": 6, + "typ": "aufwand", + "gruppe": "Betriebliche Aufwendungen", + "ust_relevant": true, + "steuerschluessel": [ + 9 + ], + "skr03": "4957" + }, + { + "konto": "6830", + "name": "Fortbildungskosten", + "klasse": 6, + "typ": "aufwand", + "gruppe": "Betriebliche Aufwendungen", + "ust_relevant": true, + "steuerschluessel": [ + 9 + ], + "skr03": "4945" + }, + { + "konto": "6835", + "name": "Fremdleistungen (Nicht-Wareneingang)", + "klasse": 6, + "typ": "aufwand", + "gruppe": "Betriebliche Aufwendungen", + "ust_relevant": true, + "steuerschluessel": [ + 9 + ], + "skr03": "4946" + }, + { + "konto": "6837", + "name": "Aufwendungen für die zeitlich befristete Überlassung von Rechten (Lizenzen, Konzessionen)", + "klasse": 6, + "typ": "aufwand", + "gruppe": "Betriebliche Aufwendungen", + "ust_relevant": true, + "steuerschluessel": [ + 9 + ], + "skr03": "4964" + }, + { + "konto": "6838", + "name": "Aufwendungen für Software (Nutzungsrechte)", + "klasse": 6, + "typ": "aufwand", + "gruppe": "Betriebliche Aufwendungen", + "ust_relevant": true, + "steuerschluessel": [ + 9 + ], + "skr03": "4969" + }, + { + "konto": "6845", + "name": "Werkzeuge und Kleingeräte", + "klasse": 6, + "typ": "aufwand", + "gruppe": "Betriebliche Aufwendungen", + "ust_relevant": true, + "steuerschluessel": [ + 9 + ], + "skr03": "4980" + }, + { + "konto": "6855", + "name": "Nebenkosten des Geldverkehrs", + "klasse": 6, + "typ": "aufwand", + "gruppe": "Betriebliche Aufwendungen", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "4970" + }, + { + "konto": "6930", + "name": "Forderungsverluste", + "klasse": 6, + "typ": "aufwand", + "gruppe": "Betriebliche Aufwendungen", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "2400" + }, + { + "konto": "7100", + "name": "Sonstige Zinsen und ähnliche Erträge", + "klasse": 7, + "typ": "ertrag", + "gruppe": "Weitere Erträge und Aufwendungen", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "2700" + }, + { + "konto": "7300", + "name": "Zinsen und ähnliche Aufwendungen", + "klasse": 7, + "typ": "aufwand", + "gruppe": "Weitere Erträge und Aufwendungen", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "2100" + }, + { + "konto": "7310", + "name": "Zinsaufwendungen für kurzfristige Verbindlichkeiten", + "klasse": 7, + "typ": "aufwand", + "gruppe": "Weitere Erträge und Aufwendungen", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "2110" + }, + { + "konto": "7320", + "name": "Zinsaufwendungen für langfristige Verbindlichkeiten", + "klasse": 7, + "typ": "aufwand", + "gruppe": "Weitere Erträge und Aufwendungen", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "2120" + }, + { + "konto": "7330", + "name": "Diskontaufwendungen", + "klasse": 7, + "typ": "aufwand", + "gruppe": "Weitere Erträge und Aufwendungen", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "2150" + }, + { + "konto": "7500", + "name": "Außerordentliche Aufwendungen", + "klasse": 7, + "typ": "aufwand", + "gruppe": "Weitere Erträge und Aufwendungen", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "2500" + }, + { + "konto": "7600", + "name": "Steuern vom Einkommen und Ertrag", + "klasse": 7, + "typ": "aufwand", + "gruppe": "Weitere Erträge und Aufwendungen", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "2600" + }, + { + "konto": "7610", + "name": "Körperschaftsteuer", + "klasse": 7, + "typ": "aufwand", + "gruppe": "Weitere Erträge und Aufwendungen", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "2650" + }, + { + "konto": "7680", + "name": "Sonstige Aufwendungen für betrieblich veranlasste Abgaben", + "klasse": 7, + "typ": "aufwand", + "gruppe": "Weitere Erträge und Aufwendungen", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "2300" + }, + { + "konto": "9000", + "name": "Saldenvorträge Sachkonten", + "klasse": 9, + "typ": "aktiv", + "gruppe": "Vortrags- und statistische Konten", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "9000" + }, + { + "konto": "9008", + "name": "Saldenvorträge Debitoren", + "klasse": 9, + "typ": "aktiv", + "gruppe": "Vortrags- und statistische Konten", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "9008" + }, + { + "konto": "9009", + "name": "Saldenvorträge Kreditoren", + "klasse": 9, + "typ": "passiv", + "gruppe": "Vortrags- und statistische Konten", + "ust_relevant": false, + "steuerschluessel": [], + "skr03": "9009" + } + ] +} \ No newline at end of file diff --git a/src/index.ts b/src/index.ts new file mode 100644 index 0000000..40a8c9a --- /dev/null +++ b/src/index.ts @@ -0,0 +1,63 @@ +import skr03Data from "./data/skr03.json"; +import skr04Data from "./data/skr04.json"; +import mccData from "./data/mcc_skr_mapping.json"; + +import { Kontenrahmen } from "./kontenrahmen.js"; +import { MCCMapper } from "./mcc.js"; + +export type { + Konto, + AccountSuggestion, + MCCSuggestion, + Confidence, + KontoTyp, +} from "./types.js"; +export { Kontenrahmen } from "./kontenrahmen.js"; +export { MCCMapper } from "./mcc.js"; + +/** + * Pre-loaded SKR03 chart of accounts singleton. + * + * @example + * import { SKR03 } from "german-accounting"; + * const konto = SKR03.get("4650"); + * // { konto: "4650", name: "Bewirtungskosten", klasse: 4, ... } + */ +export const SKR03 = new Kontenrahmen(skr03Data as any); + +/** + * Pre-loaded SKR04 chart of accounts singleton. + * Derived from SKR03 cross-references. Each account has a `skr03` back-reference. + * + * @example + * import { SKR04 } from "german-accounting"; + * const konto = SKR04.get("6640"); + */ +export const SKR04 = new Kontenrahmen(skr04Data as any); + +const _mapper = new MCCMapper(mccData as any); + +/** + * Returns an account suggestion for a given MCC code. + * + * @param mcc - 4-digit ISO 18245 MCC code (e.g. "5812") + * @param skr - Target chart of accounts. Defaults to "SKR03". + * @returns MCCSuggestion with primary account and alternatives, or undefined if unmapped. + * + * @example + * import { suggestAccount } from "german-accounting"; + * + * const suggestion = suggestAccount("5812"); + * // { mcc: "5812", primary: { konto: "4650", confidence: "high" }, ... } + * + * const skr04 = suggestAccount("5812", "SKR04"); + * // { primary: { konto: "6640", name: null, ... }, alternatives: [] } + * + * suggestAccount("9999"); // undefined — MCC not in dataset + */ +export function suggestAccount( + mcc: string, + skr: "SKR03" | "SKR04" = "SKR03" +) { + return _mapper.suggestAccount(mcc, skr); +} diff --git a/src/kontenrahmen.ts b/src/kontenrahmen.ts new file mode 100644 index 0000000..121321a --- /dev/null +++ b/src/kontenrahmen.ts @@ -0,0 +1,66 @@ +import type { Konto } from "./types.js"; + +interface KontoRaw { + konto: string; + name: string; + klasse: number; + typ: string; + gruppe: string; + untergruppe?: string; + ust_relevant: boolean; + steuerschluessel: number[]; + skr04?: string | null; + skr03?: string | null; + notes?: string | null; +} + +interface KontenrahmenData { + konten: KontoRaw[]; +} + +/** + * A loaded chart of accounts (Kontenrahmen). Wraps either skr03.json or skr04.json. + * + * Prefer the pre-built singletons `SKR03` and `SKR04` exported from the package root + * rather than constructing this directly. + */ +export class Kontenrahmen { + private readonly index: ReadonlyMap; + private readonly list: readonly Konto[]; + + constructor(data: KontenrahmenData) { + const konten = data.konten as Konto[]; + this.list = konten; + const map = new Map(); + for (const konto of konten) { + map.set(konto.konto, konto); + } + this.index = map; + } + + /** Look up an account by its 4-digit number. Returns undefined if not found. */ + get(konto: string): Konto | undefined { + return this.index.get(konto); + } + + /** Case-insensitive substring search across account names. */ + search(query: string): readonly Konto[] { + const lower = query.toLowerCase(); + return this.list.filter((k) => k.name.toLowerCase().includes(lower)); + } + + /** All accounts in a given Klasse (0-9). */ + klasse(k: number): readonly Konto[] { + return this.list.filter((konto) => konto.klasse === k); + } + + /** Whether an account number exists in this chart. */ + exists(konto: string): boolean { + return this.index.has(konto); + } + + /** Total number of accounts. */ + get size(): number { + return this.list.length; + } +} diff --git a/src/mcc.ts b/src/mcc.ts new file mode 100644 index 0000000..7a4b42d --- /dev/null +++ b/src/mcc.ts @@ -0,0 +1,125 @@ +import type { AccountSuggestion, Confidence, MCCSuggestion } from "./types.js"; + +interface AlternativeRaw { + konto: string; + condition: string; +} + +interface MappingRaw { + mcc: string; + mcc_name: string; + category: string; + skr03: { + primary: string; + confidence: Confidence; + }; + skr04_primary: string; + alternatives: AlternativeRaw[]; + needs_beleg: boolean; + ust_abzug: boolean; + notes?: string | null; +} + +interface MappingData { + mappings: MappingRaw[]; +} + +/** + * Maps ISO 18245 MCC codes to SKR03/SKR04 account suggestions. + * + * Range entries (e.g. "3000-3350") are expanded into individual MCC keys + * at construction time, so every lookup is O(1). + */ +export class MCCMapper { + private readonly index: ReadonlyMap; + + constructor(data: MappingData) { + const map = new Map(); + + for (const mapping of data.mappings) { + if (mapping.mcc.includes("-")) { + const [startStr, endStr] = mapping.mcc.split("-"); + const start = parseInt(startStr, 10); + const end = parseInt(endStr, 10); + for (let code = start; code <= end; code++) { + map.set(code.toString().padStart(4, "0"), mapping); + } + } else { + map.set(mapping.mcc, mapping); + } + } + + this.index = map; + } + + /** + * Returns an account suggestion for the given MCC code. + * + * @param mcc - 4-digit MCC code string (e.g. "5812") + * @param skr - Which chart of accounts to target. Defaults to "SKR03". + * @returns MCCSuggestion, or undefined if the MCC is not in the dataset. + * + * When skr="SKR04", the primary account is the skr04_primary value. + * The primary name is null (no SKR04 name lookup in v0.1) and alternatives + * is an empty array. + */ + suggestAccount( + mcc: string, + skr: "SKR03" | "SKR04" = "SKR03" + ): MCCSuggestion | undefined { + const mapping = this.index.get(mcc); + if (!mapping) return undefined; + + if (skr === "SKR04") { + if (!mapping.skr04_primary) return undefined; + const primary: AccountSuggestion = { + konto: mapping.skr04_primary, + name: null, + confidence: mapping.skr03.confidence, + condition: null, + }; + return { + mcc, + mcc_name: mapping.mcc_name, + category: mapping.category, + primary, + alternatives: [], + needs_beleg: mapping.needs_beleg, + ust_abzug: mapping.ust_abzug, + notes: mapping.notes ?? null, + }; + } + + const primary: AccountSuggestion = { + konto: mapping.skr03.primary, + name: null, + confidence: mapping.skr03.confidence, + condition: null, + }; + + const alternatives: AccountSuggestion[] = mapping.alternatives.map( + (alt) => ({ + konto: alt.konto, + name: null, + confidence: mapping.skr03.confidence, + condition: alt.condition, + }) + ); + + return { + mcc, + mcc_name: mapping.mcc_name, + category: mapping.category, + primary, + alternatives, + needs_beleg: mapping.needs_beleg, + ust_abzug: mapping.ust_abzug, + notes: mapping.notes ?? null, + }; + } + + /** Total number of unique MCC codes (including expanded range entries). */ + get size(): number { + return this.index.size; + } +} diff --git a/src/types.ts b/src/types.ts new file mode 100644 index 0000000..1efdccb --- /dev/null +++ b/src/types.ts @@ -0,0 +1,47 @@ +export type KontoTyp = "aufwand" | "ertrag" | "aktiv" | "passiv"; +export type Confidence = "high" | "medium" | "low"; + +/** + * A single account in the Standardkontenrahmen (SKR03 or SKR04). + */ +export interface Konto { + /** 4-digit account number, zero-padded (e.g. "4650") */ + readonly konto: string; + readonly name: string; + readonly klasse: number; + readonly typ: KontoTyp; + readonly gruppe: string; + readonly untergruppe?: string; + readonly ust_relevant: boolean; + readonly steuerschluessel: readonly number[]; + /** Cross-reference to corresponding SKR04 account number (SKR03 only) */ + readonly skr04?: string | null; + /** Cross-reference to corresponding SKR03 account number (SKR04 only) */ + readonly skr03?: string | null; + readonly notes?: string | null; +} + +/** + * A single account suggestion within an MCCSuggestion. + */ +export interface AccountSuggestion { + readonly konto: string; + readonly name: string | null; + readonly confidence: Confidence; + readonly condition: string | null; +} + +/** + * Result of suggestAccount() — the primary SKR account for a given MCC, + * plus alternatives with conditions under which they apply. + */ +export interface MCCSuggestion { + readonly mcc: string; + readonly mcc_name: string; + readonly category: string; + readonly primary: AccountSuggestion; + readonly alternatives: readonly AccountSuggestion[]; + readonly needs_beleg: boolean; + readonly ust_abzug: boolean; + readonly notes: string | null; +} diff --git a/tests/data_integrity.test.ts b/tests/data_integrity.test.ts new file mode 100644 index 0000000..5263d76 --- /dev/null +++ b/tests/data_integrity.test.ts @@ -0,0 +1,211 @@ +/** + * Referential integrity tests for the data files. + * These tests are the CI gate: they catch any contribution that references + * a non-existent account number. + */ +import { describe, it, expect } from "vitest"; +import { SKR03 } from "../src/index.js"; +import mccData from "../src/data/mcc_skr_mapping.json"; +import skr04Data from "../src/data/skr04.json"; + +const mappings = mccData.mappings; + +describe("MCC mapping — referential integrity", () => { + it("all primary SKR03 accounts exist in skr03.json", () => { + const missing: string[] = []; + for (const mapping of mappings) { + const primary = mapping.skr03.primary; + if (!SKR03.exists(primary)) { + missing.push(`MCC ${mapping.mcc}: primary "${primary}" not in SKR03`); + } + } + expect(missing).toHaveLength(0); + }); + + it("all alternative SKR03 accounts exist in skr03.json", () => { + const missing: string[] = []; + for (const mapping of mappings) { + for (const alt of mapping.alternatives) { + if (!SKR03.exists(alt.konto)) { + missing.push( + `MCC ${mapping.mcc}: alternative "${alt.konto}" not in SKR03` + ); + } + } + } + expect(missing).toHaveLength(0); + }); + + it("all skr04_primary values are 4-digit strings", () => { + const invalid: string[] = []; + for (const mapping of mappings) { + if (!/^\d{4}$/.test(mapping.skr04_primary)) { + invalid.push( + `MCC ${mapping.mcc}: skr04_primary "${mapping.skr04_primary}" is not 4 digits` + ); + } + } + expect(invalid).toHaveLength(0); + }); + + it("no duplicate MCC codes", () => { + const seen = new Set(); + const duplicates: string[] = []; + for (const mapping of mappings) { + if (seen.has(mapping.mcc)) { + duplicates.push(mapping.mcc); + } + seen.add(mapping.mcc); + } + expect(duplicates).toHaveLength(0); + }); + + it("all MCC ranges are well-formed (start < end, both 4 digits)", () => { + const invalid: string[] = []; + for (const mapping of mappings) { + if (mapping.mcc.includes("-")) { + const [startStr, endStr] = mapping.mcc.split("-"); + const start = parseInt(startStr, 10); + const end = parseInt(endStr, 10); + if ( + !/^\d{4}$/.test(startStr) || + !/^\d{4}$/.test(endStr) || + start >= end + ) { + invalid.push(`MCC range "${mapping.mcc}" is malformed`); + } + } + } + expect(invalid).toHaveLength(0); + }); + + it("confidence values are only high/medium/low", () => { + const valid = new Set(["high", "medium", "low"]); + const invalid: string[] = []; + for (const mapping of mappings) { + if (!valid.has(mapping.skr03.confidence)) { + invalid.push( + `MCC ${mapping.mcc}: confidence "${mapping.skr03.confidence}" is invalid` + ); + } + } + expect(invalid).toHaveLength(0); + }); + + it("all required fields are present", () => { + const missing: string[] = []; + const required = [ + "mcc", + "mcc_name", + "category", + "skr04_primary", + "needs_beleg", + "ust_abzug", + ] as const; + + for (const mapping of mappings) { + for (const field of required) { + if (mapping[field] === undefined || mapping[field] === null || mapping[field] === "") { + missing.push(`MCC ${mapping.mcc}: missing required field "${field}"`); + } + } + if (!mapping.skr03?.primary) { + missing.push(`MCC ${mapping.mcc}: missing skr03.primary`); + } + } + expect(missing).toHaveLength(0); + }); +}); + +describe("SKR03 — structural integrity", () => { + it("all accounts have required fields", () => { + const invalid: string[] = []; + const required = ["konto", "name", "klasse", "typ", "gruppe", "ust_relevant", "steuerschluessel"] as const; + + for (const konto of SKR03.klasse(0).concat( + SKR03.klasse(1), + SKR03.klasse(2), + SKR03.klasse(3), + SKR03.klasse(4), + SKR03.klasse(5), + SKR03.klasse(6), + SKR03.klasse(7), + SKR03.klasse(8), + SKR03.klasse(9) + )) { + for (const field of required) { + if ((konto as any)[field] === undefined) { + invalid.push(`SKR03 ${konto.konto}: missing required field "${field}"`); + } + } + } + expect(invalid).toHaveLength(0); + }); + + it("all account numbers are 4-digit strings", () => { + const invalid: string[] = []; + for (const k of [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]) { + for (const konto of SKR03.klasse(k)) { + if (!/^\d{4}$/.test(konto.konto)) { + invalid.push(`SKR03 konto "${konto.konto}" is not 4 digits`); + } + } + } + expect(invalid).toHaveLength(0); + }); + + it("skr04 cross-references are 4-digit strings or null", () => { + const invalid: string[] = []; + for (const k of [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]) { + for (const konto of SKR03.klasse(k)) { + if (konto.skr04 != null && !/^\d{4}$/.test(konto.skr04)) { + invalid.push( + `SKR03 ${konto.konto}: skr04 cross-ref "${konto.skr04}" is not 4 digits` + ); + } + } + } + expect(invalid).toHaveLength(0); + }); + + it("typ values are only aufwand/ertrag/aktiv/passiv", () => { + const valid = new Set(["aufwand", "ertrag", "aktiv", "passiv"]); + const invalid: string[] = []; + for (const k of [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]) { + for (const konto of SKR03.klasse(k)) { + if (!valid.has(konto.typ)) { + invalid.push(`SKR03 ${konto.konto}: typ "${konto.typ}" is invalid`); + } + } + } + expect(invalid).toHaveLength(0); + }); +}); + +describe("SKR04 — structural integrity", () => { + it("all account numbers are 4-digit strings", () => { + const invalid: string[] = []; + for (const konto of skr04Data.konten) { + if (!/^\d{4}$/.test(konto.konto)) { + invalid.push(`SKR04 konto "${konto.konto}" is not 4 digits`); + } + } + expect(invalid).toHaveLength(0); + }); + + it("skr03 back-references are 4-digit strings or null", () => { + const invalid: string[] = []; + for (const konto of skr04Data.konten) { + if (konto.skr03 != null && !/^\d{4}$/.test(konto.skr03)) { + invalid.push( + `SKR04 ${konto.konto}: skr03 back-ref "${konto.skr03}" is not 4 digits` + ); + } + } + expect(invalid).toHaveLength(0); + }); + + it("has at least 200 accounts", () => { + expect(skr04Data.konten.length).toBeGreaterThanOrEqual(200); + }); +}); diff --git a/tests/kontenrahmen.test.ts b/tests/kontenrahmen.test.ts new file mode 100644 index 0000000..2f197b7 --- /dev/null +++ b/tests/kontenrahmen.test.ts @@ -0,0 +1,125 @@ +import { describe, it, expect } from "vitest"; +import { SKR03, SKR04 } from "../src/index.js"; + +describe("SKR03 — get()", () => { + it("returns a Konto for a known account", () => { + const konto = SKR03.get("4650"); + expect(konto).toBeDefined(); + expect(konto?.konto).toBe("4650"); + expect(konto?.name).toBe("Bewirtungskosten"); + expect(konto?.klasse).toBe(4); + expect(konto?.typ).toBe("aufwand"); + }); + + it("returns undefined for an unknown account", () => { + expect(SKR03.get("9999")).toBeUndefined(); + expect(SKR03.get("")).toBeUndefined(); + }); + + it("returns zero-padded accounts correctly", () => { + const konto = SKR03.get("0001"); + expect(konto).toBeDefined(); + expect(konto?.klasse).toBe(0); + }); +}); + +describe("SKR03 — exists()", () => { + it("returns true for known accounts", () => { + expect(SKR03.exists("4650")).toBe(true); + expect(SKR03.exists("4900")).toBe(true); + }); + + it("returns false for unknown accounts", () => { + expect(SKR03.exists("9999")).toBe(false); + expect(SKR03.exists("0000")).toBe(false); + }); +}); + +describe("SKR03 — search()", () => { + it("finds accounts by substring (case-insensitive)", () => { + const results = SKR03.search("Reisekosten"); + expect(results.length).toBeGreaterThan(0); + for (const konto of results) { + expect(konto.name.toLowerCase()).toContain("reisekosten"); + } + }); + + it("finds accounts with lowercase query", () => { + const results = SKR03.search("kfz"); + expect(results.length).toBeGreaterThan(0); + }); + + it("returns empty array for no match", () => { + const results = SKR03.search("XYZNOTFOUND"); + expect(results).toHaveLength(0); + }); +}); + +describe("SKR03 — klasse()", () => { + it("returns all accounts in Klasse 4 (expenses)", () => { + const results = SKR03.klasse(4); + expect(results.length).toBeGreaterThan(0); + for (const konto of results) { + expect(konto.klasse).toBe(4); + } + }); + + it("returns accounts in Klasse 0 (fixed assets)", () => { + const results = SKR03.klasse(0); + expect(results.length).toBeGreaterThan(0); + }); + + it("returns empty array for empty Klasse", () => { + // Klasse 9 is typically empty or sparse in SME-focused datasets + const results = SKR03.klasse(9); + expect(Array.isArray(results)).toBe(true); + }); +}); + +describe("SKR03 — data shape", () => { + it("has at least 200 accounts", () => { + expect(SKR03.size).toBeGreaterThanOrEqual(200); + }); + + it("accounts have required fields", () => { + const konto = SKR03.get("4650"); + expect(konto).toMatchObject({ + konto: expect.any(String), + name: expect.any(String), + klasse: expect.any(Number), + typ: expect.stringMatching(/^(aufwand|ertrag|aktiv|passiv)$/), + gruppe: expect.any(String), + ust_relevant: expect.any(Boolean), + steuerschluessel: expect.any(Array), + }); + }); + + it("skr04 cross-reference is a 4-digit string or null", () => { + const withSkr04 = SKR03.search("").filter((k) => k.skr04 != null); + expect(withSkr04.length).toBeGreaterThan(0); + for (const konto of withSkr04) { + expect(konto.skr04).toMatch(/^\d{4}$/); + } + }); +}); + +describe("SKR04 — singleton", () => { + it("is distinct from SKR03", () => { + expect(SKR04).not.toBe(SKR03); + }); + + it("has at least 200 accounts", () => { + expect(SKR04.size).toBeGreaterThanOrEqual(200); + }); + + it("get() returns undefined for unknown accounts", () => { + expect(SKR04.get("9999")).toBeUndefined(); + }); + + it("accounts have skr03 back-reference", () => { + const sample = SKR04.klasse(4)[0]; + if (sample) { + expect(typeof sample.skr03 === "string" || sample.skr03 === null).toBe(true); + } + }); +}); diff --git a/tests/mcc.test.ts b/tests/mcc.test.ts new file mode 100644 index 0000000..9a2dfb3 --- /dev/null +++ b/tests/mcc.test.ts @@ -0,0 +1,151 @@ +import { describe, it, expect } from "vitest"; +import { suggestAccount, MCCMapper } from "../src/index.js"; +import mccData from "../src/data/mcc_skr_mapping.json"; + +describe("suggestAccount() — basic lookup", () => { + it("returns a suggestion for a known MCC", () => { + const suggestion = suggestAccount("5812"); + expect(suggestion).toBeDefined(); + expect(suggestion?.mcc).toBe("5812"); + expect(suggestion?.primary.konto).toBeTruthy(); + expect(suggestion?.primary.confidence).toMatch(/^(high|medium|low)$/); + }); + + it("returns undefined for unknown MCC", () => { + expect(suggestAccount("9999")).toBeUndefined(); + expect(suggestAccount("0000")).toBeUndefined(); + expect(suggestAccount("")).toBeUndefined(); + }); + + it("includes mcc_name and category", () => { + const suggestion = suggestAccount("5812"); + expect(suggestion?.mcc_name).toBeTruthy(); + expect(suggestion?.category).toBeTruthy(); + }); + + it("includes needs_beleg and ust_abzug booleans", () => { + const suggestion = suggestAccount("5812"); + expect(typeof suggestion?.needs_beleg).toBe("boolean"); + expect(typeof suggestion?.ust_abzug).toBe("boolean"); + }); +}); + +describe("suggestAccount() — MCC range expansion", () => { + it("resolves an MCC within the airline range (3000-3350)", () => { + const first = suggestAccount("3000"); + const middle = suggestAccount("3175"); + const last = suggestAccount("3350"); + + expect(first).toBeDefined(); + expect(middle).toBeDefined(); + expect(last).toBeDefined(); + + // All should point to the same airline category + expect(first?.category).toBe(middle?.category); + expect(middle?.category).toBe(last?.category); + }); + + it("resolves an MCC within the hotel range (3351-3500)", () => { + const suggestion = suggestAccount("3400"); + expect(suggestion).toBeDefined(); + expect(suggestion?.mcc_name).toContain("Hotel"); + }); + + it("resolves an MCC within the car rental range (3501-3999)", () => { + const suggestion = suggestAccount("3750"); + expect(suggestion).toBeDefined(); + expect(suggestion?.mcc_name).toContain("Car Rental"); + }); + + it("boundary: first code in airline range", () => { + expect(suggestAccount("3000")).toBeDefined(); + }); + + it("boundary: last code in airline range", () => { + expect(suggestAccount("3350")).toBeDefined(); + }); + + it("boundary: 3351 is hotel range, not airline", () => { + const airline = suggestAccount("3350"); + const hotel = suggestAccount("3351"); + expect(airline).toBeDefined(); + expect(hotel).toBeDefined(); + expect(airline?.category).not.toBe(hotel?.category); + }); +}); + +describe("suggestAccount() — alternatives", () => { + it("returns alternatives when present", () => { + // MCC 5812 is restaurant — should have alternatives for business meal vs. private + const suggestion = suggestAccount("5812"); + expect(Array.isArray(suggestion?.alternatives)).toBe(true); + }); + + it("alternatives have konto and condition", () => { + // Find any MCC that has alternatives + const mapper = new MCCMapper(mccData as any); + // Try a few known MCCs with alternatives + const suggestion = mapper.suggestAccount("4511"); // Airlines + if (suggestion && suggestion.alternatives.length > 0) { + expect(suggestion.alternatives[0].konto).toBeTruthy(); + expect(suggestion.alternatives[0].condition).toBeTruthy(); + } + }); +}); + +describe("suggestAccount() — SKR04 path", () => { + it("returns SKR04 primary when skr='SKR04'", () => { + const skr03 = suggestAccount("5812", "SKR03"); + const skr04 = suggestAccount("5812", "SKR04"); + + expect(skr03).toBeDefined(); + expect(skr04).toBeDefined(); + expect(skr04?.primary.konto).not.toBe(skr03?.primary.konto); + }); + + it("SKR04 alternatives is always empty in v0.1", () => { + const suggestion = suggestAccount("5812", "SKR04"); + expect(suggestion?.alternatives).toHaveLength(0); + }); + + it("SKR04 primary name is null in v0.1", () => { + const suggestion = suggestAccount("5812", "SKR04"); + expect(suggestion?.primary.name).toBeNull(); + }); + + it("returns undefined for unknown MCC in SKR04 path", () => { + expect(suggestAccount("9999", "SKR04")).toBeUndefined(); + }); +}); + +describe("suggestAccount() — digital goods MCCs (5815-5818)", () => { + it("maps MCC 5817 (SaaS) to software account", () => { + const suggestion = suggestAccount("5817"); + expect(suggestion).toBeDefined(); + expect(suggestion?.mcc_name).toContain("Applications"); + // Should map to 4969 (Software-Nutzungsrechte) or similar + expect(suggestion?.primary.konto).toBeTruthy(); + }); + + it("maps MCC 5815 (digital media)", () => { + expect(suggestAccount("5815")).toBeDefined(); + }); + + it("maps MCC 5816 (games)", () => { + expect(suggestAccount("5816")).toBeDefined(); + }); + + it("maps MCC 5818 (large digital merchant)", () => { + expect(suggestAccount("5818")).toBeDefined(); + }); +}); + +describe("MCCMapper size", () => { + it("has significantly more entries than raw mappings due to range expansion", () => { + const mapper = new MCCMapper(mccData as any); + // 230 raw mappings, but ranges expand to ~600+ individual codes + // Range 3000-3350 = 351 codes, 3351-3500 = 150, 3501-3999 = 499 + // That's 1000 extra codes from ranges alone + expect(mapper.size).toBeGreaterThan(230); + }); +}); diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..619ba73 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,18 @@ +{ + "compilerOptions": { + "target": "ES2020", + "module": "ESNext", + "moduleResolution": "bundler", + "lib": ["ES2020"], + "strict": true, + "skipLibCheck": true, + "resolveJsonModule": true, + "declaration": true, + "declarationMap": true, + "sourceMap": true, + "outDir": "./dist", + "rootDir": "./src" + }, + "include": ["src/**/*"], + "exclude": ["node_modules", "dist", "tests"] +} diff --git a/tsup.config.ts b/tsup.config.ts new file mode 100644 index 0000000..66dbc55 --- /dev/null +++ b/tsup.config.ts @@ -0,0 +1,9 @@ +import { defineConfig } from "tsup"; + +export default defineConfig({ + entry: ["src/index.ts"], + format: ["esm", "cjs"], + dts: true, + sourcemap: false, + clean: true, +}); diff --git a/vitest.config.ts b/vitest.config.ts new file mode 100644 index 0000000..1b5c208 --- /dev/null +++ b/vitest.config.ts @@ -0,0 +1,8 @@ +import { defineConfig } from "vitest/config"; + +export default defineConfig({ + test: { + include: ["tests/**/*.test.ts"], + globals: false, + }, +});