Vertrag erzeugen und als QR-Code anzeigen — z.B. auf einem Tablet im Shop, oder per API aus eurem eigenen System.
Ihr erzeugt einen Vertrag über die Business-API und bekommt sofort einen QR-Code zurück. Eure Kundschaft scannt ihn mit der normalen SnapPact-App und unterschreibt dort ganz regulär — Face ID/Touch ID/Fingerabdruck, echte fortgeschrittene elektronische Signatur (FES). Ihr müsst selbst nichts signieren oder prüfen, das übernimmt SnapPact komplett.
POST /business/contracts mit Vorlage + euren AngabenqrValue selbst rendern — 5 Minuten gültigGET /business/contracts/:id pollen, oder Webhook-URL hinterlegen und benachrichtigt werdenJeder Aufruf braucht den Header X-Business-Key mit eurem Schlüssel (erstellbar hier im Business-Portal unter "API-Zugriff" oder in der SnapPact-App unter Profil → Business → API-Zugriff — beides verwaltet dieselben Schlüssel). Schlüssel niemals im Frontend/Client-seitigen Code eurer eigenen Website verwenden — nur serverseitig aufrufen.
curl -X POST https://api.snappact.ortino.tech/business/contracts \
-H "X-Business-Key: sk_business_..." \
-H "Content-Type: application/json" \
-d '{
"templateId": "tpl-goods-sale",
"initiatorName": "Muster GmbH",
"values": {
"item_description": "iPhone 14 Pro, 256GB, Space Schwarz",
"price": "1500",
"known_defects": "Keine bekannten Mängel"
}
}'
{
"contractId": "ctr_...",
"qrValue": "snappact://handshake/<token>",
"qrImageUrl": "/business/contracts/ctr_.../qr.png",
"sessionToken": "<token>",
"expiresAt": "2026-09-22T18:35:00.000Z"
}
qrValue zeigt auf snappact://handshake/<token> (App-Scan) ODER auf eine Web-Adresse (https://sign.snappact.ortino.tech/h/<token>, scannbar mit der normalen Handy-Kamera, kein App-Download nötig) — je nachdem, ob der Web-Weg für dieses Konto wirksam ist ("Web-Weg"-Einstellung in diesem Portal). Welcher der beiden Fälle gerade gilt, steht nicht in dieser Antwort, aber ihr müsst nichts unterscheiden: beide Werte sind gültige, direkt scannbare QR-Inhalte, die zum selben Vertrag führen.
values ist nur für Felder optional, die laut Vorlage NICHT euch (der initiierenden Seite) als Pflichtfeld zugewiesen sind. Ist ein Feld für euch Pflicht (assignedTo: 'initiator', required: true — bei den meisten Vorlagen der Fall, siehe Beispiel oben mit drei Pflichtfeldern — oder assignedTo: 'either', required: true, siehe unten), lehnt der Server die Anfrage ohne diesen Wert mit 400 required_fields_missing ab (welche Feld-IDs fehlen, steht im Feld fields der Fehlerantwort). Felder, die ausdrücklich der Gegenpartei zugewiesen sind, dürft ihr dagegen nicht vorbefüllen (der Server lehnt das mit 409 value_not_assigned_to_you ab) — die trägt die Gegenpartei selbst in der App ein. Welche Felder eine Vorlage hat und wem sie zugewiesen sind, liefert GET /templates bzw. GET /business/templates mit (siehe "Verfügbare Vorlagen" unten).
assignedTo: 'either' gehören bei Business-Verträgen euch. Ihr unterschreibt selbst nie — die Gegenpartei schliesst allein ab. Damit sie eure Bedingungen (z.B. "Weitere Vereinbarungen") vor ihrer Unterschrift nicht umschreiben kann, sind 'either'-Felder mit dem Anlegen fixiert: nur ihr setzt sie, und zwar in diesem Aufruf (ein 'either'-Feld mit required: true müsst ihr deshalb schon hier mitschicken). Was ihr leer lasst, bleibt leer — die Gegenpartei kann es weder in der App noch im Web nachtragen oder ändern (value_not_assigned_to_you). Ebenso stellt nur ihr neue QR-Codes aus (POST /business/contracts/:id/session); die Gegenpartei kann keine weiteren Personen einladen.Zwei Wege — beide zeigen denselben Code, beide laufen serverseitig (der Business-Key bleibt dabei dort, nie im Browser eurer Endkund:innen):
qrImageUrl serverseitig mit eurem X-Business-Key-Header abrufen (fertiges PNG) und selbst an eure Endkund:innen ausliefern — z.B. als data:-URI in die von euch gerenderte Seite einbetten (empfohlen), oder über einen eigenen Bild-Endpoint eurer Website weiterreichen. Achtung, falls ihr Letzteres tut: das PNG enthält den Beitritts-Token im Klartext (als QR-Code) — wer es abrufen kann, kann dem Vertrag beitreten. Ein solcher Endpoint darf also nicht aufzählbar sein (nie eine fortlaufende Bestell-/Kundennummer als Pfad), sondern an die unerratbare contractId gebunden, und sollte nach Ablauf von expiresAt nichts mehr ausliefern.qrValue selbst mit einer eigenen QR-Bibliothek rendern (z.B. npm-Paket qrcode für Node, qrcode.js im Browser, qrcode-Pip-Paket für Python) — braucht keinen weiteren Aufruf an SnapPact.curl https://api.snappact.ortino.tech/business/contracts/ctr_... \
-H "X-Business-Key: sk_business_..."
GET /business/contracts?recent=… gelten nur für Verträge, die mit genau diesem Schlüssel erzeugt wurden — einen Vertrag eines anderen Schlüssels desselben Kontos beantwortet die API mit 404. Tauscht ihr einen Schlüssel aus (Widerruf, Ablauf), sind die mit dem alten Schlüssel erzeugten Verträge über die API also nicht mehr abrufbar; im Business-Portal unter "Verträge" seht ihr als Kontoinhaber:in weiterhin alle Verträge des Kontos.| Status | Bedeutung |
|---|---|
awaiting_counterparty | Noch keine Unterschrift. Achtung: der Status bleibt auch NACH dem Scannen bzw. Beitritt der Gegenpartei unverändert, bis die erste Unterschrift vorliegt — ob schon jemand beigetreten ist, zeigt partyCount in derselben Antwort (ab 2 ist die Gegenpartei beigetreten), ob schon unterschrieben wurde, signatureCount |
ready_to_sign | Alle nötigen Unterschriften liegen vor, Versiegelung steht noch aus — der häufigste Zwischenzustand bei Business-Verträgen |
partially_signed | Gegenpartei beigetreten, unterschreibt gerade (nur, wenn mehrere Unterschriften nötig sind) |
sealed | Fertig — rechtsverbindlich signiert und versiegelt |
declined | Gegenpartei hat abgelehnt — Endzustand, der Vertrag kommt nicht mehr zustande |
cancelled | Vertrag wurde storniert — Endzustand |
Beim Erstellen eines API-Schlüssels eine Webhook-URL hinterlegen — SnapPact schickt dann automatisch einen POST mit { contractId, status, sealedAt, documentHash }, sobald der Vertrag versiegelt ist. Die Benachrichtigung geht an die URL genau des Schlüssels, mit dem der Vertrag erzeugt wurde.
Die URL muss https sein, auf ein öffentlich erreichbares Ziel zeigen und darf keine Zugangsdaten enthalten (https://benutzer:passwort@… wird mit 400 invalid_webhook_url abgelehnt — für eine Absicherung stattdessen die Signatur unten prüfen oder ein Geheimnis in den Pfad legen). Weiterleitungen (30x) werden nicht verfolgt, und nach 5 Sekunden ohne Antwort bricht SnapPact ab.
Signatur prüfen (empfohlen) — jede Zustellung trägt den Header
X-SnapPact-Signature: sha256=<hex>. Das ist ein HMAC-SHA256 über den rohen Request-Body (die Bytes genau so, wie sie ankommen — nicht über ein neu serialisiertes JSON-Objekt). Als Geheimnis dient der SHA-256-Hex-Hash eures eigenen Business-Schlüssels:
secret = sha256("sk_business_…"). SnapPact gibt dafür bewusst kein zusätzliches Secret aus: diesen Wert könnt ihr aus dem Schlüssel, den ihr ohnehin habt, jederzeit selbst berechnen, während er nirgends über die API ausgeliefert wird.
import crypto from 'node:crypto';
// WICHTIG: den ROHEN Body verwenden, z.B. express.raw({ type: 'application/json' })
app.post('/snappact-webhook', express.raw({ type: 'application/json' }), (req, res) => {
const secret = crypto.createHash('sha256').update(process.env.SNAPPACT_BUSINESS_KEY).digest('hex');
const erwartet = 'sha256=' + crypto.createHmac('sha256', secret).update(req.body).digest('hex');
const erhalten = req.get('X-SnapPact-Signature') || '';
const a = Buffer.from(erwartet);
const b = Buffer.from(erhalten);
if (a.length !== b.length || !crypto.timingSafeEqual(a, b)) return res.sendStatus(401);
const { contractId, status, sealedAt, documentHash } = JSON.parse(req.body.toString('utf8'));
res.sendStatus(204);
});
Ohne diese Prüfung kann jede und jeder, der die Webhook-URL kennt (z.B. aus einem Proxy-Log), gefälschte Benachrichtigungen schicken, die aussehen wie von SnapPact. Widerruft ihr einen Schlüssel und legt einen neuen an, ändert sich damit auch das Signatur-Geheimnis.
Node.js
const res = await fetch('https://api.snappact.ortino.tech/business/contracts', {
method: 'POST',
headers: {
'X-Business-Key': process.env.SNAPPACT_BUSINESS_KEY,
'Content-Type': 'application/json',
},
body: JSON.stringify({
templateId: 'tpl-goods-sale',
initiatorName: 'Muster GmbH',
values: {
item_description: 'iPhone 14 Pro, 256GB, Space Schwarz',
price: '1500',
known_defects: 'Keine bekannten Mängel',
},
}),
});
const { contractId, qrImageUrl } = await res.json();
Python
import requests
res = requests.post(
"https://api.snappact.ortino.tech/business/contracts",
headers={"X-Business-Key": SNAPPACT_BUSINESS_KEY},
json={
"templateId": "tpl-goods-sale",
"initiatorName": "Muster GmbH",
"values": {
"item_description": "iPhone 14 Pro, 256GB, Space Schwarz",
"price": "1500",
"known_defects": "Keine bekannten Mängel",
},
},
)
contract = res.json()
| Status | Bedeutung |
|---|---|
| 400 | Ungültige Anfrage — z.B. invalid_request (Schema), unknown_field, required_fields_missing, reserved_display_name, value_too_long (ein Positionsfeld-Wert überschreitet die Längengrenze) oder invalid_line_items (Positionsliste strukturell ungültig, z.B. mehr als 30 Positionen oder eine fehlende Pflichtangabe je Position) |
| 401 | Business-Key fehlt oder ungültig (missing_business_key, invalid_business_key, business_key_expired) |
| 402 | purchase_required — kostenpflichtige Vorlage, für dieses Konto noch nicht freigeschaltet |
| 403 | Abo nicht aktiv (subscription_inactive), Konto gesperrt (account_suspended), AGB nicht zugestimmt (terms_not_accepted), zu niedrige Vertrauensstufe (trust_level_required) oder fremder Vertrag (forbidden) |
| 404 | Vorlage oder Vertrag nicht gefunden — auch für eine Vorlage, die für Business-Verträge nicht nutzbar ist (z.B. eine fremde Community-Vorlage, siehe "Verfügbare Vorlagen"), und für einen Vertrag, den ein anderer Schlüssel eures Kontos erzeugt hat (siehe "Status abfragen") |
| 409 |
contract_full (max. Anzahl Parteien erreicht), contract_closed (abgelehnt/storniert/versiegelt) oder contract_locked_by_signature (ab der ersten Unterschrift ist die Parteienliste eingefroren) — alle drei endgültig für diesen Vertrag.value_not_assigned_to_you: ein Wert in values gehört laut Vorlage der Gegenpartei (assignedTo: 'counterparty') — siehe Hinweis bei Schritt 1 oben, dieses Feld leer lassen.no_active_session: für diesen Vertrag läuft gerade keine QR-Session — per POST /business/contracts/:id/session eine neue erzeugen.audit_trail_full: die Ereignis-Obergrenze dieses Vertrags ist erreicht (Schutz gegen unbegrenztes Wachstum bei wiederholtem Erneuern). Hier hilft nur ein neuer Vertrag — POST /business/contracts/:id/session nicht in einer Schleife aufrufen, sondern erst, wenn wirklich jemand einen neuen QR-Code braucht.offer_expired: das Angebot dieses Vertrags ist abgelaufen (sein Gültigkeitsdatum ist überschritten) — für diesen Vertrag lässt sich kein neuer QR-Code mehr erzeugen, endgültig. Hier hilft nur ein neuer Vertrag.session_token_collision: sehr seltener, vorübergehender Konflikt beim Erzeugen des QR-Codes (POST /business/contracts oder POST /business/contracts/:id/session). Es wurde nichts angelegt oder geändert — dieselbe Anfrage einfach unverändert wiederholen.
|
| 410 | session_expired — der QR-Code ist älter als 5 Minuten. Per POST /business/contracts/:id/session eine neue Session erzeugen, statt einen neuen Vertrag anzulegen |
| 429 | rate_limited — zu viele Anfragen, kurz warten |
Alle öffentlichen Vorlagen samt ID über GET /templates abrufbar (keine Authentifizierung nötig). Nicht jede davon ist für Business-Verträge nutzbar: Community-Vorlagen (badge: 'community') kann ihre Autor:in jederzeit umschreiben — da ihr selbst nie unterschreibt und die Gegenpartei allein abschliesst, würde sie so an einen Text gebunden, den weder ihr noch SnapPact geprüft habt. POST /business/contracts lehnt Community-Vorlagen deshalb mit 404 template_not_found ab, ausser es sind eure eigenen. Nutzbar sind SnapPact-eigene, geprüfte Vorlagen, "business-only"-Vorlagen und eure eigenen Vorlagen. Genau diese Menge liefert die Business-Liste (GET /business/templates, siehe unten), die auch das QR-Code-Werkzeug im Portal anbietet. Jede Vorlage enthält fields mit id, label, type, required und assignedTo ('initiator'/'counterparty'/'either') — genau diese Liste bestimmt, welche Werte ihr in values mitschicken müsst bzw. dürft (siehe Schritt 1 oben; 'either' gehört bei Business-Verträgen euch).
curl https://api.snappact.ortino.tech/business/templates \
-H "X-Business-Key: sk_business_..."
GET /business/templates (mit eurem X-Business-Key) liefert genau die Vorlagen, aus denen ihr Verträge anlegen könnt — auch eure eigenen, noch nicht veröffentlichten Vorlagen-Entwürfe sowie kuratierte "business-only"-Vorlagen (für jedes Business-Konto nutzbar, im öffentlichen Marktplatz nicht sichtbar), aber keine fremden Community-Vorlagen. Nützlich, um die Feldliste einer Vorlage programmatisch abzufragen, statt sie hier in der Doku nachzuschlagen. Das Feld origin sagt, woher eine Vorlage stammt: 'snappact' (SnapPact-eigene, geprüfte Vorlage), 'business_only' (kuratierte Business-Vorlage) oder 'own' (eure eigene Vorlage, Entwurf oder selbst veröffentlicht); badge enthält zusätzlich die Kennzeichnung der Vorlage selbst.
Jedes Feld einer Vorlage (aus GET /templates bzw. GET /business/templates) hat ein type — das bestimmt, welche Art von Wert in values[fieldId] erwartet wird. Wichtig zu wissen: in Contract.values ist jeder Wert technisch ein String (auch eine Zahl oder ein Datum) — der Server prüft die meisten Typen NICHT auf ein bestimmtes Format (nur Länge und ob sie zur richtigen Seite gehören, siehe "Vertrag erstellen" oben). Die untenstehenden Formate sind deshalb Empfehlungen, damit euer Wert in der SnapPact-App genauso aussieht, wie es eure Kundschaft erwartet — mit einer einzigen Ausnahme, die wirklich streng geprüft wird: lineItems.
| Typ | Erwarteter Wert |
|---|---|
| text | Beliebiger kurzer Text, z.B. "Muster GmbH". |
| longtext | Längerer Fliesstext, z.B. eine Leistungsbeschreibung. Zeilenumbrüche sind erlaubt (\n im JSON). |
| number | Zahl als String, z.B. "12". Kein Tausendertrennzeichen, Punkt statt Komma für Nachkommastellen. |
| currency | Geldbetrag als String ohne Währungssymbol, z.B. "1500" oder "1500.50". Die Währung selbst steht auf der Vorlage (contractCurrency), nicht im Feldwert. |
| percent | Zahl als String ohne %-Zeichen, z.B. "7.7" für 7,7%. |
| date | Empfohlen: ISO-Format "2026-09-29" (JJJJ-MM-TT) — die App zeigt es unabhängig vom Eingabeformat in der App-Sprache an, ein eindeutiges Format vermeidet Verwechslungen zwischen Tag und Monat. |
Eine E-Mail-Adresse, z.B. "kundin@example.ch". Wird nicht auf Gültigkeit geprüft — eine offensichtlich falsche Adresse lehnt der Server nicht ab, sie erscheint einfach so im Dokument. | |
| phone | Telefonnummer als Text, z.B. "+41 79 123 45 67". Empfohlen: mit Ländervorwahl, damit sie unabhängig vom Land eurer Kundschaft eindeutig bleibt. |
| iban | IBAN als Text, mit oder ohne Leerzeichen, z.B. "CH93 0076 2011 6238 5295 7". |
| address | Adresse als ein einzelner Text (kein strukturiertes Objekt mit Strasse/PLZ/Ort getrennt), z.B. "Bahnhofstrasse 1, 8001 Zürich". |
| checkbox | Genau der String "true" für angehakt, oder ein leerer String "" für nicht angehakt — kein echter JSON-Boolean (true/false ohne Anführungszeichen wird abgelehnt, da values als reine String-Map definiert ist). |
| lineItems |
Einzige strukturell geprüfte Ausnahme. Der Wert ist selbst wieder ein JSON-String (ein String, dessen Inhalt gültiges JSON ist), der zu einem Array aus Objekten wird:
description (Pflicht, max. 120 Zeichen), quantity (Pflicht, positive Zahl), unit (optional, max. 20 Zeichen, z.B. "Std.", "m²", "Stk."), unitPrice (Pflicht, nie negativ, max. 2 Nachkommastellen — 85.126 wird mit 400 invalid_line_items abgelehnt statt auf 85.13 gerundet, damit nie ein anderer Betrag im unterschriebenen Dokument steht als eingegeben). Höchstens 30 Positionen. Die Gesamtsumme berechnet SnapPact automatisch, sie gehört nicht in den Wert.
|
GET /templates/<id> bzw. die Feldliste in GET /business/templates — die Tabelle oben ist eine Formatreferenz, keine Liste, welche Felder es gibt.Jede Einstellung im Portal — was sie bewirkt, wann ihr sie ändern solltet, und warum sie so und nicht anders funktioniert.
Was: Ein frei gewählter Name für euren Schlüssel (z.B. "Kassensystem Filiale Zürich").
Wann ändern: Beim Erstellen festlegen — hilfreich, sobald ihr mehr als einen Schlüssel habt (z.B. einen je Filiale oder System), damit ihr in der Liste seht, welcher welcher ist.
Warum: Rein zu eurer eigenen Orientierung. SnapPact wertet den Namen nicht aus — er hat keine Funktion ausser der Anzeige in der Liste.
Was: Ein hier im Portal erstellter Schlüssel läuft nach 90 Tagen automatisch ab (danach antwortet die API mit 401 business_key_expired); das Ablaufdatum steht in der Schlüsselliste. Ein in der SnapPact-App erstellter Schlüssel ist unbefristet.
Wann beachten: Wenn eine dauerhafte Integration (Kassensystem, Webshop) mit einem Portal-Schlüssel läuft — rechtzeitig einen neuen erstellen und austauschen, oder den Schlüssel gleich in der App anlegen.
Warum: Das Portal ist auch für ein geteiltes Tablet an der Kasse gedacht, an dem im Laufe des Tages andere Personen die offene Seite bedienen können. Ein dort unbemerkt erstellter Schlüssel soll nicht für immer gültig bleiben. Zusätzlich schickt SnapPact bei jeder Schlüssel-Erstellung im Portal eine Mitteilung an die SnapPact-App des Kontos (lässt sich nicht abbestellen) — kommt sie unerwartet, den Schlüssel unter "API-Zugriff" widerrufen.
Bei jeder Anmeldung prüfen: Die Mitteilung erreicht nur Geräte, auf denen die SnapPact-App mit diesem Konto angemeldet ist — wer nur im Portal arbeitet (z.B. am Tablet an der Kasse), bekommt sie nicht, und auch sonst ist die Zustellung einer Mitteilung nie garantiert. Prüft deshalb nach jeder Anmeldung unter "API-Zugriff" die Schlüsselliste auf Schlüssel, die seit eurer letzten Anmeldung im Portal erzeugt wurden (Datum "Erstellt"), und widerruft jeden, den ihr nicht selbst erstellt habt.
Was: Eine Adresse eures eigenen Systems, an die SnapPact automatisch meldet, sobald ein mit diesem Schlüssel erzeugter Vertrag versiegelt wird.
Wann setzen: Wenn euer System den Abschluss eines Vertrags SOFORT mitbekommen soll (z.B. um eine Bestellung freizugeben), ohne selbst wiederholt nachzufragen (Pollen). Wann leer lassen: Wenn ihr stattdessen selbst per GET /business/contracts/:id abfragt, oder nur das Portal nutzt (das QR-Werkzeug braucht keinen Webhook).
Warum diese Regeln: Muss https sein (kein http, sonst könnte die Meldung unterwegs mitgelesen/verändert werden) und darf keine Zugangsdaten in der URL enthalten (https://user:pass@… wird abgelehnt) — dafür gibt es die Signaturprüfung (siehe Abschnitt "Webhook" oben), sicherer als ein Passwort in der URL, das z.B. in einem Proxy-Log landen könnte.
Was: Erzwingt für Verträge, die mit GENAU DIESEM Schlüssel erzeugt werden, den Web-Weg an oder aus — unabhängig vom Konto-Schalter (siehe "Web-Weg verstehen" unten).
Diese Einstellung könnt ihr nicht selbst setzen — sie wird von SnapPact auf Anfrage konfiguriert (z.B. für eine Integration, die den Web-Weg bewusst nie nutzen soll, unabhängig davon, was später am Konto-Schalter geändert wird). Ihr seht den aktuellen Stand im Portal unter "API-Zugriff", könnt ihn dort aber nicht ändern.
Warum: Ein Konto kann mehrere Schlüssel für unterschiedliche Zwecke haben (z.B. eine externe Integration UND das eigene Portal-Konto) — die Übersteuerung erlaubt, den Web-Weg für EINEN bestimmten Zweck fest ein- oder auszuschalten, ohne dass eine spätere Konto-weite Änderung das versehentlich mit umstellt.
Was: Der Name, der eurer Kundschaft auf der Web-Vorstufe eures Vertrags angezeigt wird (siehe "Web-Weg verstehen" unten), statt eines generischen Platzhalters.
Wann ändern: Einmalig beim Einrichten, danach nur bei einer echten Namensänderung (z.B. Umfirmierung).
Warum die Prüfung: SnapPact prüft jeden Namen von Hand, bevor er live geht — verhindert, dass sich jemand fälschlich als andere Firma ausgibt. Eine Namensänderung löst die Prüfung erneut aus und wirkt sofort: bis SnapPact den neuen Namen freigegeben hat, ist der Web-Weg für euer Konto gesperrt. Bereits laufende Web-Abschlüsse (geöffnete Links, Reservierungen) werden dabei abgebrochen, und der bisherige Name wird nicht weiter angezeigt — wo ein Absender erscheint, steht bis zur Freigabe der neutrale Platzhalter "Business-Partner". QR-Codes funktionieren in dieser Zeit weiter über die SnapPact-App. Ändert den Namen deshalb nur, wenn es wirklich nötig ist.
Was: Eine Farbe für die Kopfzeile der Web-Vorstufe (rein optisch, kein Bestandteil des Vertragsinhalts).
Wann ändern: Frei nach eurem Geschmack, jederzeit — anders als der Name braucht eine Farbänderung KEINE erneute Prüfung.
Warum: Wiedererkennbarkeit für eure Kundschaft, ohne dass SnapPact jede Farbe einzeln freigeben müsste (anders als beim Namen gibt es hier kein Missbrauchsrisiko).
Was: Euer Firmenlogo, erscheint neben dem Namen auf der Web-Vorstufe.
Wann hochladen: Optional, jederzeit. PNG, JPEG oder WebP, maximal 2 MB.
Warum eine eigene Prüfung, getrennt vom Namen: Ein neues Logo setzt NICHT die Freigabe des Namens zurück (und umgekehrt) — ihr könnt z.B. ein neues Logo hochladen, ohne dass der bereits freigegebene Name erneut geprüft werden muss. Jedes neue oder ersetzte Logo braucht aber selbst wieder eine Freigabe.
Was: Der Konto-weite Hauptschalter für den Web-Weg (siehe nächster Abschnitt) — gilt für alle eure Schlüssel, ausser eine Schlüssel-Übersteuerung (siehe oben) sagt für einen bestimmten Schlüssel ausdrücklich etwas anderes.
Wann aktivieren: Erst NACHDEM der Firmenname freigegeben wurde — vorher hat der Schalter keine Wirkung ("Wird erst wirksam, sobald der Name freigegeben ist").
Warum getrennt vom Namen: Ihr könnt euren Namen schon vorbereiten und prüfen lassen, ohne den Web-Weg sofort für alle laufenden Verträge zu aktivieren — zwei unabhängige Schritte statt eines einzigen "Alles an"-Knopfs.
Der "Web-Weg" ist SnapPacts Bezeichnung dafür, dass eure Kundschaft einen Vertrag im Browser ansehen und (nach Anmeldung) ausfüllen kann, ohne vorher die SnapPact-App installiert zu haben — gedacht für den Fall, dass jemand euren QR-Code scannt und die App noch gar nicht kennt.
Ob der Web-Weg für einen konkreten Vertrag wirksam ist, hängt von einer einzigen, klaren Regel ab:
Ohne Web-Weg (z.B. Name noch nicht freigegeben, oder Schalter aus) landet eure Kundschaft beim Scannen des QR-Codes direkt in der SnapPact-App (sofern installiert) — der bisherige, unveränderte Weg.
Diese Funktion wird schrittweise freigeschaltet. Meldet euch bei SnapPact, wenn ihr den Web-Weg für euer Konto nutzen möchtet.