Billinski · Rechtliches
Vertrag über die Auftragsverarbeitung nach Art. 28 DSGVO (AVV)
Entwurf, vor Veröffentlichung anwaltlich prüfen lassen. Stand: 2026-10-14.
zwischen
dem Händler, der die Billinski Shopify-App installiert hat (Firma und Anschrift laut Shopify-Shop) – nachfolgend „Verantwortlicher“ –
und
[Name/Firma des Betreibers, Anschrift, siehe Impressum] – nachfolgend „Auftragsverarbeiter“ oder „Billinski“ –
gemeinsam „Parteien“. Anlage 1 listet die Unterauftragsverarbeiter, Anlage 2 die technischen und organisatorischen Maßnahmen. Grundlagen im Repository: concept/DOMAIN.md §5–§8, docs/Verfahrensdokumentation.md, apps/web/src/server/compliance.ts, apps/web/src/db/migrations/0001_immutability_triggers.sql, apps/web/scripts/storage-init.ts, apps/web/src/lib/secrets.ts.
1. Gegenstand und Dauer
1.1 Gegenstand ist die Verarbeitung personenbezogener Daten durch Billinski im Rahmen der Nutzung der Billinski Shopify-App nach den AGB (AGB.md, nachfolgend „Hauptvertrag“): Erzeugung, Archivierung, Versand und Export von Rechnungen und Gutschriften für Bestellungen des Shopify-Shops des Verantwortlichen, Prüfung von USt-IdNrn. und, bei Aktivierung, Versand von Gutschein-Mails.
1.2 Dieser Vertrag wird mit der Installation der App und der Annahme im Onboarding geschlossen [festlegen: Klick-Annahme; auf Wunsch stellt Billinski ein unterzeichnetes Exemplar als PDF bereit]. Er gilt für die Laufzeit des Hauptvertrags.
1.3 Nach Ende des Hauptvertrags gilt dieser Vertrag fort, solange Billinski Belege des Verantwortlichen nach Abschnitt 10 aufbewahrt (Nachlaufphase). In der Nachlaufphase beschränkt sich die Verarbeitung auf die Aufbewahrung, die Bereitstellung des Vollexports und die Beantwortung von Anfragen nach Abschnitt 7.
2. Art und Zweck der Verarbeitung
2.1 Art: Erheben über Shopify-Webhooks und die Shopify Admin API, Speichern, Ordnen, Verwenden zur Belegerstellung, Rendern als PDF/A-3 mit XML, Speichern im Belegarchiv, Übermitteln per E-Mail an die Kunden des Verantwortlichen, Exportieren (DATEV, GoBD-Datenträger), Abfragen beim VIES-System, Pseudonymisieren auf Anfrage, Löschen nach Fristablauf.
2.2 Zweck: Erfüllung der Rechnungsstellungs- und Aufbewahrungspflichten des Verantwortlichen (§ 14 UStG, § 14b UStG, § 147 AO, GoBD) und Versand der Belege an seine Kunden; auf Weisung zusätzlich Gutschein-Mails nach Lieferung.
2.3 Die Verarbeitung findet in Deutschland statt; der E-Mail-Versand läuft über den in Anlage 1 genannten Dienstleister mit Sende-Region EU. Eine Verarbeitung in Drittländern erfolgt nur, soweit Anlage 1 dies für einzelne Unterauftragsverarbeiter mit den dort genannten Garantien ausweist.
3. Kategorien der Daten und der betroffenen Personen
3.1 Datenkategorien: a) Kundenstammdaten: Name, Firma, Rechnungs- und Lieferadresse, E-Mail, Telefon, USt-IdNr., Kunden-Tags, Notizen, Shopify-Kunden-ID, Rechnungsmodus und Zahlungsziel. b) Bestelldaten: Bestellnummer, Positionen, Mengen, Preise, Rabatte, Steuern, Versandkosten, Zahlungsstatus, Fulfillments, Sendungsnummern und Zustellstatus, Erstattungen, Retouren, bei Bedarf der gespeicherte Webhook-Inhalt. c) Belegdaten: Rechnungs- und Gutschriftnummer, Beträge, Steuerkategorien, Zahlungsziel, Käuferreferenz, PDF/A-3 und XML, Bestell-Snapshot, SHA-256-Hashes. d) Versanddaten: Empfängeradresse, Absender, Transport, Provider-Kennung, Zustellereignisse. e) Gutschein-Daten (nur bei aktiviertem Add-on): Vorname, E-Mail, Sprache, Rabattcode, Versand-, Einlöse- und Abmeldestatus. f) Daten der Mitarbeiter des Verantwortlichen: Login-E-Mail, Handlungen im Audit-Log. g) VIES-Prüfergebnisse: USt-IdNr., zurückgemeldeter Name und Adresse, Anfrage-Kennung.
3.2 Betroffene Personen: Kunden des Verantwortlichen (Verbraucher und Ansprechpartner von Geschäftskunden), Empfänger von Belegen, Mitarbeiter und Beauftragte des Verantwortlichen.
3.3 Besondere Kategorien nach Art. 9 DSGVO sind nicht Gegenstand der Verarbeitung. Der Verantwortliche stellt sicher, dass solche Daten nicht in Notizen, Tags oder Bestellhinweise gelangen.
4. Weisungen
4.1 Billinski verarbeitet die Daten nur auf dokumentierte Weisung des Verantwortlichen, es sei denn, Unions- oder Mitgliedstaatenrecht verpflichtet Billinski zu einer anderen Verarbeitung; dann teilt Billinski dem Verantwortlichen diese Anforderung vor der Verarbeitung mit, soweit das Recht eine Mitteilung nicht verbietet.
4.2 Weisungen sind: der Hauptvertrag, dieser Vertrag, die Einstellungen, die der Verantwortliche in der App vornimmt (insbesondere Rechnungsstellung bei Versand oder Zahlung, Rechnungsmodus je Kunde, Absender, E-Mail-Texte, Aktivierung des Gutschein-Add-ons), Handlungen im Admin (manuelle Ausstellung, Freigabe angehaltener Bestellungen, erneuter Versand) und die von Shopify weitergeleiteten Datenschutzanfragen (customers/data_request, customers/redact, shop/redact), die als Weisung des Verantwortlichen gelten.
4.3 Weitere Weisungen erteilt der Verantwortliche in Textform an [[email protected]]. Billinski informiert den Verantwortlichen unverzüglich, wenn eine Weisung nach seiner Auffassung gegen Datenschutzrecht verstößt, und darf die Ausführung bis zur Bestätigung aussetzen.
4.4 Weisungen, die die Änderung oder vorzeitige Löschung ausgestellter Belege verlangen, kann Billinski nicht ausführen (Abschnitt 10.3). Der Verantwortliche erteilt mit diesem Vertrag die Weisung, Belege für die Aufbewahrungsdauer unverändert zu speichern.
5. Pflichten von Billinski
5.1 Vertraulichkeit: Billinski verpflichtet alle Personen, die Zugang zu den Daten haben, zur Vertraulichkeit und macht sie mit den einschlägigen Datenschutzvorschriften vertraut. Die Vertraulichkeit gilt über das Ende der Tätigkeit hinaus.
5.2 Sicherheit: Billinski trifft die Maßnahmen nach Art. 32 DSGVO, die in Anlage 2 beschrieben sind, und entwickelt sie mit dem Stand der Technik fort, ohne das Schutzniveau zu unterschreiten. Wesentliche Änderungen werden dokumentiert und dem Verantwortlichen auf Anfrage mitgeteilt.
5.3 Unterstützung: Billinski unterstützt den Verantwortlichen bei der Beantwortung von Anfragen betroffener Personen (Abschnitt 7), bei der Sicherheit der Verarbeitung, bei der Meldung von Verletzungen des Schutzes personenbezogener Daten und bei Datenschutz-Folgenabschätzungen, soweit es um die Verarbeitung nach diesem Vertrag geht.
5.4 Meldung von Verletzungen: Billinski meldet dem Verantwortlichen eine Verletzung des Schutzes personenbezogener Daten, die seine Daten betrifft, unverzüglich, spätestens [24 Stunden] nach Kenntnis, an die im Shopify-Shop hinterlegte Kontaktadresse, mit Art, Umfang, betroffenen Personen, Folgen und ergriffenen Maßnahmen, soweit bekannt; Informationen werden nachgereicht.
5.5 Aufsichtsbehörden: Billinski informiert den Verantwortlichen über Kontrollhandlungen und Anfragen einer Aufsichtsbehörde, die diesen Vertrag betreffen, soweit zulässig, und wirkt an deren Beantwortung mit.
5.6 Datenschutzbeauftragter von Billinski, soweit benannt: [Name, Kontakt]; sonst Ansprechpartner: [[email protected]].
5.7 Mitarbeiter von Billinski greifen auf Daten des Verantwortlichen nur zu, soweit es für Betrieb, Support und Fehleranalyse erforderlich ist (Betreiber-Admin); der Zugriff ist auf [Anzahl] Personen beschränkt und wird protokolliert, soweit er über die App erfolgt.
5.8 Billinski verwendet die Daten nicht für eigene Zwecke. Zulässig ist die Bildung anonymer, aggregierter Kennzahlen ohne Personenbezug und ohne Nennung des Verantwortlichen (z. B. Belege je Monat für Kapazitätsplanung und Abrechnung).
6. Pflichten des Verantwortlichen
6.1 Der Verantwortliche ist für die Rechtmäßigkeit der Verarbeitung und für die Wahrung der Rechte der betroffenen Personen verantwortlich, insbesondere für die Rechtsgrundlage der Rechnungsstellung und des Versands, für die Informationen nach Art. 13 und 14 DSGVO gegenüber seinen Kunden und für die Zulässigkeit von Gutschein-Mails (§ 7 UWG).
6.2 Der Verantwortliche erteilt Weisungen über die in Abschnitt 4.2 genannten Wege und benennt Billinski eine Kontaktadresse (Shopify-Kontaktadresse) für Mitteilungen nach diesem Vertrag.
6.3 Der Verantwortliche prüft, ob die Maßnahmen in Anlage 2 für seine Verarbeitung angemessen sind.
7. Rechte der betroffenen Personen
7.1 Wendet sich eine betroffene Person an Billinski, leitet Billinski die Anfrage unverzüglich an den Verantwortlichen weiter und beantwortet sie nicht selbst, außer auf dessen Weisung.
7.2 Auskunft: Eine über Shopify eingehende Auskunftsanfrage (customers/data_request) wird im Audit-Log mit Kunde, betroffenen Bestellungen und Belegnummern und der Frist von 30 Tagen festgehalten. Billinski stellt dem Verantwortlichen die gespeicherten Daten der Person (Stammdaten, Bestellungen, Belege) aus dem Admin zur Verfügung; der Verantwortliche beantwortet die Anfrage gegenüber der Person.
7.3 Löschung: Eine Löschanfrage (customers/redact) führt zur Pseudonymisierung der Stammdaten, Bestellkopien, gespeicherten Webhook-Inhalte und Gutschein-Vorgänge der Person; Namen, Adressen, E-Mail, Telefon und Notizen werden durch „gelöscht“ ersetzt, das Land bleibt für steuerliche Zwecke erhalten. Ausgestellte Belege bleiben unverändert (Abschnitt 10.3). Der Vorgang wird mit Umfang und Zahl der aufbewahrten Belege im Audit-Log festgehalten.
7.4 Berichtigung: Kundenstammdaten kann der Verantwortliche im Admin berichtigen; die Berichtigung wirkt auf künftige Belege. Ausgestellte Belege werden durch Gutschrift und Neuausstellung korrigiert.
8. Unterauftragsverarbeiter
8.1 Der Verantwortliche genehmigt die in Anlage 1 genannten Unterauftragsverarbeiter. Für Nebenleistungen ohne Zugang zu den Daten (z. B. Hardware-Wartung, Reinigung) ist keine Genehmigung erforderlich.
8.2 Billinski informiert den Verantwortlichen über beabsichtigte Hinzunahmen oder Wechsel von Unterauftragsverarbeitern mindestens [30 Tage] vorher in Textform (E-Mail an die Shopify-Kontaktadresse und Hinweis in der App). Der Verantwortliche kann innerhalb von [14 Tagen] aus wichtigem datenschutzrechtlichem Grund widersprechen. Bei Widerspruch bemühen sich die Parteien um eine Lösung; gelingt sie nicht, kann jede Partei den Hauptvertrag zum Zeitpunkt des geplanten Einsatzes kündigen; Abschnitt 10 gilt.
8.3 Billinski schließt mit jedem Unterauftragsverarbeiter einen Vertrag, der ihm im Wesentlichen dieselben Pflichten auferlegt wie dieser Vertrag Billinski, und prüft die Einhaltung regelmäßig. Verletzt der Unterauftragsverarbeiter seine Pflichten, haftet Billinski dem Verantwortlichen dafür wie für eigenes Handeln.
8.4 Drittland: Setzt ein Unterauftragsverarbeiter Daten außerhalb der EU/des EWR ein oder kann von dort auf sie zugreifen, stellt Billinski die Zulässigkeit durch Standardvertragsklauseln (Durchführungsbeschluss (EU) 2021/914), einen Angemessenheitsbeschluss (EU-US Data Privacy Framework) oder ein anderes Instrument nach Art. 44 ff. DSGVO sicher und benennt das Instrument in Anlage 1. Der Verantwortliche bevollmächtigt Billinski, in seinem Namen Standardvertragsklauseln mit Unterauftragsverarbeitern abzuschließen, soweit erforderlich.
9. Kontrollrechte
9.1 Billinski weist dem Verantwortlichen die Einhaltung dieses Vertrags auf Anfrage nach: durch diesen Vertrag mit Anlagen, die Verfahrensdokumentation, Auszüge aus dem Audit-Log, Testberichte, Zertifikate oder Prüfberichte der Unterauftragsverarbeiter (z. B. Hosting) und schriftliche Auskünfte.
9.2 Reicht das nicht aus, kann der Verantwortliche oder ein von ihm beauftragter, zur Verschwiegenheit verpflichteter Prüfer, der nicht im Wettbewerb zu Billinski steht, einmal je Kalenderjahr nach Ankündigung von [vier Wochen] während der Geschäftszeiten eine Prüfung durchführen. Prüfungen betreffen nur die Verarbeitung nach diesem Vertrag und beeinträchtigen den Betrieb für andere Händler nicht; Daten anderer Händler werden nicht offengelegt. Billinski kann für den Aufwand eine angemessene Vergütung verlangen, wenn die Prüfung keine wesentlichen Verstöße ergibt. Bei konkretem Verdacht einer Verletzung oder auf Anordnung einer Aufsichtsbehörde gelten Frist und Häufigkeit nicht.
10. Löschung und Rückgabe nach Vertragsende
10.1 Mit Ende des Hauptvertrags stellt Billinski dem Verantwortlichen den Vollexport bereit: alle Belege als PDF und XML, dokumente.csv mit Hashes, audit_log.csv, Kundenstammdaten in maschinenlesbarer Form (GoBD-Datenträgerüberlassung). Der Abruf ist [30 Tage] möglich; der Verantwortliche bestätigt den Erhalt in Textform oder durch Abruf.
10.2 Daten außerhalb der Belege (Kundenstammdaten, Bestellkopien, Webhook-Inhalte, Gutschein-Vorgänge, Zugangsdaten) werden spätestens mit der Löschanfrage von Shopify 48 Stunden nach der Deinstallation (shop/redact) pseudonymisiert; der Zugriffstoken wird mit der Deinstallation entfernt. Auf Weisung des Verantwortlichen führt Billinski die Pseudonymisierung früher durch, sobald der Vollexport abgerufen ist. Mitarbeiterdaten werden mit dem Mandanten gelöscht.
10.3 Belege: Ausgestellte Rechnungen und Gutschriften sind Buchungsbelege des Verantwortlichen (§ 147 AO, § 14b UStG). Sie liegen in einem Objektspeicher mit Aufbewahrungssperre (Object Lock, Modus COMPLIANCE, [2922 Tage = 8 Jahre] ab Ausstellung), die technisch weder von Billinski noch vom Hosting-Anbieter vor Ablauf aufgehoben werden kann; Datenbank-Trigger verbieten Änderung und Löschung. Der Verantwortliche weist Billinski an, die Belege für diese Dauer aufzubewahren, und erkennt an, dass eine frühere Löschung nicht möglich ist. Das Recht auf Löschung nach Art. 17 DSGVO ist insoweit nach Art. 17 Abs. 3 lit. b DSGVO ausgeschlossen. [Anwaltlich prüfen: Vereinbarkeit der Nachlaufphase mit Art. 28 Abs. 3 lit. g DSGVO und mit Ziffer 6.2.3 der Shopify API License and Terms of Use (Löschung innerhalb von 30 Tagen nach Deinstallation, „unless prohibited by applicable law“); Aufbewahrungsdauer gegen § 147 Abs. 3 AO und § 14b UStG abgleichen, Fristbeginn ist das Ende des Kalenderjahres der Ausstellung.]
10.4 Nach Ablauf der Aufbewahrungssperre löscht Billinski die Belege und den Mandanten [Purge-Job, SCOPE E5] und bestätigt die Löschung auf Anfrage. Sicherungskopien werden mit ihrem Rotationszyklus überschrieben [Zyklus festlegen].
10.5 Die Nachlaufphase (Abschnitt 1.3) begründet keinen Zugriff des Verantwortlichen auf die App; sie dient nur der Aufbewahrung. Ein lesender Zugriff kann als Archivtarif nach dem Hauptvertrag vereinbart werden.
11. Haftung
11.1 Für die Haftung gelten Art. 82 DSGVO und die Haftungsregelung des Hauptvertrags (AGB Abschnitt 17), soweit zwingendes Recht nichts anderes vorsieht.
11.2 Im Innenverhältnis haftet jede Partei für den Teil des Schadens, der ihrem Anteil an der Verantwortung entspricht. Billinski haftet nur, wenn es seinen Pflichten aus der DSGVO, die speziell Auftragsverarbeitern auferlegt sind, nicht nachgekommen ist oder entgegen rechtmäßigen Weisungen gehandelt hat.
12. Schlussbestimmungen
12.1 Bei Widersprüchen zwischen diesem Vertrag und dem Hauptvertrag geht dieser Vertrag in Datenschutzfragen vor.
12.2 Änderungen bedürfen der Textform. Billinski kann die Anlagen aktualisieren, soweit Abschnitt 5.2 und 8.2 eingehalten werden.
12.3 Es gilt deutsches Recht; Gerichtsstand ist der des Hauptvertrags.
12.4 Sollte eine Bestimmung unwirksam sein, bleibt der Vertrag im Übrigen wirksam; an ihre Stelle tritt die gesetzliche Regelung, die dem Zweck am nächsten kommt.
Anlage 1: Unterauftragsverarbeiter
Die Liste ist vor Veröffentlichung zu bestätigen: Firmierung, Anschrift, Vertragsgrundlage (AVV/DPA abgeschlossen?), Standort der Verarbeitung und Transferinstrument je Anbieter prüfen. Stand: 2026-10-14.
| Nr. | Unternehmen | Anschrift | Leistung | Ort der Verarbeitung | Drittlandtransfer und Garantie | Status |
|---|---|---|---|---|---|---|
| 1 | netcup GmbH | Daimlerstraße 25, 76185 Karlsruhe, Deutschland [bestätigen] | Virtueller Server (Betriebssystem, Container): Anwendung, Worker, PostgreSQL, Redis, S3-kompatibler Objektspeicher mit Object Lock, Gotenberg/Chromium, Mustang-Service | Deutschland [Rechenzentrumsstandort bestätigen] | keiner | AVV mit netcup abschließen/bestätigen |
| 2 | Cloudflare, Inc. / Cloudflare Germany GmbH | 101 Townsend Street, San Francisco, CA 94107, USA / Rosental 7, 80331 München, Deutschland [bestätigen] | DNS für billinski.de, TLS-Terminierung, Proxy, Cloudflare Tunnel zum Server, [Cloudflare Pages für die Website] | Cloudflare-Rechenzentren, Verbindungsdaten; Steuerung und Support auch aus den USA | EU-Standardvertragsklauseln (Cloudflare Data Processing Addendum), EU-US Data Privacy Framework [Zertifizierung prüfen] | DPA von Cloudflare gilt mit den Nutzungsbedingungen; bestätigen |
| 3 | Resend (Plus Five Five, Inc.) | 2261 Market Street #5039, San Francisco, CA 94114, USA | E-Mail-Versand im Namen des Händlers (Rechnungen, Gutschriften, Gutschein-Mails), Verwaltung der Absenderdomains, Zustellereignisse per Webhook | Sende-Region eu-west-1 (EU) für Domains und Versand; nach Resend-DPA primäre Verarbeitung in den USA |
EU-Standardvertragsklauseln (Modul 3 im Resend-DPA), EU-US Data Privacy Framework (laut Resend-DPA Ziffer 11.1) [Zertifizierung prüfen]; Resend-Unterauftragsverarbeiter: resend.com/legal/subprocessors | Resend-DPA ist mit den Resend-Terms wirksam; ausgeführtes Exemplar im Resend-Dashboard sichern |
| 4 | Shopify International Limited | 2nd Floor, Victoria Buildings, 1–2 Haddington Road, Dublin 4, Irland [bestätigen] | Plattform des Händlers: Quelle der Bestell- und Kundendaten (Webhooks, Admin API), Ziel der Belegnummer (Metafeld) und der Rabattcodes, Abrechnung der App | Shopify-Infrastruktur nach dem Vertrag des Händlers mit Shopify | nach dem Shopify Data Processing Addendum des Händlers | Shopify ist Auftragsverarbeiter des Händlers aus dessen eigenem Vertrag, kein Unterauftragsverarbeiter von Billinski; zur Information aufgeführt |
| 5 | [Sicherungsstandort] | [festlegen] | Tägliche versionierte Sicherung von Datenbank und Objektspeicher an einem zweiten Standort | [EU] | [keiner] | offen (SCOPE E7) |
Keine Unterauftragsverarbeiter, sondern Empfänger oder Werkzeuge ohne Personenbezug: Europäische Kommission (VIES-Abfrage der USt-IdNr., öffentliche Stelle), Umami-Reichweitenmessung auf dem eigenen Server des Betreibers (stats.storycockpit.com, keine personenbezogenen Daten). Entwicklungsumgebungen (Mailpit, Mock-Dienste) verarbeiten keine Echtdaten.
Anlage 2: Technische und organisatorische Maßnahmen (Art. 32 DSGVO)
Aus dem dokumentierten Stand des Systems (Repository, Stand 2026-10-14). Punkte in eckigen Klammern sind vor Veröffentlichung umzusetzen oder zu bestätigen.
1. Zutritts- und Zugangskontrolle
- Der Server ist ein virtueller Server bei netcup (Deutschland); Zugriff nur per SSH mit Schlüssel für [Anzahl] benannte Administratoren [Schlüsselverwaltung und Root-Login dokumentieren].
- Aus dem Internet ist ausschließlich die Web-Anwendung erreichbar, und nur über einen Cloudflare-Tunnel (
cloudflared, Verbindung vom Server nach außen aufgebaut). Datenbank, Redis, Objektspeicher, Gotenberg und Mustang-Service veröffentlichen in Produktion keine Ports (infra/deploy/docker-compose.prod.yml). - Anmeldung an der App mit E-Mail und Passwort; Sitzungen als signierte Token im Cookie
inv_session, 12 Stunden gültig,Secure-Flag hinter HTTPS; Rate-Limiting für Login und öffentliche Endpunkte (apps/web/src/server/rate-limit.ts). [Zielbild: Shopify-Session-Tokens in der eingebetteten App, Mandant aus dem Token.] - Shopify-Webhooks werden nur nach gültiger HMAC-SHA256-Signatur verarbeitet; Zustellereignisse des E-Mail-Dienstleisters nur nach gültiger Svix-Signatur; beide werden auf Wiederholungen geprüft (Dedup auf Ereignis-ID).
- Beleg-Links für Kunden sind signiert; die Abmeldeseite nimmt Abmeldungen nur per POST entgegen (Schutz vor Link-Scannern).
2. Verschlüsselung
- Übertragung: TLS an der Cloudflare-Kante, verschlüsselter Tunnel bis zum Server, HTTPS zu Shopify, Resend und VIES. Interne Dienste kommunizieren im privaten Container-Netz des Servers.
- Geheimnisse: SMTP-Passwörter der Händler werden mit AES-256-GCM und einem serverseitigen Schlüssel (
SECRETS_KEY) verschlüsselt gespeichert (apps/web/src/lib/secrets.ts). API-Schlüssel, Sitzungsgeheimnis und Datenbankpasswörter liegen in der Umgebungsdatei des Servers mit eingeschränkten Rechten [Zielbild: Secret Store, SCOPE E7]. - [Festplattenverschlüsselung des virtuellen Servers und der Sicherungen prüfen/dokumentieren.]
- Shopify-Zugriffstoken werden in der Datenbank gespeichert und bei Deinstallation entfernt [Verschlüsselung at rest prüfen].
3. Integrität und Unveränderbarkeit
- Datenbank-Trigger verbieten
UPDATEundDELETEauf Rechnungen, Gutschriften, Dateieinträgen, E-Mail-Protokoll und Audit-Log (0001_immutability_triggers.sql). - Belegdateien liegen im S3-kompatiblen Objektspeicher mit Object Lock; Produktion: Modus COMPLIANCE, Standardaufbewahrung [2922 Tage]; die Sperre kann nicht vorzeitig aufgehoben werden (
apps/web/scripts/storage-init.ts). - Jeder Beleg speichert SHA-256 von PDF und XML sowie den Bestell-Snapshot zum Ausstellungszeitpunkt.
- Das Audit-Log ist hash-verkettet (
hash = sha256(prev_hash ‖ kanonisches JSON)) und wird bei jedem Export geprüft. - Belegnummern werden in derselben Datenbanktransaktion vergeben wie der Beleg; keine Doppelvergabe, keine Lücken im Normalbetrieb (TLA+-Modell,
concept/). - Jeder Beleg wird gegen EN 16931 und PDF/A-3 validiert, bevor er versendet wird.
4. Verfügbarkeit und Belastbarkeit
- Dienste mit Neustart-Richtlinie, Speicherlimits und Health-Checks; Verarbeitung über Warteschlangen (BullMQ) mit exponentiellen Wiederholungen; nächtlicher Abgleich stellt fehlende Belege nach; idempotente Verarbeitung (ein Beleg je Fulfillment bzw. Erstattung).
- Sicherungen: tägliche Sicherung von Datenbank-Volume und Objektspeicher, versioniert, [an einen zweiten Standort; Wiederherstellung geprobt und dokumentiert — SCOPE E7, offen].
- Log-Rotation (3 × 10 MB je Dienst), Swap und Ressourcenlimits auf dem Server (
infra/deploy/install-server.sh). - [Monitoring und Alarme auf fehlgeschlagene Webhooks, Render-Fehler und Bounce-Raten; Statusseite — SCOPE E7, offen.]
5. Trennung (Mandantentrennung)
- Jede Zeile der mandantenbezogenen Tabellen trägt
tenant_id; Eindeutigkeit von Shopify-IDs, Belegnummern und Fulfillment-IDs gilt je Mandant; jede Abfrage ist nach dem Mandanten der Sitzung gefiltert. - Belegdateien liegen je Mandant unter einem eigenen Präfix (
<slug>/…) im Objektspeicher. - Webhooks werden über die Shop-Domain dem Mandanten zugeordnet und mit dem passenden Secret geprüft; Ereignisse unbekannter Shops werden verworfen.
- Produktions-, Test- und Entwicklungsumgebungen sind getrennt; Tests laufen gegen eigene Dienste ohne Echtdaten.
6. Pseudonymisierung und Löschung
- Löschanfragen (
customers/redact,shop/redact) pseudonymisieren Kundenstammdaten, Bestellkopien, Webhook-Inhalte und Gutschein-Vorgänge: personenbezogene Felder werden durch „gelöscht“ ersetzt, das Land bleibt; technische IDs bleiben für die Belegzuordnung (apps/web/src/server/compliance.ts). - Ausnahme: ausgestellte Belege bleiben unverändert (Aufbewahrungspflicht, § 147 AO, § 14b UStG); der Audit-Eintrag hält Umfang und Zahl der aufbewahrten Belege fest.
- Nach Ablauf der Aufbewahrungssperre: Löschung der Belege und des Mandanten [Purge-Job, offen]; Kürzung gespeicherter Webhook-Inhalte auf Kennungen nach [n Tagen] [offen].
- Reichweitenmessung ohne Cookies, IP-Adressen oder Nutzerkennungen (Umami, eigener Server).
7. Eingabe- und Nachvollziehbarkeitskontrolle
- Audit-Log für Einstellungsänderungen, manuelle Ausstellungen (mit Akteur und Grund), erneute Versände, Datenschutzanfragen, Gutschein-Schritte; append-only.
- Jeder Versand wird einmal im unveränderbaren E-Mail-Protokoll festgehalten (Empfänger, tatsächlicher Absender, Transport, Provider-ID); Zustellereignisse werden append-only gespeichert.
- Jeder empfangene Webhook wird mit seiner ID gespeichert.
8. Auftragskontrolle und Organisation
- Unterauftragsverarbeiter nur nach Anlage 1; Verträge nach Art. 28 Abs. 4 DSGVO [Abschluss je Anbieter dokumentieren].
- Verfahrensdokumentation nach GoBD (
docs/Verfahrensdokumentation.md), Regelwerk mit formaler Prüfung (TLA+, Lean, Z3) und automatisierten Tests (Unit, Integration, E2E) vor jedem Release. - Mitarbeiter mit Zugriff: [Anzahl], zur Vertraulichkeit verpflichtet, [Schulung dokumentieren]; Zugriff auf Händlerdaten nur für Betrieb und Support über den Betreiber-Admin.
- Ausrollen ohne Datenverlust: Migrationen abwärtskompatibel, Health-Checks [Worker-Drain, offen].
- Prüfung der Shopify-API-Version und der Abhängigkeiten vor jeder Einreichung; Lizenz- und Drittanbieterübersicht in
Open-Source-Lizenzen.md.