PruvaDoku

Abrechnung & Verlängerung

Die Testphase von 1 Monat nach einer Anzahlung von 10%, der 3-Jahres-Vertrag mit Ausstieg im Jahr 1, jährliche Abrechnung, Verlängerung, Testphase kündigen, Verlängerung kündigen, keine Erstattungen für das bereits begonnene Jahr und was jede Bestellung speichert.

Jedes Paket beginnt mit einer Testphase von 1 Monat nach einer Anzahlung von 10%, danach ein Vertrag über 3 Jahre, einmal jährlich im Voraus je Schiff abgerechnet. Sie können im Jahr 1 aussteigen, vor der ersten Verlängerung. Jede Rechnung ist ein abgerechnetes Jahr (12 Monate). Die erste Belastung enthält außerdem die einmalige Einrichtung je Schiff, die Einrichtung und Installation von Safety Vision, wenn die Kameras gekauft werden, und das optionale Gateway-Kit. Die Preise kommen aus @pruva/pricing; siehe Preise.

Hinweis zur Abrechnung

Eine Anzahlung von 10 % eröffnet eine einmonatige Testphase, danach Abrechnung jährlich je Schiff. Vertrag über 3 Jahre. Sie können im 1. Jahr aussteigen. Die Anzahlung wird nicht erstattet. Nach der Testphase keine Erstattung für das bereits begonnene Jahr; die Verlängerung können Sie jederzeit kündigen.

Die kostenlose Testphase

  • 1 Monat, eine je Kunde. Ein Arbeitsbereich, der bereits eine Testphase hatte, zahlt die volle erste Belastung am Tag der Bestellung.
  • 10% Anzahlung heute. Beim Checkout wählt der Käufer eine Zahlungsmethode und kreuzt das Einwilligungskästchen an. Die Anzahlung wird an diesem Tag eingezogen. Sie wird nicht erstattet.
  • Der Rest der ersten Belastung, wenn der Monat endet: das trial.firstChargeOn der Bestellung. Die Testphase läuft vom Kauftag bis trial.end, dem Tag davor.
  • Das erste abgerechnete Jahr (12 Monate) beginnt nach der Testphase, am Tag der ersten Belastung. Dieses Jahr ist von da an nicht erstattungsfähig. Der Vertrag läuft 3 Jahre. Sie können im Jahr 1 aussteigen, vor der ersten Verlängerung.
  • Eine Kündigung während der Testphase stoppt den Rest der Belastung. Die Anzahlung wird nicht erstattet. Siehe Testphase kündigen.

Jede Preiskarte auf der Website sagt "1 Monat Test · 10 % Anzahlung".

Zahlungsplan

scheduleFrom(purchase, firstChargeUsd, withTrial) in @pruva/pricing berechnet den Plan, und scheduleLabel() macht daraus die Zeile, die der Checkout vor der Bestellschaltfläche zeigt. Für Operations mit drei Pro-Modulen auf 10 Schiffen, bestellt am 16. Oktober 2026:

AuftragKostenlose TestphaseHeuteErste BelastungLaufzeitVerlängert amKasse zeigt
Mit Test16. Okt. 2026 bis 15. Nov. 2026$8,945$89,450 am 16. Nov. 202616. Nov. 2026 bis 15. Nov. 202716. Nov. 2027Heute: $8,945 Anzahlung · Rest am 16. Nov. 2026
Test bereits genutztkeiner (bereits genutzt)$89,450$89,450 am 16. Okt. 202616. Okt. 2026 bis 15. Okt. 202716. Okt. 2027Heute: $89,450 · Verlängert sich am 16. Okt. 2027

Vor der Bestellschaltfläche zeigt der Checkout für einen berechtigten Arbeitsbereich „Heute: $… Anzahlung · Restbetrag am …“, die Daten der Testphase, Beginn, Ende und Verlängerung des abgerechneten Jahres und den Betrag der ersten Belastung. Die Schaltfläche sagt 1-monatige Testphase starten.

Anspruch auf die Testphase

Der Checkout fragt die App per GET /api/trial-eligibility?workspace=… (kurzes Timeout), ob der Arbeitsbereich noch eine Testphase haben kann.

  • Testphase bereits genutzt. Der Checkout sagt „Ihre kostenlose Testphase wurde bereits genutzt“, zeigt den Plan für die heutige Belastung, baut die Bestellung ohne Testphase, und die Schaltfläche sagt Demo-Bestellung aufgeben.
  • App nicht erreichbar. Der Checkout nimmt an, dass die Testphase ungenutzt ist, und sagt das im Kleingedruckten. Die App prüft erneut, wenn die Bestellung ankommt.

