Zum Inhalt springen
Kontoo
Funktionen Wissen ENDE Kostenlos starten

Transparenz

Dein Datenformat – offen dokumentiert

Deine Haushaltsdaten gehören dir. Kontoo speichert sie nur auf deinem Gerät — und damit du dich nie an uns gebunden fühlen musst, ist hier vollständig dokumentiert, wie jede Export-Datei aufgebaut ist. Alles ist mit Standard-Werkzeugen lesbar: der JSON-Export mit jedem Texteditor, die CSV-Datei mit jeder Tabellenkalkulation, das verschlüsselte Backup mit frei verfügbarer Standard-Kryptografie. Auch wenn es Kontoo morgen nicht mehr gäbe, kämst du an alles heran.

1. JSON-Export (vollständige Datei)

„Mehr-Menü → Exportieren" erzeugt eine JSON-Datei mit dem kompletten Haushalt. Grundstruktur:

{
  "meta":     { "v": 25, "currency": "EUR", "name": "Mein Haushalt", … },
  "people":   [ { "id": "…", "name": "Alex" }, … ],
  "income":   [ { "id": "…", "name": "Gehalt", "v": 2400, "owner": "<person-id>", "freq": "monthly" }, … ],
  "savings":  [ …wie income… ],
  "personal": { "<person-id>": [ …Posten… ] },
  "buckets":  [ { "id": "…", "name": "Wohnen",
                  "split": { "mode": "income" | "even" | "fixed", "amounts": { "<person-id>": 500 } },
                  "groups": [ { "id": "…", "name": "Fixkosten", "items": [ …Posten… ] } ] } ],
  "accounts": [ { "id": "…", "name": "Depot", "type": "depot|cash|property|loan|…", "value": 12000, "history": […] } ],
  "goals":    [ { "id": "…", "name": "Urlaub", "target": 3000, "saved": 500, "contributions": […] } ],
  "scenarios": […], "wishes": […], "classMap": { "<tag>": "need" | "want" }, "rules": { … }, "learn": { … }
}

Ein Posten (item) hat die Felder id, name, v (Betrag), type (amount = laufender Betrag, asset = Anschaffung mit cost/life in Jahren/buffer in %), freq (monthly | quarterly | half | yearly | once), optional dueMonth (1–12), tags, note, track + actuals (Ist-Buchungen {ts, amount, note}), assigned (Umschlag-Zuweisung je Monat) und recurring (Vorlagen). Der Monatswert einer Anschaffung ist cost / (life × 12) × (1 + buffer/100).

meta.v ist die Schema-Version. Kontoo liest alle älteren Versionen deiner Exporte für immer ein (interne Migration beim Laden) und warnt, statt still zu verwerfen, wenn eine Datei aus einer neueren Version stammt.

2. CSV-Export (Tabellenkalkulation)

Der CSV-Export ist verlustfrei re-importierbar und öffnet direkt in Excel, LibreOffice oder Numbers (UTF-8 mit BOM; Dezimal- und Spaltentrennzeichen folgen deiner Sprache — im Deutschen ; und Komma). Spalten:

SpalteBedeutung
BereichEinnahme, Sparen, Persönlich oder Topf-Zeile
Topf / Gruppe / PersonZuordnung im Haushalt
Bezeichnung, Typ, RhythmusName, Betrag/Anschaffung, Zahlungsrhythmus
Betrag/Preis, Lebensdauer, Puffer, MonatswertRohwerte + normalisierter Monatswert
Tags, Klasse, NotizSchlagworte, Bedürfnis/Wunsch (50/30/20), Freitext
Ist JJJJ-MMIst-Ausgaben des Monats (bei aktivem Tracking)

3. Verschlüsseltes Backup (.hbk)

Das verschlüsselte Backup ist eine JSON-Datei („Umschlag") — sie enthält keinerlei Klartext:

{ "format": "hbk1", "iter": 600000, "salt": "<Base64>", "iv": "<Base64>", "ct": "<Base64>" }

Entschlüsselung mit reinen Web-Standards (funktioniert in jedem Browser und in Node.js, ganz ohne Kontoo):

  1. Schlüssel ableiten: PBKDF2-SHA-256 mit deinem Passwort, dem salt und iter Iterationen → 256-Bit-Schlüssel.
  2. Entschlüsseln: AES-256-GCM mit dem iv auf ct → der Klartext ist der JSON-Export aus Abschnitt 1.
// Node.js ≥ 20 (WebCrypto), env = eingelesene .hbk-Datei als Objekt
const b64 = s => Buffer.from(s, 'base64');
const km = await crypto.subtle.importKey('raw', new TextEncoder().encode(passwort), 'PBKDF2', false, ['deriveKey']);
const key = await crypto.subtle.deriveKey({name:'PBKDF2', hash:'SHA-256', salt:b64(env.salt), iterations:env.iter},
  km, {name:'AES-GCM', length:256}, false, ['decrypt']);
const klartext = new TextDecoder().decode(
  await crypto.subtle.decrypt({name:'AES-GCM', iv:b64(env.iv)}, key, b64(env.ct)));
Wichtig: Das Passwort ist der Schlüssel. Es wird nirgends gespeichert oder übertragen — deshalb gibt es auch kein „Passwort zurücksetzen". Das ist Absicht (Zero-Knowledge).

4. Geräte-Sync (optional)

Der optionale Sync überträgt exakt dasselbe hbk1-Chiffrat als Blob. Die Blob-Adresse wird aus deiner Passphrase abgeleitet; der Server sieht zu keinem Zeitpunkt Klartext und kennt weder Namen noch Konto. Ohne eingerichteten Sync macht die App gar keine Netzwerk-Anfragen — nachprüfbar im Netzwerk-Tab deines Browsers.

Stand: Juli 2026 · Schema-Version 25. Diese Seite wird bei Format-Änderungen aktualisiert; ältere Exporte bleiben immer einlesbar.

Kontoo
Zur AppImpressumDatenschutzBarrierefreiheitEnglish

Kontoo rechnet nur – keine Steuer- oder Finanzberatung. Deine Daten bleiben auf deinem Gerät.