Wenn die App mit 409 trial_used antwortet (zum Beispiel hat ein zweiter Tab die Testphase zuerst genutzt), wird nichts bestellt oder belastet. Der Checkout zeigt die Meldung, wechselt zum Plan ohne Testphase und entfernt das Häkchen im Einwilligungskästchen. Der Käufer muss es erneut setzen und die Bestellung ohne Testphase aufgeben. Die Website versucht nie von sich aus erneut ohne Testphase.

Laufzeitdaten

Eine Laufzeit hat drei Daten. Der Checkout zeigt alle drei, bevor Sie kaufen, und die Bestellung trägt sie.

DatumBedeutung
BeginnDer Tag der ersten Belastung, nach der Testphase. Ohne Testphase: der Tag der Bestellung.
EndeDer letzte Tag des abgerechneten Jahres: 12 Monate nach dem Beginn, minus ein Tag.
Verlängert amDer Tag nach dem Ende. Das nächste Jahr wird an diesem Tag belastet.

Beispiel: Eine Laufzeit, die am 23. Oktober 2026 beginnt, endet am 22. Oktober 2027 und verlängert sich am 23. Oktober 2027. Die Daten kommen aus termFrom() in @pruva/pricing und nutzen UTC-Tage.

Testphase kündigen

Während der Testphase öffnet ein Inhaber Einstellungen → Module & Abrechnung in der App, wo das Modul die verbleibenden Testtage und eine Schaltfläche Testphase kündigen zeigt.

  • Der Rest der ersten Belastung wird nicht eingezogen. Die Anzahlung wird nicht erstattet.
  • Die Module der Testphase sperren sofort.
  • Die Testphase zählt trotzdem als genutzt (eine je Kunde).

Nur der Inhaber kann kündigen, und nur solange die Testphase läuft. Jede Kündigung wird im Audit-Protokoll als billing.cancel_trial mit "(no charge)" geschrieben.

Die Restbelastung

Ein Job zieht den Rest der ersten Belastung ein, wenn der Testmonat endet: runTrialCharges() in @pruva/core (der Demo-Modus führt ihn verzögert aus) und sein SQL-Zwilling public.pv_run_trial_charges() (Datenbankmodus, nur Service-Rolle). Für jede Bestellung, deren firstChargeOn erreicht ist, erfasst er diese Belastung einmal und setzt die Module der Bestellung von trial auf active.

  • Idempotent. Er setzt charged_at einmal. Ein zweiter Lauf am selben Tag oder an einem späteren Tag belastet nichts erneut.
  • Belastet nie eine gekündigte Testphase. Bestellungen mit gesetztem trial_cancelled_at werden übersprungen.
  • In diesem Build gibt es keinen Zahlungsanbieter, daher hält „belasten“ die Belastung nur fest. Ein echter Build zieht die Belastung über die Zahlungsreferenz auf der Bestellung ein (eine Stripe-Rechnung oder das Einziehen einer 3-D-Secure-Vorautorisierung).

Verlängerung

Ein Plan verlängert sich um ein weiteres abgerechnetes Jahr (12 Monate), sofern die Verlängerung nicht vor dem Verlängerungsdatum gekündigt wird. Im Jahr 1 auszusteigen heißt, vor der ersten Verlängerung zu kündigen. Preise können sich nur bei der Verlängerung ändern, und Owner werden vor dem Verlängerungsdatum informiert.

Verlängerung kündigen

Nach der Testphase öffnet ein Inhaber Einstellungen → Module & Abrechnung in der App und tippt auf Verlängerung kündigen.

  • Sie stoppt die nächste Verlängerung und sonst nichts.
  • Der Zugriff läuft bis zum Ende der Laufzeit, die Sie bezahlt haben.
  • Nichts wird erstattet.

Keine Erstattungen

Nach der Testphase gibt es keine Erstattungen für das bereits begonnene Jahr, einschließlich ungenutzter Monate, ungenutzter Module oder einer Herabstufung. Nach dem Ende des abgerechneten Jahres werden die Daten 90 Tage aufbewahrt, damit Sie sie exportieren können, und danach gelöscht.

Zahlungsmethode: eine Referenz, nie Kartendaten

Der Checkout verlangt eine Zahlungsmethode; der Schritt ist Pflicht. Dieser Build hat keinen Zahlungsanbieter, daher zeigt er nie Felder für Kartennummer, Ablauf oder CVC und nimmt nie Kartendaten an. Die einzige Option ist „Demo-Karte · keine echte Karte (Stripe-Testmodus in der Produktion — vor dem Start prüfen)“. Der Server lehnt jede Anfrage ab, die Kartenfelder enthält.

Ein echter Build erfasst die Karte mit Stripe Elements oder einer 3-D-Secure-Vorautorisierung, sodass die Karte unsere Server nie berührt. So oder so trägt die Bestellung nur eine Referenz:

FeldDemowert
payment.providerdemo (oder stripe in einem echten Build)
payment.referencepm_demo_visa_4242; muss pm_… entsprechen
payment.labelDemo card · no real card; das Schema lehnt ein Label ab, das eine Kartennummer enthält

Einwilligung, die auf der Bestellung gespeichert wird

Beim Checkout muss der Käufer ein Kästchen ankreuzen. Es startet ohne Häkchen, und die Bestellschaltfläche bleibt deaktiviert, bis sowohl die Zahlungsmethode gewählt als auch das Kästchen angekreuzt ist. Das Kästchen sagt genau:

Ich stimme einer Anzahlung von 10 % heute zu, die einen einmonatigen Test eröffnet, gefolgt von einem 3-Jahres-Vertrag, jährlich im Voraus je Schiff abgerechnet zum Preis der Länderstufe meiner Rechnungsfirma, zuzüglich der einmaligen Einrichtungsgebühr, eines etwaigen Supportplans, einer etwaigen Safety-Vision-Kameraposition und der angezeigten Bordhardware. Safety Vision umfasst das Kamerakit, Garantie und Ersatz, die Eigentum von Pruva bleiben. Hardware ist eine eigene Position; Safety Vision und Hardware haben in jedem Land einen USD-Preis und werden durch die Länderstufe nicht ermäßigt. Ich kann im ersten Jahr vor der ersten Verlängerung aussteigen. Der Rest der ersten Abbuchung wird am Ende des Testmonats eingezogen, sofern ich nicht vorher kündige. Die Anzahlung wird nicht erstattet. Nach dem Test gibt es keine Erstattung für das bereits begonnene Jahr, und ich kann die Verlängerung jederzeit vor dem Verlängerungsdatum kündigen.

Der Server lehnt jede Bestellung ohne Einwilligung oder ohne Zahlungsmethode ab, egal was der Browser sendet. Die Bestellung, die die Website signiert und an die App sendet (StoreOrderSchema in @pruva/core), enthält:

FeldWas es enthält
consent.acceptedImmer true; eine Bestellung ohne Einwilligung wird nie gesendet.
consent.versionDie Version des Einwilligungstextes, jetzt 2026-10-20.2.
consent.atWann das angekreuzte Formular den Server erreicht hat (Serveruhr, ISO-Zeit).
trialstart, end, firstChargeOn; oder null, wenn die Testphase bereits genutzt wurde. Die Testphase dauert 1 Monat. Das abgerechnete Jahr beginnt an firstChargeOn.
chargeTodayUsdDie Anzahlung von 10% mit Testphase; die erste Belastung (annualUsd + oneOffUsd) ohne sie.
paymentDie Zahlungsreferenz oben.
term.start, term.end, term.renewsOnDie Daten des abgerechneten Jahres oben. Die App prüft, dass sie 12 Monate umspannen. Der Vertrag läuft 3 Jahre, mit einem Ausstieg im Jahr 1.
sku, modules, vesselsDas Paket oder Branchenpaket, jedes Modul, das es freischaltet (der Kern, die Pro-Module und cameras mit Safety Vision), und die Anzahl der Schiffe. support ist der Supportplan.
annualUsdDas Jahresabonnement für alle Schiffe. Die App prüft es gegen die Preisliste.
oneOffUsdEinrichtung je Schiff, Einrichtung und Installation von Safety Vision und das optionale Gateway-Kit.
firstChargeUsdannualUsd + oneOffUsd. Die Anzahlung wird heute eingezogen; der Rest wird eingezogen, wenn der Testmonat endet (oder der ganze Betrag heute ohne Testphase).

Die Erfolgsseite zeigt die Bestell-ID, die Positionen, den Testmonat, die heute eingezogene Anzahlung und das Datum des Restbetrags (oder den heute belasteten Betrag, wenn es keine Testphase gibt), die Daten des abgerechneten Jahres, „Zahlungsmethode: Demo-Karte · keine echte Karte“, „Einwilligung erfasst: Version … um …“ und einen Link zu Einstellungen → Module & Abrechnung. Die Testphase dort zu kündigen stoppt den Rest der Belastung. Die Anzahlung wird nicht erstattet.

Modul-Akzente

Jedes Modul hat seine eigene Akzentfarbe, aus @pruva/brand/tokens. Die App, die Website und diese Dokumentation nutzen sie nur für Ränder, Chips und Icons, nie für Fließtext. Akzentfarbener Text wechselt im hellen Thema zu einem dunkleren Ton, damit er WCAG AA erfüllt. Die Marke selbst bleibt monochrom, mit Messing für primäre Schaltflächen.

Auf dieser Seite