{
  "brand": "Kevmi",
  "version": "2026-10-23.16",
  "updatedAt": "2026-10-23",
  "articles": [
    {
      "id": "quickstart",
      "title": "Schnellstart",
      "summary": "Erkunden Sie Ihren Arbeitsbereich, richten Sie Ihren Shop ein und sehen Sie eine Rechnung so, wie Ihr Kunde sie sehen wird. Dieser Leitfaden führt Sie in der richtigen Reihenfolge durch die wichtigsten Schritte.",
      "group": "start",
      "url": "/docs/quickstart",
      "tags": [
        "start",
        "einrichten",
        "erste Zahlung",
        "schnellstart"
      ],
      "sections": [
        {
          "id": "explore",
          "title": "1. Das Produkt erkunden",
          "paragraphs": [
            "Öffnen Sie den Demo-Arbeitsbereich, um eine Testbestellung zu erstellen, Zahlungslinks zu erkunden und eine Gebührenberechnung zu prüfen. Die Demo verwendet separate Testdaten. Sie erstellt keine Bankzahlung und überweist keine Gelder auf eine Geldbörse."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": [
            {
              "label": "Demo-Arbeitsbereich öffnen",
              "href": "/demo/index.html"
            },
            {
              "label": "Checkout-Vorschau",
              "href": "/pay/demo"
            }
          ]
        },
        {
          "id": "account",
          "title": "2. Ein Konto mit Telegram erstellen",
          "paragraphs": [
            "Nach der Telegram-Anmeldung öffnet sich das Händlerkonto. Das Website-Onboarding befindet sich unter /account#applications; sowohl das Formular als auch die individuelle Nachverfolgung unter /account#applications/{id} bleiben innerhalb der App.",
            "Eine neue Zahlung und Kartenabsicht erfordern, dass der neueste Website-Review-Antrag des Händlers genehmigt wurde. Die Genehmigung allein verbindet das Zahlungsgateway nicht. Wenn die Überprüfung nach dem Versand geändert wird, bleibt der bestehende Vorgang für Statusabfragen, Abgleich und einen angefragten Bankcode verfügbar."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": [
            {
              "label": "Ihr Konto öffnen",
              "href": "/account"
            }
          ]
        },
        {
          "id": "settings",
          "title": "3. Ihren Shop einrichten",
          "paragraphs": [],
          "bullets": [],
          "steps": [
            "Wählen Sie einen Shopnamen, den Ihr Kunde wiedererkennen wird.",
            "Wählen Sie eine Standard-Mehrwertsteuerregel. Jede neue Rechnung akzeptiert separat Kunden- und MwSt-Anteile von 0 bis 100 %.",
            "Wählen Sie die Benachrichtigungen, die Sie in Telegram erhalten möchten.",
            "Verwenden Sie den Rechner, um einen typischen Bestellbetrag zu prüfen."
          ],
          "table": null,
          "code": null,
          "note": "",
          "links": [
            {
              "label": "Gebühren und MwSt berechnen",
              "href": "/pricing"
            }
          ]
        },
        {
          "id": "invoice",
          "title": "4. Einen Zahlungslink vorbereiten",
          "paragraphs": [
            "Geben Sie einen klaren Bestelltitel, einen Betrag und eine Währung ein. Der Kunde erhält eine eigene Seite mit Kaufdetails und dem fälligen Gesamtbetrag. Eine bestehende Rechnung behält ihre ursprünglichen Bedingungen, wenn sich Ihre Shopeinstellungen ändern."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": [
            {
              "label": "Leitfaden für Zahlungslinks",
              "href": "/docs/payment-links"
            }
          ]
        },
        {
          "id": "activate",
          "title": "5. Zahlungsverfügbarkeit prüfen",
          "paragraphs": [
            "Verwalten Sie Rechnungen, API-Schlüssel, Widgets und Webhooks von Ihrem Konto aus. Vor der Zahlung prüft Kevmi die Gateway-Konfiguration, die Händlergenehmigung, den Betrag und die Rechnungsbedingungen. Wenn die gewählte Methode nicht verfügbar ist, erklärt der Checkout warum.",
            "Neue Workspace-Rechnungen verwenden einen USD-Basispreis, und Any bietet alle vier Methoden an. SBP rechnet zum eingefrorenen Referenzkurs der Bank von Russland in RUB um; Krypto verwendet die explizite 1:1-USD/USDT-Rechnungsregel. Legacy-native Preise bleiben für alte Rechnungen und API-Anfragen ohne pricingMode=universal verfügbar. Siehe Abschnitt zu mehreren Geschäften und USD-Preisen unten.",
            "Für eine neue Live-Karten- oder Alipay-Zahlung unterstützt das aktuelle Gateway nur feeCustomerPercent=0 und vatCustomerPercent=100: der Händler übernimmt die gesamte Bearbeitungsgebühr und die MwSt wird dem Kunden vollständig hinzugefügt. Andere Anteile können auf einer Rechnung gespeichert und berechnet werden, aber die Ausführung ist mit unsupported_allocation blockiert. Der Server ändert gespeicherte Bedingungen niemals stillschweigend. SBP- und USDT-Kryptozahlungen unterstützen jeden Bearbeitungsgebührenanteil und haben keine MwSt."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "Das Erstellen einer Rechnung, eines Schlüssels oder eines Antrags kostet kein Geld. Die Erstellung von Auszahlungen über die API ist nicht verfügbar; die Auszahlungsbedingungen werden in einem separaten Leitfaden behandelt.",
          "links": [
            {
              "label": "Gateway-Integrationsanforderungen",
              "href": "/docs/gateway"
            }
          ]
        },
        {
          "id": "stores-usd",
          "title": "Mehrere Geschäfte und ein USD-Basispreis",
          "paragraphs": [
            "Wählen Sie Alle Geschäfte für aggregierte Analysen und Betrieb, oder wählen Sie ein Geschäft für dessen eigene Aufzeichnungen. Jedes Geschäft hat eine separate storeId, einen Namen, einen MwSt-Standardwert, Rechnungen, API-Schlüssel, Webhook-Endpunkte, Ereignisverlauf und Website-Anwendung. Benachrichtigungen und Support-Tickets gehören zum Konto. Ein Konto kann bis zu 100 Geschäfte erstellen. Vorhandene Datensätze verbleiben im ersten Geschäft.",
            "Neue Workspace-Rechnungen verwenden pricingMode=\"universal\" und einen USD-Basispreis. Any umfasst Karte, Alipay, SBP und Krypto; ein Händler kann eine Teilmenge auswählen. Karten und Alipay berechnen USD. SBP berechnet RUB unter Verwendung des USD/RUB-Referenzkurses der Bank von Russland. Krypto berechnet USDT gemäß der expliziten Rechnungsregel 1 USD = 1 USDT. Dies ist eine Rechnungsumrechnungsregel, kein Markt-USDT-Kurs. Das Gateway liefert den Kurs der ausgewählten Münze, den genauen Überweisungsbetrag und Anweisungen vor der Überweisung.",
            "Der Referenzkurs und beide Beträge werden bei der Erstellung eingefroren. Rechnungen mit RUB-Umrechnung verfallen innerhalb von 24 Stunden. Wenn der Referenzkurs nicht abgerufen werden kann, schlägt die Erstellung mit FX_UNAVAILABLE fehl; es wird kein erfundener oder veralteter Ersatzkurs verwendet. Der Basisbetrag Minor und Angebote verwenden die USD-Buchungswährung. quotes[method].settlement enthält das native Belastungsangebot. Der öffentliche Checkout legt die ausgewählte Belastungswährung in currency, den ursprünglichen Preis in baseAmountMinor/baseCurrency und den Referenzkurs in fx offen. Sobald eine Zahlung ausgelöst wurde, kann ihre Methode nicht geändert werden; eine Rechnung hat einen Gateway-Vorgang.",
            "Erstellen Sie einen API-Schlüssel im vorgesehenen Geschäft und senden Sie Authorization: Bearer <key> von Ihrem Server. Seine Geschäftsbindung ist unveränderlich; X-Kevmi-Store kann ihm keinen Zugriff auf ein anderes Geschäft gewähren. Browser-Sitzungen wählen X-Kevmi-Store: <storeId>; wenn es weggelassen wird, wird das erste Geschäft ausgewählt. Der Wert all wird nur von GET /api/account/dashboard und GET /api/payment-links akzeptiert. Mutationen erfordern ein ausgewähltes Geschäft, Origin und X-CSRF-Token. Konto-IDs und Geschäfts-IDs sind unterschiedliche Kennungen.",
            "Aus Kompatibilitätsgründen behalten API-Anfragen ohne pricingMode=\"universal\" native Preise und die ursprünglichen Währungsbeschränkungen bei. Bestehende Rechnungen werden nie neu berechnet. Bestätigte Zahlungseingänge in Analysen spiegeln verifizierte Zahlungen abzüglich gespeicherter Rechnungsausgaben wider; sie sind kein abhebbarer Saldo. Legacy-Rechnungswährungen bleiben getrennt, und Auszahlungen werden mit dem Support vereinbart. Führen Sie eine Bestellung erst aus, nachdem Sie payment.fulfillmentReady=true und payment.status=\"succeeded\" über die Server-API, den Ereignisverlauf oder einen signierten Webhook geprüft haben."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        }
      ],
      "body": "1. Das Produkt erkunden\n\nÖffnen Sie den Demo-Arbeitsbereich, um eine Testbestellung zu erstellen, Zahlungslinks zu erkunden und eine Gebührenberechnung zu prüfen. Die Demo verwendet separate Testdaten. Sie erstellt keine Bankzahlung und überweist keine Gelder auf eine Geldbörse.\n\nDemo-Arbeitsbereich öffnen\n\nCheckout-Vorschau\n\n2. Ein Konto mit Telegram erstellen\n\nNach der Telegram-Anmeldung öffnet sich das Händlerkonto. Das Website-Onboarding befindet sich unter /account#applications; sowohl das Formular als auch die individuelle Nachverfolgung unter /account#applications/{id} bleiben innerhalb der App.\n\nEine neue Zahlung und Kartenabsicht erfordern, dass der neueste Website-Review-Antrag des Händlers genehmigt wurde. Die Genehmigung allein verbindet das Zahlungsgateway nicht. Wenn die Überprüfung nach dem Versand geändert wird, bleibt der bestehende Vorgang für Statusabfragen, Abgleich und einen angefragten Bankcode verfügbar.\n\nIhr Konto öffnen\n\n3. Ihren Shop einrichten\n\nWählen Sie einen Shopnamen, den Ihr Kunde wiedererkennen wird.\n\nWählen Sie eine Standard-Mehrwertsteuerregel. Jede neue Rechnung akzeptiert separat Kunden- und MwSt-Anteile von 0 bis 100 %.\n\nWählen Sie die Benachrichtigungen, die Sie in Telegram erhalten möchten.\n\nVerwenden Sie den Rechner, um einen typischen Bestellbetrag zu prüfen.\n\nGebühren und MwSt berechnen\n\n4. Einen Zahlungslink vorbereiten\n\nGeben Sie einen klaren Bestelltitel, einen Betrag und eine Währung ein. Der Kunde erhält eine eigene Seite mit Kaufdetails und dem fälligen Gesamtbetrag. Eine bestehende Rechnung behält ihre ursprünglichen Bedingungen, wenn sich Ihre Shopeinstellungen ändern.\n\nLeitfaden für Zahlungslinks\n\n5. Zahlungsverfügbarkeit prüfen\n\nVerwalten Sie Rechnungen, API-Schlüssel, Widgets und Webhooks von Ihrem Konto aus. Vor der Zahlung prüft Kevmi die Gateway-Konfiguration, die Händlergenehmigung, den Betrag und die Rechnungsbedingungen. Wenn die gewählte Methode nicht verfügbar ist, erklärt der Checkout warum.\n\nNeue Workspace-Rechnungen verwenden einen USD-Basispreis, und Any bietet alle vier Methoden an. SBP rechnet zum eingefrorenen Referenzkurs der Bank von Russland in RUB um; Krypto verwendet die explizite 1:1-USD/USDT-Rechnungsregel. Legacy-native Preise bleiben für alte Rechnungen und API-Anfragen ohne pricingMode=universal verfügbar. Siehe Abschnitt zu mehreren Geschäften und USD-Preisen unten.\n\nFür eine neue Live-Karten- oder Alipay-Zahlung unterstützt das aktuelle Gateway nur feeCustomerPercent=0 und vatCustomerPercent=100: der Händler übernimmt die gesamte Bearbeitungsgebühr und die MwSt wird dem Kunden vollständig hinzugefügt. Andere Anteile können auf einer Rechnung gespeichert und berechnet werden, aber die Ausführung ist mit unsupported_allocation blockiert. Der Server ändert gespeicherte Bedingungen niemals stillschweigend. SBP- und USDT-Kryptozahlungen unterstützen jeden Bearbeitungsgebührenanteil und haben keine MwSt.\n\nDas Erstellen einer Rechnung, eines Schlüssels oder eines Antrags kostet kein Geld. Die Erstellung von Auszahlungen über die API ist nicht verfügbar; die Auszahlungsbedingungen werden in einem separaten Leitfaden behandelt.\n\nGateway-Integrationsanforderungen\n\nMehrere Geschäfte und ein USD-Basispreis\n\nWählen Sie Alle Geschäfte für aggregierte Analysen und Betrieb, oder wählen Sie ein Geschäft für dessen eigene Aufzeichnungen. Jedes Geschäft hat eine separate storeId, einen Namen, einen MwSt-Standardwert, Rechnungen, API-Schlüssel, Webhook-Endpunkte, Ereignisverlauf und Website-Anwendung. Benachrichtigungen und Support-Tickets gehören zum Konto. Ein Konto kann bis zu 100 Geschäfte erstellen. Vorhandene Datensätze verbleiben im ersten Geschäft.\n\nNeue Workspace-Rechnungen verwenden pricingMode=\"universal\" und einen USD-Basispreis. Any umfasst Karte, Alipay, SBP und Krypto; ein Händler kann eine Teilmenge auswählen. Karten und Alipay berechnen USD. SBP berechnet RUB unter Verwendung des USD/RUB-Referenzkurses der Bank von Russland. Krypto berechnet USDT gemäß der expliziten Rechnungsregel 1 USD = 1 USDT. Dies ist eine Rechnungsumrechnungsregel, kein Markt-USDT-Kurs. Das Gateway liefert den Kurs der ausgewählten Münze, den genauen Überweisungsbetrag und Anweisungen vor der Überweisung.\n\nDer Referenzkurs und beide Beträge werden bei der Erstellung eingefroren. Rechnungen mit RUB-Umrechnung verfallen innerhalb von 24 Stunden. Wenn der Referenzkurs nicht abgerufen werden kann, schlägt die Erstellung mit FX_UNAVAILABLE fehl; es wird kein erfundener oder veralteter Ersatzkurs verwendet. Der Basisbetrag Minor und Angebote verwenden die USD-Buchungswährung. quotes[method].settlement enthält das native Belastungsangebot. Der öffentliche Checkout legt die ausgewählte Belastungswährung in currency, den ursprünglichen Preis in baseAmountMinor/baseCurrency und den Referenzkurs in fx offen. Sobald eine Zahlung ausgelöst wurde, kann ihre Methode nicht geändert werden; eine Rechnung hat einen Gateway-Vorgang.\n\nErstellen Sie einen API-Schlüssel im vorgesehenen Geschäft und senden Sie Authorization: Bearer <key> von Ihrem Server. Seine Geschäftsbindung ist unveränderlich; X-Kevmi-Store kann ihm keinen Zugriff auf ein anderes Geschäft gewähren. Browser-Sitzungen wählen X-Kevmi-Store: <storeId>; wenn es weggelassen wird, wird das erste Geschäft ausgewählt. Der Wert all wird nur von GET /api/account/dashboard und GET /api/payment-links akzeptiert. Mutationen erfordern ein ausgewähltes Geschäft, Origin und X-CSRF-Token. Konto-IDs und Geschäfts-IDs sind unterschiedliche Kennungen.\n\nAus Kompatibilitätsgründen behalten API-Anfragen ohne pricingMode=\"universal\" native Preise und die ursprünglichen Währungsbeschränkungen bei. Bestehende Rechnungen werden nie neu berechnet. Bestätigte Zahlungseingänge in Analysen spiegeln verifizierte Zahlungen abzüglich gespeicherter Rechnungsausgaben wider; sie sind kein abhebbarer Saldo. Legacy-Rechnungswährungen bleiben getrennt, und Auszahlungen werden mit dem Support vereinbart. Führen Sie eine Bestellung erst aus, nachdem Sie payment.fulfillmentReady=true und payment.status=\"succeeded\" über die Server-API, den Ereignisverlauf oder einen signierten Webhook geprüft haben.",
      "readMinutes": 3
    },
    {
      "id": "overview",
      "title": "Wie Kevmi funktioniert",
      "summary": "Kevmi bringt individuelle Rechnungen, Zahlungsmethoden und Preisregeln in einen Arbeitsbereich. Jede Bestellung wird separat bezahlt. Es gibt keine Abonnements oder automatischen wiederkehrenden Gebühren.",
      "group": "start",
      "url": "/docs/overview",
      "tags": [
        "überblick",
        "einmalige Zahlungen",
        "arbeitsbereich",
        "keine Abonnements"
      ],
      "sections": [
        {
          "id": "roles",
          "title": "Der Händler und der Kunde",
          "paragraphs": [
            "Der Händler legt einen Bestelltitel, einen Grundpreis, eine Währung und eine Steuerverteilung fest. Der Kunde öffnet eine eigene Checkout-Seite, wählt eine verfügbare Methode und sieht den Gesamtbetrag, bevor er bestätigt.",
            "Der Kunde benötigt keinen Zugriff auf den Händler-Arbeitsbereich. Der Checkout zeigt die Details einer Bestellung, nicht den Shop-Guthaben, die Einstellungen oder andere Kundendatensätze."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "channels",
          "title": "Vier Zahlungskanäle",
          "paragraphs": [],
          "bullets": [],
          "steps": [],
          "table": {
            "headers": [
              "Methode",
              "Zielgruppe",
              "Annahmegebühr"
            ],
            "rows": [
              [
                "Internationale Karten",
                "Internationale Kunden",
                "10 % + 0,50 $; 16 % MwSt"
              ],
              [
                "SBP",
                "Kunden in Russland",
                "8 %; keine MwSt"
              ],
              [
                "Alipay",
                "Kunden in China",
                "10 % + 0,50 $; 16 % MwSt"
              ],
              [
                "Kryptowährung",
                "Kryptozahlungen",
                "4 %; keine MwSt"
              ]
            ]
          },
          "code": null,
          "note": "Visa und Mastercard sind in mehr als 190 Ländern verfügbar, mit Ausnahme der veröffentlichten Einschränkungen. Kryptowährung ist in allen Ländern verfügbar.",
          "links": [
            {
              "label": "Länder und Einschränkungen",
              "href": "/docs/geography"
            }
          ]
        },
        {
          "id": "workspace",
          "title": "Innerhalb Ihres Arbeitsbereichs",
          "paragraphs": [
            "Serverdatensätze gehören zum verifizierten Konto. Die Demo ist separat und kann keine Live-Zahlungen oder ein auszahlbares Guthaben erstellen."
          ],
          "bullets": [
            "Zahlungslinks und Bestellbedingungen: /account#links.",
            "Website-Anwendungen und individuelle Nachverfolgung: /account#applications.",
            "API-Schlüssel, Webhooks, Widget und Ereignisse: /account#keys, #webhooks, #widget, #events.",
            "Preise, Rechner, Länderkarte und vollständige Dokumentation: /account#knowledge.",
            "Store-Einstellungen, Telegram-Benachrichtigungen und Support-Anfragen bleiben im selben Konto."
          ],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "money",
          "title": "Die Beträge verstehen",
          "paragraphs": [
            "Der Basispreis ist der Preis der Ware oder Dienstleistung vor der Kostenverteilung. Die Gebühr und die Mehrwertsteuer verwenden diesen Basispreis unabhängig voneinander. Kundenanteile werden an der Kasse hinzugefügt; Händleranteile werden vom Basispreis abgezogen. Die Mehrwertsteuer für Karten und Alipay beträgt 16 %, wobei Gebühr und Mehrwertsteuer-Zuordnung getrennt gesteuert werden.",
            "Die Plattform-Provision von Kevmi ist bereits in den veröffentlichten Gebühren enthalten. Es gibt keinen zusätzlichen Aufschlag von 5 %. Eine USDT-TRC20-Auszahlung hat eine separate Gebühr, die auf der Geldquelle und einem expliziten Umrechnungsangebot basiert."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": [
            {
              "label": "Alle Gebühren",
              "href": "/pricing"
            }
          ]
        },
        {
          "id": "availability",
          "title": "Zugriff auf Funktionen",
          "paragraphs": [
            "Dokumentation, Rechner und der Dokumentationsassistent sind ohne Anmeldung verfügbar. Store-Einstellungen, Zahlungslinks und private Support-Anfragen erfordern ein Konto. Die finanzielle Verfügbarkeit wird separat geprüft, und ein nicht verfügbarer Zahlungskanal wird vor einer Belastung gemeldet."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        }
      ],
      "body": "Der Händler und der Kunde\n\nDer Händler legt einen Bestelltitel, einen Grundpreis, eine Währung und eine Steuerverteilung fest. Der Kunde öffnet eine eigene Checkout-Seite, wählt eine verfügbare Methode und sieht den Gesamtbetrag, bevor er bestätigt.\n\nDer Kunde benötigt keinen Zugriff auf den Händler-Arbeitsbereich. Der Checkout zeigt die Details einer Bestellung, nicht den Shop-Guthaben, die Einstellungen oder andere Kundendatensätze.\n\nVier Zahlungskanäle\n\nMethode · Zielgruppe · Annahmegebühr\nInternationale Karten · Internationale Kunden · 10 % + 0,50 $; 16 % MwSt\nSBP · Kunden in Russland · 8 %; keine MwSt\nAlipay · Kunden in China · 10 % + 0,50 $; 16 % MwSt\nKryptowährung · Kryptozahlungen · 4 %; keine MwSt\n\nVisa und Mastercard sind in mehr als 190 Ländern verfügbar, mit Ausnahme der veröffentlichten Einschränkungen. Kryptowährung ist in allen Ländern verfügbar.\n\nLänder und Einschränkungen\n\nInnerhalb Ihres Arbeitsbereichs\n\nServerdatensätze gehören zum verifizierten Konto. Die Demo ist separat und kann keine Live-Zahlungen oder ein auszahlbares Guthaben erstellen.\n\nZahlungslinks und Bestellbedingungen: /account#links.\n\nWebsite-Anwendungen und individuelle Nachverfolgung: /account#applications.\n\nAPI-Schlüssel, Webhooks, Widget und Ereignisse: /account#keys, #webhooks, #widget, #events.\n\nPreise, Rechner, Länderkarte und vollständige Dokumentation: /account#knowledge.\n\nStore-Einstellungen, Telegram-Benachrichtigungen und Support-Anfragen bleiben im selben Konto.\n\nDie Beträge verstehen\n\nDer Basispreis ist der Preis der Ware oder Dienstleistung vor der Kostenverteilung. Die Gebühr und die Mehrwertsteuer verwenden diesen Basispreis unabhängig voneinander. Kundenanteile werden an der Kasse hinzugefügt; Händleranteile werden vom Basispreis abgezogen. Die Mehrwertsteuer für Karten und Alipay beträgt 16 %, wobei Gebühr und Mehrwertsteuer-Zuordnung getrennt gesteuert werden.\n\nDie Plattform-Provision von Kevmi ist bereits in den veröffentlichten Gebühren enthalten. Es gibt keinen zusätzlichen Aufschlag von 5 %. Eine USDT-TRC20-Auszahlung hat eine separate Gebühr, die auf der Geldquelle und einem expliziten Umrechnungsangebot basiert.\n\nAlle Gebühren\n\nZugriff auf Funktionen\n\nDokumentation, Rechner und der Dokumentationsassistent sind ohne Anmeldung verfügbar. Store-Einstellungen, Zahlungslinks und private Support-Anfragen erfordern ein Konto. Die finanzielle Verfügbarkeit wird separat geprüft, und ein nicht verfügbarer Zahlungskanal wird vor einer Belastung gemeldet.",
      "readMinutes": 3
    },
    {
      "id": "fees",
      "title": "Zahlungs- und Auszahlungsgebühren",
      "summary": "Die Annahmegebühr hängt von der Zahlungsmethode ab und verwendet den Basispreis der Bestellung. Die Provision von Kevmi ist enthalten. Mehrwertsteuer und Auszahlungsgebühren werden separat angezeigt.",
      "group": "payments",
      "url": "/docs/fees",
      "tags": [
        "Gebühren",
        "Preisgestaltung",
        "Kosten",
        "Auszahlung",
        "Provision"
      ],
      "sections": [
        {
          "id": "incoming",
          "title": "Eine Zahlung annehmen",
          "paragraphs": [
            "Addieren Sie den Prozentsatz und den Festbetrag. Bei einer Kartenbestellung über 5 $ beträgt die Gebühr 0,50 $ + 0,50 $ = 1 $. Die Mehrwertsteuer beträgt 0,80 $ und ist von dieser Gebühr getrennt.",
            "Der Plattformanteil von durchschnittlich etwa 5 % ist bereits in diesen Konditionen enthalten. Fügen Sie keinen zweiten Plattform-Prozentsatz hinzu."
          ],
          "bullets": [],
          "steps": [],
          "table": {
            "headers": [
              "Methode",
              "Prozentsatz",
              "Feste Gebühr",
              "Mehrwertsteuer"
            ],
            "rows": [
              [
                "Internationale Karten",
                "10%",
                "$0,50",
                "16 % des Basispreises"
              ],
              [
                "Alipay",
                "10%",
                "$0,50",
                "16 % des Basispreises"
              ],
              [
                "SBP",
                "8%",
                "Keine",
                "Keine"
              ],
              [
                "Kryptowährung",
                "4%",
                "Keine",
                "Keine"
              ]
            ]
          },
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "payout",
          "title": "Gelder abheben",
          "paragraphs": [
            "Die Geldquelle und das Auszahlungsnetzwerk sind separate Einstellungen. Die Verwendung von TRC20 macht nicht jede Auszahlungsgebühr gleich. Die Auszahlungsgebühr ist von der Annahmegebühr getrennt.",
            "Behalten Sie die feste Gebühr in ihrer angegebenen Währung bei. Ziehen Sie nicht 400 RUB von einem USD-Betrag ab und gehen Sie nicht davon aus, dass 3 $ gleich 3 USDT sind. Die endgültige Auszahlung erfordert ein explizites Umrechnungsangebot."
          ],
          "bullets": [],
          "steps": [],
          "table": {
            "headers": [
              "Geldquelle",
              "Auszahlungsgebühr",
              "Ziel"
            ],
            "rows": [
              [
                "Karten",
                "4%",
                "USDT TRC20"
              ],
              [
                "Alipay",
                "4%",
                "USDT TRC20"
              ],
              [
                "SBP",
                "5 % + 400 RUB",
                "USDT TRC20"
              ],
              [
                "Kryptowährung",
                "0% + $3",
                "USDT TRC20"
              ]
            ]
          },
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "rounding",
          "title": "Berechnungsgenauigkeit",
          "paragraphs": [
            "Der Rechnungsbetrag ist eine ganze Zahl: 500 bedeutet 5,00 USD, RUB oder USDT in der explizit angegebenen Währung. Dies sind Rechnungsberechnungseinheiten; USD und USDT werden nicht automatisch umgerechnet. Gebühren und Mehrwertsteuer verwenden getrennte Rundungen auf halbem Weg nach oben.",
            "Bei einer Krypto-Überweisung verwenden Sie den genauen Dezimal-Münzbetrag und das Netzwerk, die vom erstellten Vorgang zurückgegeben werden. Leiten Sie den Überweisungsbetrag nicht vom gerundeten Rechnungspreis ab. Eine Berechnung kann keine negativen Händlererlöse erzeugen."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": {
            "language": "Formula",
            "code": "feeMinor = roundHalfUp(baseMinor × rate / 100) + fixedMinor\nvatMinor = roundHalfUp(baseMinor × 16 / 100)\n// For SBP and cryptocurrency, vatMinor = 0"
          },
          "note": "",
          "links": []
        },
        {
          "id": "before-pay",
          "title": "Vor der Zahlung prüfen",
          "paragraphs": [],
          "bullets": [
            "Der ursprüngliche Bestellbetrag und die Währung.",
            "Die Zahlungsmethode, die die Gebühr bestimmt und ob Mehrwertsteuer anfällt.",
            "Der mit der Rechnung gespeicherte Mehrwertsteuerzahler.",
            "Die Kundensumme und die erwartete Händlergutschrift."
          ],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": [
            {
              "label": "Ihren Betrag berechnen",
              "href": "/pricing"
            },
            {
              "label": "Mehrwertsteuer verstehen",
              "href": "/docs/vat"
            }
          ]
        }
      ],
      "body": "Eine Zahlung annehmen\n\nAddieren Sie den Prozentsatz und den Festbetrag. Bei einer Kartenbestellung über 5 $ beträgt die Gebühr 0,50 $ + 0,50 $ = 1 $. Die Mehrwertsteuer beträgt 0,80 $ und ist von dieser Gebühr getrennt.\n\nDer Plattformanteil von durchschnittlich etwa 5 % ist bereits in diesen Konditionen enthalten. Fügen Sie keinen zweiten Plattform-Prozentsatz hinzu.\n\nMethode · Prozentsatz · Feste Gebühr · Mehrwertsteuer\nInternationale Karten · 10% · $0,50 · 16 % des Basispreises\nAlipay · 10% · $0,50 · 16 % des Basispreises\nSBP · 8% · Keine · Keine\nKryptowährung · 4% · Keine · Keine\n\nGelder abheben\n\nDie Geldquelle und das Auszahlungsnetzwerk sind separate Einstellungen. Die Verwendung von TRC20 macht nicht jede Auszahlungsgebühr gleich. Die Auszahlungsgebühr ist von der Annahmegebühr getrennt.\n\nBehalten Sie die feste Gebühr in ihrer angegebenen Währung bei. Ziehen Sie nicht 400 RUB von einem USD-Betrag ab und gehen Sie nicht davon aus, dass 3 $ gleich 3 USDT sind. Die endgültige Auszahlung erfordert ein explizites Umrechnungsangebot.\n\nGeldquelle · Auszahlungsgebühr · Ziel\nKarten · 4% · USDT TRC20\nAlipay · 4% · USDT TRC20\nSBP · 5 % + 400 RUB · USDT TRC20\nKryptowährung · 0% + $3 · USDT TRC20\n\nBerechnungsgenauigkeit\n\nDer Rechnungsbetrag ist eine ganze Zahl: 500 bedeutet 5,00 USD, RUB oder USDT in der explizit angegebenen Währung. Dies sind Rechnungsberechnungseinheiten; USD und USDT werden nicht automatisch umgerechnet. Gebühren und Mehrwertsteuer verwenden getrennte Rundungen auf halbem Weg nach oben.\n\nBei einer Krypto-Überweisung verwenden Sie den genauen Dezimal-Münzbetrag und das Netzwerk, die vom erstellten Vorgang zurückgegeben werden. Leiten Sie den Überweisungsbetrag nicht vom gerundeten Rechnungspreis ab. Eine Berechnung kann keine negativen Händlererlöse erzeugen.\n\nfeeMinor = roundHalfUp(baseMinor × rate / 100) + fixedMinor\nvatMinor = roundHalfUp(baseMinor × 16 / 100)\n// For SBP and cryptocurrency, vatMinor = 0\n\nVor der Zahlung prüfen\n\nDer ursprüngliche Bestellbetrag und die Währung.\n\nDie Zahlungsmethode, die die Gebühr bestimmt und ob Mehrwertsteuer anfällt.\n\nDer mit der Rechnung gespeicherte Mehrwertsteuerzahler.\n\nDie Kundensumme und die erwartete Händlergutschrift.\n\nIhren Betrag berechnen\n\nMehrwertsteuer verstehen",
      "readMinutes": 3
    },
    {
      "id": "vat",
      "title": "Mehrwertsteuer und Kostenverteilung",
      "summary": "Die Mehrwertsteuer beträgt 16 % des Basisbestellpreises für internationale Karten und Alipay. Der Händler legt einen Kundenanteil von 0 bis 100 % fest und deckt den Rest aus dem Umsatz. SBP und Kryptowährungen haben unter diesen veröffentlichten Konditionen keine Mehrwertsteuer.",
      "group": "payments",
      "url": "/docs/vat",
      "tags": [
        "Mehrwertsteuer",
        "Steuer",
        "Kunde",
        "Händler",
        "fünf Dollar"
      ],
      "sections": [
        {
          "id": "base",
          "title": "Eine Basis für Gebühren und Steuern",
          "paragraphs": [
            "Der Basispreis ist der vom Store eingegebene Bestellbetrag. Die Gebühr von 10 % + 0,50 $ und die Mehrwertsteuer von 16 % werden unabhängig von diesem Preis berechnet. Die Gebühr gilt nicht für die oben hinzugefügte Mehrwertsteuer.",
            "Bei einem Basispreis von 5 $ beträgt die Gebühr 1 $ und die Mehrwertsteuer 0,80 $. Eine Änderung des Zahlers ändert die Zuordnung, nicht den Steuersatz oder seine Berechnungsbasis."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "customer",
          "title": "Der Kunde zahlt die Mehrwertsteuer",
          "paragraphs": [
            "Dies ist die Standard-Mehrwertsteuerregel: ein Kundenanteil von 100 %, entsprechend dem bisherigen Kundenwert. Der Händler trägt in diesem Beispiel die gesamte Gebühr. Die Mehrwertsteuer wird zum Basispreis hinzugefügt. An der Kasse werden Bestellpreis, Mehrwertsteuer und Gesamtbetrag angezeigt.",
            "Nur die Annahmegebühr wird vom Basispreis abgezogen. Bei einer Bestellung über 5 $ zahlt der Kunde 5,80 $ und der Händler erhält 4 $."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": {
            "language": "Formula",
            "code": "customerTotalMinor = baseMinor + vatMinor\nmerchantNetMinor = baseMinor - feeMinor"
          },
          "note": "",
          "links": []
        },
        {
          "id": "merchant",
          "title": "Der Händler zahlt die Mehrwertsteuer",
          "paragraphs": [
            "In diesem Beispiel betragen die Kundenanteile 0 % sowohl für die Mehrwertsteuer als auch für die Gebühr. Der bisherige Händler-Mehrwertsteuerwert entspricht einem Kunden-Mehrwertsteueranteil von null; der Händler trägt beide Kosten aus dem Basispreis.",
            "Bei einer Bestellung über 5 $ zahlt der Kunde 5 $, die Gebühr beträgt 1 $, die Mehrwertsteuer 0,80 $ und der Händler erhält 3,20 $. Die Mehrwertsteuer bleibt 16 % des Basispreises; ersetzen Sie diese Regel nicht durch eine Formel von 16/116."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": {
            "language": "Formula",
            "code": "customerTotalMinor = baseMinor\nmerchantNetMinor = baseMinor - feeMinor - vatMinor"
          },
          "note": "",
          "links": []
        },
        {
          "id": "comparison",
          "title": "Ein Beispiel nebeneinander",
          "paragraphs": [],
          "bullets": [],
          "steps": [],
          "table": {
            "headers": [
              "Betrag",
              "Kunde zahlt Mehrwertsteuer",
              "Händler zahlt Mehrwertsteuer"
            ],
            "rows": [
              [
                "Basisbestellpreis",
                "$5,00",
                "$5,00"
              ],
              [
                "Annahmegebühr",
                "$1,00",
                "$1,00"
              ],
              [
                "Mehrwertsteuer",
                "$0,80",
                "$0,80"
              ],
              [
                "Kunde zahlt",
                "$5,80",
                "$5,00"
              ],
              [
                "Händler erhält",
                "$4,00",
                "$3,20"
              ]
            ]
          },
          "code": null,
          "note": "Beide Spalten gehen von einem Kundenanteil von 0 % an Bearbeitungsgebühren aus. Zwischenwerte der Mehrwertsteuer und getrennte Gebührenverteilungen sind im Rechner verfügbar.",
          "links": []
        },
        {
          "id": "snapshot",
          "title": "Wenn die Einstellung gilt",
          "paragraphs": [
            "Die Shop-Einstellung liefert die anfängliche Verteilung. Die Benutzeroberfläche und die API speichern unabhängige ganzzahlige Kundenanteile für Mehrwertsteuer und Bearbeitungsgebühren von 0 bis 100 für jede Rechnung. Änderungen an den Shop-Einstellungen berechnen ausgestellte Rechnungen nicht neu.",
            "Für eine neue Live-Karten- oder Alipay-Zahlung unterstützt das aktuelle Gateway nur feeCustomerPercent=0 und vatCustomerPercent=100: der Händler übernimmt die gesamte Bearbeitungsgebühr und die MwSt wird dem Kunden vollständig hinzugefügt. Andere Anteile können auf einer Rechnung gespeichert und berechnet werden, aber die Ausführung ist mit unsupported_allocation blockiert. Der Server ändert gespeicherte Bedingungen niemals stillschweigend. SBP- und USDT-Kryptozahlungen unterstützen jeden Bearbeitungsgebührenanteil und haben keine MwSt.",
            "Erstellen Sie einen neuen Link für andere Konditionen. Die Mehrwertsteuer ist für SBP und Kryptowährung null."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": [
            {
              "label": "Shop-Einstellungen",
              "href": "/docs/settings"
            },
            {
              "label": "Berechnung prüfen",
              "href": "/pricing"
            },
            {
              "label": "Bearbeitungsgebühren und Mehrwertsteuer aufteilen",
              "href": "/docs/cost-sharing"
            }
          ]
        }
      ],
      "body": "Eine Basis für Gebühren und Steuern\n\nDer Basispreis ist der vom Store eingegebene Bestellbetrag. Die Gebühr von 10 % + 0,50 $ und die Mehrwertsteuer von 16 % werden unabhängig von diesem Preis berechnet. Die Gebühr gilt nicht für die oben hinzugefügte Mehrwertsteuer.\n\nBei einem Basispreis von 5 $ beträgt die Gebühr 1 $ und die Mehrwertsteuer 0,80 $. Eine Änderung des Zahlers ändert die Zuordnung, nicht den Steuersatz oder seine Berechnungsbasis.\n\nDer Kunde zahlt die Mehrwertsteuer\n\nDies ist die Standard-Mehrwertsteuerregel: ein Kundenanteil von 100 %, entsprechend dem bisherigen Kundenwert. Der Händler trägt in diesem Beispiel die gesamte Gebühr. Die Mehrwertsteuer wird zum Basispreis hinzugefügt. An der Kasse werden Bestellpreis, Mehrwertsteuer und Gesamtbetrag angezeigt.\n\nNur die Annahmegebühr wird vom Basispreis abgezogen. Bei einer Bestellung über 5 $ zahlt der Kunde 5,80 $ und der Händler erhält 4 $.\n\ncustomerTotalMinor = baseMinor + vatMinor\nmerchantNetMinor = baseMinor - feeMinor\n\nDer Händler zahlt die Mehrwertsteuer\n\nIn diesem Beispiel betragen die Kundenanteile 0 % sowohl für die Mehrwertsteuer als auch für die Gebühr. Der bisherige Händler-Mehrwertsteuerwert entspricht einem Kunden-Mehrwertsteueranteil von null; der Händler trägt beide Kosten aus dem Basispreis.\n\nBei einer Bestellung über 5 $ zahlt der Kunde 5 $, die Gebühr beträgt 1 $, die Mehrwertsteuer 0,80 $ und der Händler erhält 3,20 $. Die Mehrwertsteuer bleibt 16 % des Basispreises; ersetzen Sie diese Regel nicht durch eine Formel von 16/116.\n\ncustomerTotalMinor = baseMinor\nmerchantNetMinor = baseMinor - feeMinor - vatMinor\n\nEin Beispiel nebeneinander\n\nBetrag · Kunde zahlt Mehrwertsteuer · Händler zahlt Mehrwertsteuer\nBasisbestellpreis · $5,00 · $5,00\nAnnahmegebühr · $1,00 · $1,00\nMehrwertsteuer · $0,80 · $0,80\nKunde zahlt · $5,80 · $5,00\nHändler erhält · $4,00 · $3,20\n\nBeide Spalten gehen von einem Kundenanteil von 0 % an Bearbeitungsgebühren aus. Zwischenwerte der Mehrwertsteuer und getrennte Gebührenverteilungen sind im Rechner verfügbar.\n\nWenn die Einstellung gilt\n\nDie Shop-Einstellung liefert die anfängliche Verteilung. Die Benutzeroberfläche und die API speichern unabhängige ganzzahlige Kundenanteile für Mehrwertsteuer und Bearbeitungsgebühren von 0 bis 100 für jede Rechnung. Änderungen an den Shop-Einstellungen berechnen ausgestellte Rechnungen nicht neu.\n\nFür eine neue Live-Karten- oder Alipay-Zahlung unterstützt das aktuelle Gateway nur feeCustomerPercent=0 und vatCustomerPercent=100: der Händler übernimmt die gesamte Bearbeitungsgebühr und die MwSt wird dem Kunden vollständig hinzugefügt. Andere Anteile können auf einer Rechnung gespeichert und berechnet werden, aber die Ausführung ist mit unsupported_allocation blockiert. Der Server ändert gespeicherte Bedingungen niemals stillschweigend. SBP- und USDT-Kryptozahlungen unterstützen jeden Bearbeitungsgebührenanteil und haben keine MwSt.\n\nErstellen Sie einen neuen Link für andere Konditionen. Die Mehrwertsteuer ist für SBP und Kryptowährung null.\n\nShop-Einstellungen\n\nBerechnung prüfen\n\nBearbeitungsgebühren und Mehrwertsteuer aufteilen",
      "readMinutes": 4
    },
    {
      "id": "geography",
      "title": "Länder und Zahlungsmethoden",
      "summary": "Visa und Mastercard decken mehr als 190 Länder ab, mit Ausnahme der veröffentlichten Einschränkungen. SBP bedient Russland, Alipay bedient China, und Kryptowährung ist weltweit verfügbar.",
      "group": "payments",
      "url": "/docs/geography",
      "tags": [
        "Länder",
        "Abdeckung",
        "190+",
        "Russland",
        "China",
        "Åland-Inseln",
        "Albanien",
        "Algerien",
        "Amerikanisch-Samoa",
        "Andorra",
        "Angola",
        "Anguilla",
        "Antigua und Barbuda",
        "Argentinien",
        "Armenien",
        "Aruba",
        "Australien",
        "Österreich",
        "Aserbaidschan",
        "Bahamas",
        "Bahrain",
        "Bangladesch",
        "Barbados",
        "Belgien",
        "Belize",
        "Benin",
        "Bermuda",
        "Bhutan",
        "Bolivien",
        "Karibische Niederlande",
        "Bosnien und Herzegowina",
        "Botswana",
        "Bouvetinsel",
        "Brasilien",
        "Britisches Territorium im Indischen Ozean",
        "Brunei",
        "Bulgarien",
        "Burkina Faso",
        "Kap Verde",
        "Kambodscha",
        "Kamerun",
        "Kanada",
        "Kaimaninseln",
        "Chile",
        "China",
        "Weihnachtsinsel",
        "Kokosinseln (Keeling)",
        "Kolumbien",
        "Komoren",
        "Cookinseln",
        "Costa Rica",
        "Kroatien",
        "Curaçao",
        "Zypern",
        "Tschechien",
        "Côte d’Ivoire",
        "Dänemark",
        "Dschibuti",
        "Dominica",
        "Dominikanische Republik",
        "Ecuador",
        "Ägypten",
        "El Salvador",
        "Äquatorialguinea",
        "Estland",
        "Eswatini",
        "Äthiopien",
        "Falklandinseln",
        "Färöer-Inseln",
        "Mikronesien",
        "Fidschi",
        "Finnland",
        "Frankreich",
        "Französisch-Guayana",
        "Französisch-Polynesien",
        "Französische Süd- und Antarktisgebiete",
        "Gabun",
        "Gambia",
        "Georgien",
        "Deutschland",
        "Ghana",
        "Gibraltar",
        "Griechenland",
        "Grönland",
        "Grenada",
        "Guadeloupe",
        "Guam",
        "Guatemala",
        "Guernsey",
        "Guinea",
        "Guinea-Bissau",
        "Guyana",
        "Heard- und McDonaldinseln",
        "Vatikanstadt",
        "Honduras",
        "Hongkong (SAR China)",
        "Ungarn",
        "Island",
        "Indien",
        "Indonesien",
        "Irland",
        "Insel Man",
        "Israel",
        "Italien",
        "Jamaika",
        "Japan",
        "Jersey",
        "Jordanien",
        "Kasachstan",
        "Kenia",
        "Kiribati",
        "Kuwait",
        "Kirgisistan",
        "Laos",
        "Lettland",
        "Libanon",
        "Lesotho",
        "Liberia",
        "Liechtenstein",
        "Litauen",
        "Luxemburg",
        "Sonderverwaltungsregion Macau, China",
        "Madagaskar",
        "Malawi",
        "Malaysia",
        "Malediven",
        "Malta",
        "Marshallinseln",
        "Martinique",
        "Mauretanien",
        "Mauritius",
        "Mayotte",
        "Mexiko",
        "Moldau",
        "Monaco",
        "Mongolei",
        "Montenegro",
        "Montserrat",
        "Marokko",
        "Mosambik",
        "Namibia",
        "Nauru",
        "Nepal",
        "Niederlande",
        "Neukaledonien",
        "Neuseeland",
        "Niger",
        "Nigeria",
        "Niue",
        "Norfolkinsel",
        "Nordmazedonien",
        "Nördliche Marianen",
        "Norwegen",
        "Oman",
        "Pakistan",
        "Palau",
        "Panama",
        "Papua-Neuguinea",
        "Paraguay",
        "Peru",
        "Philippinen",
        "Pitcairninseln",
        "Polen",
        "Portugal",
        "Puerto Rico",
        "Katar",
        "Rumänien",
        "Ruanda",
        "Réunion",
        "St. Barthélemy",
        "St. Helena",
        "St. Kitts & Nevis",
        "St. Lucia",
        "St. Martin",
        "St. Pierre & Miquelon",
        "St. Vincent & die Grenadinen",
        "Samoa",
        "San Marino",
        "São Tomé & Príncipe",
        "Saudi-Arabien",
        "Senegal",
        "Serbien",
        "Seychellen",
        "Sierra Leone",
        "Singapur",
        "Sint Maarten",
        "Slowakei",
        "Slowenien",
        "Salomonen",
        "Südafrika",
        "Südgeorgien und die Südlichen Sandwichinseln",
        "Südkorea",
        "Spanien",
        "Sri Lanka",
        "Palästinensische Gebiete",
        "Suriname",
        "Spitzbergen und Jan Mayen",
        "Schweden",
        "Schweiz",
        "Taiwan",
        "Tadschikistan",
        "Tansania",
        "Thailand",
        "Osttimor",
        "Togo",
        "Tokelau",
        "Tonga",
        "Trinidad und Tobago",
        "Tunesien",
        "Turkmenistan",
        "Turks- und Caicosinseln",
        "Tuvalu",
        "Türkei",
        "Uganda",
        "Ukraine",
        "Vereinigte Arabische Emirate",
        "Vereinigtes Königreich",
        "U.S. Außengebiete",
        "Vereinigte Staaten",
        "Uruguay",
        "Usbekistan",
        "Vanuatu",
        "Vietnam",
        "Britische Jungferninseln",
        "Amerikanische Jungferninseln",
        "Wallis und Futuna",
        "Westsahara",
        "Sambia"
      ],
      "sections": [
        {
          "id": "coverage",
          "title": "Abdeckung nach Kanal",
          "paragraphs": [],
          "bullets": [],
          "steps": [],
          "table": {
            "headers": [
              "Kanal",
              "Abdeckung",
              "Bedingungen"
            ],
            "rows": [
              [
                "Internationale Karten",
                "Mehr als 190 Länder",
                "Außer der Sperrliste und fünf Regionen der Ukraine"
              ],
              [
                "SBP",
                "Russland",
                "Die Verfügbarkeit hängt von der Bank und der Transaktion ab"
              ],
              [
                "Alipay",
                "China",
                "Die Verfügbarkeit hängt vom Konto und der Transaktion ab"
              ],
              [
                "Kryptowährung",
                "Alle Länder",
                "Wählen Sie eine unterstützte Münze und ein Netzwerk"
              ]
            ]
          },
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "map",
          "title": "Die interaktive Karte",
          "paragraphs": [
            "Die Seite „Geografie“ enthält eine zweidimensionale Weltkarte. Filter heben die veröffentlichten internationalen Kartenländer, Russland für SBP und China für Alipay hervor. Suchen Sie nach Ländernamen oder ISO-Code, um Methoden und Hinweise zu sehen.",
            "Schraffur kennzeichnet die Ukraine, da fünf Regionen von den Karten ausgenommen sind. Der Rest der Ukraine ist verfügbar. Karteneinschränkungen gelten nicht für Kryptowährungen, die in allen Ländern verfügbar sind."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": [
            {
              "label": "Karte öffnen",
              "href": "/countries"
            }
          ]
        },
        {
          "id": "cards",
          "title": "Was die Liste abdeckt",
          "paragraphs": [
            "Die vollständige Liste unten beschreibt die Abdeckung internationaler Karten. Händlerregistrierungsländer und Auszahlungsziele unterliegen separaten Bedingungen.",
            "Die Genehmigung hängt vom Ausgabeland, der Bank, dem Kartentyp und den Prüfungen des Zahlungskanals ab. Die Auflistung eines Landes garantiert keine Genehmigung für jede Karte oder jede Transaktion."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "restrictions",
          "title": "Visa- und Mastercard-Einschränkungen",
          "paragraphs": [
            "Karten sind auf der Krim, in Donezk, Luhansk, Cherson und Saporischschja nicht verfügbar. Der Rest der Ukraine ist verfügbar.",
            "Alle anderen Länder sind verfügbar. Niederländische Antillen bleiben als historischer Eintrag aus der Anbieterliste erhalten; sie blockieren nicht jedes moderne karibische Territorium."
          ],
          "bullets": [],
          "steps": [],
          "table": {
            "headers": [
              "Code",
              "Land oder Territorium"
            ],
            "rows": [
              [
                "AF",
                "Afghanistan"
              ],
              [
                "AQ",
                "Antarktis"
              ],
              [
                "BY",
                "Belarus"
              ],
              [
                "MM",
                "Burma (Myanmar)"
              ],
              [
                "BI",
                "Burundi"
              ],
              [
                "CF",
                "Zentralafrikanische Republik"
              ],
              [
                "TD",
                "Tschad"
              ],
              [
                "CU",
                "Kuba"
              ],
              [
                "CD",
                "Demokratische Republik Kongo"
              ],
              [
                "CG",
                "Republik Kongo"
              ],
              [
                "ER",
                "Eritrea"
              ],
              [
                "HT",
                "Haiti"
              ],
              [
                "IR",
                "Iran"
              ],
              [
                "IQ",
                "Irak"
              ],
              [
                "LY",
                "Libyen"
              ],
              [
                "ML",
                "Mali"
              ],
              [
                "NI",
                "Nicaragua"
              ],
              [
                "KP",
                "Nordkorea"
              ],
              [
                "RU",
                "Russland"
              ],
              [
                "SO",
                "Somalia"
              ],
              [
                "SS",
                "Südsudan"
              ],
              [
                "SD",
                "Sudan"
              ],
              [
                "SY",
                "Syrien"
              ],
              [
                "VE",
                "Venezuela"
              ],
              [
                "YE",
                "Jemen"
              ],
              [
                "ZW",
                "Simbabwe"
              ],
              [
                "UA-43",
                "Krim (Region der Ukraine)"
              ],
              [
                "UA-14",
                "Donezk (Region der Ukraine)"
              ],
              [
                "UA-65",
                "Cherson (Region der Ukraine)"
              ],
              [
                "UA-09",
                "Luhansk (Region der Ukraine)"
              ],
              [
                "UA-23",
                "Saporischschja (Region der Ukraine)"
              ],
              [
                "AN",
                "Niederländische Antillen"
              ]
            ]
          },
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "card-list",
          "title": "Verzeichnis der Länder und Territorien",
          "paragraphs": [
            "Namen, ISO-Codes und Marker stammen aus dem gemeinsamen Länderregister. Diese Hinweise gelten für internationale Karten."
          ],
          "bullets": [],
          "steps": [],
          "table": {
            "headers": [
              "ISO",
              "Land oder Territorium",
              "Hinweis"
            ],
            "rows": [
              [
                "AX",
                "Åland-Inseln",
                "—"
              ],
              [
                "AL",
                "Albanien",
                "—"
              ],
              [
                "DZ",
                "Algerien",
                "—"
              ],
              [
                "AS",
                "Amerikanisch-Samoa",
                "—"
              ],
              [
                "AD",
                "Andorra",
                "—"
              ],
              [
                "AO",
                "Angola",
                "—"
              ],
              [
                "AI",
                "Anguilla",
                "—"
              ],
              [
                "AG",
                "Antigua und Barbuda",
                "—"
              ],
              [
                "AR",
                "Argentinien",
                "—"
              ],
              [
                "AM",
                "Armenien",
                "—"
              ],
              [
                "AW",
                "Aruba",
                "—"
              ],
              [
                "AU",
                "Australien",
                "—"
              ],
              [
                "AT",
                "Österreich",
                "—"
              ],
              [
                "AZ",
                "Aserbaidschan",
                "—"
              ],
              [
                "BS",
                "Bahamas",
                "—"
              ],
              [
                "BH",
                "Bahrain",
                "—"
              ],
              [
                "BD",
                "Bangladesch",
                "—"
              ],
              [
                "BB",
                "Barbados",
                "—"
              ],
              [
                "BE",
                "Belgien",
                "—"
              ],
              [
                "BZ",
                "Belize",
                "—"
              ],
              [
                "BJ",
                "Benin",
                "—"
              ],
              [
                "BM",
                "Bermuda",
                "—"
              ],
              [
                "BT",
                "Bhutan",
                "—"
              ],
              [
                "BO",
                "Bolivien",
                "—"
              ],
              [
                "BQ",
                "Karibische Niederlande",
                "—"
              ],
              [
                "BA",
                "Bosnien und Herzegowina",
                "—"
              ],
              [
                "BW",
                "Botswana",
                "—"
              ],
              [
                "BV",
                "Bouvetinsel",
                "—"
              ],
              [
                "BR",
                "Brasilien",
                "—"
              ],
              [
                "IO",
                "Britisches Territorium im Indischen Ozean",
                "—"
              ],
              [
                "BN",
                "Brunei",
                "—"
              ],
              [
                "BG",
                "Bulgarien",
                "—"
              ],
              [
                "BF",
                "Burkina Faso",
                "—"
              ],
              [
                "CV",
                "Kap Verde",
                "—"
              ],
              [
                "KH",
                "Kambodscha",
                "—"
              ],
              [
                "CM",
                "Kamerun",
                "—"
              ],
              [
                "CA",
                "Kanada",
                "—"
              ],
              [
                "KY",
                "Kaimaninseln",
                "—"
              ],
              [
                "CL",
                "Chile",
                "—"
              ],
              [
                "CN",
                "China",
                "—"
              ],
              [
                "CX",
                "Weihnachtsinsel",
                "—"
              ],
              [
                "CC",
                "Kokosinseln (Keeling)",
                "—"
              ],
              [
                "CO",
                "Kolumbien",
                "—"
              ],
              [
                "KM",
                "Komoren",
                "—"
              ],
              [
                "CK",
                "Cookinseln",
                "—"
              ],
              [
                "CR",
                "Costa Rica",
                "—"
              ],
              [
                "HR",
                "Kroatien",
                "—"
              ],
              [
                "CW",
                "Curaçao",
                "—"
              ],
              [
                "CY",
                "Zypern",
                "—"
              ],
              [
                "CZ",
                "Tschechien",
                "—"
              ],
              [
                "CI",
                "Côte d’Ivoire",
                "—"
              ],
              [
                "DK",
                "Dänemark",
                "—"
              ],
              [
                "DJ",
                "Dschibuti",
                "—"
              ],
              [
                "DM",
                "Dominica",
                "—"
              ],
              [
                "DO",
                "Dominikanische Republik",
                "—"
              ],
              [
                "EC",
                "Ecuador",
                "—"
              ],
              [
                "EG",
                "Ägypten",
                "—"
              ],
              [
                "SV",
                "El Salvador",
                "—"
              ],
              [
                "GQ",
                "Äquatorialguinea",
                "—"
              ],
              [
                "EE",
                "Estland",
                "—"
              ],
              [
                "SZ",
                "Eswatini",
                "—"
              ],
              [
                "ET",
                "Äthiopien",
                "—"
              ],
              [
                "FK",
                "Falklandinseln",
                "—"
              ],
              [
                "FO",
                "Färöer-Inseln",
                "—"
              ],
              [
                "FM",
                "Mikronesien",
                "—"
              ],
              [
                "FJ",
                "Fidschi",
                "—"
              ],
              [
                "FI",
                "Finnland",
                "—"
              ],
              [
                "FR",
                "Frankreich",
                "—"
              ],
              [
                "GF",
                "Französisch-Guayana",
                "—"
              ],
              [
                "PF",
                "Französisch-Polynesien",
                "—"
              ],
              [
                "TF",
                "Französische Süd- und Antarktisgebiete",
                "—"
              ],
              [
                "GA",
                "Gabun",
                "—"
              ],
              [
                "GM",
                "Gambia",
                "—"
              ],
              [
                "GE",
                "Georgien",
                "—"
              ],
              [
                "DE",
                "Deutschland",
                "—"
              ],
              [
                "GH",
                "Ghana",
                "—"
              ],
              [
                "GI",
                "Gibraltar",
                "—"
              ],
              [
                "GR",
                "Griechenland",
                "—"
              ],
              [
                "GL",
                "Grönland",
                "—"
              ],
              [
                "GD",
                "Grenada",
                "—"
              ],
              [
                "GP",
                "Guadeloupe",
                "—"
              ],
              [
                "GU",
                "Guam",
                "—"
              ],
              [
                "GT",
                "Guatemala",
                "—"
              ],
              [
                "GG",
                "Guernsey",
                "—"
              ],
              [
                "GN",
                "Guinea",
                "—"
              ],
              [
                "GW",
                "Guinea-Bissau",
                "—"
              ],
              [
                "GY",
                "Guyana",
                "—"
              ],
              [
                "HM",
                "Heard- und McDonaldinseln",
                "—"
              ],
              [
                "VA",
                "Vatikanstadt",
                "—"
              ],
              [
                "HN",
                "Honduras",
                "—"
              ],
              [
                "HK",
                "Hongkong (SAR China)",
                "—"
              ],
              [
                "HU",
                "Ungarn",
                "—"
              ],
              [
                "IS",
                "Island",
                "—"
              ],
              [
                "IN",
                "Indien",
                "—"
              ],
              [
                "ID",
                "Indonesien",
                "—"
              ],
              [
                "IE",
                "Irland",
                "—"
              ],
              [
                "IM",
                "Insel Man",
                "—"
              ],
              [
                "IL",
                "Israel",
                "—"
              ],
              [
                "IT",
                "Italien",
                "—"
              ],
              [
                "JM",
                "Jamaika",
                "—"
              ],
              [
                "JP",
                "Japan",
                "—"
              ],
              [
                "JE",
                "Jersey",
                "—"
              ],
              [
                "JO",
                "Jordanien",
                "—"
              ],
              [
                "KZ",
                "Kasachstan",
                "—"
              ],
              [
                "KE",
                "Kenia",
                "—"
              ],
              [
                "KI",
                "Kiribati",
                "—"
              ],
              [
                "KW",
                "Kuwait",
                "—"
              ],
              [
                "KG",
                "Kirgisistan",
                "—"
              ],
              [
                "LA",
                "Laos",
                "—"
              ],
              [
                "LV",
                "Lettland",
                "—"
              ],
              [
                "LB",
                "Libanon",
                "—"
              ],
              [
                "LS",
                "Lesotho",
                "—"
              ],
              [
                "LR",
                "Liberia",
                "—"
              ],
              [
                "LI",
                "Liechtenstein",
                "—"
              ],
              [
                "LT",
                "Litauen",
                "—"
              ],
              [
                "LU",
                "Luxemburg",
                "—"
              ],
              [
                "MO",
                "Sonderverwaltungsregion Macau, China",
                "—"
              ],
              [
                "MG",
                "Madagaskar",
                "—"
              ],
              [
                "MW",
                "Malawi",
                "—"
              ],
              [
                "MY",
                "Malaysia",
                "—"
              ],
              [
                "MV",
                "Malediven",
                "—"
              ],
              [
                "MT",
                "Malta",
                "—"
              ],
              [
                "MH",
                "Marshallinseln",
                "—"
              ],
              [
                "MQ",
                "Martinique",
                "—"
              ],
              [
                "MR",
                "Mauretanien",
                "—"
              ],
              [
                "MU",
                "Mauritius",
                "—"
              ],
              [
                "YT",
                "Mayotte",
                "—"
              ],
              [
                "MX",
                "Mexiko",
                "—"
              ],
              [
                "MD",
                "Moldau",
                "—"
              ],
              [
                "MC",
                "Monaco",
                "—"
              ],
              [
                "MN",
                "Mongolei",
                "—"
              ],
              [
                "ME",
                "Montenegro",
                "—"
              ],
              [
                "MS",
                "Montserrat",
                "—"
              ],
              [
                "MA",
                "Marokko",
                "—"
              ],
              [
                "MZ",
                "Mosambik",
                "—"
              ],
              [
                "NA",
                "Namibia",
                "—"
              ],
              [
                "NR",
                "Nauru",
                "—"
              ],
              [
                "NP",
                "Nepal",
                "—"
              ],
              [
                "NL",
                "Niederlande",
                "—"
              ],
              [
                "NC",
                "Neukaledonien",
                "—"
              ],
              [
                "NZ",
                "Neuseeland",
                "—"
              ],
              [
                "NE",
                "Niger",
                "—"
              ],
              [
                "NG",
                "Nigeria",
                "—"
              ],
              [
                "NU",
                "Niue",
                "—"
              ],
              [
                "NF",
                "Norfolkinsel",
                "—"
              ],
              [
                "MK",
                "Nordmazedonien",
                "—"
              ],
              [
                "MP",
                "Nördliche Marianen",
                "—"
              ],
              [
                "NO",
                "Norwegen",
                "—"
              ],
              [
                "OM",
                "Oman",
                "—"
              ],
              [
                "PK",
                "Pakistan",
                "—"
              ],
              [
                "PW",
                "Palau",
                "—"
              ],
              [
                "PA",
                "Panama",
                "—"
              ],
              [
                "PG",
                "Papua-Neuguinea",
                "—"
              ],
              [
                "PY",
                "Paraguay",
                "—"
              ],
              [
                "PE",
                "Peru",
                "—"
              ],
              [
                "PH",
                "Philippinen",
                "—"
              ],
              [
                "PN",
                "Pitcairninseln",
                "—"
              ],
              [
                "PL",
                "Polen",
                "—"
              ],
              [
                "PT",
                "Portugal",
                "—"
              ],
              [
                "PR",
                "Puerto Rico",
                "—"
              ],
              [
                "QA",
                "Katar",
                "—"
              ],
              [
                "RO",
                "Rumänien",
                "—"
              ],
              [
                "RW",
                "Ruanda",
                "—"
              ],
              [
                "RE",
                "Réunion",
                "—"
              ],
              [
                "BL",
                "St. Barthélemy",
                "—"
              ],
              [
                "SH",
                "St. Helena",
                "—"
              ],
              [
                "KN",
                "St. Kitts & Nevis",
                "—"
              ],
              [
                "LC",
                "St. Lucia",
                "—"
              ],
              [
                "MF",
                "St. Martin",
                "—"
              ],
              [
                "PM",
                "St. Pierre & Miquelon",
                "—"
              ],
              [
                "VC",
                "St. Vincent & die Grenadinen",
                "—"
              ],
              [
                "WS",
                "Samoa",
                "—"
              ],
              [
                "SM",
                "San Marino",
                "—"
              ],
              [
                "ST",
                "São Tomé & Príncipe",
                "—"
              ],
              [
                "SA",
                "Saudi-Arabien",
                "—"
              ],
              [
                "SN",
                "Senegal",
                "—"
              ],
              [
                "RS",
                "Serbien",
                "—"
              ],
              [
                "SC",
                "Seychellen",
                "—"
              ],
              [
                "SL",
                "Sierra Leone",
                "—"
              ],
              [
                "SG",
                "Singapur",
                "—"
              ],
              [
                "SX",
                "Sint Maarten",
                "—"
              ],
              [
                "SK",
                "Slowakei",
                "—"
              ],
              [
                "SI",
                "Slowenien",
                "—"
              ],
              [
                "SB",
                "Salomonen",
                "—"
              ],
              [
                "ZA",
                "Südafrika",
                "—"
              ],
              [
                "GS",
                "Südgeorgien und die Südlichen Sandwichinseln",
                "—"
              ],
              [
                "KR",
                "Südkorea",
                "—"
              ],
              [
                "ES",
                "Spanien",
                "—"
              ],
              [
                "LK",
                "Sri Lanka",
                "—"
              ],
              [
                "PS",
                "Palästinensische Gebiete",
                "—"
              ],
              [
                "SR",
                "Suriname",
                "—"
              ],
              [
                "SJ",
                "Spitzbergen und Jan Mayen",
                "—"
              ],
              [
                "SE",
                "Schweden",
                "—"
              ],
              [
                "CH",
                "Schweiz",
                "—"
              ],
              [
                "TW",
                "Taiwan",
                "—"
              ],
              [
                "TJ",
                "Tadschikistan",
                "—"
              ],
              [
                "TZ",
                "Tansania",
                "—"
              ],
              [
                "TH",
                "Thailand",
                "—"
              ],
              [
                "TL",
                "Osttimor",
                "—"
              ],
              [
                "TG",
                "Togo",
                "—"
              ],
              [
                "TK",
                "Tokelau",
                "—"
              ],
              [
                "TO",
                "Tonga",
                "—"
              ],
              [
                "TT",
                "Trinidad und Tobago",
                "—"
              ],
              [
                "TN",
                "Tunesien",
                "—"
              ],
              [
                "TM",
                "Turkmenistan",
                "—"
              ],
              [
                "TC",
                "Turks- und Caicosinseln",
                "—"
              ],
              [
                "TV",
                "Tuvalu",
                "—"
              ],
              [
                "TR",
                "Türkei",
                "—"
              ],
              [
                "UG",
                "Uganda",
                "—"
              ],
              [
                "UA",
                "Ukraine**",
                "Karten sind auf der Krim, in Donezk, Luhansk, Cherson und Saporischschja nicht verfügbar. Der Rest der Ukraine ist verfügbar."
              ],
              [
                "AE",
                "Vereinigte Arabische Emirate",
                "—"
              ],
              [
                "GB",
                "Vereinigtes Königreich",
                "—"
              ],
              [
                "UM",
                "U.S. Außengebiete",
                "—"
              ],
              [
                "US",
                "Vereinigte Staaten",
                "—"
              ],
              [
                "UY",
                "Uruguay",
                "—"
              ],
              [
                "UZ",
                "Usbekistan",
                "—"
              ],
              [
                "VU",
                "Vanuatu",
                "—"
              ],
              [
                "VN",
                "Vietnam",
                "—"
              ],
              [
                "VG",
                "Britische Jungferninseln",
                "—"
              ],
              [
                "VI",
                "Amerikanische Jungferninseln",
                "—"
              ],
              [
                "WF",
                "Wallis und Futuna",
                "—"
              ],
              [
                "EH",
                "Westsahara",
                "—"
              ],
              [
                "ZM",
                "Sambia",
                "—"
              ]
            ]
          },
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "crypto",
          "title": "Münzen und Zahlungsnetzwerke",
          "paragraphs": [
            "Der Katalog enthält 16 Münzen und 31 Münz-/Netzwerk-Kombinationen. Eine Münze kann über mehrere Netzwerke akzeptiert werden: USDT auf Tron und USDT auf Ethereum sind unterschiedliche Überweisungsoptionen. Die vollständige Liste erscheint unten.",
            "Optionen für eine bestimmte Rechnung und deren Limits stammen von GET /api/checkout/{token}/crypto-services. Diese Seite beschreibt unterstützte Kombinationen; die aktuelle Gateway-Antwort bestimmt, ob eine Zahlung erstellt werden kann. Ein Referenzeintrag allein macht ein nicht verfügbares Paar nicht zahlbar.",
            "Der Händler erstellt eine Krypto-Rechnung in USDT, und der Kunde wählt eine verfügbare Münze und ein Netzwerk. Die erstellte Gateway-Operation liefert den exakten Münzbetrag, die Adresse, den QR-Code und das Ablaufdatum. Eine USDT-Rechnung sperrt den Wechselkurs von BTC, ETH oder einer anderen Münze nicht und impliziert keinen 1:1-Kurs. Überweisen Sie den exakten Dezimalbetrag gemäß den Zahlungsanweisungen ohne Rundung oder eigene Umrechnung.",
            "USDT TRC20 ist eine separate Händlerauszahlungsbedingung. Sie schränkt eingehende Zahlungen auf Tron nicht ein und bedeutet nicht, dass die Erstellung von Auszahlungen über das Konto oder die API verfügbar ist. Die Anleitung zu Auszahlungen erklärt Abhebungsbedingungen und Einschränkungen."
          ],
          "bullets": [],
          "steps": [
            "Öffnen Sie die Rechnung und wählen Sie Kryptowährung als Zahlungsmethode.",
            "Wählen Sie eine Münze und ein verfügbares Netzwerk. Das Netzwerk der Absender-Wallet muss mit dem Netzwerk in den Kevmi-Zahlungsanweisungen übereinstimmen.",
            "Erstellen Sie die Zahlungsanweisungen und prüfen Sie den genauen Betrag, die vollständige Adresse und das Ablaufdatum. Kopieren Sie Adresse und Betrag oder verwenden Sie den passenden QR-Code.",
            "Senden Sie den angegebenen Betrag im gewählten Netzwerk. Berücksichtigen Sie Wallet- oder Netzwerkgebühren, sodass der Empfänger den vollen Betrag erhält, der in den Anweisungen angegeben ist.",
            "Warten Sie auf einen bestätigten Status im Checkout. Das alleinige Senden einer Wallet-Überweisung schließt die Bestellung nicht ab: Kevmi überprüft das Ergebnis über das Gateway."
          ],
          "table": {
            "headers": [
              "Münze",
              "Name",
              "Netzwerke und Gateway-Codes"
            ],
            "rows": [
              [
                "AVAX",
                "Avalanche",
                "Avalanche C-Chain (avalanche)"
              ],
              [
                "BCH",
                "Bitcoin Cash",
                "Bitcoin Cash (bch)"
              ],
              [
                "BNB",
                "BNB",
                "BNB Smart Chain (bsc)"
              ],
              [
                "BTC",
                "Bitcoin",
                "Bitcoin (btc)"
              ],
              [
                "DAI",
                "Dai",
                "BNB Smart Chain (bsc), Ethereum (eth), Polygon PoS (polygon)"
              ],
              [
                "DASH",
                "Dash",
                "Dash (dash)"
              ],
              [
                "DOGE",
                "Dogecoin",
                "Dogecoin (doge)"
              ],
              [
                "ETH",
                "Ethereum",
                "Ethereum (eth), Arbitrum One (arbitrum), BNB Smart Chain (bsc)"
              ],
              [
                "GRAM",
                "Gram",
                "TON (ton)"
              ],
              [
                "LTC",
                "Litecoin",
                "Litecoin (ltc)"
              ],
              [
                "POL",
                "Polygon",
                "Ethereum (eth), Polygon PoS (polygon)"
              ],
              [
                "SHIB",
                "Shiba Inu",
                "Ethereum (eth)"
              ],
              [
                "TRX",
                "TRON",
                "TRON (tron)"
              ],
              [
                "USDC",
                "USD Coin",
                "Arbitrum One (arbitrum), BNB Smart Chain (bsc), Polygon PoS (polygon), Ethereum (eth), Avalanche C-Chain (avalanche)"
              ],
              [
                "USDT",
                "Tether",
                "TRON (tron), Avalanche C-Chain (avalanche), BNB Smart Chain (bsc), TON (ton), Polygon PoS (polygon), Arbitrum One (arbitrum), Ethereum (eth)"
              ],
              [
                "XMR",
                "Monero",
                "Monero (xmr)"
              ]
            ]
          },
          "code": null,
          "note": "Verwenden Sie keine alten Zahlungsanweisungen nach Ablauf. Wenn Sie bereits Gelder gesendet haben, prüfen Sie denselben Vorgang und kontaktieren Sie bei Bedarf den Support; erstellen Sie keine zweite Zahlung, um die erste zu prüfen.",
          "links": [
            {
              "label": "Checkout",
              "href": "/docs/checkout#method"
            },
            {
              "label": "Auszahlungsbedingungen",
              "href": "/docs/payouts"
            }
          ]
        },
        {
          "id": "specific",
          "title": "Prüfung eines bestimmten Landes",
          "paragraphs": [
            "Der Assistent kann ein Land anhand seines russischen oder englischen Namens oder ISO-Codes finden und dessen veröffentlichte Markierung erklären. Für **-Länder geben Sie den benötigten Standort an. Fragen Sie für China * nach Ihrer Karte.",
            "Wenn ein Land nicht in der Liste enthalten ist, kann diese Wissensbasis internationale Kartendeckung nicht bestätigen. Geben Sie Land, Bank und gewünschte Methode in einer Support-Anfrage an. Senden Sie keine vollständige Kartennummer oder Zahlungsgeheimnisse."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": [
            {
              "label": "Geografie",
              "href": "/countries"
            },
            {
              "label": "Support fragen",
              "href": "/?support=open"
            }
          ]
        }
      ],
      "body": "Abdeckung nach Kanal\n\nKanal · Abdeckung · Bedingungen\nInternationale Karten · Mehr als 190 Länder · Außer der Sperrliste und fünf Regionen der Ukraine\nSBP · Russland · Die Verfügbarkeit hängt von der Bank und der Transaktion ab\nAlipay · China · Die Verfügbarkeit hängt vom Konto und der Transaktion ab\nKryptowährung · Alle Länder · Wählen Sie eine unterstützte Münze und ein Netzwerk\n\nDie interaktive Karte\n\nDie Seite „Geografie“ enthält eine zweidimensionale Weltkarte. Filter heben die veröffentlichten internationalen Kartenländer, Russland für SBP und China für Alipay hervor. Suchen Sie nach Ländernamen oder ISO-Code, um Methoden und Hinweise zu sehen.\n\nSchraffur kennzeichnet die Ukraine, da fünf Regionen von den Karten ausgenommen sind. Der Rest der Ukraine ist verfügbar. Karteneinschränkungen gelten nicht für Kryptowährungen, die in allen Ländern verfügbar sind.\n\nKarte öffnen\n\nWas die Liste abdeckt\n\nDie vollständige Liste unten beschreibt die Abdeckung internationaler Karten. Händlerregistrierungsländer und Auszahlungsziele unterliegen separaten Bedingungen.\n\nDie Genehmigung hängt vom Ausgabeland, der Bank, dem Kartentyp und den Prüfungen des Zahlungskanals ab. Die Auflistung eines Landes garantiert keine Genehmigung für jede Karte oder jede Transaktion.\n\nVisa- und Mastercard-Einschränkungen\n\nKarten sind auf der Krim, in Donezk, Luhansk, Cherson und Saporischschja nicht verfügbar. Der Rest der Ukraine ist verfügbar.\n\nAlle anderen Länder sind verfügbar. Niederländische Antillen bleiben als historischer Eintrag aus der Anbieterliste erhalten; sie blockieren nicht jedes moderne karibische Territorium.\n\nCode · Land oder Territorium\nAF · Afghanistan\nAQ · Antarktis\nBY · Belarus\nMM · Burma (Myanmar)\nBI · Burundi\nCF · Zentralafrikanische Republik\nTD · Tschad\nCU · Kuba\nCD · Demokratische Republik Kongo\nCG · Republik Kongo\nER · Eritrea\nHT · Haiti\nIR · Iran\nIQ · Irak\nLY · Libyen\nML · Mali\nNI · Nicaragua\nKP · Nordkorea\nRU · Russland\nSO · Somalia\nSS · Südsudan\nSD · Sudan\nSY · Syrien\nVE · Venezuela\nYE · Jemen\nZW · Simbabwe\nUA-43 · Krim (Region der Ukraine)\nUA-14 · Donezk (Region der Ukraine)\nUA-65 · Cherson (Region der Ukraine)\nUA-09 · Luhansk (Region der Ukraine)\nUA-23 · Saporischschja (Region der Ukraine)\nAN · Niederländische Antillen\n\nVerzeichnis der Länder und Territorien\n\nNamen, ISO-Codes und Marker stammen aus dem gemeinsamen Länderregister. Diese Hinweise gelten für internationale Karten.\n\nISO · Land oder Territorium · Hinweis\nAX · Åland-Inseln · —\nAL · Albanien · —\nDZ · Algerien · —\nAS · Amerikanisch-Samoa · —\nAD · Andorra · —\nAO · Angola · —\nAI · Anguilla · —\nAG · Antigua und Barbuda · —\nAR · Argentinien · —\nAM · Armenien · —\nAW · Aruba · —\nAU · Australien · —\nAT · Österreich · —\nAZ · Aserbaidschan · —\nBS · Bahamas · —\nBH · Bahrain · —\nBD · Bangladesch · —\nBB · Barbados · —\nBE · Belgien · —\nBZ · Belize · —\nBJ · Benin · —\nBM · Bermuda · —\nBT · Bhutan · —\nBO · Bolivien · —\nBQ · Karibische Niederlande · —\nBA · Bosnien und Herzegowina · —\nBW · Botswana · —\nBV · Bouvetinsel · —\nBR · Brasilien · —\nIO · Britisches Territorium im Indischen Ozean · —\nBN · Brunei · —\nBG · Bulgarien · —\nBF · Burkina Faso · —\nCV · Kap Verde · —\nKH · Kambodscha · —\nCM · Kamerun · —\nCA · Kanada · —\nKY · Kaimaninseln · —\nCL · Chile · —\nCN · China · —\nCX · Weihnachtsinsel · —\nCC · Kokosinseln (Keeling) · —\nCO · Kolumbien · —\nKM · Komoren · —\nCK · Cookinseln · —\nCR · Costa Rica · —\nHR · Kroatien · —\nCW · Curaçao · —\nCY · Zypern · —\nCZ · Tschechien · —\nCI · Côte d’Ivoire · —\nDK · Dänemark · —\nDJ · Dschibuti · —\nDM · Dominica · —\nDO · Dominikanische Republik · —\nEC · Ecuador · —\nEG · Ägypten · —\nSV · El Salvador · —\nGQ · Äquatorialguinea · —\nEE · Estland · —\nSZ · Eswatini · —\nET · Äthiopien · —\nFK · Falklandinseln · —\nFO · Färöer-Inseln · —\nFM · Mikronesien · —\nFJ · Fidschi · —\nFI · Finnland · —\nFR · Frankreich · —\nGF · Französisch-Guayana · —\nPF · Französisch-Polynesien · —\nTF · Französische Süd- und Antarktisgebiete · —\nGA · Gabun · —\nGM · Gambia · —\nGE · Georgien · —\nDE · Deutschland · —\nGH · Ghana · —\nGI · Gibraltar · —\nGR · Griechenland · —\nGL · Grönland · —\nGD · Grenada · —\nGP · Guadeloupe · —\nGU · Guam · —\nGT · Guatemala · —\nGG · Guernsey · —\nGN · Guinea · —\nGW · Guinea-Bissau · —\nGY · Guyana · —\nHM · Heard- und McDonaldinseln · —\nVA · Vatikanstadt · —\nHN · Honduras · —\nHK · Hongkong (SAR China) · —\nHU · Ungarn · —\nIS · Island · —\nIN · Indien · —\nID · Indonesien · —\nIE · Irland · —\nIM · Insel Man · —\nIL · Israel · —\nIT · Italien · —\nJM · Jamaika · —\nJP · Japan · —\nJE · Jersey · —\nJO · Jordanien · —\nKZ · Kasachstan · —\nKE · Kenia · —\nKI · Kiribati · —\nKW · Kuwait · —\nKG · Kirgisistan · —\nLA · Laos · —\nLV · Lettland · —\nLB · Libanon · —\nLS · Lesotho · —\nLR · Liberia · —\nLI · Liechtenstein · —\nLT · Litauen · —\nLU · Luxemburg · —\nMO · Sonderverwaltungsregion Macau, China · —\nMG · Madagaskar · —\nMW · Malawi · —\nMY · Malaysia · —\nMV · Malediven · —\nMT · Malta · —\nMH · Marshallinseln · —\nMQ · Martinique · —\nMR · Mauretanien · —\nMU · Mauritius · —\nYT · Mayotte · —\nMX · Mexiko · —\nMD · Moldau · —\nMC · Monaco · —\nMN · Mongolei · —\nME · Montenegro · —\nMS · Montserrat · —\nMA · Marokko · —\nMZ · Mosambik · —\nNA · Namibia · —\nNR · Nauru · —\nNP · Nepal · —\nNL · Niederlande · —\nNC · Neukaledonien · —\nNZ · Neuseeland · —\nNE · Niger · —\nNG · Nigeria · —\nNU · Niue · —\nNF · Norfolkinsel · —\nMK · Nordmazedonien · —\nMP · Nördliche Marianen · —\nNO · Norwegen · —\nOM · Oman · —\nPK · Pakistan · —\nPW · Palau · —\nPA · Panama · —\nPG · Papua-Neuguinea · —\nPY · Paraguay · —\nPE · Peru · —\nPH · Philippinen · —\nPN · Pitcairninseln · —\nPL · Polen · —\nPT · Portugal · —\nPR · Puerto Rico · —\nQA · Katar · —\nRO · Rumänien · —\nRW · Ruanda · —\nRE · Réunion · —\nBL · St. Barthélemy · —\nSH · St. Helena · —\nKN · St. Kitts & Nevis · —\nLC · St. Lucia · —\nMF · St. Martin · —\nPM · St. Pierre & Miquelon · —\nVC · St. Vincent & die Grenadinen · —\nWS · Samoa · —\nSM · San Marino · —\nST · São Tomé & Príncipe · —\nSA · Saudi-Arabien · —\nSN · Senegal · —\nRS · Serbien · —\nSC · Seychellen · —\nSL · Sierra Leone · —\nSG · Singapur · —\nSX · Sint Maarten · —\nSK · Slowakei · —\nSI · Slowenien · —\nSB · Salomonen · —\nZA · Südafrika · —\nGS · Südgeorgien und die Südlichen Sandwichinseln · —\nKR · Südkorea · —\nES · Spanien · —\nLK · Sri Lanka · —\nPS · Palästinensische Gebiete · —\nSR · Suriname · —\nSJ · Spitzbergen und Jan Mayen · —\nSE · Schweden · —\nCH · Schweiz · —\nTW · Taiwan · —\nTJ · Tadschikistan · —\nTZ · Tansania · —\nTH · Thailand · —\nTL · Osttimor · —\nTG · Togo · —\nTK · Tokelau · —\nTO · Tonga · —\nTT · Trinidad und Tobago · —\nTN · Tunesien · —\nTM · Turkmenistan · —\nTC · Turks- und Caicosinseln · —\nTV · Tuvalu · —\nTR · Türkei · —\nUG · Uganda · —\nUA · Ukraine** · Karten sind auf der Krim, in Donezk, Luhansk, Cherson und Saporischschja nicht verfügbar. Der Rest der Ukraine ist verfügbar.\nAE · Vereinigte Arabische Emirate · —\nGB · Vereinigtes Königreich · —\nUM · U.S. Außengebiete · —\nUS · Vereinigte Staaten · —\nUY · Uruguay · —\nUZ · Usbekistan · —\nVU · Vanuatu · —\nVN · Vietnam · —\nVG · Britische Jungferninseln · —\nVI · Amerikanische Jungferninseln · —\nWF · Wallis und Futuna · —\nEH · Westsahara · —\nZM · Sambia · —\n\nMünzen und Zahlungsnetzwerke\n\nDer Katalog enthält 16 Münzen und 31 Münz-/Netzwerk-Kombinationen. Eine Münze kann über mehrere Netzwerke akzeptiert werden: USDT auf Tron und USDT auf Ethereum sind unterschiedliche Überweisungsoptionen. Die vollständige Liste erscheint unten.\n\nOptionen für eine bestimmte Rechnung und deren Limits stammen von GET /api/checkout/{token}/crypto-services. Diese Seite beschreibt unterstützte Kombinationen; die aktuelle Gateway-Antwort bestimmt, ob eine Zahlung erstellt werden kann. Ein Referenzeintrag allein macht ein nicht verfügbares Paar nicht zahlbar.\n\nDer Händler erstellt eine Krypto-Rechnung in USDT, und der Kunde wählt eine verfügbare Münze und ein Netzwerk. Die erstellte Gateway-Operation liefert den exakten Münzbetrag, die Adresse, den QR-Code und das Ablaufdatum. Eine USDT-Rechnung sperrt den Wechselkurs von BTC, ETH oder einer anderen Münze nicht und impliziert keinen 1:1-Kurs. Überweisen Sie den exakten Dezimalbetrag gemäß den Zahlungsanweisungen ohne Rundung oder eigene Umrechnung.\n\nUSDT TRC20 ist eine separate Händlerauszahlungsbedingung. Sie schränkt eingehende Zahlungen auf Tron nicht ein und bedeutet nicht, dass die Erstellung von Auszahlungen über das Konto oder die API verfügbar ist. Die Anleitung zu Auszahlungen erklärt Abhebungsbedingungen und Einschränkungen.\n\nÖffnen Sie die Rechnung und wählen Sie Kryptowährung als Zahlungsmethode.\n\nWählen Sie eine Münze und ein verfügbares Netzwerk. Das Netzwerk der Absender-Wallet muss mit dem Netzwerk in den Kevmi-Zahlungsanweisungen übereinstimmen.\n\nErstellen Sie die Zahlungsanweisungen und prüfen Sie den genauen Betrag, die vollständige Adresse und das Ablaufdatum. Kopieren Sie Adresse und Betrag oder verwenden Sie den passenden QR-Code.\n\nSenden Sie den angegebenen Betrag im gewählten Netzwerk. Berücksichtigen Sie Wallet- oder Netzwerkgebühren, sodass der Empfänger den vollen Betrag erhält, der in den Anweisungen angegeben ist.\n\nWarten Sie auf einen bestätigten Status im Checkout. Das alleinige Senden einer Wallet-Überweisung schließt die Bestellung nicht ab: Kevmi überprüft das Ergebnis über das Gateway.\n\nMünze · Name · Netzwerke und Gateway-Codes\nAVAX · Avalanche · Avalanche C-Chain (avalanche)\nBCH · Bitcoin Cash · Bitcoin Cash (bch)\nBNB · BNB · BNB Smart Chain (bsc)\nBTC · Bitcoin · Bitcoin (btc)\nDAI · Dai · BNB Smart Chain (bsc), Ethereum (eth), Polygon PoS (polygon)\nDASH · Dash · Dash (dash)\nDOGE · Dogecoin · Dogecoin (doge)\nETH · Ethereum · Ethereum (eth), Arbitrum One (arbitrum), BNB Smart Chain (bsc)\nGRAM · Gram · TON (ton)\nLTC · Litecoin · Litecoin (ltc)\nPOL · Polygon · Ethereum (eth), Polygon PoS (polygon)\nSHIB · Shiba Inu · Ethereum (eth)\nTRX · TRON · TRON (tron)\nUSDC · USD Coin · Arbitrum One (arbitrum), BNB Smart Chain (bsc), Polygon PoS (polygon), Ethereum (eth), Avalanche C-Chain (avalanche)\nUSDT · Tether · TRON (tron), Avalanche C-Chain (avalanche), BNB Smart Chain (bsc), TON (ton), Polygon PoS (polygon), Arbitrum One (arbitrum), Ethereum (eth)\nXMR · Monero · Monero (xmr)\n\nVerwenden Sie keine alten Zahlungsanweisungen nach Ablauf. Wenn Sie bereits Gelder gesendet haben, prüfen Sie denselben Vorgang und kontaktieren Sie bei Bedarf den Support; erstellen Sie keine zweite Zahlung, um die erste zu prüfen.\n\nCheckout\n\nAuszahlungsbedingungen\n\nPrüfung eines bestimmten Landes\n\nDer Assistent kann ein Land anhand seines russischen oder englischen Namens oder ISO-Codes finden und dessen veröffentlichte Markierung erklären. Für **-Länder geben Sie den benötigten Standort an. Fragen Sie für China * nach Ihrer Karte.\n\nWenn ein Land nicht in der Liste enthalten ist, kann diese Wissensbasis internationale Kartendeckung nicht bestätigen. Geben Sie Land, Bank und gewünschte Methode in einer Support-Anfrage an. Senden Sie keine vollständige Kartennummer oder Zahlungsgeheimnisse.\n\nGeografie\n\nSupport fragen",
      "readMinutes": 15
    },
    {
      "id": "payment-links",
      "title": "Zahlungslinks",
      "summary": "Ein Zahlungslink öffnet eine eigene Bestellseite. Kunden sehen Verkäufer, Kaufbeschreibung, verfügbare Methoden und fälligen Gesamtbetrag auf ihrem Telefon oder Computer.",
      "group": "payments",
      "url": "/docs/payment-links",
      "tags": [
        "Zahlungslink",
        "Rechnung",
        "Checkout",
        "Pause",
        "Bestellung",
        "Beliebig",
        "Methodenauswahl"
      ],
      "sections": [
        {
          "id": "contents",
          "title": "Was eine Rechnung enthält",
          "paragraphs": [
            "Neue Workspace-Rechnungen verwenden einen USD-Basispreis, und Any bietet alle vier Methoden an. SBP rechnet zum eingefrorenen Referenzkurs der Bank von Russland in RUB um; Krypto verwendet die explizite 1:1-USD/USDT-Rechnungsregel. Legacy-native Preise bleiben für alte Rechnungen und API-Anfragen ohne pricingMode=universal verfügbar. Siehe Abschnitt zu mehreren Geschäften und USD-Preisen unten.",
            "Geben Sie niemals Passwörter, API-Schlüssel, Kartendaten oder Bankcodes in öffentlichen Beschreibungen an. Verwenden Sie einen Bestelltitel und eine Referenz, die der Kunde erkennt."
          ],
          "bullets": [
            "Geschäftsname, ein Bestelltitel von bis zu 120 Zeichen und eine Beschreibung von bis zu 500 Zeichen.",
            "Grundbetrag und eine explizite Währung USD, RUB oder USDT.",
            "Kompatible Methoden, getrennte Gebühren- und Mehrwertsteueranteile, eine Bestellreferenz und Link-Ablauf.",
            "Antworten des Eigentümers enthalten link.payment mit dem gespeicherten Zustand eines bestehenden Vorgangs; dies ist getrennt vom Verfügbarkeitsstatus des Links."
          ],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "any",
          "title": "Beliebig – der Kunde wählt",
          "paragraphs": [
            "Beliebig wählt alle Methoden aus, die mit der Rechnungswährung kompatibel sind: Karten und Alipay für USD, SBP für RUB und Krypto für USDT. Die API erwartet ein konkretes Methoden-Array und nicht den String beliebig. Jede Methode hat ihr eigenes Angebot.",
            "Neue Workspace-Rechnungen verwenden einen USD-Basispreis, und Any bietet alle vier Methoden an. SBP rechnet zum eingefrorenen Referenzkurs der Bank von Russland in RUB um; Krypto verwendet die explizite 1:1-USD/USDT-Rechnungsregel. Legacy-native Preise bleiben für alte Rechnungen und API-Anfragen ohne pricingMode=universal verfügbar. Siehe Abschnitt zu mehreren Geschäften und USD-Preisen unten.",
            "Für eine neue Live-Karten- oder Alipay-Zahlung unterstützt das aktuelle Gateway nur feeCustomerPercent=0 und vatCustomerPercent=100: der Händler übernimmt die gesamte Bearbeitungsgebühr und die MwSt wird dem Kunden vollständig hinzugefügt. Andere Anteile können auf einer Rechnung gespeichert und berechnet werden, aber die Ausführung ist mit unsupported_allocation blockiert. Der Server ändert gespeicherte Bedingungen niemals stillschweigend. SBP- und USDT-Kryptozahlungen unterstützen jeden Bearbeitungsgebührenanteil und haben keine MwSt."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": [
            {
              "label": "Methoden über die API senden",
              "href": "/docs/payment-links-api#methods"
            }
          ]
        },
        {
          "id": "create",
          "title": "Einen Link erstellen",
          "paragraphs": [],
          "bullets": [],
          "steps": [
            "Zahlungslink in Ihrem Konto öffnen.",
            "Geben Sie Titel, Betrag, Währung und Beschreibung ein. Legen Sie Gebühr- und MwSt.-Anteile mit den beiden Reglern fest.",
            "Lassen Sie Beliebig aktiv, damit der Kunde wählt, oder wählen Sie bestimmte Methoden aus. Legen Sie das Ablaufdatum fest.",
            "Vergleichen Sie die Gesamtsumme für jede Methode und sehen Sie sich die Kasse in der Vorschau an.",
            "Erhalten Sie den fertigen Kasselink direkt nach der Erstellung und kopieren Sie ihn für Ihren Kunden oder Ihr Widget."
          ],
          "table": null,
          "code": null,
          "note": "Wenn die Zahlungsannahme nicht verfügbar ist, meldet die Kasse dies vor der Bestätigung. Das Erstellen einer Rechnung belastet kein Geld.",
          "links": []
        },
        {
          "id": "fixed",
          "title": "Bedingungen bleiben bei der Rechnung",
          "paragraphs": [
            "Eine gespeicherte Rechnung ändert sich nicht, wenn sich die Shop-Einstellungen ändern. Ihr Preis, ihre Währung, Gebühr- und MwSt.-Anteile, Bestellreferenz und Metadaten gehören zu dieser Bestellung. Dadurch bleibt die Gesamtsumme für einen Kunden konsistent, der den Link bereits geöffnet hat.",
            "Erstellen Sie einen neuen Link und pausieren Sie den alten, wenn sich Preis, Beschreibung oder Kostenverteilung ändern. Die Bearbeitung eines Betrags kann die Serverberechnung nicht ändern."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "public",
          "title": "Eine eigene Kassenseite",
          "paragraphs": [
            "Serverlinks werden in der Datenbank gespeichert und sind geräteübergreifend unter /pay/… ohne Zugriff auf das Händlerkonto zugänglich. Ein Kunde muss sich nicht registrieren, um eine Rechnung anzusehen. Shop-Guthaben, Einstellungen und andere Kundendatensätze bleiben privat.",
            "Das Beispiel /pay/demo zeigt die Erfahrung, ohne Geld zu belasten. Browser-Demolinks sind Testdaten und dürfen nicht als echte Rechnungen präsentiert werden."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": [
            {
              "label": "Checkout-Vorschau",
              "href": "/pay/demo"
            },
            {
              "label": "Kassenzustände",
              "href": "/docs/checkout"
            }
          ]
        },
        {
          "id": "control",
          "title": "Verfügbarkeit verwalten",
          "paragraphs": [
            "Das Pausieren, Stornieren oder Ablaufen eines Links blockiert einen neuen Vorgang. Es verbirgt nicht eine bereits übermittelte Zahlung: Status, Abstimmung und ein angeforderter Bankcode bleiben verfügbar. Linkverfügbarkeit und Finanzzustand werden getrennt geprüft.",
            "Das Fortsetzen hebt eine Pause auf, ohne die Bedingungen zu ändern. Eine Stornierung ist endgültig, und ein abgelaufener Link kann nicht verlängert werden. Erstellen Sie eine neue Rechnung für eine neue Bestellung oder geänderte Bedingungen, nicht um eine Zahlung erneut zu versuchen, deren Ergebnis unbekannt ist."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "stores-usd",
          "title": "Mehrere Geschäfte und ein USD-Basispreis",
          "paragraphs": [
            "Wählen Sie Alle Geschäfte für aggregierte Analysen und Betrieb, oder wählen Sie ein Geschäft für dessen eigene Aufzeichnungen. Jedes Geschäft hat eine separate storeId, einen Namen, einen MwSt-Standardwert, Rechnungen, API-Schlüssel, Webhook-Endpunkte, Ereignisverlauf und Website-Anwendung. Benachrichtigungen und Support-Tickets gehören zum Konto. Ein Konto kann bis zu 100 Geschäfte erstellen. Vorhandene Datensätze verbleiben im ersten Geschäft.",
            "Neue Workspace-Rechnungen verwenden pricingMode=\"universal\" und einen USD-Basispreis. Any umfasst Karte, Alipay, SBP und Krypto; ein Händler kann eine Teilmenge auswählen. Karten und Alipay berechnen USD. SBP berechnet RUB unter Verwendung des USD/RUB-Referenzkurses der Bank von Russland. Krypto berechnet USDT gemäß der expliziten Rechnungsregel 1 USD = 1 USDT. Dies ist eine Rechnungsumrechnungsregel, kein Markt-USDT-Kurs. Das Gateway liefert den Kurs der ausgewählten Münze, den genauen Überweisungsbetrag und Anweisungen vor der Überweisung.",
            "Der Referenzkurs und beide Beträge werden bei der Erstellung eingefroren. Rechnungen mit RUB-Umrechnung verfallen innerhalb von 24 Stunden. Wenn der Referenzkurs nicht abgerufen werden kann, schlägt die Erstellung mit FX_UNAVAILABLE fehl; es wird kein erfundener oder veralteter Ersatzkurs verwendet. Der Basisbetrag Minor und Angebote verwenden die USD-Buchungswährung. quotes[method].settlement enthält das native Belastungsangebot. Der öffentliche Checkout legt die ausgewählte Belastungswährung in currency, den ursprünglichen Preis in baseAmountMinor/baseCurrency und den Referenzkurs in fx offen. Sobald eine Zahlung ausgelöst wurde, kann ihre Methode nicht geändert werden; eine Rechnung hat einen Gateway-Vorgang.",
            "Erstellen Sie einen API-Schlüssel im vorgesehenen Geschäft und senden Sie Authorization: Bearer <key> von Ihrem Server. Seine Geschäftsbindung ist unveränderlich; X-Kevmi-Store kann ihm keinen Zugriff auf ein anderes Geschäft gewähren. Browser-Sitzungen wählen X-Kevmi-Store: <storeId>; wenn es weggelassen wird, wird das erste Geschäft ausgewählt. Der Wert all wird nur von GET /api/account/dashboard und GET /api/payment-links akzeptiert. Mutationen erfordern ein ausgewähltes Geschäft, Origin und X-CSRF-Token. Konto-IDs und Geschäfts-IDs sind unterschiedliche Kennungen.",
            "Aus Kompatibilitätsgründen behalten API-Anfragen ohne pricingMode=\"universal\" native Preise und die ursprünglichen Währungsbeschränkungen bei. Bestehende Rechnungen werden nie neu berechnet. Bestätigte Zahlungseingänge in Analysen spiegeln verifizierte Zahlungen abzüglich gespeicherter Rechnungsausgaben wider; sie sind kein abhebbarer Saldo. Legacy-Rechnungswährungen bleiben getrennt, und Auszahlungen werden mit dem Support vereinbart. Führen Sie eine Bestellung erst aus, nachdem Sie payment.fulfillmentReady=true und payment.status=\"succeeded\" über die Server-API, den Ereignisverlauf oder einen signierten Webhook geprüft haben."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        }
      ],
      "body": "Was eine Rechnung enthält\n\nNeue Workspace-Rechnungen verwenden einen USD-Basispreis, und Any bietet alle vier Methoden an. SBP rechnet zum eingefrorenen Referenzkurs der Bank von Russland in RUB um; Krypto verwendet die explizite 1:1-USD/USDT-Rechnungsregel. Legacy-native Preise bleiben für alte Rechnungen und API-Anfragen ohne pricingMode=universal verfügbar. Siehe Abschnitt zu mehreren Geschäften und USD-Preisen unten.\n\nGeben Sie niemals Passwörter, API-Schlüssel, Kartendaten oder Bankcodes in öffentlichen Beschreibungen an. Verwenden Sie einen Bestelltitel und eine Referenz, die der Kunde erkennt.\n\nGeschäftsname, ein Bestelltitel von bis zu 120 Zeichen und eine Beschreibung von bis zu 500 Zeichen.\n\nGrundbetrag und eine explizite Währung USD, RUB oder USDT.\n\nKompatible Methoden, getrennte Gebühren- und Mehrwertsteueranteile, eine Bestellreferenz und Link-Ablauf.\n\nAntworten des Eigentümers enthalten link.payment mit dem gespeicherten Zustand eines bestehenden Vorgangs; dies ist getrennt vom Verfügbarkeitsstatus des Links.\n\nBeliebig – der Kunde wählt\n\nBeliebig wählt alle Methoden aus, die mit der Rechnungswährung kompatibel sind: Karten und Alipay für USD, SBP für RUB und Krypto für USDT. Die API erwartet ein konkretes Methoden-Array und nicht den String beliebig. Jede Methode hat ihr eigenes Angebot.\n\nNeue Workspace-Rechnungen verwenden einen USD-Basispreis, und Any bietet alle vier Methoden an. SBP rechnet zum eingefrorenen Referenzkurs der Bank von Russland in RUB um; Krypto verwendet die explizite 1:1-USD/USDT-Rechnungsregel. Legacy-native Preise bleiben für alte Rechnungen und API-Anfragen ohne pricingMode=universal verfügbar. Siehe Abschnitt zu mehreren Geschäften und USD-Preisen unten.\n\nFür eine neue Live-Karten- oder Alipay-Zahlung unterstützt das aktuelle Gateway nur feeCustomerPercent=0 und vatCustomerPercent=100: der Händler übernimmt die gesamte Bearbeitungsgebühr und die MwSt wird dem Kunden vollständig hinzugefügt. Andere Anteile können auf einer Rechnung gespeichert und berechnet werden, aber die Ausführung ist mit unsupported_allocation blockiert. Der Server ändert gespeicherte Bedingungen niemals stillschweigend. SBP- und USDT-Kryptozahlungen unterstützen jeden Bearbeitungsgebührenanteil und haben keine MwSt.\n\nMethoden über die API senden\n\nEinen Link erstellen\n\nZahlungslink in Ihrem Konto öffnen.\n\nGeben Sie Titel, Betrag, Währung und Beschreibung ein. Legen Sie Gebühr- und MwSt.-Anteile mit den beiden Reglern fest.\n\nLassen Sie Beliebig aktiv, damit der Kunde wählt, oder wählen Sie bestimmte Methoden aus. Legen Sie das Ablaufdatum fest.\n\nVergleichen Sie die Gesamtsumme für jede Methode und sehen Sie sich die Kasse in der Vorschau an.\n\nErhalten Sie den fertigen Kasselink direkt nach der Erstellung und kopieren Sie ihn für Ihren Kunden oder Ihr Widget.\n\nWenn die Zahlungsannahme nicht verfügbar ist, meldet die Kasse dies vor der Bestätigung. Das Erstellen einer Rechnung belastet kein Geld.\n\nBedingungen bleiben bei der Rechnung\n\nEine gespeicherte Rechnung ändert sich nicht, wenn sich die Shop-Einstellungen ändern. Ihr Preis, ihre Währung, Gebühr- und MwSt.-Anteile, Bestellreferenz und Metadaten gehören zu dieser Bestellung. Dadurch bleibt die Gesamtsumme für einen Kunden konsistent, der den Link bereits geöffnet hat.\n\nErstellen Sie einen neuen Link und pausieren Sie den alten, wenn sich Preis, Beschreibung oder Kostenverteilung ändern. Die Bearbeitung eines Betrags kann die Serverberechnung nicht ändern.\n\nEine eigene Kassenseite\n\nServerlinks werden in der Datenbank gespeichert und sind geräteübergreifend unter /pay/… ohne Zugriff auf das Händlerkonto zugänglich. Ein Kunde muss sich nicht registrieren, um eine Rechnung anzusehen. Shop-Guthaben, Einstellungen und andere Kundendatensätze bleiben privat.\n\nDas Beispiel /pay/demo zeigt die Erfahrung, ohne Geld zu belasten. Browser-Demolinks sind Testdaten und dürfen nicht als echte Rechnungen präsentiert werden.\n\nCheckout-Vorschau\n\nKassenzustände\n\nVerfügbarkeit verwalten\n\nDas Pausieren, Stornieren oder Ablaufen eines Links blockiert einen neuen Vorgang. Es verbirgt nicht eine bereits übermittelte Zahlung: Status, Abstimmung und ein angeforderter Bankcode bleiben verfügbar. Linkverfügbarkeit und Finanzzustand werden getrennt geprüft.\n\nDas Fortsetzen hebt eine Pause auf, ohne die Bedingungen zu ändern. Eine Stornierung ist endgültig, und ein abgelaufener Link kann nicht verlängert werden. Erstellen Sie eine neue Rechnung für eine neue Bestellung oder geänderte Bedingungen, nicht um eine Zahlung erneut zu versuchen, deren Ergebnis unbekannt ist.\n\nMehrere Geschäfte und ein USD-Basispreis\n\nWählen Sie Alle Geschäfte für aggregierte Analysen und Betrieb, oder wählen Sie ein Geschäft für dessen eigene Aufzeichnungen. Jedes Geschäft hat eine separate storeId, einen Namen, einen MwSt-Standardwert, Rechnungen, API-Schlüssel, Webhook-Endpunkte, Ereignisverlauf und Website-Anwendung. Benachrichtigungen und Support-Tickets gehören zum Konto. Ein Konto kann bis zu 100 Geschäfte erstellen. Vorhandene Datensätze verbleiben im ersten Geschäft.\n\nNeue Workspace-Rechnungen verwenden pricingMode=\"universal\" und einen USD-Basispreis. Any umfasst Karte, Alipay, SBP und Krypto; ein Händler kann eine Teilmenge auswählen. Karten und Alipay berechnen USD. SBP berechnet RUB unter Verwendung des USD/RUB-Referenzkurses der Bank von Russland. Krypto berechnet USDT gemäß der expliziten Rechnungsregel 1 USD = 1 USDT. Dies ist eine Rechnungsumrechnungsregel, kein Markt-USDT-Kurs. Das Gateway liefert den Kurs der ausgewählten Münze, den genauen Überweisungsbetrag und Anweisungen vor der Überweisung.\n\nDer Referenzkurs und beide Beträge werden bei der Erstellung eingefroren. Rechnungen mit RUB-Umrechnung verfallen innerhalb von 24 Stunden. Wenn der Referenzkurs nicht abgerufen werden kann, schlägt die Erstellung mit FX_UNAVAILABLE fehl; es wird kein erfundener oder veralteter Ersatzkurs verwendet. Der Basisbetrag Minor und Angebote verwenden die USD-Buchungswährung. quotes[method].settlement enthält das native Belastungsangebot. Der öffentliche Checkout legt die ausgewählte Belastungswährung in currency, den ursprünglichen Preis in baseAmountMinor/baseCurrency und den Referenzkurs in fx offen. Sobald eine Zahlung ausgelöst wurde, kann ihre Methode nicht geändert werden; eine Rechnung hat einen Gateway-Vorgang.\n\nErstellen Sie einen API-Schlüssel im vorgesehenen Geschäft und senden Sie Authorization: Bearer <key> von Ihrem Server. Seine Geschäftsbindung ist unveränderlich; X-Kevmi-Store kann ihm keinen Zugriff auf ein anderes Geschäft gewähren. Browser-Sitzungen wählen X-Kevmi-Store: <storeId>; wenn es weggelassen wird, wird das erste Geschäft ausgewählt. Der Wert all wird nur von GET /api/account/dashboard und GET /api/payment-links akzeptiert. Mutationen erfordern ein ausgewähltes Geschäft, Origin und X-CSRF-Token. Konto-IDs und Geschäfts-IDs sind unterschiedliche Kennungen.\n\nAus Kompatibilitätsgründen behalten API-Anfragen ohne pricingMode=\"universal\" native Preise und die ursprünglichen Währungsbeschränkungen bei. Bestehende Rechnungen werden nie neu berechnet. Bestätigte Zahlungseingänge in Analysen spiegeln verifizierte Zahlungen abzüglich gespeicherter Rechnungsausgaben wider; sie sind kein abhebbarer Saldo. Legacy-Rechnungswährungen bleiben getrennt, und Auszahlungen werden mit dem Support vereinbart. Führen Sie eine Bestellung erst aus, nachdem Sie payment.fulfillmentReady=true und payment.status=\"succeeded\" über die Server-API, den Ereignisverlauf oder einen signierten Webhook geprüft haben.",
      "readMinutes": 5
    },
    {
      "id": "checkout",
      "title": "Checkout",
      "summary": "Die Kasse zeigt dem Kunden, was er kauft, wie er zahlen kann und den fälligen Betrag vor der Bestätigung. Sie ist getrennt vom Händler-Arbeitsbereich.",
      "group": "payments",
      "url": "/docs/checkout",
      "tags": [
        "Checkout",
        "Kunde",
        "zahlen",
        "Rechnung",
        "Zahlungsfehler"
      ],
      "sections": [
        {
          "id": "review",
          "title": "Bestellung prüfen",
          "paragraphs": [
            "Prüfen Sie den Shopnamen, den Kauf, den Grundpreis und die Währung. Wenn sie von Ihrer Vereinbarung mit dem Verkäufer abweichen, bitten Sie vor dem Fortfahren um eine korrigierte Rechnung.",
            "Eine öffentliche Rechnung erfordert nur ihre Adresse; Zugriff auf das Konto des Verkäufers ist nicht nötig. Eine Demoseite ist klar gekennzeichnet und sammelt keine Kartendaten für eine echte Belastung."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "method",
          "title": "Eine Methode wählen",
          "paragraphs": [
            "Neue Workspace-Rechnungen verwenden einen USD-Basispreis, und Any bietet alle vier Methoden an. SBP rechnet zum eingefrorenen Referenzkurs der Bank von Russland in RUB um; Krypto verwendet die explizite 1:1-USD/USDT-Rechnungsregel. Legacy-native Preise bleiben für alte Rechnungen und API-Anfragen ohne pricingMode=universal verfügbar. Siehe Abschnitt zu mehreren Geschäften und USD-Preisen unten.",
            "Karte: Der Browser verschlüsselt Zahlungsdaten mit dem öffentlichen Schlüssel des Gateways. Kevmi übermittelt den verschlüsselten Umschlag; sein Server akzeptiert oder speichert keine Klartext-Kartennummern, CVV oder einmalige Bankcodes. Ein angeforderter Bankcode-Formular erscheint nur, solange die Herausforderung des Gateways gültig ist.",
            "Alipay: Der Kunde gibt einen Namen an und erhält einen QR-Code. SBP öffnet die Bank-Zahlungs-URL; ein vom Gateway bereitgestellter QR kann ebenfalls verwendet werden. Ein Ablaufdatum wird angezeigt, wenn das Gateway eines bereitstellt.",
            "Krypto: Wählen Sie eine Münze, dann ein verfügbares Netzwerk aus dem aktuellen Katalog. Nach der Erstellung eines Vorgangs zeigt die Kasse den genauen Dezimalbetrag, die Empfängeradresse und zwei QR-Modi: nur Adresse oder Adresse und Betrag. Das Wallet-Netzwerk muss dem gewählten Netzwerk entsprechen. Ein USDT-Rechnungspreis sperrt nicht den Wechselkurs einer anderen Münze: Verwenden Sie den vom Gateway gelieferten Betrag. Abgelaufene Anweisungen werden ausgeblendet, während die Abstimmung für dieselbe Zahlung fortgesetzt wird.",
            "Für eine neue Live-Karten- oder Alipay-Zahlung unterstützt das aktuelle Gateway nur feeCustomerPercent=0 und vatCustomerPercent=100: der Händler übernimmt die gesamte Bearbeitungsgebühr und die MwSt wird dem Kunden vollständig hinzugefügt. Andere Anteile können auf einer Rechnung gespeichert und berechnet werden, aber die Ausführung ist mit unsupported_allocation blockiert. Der Server ändert gespeicherte Bedingungen niemals stillschweigend. SBP- und USDT-Kryptozahlungen unterstützen jeden Bearbeitungsgebührenanteil und haben keine MwSt."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "states",
          "title": "Kassenzustände",
          "paragraphs": [],
          "bullets": [],
          "steps": [],
          "table": {
            "headers": [
              "Zustand",
              "Bedeutung",
              "Nächster Schritt"
            ],
            "rows": [
              [
                "Aktiv",
                "Die Rechnung ist zur Ansicht verfügbar",
                "Prüfen Sie die Gesamtsumme und die Verfügbarkeit der gewählten Methode"
              ],
              [
                "Pausiert / abgelaufen / storniert",
                "Über den Link kann keine neue Zahlung gestartet werden",
                "Kontaktieren Sie den Verkäufer; ein ursprünglicher Vorgang wird getrennt geprüft"
              ],
              [
                "Nicht gefunden",
                "Die Adresse ist ungültig oder nicht verfügbar",
                "Prüfen Sie die vollständige Adresse"
              ],
              [
                "Zahlung nicht verfügbar",
                "Ein neuer Vorgang wird durch Konfiguration, Methode, Limit, Verteilung oder Händlerprüfung blockiert",
                "Folgen Sie der angezeigten Meldung; gespeicherte Rechnungsbedingungen ändern sich nicht"
              ],
              [
                "Ausstehend / Aktion erforderlich",
                "Der ursprüngliche Vorgang existiert oder benötigt eine Bestätigung",
                "Schließen Sie den aktuellen Schritt ab oder prüfen Sie seinen Status"
              ],
              [
                "Ergebnis wird geprüft",
                "Ein bestätigtes Ergebnis ist noch nicht verfügbar",
                "Prüfen Sie den ursprünglichen Vorgang; erstellen Sie keine zweite Belastung"
              ]
            ]
          },
          "code": null,
          "note": "Ein Netzwerkfehler oder eine fehlende Antwort beweist nicht, dass keine Belastung erfolgt ist. Ein bereits übermittelter Vorgang bleibt lesbar, auch wenn der Link keine neuen Zahlungen mehr akzeptiert.",
          "links": []
        },
        {
          "id": "confirmation",
          "title": "Was Zahlung bestätigt",
          "paragraphs": [
            "Zahlung wird durch Serverabstimmung des exakten Gateway-Vorgangs bestätigt. succeeded erfordert fulfillment_ready=true, verification=provider_confirmed, keinen Streitfall und eine exakte Übereinstimmung zwischen dem gezahlten Betrag und dem genehmigten Gesamtbetrag. Krypto erfordert zusätzlich bestätigtes Abrechnungsnachweis.",
            "Eine Weiterleitung, Widget-Meldung, akzeptierter Bankcode oder Browserbeobachtung bestätigt kein Geld. Nach einem Timeout lesen Sie den Status des ursprünglichen Vorgangs; ein Ersatzversuch wird nie automatisch erstellt.",
            "Eine neue Zahlung und Kartenabsicht erfordern, dass der neueste Website-Review-Antrag des Händlers genehmigt wurde. Die Genehmigung allein verbindet das Zahlungsgateway nicht. Wenn die Überprüfung nach dem Versand geändert wird, bleibt der bestehende Vorgang für Statusabfragen, Abgleich und einen angefragten Bankcode verfügbar."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "help",
          "title": "Hilfe erhalten",
          "paragraphs": [
            "Senden Sie dem Verkäufer die Rechnungsreferenz oder Adresse, die Uhrzeit des Versuchs und den angezeigten Fehler. Senden Sie keine CVV, ein Banking-Passwort, Bestätigungscode oder Seed-Phrase an den Support. Der Dokumentationsassistent kann Begriffe erklären, aber nicht unabhängig eine Gutschrift bestätigen."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": [
            {
              "label": "Zahlungshilfe",
              "href": "/?support=open"
            },
            {
              "label": "MwSt.-Berechnung",
              "href": "/docs/vat"
            }
          ]
        }
      ],
      "body": "Bestellung prüfen\n\nPrüfen Sie den Shopnamen, den Kauf, den Grundpreis und die Währung. Wenn sie von Ihrer Vereinbarung mit dem Verkäufer abweichen, bitten Sie vor dem Fortfahren um eine korrigierte Rechnung.\n\nEine öffentliche Rechnung erfordert nur ihre Adresse; Zugriff auf das Konto des Verkäufers ist nicht nötig. Eine Demoseite ist klar gekennzeichnet und sammelt keine Kartendaten für eine echte Belastung.\n\nEine Methode wählen\n\nNeue Workspace-Rechnungen verwenden einen USD-Basispreis, und Any bietet alle vier Methoden an. SBP rechnet zum eingefrorenen Referenzkurs der Bank von Russland in RUB um; Krypto verwendet die explizite 1:1-USD/USDT-Rechnungsregel. Legacy-native Preise bleiben für alte Rechnungen und API-Anfragen ohne pricingMode=universal verfügbar. Siehe Abschnitt zu mehreren Geschäften und USD-Preisen unten.\n\nKarte: Der Browser verschlüsselt Zahlungsdaten mit dem öffentlichen Schlüssel des Gateways. Kevmi übermittelt den verschlüsselten Umschlag; sein Server akzeptiert oder speichert keine Klartext-Kartennummern, CVV oder einmalige Bankcodes. Ein angeforderter Bankcode-Formular erscheint nur, solange die Herausforderung des Gateways gültig ist.\n\nAlipay: Der Kunde gibt einen Namen an und erhält einen QR-Code. SBP öffnet die Bank-Zahlungs-URL; ein vom Gateway bereitgestellter QR kann ebenfalls verwendet werden. Ein Ablaufdatum wird angezeigt, wenn das Gateway eines bereitstellt.\n\nKrypto: Wählen Sie eine Münze, dann ein verfügbares Netzwerk aus dem aktuellen Katalog. Nach der Erstellung eines Vorgangs zeigt die Kasse den genauen Dezimalbetrag, die Empfängeradresse und zwei QR-Modi: nur Adresse oder Adresse und Betrag. Das Wallet-Netzwerk muss dem gewählten Netzwerk entsprechen. Ein USDT-Rechnungspreis sperrt nicht den Wechselkurs einer anderen Münze: Verwenden Sie den vom Gateway gelieferten Betrag. Abgelaufene Anweisungen werden ausgeblendet, während die Abstimmung für dieselbe Zahlung fortgesetzt wird.\n\nFür eine neue Live-Karten- oder Alipay-Zahlung unterstützt das aktuelle Gateway nur feeCustomerPercent=0 und vatCustomerPercent=100: der Händler übernimmt die gesamte Bearbeitungsgebühr und die MwSt wird dem Kunden vollständig hinzugefügt. Andere Anteile können auf einer Rechnung gespeichert und berechnet werden, aber die Ausführung ist mit unsupported_allocation blockiert. Der Server ändert gespeicherte Bedingungen niemals stillschweigend. SBP- und USDT-Kryptozahlungen unterstützen jeden Bearbeitungsgebührenanteil und haben keine MwSt.\n\nKassenzustände\n\nZustand · Bedeutung · Nächster Schritt\nAktiv · Die Rechnung ist zur Ansicht verfügbar · Prüfen Sie die Gesamtsumme und die Verfügbarkeit der gewählten Methode\nPausiert / abgelaufen / storniert · Über den Link kann keine neue Zahlung gestartet werden · Kontaktieren Sie den Verkäufer; ein ursprünglicher Vorgang wird getrennt geprüft\nNicht gefunden · Die Adresse ist ungültig oder nicht verfügbar · Prüfen Sie die vollständige Adresse\nZahlung nicht verfügbar · Ein neuer Vorgang wird durch Konfiguration, Methode, Limit, Verteilung oder Händlerprüfung blockiert · Folgen Sie der angezeigten Meldung; gespeicherte Rechnungsbedingungen ändern sich nicht\nAusstehend / Aktion erforderlich · Der ursprüngliche Vorgang existiert oder benötigt eine Bestätigung · Schließen Sie den aktuellen Schritt ab oder prüfen Sie seinen Status\nErgebnis wird geprüft · Ein bestätigtes Ergebnis ist noch nicht verfügbar · Prüfen Sie den ursprünglichen Vorgang; erstellen Sie keine zweite Belastung\n\nEin Netzwerkfehler oder eine fehlende Antwort beweist nicht, dass keine Belastung erfolgt ist. Ein bereits übermittelter Vorgang bleibt lesbar, auch wenn der Link keine neuen Zahlungen mehr akzeptiert.\n\nWas Zahlung bestätigt\n\nZahlung wird durch Serverabstimmung des exakten Gateway-Vorgangs bestätigt. succeeded erfordert fulfillment_ready=true, verification=provider_confirmed, keinen Streitfall und eine exakte Übereinstimmung zwischen dem gezahlten Betrag und dem genehmigten Gesamtbetrag. Krypto erfordert zusätzlich bestätigtes Abrechnungsnachweis.\n\nEine Weiterleitung, Widget-Meldung, akzeptierter Bankcode oder Browserbeobachtung bestätigt kein Geld. Nach einem Timeout lesen Sie den Status des ursprünglichen Vorgangs; ein Ersatzversuch wird nie automatisch erstellt.\n\nEine neue Zahlung und Kartenabsicht erfordern, dass der neueste Website-Review-Antrag des Händlers genehmigt wurde. Die Genehmigung allein verbindet das Zahlungsgateway nicht. Wenn die Überprüfung nach dem Versand geändert wird, bleibt der bestehende Vorgang für Statusabfragen, Abgleich und einen angefragten Bankcode verfügbar.\n\nHilfe erhalten\n\nSenden Sie dem Verkäufer die Rechnungsreferenz oder Adresse, die Uhrzeit des Versuchs und den angezeigten Fehler. Senden Sie keine CVV, ein Banking-Passwort, Bestätigungscode oder Seed-Phrase an den Support. Der Dokumentationsassistent kann Begriffe erklären, aber nicht unabhängig eine Gutschrift bestätigen.\n\nZahlungshilfe\n\nMwSt.-Berechnung",
      "readMinutes": 5
    },
    {
      "id": "payments",
      "title": "Zahlungen und Statusen",
      "summary": "Eine Rechnung beschreibt eine Bestellung. Eine Zahlung ist ein konkreter Versuch, diese zu begleichen. Ein Zahlungsversuch und die Verfügbarkeit seines Links sind getrennte Zustände.",
      "group": "payments",
      "url": "/docs/payments",
      "tags": [
        "Zahlung",
        "Status",
        "ausstehend",
        "erfolgreich",
        "fehlgeschlagen"
      ],
      "sections": [
        {
          "id": "record",
          "title": "Der Zahlungsdatensatz",
          "paragraphs": [
            "Die Rechnung speichert die Bestellbedingungen; die Zahlung identifiziert ihren Gateway-Vorgang. Der erste Start reserviert eine dauerhafte Bindung und einen Server-Idempotency-Key. Nach Beginn der Übermittlung kann eine andere Methode keine zweite Belastung auf derselben Rechnung erzeugen.",
            "GET /api/payment-links und GET /api/v1/payments geben link.payment an den Eigentümer zurück. Der Status des Links aktiv/pausiert/storniert/abgelaufen ist getrennt vom Zahlungszustand. Ein Kunde kann seinen Vorgang nur über das zufällige Checkout-Token lesen."
          ],
          "bullets": [],
          "steps": [],
          "table": {
            "headers": [
              "Daten",
              "Zweck"
            ],
            "rows": [
              [
                "Kennung und Bestellung",
                "Den Versuch mit einem Kauf verknüpfen"
              ],
              [
                "Grundbetrag und Währung",
                "Die Berechnungsgrundlage"
              ],
              [
                "Zahlungsmethode",
                "Anwendbare Gebühr und Steuer"
              ],
              [
                "MwSt-Pflichtiger",
                "Wer die Steuer trägt"
              ],
              [
                "Gebühr, MwSt und Summen",
                "Gespeicherte Berechnung"
              ],
              [
                "Status und Zeit",
                "Aktueller Transaktionszustand"
              ],
              [
                "Gateway-Ereignisreferenz",
                "Server-Bestätigungsquelle"
              ]
            ]
          },
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "statuses",
          "title": "Live-Vorgangszustände",
          "paragraphs": [
            "Die Demo verwendet getrennte Testdatensätze. Das Ändern eines Demo-Zustands bestätigt keine echte Zahlung und ändert keine Finanzdatensätze."
          ],
          "bullets": [],
          "steps": [],
          "table": {
            "headers": [
              "Status",
              "Bedeutung"
            ],
            "rows": [
              [
                "ausstehend",
                "Vorgang erstellt; wartet auf Aktion oder ein Ergebnis"
              ],
              [
                "requires_action",
                "Ein Bankcode oder eine Kundenbestätigung ist erforderlich"
              ],
              [
                "processing",
                "Der Anbieter bestätigt das Ergebnis noch"
              ],
              [
                "erfolgreich",
                "Der Server hat die genaue Zahlung verifiziert"
              ],
              [
                "fehlgeschlagen",
                "Versuch ohne bestätigte Zahlung beendet"
              ],
              [
                "expired",
                "Anweisungen abgelaufen; Abstimmung bleibt verfügbar"
              ],
              [
                "review_required",
                "Zusätzliche Prüfung ist erforderlich; nicht erneut bezahlen"
              ],
              [
                "partially_paid",
                "Nur ein Teil des Betrags erhalten; keine weitere Zahlung erzeugen"
              ],
              [
                "partially_refunded",
                "Ein Teil der Zahlung wurde erstattet"
              ],
              [
                "refunded",
                "Erstattung bestätigt"
              ],
              [
                "disputed",
                "Der Vorgang wird angefochten"
              ]
            ]
          },
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "authority",
          "title": "Die Quelle der Wahrheit",
          "paragraphs": [
            "Ein signierter Webhook löst eine authentifizierte Abfrage des genauen Gateway-Vorgangs aus. IDs, Bestellung, Währung, Methode, Grund- und Endbetrag, Live-Modus und monotone Version werden validiert. Ein eingehender Ereignisname allein ist kein Beweis für Geld.",
            "Zustand, Beleg und Händlerereignis werden atomar committet. Ältere Antworten können eine neuere Version nicht überschreiben; Duplikate erfüllen nicht zweimal, und ausstehend kann eine bestätigte Zahlung nicht ersetzen. Diese Datensätze erzeugen automatisch kein abhebbares Guthaben oder keine Auszahlung."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "uncertain",
          "title": "Wenn das Ergebnis unbekannt ist",
          "paragraphs": [],
          "bullets": [],
          "steps": [
            "Die ursprüngliche Rechnung und Vorgangskennung aufbewahren.",
            "GET /api/checkout/{token}/status lesen; dies erzeugt keine Belastung.",
            "POST /api/checkout/{token}/reconcile verwenden, wenn eine explizite Abstimmung erforderlich ist.",
            "Methode, Betrag oder Idempotency-Key nach einem ungewissen Ergebnis nicht ändern."
          ],
          "table": null,
          "code": null,
          "note": "Eine Zeitüberschreitung ist keine Ablehnung. Eine verlorene Antwort wird über den ursprünglichen Server-Key wiederhergestellt; es wird automatisch kein Ersatzversuch erzeugt.",
          "links": []
        },
        {
          "id": "stores-usd",
          "title": "Mehrere Geschäfte und ein USD-Basispreis",
          "paragraphs": [
            "Wählen Sie Alle Geschäfte für aggregierte Analysen und Betrieb, oder wählen Sie ein Geschäft für dessen eigene Aufzeichnungen. Jedes Geschäft hat eine separate storeId, einen Namen, einen MwSt-Standardwert, Rechnungen, API-Schlüssel, Webhook-Endpunkte, Ereignisverlauf und Website-Anwendung. Benachrichtigungen und Support-Tickets gehören zum Konto. Ein Konto kann bis zu 100 Geschäfte erstellen. Vorhandene Datensätze verbleiben im ersten Geschäft.",
            "Neue Workspace-Rechnungen verwenden pricingMode=\"universal\" und einen USD-Basispreis. Any umfasst Karte, Alipay, SBP und Krypto; ein Händler kann eine Teilmenge auswählen. Karten und Alipay berechnen USD. SBP berechnet RUB unter Verwendung des USD/RUB-Referenzkurses der Bank von Russland. Krypto berechnet USDT gemäß der expliziten Rechnungsregel 1 USD = 1 USDT. Dies ist eine Rechnungsumrechnungsregel, kein Markt-USDT-Kurs. Das Gateway liefert den Kurs der ausgewählten Münze, den genauen Überweisungsbetrag und Anweisungen vor der Überweisung.",
            "Der Referenzkurs und beide Beträge werden bei der Erstellung eingefroren. Rechnungen mit RUB-Umrechnung verfallen innerhalb von 24 Stunden. Wenn der Referenzkurs nicht abgerufen werden kann, schlägt die Erstellung mit FX_UNAVAILABLE fehl; es wird kein erfundener oder veralteter Ersatzkurs verwendet. Der Basisbetrag Minor und Angebote verwenden die USD-Buchungswährung. quotes[method].settlement enthält das native Belastungsangebot. Der öffentliche Checkout legt die ausgewählte Belastungswährung in currency, den ursprünglichen Preis in baseAmountMinor/baseCurrency und den Referenzkurs in fx offen. Sobald eine Zahlung ausgelöst wurde, kann ihre Methode nicht geändert werden; eine Rechnung hat einen Gateway-Vorgang.",
            "Erstellen Sie einen API-Schlüssel im vorgesehenen Geschäft und senden Sie Authorization: Bearer <key> von Ihrem Server. Seine Geschäftsbindung ist unveränderlich; X-Kevmi-Store kann ihm keinen Zugriff auf ein anderes Geschäft gewähren. Browser-Sitzungen wählen X-Kevmi-Store: <storeId>; wenn es weggelassen wird, wird das erste Geschäft ausgewählt. Der Wert all wird nur von GET /api/account/dashboard und GET /api/payment-links akzeptiert. Mutationen erfordern ein ausgewähltes Geschäft, Origin und X-CSRF-Token. Konto-IDs und Geschäfts-IDs sind unterschiedliche Kennungen.",
            "Aus Kompatibilitätsgründen behalten API-Anfragen ohne pricingMode=\"universal\" native Preise und die ursprünglichen Währungsbeschränkungen bei. Bestehende Rechnungen werden nie neu berechnet. Bestätigte Zahlungseingänge in Analysen spiegeln verifizierte Zahlungen abzüglich gespeicherter Rechnungsausgaben wider; sie sind kein abhebbarer Saldo. Legacy-Rechnungswährungen bleiben getrennt, und Auszahlungen werden mit dem Support vereinbart. Führen Sie eine Bestellung erst aus, nachdem Sie payment.fulfillmentReady=true und payment.status=\"succeeded\" über die Server-API, den Ereignisverlauf oder einen signierten Webhook geprüft haben."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        }
      ],
      "body": "Der Zahlungsdatensatz\n\nDie Rechnung speichert die Bestellbedingungen; die Zahlung identifiziert ihren Gateway-Vorgang. Der erste Start reserviert eine dauerhafte Bindung und einen Server-Idempotency-Key. Nach Beginn der Übermittlung kann eine andere Methode keine zweite Belastung auf derselben Rechnung erzeugen.\n\nGET /api/payment-links und GET /api/v1/payments geben link.payment an den Eigentümer zurück. Der Status des Links aktiv/pausiert/storniert/abgelaufen ist getrennt vom Zahlungszustand. Ein Kunde kann seinen Vorgang nur über das zufällige Checkout-Token lesen.\n\nDaten · Zweck\nKennung und Bestellung · Den Versuch mit einem Kauf verknüpfen\nGrundbetrag und Währung · Die Berechnungsgrundlage\nZahlungsmethode · Anwendbare Gebühr und Steuer\nMwSt-Pflichtiger · Wer die Steuer trägt\nGebühr, MwSt und Summen · Gespeicherte Berechnung\nStatus und Zeit · Aktueller Transaktionszustand\nGateway-Ereignisreferenz · Server-Bestätigungsquelle\n\nLive-Vorgangszustände\n\nDie Demo verwendet getrennte Testdatensätze. Das Ändern eines Demo-Zustands bestätigt keine echte Zahlung und ändert keine Finanzdatensätze.\n\nStatus · Bedeutung\nausstehend · Vorgang erstellt; wartet auf Aktion oder ein Ergebnis\nrequires_action · Ein Bankcode oder eine Kundenbestätigung ist erforderlich\nprocessing · Der Anbieter bestätigt das Ergebnis noch\nerfolgreich · Der Server hat die genaue Zahlung verifiziert\nfehlgeschlagen · Versuch ohne bestätigte Zahlung beendet\nexpired · Anweisungen abgelaufen; Abstimmung bleibt verfügbar\nreview_required · Zusätzliche Prüfung ist erforderlich; nicht erneut bezahlen\npartially_paid · Nur ein Teil des Betrags erhalten; keine weitere Zahlung erzeugen\npartially_refunded · Ein Teil der Zahlung wurde erstattet\nrefunded · Erstattung bestätigt\ndisputed · Der Vorgang wird angefochten\n\nDie Quelle der Wahrheit\n\nEin signierter Webhook löst eine authentifizierte Abfrage des genauen Gateway-Vorgangs aus. IDs, Bestellung, Währung, Methode, Grund- und Endbetrag, Live-Modus und monotone Version werden validiert. Ein eingehender Ereignisname allein ist kein Beweis für Geld.\n\nZustand, Beleg und Händlerereignis werden atomar committet. Ältere Antworten können eine neuere Version nicht überschreiben; Duplikate erfüllen nicht zweimal, und ausstehend kann eine bestätigte Zahlung nicht ersetzen. Diese Datensätze erzeugen automatisch kein abhebbares Guthaben oder keine Auszahlung.\n\nWenn das Ergebnis unbekannt ist\n\nDie ursprüngliche Rechnung und Vorgangskennung aufbewahren.\n\nGET /api/checkout/{token}/status lesen; dies erzeugt keine Belastung.\n\nPOST /api/checkout/{token}/reconcile verwenden, wenn eine explizite Abstimmung erforderlich ist.\n\nMethode, Betrag oder Idempotency-Key nach einem ungewissen Ergebnis nicht ändern.\n\nEine Zeitüberschreitung ist keine Ablehnung. Eine verlorene Antwort wird über den ursprünglichen Server-Key wiederhergestellt; es wird automatisch kein Ersatzversuch erzeugt.\n\nMehrere Geschäfte und ein USD-Basispreis\n\nWählen Sie Alle Geschäfte für aggregierte Analysen und Betrieb, oder wählen Sie ein Geschäft für dessen eigene Aufzeichnungen. Jedes Geschäft hat eine separate storeId, einen Namen, einen MwSt-Standardwert, Rechnungen, API-Schlüssel, Webhook-Endpunkte, Ereignisverlauf und Website-Anwendung. Benachrichtigungen und Support-Tickets gehören zum Konto. Ein Konto kann bis zu 100 Geschäfte erstellen. Vorhandene Datensätze verbleiben im ersten Geschäft.\n\nNeue Workspace-Rechnungen verwenden pricingMode=\"universal\" und einen USD-Basispreis. Any umfasst Karte, Alipay, SBP und Krypto; ein Händler kann eine Teilmenge auswählen. Karten und Alipay berechnen USD. SBP berechnet RUB unter Verwendung des USD/RUB-Referenzkurses der Bank von Russland. Krypto berechnet USDT gemäß der expliziten Rechnungsregel 1 USD = 1 USDT. Dies ist eine Rechnungsumrechnungsregel, kein Markt-USDT-Kurs. Das Gateway liefert den Kurs der ausgewählten Münze, den genauen Überweisungsbetrag und Anweisungen vor der Überweisung.\n\nDer Referenzkurs und beide Beträge werden bei der Erstellung eingefroren. Rechnungen mit RUB-Umrechnung verfallen innerhalb von 24 Stunden. Wenn der Referenzkurs nicht abgerufen werden kann, schlägt die Erstellung mit FX_UNAVAILABLE fehl; es wird kein erfundener oder veralteter Ersatzkurs verwendet. Der Basisbetrag Minor und Angebote verwenden die USD-Buchungswährung. quotes[method].settlement enthält das native Belastungsangebot. Der öffentliche Checkout legt die ausgewählte Belastungswährung in currency, den ursprünglichen Preis in baseAmountMinor/baseCurrency und den Referenzkurs in fx offen. Sobald eine Zahlung ausgelöst wurde, kann ihre Methode nicht geändert werden; eine Rechnung hat einen Gateway-Vorgang.\n\nErstellen Sie einen API-Schlüssel im vorgesehenen Geschäft und senden Sie Authorization: Bearer <key> von Ihrem Server. Seine Geschäftsbindung ist unveränderlich; X-Kevmi-Store kann ihm keinen Zugriff auf ein anderes Geschäft gewähren. Browser-Sitzungen wählen X-Kevmi-Store: <storeId>; wenn es weggelassen wird, wird das erste Geschäft ausgewählt. Der Wert all wird nur von GET /api/account/dashboard und GET /api/payment-links akzeptiert. Mutationen erfordern ein ausgewähltes Geschäft, Origin und X-CSRF-Token. Konto-IDs und Geschäfts-IDs sind unterschiedliche Kennungen.\n\nAus Kompatibilitätsgründen behalten API-Anfragen ohne pricingMode=\"universal\" native Preise und die ursprünglichen Währungsbeschränkungen bei. Bestehende Rechnungen werden nie neu berechnet. Bestätigte Zahlungseingänge in Analysen spiegeln verifizierte Zahlungen abzüglich gespeicherter Rechnungsausgaben wider; sie sind kein abhebbarer Saldo. Legacy-Rechnungswährungen bleiben getrennt, und Auszahlungen werden mit dem Support vereinbart. Führen Sie eine Bestellung erst aus, nachdem Sie payment.fulfillmentReady=true und payment.status=\"succeeded\" über die Server-API, den Ereignisverlauf oder einen signierten Webhook geprüft haben.",
      "readMinutes": 3
    },
    {
      "id": "payouts",
      "title": "USDT TRC20 Auszahlungen",
      "summary": "Auszahlungsbedingungen legen USDT auf TRC20 fest, mit Gebühren basierend auf der Mittelquelle. Dieser Leitfaden deckt Gebühren, Angebotsanforderungen und Einschränkungen ab: Die Erstellung von Auszahlungen über das Konto und die API ist nicht verfügbar.",
      "group": "payments",
      "url": "/docs/payouts",
      "tags": [
        "Auszahlung",
        "Auszahlung",
        "USDT",
        "TRC20",
        "Wallet",
        "Wechselkurs"
      ],
      "sections": [
        {
          "id": "tariffs",
          "title": "Gebühren nach Quelle",
          "paragraphs": [
            "Die Annahmegebühr ist bereits in der Händlergutschrift enthalten. Eine Auszahlung ist ein separater Vorgang mit einer eigenen Gebühr. Wenden Sie die Annahmegebühr nicht ein zweites Mal auf den Saldo an."
          ],
          "bullets": [],
          "steps": [],
          "table": {
            "headers": [
              "Quelle",
              "Gebühr"
            ],
            "rows": [
              [
                "Karten und Alipay",
                "4%"
              ],
              [
                "SBP",
                "5 % + 400 RUB"
              ],
              [
                "Kryptowährung",
                "0% + $3"
              ]
            ]
          },
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "quote",
          "title": "Kursangebote und Währungen",
          "paragraphs": [
            "Beträge in USD und RUB müssen getrennt verbucht werden. Addieren Sie sie nicht ohne Wechselkurs. USD ist eine Fiat-Währung und USDT ist ein digitales Asset; ein automatischer Wechselkurs von 1:1 wird nicht angenommen.",
            "Ein Kursangebot muss die Quellwährung und den Betrag, die Gebühr, die USDT-Ausgabe und das Ablaufdatum angeben. Änderungen am Betrag oder an der Wallet erfordern eine erneute Prüfung der Bedingungen."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "address",
          "title": "Empfängeradresse",
          "paragraphs": [
            "Verwenden Sie eine TRC20-Adresse, die dem Empfänger gehört. Die Validierung des Adressformats kann einige Tippfehler erkennen, kann aber nicht den Eigentümer verifizieren oder die Zustellung garantieren.",
            "Prüfen Sie die vollständige Adresse und das Netzwerk vor dem Senden. Der Server muss den Betrag, den verfügbaren Saldo und das Kursangebot unabhängig vom Client-Formular validieren."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "flow",
          "title": "Der Auszahlungsprozess",
          "paragraphs": [
            "Die Demo verwendet ein manuell eingegebenes Kursangebot nur zur Berechnung. Eine Testauszahlung reserviert Demo-Gelder und überträgt keine Assets."
          ],
          "bullets": [],
          "steps": [
            "Wählen Sie die Geldquelle und den Belastungsbetrag.",
            "Geben Sie eine TRC20-Adresse ein.",
            "Holen Sie ein aktuelles Kursangebot und prüfen Sie die Gebühr.",
            "Bestätigen Sie die genauen Anfragebedingungen.",
            "Warten Sie auf ein vom Server bestätigtes Ergebnis."
          ],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "availability",
          "title": "Verfügbarkeit von Auszahlungen",
          "paragraphs": [
            "Die Erstellung von Auszahlungen über das Konto und /api/payouts ist nicht verfügbar. Veröffentlichte Gebühren und eine Gebührenberechnung erstellen keinen Überweisungsauftrag und bestätigen keine Ausführung.",
            "Verifizierte Zahlungen, Belege und Ereignisse werden im Verlauf gespeichert. Diese Aufzeichnungen sind kein abhebbarer Saldo. Die Ausführung einer Auszahlung erfordert ein separates Geldbuch, ein aktuelles Kursangebot, eine Zielvalidierung und eine Überweisungsbestätigung."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": [
            {
              "label": "Gateway-Integration",
              "href": "/docs/gateway"
            }
          ]
        }
      ],
      "body": "Gebühren nach Quelle\n\nDie Annahmegebühr ist bereits in der Händlergutschrift enthalten. Eine Auszahlung ist ein separater Vorgang mit einer eigenen Gebühr. Wenden Sie die Annahmegebühr nicht ein zweites Mal auf den Saldo an.\n\nQuelle · Gebühr\nKarten und Alipay · 4%\nSBP · 5 % + 400 RUB\nKryptowährung · 0% + $3\n\nKursangebote und Währungen\n\nBeträge in USD und RUB müssen getrennt verbucht werden. Addieren Sie sie nicht ohne Wechselkurs. USD ist eine Fiat-Währung und USDT ist ein digitales Asset; ein automatischer Wechselkurs von 1:1 wird nicht angenommen.\n\nEin Kursangebot muss die Quellwährung und den Betrag, die Gebühr, die USDT-Ausgabe und das Ablaufdatum angeben. Änderungen am Betrag oder an der Wallet erfordern eine erneute Prüfung der Bedingungen.\n\nEmpfängeradresse\n\nVerwenden Sie eine TRC20-Adresse, die dem Empfänger gehört. Die Validierung des Adressformats kann einige Tippfehler erkennen, kann aber nicht den Eigentümer verifizieren oder die Zustellung garantieren.\n\nPrüfen Sie die vollständige Adresse und das Netzwerk vor dem Senden. Der Server muss den Betrag, den verfügbaren Saldo und das Kursangebot unabhängig vom Client-Formular validieren.\n\nDer Auszahlungsprozess\n\nDie Demo verwendet ein manuell eingegebenes Kursangebot nur zur Berechnung. Eine Testauszahlung reserviert Demo-Gelder und überträgt keine Assets.\n\nWählen Sie die Geldquelle und den Belastungsbetrag.\n\nGeben Sie eine TRC20-Adresse ein.\n\nHolen Sie ein aktuelles Kursangebot und prüfen Sie die Gebühr.\n\nBestätigen Sie die genauen Anfragebedingungen.\n\nWarten Sie auf ein vom Server bestätigtes Ergebnis.\n\nVerfügbarkeit von Auszahlungen\n\nDie Erstellung von Auszahlungen über das Konto und /api/payouts ist nicht verfügbar. Veröffentlichte Gebühren und eine Gebührenberechnung erstellen keinen Überweisungsauftrag und bestätigen keine Ausführung.\n\nVerifizierte Zahlungen, Belege und Ereignisse werden im Verlauf gespeichert. Diese Aufzeichnungen sind kein abhebbarer Saldo. Die Ausführung einer Auszahlung erfordert ein separates Geldbuch, ein aktuelles Kursangebot, eine Zielvalidierung und eine Überweisungsbestätigung.\n\nGateway-Integration",
      "readMinutes": 3
    },
    {
      "id": "telegram-login",
      "title": "Anmelden und mit Telegram registrieren",
      "summary": "Telegram verifiziert Ihre Identität. Kevmi erstellt Ihr Konto bei der ersten Anmeldung und öffnet es bei späteren Besuchen. Ein separates Kevmi-Passwort ist nicht erforderlich.",
      "group": "account",
      "url": "/docs/telegram-login",
      "tags": [
        "Telegram",
        "anmelden",
        "Login",
        "registrieren",
        "Konto",
        "Bot"
      ],
      "sections": [
        {
          "id": "steps",
          "title": "Anmeldung",
          "paragraphs": [
            "Die Anfrage dauert fünf Minuten. Starten Sie eine neue Anfrage, wenn sie abläuft. Eine alte Anfrage kann nicht wiederverwendet werden, um eine Sitzung zu erhalten."
          ],
          "bullets": [],
          "steps": [
            "Öffnen Sie „Anmelden“ oder „Konto erstellen“ und wählen Sie „Mit Telegram fortfahren“.",
            "Folgen Sie dem Bot-Link, der von diesem Browser erstellt wurde.",
            "Vergleichen Sie den sechsstelligen Code auf der Website und in der Bot-Nachricht.",
            "Bestätigen Sie im privaten Chat.",
            "Kehren Sie zum ursprünglichen Browser zurück. Ihr Konto öffnet sich nach der Verifizierung."
          ],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "browser",
          "title": "Warum der ursprüngliche Browser wichtig ist",
          "paragraphs": [
            "Der Telegram-Link ist an ein geschütztes Cookie im Browser gebunden, der die Anmeldung gestartet hat. Eine challengeId oder ein weitergeleiteter Link allein kann auf einem anderen Gerät keine Sitzung erstellen.",
            "Sie können in Telegram auf einem anderen Gerät bestätigen, aber das Konto öffnet sich in dem Browser, in dem die Anmeldung begann. Bestätigen Sie keine Anfrage, die Sie nicht gestartet haben."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "session",
          "title": "Sitzungen und Abmeldung",
          "paragraphs": [
            "Eine Sitzung dauert bis zu 24 Stunden. Ihr zufälliges Token wird in einem sicheren HttpOnly-Cookie gespeichert und kann nicht von JavaScript gelesen werden. Die Abmeldung auf der Website beendet die aktuelle Sitzung.",
            "Der Bot-Befehl /logout beendet alle Kontositzungen und storniert ungenutzte Bestätigungen. Eine neue Anmeldung erfordert eine neue Anfrage."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "trouble",
          "title": "Fehlerbehebung bei der Anmeldung",
          "paragraphs": [],
          "bullets": [],
          "steps": [],
          "table": {
            "headers": [
              "Situation",
              "Maßnahme"
            ],
            "rows": [
              [
                "Der Link ist abgelaufen",
                "Starten Sie eine neue Anfrage auf der Website"
              ],
              [
                "Ein anderer Browser ist geöffnet",
                "Kehren Sie zum Tab zurück, in dem die Anmeldung begann"
              ],
              [
                "Die Codes unterscheiden sich",
                "Nicht bestätigen; neu starten"
              ],
              [
                "Anmeldung nicht verfügbar",
                "Versuchen Sie es später erneut oder kontaktieren Sie den Support"
              ],
              [
                "Vorübergehender Netzwerkfehler",
                "Warten Sie auf die nächste Prüfung oder versuchen Sie die Anmeldung erneut"
              ]
            ]
          },
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "privacy",
          "title": "Informationen für die Anmeldung",
          "paragraphs": [
            "Der Server empfängt eine verifizierte Telegram-ID und verfügbare Profilfelder, um das Konto zu erstellen. Ein öffentlicher Benutzername allein ist kein Identitätsnachweis.",
            "Der Bot fragt nicht nach Ihrem Telegram-Passwort, Bankcodes, CVV, Seed-Phrase oder privaten Schlüsseln."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": [
            {
              "label": "Authentifizierungs-API",
              "href": "/docs/auth-api"
            },
            {
              "label": "Anmelden",
              "href": "/login"
            }
          ]
        },
        {
          "id": "assistant-admin-v16",
          "title": "Assistent, Support und Projektverwaltung",
          "paragraphs": [
            "Aktivieren Sie „Zugriff auf meine Daten im Chat erlauben“, wenn Sie Hilfe bei privaten Vorgängen benötigen. Eine Webanfrage mit includeAccount=true erfordert eine gültige Sitzung, Origin und X-CSRF-Token; X-Kevmi-Store wählt einen eigenen Store oder alle eigenen Stores aus. Ohne Berechtigung verwendet der Assistent öffentliche Dokumentation. In Telegram aktiviert eine separate Schaltfläche den Zugriff, nachdem der Absender identifiziert wurde.",
            "Das Tool read_account liest eigene Stores, Rechnungen mit bestätigtem Zahlungsstatus, Ereignisse, Anträge und Supportanfragen mit Fachantworten. Es gibt 30 Datensätze und nextPage zurück; ältere Datensätze sind über Paginierung verfügbar. Lesevorgänge pro Antwort sind begrenzt, daher muss eine unvollständige Stichprobe offengelegt werden. API-Schlüssel, Webhook-Geheimnisse, Kartendaten und Sitzungen werden dem Tool nicht bereitgestellt. Es kann keine Zahlungen belasten, auszahlen, erstatten oder Einstellungen ändern.",
            "Das Erstellen einer Supportanfrage im Arbeitsbereich oder in Telegram platziert eine separate Administratorwarnung in einer dauerhaften Warteschlange. Sie verlinkt auf /admin/tickets?ticket=<id>; vorübergehende Telegram-Fehler werden erneut versucht. Die Wiederherstellung nimmt auch ältere offene Anfragen ohne Warnung auf. Administratoren antworten auf der Anfrageseite; die Antwort wird im Benutzerarbeitsbereich gespeichert und über Telegram gesendet, wenn Support-Benachrichtigungen aktiviert sind.",
            "Der Bot verwendet Inline-Schaltflächen für das Hauptmenü, Stores, Benachrichtigungen, Support, Sicherheit und Sprache. Die Navigation bearbeitet die aktuelle Nachricht; ein nicht verfügbares altes Menü wird ersetzt. Zahlungs- und Sicherheitsbenachrichtigungen werden nicht als Wegwerf-Navigation behandelt. Das Abmelden über das Menü erfordert eine Bestätigung. Der explizite Befehl /logout beendet weiterhin jede Kontositzung.",
            "Das Panel /admin/project ist auf Telegram-IDs in der serverseitigen Allowlist MODERATOR_TELEGRAM_IDS beschränkt. Es umfasst Benutzer, Stores, Vorgänge, Schlüsselwiderruf, Deaktivierung von Webhooks, Pausieren von Rechnungen, Annahmesteuerungen und ein Prüfprotokoll. Mutationen erfordern CSRF und einen Grund. Das Panel kann einen Administrator nicht einschränken oder eine Zahlung manuell als erfolgreich erklären. Die Einschränkung eines Eigentümers beendet Sitzungen und blockiert API-Schlüsselzugriff; die Einschränkung eines Stores stoppt neue Vorgänge. Der Verlauf bleibt erhalten.",
            "Das öffentliche Angebot ist unter /public-offer und die Datenschutzrichtlinie unter /privacy-policy in jeder aktivierten Sprache verfügbar. Suchen Sie Münzen nach Name oder Tickersymbol. Ein Netzwerkauswahlfeld erscheint nur, wenn mehrere Live-Netzwerke verfügbar sind. Ein einzelnes Netzwerk wird automatisch ausgewählt und bleibt in der Bestätigung benannt. Die Live-Verfügbarkeit des Gateways bestimmt die wählbaren Paare; der Referenzkatalog aktiviert keinen Dienst.",
            "Verwenden Sie update.sh für routinemäßige Web-App-Veröffentlichungen: Kandidaten bauen, Migrationsverlauf prüfen, SQLite online sichern, einen zweiten Container starten, ihn verifizieren und Caddy elegant umschalten. Gateway, PostgreSQL und Mail werden nicht neu gestartet. Frühere statische Assets bleiben für geöffnete Tabs verfügbar. Eine neue Migration erfordert explizite überprüfte Genehmigung; eine inkompatible Schemaänderung ist keine nahtlose Bereitstellung."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": [
            {
              "label": "Öffentliches Angebot",
              "href": "/public-offer"
            },
            {
              "label": "Datenschutzrichtlinie",
              "href": "/privacy-policy"
            }
          ]
        }
      ],
      "body": "Anmeldung\n\nDie Anfrage dauert fünf Minuten. Starten Sie eine neue Anfrage, wenn sie abläuft. Eine alte Anfrage kann nicht wiederverwendet werden, um eine Sitzung zu erhalten.\n\nÖffnen Sie „Anmelden“ oder „Konto erstellen“ und wählen Sie „Mit Telegram fortfahren“.\n\nFolgen Sie dem Bot-Link, der von diesem Browser erstellt wurde.\n\nVergleichen Sie den sechsstelligen Code auf der Website und in der Bot-Nachricht.\n\nBestätigen Sie im privaten Chat.\n\nKehren Sie zum ursprünglichen Browser zurück. Ihr Konto öffnet sich nach der Verifizierung.\n\nWarum der ursprüngliche Browser wichtig ist\n\nDer Telegram-Link ist an ein geschütztes Cookie im Browser gebunden, der die Anmeldung gestartet hat. Eine challengeId oder ein weitergeleiteter Link allein kann auf einem anderen Gerät keine Sitzung erstellen.\n\nSie können in Telegram auf einem anderen Gerät bestätigen, aber das Konto öffnet sich in dem Browser, in dem die Anmeldung begann. Bestätigen Sie keine Anfrage, die Sie nicht gestartet haben.\n\nSitzungen und Abmeldung\n\nEine Sitzung dauert bis zu 24 Stunden. Ihr zufälliges Token wird in einem sicheren HttpOnly-Cookie gespeichert und kann nicht von JavaScript gelesen werden. Die Abmeldung auf der Website beendet die aktuelle Sitzung.\n\nDer Bot-Befehl /logout beendet alle Kontositzungen und storniert ungenutzte Bestätigungen. Eine neue Anmeldung erfordert eine neue Anfrage.\n\nFehlerbehebung bei der Anmeldung\n\nSituation · Maßnahme\nDer Link ist abgelaufen · Starten Sie eine neue Anfrage auf der Website\nEin anderer Browser ist geöffnet · Kehren Sie zum Tab zurück, in dem die Anmeldung begann\nDie Codes unterscheiden sich · Nicht bestätigen; neu starten\nAnmeldung nicht verfügbar · Versuchen Sie es später erneut oder kontaktieren Sie den Support\nVorübergehender Netzwerkfehler · Warten Sie auf die nächste Prüfung oder versuchen Sie die Anmeldung erneut\n\nInformationen für die Anmeldung\n\nDer Server empfängt eine verifizierte Telegram-ID und verfügbare Profilfelder, um das Konto zu erstellen. Ein öffentlicher Benutzername allein ist kein Identitätsnachweis.\n\nDer Bot fragt nicht nach Ihrem Telegram-Passwort, Bankcodes, CVV, Seed-Phrase oder privaten Schlüsseln.\n\nAuthentifizierungs-API\n\nAnmelden\n\nAssistent, Support und Projektverwaltung\n\nAktivieren Sie „Zugriff auf meine Daten im Chat erlauben“, wenn Sie Hilfe bei privaten Vorgängen benötigen. Eine Webanfrage mit includeAccount=true erfordert eine gültige Sitzung, Origin und X-CSRF-Token; X-Kevmi-Store wählt einen eigenen Store oder alle eigenen Stores aus. Ohne Berechtigung verwendet der Assistent öffentliche Dokumentation. In Telegram aktiviert eine separate Schaltfläche den Zugriff, nachdem der Absender identifiziert wurde.\n\nDas Tool read_account liest eigene Stores, Rechnungen mit bestätigtem Zahlungsstatus, Ereignisse, Anträge und Supportanfragen mit Fachantworten. Es gibt 30 Datensätze und nextPage zurück; ältere Datensätze sind über Paginierung verfügbar. Lesevorgänge pro Antwort sind begrenzt, daher muss eine unvollständige Stichprobe offengelegt werden. API-Schlüssel, Webhook-Geheimnisse, Kartendaten und Sitzungen werden dem Tool nicht bereitgestellt. Es kann keine Zahlungen belasten, auszahlen, erstatten oder Einstellungen ändern.\n\nDas Erstellen einer Supportanfrage im Arbeitsbereich oder in Telegram platziert eine separate Administratorwarnung in einer dauerhaften Warteschlange. Sie verlinkt auf /admin/tickets?ticket=<id>; vorübergehende Telegram-Fehler werden erneut versucht. Die Wiederherstellung nimmt auch ältere offene Anfragen ohne Warnung auf. Administratoren antworten auf der Anfrageseite; die Antwort wird im Benutzerarbeitsbereich gespeichert und über Telegram gesendet, wenn Support-Benachrichtigungen aktiviert sind.\n\nDer Bot verwendet Inline-Schaltflächen für das Hauptmenü, Stores, Benachrichtigungen, Support, Sicherheit und Sprache. Die Navigation bearbeitet die aktuelle Nachricht; ein nicht verfügbares altes Menü wird ersetzt. Zahlungs- und Sicherheitsbenachrichtigungen werden nicht als Wegwerf-Navigation behandelt. Das Abmelden über das Menü erfordert eine Bestätigung. Der explizite Befehl /logout beendet weiterhin jede Kontositzung.\n\nDas Panel /admin/project ist auf Telegram-IDs in der serverseitigen Allowlist MODERATOR_TELEGRAM_IDS beschränkt. Es umfasst Benutzer, Stores, Vorgänge, Schlüsselwiderruf, Deaktivierung von Webhooks, Pausieren von Rechnungen, Annahmesteuerungen und ein Prüfprotokoll. Mutationen erfordern CSRF und einen Grund. Das Panel kann einen Administrator nicht einschränken oder eine Zahlung manuell als erfolgreich erklären. Die Einschränkung eines Eigentümers beendet Sitzungen und blockiert API-Schlüsselzugriff; die Einschränkung eines Stores stoppt neue Vorgänge. Der Verlauf bleibt erhalten.\n\nDas öffentliche Angebot ist unter /public-offer und die Datenschutzrichtlinie unter /privacy-policy in jeder aktivierten Sprache verfügbar. Suchen Sie Münzen nach Name oder Tickersymbol. Ein Netzwerkauswahlfeld erscheint nur, wenn mehrere Live-Netzwerke verfügbar sind. Ein einzelnes Netzwerk wird automatisch ausgewählt und bleibt in der Bestätigung benannt. Die Live-Verfügbarkeit des Gateways bestimmt die wählbaren Paare; der Referenzkatalog aktiviert keinen Dienst.\n\nVerwenden Sie update.sh für routinemäßige Web-App-Veröffentlichungen: Kandidaten bauen, Migrationsverlauf prüfen, SQLite online sichern, einen zweiten Container starten, ihn verifizieren und Caddy elegant umschalten. Gateway, PostgreSQL und Mail werden nicht neu gestartet. Frühere statische Assets bleiben für geöffnete Tabs verfügbar. Eine neue Migration erfordert explizite überprüfte Genehmigung; eine inkompatible Schemaänderung ist keine nahtlose Bereitstellung.\n\nÖffentliches Angebot\n\nDatenschutzrichtlinie",
      "readMinutes": 3
    },
    {
      "id": "settings",
      "title": "Shop-Einstellungen",
      "summary": "Einstellungen: Verknüpfen Sie Ihren Shopnamen, die MwSt-Regel und Benachrichtigungen mit Ihrem verifizierten Konto. Änderungen werden für den aktuellen Benutzer auf dem Server gespeichert.",
      "group": "account",
      "url": "/docs/settings",
      "tags": [
        "Einstellungen",
        "Shop",
        "MwSt-Pflichtiger",
        "Design",
        "Benachrichtigungen"
      ],
      "sections": [
        {
          "id": "name",
          "title": "Shopname",
          "paragraphs": [
            "Wählen Sie einen kurzen, wiedererkennbaren Namen, den Ihr Kunde auf der Bestellung erwartet. Der Name muss nach dem Entfernen umgebender Leerzeichen 1–80 Zeichen enthalten.",
            "Ein Anzeigename ersetzt nicht rechtliche Angaben oder Ihre Kundenvereinbarung. Bewahren Sie Geheimnisse, Zahlungsdaten und personenbezogene Daten anderer aus diesem Feld heraus."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "vat",
          "title": "MwSt-Pflichtiger",
          "paragraphs": [
            "Der Standardzahler ist der Kunde. Die MwSt gilt nur für Karten und Alipay. Das Ändern der Einstellung ändert nicht die SBP- oder Kryptowährungsbeträge.",
            "Bestehende Rechnungen behalten ihre gespeicherten Bedingungen. Beim Erstellen einer Rechnung können unabhängige Kunden-MwSt- und Gebührenanteile von 0 bis 100 % die Standardwerte überschreiben. Die Shopeinstellung liefert nur einen Standardwert für zukünftige Rechnungen.",
            "Eine gespeicherte Einstellung erweitert nicht die Gateway-Fähigkeiten. Die aktuellen Live-Karten- und Alipay-Kanäle erfordern 100 % Kunden-MwSt und 0 % Kundenbearbeitungsgebühr; andere gespeicherte Anteile bleiben Berechnungen."
          ],
          "bullets": [],
          "steps": [],
          "table": {
            "headers": [
              "Wert",
              "Regel für eine neue Rechnung"
            ],
            "rows": [
              [
                "Kunde",
                "Die MwSt wird zum Basispreis des Kunden hinzugefügt"
              ],
              [
                "Händler",
                "Der Händler trägt die MwSt aus dem Basispreis"
              ]
            ]
          },
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "notifications",
          "title": "Telegram-Benachrichtigungen",
          "paragraphs": [
            "Wählen Sie Zahlungs-, Auszahlungs-, Support- und Sicherheitskategorien. Die Auswahl einer Kategorie steuert Benachrichtigungen; sie aktiviert keinen Zahlungskanal und erzeugt keine Finanzereignisse.",
            "Eine Testnachricht prüft die Zustellung an den verknüpften privaten Chat. Ihr Status erscheint im Benachrichtigungszentrum und in GET /api/notifications. Eine in der Warteschlange befindliche Nachricht ist noch nicht zugestellt; überprüfen Sie auch Telegram."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": [
            {
              "label": "Benachrichtigungsleitfaden",
              "href": "/docs/notifications"
            }
          ]
        },
        {
          "id": "saving",
          "title": "Speichern und Fehler",
          "paragraphs": [
            "Das Formular bestätigt ein abgeschlossenes Speichern. Wenn das Netzwerk ausfällt, bleibt Ihre Eingabe für einen erneuten Versuch verfügbar; das bloße Drücken von „Speichern“ beweist nicht, dass die Änderung gespeichert wurde.",
            "Melden Sie sich erneut an, wenn Ihre Sitzung abläuft. Der Server identifiziert das Konto über die Sitzung und akzeptiert keine andere Shop-Besitzer-ID aus dem Browser."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "local",
          "title": "Design und Demodaten",
          "paragraphs": [
            "Das Anzeigedesign wird lokal auf dem Gerät gespeichert. Der Demo-Arbeitsbereich verwendet separate Browserdaten und ändert nicht das Serverkonto.",
            "Das Zurücksetzen der Demo entfernt nur Testdatensätze in diesem Browser. Ein Demo-Export ist kein Kontoauszug und kein Zahlungsnachweis."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "stores-usd",
          "title": "Mehrere Geschäfte und ein USD-Basispreis",
          "paragraphs": [
            "Wählen Sie Alle Geschäfte für aggregierte Analysen und Betrieb, oder wählen Sie ein Geschäft für dessen eigene Aufzeichnungen. Jedes Geschäft hat eine separate storeId, einen Namen, einen MwSt-Standardwert, Rechnungen, API-Schlüssel, Webhook-Endpunkte, Ereignisverlauf und Website-Anwendung. Benachrichtigungen und Support-Tickets gehören zum Konto. Ein Konto kann bis zu 100 Geschäfte erstellen. Vorhandene Datensätze verbleiben im ersten Geschäft.",
            "Neue Workspace-Rechnungen verwenden pricingMode=\"universal\" und einen USD-Basispreis. Any umfasst Karte, Alipay, SBP und Krypto; ein Händler kann eine Teilmenge auswählen. Karten und Alipay berechnen USD. SBP berechnet RUB unter Verwendung des USD/RUB-Referenzkurses der Bank von Russland. Krypto berechnet USDT gemäß der expliziten Rechnungsregel 1 USD = 1 USDT. Dies ist eine Rechnungsumrechnungsregel, kein Markt-USDT-Kurs. Das Gateway liefert den Kurs der ausgewählten Münze, den genauen Überweisungsbetrag und Anweisungen vor der Überweisung.",
            "Der Referenzkurs und beide Beträge werden bei der Erstellung eingefroren. Rechnungen mit RUB-Umrechnung verfallen innerhalb von 24 Stunden. Wenn der Referenzkurs nicht abgerufen werden kann, schlägt die Erstellung mit FX_UNAVAILABLE fehl; es wird kein erfundener oder veralteter Ersatzkurs verwendet. Der Basisbetrag Minor und Angebote verwenden die USD-Buchungswährung. quotes[method].settlement enthält das native Belastungsangebot. Der öffentliche Checkout legt die ausgewählte Belastungswährung in currency, den ursprünglichen Preis in baseAmountMinor/baseCurrency und den Referenzkurs in fx offen. Sobald eine Zahlung ausgelöst wurde, kann ihre Methode nicht geändert werden; eine Rechnung hat einen Gateway-Vorgang.",
            "Erstellen Sie einen API-Schlüssel im vorgesehenen Geschäft und senden Sie Authorization: Bearer <key> von Ihrem Server. Seine Geschäftsbindung ist unveränderlich; X-Kevmi-Store kann ihm keinen Zugriff auf ein anderes Geschäft gewähren. Browser-Sitzungen wählen X-Kevmi-Store: <storeId>; wenn es weggelassen wird, wird das erste Geschäft ausgewählt. Der Wert all wird nur von GET /api/account/dashboard und GET /api/payment-links akzeptiert. Mutationen erfordern ein ausgewähltes Geschäft, Origin und X-CSRF-Token. Konto-IDs und Geschäfts-IDs sind unterschiedliche Kennungen.",
            "Aus Kompatibilitätsgründen behalten API-Anfragen ohne pricingMode=\"universal\" native Preise und die ursprünglichen Währungsbeschränkungen bei. Bestehende Rechnungen werden nie neu berechnet. Bestätigte Zahlungseingänge in Analysen spiegeln verifizierte Zahlungen abzüglich gespeicherter Rechnungsausgaben wider; sie sind kein abhebbarer Saldo. Legacy-Rechnungswährungen bleiben getrennt, und Auszahlungen werden mit dem Support vereinbart. Führen Sie eine Bestellung erst aus, nachdem Sie payment.fulfillmentReady=true und payment.status=\"succeeded\" über die Server-API, den Ereignisverlauf oder einen signierten Webhook geprüft haben."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "assistant-admin-v16",
          "title": "Assistent, Support und Projektverwaltung",
          "paragraphs": [
            "Aktivieren Sie „Zugriff auf meine Daten im Chat erlauben“, wenn Sie Hilfe bei privaten Vorgängen benötigen. Eine Webanfrage mit includeAccount=true erfordert eine gültige Sitzung, Origin und X-CSRF-Token; X-Kevmi-Store wählt einen eigenen Store oder alle eigenen Stores aus. Ohne Berechtigung verwendet der Assistent öffentliche Dokumentation. In Telegram aktiviert eine separate Schaltfläche den Zugriff, nachdem der Absender identifiziert wurde.",
            "Das Tool read_account liest eigene Stores, Rechnungen mit bestätigtem Zahlungsstatus, Ereignisse, Anträge und Supportanfragen mit Fachantworten. Es gibt 30 Datensätze und nextPage zurück; ältere Datensätze sind über Paginierung verfügbar. Lesevorgänge pro Antwort sind begrenzt, daher muss eine unvollständige Stichprobe offengelegt werden. API-Schlüssel, Webhook-Geheimnisse, Kartendaten und Sitzungen werden dem Tool nicht bereitgestellt. Es kann keine Zahlungen belasten, auszahlen, erstatten oder Einstellungen ändern.",
            "Das Erstellen einer Supportanfrage im Arbeitsbereich oder in Telegram platziert eine separate Administratorwarnung in einer dauerhaften Warteschlange. Sie verlinkt auf /admin/tickets?ticket=<id>; vorübergehende Telegram-Fehler werden erneut versucht. Die Wiederherstellung nimmt auch ältere offene Anfragen ohne Warnung auf. Administratoren antworten auf der Anfrageseite; die Antwort wird im Benutzerarbeitsbereich gespeichert und über Telegram gesendet, wenn Support-Benachrichtigungen aktiviert sind.",
            "Der Bot verwendet Inline-Schaltflächen für das Hauptmenü, Stores, Benachrichtigungen, Support, Sicherheit und Sprache. Die Navigation bearbeitet die aktuelle Nachricht; ein nicht verfügbares altes Menü wird ersetzt. Zahlungs- und Sicherheitsbenachrichtigungen werden nicht als Wegwerf-Navigation behandelt. Das Abmelden über das Menü erfordert eine Bestätigung. Der explizite Befehl /logout beendet weiterhin jede Kontositzung.",
            "Das Panel /admin/project ist auf Telegram-IDs in der serverseitigen Allowlist MODERATOR_TELEGRAM_IDS beschränkt. Es umfasst Benutzer, Stores, Vorgänge, Schlüsselwiderruf, Deaktivierung von Webhooks, Pausieren von Rechnungen, Annahmesteuerungen und ein Prüfprotokoll. Mutationen erfordern CSRF und einen Grund. Das Panel kann einen Administrator nicht einschränken oder eine Zahlung manuell als erfolgreich erklären. Die Einschränkung eines Eigentümers beendet Sitzungen und blockiert API-Schlüsselzugriff; die Einschränkung eines Stores stoppt neue Vorgänge. Der Verlauf bleibt erhalten.",
            "Das öffentliche Angebot ist unter /public-offer und die Datenschutzrichtlinie unter /privacy-policy in jeder aktivierten Sprache verfügbar. Suchen Sie Münzen nach Name oder Tickersymbol. Ein Netzwerkauswahlfeld erscheint nur, wenn mehrere Live-Netzwerke verfügbar sind. Ein einzelnes Netzwerk wird automatisch ausgewählt und bleibt in der Bestätigung benannt. Die Live-Verfügbarkeit des Gateways bestimmt die wählbaren Paare; der Referenzkatalog aktiviert keinen Dienst.",
            "Verwenden Sie update.sh für routinemäßige Web-App-Veröffentlichungen: Kandidaten bauen, Migrationsverlauf prüfen, SQLite online sichern, einen zweiten Container starten, ihn verifizieren und Caddy elegant umschalten. Gateway, PostgreSQL und Mail werden nicht neu gestartet. Frühere statische Assets bleiben für geöffnete Tabs verfügbar. Eine neue Migration erfordert explizite überprüfte Genehmigung; eine inkompatible Schemaänderung ist keine nahtlose Bereitstellung."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": [
            {
              "label": "Öffentliches Angebot",
              "href": "/public-offer"
            },
            {
              "label": "Datenschutzrichtlinie",
              "href": "/privacy-policy"
            }
          ]
        }
      ],
      "body": "Shopname\n\nWählen Sie einen kurzen, wiedererkennbaren Namen, den Ihr Kunde auf der Bestellung erwartet. Der Name muss nach dem Entfernen umgebender Leerzeichen 1–80 Zeichen enthalten.\n\nEin Anzeigename ersetzt nicht rechtliche Angaben oder Ihre Kundenvereinbarung. Bewahren Sie Geheimnisse, Zahlungsdaten und personenbezogene Daten anderer aus diesem Feld heraus.\n\nMwSt-Pflichtiger\n\nDer Standardzahler ist der Kunde. Die MwSt gilt nur für Karten und Alipay. Das Ändern der Einstellung ändert nicht die SBP- oder Kryptowährungsbeträge.\n\nBestehende Rechnungen behalten ihre gespeicherten Bedingungen. Beim Erstellen einer Rechnung können unabhängige Kunden-MwSt- und Gebührenanteile von 0 bis 100 % die Standardwerte überschreiben. Die Shopeinstellung liefert nur einen Standardwert für zukünftige Rechnungen.\n\nEine gespeicherte Einstellung erweitert nicht die Gateway-Fähigkeiten. Die aktuellen Live-Karten- und Alipay-Kanäle erfordern 100 % Kunden-MwSt und 0 % Kundenbearbeitungsgebühr; andere gespeicherte Anteile bleiben Berechnungen.\n\nWert · Regel für eine neue Rechnung\nKunde · Die MwSt wird zum Basispreis des Kunden hinzugefügt\nHändler · Der Händler trägt die MwSt aus dem Basispreis\n\nTelegram-Benachrichtigungen\n\nWählen Sie Zahlungs-, Auszahlungs-, Support- und Sicherheitskategorien. Die Auswahl einer Kategorie steuert Benachrichtigungen; sie aktiviert keinen Zahlungskanal und erzeugt keine Finanzereignisse.\n\nEine Testnachricht prüft die Zustellung an den verknüpften privaten Chat. Ihr Status erscheint im Benachrichtigungszentrum und in GET /api/notifications. Eine in der Warteschlange befindliche Nachricht ist noch nicht zugestellt; überprüfen Sie auch Telegram.\n\nBenachrichtigungsleitfaden\n\nSpeichern und Fehler\n\nDas Formular bestätigt ein abgeschlossenes Speichern. Wenn das Netzwerk ausfällt, bleibt Ihre Eingabe für einen erneuten Versuch verfügbar; das bloße Drücken von „Speichern“ beweist nicht, dass die Änderung gespeichert wurde.\n\nMelden Sie sich erneut an, wenn Ihre Sitzung abläuft. Der Server identifiziert das Konto über die Sitzung und akzeptiert keine andere Shop-Besitzer-ID aus dem Browser.\n\nDesign und Demodaten\n\nDas Anzeigedesign wird lokal auf dem Gerät gespeichert. Der Demo-Arbeitsbereich verwendet separate Browserdaten und ändert nicht das Serverkonto.\n\nDas Zurücksetzen der Demo entfernt nur Testdatensätze in diesem Browser. Ein Demo-Export ist kein Kontoauszug und kein Zahlungsnachweis.\n\nMehrere Geschäfte und ein USD-Basispreis\n\nWählen Sie Alle Geschäfte für aggregierte Analysen und Betrieb, oder wählen Sie ein Geschäft für dessen eigene Aufzeichnungen. Jedes Geschäft hat eine separate storeId, einen Namen, einen MwSt-Standardwert, Rechnungen, API-Schlüssel, Webhook-Endpunkte, Ereignisverlauf und Website-Anwendung. Benachrichtigungen und Support-Tickets gehören zum Konto. Ein Konto kann bis zu 100 Geschäfte erstellen. Vorhandene Datensätze verbleiben im ersten Geschäft.\n\nNeue Workspace-Rechnungen verwenden pricingMode=\"universal\" und einen USD-Basispreis. Any umfasst Karte, Alipay, SBP und Krypto; ein Händler kann eine Teilmenge auswählen. Karten und Alipay berechnen USD. SBP berechnet RUB unter Verwendung des USD/RUB-Referenzkurses der Bank von Russland. Krypto berechnet USDT gemäß der expliziten Rechnungsregel 1 USD = 1 USDT. Dies ist eine Rechnungsumrechnungsregel, kein Markt-USDT-Kurs. Das Gateway liefert den Kurs der ausgewählten Münze, den genauen Überweisungsbetrag und Anweisungen vor der Überweisung.\n\nDer Referenzkurs und beide Beträge werden bei der Erstellung eingefroren. Rechnungen mit RUB-Umrechnung verfallen innerhalb von 24 Stunden. Wenn der Referenzkurs nicht abgerufen werden kann, schlägt die Erstellung mit FX_UNAVAILABLE fehl; es wird kein erfundener oder veralteter Ersatzkurs verwendet. Der Basisbetrag Minor und Angebote verwenden die USD-Buchungswährung. quotes[method].settlement enthält das native Belastungsangebot. Der öffentliche Checkout legt die ausgewählte Belastungswährung in currency, den ursprünglichen Preis in baseAmountMinor/baseCurrency und den Referenzkurs in fx offen. Sobald eine Zahlung ausgelöst wurde, kann ihre Methode nicht geändert werden; eine Rechnung hat einen Gateway-Vorgang.\n\nErstellen Sie einen API-Schlüssel im vorgesehenen Geschäft und senden Sie Authorization: Bearer <key> von Ihrem Server. Seine Geschäftsbindung ist unveränderlich; X-Kevmi-Store kann ihm keinen Zugriff auf ein anderes Geschäft gewähren. Browser-Sitzungen wählen X-Kevmi-Store: <storeId>; wenn es weggelassen wird, wird das erste Geschäft ausgewählt. Der Wert all wird nur von GET /api/account/dashboard und GET /api/payment-links akzeptiert. Mutationen erfordern ein ausgewähltes Geschäft, Origin und X-CSRF-Token. Konto-IDs und Geschäfts-IDs sind unterschiedliche Kennungen.\n\nAus Kompatibilitätsgründen behalten API-Anfragen ohne pricingMode=\"universal\" native Preise und die ursprünglichen Währungsbeschränkungen bei. Bestehende Rechnungen werden nie neu berechnet. Bestätigte Zahlungseingänge in Analysen spiegeln verifizierte Zahlungen abzüglich gespeicherter Rechnungsausgaben wider; sie sind kein abhebbarer Saldo. Legacy-Rechnungswährungen bleiben getrennt, und Auszahlungen werden mit dem Support vereinbart. Führen Sie eine Bestellung erst aus, nachdem Sie payment.fulfillmentReady=true und payment.status=\"succeeded\" über die Server-API, den Ereignisverlauf oder einen signierten Webhook geprüft haben.\n\nAssistent, Support und Projektverwaltung\n\nAktivieren Sie „Zugriff auf meine Daten im Chat erlauben“, wenn Sie Hilfe bei privaten Vorgängen benötigen. Eine Webanfrage mit includeAccount=true erfordert eine gültige Sitzung, Origin und X-CSRF-Token; X-Kevmi-Store wählt einen eigenen Store oder alle eigenen Stores aus. Ohne Berechtigung verwendet der Assistent öffentliche Dokumentation. In Telegram aktiviert eine separate Schaltfläche den Zugriff, nachdem der Absender identifiziert wurde.\n\nDas Tool read_account liest eigene Stores, Rechnungen mit bestätigtem Zahlungsstatus, Ereignisse, Anträge und Supportanfragen mit Fachantworten. Es gibt 30 Datensätze und nextPage zurück; ältere Datensätze sind über Paginierung verfügbar. Lesevorgänge pro Antwort sind begrenzt, daher muss eine unvollständige Stichprobe offengelegt werden. API-Schlüssel, Webhook-Geheimnisse, Kartendaten und Sitzungen werden dem Tool nicht bereitgestellt. Es kann keine Zahlungen belasten, auszahlen, erstatten oder Einstellungen ändern.\n\nDas Erstellen einer Supportanfrage im Arbeitsbereich oder in Telegram platziert eine separate Administratorwarnung in einer dauerhaften Warteschlange. Sie verlinkt auf /admin/tickets?ticket=<id>; vorübergehende Telegram-Fehler werden erneut versucht. Die Wiederherstellung nimmt auch ältere offene Anfragen ohne Warnung auf. Administratoren antworten auf der Anfrageseite; die Antwort wird im Benutzerarbeitsbereich gespeichert und über Telegram gesendet, wenn Support-Benachrichtigungen aktiviert sind.\n\nDer Bot verwendet Inline-Schaltflächen für das Hauptmenü, Stores, Benachrichtigungen, Support, Sicherheit und Sprache. Die Navigation bearbeitet die aktuelle Nachricht; ein nicht verfügbares altes Menü wird ersetzt. Zahlungs- und Sicherheitsbenachrichtigungen werden nicht als Wegwerf-Navigation behandelt. Das Abmelden über das Menü erfordert eine Bestätigung. Der explizite Befehl /logout beendet weiterhin jede Kontositzung.\n\nDas Panel /admin/project ist auf Telegram-IDs in der serverseitigen Allowlist MODERATOR_TELEGRAM_IDS beschränkt. Es umfasst Benutzer, Stores, Vorgänge, Schlüsselwiderruf, Deaktivierung von Webhooks, Pausieren von Rechnungen, Annahmesteuerungen und ein Prüfprotokoll. Mutationen erfordern CSRF und einen Grund. Das Panel kann einen Administrator nicht einschränken oder eine Zahlung manuell als erfolgreich erklären. Die Einschränkung eines Eigentümers beendet Sitzungen und blockiert API-Schlüsselzugriff; die Einschränkung eines Stores stoppt neue Vorgänge. Der Verlauf bleibt erhalten.\n\nDas öffentliche Angebot ist unter /public-offer und die Datenschutzrichtlinie unter /privacy-policy in jeder aktivierten Sprache verfügbar. Suchen Sie Münzen nach Name oder Tickersymbol. Ein Netzwerkauswahlfeld erscheint nur, wenn mehrere Live-Netzwerke verfügbar sind. Ein einzelnes Netzwerk wird automatisch ausgewählt und bleibt in der Bestätigung benannt. Die Live-Verfügbarkeit des Gateways bestimmt die wählbaren Paare; der Referenzkatalog aktiviert keinen Dienst.\n\nVerwenden Sie update.sh für routinemäßige Web-App-Veröffentlichungen: Kandidaten bauen, Migrationsverlauf prüfen, SQLite online sichern, einen zweiten Container starten, ihn verifizieren und Caddy elegant umschalten. Gateway, PostgreSQL und Mail werden nicht neu gestartet. Frühere statische Assets bleiben für geöffnete Tabs verfügbar. Eine neue Migration erfordert explizite überprüfte Genehmigung; eine inkompatible Schemaänderung ist keine nahtlose Bereitstellung.\n\nÖffentliches Angebot\n\nDatenschutzrichtlinie",
      "readMinutes": 3
    },
    {
      "id": "notifications",
      "title": "Website- und Telegram-Benachrichtigungen",
      "summary": "Kontoereignisse erscheinen unter der Glocke in der oberen Leiste. Lesen Sie Benachrichtigungen, überprüfen Sie die Telegram-Zustellung und öffnen Sie den relevanten Teil Ihres Arbeitsbereichs.",
      "group": "account",
      "url": "/docs/notifications",
      "tags": [
        "Benachrichtigungen",
        "Telegram",
        "Glocke",
        "lesen",
        "Zustellung"
      ],
      "sections": [
        {
          "id": "inbox",
          "title": "Benachrichtigungszentrum",
          "paragraphs": [
            "Das Abzeichen zählt ungelesene Kontoereignisse. Nachrichten werden nach Datum gruppiert; „Mehr laden“ ruft ältere Datensätze ab. Besucher werden aufgefordert, sich anzumelden.",
            "Der Lesestatus wird auf dem Server gespeichert. Sichtbare Seiten aktualisieren sich automatisch und offene Registerkarten synchronisieren Lesemarkierungen. Ereignisse, die neuer sind als die zuletzt angezeigte Nachricht, werden nicht zusammen mit äleren als gelesen markiert."
          ],
          "bullets": [],
          "steps": [
            "Wählen Sie die Glocke in der oberen Leiste.",
            "Wählen Sie alle Ereignisse oder nur ungelesene.",
            "Öffnen Sie die zugehörige Seite oder markieren Sie eine Nachricht als gelesen.",
            "Verwenden Sie „Alle als gelesen markieren“ für bereits geladene Ereignisse."
          ],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "types",
          "title": "Ereigniskategorien",
          "paragraphs": [
            "Support und Sicherheit sind für ein neues Konto aktiviert; Zahlungskategorien werden vom Benutzer ausgewählt. Das Zentrum zeigt gespeicherte Ereignisse für aktivierte Kategorien. Browser-Demo-Ereignisse sind keine echten Geld-Benachrichtigungen."
          ],
          "bullets": [],
          "steps": [],
          "table": {
            "headers": [
              "Kategorie",
              "Inhalt"
            ],
            "rows": [
              [
                "Zahlungen",
                "Bestätigte Zahlungsereignisse"
              ],
              [
                "Auszahlungen",
                "Bestätigte Auszahlungsereignisse"
              ],
              [
                "Support",
                "Supportanfragen und Antragsstatus-Updates"
              ],
              [
                "Sicherheit",
                "Eine neue verifizierte Anmeldung"
              ],
              [
                "Test",
                "Zustellungsprüfung an Ihr Telegram"
              ]
            ]
          },
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "setup",
          "title": "Konfiguration der Zustellung",
          "paragraphs": [
            "Tests sind auf drei pro Konto und Stunde begrenzt. Ein Test ändert keinen Kontostand und erstellt keine Zahlung. Das Einstellen einer Nachricht in die Warteschlange beweist keine Zustellung."
          ],
          "bullets": [],
          "steps": [
            "Melden Sie sich mit Telegram an und öffnen Sie Konto → Benachrichtigungen.",
            "Aktivieren Sie die gewünschten Kategorien und speichern Sie.",
            "Wählen Sie „Testzustellung“.",
            "Überprüfen Sie den Status im Zentrum und den privaten Chat des Bots."
          ],
          "table": null,
          "code": null,
          "note": "",
          "links": [
            {
              "label": "Benachrichtigungseinstellungen",
              "href": "/account#notifications"
            }
          ]
        },
        {
          "id": "statuses",
          "title": "Zustellung und Lesestatus sind getrennt",
          "paragraphs": [
            "Die Zustellung hängt von der Verfügbarkeit von Telegram und den Benutzerberechtigungen ab. Eine verlorene Antwort kann zu einer wiederholten Nachricht führen, aber nicht zu einer wiederholten Finanzoperation.",
            "Wenn die Zustellung fehlschlägt, prüfen Sie, ob der Bot erreichbar und nicht blockiert ist. Wiederholungsversuche für Anwendungsbenachrichtigungen laufen auch als Hintergrundaufträge; Dienstinteraktionen können andere in der Warteschlange befindliche Zustellungen auslösen. Prüfen Sie das Benachrichtigungszentrum für den aktuellen Status."
          ],
          "bullets": [],
          "steps": [],
          "table": {
            "headers": [
              "Status",
              "Bedeutung"
            ],
            "rows": [
              [
                "ausstehend",
                "Zur Verarbeitung in der Warteschlange"
              ],
              [
                "wird gesendet",
                "Der Server versucht die Zustellung"
              ],
              [
                "gesendet",
                "Telegram hat das Senden bestätigt"
              ],
              [
                "fehlgeschlagen",
                "Zustellung fehlgeschlagen"
              ]
            ]
          },
          "code": null,
          "note": "Der Zustellstatus der Nachricht bezieht sich auf Telegram. Das Markieren einer Benachrichtigung als gelesen auf der Website bedeutet nicht, dass sie in Telegram gelesen wurde, und ändert die Zustellung nicht.",
          "links": []
        },
        {
          "id": "feedback",
          "title": "Aktionsbestätigungen",
          "paragraphs": [
            "Die Website zeigt nach einem abgeschlossenen Speichern, einem neuen Link oder einer ähnlichen Aktion eine kurze Benachrichtigung an. Sie schließt sich automatisch und bleibt länger offen, wenn sie überfahren oder fokussiert wird.",
            "Dies bestätigt die Schnittstellenaktion. Es ersetzt keinen bestätigten Finanzstatus und erstellt keinen Zahlungsdatensatz. Feldfehler bleiben neben dem Formular sichtbar."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "api",
          "title": "Lesen und Markieren über die API",
          "paragraphs": [
            "GET /api/notifications liefert bis zu 30 Kontovorgänge, unreadCount und nextCursor. Geben Sie nextCursor unverändert als cursor weiter, um eine weitere Seite zu laden. unread=1 wählt ungelesene Einträge aus. Die Sortierreihenfolge ist createdAt absteigend, dann id absteigend.",
            "PATCH /api/notifications/read akzeptiert entweder 1–100 ids oder all:true mit before, das auf den Zeitstempel in Millisekunden des zuletzt angezeigten Ereignisses gesetzt ist. Eine Sitzung, Origin und X-CSRF-Token sind erforderlich. Der Client kann den Datensatzbesitzer nicht festlegen.",
            "Die Antwort enthält updated, readAt und unreadCount. Das Lesen eines bereits gelesenen Ereignisses behält dessen ursprüngliches readAt. Das Auflisten von Ereignissen markiert sie nicht als gelesen; Telegram-Status und sentAt bleiben unverändert."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": {
            "language": "JSON · mark selected",
            "code": "{\n  \"ids\": [\"ntf_46d94180-492e-4c28-b15f-a70049161a63\"]\n}"
          },
          "note": "",
          "links": [
            {
              "label": "API-Referenz",
              "href": "/docs/api-reference"
            }
          ]
        },
        {
          "id": "commands",
          "title": "Bot-Befehle",
          "paragraphs": [],
          "bullets": [],
          "steps": [],
          "table": {
            "headers": [
              "Befehl",
              "Maßnahme"
            ],
            "rows": [
              [
                "/notifications",
                "Kategorien verwalten"
              ],
              [
                "/stop",
                "Benachrichtigungen deaktivieren"
              ],
              [
                "/help",
                "Verfügbare Befehle auflisten"
              ],
              [
                "/logout",
                "Alle Kontositzungen beenden"
              ]
            ]
          },
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "availability",
          "title": "Funktionsverfügbarkeit",
          "paragraphs": [
            "Das Benachrichtigungszentrum erfordert eine Anmeldung. Telegram-Nachrichten werden an den verifizierten privaten Bot-Chat gesendet. Wenn die Zustellung nicht verfügbar ist, prüfen Sie die Bot-Berechtigungen und den Nachrichtenstatus.",
            "Eine Zahlungs- oder Auszahlungsbenachrichtigung basiert auf einem bestätigten Serverereignis. Die Auswahl einer Kategorie ändert die Zustellpräferenzen, nicht die Verfügbarkeit von Transaktionen."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "assistant-admin-v16",
          "title": "Assistent, Support und Projektverwaltung",
          "paragraphs": [
            "Aktivieren Sie „Zugriff auf meine Daten im Chat erlauben“, wenn Sie Hilfe bei privaten Vorgängen benötigen. Eine Webanfrage mit includeAccount=true erfordert eine gültige Sitzung, Origin und X-CSRF-Token; X-Kevmi-Store wählt einen eigenen Store oder alle eigenen Stores aus. Ohne Berechtigung verwendet der Assistent öffentliche Dokumentation. In Telegram aktiviert eine separate Schaltfläche den Zugriff, nachdem der Absender identifiziert wurde.",
            "Das Tool read_account liest eigene Stores, Rechnungen mit bestätigtem Zahlungsstatus, Ereignisse, Anträge und Supportanfragen mit Fachantworten. Es gibt 30 Datensätze und nextPage zurück; ältere Datensätze sind über Paginierung verfügbar. Lesevorgänge pro Antwort sind begrenzt, daher muss eine unvollständige Stichprobe offengelegt werden. API-Schlüssel, Webhook-Geheimnisse, Kartendaten und Sitzungen werden dem Tool nicht bereitgestellt. Es kann keine Zahlungen belasten, auszahlen, erstatten oder Einstellungen ändern.",
            "Das Erstellen einer Supportanfrage im Arbeitsbereich oder in Telegram platziert eine separate Administratorwarnung in einer dauerhaften Warteschlange. Sie verlinkt auf /admin/tickets?ticket=<id>; vorübergehende Telegram-Fehler werden erneut versucht. Die Wiederherstellung nimmt auch ältere offene Anfragen ohne Warnung auf. Administratoren antworten auf der Anfrageseite; die Antwort wird im Benutzerarbeitsbereich gespeichert und über Telegram gesendet, wenn Support-Benachrichtigungen aktiviert sind.",
            "Der Bot verwendet Inline-Schaltflächen für das Hauptmenü, Stores, Benachrichtigungen, Support, Sicherheit und Sprache. Die Navigation bearbeitet die aktuelle Nachricht; ein nicht verfügbares altes Menü wird ersetzt. Zahlungs- und Sicherheitsbenachrichtigungen werden nicht als Wegwerf-Navigation behandelt. Das Abmelden über das Menü erfordert eine Bestätigung. Der explizite Befehl /logout beendet weiterhin jede Kontositzung.",
            "Das Panel /admin/project ist auf Telegram-IDs in der serverseitigen Allowlist MODERATOR_TELEGRAM_IDS beschränkt. Es umfasst Benutzer, Stores, Vorgänge, Schlüsselwiderruf, Deaktivierung von Webhooks, Pausieren von Rechnungen, Annahmesteuerungen und ein Prüfprotokoll. Mutationen erfordern CSRF und einen Grund. Das Panel kann einen Administrator nicht einschränken oder eine Zahlung manuell als erfolgreich erklären. Die Einschränkung eines Eigentümers beendet Sitzungen und blockiert API-Schlüsselzugriff; die Einschränkung eines Stores stoppt neue Vorgänge. Der Verlauf bleibt erhalten.",
            "Das öffentliche Angebot ist unter /public-offer und die Datenschutzrichtlinie unter /privacy-policy in jeder aktivierten Sprache verfügbar. Suchen Sie Münzen nach Name oder Tickersymbol. Ein Netzwerkauswahlfeld erscheint nur, wenn mehrere Live-Netzwerke verfügbar sind. Ein einzelnes Netzwerk wird automatisch ausgewählt und bleibt in der Bestätigung benannt. Die Live-Verfügbarkeit des Gateways bestimmt die wählbaren Paare; der Referenzkatalog aktiviert keinen Dienst.",
            "Verwenden Sie update.sh für routinemäßige Web-App-Veröffentlichungen: Kandidaten bauen, Migrationsverlauf prüfen, SQLite online sichern, einen zweiten Container starten, ihn verifizieren und Caddy elegant umschalten. Gateway, PostgreSQL und Mail werden nicht neu gestartet. Frühere statische Assets bleiben für geöffnete Tabs verfügbar. Eine neue Migration erfordert explizite überprüfte Genehmigung; eine inkompatible Schemaänderung ist keine nahtlose Bereitstellung."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": [
            {
              "label": "Öffentliches Angebot",
              "href": "/public-offer"
            },
            {
              "label": "Datenschutzrichtlinie",
              "href": "/privacy-policy"
            }
          ]
        }
      ],
      "body": "Benachrichtigungszentrum\n\nDas Abzeichen zählt ungelesene Kontoereignisse. Nachrichten werden nach Datum gruppiert; „Mehr laden“ ruft ältere Datensätze ab. Besucher werden aufgefordert, sich anzumelden.\n\nDer Lesestatus wird auf dem Server gespeichert. Sichtbare Seiten aktualisieren sich automatisch und offene Registerkarten synchronisieren Lesemarkierungen. Ereignisse, die neuer sind als die zuletzt angezeigte Nachricht, werden nicht zusammen mit äleren als gelesen markiert.\n\nWählen Sie die Glocke in der oberen Leiste.\n\nWählen Sie alle Ereignisse oder nur ungelesene.\n\nÖffnen Sie die zugehörige Seite oder markieren Sie eine Nachricht als gelesen.\n\nVerwenden Sie „Alle als gelesen markieren“ für bereits geladene Ereignisse.\n\nEreigniskategorien\n\nSupport und Sicherheit sind für ein neues Konto aktiviert; Zahlungskategorien werden vom Benutzer ausgewählt. Das Zentrum zeigt gespeicherte Ereignisse für aktivierte Kategorien. Browser-Demo-Ereignisse sind keine echten Geld-Benachrichtigungen.\n\nKategorie · Inhalt\nZahlungen · Bestätigte Zahlungsereignisse\nAuszahlungen · Bestätigte Auszahlungsereignisse\nSupport · Supportanfragen und Antragsstatus-Updates\nSicherheit · Eine neue verifizierte Anmeldung\nTest · Zustellungsprüfung an Ihr Telegram\n\nKonfiguration der Zustellung\n\nTests sind auf drei pro Konto und Stunde begrenzt. Ein Test ändert keinen Kontostand und erstellt keine Zahlung. Das Einstellen einer Nachricht in die Warteschlange beweist keine Zustellung.\n\nMelden Sie sich mit Telegram an und öffnen Sie Konto → Benachrichtigungen.\n\nAktivieren Sie die gewünschten Kategorien und speichern Sie.\n\nWählen Sie „Testzustellung“.\n\nÜberprüfen Sie den Status im Zentrum und den privaten Chat des Bots.\n\nBenachrichtigungseinstellungen\n\nZustellung und Lesestatus sind getrennt\n\nDie Zustellung hängt von der Verfügbarkeit von Telegram und den Benutzerberechtigungen ab. Eine verlorene Antwort kann zu einer wiederholten Nachricht führen, aber nicht zu einer wiederholten Finanzoperation.\n\nWenn die Zustellung fehlschlägt, prüfen Sie, ob der Bot erreichbar und nicht blockiert ist. Wiederholungsversuche für Anwendungsbenachrichtigungen laufen auch als Hintergrundaufträge; Dienstinteraktionen können andere in der Warteschlange befindliche Zustellungen auslösen. Prüfen Sie das Benachrichtigungszentrum für den aktuellen Status.\n\nStatus · Bedeutung\nausstehend · Zur Verarbeitung in der Warteschlange\nwird gesendet · Der Server versucht die Zustellung\ngesendet · Telegram hat das Senden bestätigt\nfehlgeschlagen · Zustellung fehlgeschlagen\n\nDer Zustellstatus der Nachricht bezieht sich auf Telegram. Das Markieren einer Benachrichtigung als gelesen auf der Website bedeutet nicht, dass sie in Telegram gelesen wurde, und ändert die Zustellung nicht.\n\nAktionsbestätigungen\n\nDie Website zeigt nach einem abgeschlossenen Speichern, einem neuen Link oder einer ähnlichen Aktion eine kurze Benachrichtigung an. Sie schließt sich automatisch und bleibt länger offen, wenn sie überfahren oder fokussiert wird.\n\nDies bestätigt die Schnittstellenaktion. Es ersetzt keinen bestätigten Finanzstatus und erstellt keinen Zahlungsdatensatz. Feldfehler bleiben neben dem Formular sichtbar.\n\nLesen und Markieren über die API\n\nGET /api/notifications liefert bis zu 30 Kontovorgänge, unreadCount und nextCursor. Geben Sie nextCursor unverändert als cursor weiter, um eine weitere Seite zu laden. unread=1 wählt ungelesene Einträge aus. Die Sortierreihenfolge ist createdAt absteigend, dann id absteigend.\n\nPATCH /api/notifications/read akzeptiert entweder 1–100 ids oder all:true mit before, das auf den Zeitstempel in Millisekunden des zuletzt angezeigten Ereignisses gesetzt ist. Eine Sitzung, Origin und X-CSRF-Token sind erforderlich. Der Client kann den Datensatzbesitzer nicht festlegen.\n\nDie Antwort enthält updated, readAt und unreadCount. Das Lesen eines bereits gelesenen Ereignisses behält dessen ursprüngliches readAt. Das Auflisten von Ereignissen markiert sie nicht als gelesen; Telegram-Status und sentAt bleiben unverändert.\n\n{\n  \"ids\": [\"ntf_46d94180-492e-4c28-b15f-a70049161a63\"]\n}\n\nAPI-Referenz\n\nBot-Befehle\n\nBefehl · Maßnahme\n/notifications · Kategorien verwalten\n/stop · Benachrichtigungen deaktivieren\n/help · Verfügbare Befehle auflisten\n/logout · Alle Kontositzungen beenden\n\nFunktionsverfügbarkeit\n\nDas Benachrichtigungszentrum erfordert eine Anmeldung. Telegram-Nachrichten werden an den verifizierten privaten Bot-Chat gesendet. Wenn die Zustellung nicht verfügbar ist, prüfen Sie die Bot-Berechtigungen und den Nachrichtenstatus.\n\nEine Zahlungs- oder Auszahlungsbenachrichtigung basiert auf einem bestätigten Serverereignis. Die Auswahl einer Kategorie ändert die Zustellpräferenzen, nicht die Verfügbarkeit von Transaktionen.\n\nAssistent, Support und Projektverwaltung\n\nAktivieren Sie „Zugriff auf meine Daten im Chat erlauben“, wenn Sie Hilfe bei privaten Vorgängen benötigen. Eine Webanfrage mit includeAccount=true erfordert eine gültige Sitzung, Origin und X-CSRF-Token; X-Kevmi-Store wählt einen eigenen Store oder alle eigenen Stores aus. Ohne Berechtigung verwendet der Assistent öffentliche Dokumentation. In Telegram aktiviert eine separate Schaltfläche den Zugriff, nachdem der Absender identifiziert wurde.\n\nDas Tool read_account liest eigene Stores, Rechnungen mit bestätigtem Zahlungsstatus, Ereignisse, Anträge und Supportanfragen mit Fachantworten. Es gibt 30 Datensätze und nextPage zurück; ältere Datensätze sind über Paginierung verfügbar. Lesevorgänge pro Antwort sind begrenzt, daher muss eine unvollständige Stichprobe offengelegt werden. API-Schlüssel, Webhook-Geheimnisse, Kartendaten und Sitzungen werden dem Tool nicht bereitgestellt. Es kann keine Zahlungen belasten, auszahlen, erstatten oder Einstellungen ändern.\n\nDas Erstellen einer Supportanfrage im Arbeitsbereich oder in Telegram platziert eine separate Administratorwarnung in einer dauerhaften Warteschlange. Sie verlinkt auf /admin/tickets?ticket=<id>; vorübergehende Telegram-Fehler werden erneut versucht. Die Wiederherstellung nimmt auch ältere offene Anfragen ohne Warnung auf. Administratoren antworten auf der Anfrageseite; die Antwort wird im Benutzerarbeitsbereich gespeichert und über Telegram gesendet, wenn Support-Benachrichtigungen aktiviert sind.\n\nDer Bot verwendet Inline-Schaltflächen für das Hauptmenü, Stores, Benachrichtigungen, Support, Sicherheit und Sprache. Die Navigation bearbeitet die aktuelle Nachricht; ein nicht verfügbares altes Menü wird ersetzt. Zahlungs- und Sicherheitsbenachrichtigungen werden nicht als Wegwerf-Navigation behandelt. Das Abmelden über das Menü erfordert eine Bestätigung. Der explizite Befehl /logout beendet weiterhin jede Kontositzung.\n\nDas Panel /admin/project ist auf Telegram-IDs in der serverseitigen Allowlist MODERATOR_TELEGRAM_IDS beschränkt. Es umfasst Benutzer, Stores, Vorgänge, Schlüsselwiderruf, Deaktivierung von Webhooks, Pausieren von Rechnungen, Annahmesteuerungen und ein Prüfprotokoll. Mutationen erfordern CSRF und einen Grund. Das Panel kann einen Administrator nicht einschränken oder eine Zahlung manuell als erfolgreich erklären. Die Einschränkung eines Eigentümers beendet Sitzungen und blockiert API-Schlüsselzugriff; die Einschränkung eines Stores stoppt neue Vorgänge. Der Verlauf bleibt erhalten.\n\nDas öffentliche Angebot ist unter /public-offer und die Datenschutzrichtlinie unter /privacy-policy in jeder aktivierten Sprache verfügbar. Suchen Sie Münzen nach Name oder Tickersymbol. Ein Netzwerkauswahlfeld erscheint nur, wenn mehrere Live-Netzwerke verfügbar sind. Ein einzelnes Netzwerk wird automatisch ausgewählt und bleibt in der Bestätigung benannt. Die Live-Verfügbarkeit des Gateways bestimmt die wählbaren Paare; der Referenzkatalog aktiviert keinen Dienst.\n\nVerwenden Sie update.sh für routinemäßige Web-App-Veröffentlichungen: Kandidaten bauen, Migrationsverlauf prüfen, SQLite online sichern, einen zweiten Container starten, ihn verifizieren und Caddy elegant umschalten. Gateway, PostgreSQL und Mail werden nicht neu gestartet. Frühere statische Assets bleiben für geöffnete Tabs verfügbar. Eine neue Migration erfordert explizite überprüfte Genehmigung; eine inkompatible Schemaänderung ist keine nahtlose Bereitstellung.\n\nÖffentliches Angebot\n\nDatenschutzrichtlinie",
      "readMinutes": 4
    },
    {
      "id": "support",
      "title": "Support-Chat und Anfragen",
      "summary": "Der Assistent erklärt Kevmis Bedingungen, findet die richtige Seite und hilft bei Einstellungen. Öffnen Sie den Chat über den runden Button unten rechts. Verwenden Sie für eine kontospezifische Frage eine private Anfrage.",
      "group": "account",
      "url": "/docs/support",
      "tags": [
        "Support",
        "Hilfe",
        "AI",
        "Assistent",
        "Dokumentation",
        "Anfrage",
        "Chat"
      ],
      "sections": [
        {
          "id": "chat",
          "title": "Hilfe zur aktuellen Seite",
          "paragraphs": [
            "Auf Telefonen öffnet sich der Chat in einem kompakten Bereich. Sie können ihn minimieren und erneut öffnen; ein Abzeichen erscheint, wenn eine Antwort eintrifft, während er geschlossen ist.",
            "Der Support öffnet sich auf der aktuellen Seite. Die frühere /help-Adresse leitet zur Startseite mit geöffnetem Chat weiter."
          ],
          "bullets": [],
          "steps": [
            "Wählen Sie den runden Support-Button unten rechts oder stellen Sie Ihre Frage.",
            "Öffnen Sie eine bestehende Unterhaltung oder starten Sie eine neue. Wählen Sie einen Vorschlag oder geben Sie eine Frage ein: Enter sendet; Umschalt + Enter fügt eine Zeile hinzu.",
            "Lesen Sie die Antwort und folgen Sie ihren Dokumentationsquellen.",
            "Minimieren Sie den Chat, um weiterzuarbeiten. Nachrichten und der Entwurf bleiben in diesem Browser."
          ],
          "table": null,
          "code": null,
          "note": "",
          "links": [
            {
              "label": "Support-Chat öffnen",
              "href": "/?support=open"
            }
          ]
        },
        {
          "id": "history",
          "title": "Unterhaltungen, Entwürfe und Verlauf",
          "paragraphs": [
            "Halten Sie jedes Thema in einer separaten Unterhaltung. Durchsuchen Sie den Verlauf nach Titel oder Text, benennen Sie eine Unterhaltung um und pinnen Sie wichtige. Eine neue Unterhaltung bewahrt frühere Chats, und jede behält ihren eigenen Entwurf.",
            "Stellen Sie eine Unterhaltung aus Gelöscht wieder her oder löschen Sie sie nach Bestätigung dauerhaft. Der Verlauf wird im Browser dieses Geräts gespeichert, übersteht Seitenneuladungen und wird nicht zwischen Geräten, Ihrem Konto oder Telegram synchronisiert. Das Löschen von Websitedaten im Browser entfernt den lokalen Verlauf.",
            "Wenn der Browserspeicher nicht verfügbar ist, wird der Chat im Speicher der geöffneten Seite fortgesetzt. Lokale Unterhaltungen sind getrennt von privaten Support-Anfragen, die nach der Anmeldung auf dem Server gespeichert werden."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "knowledge",
          "title": "Worauf Antworten basieren",
          "paragraphs": [
            "Die Website und der Bot verwenden eine versionierte Wissensbasis. Der Server stellt veröffentlichte Leitfäden, strukturierte Preise, Zuteilungs- und Länderfakten, den Seitenkatalog und die tatsächliche Funktionsbereitschaft dem generativen Assistenten bereit. Die Basis umfasst Anwendungen, API-Schlüssel, Widgets und Webhooks.",
            "Antwortquellen beziehen sich nur auf Artikel in dieser Basis. Wenn bestätigte Informationen unzureichend sind, sagt der Assistent dies und schlägt eine spezifischere Frage oder Support-Anfrage vor. Er erfindet keine Länder, Auszahlungszeiten, Limits oder Steuerpflichten."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "context",
          "title": "Folgefragen und Kontext",
          "paragraphs": [
            "Die nächste Frage enthält die letzten drei Frage-Antwort-Paare der ausgewählten Unterhaltung, was Folgefragen wie „Was, wenn der Händler MwSt. zahlt?“ unterstützt. Anderer lokaler Verlauf wird nicht automatisch an die Anfrage angehängt.",
            "Auch ein kurzes Abschnittslabel, wie Preise oder Checkout, wird gesendet. Die URL, Abfrageparameter und das Rechnungs-Token sind ausgeschlossen. Frühere Nachrichten sind nicht vertrauenswürdiger Kontext und werden gegen die Wissensbasis geprüft."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "modes",
          "title": "KI- und Dokumentationssuche",
          "paragraphs": [
            "Der KI-Modus verwendet einen konfigurierten Anbieter, Serverspeicher und ein verfügbares Kontingent. /api/config meldet die Konfigurationsbereitschaft; die Modellkonnektivität wird bei einer Anfrage geprüft. Nicht verfügbare Generierung, erschöpftes Kontingent oder eine ungültige Antwort fallen auf die gekennzeichnete Dokumentationssuche zurück.",
            "Die Suche funktioniert auch ohne ein externes Modell. Private Datensätze erfordern eine ausdrückliche Genehmigung des Eigentümers und sind schreibgeschützt. Ohne Genehmigung sind nur öffentliche Informationen verfügbar. Sie kann keine Gelder belasten, Auszahlungen erstellen oder Einstellungen ändern."
          ],
          "bullets": [],
          "steps": [],
          "table": {
            "headers": [
              "Modus",
              "Verhalten"
            ],
            "rows": [
              [
                "ai",
                "Schreibt eine Antwort aus dem vollständigen veröffentlichten Wissen und verlinkt relevante Leitfäden"
              ],
              [
                "Suche",
                "Liefert passende veröffentlichte Dokumentation zurück"
              ]
            ]
          },
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "question",
          "title": "Eine nützliche Frage stellen",
          "paragraphs": [
            "Zum Beispiel: „Eine Kartenbestellung über 5 $, mit vom Händler gezahlter Mehrwertsteuer. Was erhält der Händler?“ Prüfen Sie die genauen Zahlen im veröffentlichten Rechner.",
            "Das Chat-Feld akzeptiert bis zu 1.800 Zeichen. Wenn die Verbindung fehlschlägt, bleibt die Frage für einen weiteren Versuch im Feld."
          ],
          "bullets": [
            "Benennen Sie die Methode: Karte, SBP, Alipay oder Kryptowährung.",
            "Für eine Berechnung geben Sie den Grundbetrag und beide Kostenanteile des Kunden an: Gebühr und Mehrwertsteuer.",
            "Für einen Fehler nennen Sie Seite, Aktion und angezeigte Meldung.",
            "Senden Sie keine Passwörter, Anmeldecodes, Token, CVV oder Seed-Phrasen."
          ],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "request",
          "title": "Anfrage über die API",
          "paragraphs": [
            "POST /api/support/ask akzeptiert Fragen mit 2–2.000 Zeichen nach dem Trimmen. Optionale history enthält bis zu sechs Nachrichten mit role=user oder role=assistant. Benutzernachrichten akzeptieren 1–1.800 Zeichen und Assistentennachrichten 1–3.000.",
            "Optionale pageContext ist eine Abschnittsbezeichnung mit 1–80 Zeichen, ohne URLs, Token, Abfrageparameter oder Zeilenumbrüche. Optionale locale ist ru, en, es, de oder fr und wählt die Antwortsprache. Englisch ist die Standardsprache; vollständige technische Quellen sind auf Russisch und Englisch verfügbar. Die API akzeptiert keine Systemnachrichten, Tools oder beliebige Anbieteranweisungen.",
            "Das JSON-Body-Limit beträgt 65.536 Bytes. Die Antwort enthält mode, answer, sources, knowledgeVersion und needsHuman, mit aiUnavailable:true, wenn die Generierung nicht verfügbar ist. Keine Benutzersitzung ist erforderlich; eine übermittelte Origin muss der Anwendung entsprechen."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": [
            {
              "label": "API-Vertrag",
              "href": "/docs/api-reference"
            }
          ]
        },
        {
          "id": "ticket",
          "title": "Private Support-Anfragen",
          "paragraphs": [
            "Nach der Anmeldung erstellen Sie eine Anfrage mit einem Betreff von 1–120 Zeichen und einer Nachricht von 5–4.000 Zeichen. Sie wird in Ihrem Konto gespeichert und ist für andere Benutzer nicht sichtbar.",
            "Die Liste zeigt die letzten 30 Anfragen. Sie können Ihre eigene Anfrage schließen. Bewahren Sie deren Referenz auf, wenn Sie nach dem Status fragen; die Bearbeitungszeit hängt vom Problem ab."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": [
            {
              "label": "Meine Support-Anfragen",
              "href": "/account#support"
            }
          ]
        },
        {
          "id": "assistant-admin-v16",
          "title": "Assistent, Support und Projektverwaltung",
          "paragraphs": [
            "Aktivieren Sie „Zugriff auf meine Daten im Chat erlauben“, wenn Sie Hilfe bei privaten Vorgängen benötigen. Eine Webanfrage mit includeAccount=true erfordert eine gültige Sitzung, Origin und X-CSRF-Token; X-Kevmi-Store wählt einen eigenen Store oder alle eigenen Stores aus. Ohne Berechtigung verwendet der Assistent öffentliche Dokumentation. In Telegram aktiviert eine separate Schaltfläche den Zugriff, nachdem der Absender identifiziert wurde.",
            "Das Tool read_account liest eigene Stores, Rechnungen mit bestätigtem Zahlungsstatus, Ereignisse, Anträge und Supportanfragen mit Fachantworten. Es gibt 30 Datensätze und nextPage zurück; ältere Datensätze sind über Paginierung verfügbar. Lesevorgänge pro Antwort sind begrenzt, daher muss eine unvollständige Stichprobe offengelegt werden. API-Schlüssel, Webhook-Geheimnisse, Kartendaten und Sitzungen werden dem Tool nicht bereitgestellt. Es kann keine Zahlungen belasten, auszahlen, erstatten oder Einstellungen ändern.",
            "Das Erstellen einer Supportanfrage im Arbeitsbereich oder in Telegram platziert eine separate Administratorwarnung in einer dauerhaften Warteschlange. Sie verlinkt auf /admin/tickets?ticket=<id>; vorübergehende Telegram-Fehler werden erneut versucht. Die Wiederherstellung nimmt auch ältere offene Anfragen ohne Warnung auf. Administratoren antworten auf der Anfrageseite; die Antwort wird im Benutzerarbeitsbereich gespeichert und über Telegram gesendet, wenn Support-Benachrichtigungen aktiviert sind.",
            "Der Bot verwendet Inline-Schaltflächen für das Hauptmenü, Stores, Benachrichtigungen, Support, Sicherheit und Sprache. Die Navigation bearbeitet die aktuelle Nachricht; ein nicht verfügbares altes Menü wird ersetzt. Zahlungs- und Sicherheitsbenachrichtigungen werden nicht als Wegwerf-Navigation behandelt. Das Abmelden über das Menü erfordert eine Bestätigung. Der explizite Befehl /logout beendet weiterhin jede Kontositzung.",
            "Das Panel /admin/project ist auf Telegram-IDs in der serverseitigen Allowlist MODERATOR_TELEGRAM_IDS beschränkt. Es umfasst Benutzer, Stores, Vorgänge, Schlüsselwiderruf, Deaktivierung von Webhooks, Pausieren von Rechnungen, Annahmesteuerungen und ein Prüfprotokoll. Mutationen erfordern CSRF und einen Grund. Das Panel kann einen Administrator nicht einschränken oder eine Zahlung manuell als erfolgreich erklären. Die Einschränkung eines Eigentümers beendet Sitzungen und blockiert API-Schlüsselzugriff; die Einschränkung eines Stores stoppt neue Vorgänge. Der Verlauf bleibt erhalten.",
            "Das öffentliche Angebot ist unter /public-offer und die Datenschutzrichtlinie unter /privacy-policy in jeder aktivierten Sprache verfügbar. Suchen Sie Münzen nach Name oder Tickersymbol. Ein Netzwerkauswahlfeld erscheint nur, wenn mehrere Live-Netzwerke verfügbar sind. Ein einzelnes Netzwerk wird automatisch ausgewählt und bleibt in der Bestätigung benannt. Die Live-Verfügbarkeit des Gateways bestimmt die wählbaren Paare; der Referenzkatalog aktiviert keinen Dienst.",
            "Verwenden Sie update.sh für routinemäßige Web-App-Veröffentlichungen: Kandidaten bauen, Migrationsverlauf prüfen, SQLite online sichern, einen zweiten Container starten, ihn verifizieren und Caddy elegant umschalten. Gateway, PostgreSQL und Mail werden nicht neu gestartet. Frühere statische Assets bleiben für geöffnete Tabs verfügbar. Eine neue Migration erfordert explizite überprüfte Genehmigung; eine inkompatible Schemaänderung ist keine nahtlose Bereitstellung."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": [
            {
              "label": "Öffentliches Angebot",
              "href": "/public-offer"
            },
            {
              "label": "Datenschutzrichtlinie",
              "href": "/privacy-policy"
            }
          ]
        }
      ],
      "body": "Hilfe zur aktuellen Seite\n\nAuf Telefonen öffnet sich der Chat in einem kompakten Bereich. Sie können ihn minimieren und erneut öffnen; ein Abzeichen erscheint, wenn eine Antwort eintrifft, während er geschlossen ist.\n\nDer Support öffnet sich auf der aktuellen Seite. Die frühere /help-Adresse leitet zur Startseite mit geöffnetem Chat weiter.\n\nWählen Sie den runden Support-Button unten rechts oder stellen Sie Ihre Frage.\n\nÖffnen Sie eine bestehende Unterhaltung oder starten Sie eine neue. Wählen Sie einen Vorschlag oder geben Sie eine Frage ein: Enter sendet; Umschalt + Enter fügt eine Zeile hinzu.\n\nLesen Sie die Antwort und folgen Sie ihren Dokumentationsquellen.\n\nMinimieren Sie den Chat, um weiterzuarbeiten. Nachrichten und der Entwurf bleiben in diesem Browser.\n\nSupport-Chat öffnen\n\nUnterhaltungen, Entwürfe und Verlauf\n\nHalten Sie jedes Thema in einer separaten Unterhaltung. Durchsuchen Sie den Verlauf nach Titel oder Text, benennen Sie eine Unterhaltung um und pinnen Sie wichtige. Eine neue Unterhaltung bewahrt frühere Chats, und jede behält ihren eigenen Entwurf.\n\nStellen Sie eine Unterhaltung aus Gelöscht wieder her oder löschen Sie sie nach Bestätigung dauerhaft. Der Verlauf wird im Browser dieses Geräts gespeichert, übersteht Seitenneuladungen und wird nicht zwischen Geräten, Ihrem Konto oder Telegram synchronisiert. Das Löschen von Websitedaten im Browser entfernt den lokalen Verlauf.\n\nWenn der Browserspeicher nicht verfügbar ist, wird der Chat im Speicher der geöffneten Seite fortgesetzt. Lokale Unterhaltungen sind getrennt von privaten Support-Anfragen, die nach der Anmeldung auf dem Server gespeichert werden.\n\nWorauf Antworten basieren\n\nDie Website und der Bot verwenden eine versionierte Wissensbasis. Der Server stellt veröffentlichte Leitfäden, strukturierte Preise, Zuteilungs- und Länderfakten, den Seitenkatalog und die tatsächliche Funktionsbereitschaft dem generativen Assistenten bereit. Die Basis umfasst Anwendungen, API-Schlüssel, Widgets und Webhooks.\n\nAntwortquellen beziehen sich nur auf Artikel in dieser Basis. Wenn bestätigte Informationen unzureichend sind, sagt der Assistent dies und schlägt eine spezifischere Frage oder Support-Anfrage vor. Er erfindet keine Länder, Auszahlungszeiten, Limits oder Steuerpflichten.\n\nFolgefragen und Kontext\n\nDie nächste Frage enthält die letzten drei Frage-Antwort-Paare der ausgewählten Unterhaltung, was Folgefragen wie „Was, wenn der Händler MwSt. zahlt?“ unterstützt. Anderer lokaler Verlauf wird nicht automatisch an die Anfrage angehängt.\n\nAuch ein kurzes Abschnittslabel, wie Preise oder Checkout, wird gesendet. Die URL, Abfrageparameter und das Rechnungs-Token sind ausgeschlossen. Frühere Nachrichten sind nicht vertrauenswürdiger Kontext und werden gegen die Wissensbasis geprüft.\n\nKI- und Dokumentationssuche\n\nDer KI-Modus verwendet einen konfigurierten Anbieter, Serverspeicher und ein verfügbares Kontingent. /api/config meldet die Konfigurationsbereitschaft; die Modellkonnektivität wird bei einer Anfrage geprüft. Nicht verfügbare Generierung, erschöpftes Kontingent oder eine ungültige Antwort fallen auf die gekennzeichnete Dokumentationssuche zurück.\n\nDie Suche funktioniert auch ohne ein externes Modell. Private Datensätze erfordern eine ausdrückliche Genehmigung des Eigentümers und sind schreibgeschützt. Ohne Genehmigung sind nur öffentliche Informationen verfügbar. Sie kann keine Gelder belasten, Auszahlungen erstellen oder Einstellungen ändern.\n\nModus · Verhalten\nai · Schreibt eine Antwort aus dem vollständigen veröffentlichten Wissen und verlinkt relevante Leitfäden\nSuche · Liefert passende veröffentlichte Dokumentation zurück\n\nEine nützliche Frage stellen\n\nZum Beispiel: „Eine Kartenbestellung über 5 $, mit vom Händler gezahlter Mehrwertsteuer. Was erhält der Händler?“ Prüfen Sie die genauen Zahlen im veröffentlichten Rechner.\n\nDas Chat-Feld akzeptiert bis zu 1.800 Zeichen. Wenn die Verbindung fehlschlägt, bleibt die Frage für einen weiteren Versuch im Feld.\n\nBenennen Sie die Methode: Karte, SBP, Alipay oder Kryptowährung.\n\nFür eine Berechnung geben Sie den Grundbetrag und beide Kostenanteile des Kunden an: Gebühr und Mehrwertsteuer.\n\nFür einen Fehler nennen Sie Seite, Aktion und angezeigte Meldung.\n\nSenden Sie keine Passwörter, Anmeldecodes, Token, CVV oder Seed-Phrasen.\n\nAnfrage über die API\n\nPOST /api/support/ask akzeptiert Fragen mit 2–2.000 Zeichen nach dem Trimmen. Optionale history enthält bis zu sechs Nachrichten mit role=user oder role=assistant. Benutzernachrichten akzeptieren 1–1.800 Zeichen und Assistentennachrichten 1–3.000.\n\nOptionale pageContext ist eine Abschnittsbezeichnung mit 1–80 Zeichen, ohne URLs, Token, Abfrageparameter oder Zeilenumbrüche. Optionale locale ist ru, en, es, de oder fr und wählt die Antwortsprache. Englisch ist die Standardsprache; vollständige technische Quellen sind auf Russisch und Englisch verfügbar. Die API akzeptiert keine Systemnachrichten, Tools oder beliebige Anbieteranweisungen.\n\nDas JSON-Body-Limit beträgt 65.536 Bytes. Die Antwort enthält mode, answer, sources, knowledgeVersion und needsHuman, mit aiUnavailable:true, wenn die Generierung nicht verfügbar ist. Keine Benutzersitzung ist erforderlich; eine übermittelte Origin muss der Anwendung entsprechen.\n\nAPI-Vertrag\n\nPrivate Support-Anfragen\n\nNach der Anmeldung erstellen Sie eine Anfrage mit einem Betreff von 1–120 Zeichen und einer Nachricht von 5–4.000 Zeichen. Sie wird in Ihrem Konto gespeichert und ist für andere Benutzer nicht sichtbar.\n\nDie Liste zeigt die letzten 30 Anfragen. Sie können Ihre eigene Anfrage schließen. Bewahren Sie deren Referenz auf, wenn Sie nach dem Status fragen; die Bearbeitungszeit hängt vom Problem ab.\n\nMeine Support-Anfragen\n\nAssistent, Support und Projektverwaltung\n\nAktivieren Sie „Zugriff auf meine Daten im Chat erlauben“, wenn Sie Hilfe bei privaten Vorgängen benötigen. Eine Webanfrage mit includeAccount=true erfordert eine gültige Sitzung, Origin und X-CSRF-Token; X-Kevmi-Store wählt einen eigenen Store oder alle eigenen Stores aus. Ohne Berechtigung verwendet der Assistent öffentliche Dokumentation. In Telegram aktiviert eine separate Schaltfläche den Zugriff, nachdem der Absender identifiziert wurde.\n\nDas Tool read_account liest eigene Stores, Rechnungen mit bestätigtem Zahlungsstatus, Ereignisse, Anträge und Supportanfragen mit Fachantworten. Es gibt 30 Datensätze und nextPage zurück; ältere Datensätze sind über Paginierung verfügbar. Lesevorgänge pro Antwort sind begrenzt, daher muss eine unvollständige Stichprobe offengelegt werden. API-Schlüssel, Webhook-Geheimnisse, Kartendaten und Sitzungen werden dem Tool nicht bereitgestellt. Es kann keine Zahlungen belasten, auszahlen, erstatten oder Einstellungen ändern.\n\nDas Erstellen einer Supportanfrage im Arbeitsbereich oder in Telegram platziert eine separate Administratorwarnung in einer dauerhaften Warteschlange. Sie verlinkt auf /admin/tickets?ticket=<id>; vorübergehende Telegram-Fehler werden erneut versucht. Die Wiederherstellung nimmt auch ältere offene Anfragen ohne Warnung auf. Administratoren antworten auf der Anfrageseite; die Antwort wird im Benutzerarbeitsbereich gespeichert und über Telegram gesendet, wenn Support-Benachrichtigungen aktiviert sind.\n\nDer Bot verwendet Inline-Schaltflächen für das Hauptmenü, Stores, Benachrichtigungen, Support, Sicherheit und Sprache. Die Navigation bearbeitet die aktuelle Nachricht; ein nicht verfügbares altes Menü wird ersetzt. Zahlungs- und Sicherheitsbenachrichtigungen werden nicht als Wegwerf-Navigation behandelt. Das Abmelden über das Menü erfordert eine Bestätigung. Der explizite Befehl /logout beendet weiterhin jede Kontositzung.\n\nDas Panel /admin/project ist auf Telegram-IDs in der serverseitigen Allowlist MODERATOR_TELEGRAM_IDS beschränkt. Es umfasst Benutzer, Stores, Vorgänge, Schlüsselwiderruf, Deaktivierung von Webhooks, Pausieren von Rechnungen, Annahmesteuerungen und ein Prüfprotokoll. Mutationen erfordern CSRF und einen Grund. Das Panel kann einen Administrator nicht einschränken oder eine Zahlung manuell als erfolgreich erklären. Die Einschränkung eines Eigentümers beendet Sitzungen und blockiert API-Schlüsselzugriff; die Einschränkung eines Stores stoppt neue Vorgänge. Der Verlauf bleibt erhalten.\n\nDas öffentliche Angebot ist unter /public-offer und die Datenschutzrichtlinie unter /privacy-policy in jeder aktivierten Sprache verfügbar. Suchen Sie Münzen nach Name oder Tickersymbol. Ein Netzwerkauswahlfeld erscheint nur, wenn mehrere Live-Netzwerke verfügbar sind. Ein einzelnes Netzwerk wird automatisch ausgewählt und bleibt in der Bestätigung benannt. Die Live-Verfügbarkeit des Gateways bestimmt die wählbaren Paare; der Referenzkatalog aktiviert keinen Dienst.\n\nVerwenden Sie update.sh für routinemäßige Web-App-Veröffentlichungen: Kandidaten bauen, Migrationsverlauf prüfen, SQLite online sichern, einen zweiten Container starten, ihn verifizieren und Caddy elegant umschalten. Gateway, PostgreSQL und Mail werden nicht neu gestartet. Frühere statische Assets bleiben für geöffnete Tabs verfügbar. Eine neue Migration erfordert explizite überprüfte Genehmigung; eine inkompatible Schemaänderung ist keine nahtlose Bereitstellung.\n\nÖffentliches Angebot\n\nDatenschutzrichtlinie",
      "readMinutes": 6
    },
    {
      "id": "api-reference",
      "title": "API-Referenz",
      "summary": "Die Server-API unterstützt Konten, Rechnungen, sicheren Checkout, Status und Webhooks. OpenAPI beschreibt Routen, Felder und Fehler. Für die Einleitung einer Zahlung sind ein konfiguriertes Gateway, ein genehmigter Händler und unterstützte Rechnungsbedingungen erforderlich.",
      "group": "developers",
      "url": "/docs/api-reference",
      "tags": [
        "API",
        "OpenAPI",
        "Endpunkt",
        "Referenz",
        "JSON"
      ],
      "sections": [
        {
          "id": "base",
          "title": "Basis-URL und Format",
          "paragraphs": [
            "The base URL is https://kevmi.one. Request and response bodies use JSON. Money values are integer minor units. Account and support dates are Unix timestamps in milliseconds.",
            "API-Antworten verwenden Cache-Control: no-store. Das öffentliche /openapi.json kann fünf Minuten lang zwischengespeichert werden. Platzieren Sie keine Cookies oder Geheimnisse in einer URL."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": {
            "language": "cURL",
            "code": "curl 'https://kevmi.one/api/config'\n\ncurl 'https://kevmi.one/openapi.json'"
          },
          "note": "",
          "links": []
        },
        {
          "id": "session",
          "title": "Anfrage-Autorisierung",
          "paragraphs": [
            "Das Webkonto verwendet ein HttpOnly-Sitzungs-Cookie. GET /api/auth/me gibt den aktuellen Benutzer und csrfToken zurück. Mutationen erfordern X-CSRF-Token und eine Same-Origin-Anfrage.",
            "Bereichsbezogene Kevmi-Händlerschlüssel autorisieren /api/v1/payments, /api/v1/payment-links und /api/v1/events. Sie ersetzen nicht das Sitzungs-Cookie für Kontoeinstellungen oder Verwaltungsrouten."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": {
            "language": "JavaScript · website browser",
            "code": "const me = await fetch('/api/auth/me').then(r => r.json());\nif (!me.authenticated) throw new Error('Sign in required');\nconst response = await fetch('/api/account/settings', {\n  method: 'PATCH',\n  headers: { 'Content-Type': 'application/json', 'X-CSRF-Token': me.csrfToken },\n  body: JSON.stringify({ vatPayer: 'merchant' })\n});\nif (!response.ok) throw new Error('Settings were not saved');\nconst updated = await response.json();"
          },
          "note": "",
          "links": []
        },
        {
          "id": "groups",
          "title": "Endpunktgruppen",
          "paragraphs": [
            "GET /api/config meldet das Vorhandensein der Serverkonfiguration. GET /api/checkout/{token} gibt invoice.availability für die ausgewählte Methode zurück, einschließlich Händlergenehmigung und gespeicherter Bedingungen. Diese Prüfungen stellen keine Anbieterkonnektivität oder Zahlungserfolg her: Das Ergebnis stammt aus dem verifizierten Gateway-Vorgang."
          ],
          "bullets": [],
          "steps": [],
          "table": {
            "headers": [
              "Gruppe",
              "Zweck"
            ],
            "rows": [
              [
                "Konfiguration und Gesundheit",
                "Öffentliche Dienst- und Speicherbereitschaft"
              ],
              [
                "Authentifizierung",
                "Telegram-Challenges und Sitzungen"
              ],
              [
                "Konto",
                "Einstellungen und die private Händler-App"
              ],
              [
                "/api/v1/payments",
                "Bereichsbezogene Server-Rechnungserstellung und -Lesezugriffe; leitet keine Belastung ein"
              ],
              [
                "/api/v1/events",
                "Server-Ereignisprotokoll mit events:read"
              ],
              [
                "Integrationen",
                "Sitzungsauthentifizierte Schlüssel- und Webhook-Endpunktverwaltung"
              ],
              [
                "Anwendungen und Moderation",
                "Eigene Einreichungen, Statusverfolgung und separate Moderatorberechtigungen"
              ],
              [
                "Checkout",
                "Öffentliche Rechnung, verschlüsselte Kartenanfrage, konkreter Vorgang, Bankcode, Status und Abstimmung"
              ],
              [
                "Gateway-Eingang",
                "Signierte v3-Benachrichtigungen und authentifizierte Vorgangsprüfung"
              ],
              [
                "Support und Benachrichtigungen",
                "Fragen, private Anfragen, Ereignisse und Lesestatus"
              ],
              [
                "Telegram",
                "Verifizierter Bot-Webhook"
              ],
              [
                "Nicht unterstützte Geldrouten",
                "Legacy direkte /api/payments und /api/payouts erstellen keine Belastung oder Auszahlung"
              ]
            ]
          },
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "support-example",
          "title": "Eine öffentliche Wissensanfrage",
          "paragraphs": [
            "Die Antwort enthält mode, answer, sources, knowledgeVersion und needsHuman. Eine übermittelte Origin muss dem Anwendungsursprung entsprechen. Ein serverseitiger Dokumentationsagent kann Origin weglassen."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": {
            "language": "cURL",
            "code": "curl 'https://kevmi.one/api/support/ask' \\\n  -H 'Content-Type: application/json' \\\n  --data '{\"question\":\"Who pays VAT?\",\"locale\":\"en\"}'"
          },
          "note": "",
          "links": []
        },
        {
          "id": "errors",
          "title": "Fehler und Limits",
          "paragraphs": [
            "Ein Fehler enthält einen maschinenlesbaren Code und eine Meldung. Unbekannte Anfragefelder werden abgelehnt. Standard-JSON-Texte erlauben 16.384 Bytes; /api/support/ask und der Telegram-Webhook erlauben 65.536.",
            "429 zeigt ein Ratenlimit an. 503 kann eine nicht verfügbare Integration anzeigen, nicht eine abgelehnte Zahlung. Lesen Sie error.code und ändern Sie einen finanziellen Status nicht allein anhand eines HTTP-Status."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": [
            {
              "label": "Fehlercodes",
              "href": "/docs/errors"
            },
            {
              "label": "Vollständige OpenAPI-Spezifikation",
              "href": "/openapi.json"
            }
          ]
        },
        {
          "id": "stores-usd",
          "title": "Mehrere Geschäfte und ein USD-Basispreis",
          "paragraphs": [
            "Wählen Sie Alle Geschäfte für aggregierte Analysen und Betrieb, oder wählen Sie ein Geschäft für dessen eigene Aufzeichnungen. Jedes Geschäft hat eine separate storeId, einen Namen, einen MwSt-Standardwert, Rechnungen, API-Schlüssel, Webhook-Endpunkte, Ereignisverlauf und Website-Anwendung. Benachrichtigungen und Support-Tickets gehören zum Konto. Ein Konto kann bis zu 100 Geschäfte erstellen. Vorhandene Datensätze verbleiben im ersten Geschäft.",
            "Neue Workspace-Rechnungen verwenden pricingMode=\"universal\" und einen USD-Basispreis. Any umfasst Karte, Alipay, SBP und Krypto; ein Händler kann eine Teilmenge auswählen. Karten und Alipay berechnen USD. SBP berechnet RUB unter Verwendung des USD/RUB-Referenzkurses der Bank von Russland. Krypto berechnet USDT gemäß der expliziten Rechnungsregel 1 USD = 1 USDT. Dies ist eine Rechnungsumrechnungsregel, kein Markt-USDT-Kurs. Das Gateway liefert den Kurs der ausgewählten Münze, den genauen Überweisungsbetrag und Anweisungen vor der Überweisung.",
            "Der Referenzkurs und beide Beträge werden bei der Erstellung eingefroren. Rechnungen mit RUB-Umrechnung verfallen innerhalb von 24 Stunden. Wenn der Referenzkurs nicht abgerufen werden kann, schlägt die Erstellung mit FX_UNAVAILABLE fehl; es wird kein erfundener oder veralteter Ersatzkurs verwendet. Der Basisbetrag Minor und Angebote verwenden die USD-Buchungswährung. quotes[method].settlement enthält das native Belastungsangebot. Der öffentliche Checkout legt die ausgewählte Belastungswährung in currency, den ursprünglichen Preis in baseAmountMinor/baseCurrency und den Referenzkurs in fx offen. Sobald eine Zahlung ausgelöst wurde, kann ihre Methode nicht geändert werden; eine Rechnung hat einen Gateway-Vorgang.",
            "Erstellen Sie einen API-Schlüssel im vorgesehenen Geschäft und senden Sie Authorization: Bearer <key> von Ihrem Server. Seine Geschäftsbindung ist unveränderlich; X-Kevmi-Store kann ihm keinen Zugriff auf ein anderes Geschäft gewähren. Browser-Sitzungen wählen X-Kevmi-Store: <storeId>; wenn es weggelassen wird, wird das erste Geschäft ausgewählt. Der Wert all wird nur von GET /api/account/dashboard und GET /api/payment-links akzeptiert. Mutationen erfordern ein ausgewähltes Geschäft, Origin und X-CSRF-Token. Konto-IDs und Geschäfts-IDs sind unterschiedliche Kennungen.",
            "Aus Kompatibilitätsgründen behalten API-Anfragen ohne pricingMode=\"universal\" native Preise und die ursprünglichen Währungsbeschränkungen bei. Bestehende Rechnungen werden nie neu berechnet. Bestätigte Zahlungseingänge in Analysen spiegeln verifizierte Zahlungen abzüglich gespeicherter Rechnungsausgaben wider; sie sind kein abhebbarer Saldo. Legacy-Rechnungswährungen bleiben getrennt, und Auszahlungen werden mit dem Support vereinbart. Führen Sie eine Bestellung erst aus, nachdem Sie payment.fulfillmentReady=true und payment.status=\"succeeded\" über die Server-API, den Ereignisverlauf oder einen signierten Webhook geprüft haben."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": {
            "language": "json",
            "code": "{\n  \"pricingMode\": \"universal\",\n  \"title\": \"Order 1042\",\n  \"amountMinor\": 1000,\n  \"currency\": \"USD\",\n  \"methods\": [\n    \"card\",\n    \"alipay\",\n    \"sbp\",\n    \"crypto\"\n  ],\n  \"vatCustomerPercent\": 100,\n  \"feeCustomerPercent\": 0\n}"
          },
          "note": "",
          "links": []
        },
        {
          "id": "assistant-admin-v16",
          "title": "Assistent, Support und Projektverwaltung",
          "paragraphs": [
            "Aktivieren Sie „Zugriff auf meine Daten im Chat erlauben“, wenn Sie Hilfe bei privaten Vorgängen benötigen. Eine Webanfrage mit includeAccount=true erfordert eine gültige Sitzung, Origin und X-CSRF-Token; X-Kevmi-Store wählt einen eigenen Store oder alle eigenen Stores aus. Ohne Berechtigung verwendet der Assistent öffentliche Dokumentation. In Telegram aktiviert eine separate Schaltfläche den Zugriff, nachdem der Absender identifiziert wurde.",
            "Das Tool read_account liest eigene Stores, Rechnungen mit bestätigtem Zahlungsstatus, Ereignisse, Anträge und Supportanfragen mit Fachantworten. Es gibt 30 Datensätze und nextPage zurück; ältere Datensätze sind über Paginierung verfügbar. Lesevorgänge pro Antwort sind begrenzt, daher muss eine unvollständige Stichprobe offengelegt werden. API-Schlüssel, Webhook-Geheimnisse, Kartendaten und Sitzungen werden dem Tool nicht bereitgestellt. Es kann keine Zahlungen belasten, auszahlen, erstatten oder Einstellungen ändern.",
            "Das Erstellen einer Supportanfrage im Arbeitsbereich oder in Telegram platziert eine separate Administratorwarnung in einer dauerhaften Warteschlange. Sie verlinkt auf /admin/tickets?ticket=<id>; vorübergehende Telegram-Fehler werden erneut versucht. Die Wiederherstellung nimmt auch ältere offene Anfragen ohne Warnung auf. Administratoren antworten auf der Anfrageseite; die Antwort wird im Benutzerarbeitsbereich gespeichert und über Telegram gesendet, wenn Support-Benachrichtigungen aktiviert sind.",
            "Der Bot verwendet Inline-Schaltflächen für das Hauptmenü, Stores, Benachrichtigungen, Support, Sicherheit und Sprache. Die Navigation bearbeitet die aktuelle Nachricht; ein nicht verfügbares altes Menü wird ersetzt. Zahlungs- und Sicherheitsbenachrichtigungen werden nicht als Wegwerf-Navigation behandelt. Das Abmelden über das Menü erfordert eine Bestätigung. Der explizite Befehl /logout beendet weiterhin jede Kontositzung.",
            "Das Panel /admin/project ist auf Telegram-IDs in der serverseitigen Allowlist MODERATOR_TELEGRAM_IDS beschränkt. Es umfasst Benutzer, Stores, Vorgänge, Schlüsselwiderruf, Deaktivierung von Webhooks, Pausieren von Rechnungen, Annahmesteuerungen und ein Prüfprotokoll. Mutationen erfordern CSRF und einen Grund. Das Panel kann einen Administrator nicht einschränken oder eine Zahlung manuell als erfolgreich erklären. Die Einschränkung eines Eigentümers beendet Sitzungen und blockiert API-Schlüsselzugriff; die Einschränkung eines Stores stoppt neue Vorgänge. Der Verlauf bleibt erhalten.",
            "Das öffentliche Angebot ist unter /public-offer und die Datenschutzrichtlinie unter /privacy-policy in jeder aktivierten Sprache verfügbar. Suchen Sie Münzen nach Name oder Tickersymbol. Ein Netzwerkauswahlfeld erscheint nur, wenn mehrere Live-Netzwerke verfügbar sind. Ein einzelnes Netzwerk wird automatisch ausgewählt und bleibt in der Bestätigung benannt. Die Live-Verfügbarkeit des Gateways bestimmt die wählbaren Paare; der Referenzkatalog aktiviert keinen Dienst.",
            "Verwenden Sie update.sh für routinemäßige Web-App-Veröffentlichungen: Kandidaten bauen, Migrationsverlauf prüfen, SQLite online sichern, einen zweiten Container starten, ihn verifizieren und Caddy elegant umschalten. Gateway, PostgreSQL und Mail werden nicht neu gestartet. Frühere statische Assets bleiben für geöffnete Tabs verfügbar. Eine neue Migration erfordert explizite überprüfte Genehmigung; eine inkompatible Schemaänderung ist keine nahtlose Bereitstellung."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": [
            {
              "label": "Öffentliches Angebot",
              "href": "/public-offer"
            },
            {
              "label": "Datenschutzrichtlinie",
              "href": "/privacy-policy"
            }
          ]
        }
      ],
      "body": "Basis-URL und Format\n\nThe base URL is https://kevmi.one. Request and response bodies use JSON. Money values are integer minor units. Account and support dates are Unix timestamps in milliseconds.\n\nAPI-Antworten verwenden Cache-Control: no-store. Das öffentliche /openapi.json kann fünf Minuten lang zwischengespeichert werden. Platzieren Sie keine Cookies oder Geheimnisse in einer URL.\n\ncurl 'https://kevmi.one/api/config'\n\ncurl 'https://kevmi.one/openapi.json'\n\nAnfrage-Autorisierung\n\nDas Webkonto verwendet ein HttpOnly-Sitzungs-Cookie. GET /api/auth/me gibt den aktuellen Benutzer und csrfToken zurück. Mutationen erfordern X-CSRF-Token und eine Same-Origin-Anfrage.\n\nBereichsbezogene Kevmi-Händlerschlüssel autorisieren /api/v1/payments, /api/v1/payment-links und /api/v1/events. Sie ersetzen nicht das Sitzungs-Cookie für Kontoeinstellungen oder Verwaltungsrouten.\n\nconst me = await fetch('/api/auth/me').then(r => r.json());\nif (!me.authenticated) throw new Error('Sign in required');\nconst response = await fetch('/api/account/settings', {\n  method: 'PATCH',\n  headers: { 'Content-Type': 'application/json', 'X-CSRF-Token': me.csrfToken },\n  body: JSON.stringify({ vatPayer: 'merchant' })\n});\nif (!response.ok) throw new Error('Settings were not saved');\nconst updated = await response.json();\n\nEndpunktgruppen\n\nGET /api/config meldet das Vorhandensein der Serverkonfiguration. GET /api/checkout/{token} gibt invoice.availability für die ausgewählte Methode zurück, einschließlich Händlergenehmigung und gespeicherter Bedingungen. Diese Prüfungen stellen keine Anbieterkonnektivität oder Zahlungserfolg her: Das Ergebnis stammt aus dem verifizierten Gateway-Vorgang.\n\nGruppe · Zweck\nKonfiguration und Gesundheit · Öffentliche Dienst- und Speicherbereitschaft\nAuthentifizierung · Telegram-Challenges und Sitzungen\nKonto · Einstellungen und die private Händler-App\n/api/v1/payments · Bereichsbezogene Server-Rechnungserstellung und -Lesezugriffe; leitet keine Belastung ein\n/api/v1/events · Server-Ereignisprotokoll mit events:read\nIntegrationen · Sitzungsauthentifizierte Schlüssel- und Webhook-Endpunktverwaltung\nAnwendungen und Moderation · Eigene Einreichungen, Statusverfolgung und separate Moderatorberechtigungen\nCheckout · Öffentliche Rechnung, verschlüsselte Kartenanfrage, konkreter Vorgang, Bankcode, Status und Abstimmung\nGateway-Eingang · Signierte v3-Benachrichtigungen und authentifizierte Vorgangsprüfung\nSupport und Benachrichtigungen · Fragen, private Anfragen, Ereignisse und Lesestatus\nTelegram · Verifizierter Bot-Webhook\nNicht unterstützte Geldrouten · Legacy direkte /api/payments und /api/payouts erstellen keine Belastung oder Auszahlung\n\nEine öffentliche Wissensanfrage\n\nDie Antwort enthält mode, answer, sources, knowledgeVersion und needsHuman. Eine übermittelte Origin muss dem Anwendungsursprung entsprechen. Ein serverseitiger Dokumentationsagent kann Origin weglassen.\n\ncurl 'https://kevmi.one/api/support/ask' \\\n  -H 'Content-Type: application/json' \\\n  --data '{\"question\":\"Who pays VAT?\",\"locale\":\"en\"}'\n\nFehler und Limits\n\nEin Fehler enthält einen maschinenlesbaren Code und eine Meldung. Unbekannte Anfragefelder werden abgelehnt. Standard-JSON-Texte erlauben 16.384 Bytes; /api/support/ask und der Telegram-Webhook erlauben 65.536.\n\n429 zeigt ein Ratenlimit an. 503 kann eine nicht verfügbare Integration anzeigen, nicht eine abgelehnte Zahlung. Lesen Sie error.code und ändern Sie einen finanziellen Status nicht allein anhand eines HTTP-Status.\n\nFehlercodes\n\nVollständige OpenAPI-Spezifikation\n\nMehrere Geschäfte und ein USD-Basispreis\n\nWählen Sie Alle Geschäfte für aggregierte Analysen und Betrieb, oder wählen Sie ein Geschäft für dessen eigene Aufzeichnungen. Jedes Geschäft hat eine separate storeId, einen Namen, einen MwSt-Standardwert, Rechnungen, API-Schlüssel, Webhook-Endpunkte, Ereignisverlauf und Website-Anwendung. Benachrichtigungen und Support-Tickets gehören zum Konto. Ein Konto kann bis zu 100 Geschäfte erstellen. Vorhandene Datensätze verbleiben im ersten Geschäft.\n\nNeue Workspace-Rechnungen verwenden pricingMode=\"universal\" und einen USD-Basispreis. Any umfasst Karte, Alipay, SBP und Krypto; ein Händler kann eine Teilmenge auswählen. Karten und Alipay berechnen USD. SBP berechnet RUB unter Verwendung des USD/RUB-Referenzkurses der Bank von Russland. Krypto berechnet USDT gemäß der expliziten Rechnungsregel 1 USD = 1 USDT. Dies ist eine Rechnungsumrechnungsregel, kein Markt-USDT-Kurs. Das Gateway liefert den Kurs der ausgewählten Münze, den genauen Überweisungsbetrag und Anweisungen vor der Überweisung.\n\nDer Referenzkurs und beide Beträge werden bei der Erstellung eingefroren. Rechnungen mit RUB-Umrechnung verfallen innerhalb von 24 Stunden. Wenn der Referenzkurs nicht abgerufen werden kann, schlägt die Erstellung mit FX_UNAVAILABLE fehl; es wird kein erfundener oder veralteter Ersatzkurs verwendet. Der Basisbetrag Minor und Angebote verwenden die USD-Buchungswährung. quotes[method].settlement enthält das native Belastungsangebot. Der öffentliche Checkout legt die ausgewählte Belastungswährung in currency, den ursprünglichen Preis in baseAmountMinor/baseCurrency und den Referenzkurs in fx offen. Sobald eine Zahlung ausgelöst wurde, kann ihre Methode nicht geändert werden; eine Rechnung hat einen Gateway-Vorgang.\n\nErstellen Sie einen API-Schlüssel im vorgesehenen Geschäft und senden Sie Authorization: Bearer <key> von Ihrem Server. Seine Geschäftsbindung ist unveränderlich; X-Kevmi-Store kann ihm keinen Zugriff auf ein anderes Geschäft gewähren. Browser-Sitzungen wählen X-Kevmi-Store: <storeId>; wenn es weggelassen wird, wird das erste Geschäft ausgewählt. Der Wert all wird nur von GET /api/account/dashboard und GET /api/payment-links akzeptiert. Mutationen erfordern ein ausgewähltes Geschäft, Origin und X-CSRF-Token. Konto-IDs und Geschäfts-IDs sind unterschiedliche Kennungen.\n\nAus Kompatibilitätsgründen behalten API-Anfragen ohne pricingMode=\"universal\" native Preise und die ursprünglichen Währungsbeschränkungen bei. Bestehende Rechnungen werden nie neu berechnet. Bestätigte Zahlungseingänge in Analysen spiegeln verifizierte Zahlungen abzüglich gespeicherter Rechnungsausgaben wider; sie sind kein abhebbarer Saldo. Legacy-Rechnungswährungen bleiben getrennt, und Auszahlungen werden mit dem Support vereinbart. Führen Sie eine Bestellung erst aus, nachdem Sie payment.fulfillmentReady=true und payment.status=\"succeeded\" über die Server-API, den Ereignisverlauf oder einen signierten Webhook geprüft haben.\n\n{\n  \"pricingMode\": \"universal\",\n  \"title\": \"Order 1042\",\n  \"amountMinor\": 1000,\n  \"currency\": \"USD\",\n  \"methods\": [\n    \"card\",\n    \"alipay\",\n    \"sbp\",\n    \"crypto\"\n  ],\n  \"vatCustomerPercent\": 100,\n  \"feeCustomerPercent\": 0\n}\n\nAssistent, Support und Projektverwaltung\n\nAktivieren Sie „Zugriff auf meine Daten im Chat erlauben“, wenn Sie Hilfe bei privaten Vorgängen benötigen. Eine Webanfrage mit includeAccount=true erfordert eine gültige Sitzung, Origin und X-CSRF-Token; X-Kevmi-Store wählt einen eigenen Store oder alle eigenen Stores aus. Ohne Berechtigung verwendet der Assistent öffentliche Dokumentation. In Telegram aktiviert eine separate Schaltfläche den Zugriff, nachdem der Absender identifiziert wurde.\n\nDas Tool read_account liest eigene Stores, Rechnungen mit bestätigtem Zahlungsstatus, Ereignisse, Anträge und Supportanfragen mit Fachantworten. Es gibt 30 Datensätze und nextPage zurück; ältere Datensätze sind über Paginierung verfügbar. Lesevorgänge pro Antwort sind begrenzt, daher muss eine unvollständige Stichprobe offengelegt werden. API-Schlüssel, Webhook-Geheimnisse, Kartendaten und Sitzungen werden dem Tool nicht bereitgestellt. Es kann keine Zahlungen belasten, auszahlen, erstatten oder Einstellungen ändern.\n\nDas Erstellen einer Supportanfrage im Arbeitsbereich oder in Telegram platziert eine separate Administratorwarnung in einer dauerhaften Warteschlange. Sie verlinkt auf /admin/tickets?ticket=<id>; vorübergehende Telegram-Fehler werden erneut versucht. Die Wiederherstellung nimmt auch ältere offene Anfragen ohne Warnung auf. Administratoren antworten auf der Anfrageseite; die Antwort wird im Benutzerarbeitsbereich gespeichert und über Telegram gesendet, wenn Support-Benachrichtigungen aktiviert sind.\n\nDer Bot verwendet Inline-Schaltflächen für das Hauptmenü, Stores, Benachrichtigungen, Support, Sicherheit und Sprache. Die Navigation bearbeitet die aktuelle Nachricht; ein nicht verfügbares altes Menü wird ersetzt. Zahlungs- und Sicherheitsbenachrichtigungen werden nicht als Wegwerf-Navigation behandelt. Das Abmelden über das Menü erfordert eine Bestätigung. Der explizite Befehl /logout beendet weiterhin jede Kontositzung.\n\nDas Panel /admin/project ist auf Telegram-IDs in der serverseitigen Allowlist MODERATOR_TELEGRAM_IDS beschränkt. Es umfasst Benutzer, Stores, Vorgänge, Schlüsselwiderruf, Deaktivierung von Webhooks, Pausieren von Rechnungen, Annahmesteuerungen und ein Prüfprotokoll. Mutationen erfordern CSRF und einen Grund. Das Panel kann einen Administrator nicht einschränken oder eine Zahlung manuell als erfolgreich erklären. Die Einschränkung eines Eigentümers beendet Sitzungen und blockiert API-Schlüsselzugriff; die Einschränkung eines Stores stoppt neue Vorgänge. Der Verlauf bleibt erhalten.\n\nDas öffentliche Angebot ist unter /public-offer und die Datenschutzrichtlinie unter /privacy-policy in jeder aktivierten Sprache verfügbar. Suchen Sie Münzen nach Name oder Tickersymbol. Ein Netzwerkauswahlfeld erscheint nur, wenn mehrere Live-Netzwerke verfügbar sind. Ein einzelnes Netzwerk wird automatisch ausgewählt und bleibt in der Bestätigung benannt. Die Live-Verfügbarkeit des Gateways bestimmt die wählbaren Paare; der Referenzkatalog aktiviert keinen Dienst.\n\nVerwenden Sie update.sh für routinemäßige Web-App-Veröffentlichungen: Kandidaten bauen, Migrationsverlauf prüfen, SQLite online sichern, einen zweiten Container starten, ihn verifizieren und Caddy elegant umschalten. Gateway, PostgreSQL und Mail werden nicht neu gestartet. Frühere statische Assets bleiben für geöffnete Tabs verfügbar. Eine neue Migration erfordert explizite überprüfte Genehmigung; eine inkompatible Schemaänderung ist keine nahtlose Bereitstellung.\n\nÖffentliches Angebot\n\nDatenschutzrichtlinie",
      "readMinutes": 4
    },
    {
      "id": "payment-links-api",
      "title": "Zahlungslink-API und API-Schlüssel",
      "summary": "Erstellen Sie eine Rechnung von Ihrem Backend aus und erhalten Sie checkoutUrl sofort. Die API unterstützt bereichsbezogene Schlüssel, idempotente Wiederholungen, unabhängige Gebühren- und Mehrwertsteueranteile, eine Bestellreferenz und private Metadaten.",
      "tags": [
        "API",
        "Zahlungslink",
        "Idempotenz",
        "Checkout",
        "Seitennummerierung",
        "API-Schlüssel",
        "Bereich",
        "Metadaten"
      ],
      "sections": [
        {
          "id": "create",
          "title": "Eine Serveranfrage gibt einen fertigen Link zurück",
          "paragraphs": [
            "POST /api/v1/payments und /api/v1/payment-links erstellen denselben Rechnungstyp. Der Routenname payments impliziert keine Belastung: Das Ergebnis sind gespeicherte Rechnungsbedingungen und eine checkoutUrl für den Kunden.",
            "Senden Sie Authorization: Bearer <key>, Content-Type: application/json und Idempotency-Key. Idempotenz-Schlüssel enthalten 16–100 Buchstaben, Ziffern, Bindestriche oder Unterstriche. Speichern Sie einen Schlüssel für jede logische Bestellabwicklung."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": {
            "language": "cURL · server only",
            "code": "curl 'https://kevmi.maxeevmax1.chatgpt.site/api/v1/payments' \\\n  -H \"Authorization: Bearer $KEVMI_API_KEY\" \\\n  -H 'Content-Type: application/json' \\\n  -H 'Idempotency-Key: order-1042-create-v1' \\\n  --data '{\"title\":\"Design project · order 1042\",\"description\":\"One-time payment for the agreed design work\",\"amountMinor\":500,\"currency\":\"USD\",\"methods\":[\"card\",\"alipay\"],\"vatCustomerPercent\":100,\"feeCustomerPercent\":0,\"orderId\":\"order-1042\",\"metadata\":{\"campaign\":\"autumn\"}}'"
          },
          "note": "Die Antwort enthält link, checkoutUrl und replayed. Geben Sie checkoutUrl an den Kunden oder das Widget weiter; bewahren Sie den API-Schlüssel auf Ihrem Server auf.",
          "links": []
        },
        {
          "id": "keys",
          "title": "API-Schlüssel-Bereiche und Ablauf",
          "paragraphs": [
            "Erstellen Sie einen Schlüssel unter /account#keys in Ihrem verifizierten Händlerkonto. Sein vollständiger Wert erscheint nur einmal; nur ein Hash wird gespeichert. Schlüssel gelten standardmäßig 90 Tage, mit einer zulässigen Lebensdauer von 1–365 Tagen und bis zu zehn aktiven Schlüsseln pro Konto.",
            "Gewähren Sie nur die erforderlichen Bereiche. Widerruf oder Ablauf beendet den Zugriff. Ein Schlüssel ersetzt nicht die Browser-Sitzung für Kontoeinstellungen, Endpunktverwaltung, Anwendungen oder Moderation. Halten Sie ihn fern von Widgets, URLs, öffentlichen Repositories und Supportnachrichten.",
            "Die Website verwendet /api/payment-links mit ihrem Sitzungs-Cookie, exaktem Origin und X-CSRF-Token. Diese Routen arbeiten mit denselben eigenen Rechnungen."
          ],
          "bullets": [],
          "steps": [],
          "table": {
            "headers": [
              "Bereich",
              "Zweck"
            ],
            "rows": [
              [
                "invoices:read",
                "Eigene Rechnungen und deren Liste lesen"
              ],
              [
                "invoices:write",
                "Rechnungen erstellen und Linkverfügbarkeit ändern"
              ],
              [
                "events:read",
                "Serverseitiges Ereignisprotokoll lesen"
              ]
            ]
          },
          "code": null,
          "note": "",
          "links": [
            {
              "label": "API-Schlüssel in Ihrem Konto",
              "href": "/account#keys"
            }
          ]
        },
        {
          "id": "methods",
          "title": "Beliebig und konkrete API-Methoden",
          "paragraphs": [
            "Beliebig ist ein Schnittstellen-Auswahlmodus. Neue Rechnungen akzeptieren Methoden: [\"card\", \"alipay\"] oder eine nichtleere Teilmenge für USD; [\"sbp\"] für RUB; [\"crypto\"] für USDT. Der Wert any ist keine API-Zahlungsmethode.",
            "Für eine neue Rechnung in der Oberfläche bietet USD Karten und Alipay an; RUB bietet SBP an; USDT bietet Krypto an. Die API kann auch USD + Krypto für die Kompatibilität speichern, aber ihre Live-Kryptozahlung ist mit crypto_requires_usdt blockiert. USD und USDT sind unterschiedlich, ohne automatische Umrechnung oder angenommenen 1:1-Kurs. Eine Kryptozahlung erfordert eine separate USDT-Rechnung.",
            "Für eine neue Live-Karten- oder Alipay-Zahlung unterstützt das aktuelle Gateway nur feeCustomerPercent=0 und vatCustomerPercent=100: der Händler übernimmt die gesamte Bearbeitungsgebühr und die MwSt wird dem Kunden vollständig hinzugefügt. Andere Anteile können auf einer Rechnung gespeichert und berechnet werden, aber die Ausführung ist mit unsupported_allocation blockiert. Der Server ändert gespeicherte Bedingungen niemals stillschweigend. SBP- und USDT-Kryptozahlungen unterstützen jeden Bearbeitungsgebührenanteil und haben keine MwSt."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": [
            {
              "label": "Beliebig in der Kontoschnittstelle",
              "href": "/docs/payment-links#any"
            },
            {
              "label": "Checkout",
              "href": "/docs/checkout"
            }
          ]
        },
        {
          "id": "snapshot",
          "title": "Felder und gespeicherte Bedingungen",
          "paragraphs": [
            "Die Rechnung speichert den Händlernamen, Preis, Währung, Methoden, beide Kostenanteile und berechnete Angebote. Metadaten werden an den Eigentümer und in Serverereignissen zurückgegeben, jedoch nicht über öffentlichen Checkout. Speichern Sie keine Zahlungsgeheimnisse darin.",
            "Wenn Anteile weggelassen werden, trägt der Händler die Gebühr; die Mehrwertsteuer erbt vatPayer oder die Kontoeinstellung. Eine Teilzuordnung kann vatPayer=shared zurückgeben. Der Titel, orderId und Beschreibung sind öffentlich."
          ],
          "bullets": [],
          "steps": [],
          "table": {
            "headers": [
              "Feld",
              "Regel"
            ],
            "rows": [
              [
                "Titel / Beschreibung",
                "1–120 / 0–500 Zeichen"
              ],
              [
                "amountMinor",
                "Ganzzahl 1–10.000.000.000; 500 bedeutet 5,00 $ in USD"
              ],
              [
                "Währung / Methoden",
                "USD: card, alipay; RUB: sbp; USDT: crypto. Nichtleere eindeutige Liste."
              ],
              [
                "vatCustomerPercent / feeCustomerPercent",
                "Unabhängige ganzzahlige Kundenanteile von 0 bis 100"
              ],
              [
                "vatPayer",
                "Legacy Kunde oder Händler; darf nicht mit dem Mehrwertsteuer-Anteil kollidieren"
              ],
              [
                "orderId",
                "Optional, bis zu 100 Zeichen; für den Kunden sichtbar"
              ],
              [
                "Metadaten",
                "Bis zu zehn Zeichenfolgen-Einträge; Schlüssel 1–40 Buchstaben/Ziffern/_/-; Wert bis zu 500 Zeichen; insgesamt bis zu 3000 UTF-8-Byte"
              ],
              [
                "expiresAt",
                "Zukünftige Unix-Millisekunden innerhalb von 90 Tagen; standardmäßig sieben Tage"
              ]
            ]
          },
          "code": null,
          "note": "Aus Kompatibilitätsgründen speichert die API auch USD + crypto, aber die Live-Krypto-Ausführung ist mit crypto_requires_usdt blockiert. Verwenden Sie USDT für neue Krypto-Rechnungen; es wird keine automatische Umrechnung durchgeführt.",
          "links": [
            {
              "label": "Formeln zur Kostenverteilung",
              "href": "/docs/cost-sharing"
            }
          ]
        },
        {
          "id": "idempotency",
          "title": "Erneut versuchen nach einem Netzwerkfehler",
          "paragraphs": [
            "Die anfängliche Erstellung gibt 201 mit replayed=false zurück. Derselbe Schlüssel und derselbe kanonische Text geben 200 mit der ursprünglichen checkoutUrl und replayed=true zurück. Eine andere Anfrage unter diesem Schlüssel gibt 409 IDEMPOTENCY_CONFLICT zurück.",
            "Generieren Sie nach einem Timeout keinen weiteren Schlüssel. Wiederholen Sie die ursprüngliche Anfrage mit identischen Feldern. Weggelassene Werte erben nicht erneut geänderte Einstellungen. orderId hilft bei der Zuordnung einer Bestellung, ersetzt aber nicht Idempotency-Key und muss in der Speicherung nicht eindeutig sein."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "read",
          "title": "Lesen und Seitennummerierung",
          "paragraphs": [
            "GET /api/v1/payments gibt Links und nextCursor zurück; GET /api/v1/payments/{id} gibt einen eigenen Link zurück. invoices:read ist erforderlich. Die Standardseitengröße ist 30; limit akzeptiert 1–100.",
            "GET-Listen- und Detailantworten enthalten link.payment: eine Zusammenfassung des zugehörigen Vorgangs, oder null, wenn kein Vorgang existiert. POST/PATCH-Antworten können dies weglassen; lesen Sie die Rechnung erneut, wenn Sie die Zusammenfassung benötigen. Der Linkstatus beschreibt separat, ob eine neue Zahlung beginnen darf. Kartendaten und private Schlüssel sind nie enthalten.",
            "Übergeben Sie nextCursor unverändert über URLSearchParams. null markiert das Ende; unbekannte und andere Händler-IDs geben beide 404 zurück."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": {
            "language": "HTTP",
            "code": "GET /api/v1/payments?limit=30\nAuthorization: Bearer <server-side key>"
          },
          "note": "",
          "links": []
        },
        {
          "id": "status",
          "title": "Pausieren, fortsetzen und stornieren",
          "paragraphs": [
            "PATCH /api/v1/payments/{id} mit invoices:write akzeptiert nur {\"status\":\"active\"}, {\"status\":\"paused\"} oder {\"status\":\"cancelled\"}. Stornierung ist endgültig. expired wird aus der Ablaufzeit abgeleitet; eine abgelaufene Rechnung kann nicht verlängert werden.",
            "Preis, Kostenanteile, Beschreibung, orderId, Metadaten und Ablauf sind unveränderlich. Erstellen Sie eine andere Rechnung für andere Bedingungen. Eine Änderung der Verfügbarkeit gibt invoice.updated aus, kein Ereignis für erfolgreiche Zahlung."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "buyer",
          "title": "Die Kundenantwort",
          "paragraphs": [
            "GET /api/checkout/{token}?method=card gibt die öffentliche Rechnung, Angebot, Methodenverfügbarkeit und vorhandenen Vorgang zurück. Eigentümer-Metadaten, Geheimnisse und Guthaben werden nicht offengelegt.",
            "POST /api/checkout/{token}/pay erfordert den Site-Origin und eine konkrete Methode. Kartendaten werden nur als versiegelt akzeptiert: {intent,jwe}, nachdem der Browser /card-intent erhalten hat. Bankcodes sind verschlüsselt und werden über /code gesendet. Krypto verwendet eine gespeicherte USDT-Rechnung und ein verfügbares Münz-/Netzwerkpaar.",
            "Eine neue Zahlung und Kartenabsicht erfordern, dass der neueste Website-Review-Antrag des Händlers genehmigt wurde. Die Genehmigung allein verbindet das Zahlungsgateway nicht. Wenn die Überprüfung nach dem Versand geändert wird, bleibt der bestehende Vorgang für Statusabfragen, Abgleich und einen angefragten Bankcode verfügbar.",
            "Eine fehlende Live-Verbindung gibt GATEWAY_NOT_CONNECTED zurück; eine inkompatible Zuordnung wird nie durch eine andere Berechnung ersetzt. Status und reconcile lesen den ursprünglichen Vorgang ohne doppelte Belastung."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": [
            {
              "label": "Checkout-Widget",
              "href": "/docs/widgets"
            },
            {
              "label": "Zahlung mit Webhooks bestätigen",
              "href": "/docs/webhooks"
            }
          ]
        },
        {
          "id": "stores-usd",
          "title": "Mehrere Geschäfte und ein USD-Basispreis",
          "paragraphs": [
            "Wählen Sie Alle Geschäfte für aggregierte Analysen und Betrieb, oder wählen Sie ein Geschäft für dessen eigene Aufzeichnungen. Jedes Geschäft hat eine separate storeId, einen Namen, einen MwSt-Standardwert, Rechnungen, API-Schlüssel, Webhook-Endpunkte, Ereignisverlauf und Website-Anwendung. Benachrichtigungen und Support-Tickets gehören zum Konto. Ein Konto kann bis zu 100 Geschäfte erstellen. Vorhandene Datensätze verbleiben im ersten Geschäft.",
            "Neue Workspace-Rechnungen verwenden pricingMode=\"universal\" und einen USD-Basispreis. Any umfasst Karte, Alipay, SBP und Krypto; ein Händler kann eine Teilmenge auswählen. Karten und Alipay berechnen USD. SBP berechnet RUB unter Verwendung des USD/RUB-Referenzkurses der Bank von Russland. Krypto berechnet USDT gemäß der expliziten Rechnungsregel 1 USD = 1 USDT. Dies ist eine Rechnungsumrechnungsregel, kein Markt-USDT-Kurs. Das Gateway liefert den Kurs der ausgewählten Münze, den genauen Überweisungsbetrag und Anweisungen vor der Überweisung.",
            "Der Referenzkurs und beide Beträge werden bei der Erstellung eingefroren. Rechnungen mit RUB-Umrechnung verfallen innerhalb von 24 Stunden. Wenn der Referenzkurs nicht abgerufen werden kann, schlägt die Erstellung mit FX_UNAVAILABLE fehl; es wird kein erfundener oder veralteter Ersatzkurs verwendet. Der Basisbetrag Minor und Angebote verwenden die USD-Buchungswährung. quotes[method].settlement enthält das native Belastungsangebot. Der öffentliche Checkout legt die ausgewählte Belastungswährung in currency, den ursprünglichen Preis in baseAmountMinor/baseCurrency und den Referenzkurs in fx offen. Sobald eine Zahlung ausgelöst wurde, kann ihre Methode nicht geändert werden; eine Rechnung hat einen Gateway-Vorgang.",
            "Erstellen Sie einen API-Schlüssel im vorgesehenen Geschäft und senden Sie Authorization: Bearer <key> von Ihrem Server. Seine Geschäftsbindung ist unveränderlich; X-Kevmi-Store kann ihm keinen Zugriff auf ein anderes Geschäft gewähren. Browser-Sitzungen wählen X-Kevmi-Store: <storeId>; wenn es weggelassen wird, wird das erste Geschäft ausgewählt. Der Wert all wird nur von GET /api/account/dashboard und GET /api/payment-links akzeptiert. Mutationen erfordern ein ausgewähltes Geschäft, Origin und X-CSRF-Token. Konto-IDs und Geschäfts-IDs sind unterschiedliche Kennungen.",
            "Aus Kompatibilitätsgründen behalten API-Anfragen ohne pricingMode=\"universal\" native Preise und die ursprünglichen Währungsbeschränkungen bei. Bestehende Rechnungen werden nie neu berechnet. Bestätigte Zahlungseingänge in Analysen spiegeln verifizierte Zahlungen abzüglich gespeicherter Rechnungsausgaben wider; sie sind kein abhebbarer Saldo. Legacy-Rechnungswährungen bleiben getrennt, und Auszahlungen werden mit dem Support vereinbart. Führen Sie eine Bestellung erst aus, nachdem Sie payment.fulfillmentReady=true und payment.status=\"succeeded\" über die Server-API, den Ereignisverlauf oder einen signierten Webhook geprüft haben."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        }
      ],
      "group": "developers",
      "url": "/docs/payment-links-api",
      "body": "Eine Serveranfrage gibt einen fertigen Link zurück\n\nPOST /api/v1/payments und /api/v1/payment-links erstellen denselben Rechnungstyp. Der Routenname payments impliziert keine Belastung: Das Ergebnis sind gespeicherte Rechnungsbedingungen und eine checkoutUrl für den Kunden.\n\nSenden Sie Authorization: Bearer <key>, Content-Type: application/json und Idempotency-Key. Idempotenz-Schlüssel enthalten 16–100 Buchstaben, Ziffern, Bindestriche oder Unterstriche. Speichern Sie einen Schlüssel für jede logische Bestellabwicklung.\n\ncurl 'https://kevmi.maxeevmax1.chatgpt.site/api/v1/payments' \\\n  -H \"Authorization: Bearer $KEVMI_API_KEY\" \\\n  -H 'Content-Type: application/json' \\\n  -H 'Idempotency-Key: order-1042-create-v1' \\\n  --data '{\"title\":\"Design project · order 1042\",\"description\":\"One-time payment for the agreed design work\",\"amountMinor\":500,\"currency\":\"USD\",\"methods\":[\"card\",\"alipay\"],\"vatCustomerPercent\":100,\"feeCustomerPercent\":0,\"orderId\":\"order-1042\",\"metadata\":{\"campaign\":\"autumn\"}}'\n\nDie Antwort enthält link, checkoutUrl und replayed. Geben Sie checkoutUrl an den Kunden oder das Widget weiter; bewahren Sie den API-Schlüssel auf Ihrem Server auf.\n\nAPI-Schlüssel-Bereiche und Ablauf\n\nErstellen Sie einen Schlüssel unter /account#keys in Ihrem verifizierten Händlerkonto. Sein vollständiger Wert erscheint nur einmal; nur ein Hash wird gespeichert. Schlüssel gelten standardmäßig 90 Tage, mit einer zulässigen Lebensdauer von 1–365 Tagen und bis zu zehn aktiven Schlüsseln pro Konto.\n\nGewähren Sie nur die erforderlichen Bereiche. Widerruf oder Ablauf beendet den Zugriff. Ein Schlüssel ersetzt nicht die Browser-Sitzung für Kontoeinstellungen, Endpunktverwaltung, Anwendungen oder Moderation. Halten Sie ihn fern von Widgets, URLs, öffentlichen Repositories und Supportnachrichten.\n\nDie Website verwendet /api/payment-links mit ihrem Sitzungs-Cookie, exaktem Origin und X-CSRF-Token. Diese Routen arbeiten mit denselben eigenen Rechnungen.\n\nBereich · Zweck\ninvoices:read · Eigene Rechnungen und deren Liste lesen\ninvoices:write · Rechnungen erstellen und Linkverfügbarkeit ändern\nevents:read · Serverseitiges Ereignisprotokoll lesen\n\nAPI-Schlüssel in Ihrem Konto\n\nBeliebig und konkrete API-Methoden\n\nBeliebig ist ein Schnittstellen-Auswahlmodus. Neue Rechnungen akzeptieren Methoden: [\"card\", \"alipay\"] oder eine nichtleere Teilmenge für USD; [\"sbp\"] für RUB; [\"crypto\"] für USDT. Der Wert any ist keine API-Zahlungsmethode.\n\nFür eine neue Rechnung in der Oberfläche bietet USD Karten und Alipay an; RUB bietet SBP an; USDT bietet Krypto an. Die API kann auch USD + Krypto für die Kompatibilität speichern, aber ihre Live-Kryptozahlung ist mit crypto_requires_usdt blockiert. USD und USDT sind unterschiedlich, ohne automatische Umrechnung oder angenommenen 1:1-Kurs. Eine Kryptozahlung erfordert eine separate USDT-Rechnung.\n\nFür eine neue Live-Karten- oder Alipay-Zahlung unterstützt das aktuelle Gateway nur feeCustomerPercent=0 und vatCustomerPercent=100: der Händler übernimmt die gesamte Bearbeitungsgebühr und die MwSt wird dem Kunden vollständig hinzugefügt. Andere Anteile können auf einer Rechnung gespeichert und berechnet werden, aber die Ausführung ist mit unsupported_allocation blockiert. Der Server ändert gespeicherte Bedingungen niemals stillschweigend. SBP- und USDT-Kryptozahlungen unterstützen jeden Bearbeitungsgebührenanteil und haben keine MwSt.\n\nBeliebig in der Kontoschnittstelle\n\nCheckout\n\nFelder und gespeicherte Bedingungen\n\nDie Rechnung speichert den Händlernamen, Preis, Währung, Methoden, beide Kostenanteile und berechnete Angebote. Metadaten werden an den Eigentümer und in Serverereignissen zurückgegeben, jedoch nicht über öffentlichen Checkout. Speichern Sie keine Zahlungsgeheimnisse darin.\n\nWenn Anteile weggelassen werden, trägt der Händler die Gebühr; die Mehrwertsteuer erbt vatPayer oder die Kontoeinstellung. Eine Teilzuordnung kann vatPayer=shared zurückgeben. Der Titel, orderId und Beschreibung sind öffentlich.\n\nFeld · Regel\nTitel / Beschreibung · 1–120 / 0–500 Zeichen\namountMinor · Ganzzahl 1–10.000.000.000; 500 bedeutet 5,00 $ in USD\nWährung / Methoden · USD: card, alipay; RUB: sbp; USDT: crypto. Nichtleere eindeutige Liste.\nvatCustomerPercent / feeCustomerPercent · Unabhängige ganzzahlige Kundenanteile von 0 bis 100\nvatPayer · Legacy Kunde oder Händler; darf nicht mit dem Mehrwertsteuer-Anteil kollidieren\norderId · Optional, bis zu 100 Zeichen; für den Kunden sichtbar\nMetadaten · Bis zu zehn Zeichenfolgen-Einträge; Schlüssel 1–40 Buchstaben/Ziffern/_/-; Wert bis zu 500 Zeichen; insgesamt bis zu 3000 UTF-8-Byte\nexpiresAt · Zukünftige Unix-Millisekunden innerhalb von 90 Tagen; standardmäßig sieben Tage\n\nAus Kompatibilitätsgründen speichert die API auch USD + crypto, aber die Live-Krypto-Ausführung ist mit crypto_requires_usdt blockiert. Verwenden Sie USDT für neue Krypto-Rechnungen; es wird keine automatische Umrechnung durchgeführt.\n\nFormeln zur Kostenverteilung\n\nErneut versuchen nach einem Netzwerkfehler\n\nDie anfängliche Erstellung gibt 201 mit replayed=false zurück. Derselbe Schlüssel und derselbe kanonische Text geben 200 mit der ursprünglichen checkoutUrl und replayed=true zurück. Eine andere Anfrage unter diesem Schlüssel gibt 409 IDEMPOTENCY_CONFLICT zurück.\n\nGenerieren Sie nach einem Timeout keinen weiteren Schlüssel. Wiederholen Sie die ursprüngliche Anfrage mit identischen Feldern. Weggelassene Werte erben nicht erneut geänderte Einstellungen. orderId hilft bei der Zuordnung einer Bestellung, ersetzt aber nicht Idempotency-Key und muss in der Speicherung nicht eindeutig sein.\n\nLesen und Seitennummerierung\n\nGET /api/v1/payments gibt Links und nextCursor zurück; GET /api/v1/payments/{id} gibt einen eigenen Link zurück. invoices:read ist erforderlich. Die Standardseitengröße ist 30; limit akzeptiert 1–100.\n\nGET-Listen- und Detailantworten enthalten link.payment: eine Zusammenfassung des zugehörigen Vorgangs, oder null, wenn kein Vorgang existiert. POST/PATCH-Antworten können dies weglassen; lesen Sie die Rechnung erneut, wenn Sie die Zusammenfassung benötigen. Der Linkstatus beschreibt separat, ob eine neue Zahlung beginnen darf. Kartendaten und private Schlüssel sind nie enthalten.\n\nÜbergeben Sie nextCursor unverändert über URLSearchParams. null markiert das Ende; unbekannte und andere Händler-IDs geben beide 404 zurück.\n\nGET /api/v1/payments?limit=30\nAuthorization: Bearer <server-side key>\n\nPausieren, fortsetzen und stornieren\n\nPATCH /api/v1/payments/{id} mit invoices:write akzeptiert nur {\"status\":\"active\"}, {\"status\":\"paused\"} oder {\"status\":\"cancelled\"}. Stornierung ist endgültig. expired wird aus der Ablaufzeit abgeleitet; eine abgelaufene Rechnung kann nicht verlängert werden.\n\nPreis, Kostenanteile, Beschreibung, orderId, Metadaten und Ablauf sind unveränderlich. Erstellen Sie eine andere Rechnung für andere Bedingungen. Eine Änderung der Verfügbarkeit gibt invoice.updated aus, kein Ereignis für erfolgreiche Zahlung.\n\nDie Kundenantwort\n\nGET /api/checkout/{token}?method=card gibt die öffentliche Rechnung, Angebot, Methodenverfügbarkeit und vorhandenen Vorgang zurück. Eigentümer-Metadaten, Geheimnisse und Guthaben werden nicht offengelegt.\n\nPOST /api/checkout/{token}/pay erfordert den Site-Origin und eine konkrete Methode. Kartendaten werden nur als versiegelt akzeptiert: {intent,jwe}, nachdem der Browser /card-intent erhalten hat. Bankcodes sind verschlüsselt und werden über /code gesendet. Krypto verwendet eine gespeicherte USDT-Rechnung und ein verfügbares Münz-/Netzwerkpaar.\n\nEine neue Zahlung und Kartenabsicht erfordern, dass der neueste Website-Review-Antrag des Händlers genehmigt wurde. Die Genehmigung allein verbindet das Zahlungsgateway nicht. Wenn die Überprüfung nach dem Versand geändert wird, bleibt der bestehende Vorgang für Statusabfragen, Abgleich und einen angefragten Bankcode verfügbar.\n\nEine fehlende Live-Verbindung gibt GATEWAY_NOT_CONNECTED zurück; eine inkompatible Zuordnung wird nie durch eine andere Berechnung ersetzt. Status und reconcile lesen den ursprünglichen Vorgang ohne doppelte Belastung.\n\nCheckout-Widget\n\nZahlung mit Webhooks bestätigen\n\nMehrere Geschäfte und ein USD-Basispreis\n\nWählen Sie Alle Geschäfte für aggregierte Analysen und Betrieb, oder wählen Sie ein Geschäft für dessen eigene Aufzeichnungen. Jedes Geschäft hat eine separate storeId, einen Namen, einen MwSt-Standardwert, Rechnungen, API-Schlüssel, Webhook-Endpunkte, Ereignisverlauf und Website-Anwendung. Benachrichtigungen und Support-Tickets gehören zum Konto. Ein Konto kann bis zu 100 Geschäfte erstellen. Vorhandene Datensätze verbleiben im ersten Geschäft.\n\nNeue Workspace-Rechnungen verwenden pricingMode=\"universal\" und einen USD-Basispreis. Any umfasst Karte, Alipay, SBP und Krypto; ein Händler kann eine Teilmenge auswählen. Karten und Alipay berechnen USD. SBP berechnet RUB unter Verwendung des USD/RUB-Referenzkurses der Bank von Russland. Krypto berechnet USDT gemäß der expliziten Rechnungsregel 1 USD = 1 USDT. Dies ist eine Rechnungsumrechnungsregel, kein Markt-USDT-Kurs. Das Gateway liefert den Kurs der ausgewählten Münze, den genauen Überweisungsbetrag und Anweisungen vor der Überweisung.\n\nDer Referenzkurs und beide Beträge werden bei der Erstellung eingefroren. Rechnungen mit RUB-Umrechnung verfallen innerhalb von 24 Stunden. Wenn der Referenzkurs nicht abgerufen werden kann, schlägt die Erstellung mit FX_UNAVAILABLE fehl; es wird kein erfundener oder veralteter Ersatzkurs verwendet. Der Basisbetrag Minor und Angebote verwenden die USD-Buchungswährung. quotes[method].settlement enthält das native Belastungsangebot. Der öffentliche Checkout legt die ausgewählte Belastungswährung in currency, den ursprünglichen Preis in baseAmountMinor/baseCurrency und den Referenzkurs in fx offen. Sobald eine Zahlung ausgelöst wurde, kann ihre Methode nicht geändert werden; eine Rechnung hat einen Gateway-Vorgang.\n\nErstellen Sie einen API-Schlüssel im vorgesehenen Geschäft und senden Sie Authorization: Bearer <key> von Ihrem Server. Seine Geschäftsbindung ist unveränderlich; X-Kevmi-Store kann ihm keinen Zugriff auf ein anderes Geschäft gewähren. Browser-Sitzungen wählen X-Kevmi-Store: <storeId>; wenn es weggelassen wird, wird das erste Geschäft ausgewählt. Der Wert all wird nur von GET /api/account/dashboard und GET /api/payment-links akzeptiert. Mutationen erfordern ein ausgewähltes Geschäft, Origin und X-CSRF-Token. Konto-IDs und Geschäfts-IDs sind unterschiedliche Kennungen.\n\nAus Kompatibilitätsgründen behalten API-Anfragen ohne pricingMode=\"universal\" native Preise und die ursprünglichen Währungsbeschränkungen bei. Bestehende Rechnungen werden nie neu berechnet. Bestätigte Zahlungseingänge in Analysen spiegeln verifizierte Zahlungen abzüglich gespeicherter Rechnungsausgaben wider; sie sind kein abhebbarer Saldo. Legacy-Rechnungswährungen bleiben getrennt, und Auszahlungen werden mit dem Support vereinbart. Führen Sie eine Bestellung erst aus, nachdem Sie payment.fulfillmentReady=true und payment.status=\"succeeded\" über die Server-API, den Ereignisverlauf oder einen signierten Webhook geprüft haben.",
      "readMinutes": 7
    },
    {
      "id": "auth-api",
      "title": "Authentifizierungs- und Sitzungs-API",
      "summary": "Die Anmeldung verwendet eine kurzlebige Herausforderung, eine Telegram-Bestätigung und den Nachweis der Kontrolle über den ursprünglichen Browser. Eine vom Client gelieferte Telegram-ID ist kein Identitätsnachweis.",
      "group": "developers",
      "url": "/docs/auth-api",
      "tags": [
        "Authentifizierung",
        "Sitzung",
        "CSRF",
        "Herausforderung",
        "API"
      ],
      "sections": [
        {
          "id": "start",
          "title": "Anmeldung starten",
          "paragraphs": [
            "POST /api/auth/telegram/start akzeptiert ein leeres JSON-Objekt {}. Es erfordert die exakte Anwendungs-Origin und einen verfügbaren Bot. Der Server erstellt eine Herausforderung, die 300 Sekunden dauert, sowie ein geschütztes Browser-Nachweis-Cookie.",
            "Die 201-Antwort enthält challengeId, code, expiresAt und telegramUrl. Das Nachweis-Cookie ist vom Deep Link ausgeschlossen und für JavaScript unzugänglich. Das Limit beträgt sechs Starts pro Minute pro gehashter Adresse."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": {
            "language": "JavaScript",
            "code": "const response = await fetch('/api/auth/telegram/start', {\n  method: 'POST',\n  headers: { 'Content-Type': 'application/json' },\n  body: '{}'\n});\nconst challenge = await response.json();\n// Show code and telegramUrl to the user."
          },
          "note": "",
          "links": []
        },
        {
          "id": "complete",
          "title": "Auf Bestätigung warten",
          "paragraphs": [
            "POST /api/auth/telegram/complete akzeptiert {challengeId}. Es erfordert Origin und das ursprüngliche Browser-Nachweis-Cookie. Bis zur Bestätigung lautet die Antwort 202 {status: \"pending\"}.",
            "Nach der Bestätigung gibt 200 status=authenticated, user, csrfToken und expiresAt zurück. Eine Sitzung wird genau einmal ausgestellt. Abgelaufene Herausforderungen geben 410 zurück; verwendete oder abgebrochene Herausforderungen geben 409 zurück."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": {
            "language": "JavaScript",
            "code": "const response = await fetch('/api/auth/telegram/complete', {\n  method: 'POST',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({ challengeId: challenge.challengeId })\n});\nif (response.status === 202) {\n  // Poll again after a delay; do not create a new challenge.\n}"
          },
          "note": "",
          "links": []
        },
        {
          "id": "me",
          "title": "Sitzung lesen",
          "paragraphs": [
            "GET /api/auth/me gibt 200 {authenticated:false} zurück, wenn keine gültige Sitzung existiert. Eine angemeldete Antwort enthält den Benutzer, das CSRF-Token und das Ablaufdatum.",
            "Das __Host-kevmi-session-Cookie hält bis zu 24 Stunden mit Secure, HttpOnly, SameSite=Lax und Path=/. Die Datenbank speichert einen SHA-256-Hash seines Tokens. Ein Profilformular kann das Cookie weder lesen noch ersetzen."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "write",
          "title": "Kontoänderungen",
          "paragraphs": [
            "Mutationen erfordern die Sitzung, die exakte Origin und das aktuelle X-CSRF-Token. Sec-Fetch-Site: cross-site wird abgelehnt. Der Server bietet keinen beliebigen CORS-Zugriff an.",
            "Die Konto-ID stammt aus der Sitzung, nicht aus der Anforderungseingabe. Fehlende und Datensätze eines anderen Benutzers geben keine unterscheidbaren Eigentumsdetails preis."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "logout",
          "title": "Abmelden",
          "paragraphs": [
            "POST /api/auth/logout beendet die aktuelle Sitzung und löscht das Cookie. Origin und CSRF sind erforderlich; der Body wird nicht gelesen. Telegram /logout beendet ebenfalls alle Kontositzungen.",
            "Cookies wechseln nicht automatisch zu einer anderen Domain. Beim Ändern der Dienst-Domain APP_ORIGIN und den Bot-Webhook aktualisieren und sich dann erneut anmelden."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "assistant-admin-v16",
          "title": "Assistent, Support und Projektverwaltung",
          "paragraphs": [
            "Aktivieren Sie „Zugriff auf meine Daten im Chat erlauben“, wenn Sie Hilfe bei privaten Vorgängen benötigen. Eine Webanfrage mit includeAccount=true erfordert eine gültige Sitzung, Origin und X-CSRF-Token; X-Kevmi-Store wählt einen eigenen Store oder alle eigenen Stores aus. Ohne Berechtigung verwendet der Assistent öffentliche Dokumentation. In Telegram aktiviert eine separate Schaltfläche den Zugriff, nachdem der Absender identifiziert wurde.",
            "Das Tool read_account liest eigene Stores, Rechnungen mit bestätigtem Zahlungsstatus, Ereignisse, Anträge und Supportanfragen mit Fachantworten. Es gibt 30 Datensätze und nextPage zurück; ältere Datensätze sind über Paginierung verfügbar. Lesevorgänge pro Antwort sind begrenzt, daher muss eine unvollständige Stichprobe offengelegt werden. API-Schlüssel, Webhook-Geheimnisse, Kartendaten und Sitzungen werden dem Tool nicht bereitgestellt. Es kann keine Zahlungen belasten, auszahlen, erstatten oder Einstellungen ändern.",
            "Das Erstellen einer Supportanfrage im Arbeitsbereich oder in Telegram platziert eine separate Administratorwarnung in einer dauerhaften Warteschlange. Sie verlinkt auf /admin/tickets?ticket=<id>; vorübergehende Telegram-Fehler werden erneut versucht. Die Wiederherstellung nimmt auch ältere offene Anfragen ohne Warnung auf. Administratoren antworten auf der Anfrageseite; die Antwort wird im Benutzerarbeitsbereich gespeichert und über Telegram gesendet, wenn Support-Benachrichtigungen aktiviert sind.",
            "Der Bot verwendet Inline-Schaltflächen für das Hauptmenü, Stores, Benachrichtigungen, Support, Sicherheit und Sprache. Die Navigation bearbeitet die aktuelle Nachricht; ein nicht verfügbares altes Menü wird ersetzt. Zahlungs- und Sicherheitsbenachrichtigungen werden nicht als Wegwerf-Navigation behandelt. Das Abmelden über das Menü erfordert eine Bestätigung. Der explizite Befehl /logout beendet weiterhin jede Kontositzung.",
            "Das Panel /admin/project ist auf Telegram-IDs in der serverseitigen Allowlist MODERATOR_TELEGRAM_IDS beschränkt. Es umfasst Benutzer, Stores, Vorgänge, Schlüsselwiderruf, Deaktivierung von Webhooks, Pausieren von Rechnungen, Annahmesteuerungen und ein Prüfprotokoll. Mutationen erfordern CSRF und einen Grund. Das Panel kann einen Administrator nicht einschränken oder eine Zahlung manuell als erfolgreich erklären. Die Einschränkung eines Eigentümers beendet Sitzungen und blockiert API-Schlüsselzugriff; die Einschränkung eines Stores stoppt neue Vorgänge. Der Verlauf bleibt erhalten.",
            "Das öffentliche Angebot ist unter /public-offer und die Datenschutzrichtlinie unter /privacy-policy in jeder aktivierten Sprache verfügbar. Suchen Sie Münzen nach Name oder Tickersymbol. Ein Netzwerkauswahlfeld erscheint nur, wenn mehrere Live-Netzwerke verfügbar sind. Ein einzelnes Netzwerk wird automatisch ausgewählt und bleibt in der Bestätigung benannt. Die Live-Verfügbarkeit des Gateways bestimmt die wählbaren Paare; der Referenzkatalog aktiviert keinen Dienst.",
            "Verwenden Sie update.sh für routinemäßige Web-App-Veröffentlichungen: Kandidaten bauen, Migrationsverlauf prüfen, SQLite online sichern, einen zweiten Container starten, ihn verifizieren und Caddy elegant umschalten. Gateway, PostgreSQL und Mail werden nicht neu gestartet. Frühere statische Assets bleiben für geöffnete Tabs verfügbar. Eine neue Migration erfordert explizite überprüfte Genehmigung; eine inkompatible Schemaänderung ist keine nahtlose Bereitstellung."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": [
            {
              "label": "Öffentliches Angebot",
              "href": "/public-offer"
            },
            {
              "label": "Datenschutzrichtlinie",
              "href": "/privacy-policy"
            }
          ]
        }
      ],
      "body": "Anmeldung starten\n\nPOST /api/auth/telegram/start akzeptiert ein leeres JSON-Objekt {}. Es erfordert die exakte Anwendungs-Origin und einen verfügbaren Bot. Der Server erstellt eine Herausforderung, die 300 Sekunden dauert, sowie ein geschütztes Browser-Nachweis-Cookie.\n\nDie 201-Antwort enthält challengeId, code, expiresAt und telegramUrl. Das Nachweis-Cookie ist vom Deep Link ausgeschlossen und für JavaScript unzugänglich. Das Limit beträgt sechs Starts pro Minute pro gehashter Adresse.\n\nconst response = await fetch('/api/auth/telegram/start', {\n  method: 'POST',\n  headers: { 'Content-Type': 'application/json' },\n  body: '{}'\n});\nconst challenge = await response.json();\n// Show code and telegramUrl to the user.\n\nAuf Bestätigung warten\n\nPOST /api/auth/telegram/complete akzeptiert {challengeId}. Es erfordert Origin und das ursprüngliche Browser-Nachweis-Cookie. Bis zur Bestätigung lautet die Antwort 202 {status: \"pending\"}.\n\nNach der Bestätigung gibt 200 status=authenticated, user, csrfToken und expiresAt zurück. Eine Sitzung wird genau einmal ausgestellt. Abgelaufene Herausforderungen geben 410 zurück; verwendete oder abgebrochene Herausforderungen geben 409 zurück.\n\nconst response = await fetch('/api/auth/telegram/complete', {\n  method: 'POST',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({ challengeId: challenge.challengeId })\n});\nif (response.status === 202) {\n  // Poll again after a delay; do not create a new challenge.\n}\n\nSitzung lesen\n\nGET /api/auth/me gibt 200 {authenticated:false} zurück, wenn keine gültige Sitzung existiert. Eine angemeldete Antwort enthält den Benutzer, das CSRF-Token und das Ablaufdatum.\n\nDas __Host-kevmi-session-Cookie hält bis zu 24 Stunden mit Secure, HttpOnly, SameSite=Lax und Path=/. Die Datenbank speichert einen SHA-256-Hash seines Tokens. Ein Profilformular kann das Cookie weder lesen noch ersetzen.\n\nKontoänderungen\n\nMutationen erfordern die Sitzung, die exakte Origin und das aktuelle X-CSRF-Token. Sec-Fetch-Site: cross-site wird abgelehnt. Der Server bietet keinen beliebigen CORS-Zugriff an.\n\nDie Konto-ID stammt aus der Sitzung, nicht aus der Anforderungseingabe. Fehlende und Datensätze eines anderen Benutzers geben keine unterscheidbaren Eigentumsdetails preis.\n\nAbmelden\n\nPOST /api/auth/logout beendet die aktuelle Sitzung und löscht das Cookie. Origin und CSRF sind erforderlich; der Body wird nicht gelesen. Telegram /logout beendet ebenfalls alle Kontositzungen.\n\nCookies wechseln nicht automatisch zu einer anderen Domain. Beim Ändern der Dienst-Domain APP_ORIGIN und den Bot-Webhook aktualisieren und sich dann erneut anmelden.\n\nAssistent, Support und Projektverwaltung\n\nAktivieren Sie „Zugriff auf meine Daten im Chat erlauben“, wenn Sie Hilfe bei privaten Vorgängen benötigen. Eine Webanfrage mit includeAccount=true erfordert eine gültige Sitzung, Origin und X-CSRF-Token; X-Kevmi-Store wählt einen eigenen Store oder alle eigenen Stores aus. Ohne Berechtigung verwendet der Assistent öffentliche Dokumentation. In Telegram aktiviert eine separate Schaltfläche den Zugriff, nachdem der Absender identifiziert wurde.\n\nDas Tool read_account liest eigene Stores, Rechnungen mit bestätigtem Zahlungsstatus, Ereignisse, Anträge und Supportanfragen mit Fachantworten. Es gibt 30 Datensätze und nextPage zurück; ältere Datensätze sind über Paginierung verfügbar. Lesevorgänge pro Antwort sind begrenzt, daher muss eine unvollständige Stichprobe offengelegt werden. API-Schlüssel, Webhook-Geheimnisse, Kartendaten und Sitzungen werden dem Tool nicht bereitgestellt. Es kann keine Zahlungen belasten, auszahlen, erstatten oder Einstellungen ändern.\n\nDas Erstellen einer Supportanfrage im Arbeitsbereich oder in Telegram platziert eine separate Administratorwarnung in einer dauerhaften Warteschlange. Sie verlinkt auf /admin/tickets?ticket=<id>; vorübergehende Telegram-Fehler werden erneut versucht. Die Wiederherstellung nimmt auch ältere offene Anfragen ohne Warnung auf. Administratoren antworten auf der Anfrageseite; die Antwort wird im Benutzerarbeitsbereich gespeichert und über Telegram gesendet, wenn Support-Benachrichtigungen aktiviert sind.\n\nDer Bot verwendet Inline-Schaltflächen für das Hauptmenü, Stores, Benachrichtigungen, Support, Sicherheit und Sprache. Die Navigation bearbeitet die aktuelle Nachricht; ein nicht verfügbares altes Menü wird ersetzt. Zahlungs- und Sicherheitsbenachrichtigungen werden nicht als Wegwerf-Navigation behandelt. Das Abmelden über das Menü erfordert eine Bestätigung. Der explizite Befehl /logout beendet weiterhin jede Kontositzung.\n\nDas Panel /admin/project ist auf Telegram-IDs in der serverseitigen Allowlist MODERATOR_TELEGRAM_IDS beschränkt. Es umfasst Benutzer, Stores, Vorgänge, Schlüsselwiderruf, Deaktivierung von Webhooks, Pausieren von Rechnungen, Annahmesteuerungen und ein Prüfprotokoll. Mutationen erfordern CSRF und einen Grund. Das Panel kann einen Administrator nicht einschränken oder eine Zahlung manuell als erfolgreich erklären. Die Einschränkung eines Eigentümers beendet Sitzungen und blockiert API-Schlüsselzugriff; die Einschränkung eines Stores stoppt neue Vorgänge. Der Verlauf bleibt erhalten.\n\nDas öffentliche Angebot ist unter /public-offer und die Datenschutzrichtlinie unter /privacy-policy in jeder aktivierten Sprache verfügbar. Suchen Sie Münzen nach Name oder Tickersymbol. Ein Netzwerkauswahlfeld erscheint nur, wenn mehrere Live-Netzwerke verfügbar sind. Ein einzelnes Netzwerk wird automatisch ausgewählt und bleibt in der Bestätigung benannt. Die Live-Verfügbarkeit des Gateways bestimmt die wählbaren Paare; der Referenzkatalog aktiviert keinen Dienst.\n\nVerwenden Sie update.sh für routinemäßige Web-App-Veröffentlichungen: Kandidaten bauen, Migrationsverlauf prüfen, SQLite online sichern, einen zweiten Container starten, ihn verifizieren und Caddy elegant umschalten. Gateway, PostgreSQL und Mail werden nicht neu gestartet. Frühere statische Assets bleiben für geöffnete Tabs verfügbar. Eine neue Migration erfordert explizite überprüfte Genehmigung; eine inkompatible Schemaänderung ist keine nahtlose Bereitstellung.\n\nÖffentliches Angebot\n\nDatenschutzrichtlinie",
      "readMinutes": 3
    },
    {
      "id": "errors",
      "title": "Fehler und Wiederholungen",
      "summary": "API-Fehler verwenden ein einheitliches Format. Der Code ist für die Anwendungslogik; die Nachricht erklärt das Problem. Benutzereingaben intakt lassen und eine klare nächste Schritt anbieten.",
      "group": "developers",
      "url": "/docs/errors",
      "tags": [
        "Fehler",
        "429",
        "503",
        "Wiederholung",
        "Status"
      ],
      "sections": [
        {
          "id": "format",
          "title": "Ein Fehlerformat",
          "paragraphs": [
            "Antworten enthalten keine Stacktraces, SQL, Token oder eine vollständige Antwort eines externen Anbieters. Zeigen Sie einem Kunden keine rohen internen Protokolle an."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": {
            "language": "JSON",
            "code": "{\n  \"error\": {\n    \"code\": \"GATEWAY_NOT_CONNECTED\",\n    \"message\": \"Financial operations are temporarily unavailable. Try later or contact support.\"\n  }\n}"
          },
          "note": "",
          "links": []
        },
        {
          "id": "codes",
          "title": "Gängige Fehlergruppen",
          "paragraphs": [],
          "bullets": [],
          "steps": [],
          "table": {
            "headers": [
              "HTTP",
              "Beispiele",
              "Nächster Schritt"
            ],
            "rows": [
              [
                "400",
                "INVALID_JSON, UNKNOWN_FIELD, INVALID_INPUT",
                "Eingabe und erlaubte Felder prüfen"
              ],
              [
                "401",
                "AUTH_REQUIRED, SESSION_EXPIRED",
                "Erneut anmelden"
              ],
              [
                "403",
                "INVALID_ORIGIN, CSRF_REQUIRED",
                "Origin und aktuelle Sitzung prüfen"
              ],
              [
                "404",
                "NOT_FOUND, TICKET_NOT_FOUND",
                "Adresse und Eigentum prüfen"
              ],
              [
                "409",
                "CHALLENGE_UNAVAILABLE",
                "Eine neue Anmeldung starten"
              ],
              [
                "410",
                "CHALLENGE_EXPIRED",
                "Einen neuen Anmelde-Link erstellen"
              ],
              [
                "413",
                "REQUEST_TOO_LARGE",
                "Den Anforderungsbody verkleinern"
              ],
              [
                "415",
                "JSON_REQUIRED",
                "application/json senden"
              ],
              [
                "429",
                "RATE_LIMITED",
                "Häufigkeit reduzieren und warten"
              ],
              [
                "503",
                "GATEWAY_NOT_CONNECTED, SERVICE_UNAVAILABLE",
                "Verfügbarkeit prüfen oder es später versuchen"
              ]
            ]
          },
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "rate",
          "title": "Ratenlimits",
          "paragraphs": [],
          "bullets": [],
          "steps": [],
          "table": {
            "headers": [
              "Maßnahme",
              "Limit"
            ],
            "rows": [
              [
                "Anmeldung starten",
                "6 pro Minute pro gehashter Adresse"
              ],
              [
                "Eine Herausforderung prüfen",
                "90 pro Minute pro Herausforderung"
              ],
              [
                "Wissensfrage",
                "12 pro Minute pro gehashter Adresse mit D1"
              ],
              [
                "Einen Server-Link erstellen",
                "20 pro Minute pro Benutzer"
              ],
              [
                "Händler-API",
                "90 Anforderungen pro Minute pro Schlüssel"
              ],
              [
                "Neue Anwendung",
                "Fünf pro Tag pro Benutzer"
              ],
              [
                "Anwendung fortsetzen / Moderatorenentscheidung",
                "30 pro Minute pro Benutzer für jede Aktion"
              ],
              [
                "KI-Website-Überprüfung",
                "30 pro Stunde dienstweit"
              ],
              [
                "Kasse lesen oder Zahlungsversuch",
                "90 pro Minute pro gehashte Adresse"
              ],
              [
                "Supportanfrage erstellen",
                "6 pro Stunde pro Benutzer"
              ],
              [
                "Benachrichtigung testen",
                "3 pro Stunde pro Benutzer"
              ],
              [
                "KI-Generierung",
                "60 pro Stunde dienstweit standardmäßig"
              ]
            ]
          },
          "code": null,
          "note": "Retry-After: 60 bedeutet eine Verzögerung, keine Garantie, dass ein Stundenkontingent zurückgesetzt wurde.",
          "links": []
        },
        {
          "id": "retry",
          "title": "Was erneut versucht werden kann",
          "paragraphs": [
            "Ein Lesevorgang kann nach einer Verzögerung bei einem vorübergehenden Netzwerkfehler erneut versucht werden. Bevor Sie eine Mutation erneut versuchen, prüfen Sie, ob der ursprüngliche Vorgang abgeschlossen wurde; eine verlorene Antwort beweist keinen Fehler.",
            "Finanzielle Vorgänge erfordern Idempotenz und eine Serverstatusprüfung. Eine Client-Weiterleitung zu einer Ergebniseite ist kein Ersatz für eine Bestätigung."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "report",
          "title": "Was in eine Anfrage aufgenommen werden soll",
          "paragraphs": [],
          "bullets": [
            "Die Seite und die Aktion unmittelbar vor dem Fehler.",
            "Uhrzeit, Zeitzone und der sichtbare Fehlercode.",
            "Ihre Rechnungs- oder Supportanfrage-Referenz, falls verfügbar.",
            "Eine kurze Beschreibung des erwarteten Ergebnisses."
          ],
          "steps": [],
          "table": null,
          "code": null,
          "note": "Hängen Sie keine Cookies, Token, Autorisierungs-Header, CVV oder Bankcodes an.",
          "links": []
        }
      ],
      "body": "Ein Fehlerformat\n\nAntworten enthalten keine Stacktraces, SQL, Token oder eine vollständige Antwort eines externen Anbieters. Zeigen Sie einem Kunden keine rohen internen Protokolle an.\n\n{\n  \"error\": {\n    \"code\": \"GATEWAY_NOT_CONNECTED\",\n    \"message\": \"Financial operations are temporarily unavailable. Try later or contact support.\"\n  }\n}\n\nGängige Fehlergruppen\n\nHTTP · Beispiele · Nächster Schritt\n400 · INVALID_JSON, UNKNOWN_FIELD, INVALID_INPUT · Eingabe und erlaubte Felder prüfen\n401 · AUTH_REQUIRED, SESSION_EXPIRED · Erneut anmelden\n403 · INVALID_ORIGIN, CSRF_REQUIRED · Origin und aktuelle Sitzung prüfen\n404 · NOT_FOUND, TICKET_NOT_FOUND · Adresse und Eigentum prüfen\n409 · CHALLENGE_UNAVAILABLE · Eine neue Anmeldung starten\n410 · CHALLENGE_EXPIRED · Einen neuen Anmelde-Link erstellen\n413 · REQUEST_TOO_LARGE · Den Anforderungsbody verkleinern\n415 · JSON_REQUIRED · application/json senden\n429 · RATE_LIMITED · Häufigkeit reduzieren und warten\n503 · GATEWAY_NOT_CONNECTED, SERVICE_UNAVAILABLE · Verfügbarkeit prüfen oder es später versuchen\n\nRatenlimits\n\nMaßnahme · Limit\nAnmeldung starten · 6 pro Minute pro gehashter Adresse\nEine Herausforderung prüfen · 90 pro Minute pro Herausforderung\nWissensfrage · 12 pro Minute pro gehashter Adresse mit D1\nEinen Server-Link erstellen · 20 pro Minute pro Benutzer\nHändler-API · 90 Anforderungen pro Minute pro Schlüssel\nNeue Anwendung · Fünf pro Tag pro Benutzer\nAnwendung fortsetzen / Moderatorenentscheidung · 30 pro Minute pro Benutzer für jede Aktion\nKI-Website-Überprüfung · 30 pro Stunde dienstweit\nKasse lesen oder Zahlungsversuch · 90 pro Minute pro gehashte Adresse\nSupportanfrage erstellen · 6 pro Stunde pro Benutzer\nBenachrichtigung testen · 3 pro Stunde pro Benutzer\nKI-Generierung · 60 pro Stunde dienstweit standardmäßig\n\nRetry-After: 60 bedeutet eine Verzögerung, keine Garantie, dass ein Stundenkontingent zurückgesetzt wurde.\n\nWas erneut versucht werden kann\n\nEin Lesevorgang kann nach einer Verzögerung bei einem vorübergehenden Netzwerkfehler erneut versucht werden. Bevor Sie eine Mutation erneut versuchen, prüfen Sie, ob der ursprüngliche Vorgang abgeschlossen wurde; eine verlorene Antwort beweist keinen Fehler.\n\nFinanzielle Vorgänge erfordern Idempotenz und eine Serverstatusprüfung. Eine Client-Weiterleitung zu einer Ergebniseite ist kein Ersatz für eine Bestätigung.\n\nWas in eine Anfrage aufgenommen werden soll\n\nDie Seite und die Aktion unmittelbar vor dem Fehler.\n\nUhrzeit, Zeitzone und der sichtbare Fehlercode.\n\nIhre Rechnungs- oder Supportanfrage-Referenz, falls verfügbar.\n\nEine kurze Beschreibung des erwarteten Ergebnisses.\n\nHängen Sie keine Cookies, Token, Autorisierungs-Header, CVV oder Bankcodes an.",
      "readMinutes": 3
    },
    {
      "id": "security",
      "title": "Integrationssicherheit",
      "summary": "Vertrauenswürdige Prüfungen laufen auf dem Server. Der Browser steuert die Oberfläche, kann aber keine Identität, Finanzstatus oder Endbeträge feststellen.",
      "group": "developers",
      "url": "/docs/security",
      "tags": [
        "Sicherheit",
        "CSRF",
        "Cookie",
        "Eigentum",
        "Geheimnis",
        "Idempotenz"
      ],
      "sections": [
        {
          "id": "identity",
          "title": "Sitzungen und Eigentum",
          "paragraphs": [
            "Eine gültige Serversitzung identifiziert das Konto. Einstellungen, Anfragen, Benachrichtigungen und Links werden nach Eigentümer gefiltert. Eine von einem Formular übermittelte userId kann diesen Filter nicht ersetzen.",
            "Mutationen prüfen zusätzlich Origin und CSRF. Eine öffentliche Rechnungs-URL legt nur diese Rechnung offen und gewährt keinen Kontozugriff."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "secrets",
          "title": "Geheimnisse bleiben auf dem Server",
          "paragraphs": [
            "Geheimnisse dürfen nicht in Git, HTML, Client-JavaScript, OpenAPI-Beispielen, llms-Dateien oder Supportnachrichten erscheinen. Der öffentliche Bot-Benutzername ist kein Geheimnis."
          ],
          "bullets": [
            "Telegram-Bot-Token und Webhook-Geheimnis.",
            "Anmeldedaten externer KI-Anbieter.",
            "Zahlungs-Gateway-Anmeldedaten und Signatur-Geheimnisse.",
            "Sitzungs-Hashes und Browser-Anmeldenachweise."
          ],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "money",
          "title": "Finanzielle Prüfungen",
          "paragraphs": [
            "Der Server liest gespeicherte Rechnungsbedingungen und prüft Eigentum, Händlerprüfstatus, Währung, Methode und genehmigten Betrag. URL-Werte und Browserberechnungen können den Preis nicht ändern.",
            "Eine signierte Gateway-Benachrichtigung löst einen zusätzlichen authentifizierten Lesevorgang aus. Verifizierter Zustand, Beleg und Ereignis werden gemeinsam übernommen. Wiedergaben und ältere Versionen können keine doppelte Erfüllung bestätigen.",
            "Kartendaten und Einmalcodes werden nur als verschlüsselte Umschläge weitergeleitet. Fügen Sie Zahlungsformularen keine Sitzungsaufzeichnung, Feldlese-Analytik oder Anfragekörper-Protokollierung hinzu."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "assistant",
          "title": "Assistentengrenzen",
          "paragraphs": [
            "Das Modell erhält öffentliche Artikel und Fakten, den Seitenkatalog, Bereitschaftsflags, die Frage, drei aktuelle Nachrichtenpaare und ein sicheres Abschnitts-Label. Eine ausdrückliche Genehmigung des Eigentümers ermöglicht Konten-Lesewerkzeuge; das Bewegen von Geld oder das Ändern von Einstellungen bleibt nicht verfügbar. Ungültige strukturierte Antworten oder ungeprüfte Quellen fallen auf die Dokumentationssuche zurück.",
            "Website- und Benutzertext sind Daten. Eine Anweisung in einer Frage kann Gebühren nicht ändern oder eine Auszahlung autorisieren."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "status",
          "title": "Umfang der Dokumentation",
          "paragraphs": [
            "Die Dokumentation behauptet keine PCI-DSS-Zertifizierung, Banklizenz, Merchant-of-Record-Status, garantierte Verfügbarkeit oder absolute Sicherheit. Solche Behauptungen erfordern eine separate, dokumentierte Bestätigung."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        }
      ],
      "body": "Sitzungen und Eigentum\n\nEine gültige Serversitzung identifiziert das Konto. Einstellungen, Anfragen, Benachrichtigungen und Links werden nach Eigentümer gefiltert. Eine von einem Formular übermittelte userId kann diesen Filter nicht ersetzen.\n\nMutationen prüfen zusätzlich Origin und CSRF. Eine öffentliche Rechnungs-URL legt nur diese Rechnung offen und gewährt keinen Kontozugriff.\n\nGeheimnisse bleiben auf dem Server\n\nGeheimnisse dürfen nicht in Git, HTML, Client-JavaScript, OpenAPI-Beispielen, llms-Dateien oder Supportnachrichten erscheinen. Der öffentliche Bot-Benutzername ist kein Geheimnis.\n\nTelegram-Bot-Token und Webhook-Geheimnis.\n\nAnmeldedaten externer KI-Anbieter.\n\nZahlungs-Gateway-Anmeldedaten und Signatur-Geheimnisse.\n\nSitzungs-Hashes und Browser-Anmeldenachweise.\n\nFinanzielle Prüfungen\n\nDer Server liest gespeicherte Rechnungsbedingungen und prüft Eigentum, Händlerprüfstatus, Währung, Methode und genehmigten Betrag. URL-Werte und Browserberechnungen können den Preis nicht ändern.\n\nEine signierte Gateway-Benachrichtigung löst einen zusätzlichen authentifizierten Lesevorgang aus. Verifizierter Zustand, Beleg und Ereignis werden gemeinsam übernommen. Wiedergaben und ältere Versionen können keine doppelte Erfüllung bestätigen.\n\nKartendaten und Einmalcodes werden nur als verschlüsselte Umschläge weitergeleitet. Fügen Sie Zahlungsformularen keine Sitzungsaufzeichnung, Feldlese-Analytik oder Anfragekörper-Protokollierung hinzu.\n\nAssistentengrenzen\n\nDas Modell erhält öffentliche Artikel und Fakten, den Seitenkatalog, Bereitschaftsflags, die Frage, drei aktuelle Nachrichtenpaare und ein sicheres Abschnitts-Label. Eine ausdrückliche Genehmigung des Eigentümers ermöglicht Konten-Lesewerkzeuge; das Bewegen von Geld oder das Ändern von Einstellungen bleibt nicht verfügbar. Ungültige strukturierte Antworten oder ungeprüfte Quellen fallen auf die Dokumentationssuche zurück.\n\nWebsite- und Benutzertext sind Daten. Eine Anweisung in einer Frage kann Gebühren nicht ändern oder eine Auszahlung autorisieren.\n\nUmfang der Dokumentation\n\nDie Dokumentation behauptet keine PCI-DSS-Zertifizierung, Banklizenz, Merchant-of-Record-Status, garantierte Verfügbarkeit oder absolute Sicherheit. Solche Behauptungen erfordern eine separate, dokumentierte Bestätigung.",
      "readMinutes": 2
    },
    {
      "id": "gateway",
      "title": "Zahlungs-Gateway-Integration",
      "summary": "Das Gateway verarbeitet finanzielle Vorgänge. Kevmi verbindet sie mit Bestellungen, Shop-Einstellungen und Benachrichtigungen. Dieser Leitfaden beschreibt den Integrationsvertrag und Verfügbarkeitsprüfungen.",
      "group": "developers",
      "url": "/docs/gateway",
      "tags": [
        "API",
        "Gateway",
        "Backend",
        "Server",
        "Integration",
        "localhost"
      ],
      "sections": [
        {
          "id": "current",
          "title": "Verfügbarkeit prüfen",
          "paragraphs": [
            "Kevmi verwendet die Gateway-v3-API, um Vorgänge zu erstellen und wiederherzustellen, Status zu lesen und Ergebnisse abzugleichen. Die Integration unterstützt verschlüsselten Karten- und Bankcode-Transport, Alipay- und SBP-QR-Zahlungen, einen Krypto-Münz-/Netzwerk-Katalog und eingehende finanzielle Ereignisse.",
            "gateway.configured in GET /api/config meldet, ob die erforderlichen Verbindungseinstellungen vorhanden sind. Dieser Endpunkt prüft das Gateway nicht; gateway.connected=false bedeutet hier, dass die Konnektivität nicht verifiziert wurde. Für eine bestimmte Rechnung lesen Sie invoice.availability in GET /api/checkout/{token}: Sie prüft Methode, Betrag, Bedingungen und Händlergenehmigung. Das Kompatibilitätsfeld invoice.gatewayConnected spiegelt availability.available wider und ist weder ein Health-Check noch eine Garantie für Zahlungsgenehmigung.",
            "Eine neue Zahlung und Kartenabsicht erfordern, dass der neueste Website-Review-Antrag des Händlers genehmigt wurde. Die Genehmigung allein verbindet das Zahlungsgateway nicht. Wenn die Überprüfung nach dem Versand geändert wird, bleibt der bestehende Vorgang für Statusabfragen, Abgleich und einen angefragten Bankcode verfügbar."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "required",
          "title": "Kunden-Checkout-Vertrag",
          "paragraphs": [
            "Sensible Daten werden im Browser mit RSA-OAEP-256 und A256GCM verschlüsselt. Der private Schlüssel bleibt auf dem Gateway. Kevmi validiert, dass die Absicht zu dieser Rechnung und diesem Zweck gehört, leitet den Umschlag weiter und speichert keine Klartext-Kartennummern, CVV, Käufername, E-Mail, Bankcodes oder den Umschlag selbst.",
            "Installieren Sie die Erweiterung für verschlüsselten Transport auf dem Gateway-Host, bevor Sie Karten aktivieren. Sie prüft Absichtssignatur, Ablauf, Wiedergabe, Bestellung und Beträge. Es gibt keinen Klartext-Fallback. Dies beschreibt den Schutzmechanismus, nicht PCI-Zertifizierung."
          ],
          "bullets": [],
          "steps": [],
          "table": {
            "headers": [
              "Kevmi-Route",
              "Zweck"
            ],
            "rows": [
              [
                "GET /api/checkout/{token}",
                "Rechnung, Angebot, Methodenverfügbarkeit und bestehende Zahlung"
              ],
              [
                "POST /api/checkout/{token}/card-intent",
                "Einmalige Absicht und öffentlicher Schlüssel für Zahlung oder Code"
              ],
              [
                "POST /api/checkout/{token}/pay",
                "Operation starten; Kartendaten versiegelt: {intent,jwe}"
              ],
              [
                "POST /api/checkout/{token}/code",
                "Verschlüsselter Einmalcode für die aktuelle Bank-Herausforderung"
              ],
              [
                "GET /api/checkout/{token}/status",
                "Ursprüngliche Operation ohne weitere Belastung lesen"
              ],
              [
                "POST /api/checkout/{token}/reconcile",
                "Ursprüngliche Operation explizit abgleichen"
              ],
              [
                "GET /api/checkout/{token}/crypto-services",
                "Aktuelle Münzen, Netzwerke und Limits für eine USDT-Rechnung"
              ]
            ]
          },
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "network",
          "title": "Hosting und Gateway-Konnektivität",
          "paragraphs": [
            "Kevmi unterstützt Site-Hosting auf Cloudflare Workers mit D1 und Self-Hosting auf Node.js mit SQLite. SQLite erfordert einen persistenten Speicher und Backups. Das Zahlungs-Gateway läuft als separater Dienst mit eigenem dauerhaften Speicher.",
            "Ein externes Gateway erfordert einen HTTPS-Ursprung, der vom Server erreichbar ist. Im Self-Hosting-Paket verbindet sich der Server mit einem festen Gateway-Dienst im privaten Container-Netzwerk; die API des Gateway-Dienstes ist nicht über das Internet erreichbar. Die öffentliche Website und Callbacks verwenden HTTPS. Der Browser verschlüsselt außerdem Kartendaten und Bankcodes, bevor sie Kevmi erreichen.",
            "localhost bezieht sich auf den aktuellen Server oder Container; es legt den Computer des Gateway-Betreibers nicht offen. Verbindungsschlüssel und Geheimnisse gehören ausschließlich in die Serverkonfiguration.",
            "Für eine benutzerdefinierte Domain setzen Sie vor dem Build einen öffentlichen HTTPS-Ursprung in NEXT_PUBLIC_SITE_URL. Dokumentation, kanonische Links und Indexierungsressourcen verwenden diesen Wert. Er akzeptiert nur ein Schema und einen Host mit optionalem Port, ohne Pfad, Query, Fragment oder Anmeldedaten. Gleichen Sie ihn mit APP_ORIGIN in der Serverkonfiguration ab."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "adapter",
          "title": "Berechnung und unterstützte Bedingungen",
          "paragraphs": [
            "Neue Workspace-Rechnungen verwenden einen USD-Basispreis, und Any bietet alle vier Methoden an. SBP rechnet zum eingefrorenen Referenzkurs der Bank von Russland in RUB um; Krypto verwendet die explizite 1:1-USD/USDT-Rechnungsregel. Legacy-native Preise bleiben für alte Rechnungen und API-Anfragen ohne pricingMode=universal verfügbar. Siehe Abschnitt zu mehreren Geschäften und USD-Preisen unten.",
            "Für eine neue Live-Karten- oder Alipay-Zahlung unterstützt das aktuelle Gateway nur feeCustomerPercent=0 und vatCustomerPercent=100: der Händler übernimmt die gesamte Bearbeitungsgebühr und die MwSt wird dem Kunden vollständig hinzugefügt. Andere Anteile können auf einer Rechnung gespeichert und berechnet werden, aber die Ausführung ist mit unsupported_allocation blockiert. Der Server ändert gespeicherte Bedingungen niemals stillschweigend. SBP- und USDT-Kryptozahlungen unterstützen jeden Bearbeitungsgebührenanteil und haben keine MwSt.",
            "Das Senden eines beliebigen total_cents ändert die Steuerberechnung des Anbieters nicht. Ein tatsächlicher Betrag, der vom gespeicherten Total abweicht, geht in die Prüfung und kann die Ausführung nicht bestätigen. Gateway-business_balance-Felder werden als Abrechnungsnachweis aufbewahrt und nicht als Kevmi-Händlerguthaben behandelt."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "activation",
          "title": "Verbindung eines Live-Gateways",
          "paragraphs": [
            "Die Verbindung des Gateways umfasst die Serverkonfiguration, Prüfungen für die ausgewählten Kanäle und die Verarbeitung verifizierter Finanzereignisse. Die Konfigurationsbereitschaft wird getrennt von der Anbieter-Konnektivität geprüft. Eine erfolgreiche Zahlung wird nach Prüfung des Operationsstatus und des Betrags akzeptiert. Bereitstellungsanweisungen finden Sie in ops/gateway-integration.md."
          ],
          "bullets": [],
          "steps": [
            "Stellen Sie den Kevmi-Server und das Gateway als separate Dienste bereit. Konfigurieren Sie dauerhaften Speicher, Backups und die erforderlichen Hintergrundprozesse.",
            "Für eine externe Verbindung setzen Sie einen HTTPS-Ursprung in GATEWAY_BASE_URL. Das Self-Hosting-Paket verwendet seinen konfigurierten internen Dienst. Beide erfordern einen Nur-Server-GATEWAY_API_KEY und ein separates GATEWAY_WEBHOOK_SECRET; Geheimnisse erreichen niemals den Browser.",
            "Setzen Sie die Gateway-BACKEND_WEBHOOK_URL auf /api/gateway/webhook bei Kevmi und ein passendes BACKEND_WEBHOOK_SECRET.",
            "Aktivieren Sie den verschlüsselten Kartentransport und bewahren Sie seinen privaten Schlüssel ausschließlich auf dem Gateway-Host auf. Prüfen Sie die Verfügbarkeit des öffentlichen Schlüssels und passende Einstellungen zur Absichtssignierung.",
            "Prüfen Sie Kanalbereitschaft, Einschränkungen und die Genehmigung der Händler-Website vor dem Start."
          ],
          "table": null,
          "code": null,
          "note": "",
          "links": [
            {
              "label": "Webhooks und wiederholte Ereignisse",
              "href": "/docs/webhooks"
            },
            {
              "label": "Sicherheit",
              "href": "/docs/security"
            }
          ]
        },
        {
          "id": "stores-usd",
          "title": "Mehrere Geschäfte und ein USD-Basispreis",
          "paragraphs": [
            "Wählen Sie Alle Geschäfte für aggregierte Analysen und Betrieb, oder wählen Sie ein Geschäft für dessen eigene Aufzeichnungen. Jedes Geschäft hat eine separate storeId, einen Namen, einen MwSt-Standardwert, Rechnungen, API-Schlüssel, Webhook-Endpunkte, Ereignisverlauf und Website-Anwendung. Benachrichtigungen und Support-Tickets gehören zum Konto. Ein Konto kann bis zu 100 Geschäfte erstellen. Vorhandene Datensätze verbleiben im ersten Geschäft.",
            "Neue Workspace-Rechnungen verwenden pricingMode=\"universal\" und einen USD-Basispreis. Any umfasst Karte, Alipay, SBP und Krypto; ein Händler kann eine Teilmenge auswählen. Karten und Alipay berechnen USD. SBP berechnet RUB unter Verwendung des USD/RUB-Referenzkurses der Bank von Russland. Krypto berechnet USDT gemäß der expliziten Rechnungsregel 1 USD = 1 USDT. Dies ist eine Rechnungsumrechnungsregel, kein Markt-USDT-Kurs. Das Gateway liefert den Kurs der ausgewählten Münze, den genauen Überweisungsbetrag und Anweisungen vor der Überweisung.",
            "Der Referenzkurs und beide Beträge werden bei der Erstellung eingefroren. Rechnungen mit RUB-Umrechnung verfallen innerhalb von 24 Stunden. Wenn der Referenzkurs nicht abgerufen werden kann, schlägt die Erstellung mit FX_UNAVAILABLE fehl; es wird kein erfundener oder veralteter Ersatzkurs verwendet. Der Basisbetrag Minor und Angebote verwenden die USD-Buchungswährung. quotes[method].settlement enthält das native Belastungsangebot. Der öffentliche Checkout legt die ausgewählte Belastungswährung in currency, den ursprünglichen Preis in baseAmountMinor/baseCurrency und den Referenzkurs in fx offen. Sobald eine Zahlung ausgelöst wurde, kann ihre Methode nicht geändert werden; eine Rechnung hat einen Gateway-Vorgang.",
            "Erstellen Sie einen API-Schlüssel im vorgesehenen Geschäft und senden Sie Authorization: Bearer <key> von Ihrem Server. Seine Geschäftsbindung ist unveränderlich; X-Kevmi-Store kann ihm keinen Zugriff auf ein anderes Geschäft gewähren. Browser-Sitzungen wählen X-Kevmi-Store: <storeId>; wenn es weggelassen wird, wird das erste Geschäft ausgewählt. Der Wert all wird nur von GET /api/account/dashboard und GET /api/payment-links akzeptiert. Mutationen erfordern ein ausgewähltes Geschäft, Origin und X-CSRF-Token. Konto-IDs und Geschäfts-IDs sind unterschiedliche Kennungen.",
            "Aus Kompatibilitätsgründen behalten API-Anfragen ohne pricingMode=\"universal\" native Preise und die ursprünglichen Währungsbeschränkungen bei. Bestehende Rechnungen werden nie neu berechnet. Bestätigte Zahlungseingänge in Analysen spiegeln verifizierte Zahlungen abzüglich gespeicherter Rechnungsausgaben wider; sie sind kein abhebbarer Saldo. Legacy-Rechnungswährungen bleiben getrennt, und Auszahlungen werden mit dem Support vereinbart. Führen Sie eine Bestellung erst aus, nachdem Sie payment.fulfillmentReady=true und payment.status=\"succeeded\" über die Server-API, den Ereignisverlauf oder einen signierten Webhook geprüft haben."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "assistant-admin-v16",
          "title": "Assistent, Support und Projektverwaltung",
          "paragraphs": [
            "Aktivieren Sie „Zugriff auf meine Daten im Chat erlauben“, wenn Sie Hilfe bei privaten Vorgängen benötigen. Eine Webanfrage mit includeAccount=true erfordert eine gültige Sitzung, Origin und X-CSRF-Token; X-Kevmi-Store wählt einen eigenen Store oder alle eigenen Stores aus. Ohne Berechtigung verwendet der Assistent öffentliche Dokumentation. In Telegram aktiviert eine separate Schaltfläche den Zugriff, nachdem der Absender identifiziert wurde.",
            "Das Tool read_account liest eigene Stores, Rechnungen mit bestätigtem Zahlungsstatus, Ereignisse, Anträge und Supportanfragen mit Fachantworten. Es gibt 30 Datensätze und nextPage zurück; ältere Datensätze sind über Paginierung verfügbar. Lesevorgänge pro Antwort sind begrenzt, daher muss eine unvollständige Stichprobe offengelegt werden. API-Schlüssel, Webhook-Geheimnisse, Kartendaten und Sitzungen werden dem Tool nicht bereitgestellt. Es kann keine Zahlungen belasten, auszahlen, erstatten oder Einstellungen ändern.",
            "Das Erstellen einer Supportanfrage im Arbeitsbereich oder in Telegram platziert eine separate Administratorwarnung in einer dauerhaften Warteschlange. Sie verlinkt auf /admin/tickets?ticket=<id>; vorübergehende Telegram-Fehler werden erneut versucht. Die Wiederherstellung nimmt auch ältere offene Anfragen ohne Warnung auf. Administratoren antworten auf der Anfrageseite; die Antwort wird im Benutzerarbeitsbereich gespeichert und über Telegram gesendet, wenn Support-Benachrichtigungen aktiviert sind.",
            "Der Bot verwendet Inline-Schaltflächen für das Hauptmenü, Stores, Benachrichtigungen, Support, Sicherheit und Sprache. Die Navigation bearbeitet die aktuelle Nachricht; ein nicht verfügbares altes Menü wird ersetzt. Zahlungs- und Sicherheitsbenachrichtigungen werden nicht als Wegwerf-Navigation behandelt. Das Abmelden über das Menü erfordert eine Bestätigung. Der explizite Befehl /logout beendet weiterhin jede Kontositzung.",
            "Das Panel /admin/project ist auf Telegram-IDs in der serverseitigen Allowlist MODERATOR_TELEGRAM_IDS beschränkt. Es umfasst Benutzer, Stores, Vorgänge, Schlüsselwiderruf, Deaktivierung von Webhooks, Pausieren von Rechnungen, Annahmesteuerungen und ein Prüfprotokoll. Mutationen erfordern CSRF und einen Grund. Das Panel kann einen Administrator nicht einschränken oder eine Zahlung manuell als erfolgreich erklären. Die Einschränkung eines Eigentümers beendet Sitzungen und blockiert API-Schlüsselzugriff; die Einschränkung eines Stores stoppt neue Vorgänge. Der Verlauf bleibt erhalten.",
            "Das öffentliche Angebot ist unter /public-offer und die Datenschutzrichtlinie unter /privacy-policy in jeder aktivierten Sprache verfügbar. Suchen Sie Münzen nach Name oder Tickersymbol. Ein Netzwerkauswahlfeld erscheint nur, wenn mehrere Live-Netzwerke verfügbar sind. Ein einzelnes Netzwerk wird automatisch ausgewählt und bleibt in der Bestätigung benannt. Die Live-Verfügbarkeit des Gateways bestimmt die wählbaren Paare; der Referenzkatalog aktiviert keinen Dienst.",
            "Verwenden Sie update.sh für routinemäßige Web-App-Veröffentlichungen: Kandidaten bauen, Migrationsverlauf prüfen, SQLite online sichern, einen zweiten Container starten, ihn verifizieren und Caddy elegant umschalten. Gateway, PostgreSQL und Mail werden nicht neu gestartet. Frühere statische Assets bleiben für geöffnete Tabs verfügbar. Eine neue Migration erfordert explizite überprüfte Genehmigung; eine inkompatible Schemaänderung ist keine nahtlose Bereitstellung."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": [
            {
              "label": "Öffentliches Angebot",
              "href": "/public-offer"
            },
            {
              "label": "Datenschutzrichtlinie",
              "href": "/privacy-policy"
            }
          ]
        }
      ],
      "body": "Verfügbarkeit prüfen\n\nKevmi verwendet die Gateway-v3-API, um Vorgänge zu erstellen und wiederherzustellen, Status zu lesen und Ergebnisse abzugleichen. Die Integration unterstützt verschlüsselten Karten- und Bankcode-Transport, Alipay- und SBP-QR-Zahlungen, einen Krypto-Münz-/Netzwerk-Katalog und eingehende finanzielle Ereignisse.\n\ngateway.configured in GET /api/config meldet, ob die erforderlichen Verbindungseinstellungen vorhanden sind. Dieser Endpunkt prüft das Gateway nicht; gateway.connected=false bedeutet hier, dass die Konnektivität nicht verifiziert wurde. Für eine bestimmte Rechnung lesen Sie invoice.availability in GET /api/checkout/{token}: Sie prüft Methode, Betrag, Bedingungen und Händlergenehmigung. Das Kompatibilitätsfeld invoice.gatewayConnected spiegelt availability.available wider und ist weder ein Health-Check noch eine Garantie für Zahlungsgenehmigung.\n\nEine neue Zahlung und Kartenabsicht erfordern, dass der neueste Website-Review-Antrag des Händlers genehmigt wurde. Die Genehmigung allein verbindet das Zahlungsgateway nicht. Wenn die Überprüfung nach dem Versand geändert wird, bleibt der bestehende Vorgang für Statusabfragen, Abgleich und einen angefragten Bankcode verfügbar.\n\nKunden-Checkout-Vertrag\n\nSensible Daten werden im Browser mit RSA-OAEP-256 und A256GCM verschlüsselt. Der private Schlüssel bleibt auf dem Gateway. Kevmi validiert, dass die Absicht zu dieser Rechnung und diesem Zweck gehört, leitet den Umschlag weiter und speichert keine Klartext-Kartennummern, CVV, Käufername, E-Mail, Bankcodes oder den Umschlag selbst.\n\nInstallieren Sie die Erweiterung für verschlüsselten Transport auf dem Gateway-Host, bevor Sie Karten aktivieren. Sie prüft Absichtssignatur, Ablauf, Wiedergabe, Bestellung und Beträge. Es gibt keinen Klartext-Fallback. Dies beschreibt den Schutzmechanismus, nicht PCI-Zertifizierung.\n\nKevmi-Route · Zweck\nGET /api/checkout/{token} · Rechnung, Angebot, Methodenverfügbarkeit und bestehende Zahlung\nPOST /api/checkout/{token}/card-intent · Einmalige Absicht und öffentlicher Schlüssel für Zahlung oder Code\nPOST /api/checkout/{token}/pay · Operation starten; Kartendaten versiegelt: {intent,jwe}\nPOST /api/checkout/{token}/code · Verschlüsselter Einmalcode für die aktuelle Bank-Herausforderung\nGET /api/checkout/{token}/status · Ursprüngliche Operation ohne weitere Belastung lesen\nPOST /api/checkout/{token}/reconcile · Ursprüngliche Operation explizit abgleichen\nGET /api/checkout/{token}/crypto-services · Aktuelle Münzen, Netzwerke und Limits für eine USDT-Rechnung\n\nHosting und Gateway-Konnektivität\n\nKevmi unterstützt Site-Hosting auf Cloudflare Workers mit D1 und Self-Hosting auf Node.js mit SQLite. SQLite erfordert einen persistenten Speicher und Backups. Das Zahlungs-Gateway läuft als separater Dienst mit eigenem dauerhaften Speicher.\n\nEin externes Gateway erfordert einen HTTPS-Ursprung, der vom Server erreichbar ist. Im Self-Hosting-Paket verbindet sich der Server mit einem festen Gateway-Dienst im privaten Container-Netzwerk; die API des Gateway-Dienstes ist nicht über das Internet erreichbar. Die öffentliche Website und Callbacks verwenden HTTPS. Der Browser verschlüsselt außerdem Kartendaten und Bankcodes, bevor sie Kevmi erreichen.\n\nlocalhost bezieht sich auf den aktuellen Server oder Container; es legt den Computer des Gateway-Betreibers nicht offen. Verbindungsschlüssel und Geheimnisse gehören ausschließlich in die Serverkonfiguration.\n\nFür eine benutzerdefinierte Domain setzen Sie vor dem Build einen öffentlichen HTTPS-Ursprung in NEXT_PUBLIC_SITE_URL. Dokumentation, kanonische Links und Indexierungsressourcen verwenden diesen Wert. Er akzeptiert nur ein Schema und einen Host mit optionalem Port, ohne Pfad, Query, Fragment oder Anmeldedaten. Gleichen Sie ihn mit APP_ORIGIN in der Serverkonfiguration ab.\n\nBerechnung und unterstützte Bedingungen\n\nNeue Workspace-Rechnungen verwenden einen USD-Basispreis, und Any bietet alle vier Methoden an. SBP rechnet zum eingefrorenen Referenzkurs der Bank von Russland in RUB um; Krypto verwendet die explizite 1:1-USD/USDT-Rechnungsregel. Legacy-native Preise bleiben für alte Rechnungen und API-Anfragen ohne pricingMode=universal verfügbar. Siehe Abschnitt zu mehreren Geschäften und USD-Preisen unten.\n\nFür eine neue Live-Karten- oder Alipay-Zahlung unterstützt das aktuelle Gateway nur feeCustomerPercent=0 und vatCustomerPercent=100: der Händler übernimmt die gesamte Bearbeitungsgebühr und die MwSt wird dem Kunden vollständig hinzugefügt. Andere Anteile können auf einer Rechnung gespeichert und berechnet werden, aber die Ausführung ist mit unsupported_allocation blockiert. Der Server ändert gespeicherte Bedingungen niemals stillschweigend. SBP- und USDT-Kryptozahlungen unterstützen jeden Bearbeitungsgebührenanteil und haben keine MwSt.\n\nDas Senden eines beliebigen total_cents ändert die Steuerberechnung des Anbieters nicht. Ein tatsächlicher Betrag, der vom gespeicherten Total abweicht, geht in die Prüfung und kann die Ausführung nicht bestätigen. Gateway-business_balance-Felder werden als Abrechnungsnachweis aufbewahrt und nicht als Kevmi-Händlerguthaben behandelt.\n\nVerbindung eines Live-Gateways\n\nDie Verbindung des Gateways umfasst die Serverkonfiguration, Prüfungen für die ausgewählten Kanäle und die Verarbeitung verifizierter Finanzereignisse. Die Konfigurationsbereitschaft wird getrennt von der Anbieter-Konnektivität geprüft. Eine erfolgreiche Zahlung wird nach Prüfung des Operationsstatus und des Betrags akzeptiert. Bereitstellungsanweisungen finden Sie in ops/gateway-integration.md.\n\nStellen Sie den Kevmi-Server und das Gateway als separate Dienste bereit. Konfigurieren Sie dauerhaften Speicher, Backups und die erforderlichen Hintergrundprozesse.\n\nFür eine externe Verbindung setzen Sie einen HTTPS-Ursprung in GATEWAY_BASE_URL. Das Self-Hosting-Paket verwendet seinen konfigurierten internen Dienst. Beide erfordern einen Nur-Server-GATEWAY_API_KEY und ein separates GATEWAY_WEBHOOK_SECRET; Geheimnisse erreichen niemals den Browser.\n\nSetzen Sie die Gateway-BACKEND_WEBHOOK_URL auf /api/gateway/webhook bei Kevmi und ein passendes BACKEND_WEBHOOK_SECRET.\n\nAktivieren Sie den verschlüsselten Kartentransport und bewahren Sie seinen privaten Schlüssel ausschließlich auf dem Gateway-Host auf. Prüfen Sie die Verfügbarkeit des öffentlichen Schlüssels und passende Einstellungen zur Absichtssignierung.\n\nPrüfen Sie Kanalbereitschaft, Einschränkungen und die Genehmigung der Händler-Website vor dem Start.\n\nWebhooks und wiederholte Ereignisse\n\nSicherheit\n\nMehrere Geschäfte und ein USD-Basispreis\n\nWählen Sie Alle Geschäfte für aggregierte Analysen und Betrieb, oder wählen Sie ein Geschäft für dessen eigene Aufzeichnungen. Jedes Geschäft hat eine separate storeId, einen Namen, einen MwSt-Standardwert, Rechnungen, API-Schlüssel, Webhook-Endpunkte, Ereignisverlauf und Website-Anwendung. Benachrichtigungen und Support-Tickets gehören zum Konto. Ein Konto kann bis zu 100 Geschäfte erstellen. Vorhandene Datensätze verbleiben im ersten Geschäft.\n\nNeue Workspace-Rechnungen verwenden pricingMode=\"universal\" und einen USD-Basispreis. Any umfasst Karte, Alipay, SBP und Krypto; ein Händler kann eine Teilmenge auswählen. Karten und Alipay berechnen USD. SBP berechnet RUB unter Verwendung des USD/RUB-Referenzkurses der Bank von Russland. Krypto berechnet USDT gemäß der expliziten Rechnungsregel 1 USD = 1 USDT. Dies ist eine Rechnungsumrechnungsregel, kein Markt-USDT-Kurs. Das Gateway liefert den Kurs der ausgewählten Münze, den genauen Überweisungsbetrag und Anweisungen vor der Überweisung.\n\nDer Referenzkurs und beide Beträge werden bei der Erstellung eingefroren. Rechnungen mit RUB-Umrechnung verfallen innerhalb von 24 Stunden. Wenn der Referenzkurs nicht abgerufen werden kann, schlägt die Erstellung mit FX_UNAVAILABLE fehl; es wird kein erfundener oder veralteter Ersatzkurs verwendet. Der Basisbetrag Minor und Angebote verwenden die USD-Buchungswährung. quotes[method].settlement enthält das native Belastungsangebot. Der öffentliche Checkout legt die ausgewählte Belastungswährung in currency, den ursprünglichen Preis in baseAmountMinor/baseCurrency und den Referenzkurs in fx offen. Sobald eine Zahlung ausgelöst wurde, kann ihre Methode nicht geändert werden; eine Rechnung hat einen Gateway-Vorgang.\n\nErstellen Sie einen API-Schlüssel im vorgesehenen Geschäft und senden Sie Authorization: Bearer <key> von Ihrem Server. Seine Geschäftsbindung ist unveränderlich; X-Kevmi-Store kann ihm keinen Zugriff auf ein anderes Geschäft gewähren. Browser-Sitzungen wählen X-Kevmi-Store: <storeId>; wenn es weggelassen wird, wird das erste Geschäft ausgewählt. Der Wert all wird nur von GET /api/account/dashboard und GET /api/payment-links akzeptiert. Mutationen erfordern ein ausgewähltes Geschäft, Origin und X-CSRF-Token. Konto-IDs und Geschäfts-IDs sind unterschiedliche Kennungen.\n\nAus Kompatibilitätsgründen behalten API-Anfragen ohne pricingMode=\"universal\" native Preise und die ursprünglichen Währungsbeschränkungen bei. Bestehende Rechnungen werden nie neu berechnet. Bestätigte Zahlungseingänge in Analysen spiegeln verifizierte Zahlungen abzüglich gespeicherter Rechnungsausgaben wider; sie sind kein abhebbarer Saldo. Legacy-Rechnungswährungen bleiben getrennt, und Auszahlungen werden mit dem Support vereinbart. Führen Sie eine Bestellung erst aus, nachdem Sie payment.fulfillmentReady=true und payment.status=\"succeeded\" über die Server-API, den Ereignisverlauf oder einen signierten Webhook geprüft haben.\n\nAssistent, Support und Projektverwaltung\n\nAktivieren Sie „Zugriff auf meine Daten im Chat erlauben“, wenn Sie Hilfe bei privaten Vorgängen benötigen. Eine Webanfrage mit includeAccount=true erfordert eine gültige Sitzung, Origin und X-CSRF-Token; X-Kevmi-Store wählt einen eigenen Store oder alle eigenen Stores aus. Ohne Berechtigung verwendet der Assistent öffentliche Dokumentation. In Telegram aktiviert eine separate Schaltfläche den Zugriff, nachdem der Absender identifiziert wurde.\n\nDas Tool read_account liest eigene Stores, Rechnungen mit bestätigtem Zahlungsstatus, Ereignisse, Anträge und Supportanfragen mit Fachantworten. Es gibt 30 Datensätze und nextPage zurück; ältere Datensätze sind über Paginierung verfügbar. Lesevorgänge pro Antwort sind begrenzt, daher muss eine unvollständige Stichprobe offengelegt werden. API-Schlüssel, Webhook-Geheimnisse, Kartendaten und Sitzungen werden dem Tool nicht bereitgestellt. Es kann keine Zahlungen belasten, auszahlen, erstatten oder Einstellungen ändern.\n\nDas Erstellen einer Supportanfrage im Arbeitsbereich oder in Telegram platziert eine separate Administratorwarnung in einer dauerhaften Warteschlange. Sie verlinkt auf /admin/tickets?ticket=<id>; vorübergehende Telegram-Fehler werden erneut versucht. Die Wiederherstellung nimmt auch ältere offene Anfragen ohne Warnung auf. Administratoren antworten auf der Anfrageseite; die Antwort wird im Benutzerarbeitsbereich gespeichert und über Telegram gesendet, wenn Support-Benachrichtigungen aktiviert sind.\n\nDer Bot verwendet Inline-Schaltflächen für das Hauptmenü, Stores, Benachrichtigungen, Support, Sicherheit und Sprache. Die Navigation bearbeitet die aktuelle Nachricht; ein nicht verfügbares altes Menü wird ersetzt. Zahlungs- und Sicherheitsbenachrichtigungen werden nicht als Wegwerf-Navigation behandelt. Das Abmelden über das Menü erfordert eine Bestätigung. Der explizite Befehl /logout beendet weiterhin jede Kontositzung.\n\nDas Panel /admin/project ist auf Telegram-IDs in der serverseitigen Allowlist MODERATOR_TELEGRAM_IDS beschränkt. Es umfasst Benutzer, Stores, Vorgänge, Schlüsselwiderruf, Deaktivierung von Webhooks, Pausieren von Rechnungen, Annahmesteuerungen und ein Prüfprotokoll. Mutationen erfordern CSRF und einen Grund. Das Panel kann einen Administrator nicht einschränken oder eine Zahlung manuell als erfolgreich erklären. Die Einschränkung eines Eigentümers beendet Sitzungen und blockiert API-Schlüsselzugriff; die Einschränkung eines Stores stoppt neue Vorgänge. Der Verlauf bleibt erhalten.\n\nDas öffentliche Angebot ist unter /public-offer und die Datenschutzrichtlinie unter /privacy-policy in jeder aktivierten Sprache verfügbar. Suchen Sie Münzen nach Name oder Tickersymbol. Ein Netzwerkauswahlfeld erscheint nur, wenn mehrere Live-Netzwerke verfügbar sind. Ein einzelnes Netzwerk wird automatisch ausgewählt und bleibt in der Bestätigung benannt. Die Live-Verfügbarkeit des Gateways bestimmt die wählbaren Paare; der Referenzkatalog aktiviert keinen Dienst.\n\nVerwenden Sie update.sh für routinemäßige Web-App-Veröffentlichungen: Kandidaten bauen, Migrationsverlauf prüfen, SQLite online sichern, einen zweiten Container starten, ihn verifizieren und Caddy elegant umschalten. Gateway, PostgreSQL und Mail werden nicht neu gestartet. Frühere statische Assets bleiben für geöffnete Tabs verfügbar. Eine neue Migration erfordert explizite überprüfte Genehmigung; eine inkompatible Schemaänderung ist keine nahtlose Bereitstellung.\n\nÖffentliches Angebot\n\nDatenschutzrichtlinie",
      "readMinutes": 6
    },
    {
      "id": "webhooks",
      "title": "Webhooks: Ereignisse, Signaturen und Zustellung",
      "summary": "Registrieren Sie einen öffentlichen HTTPS-Endpunkt, weisen Sie die Kontrolle nach und empfangen Sie signierte Rechnungs- und Zahlungsereignisse. Die Zustellung wird dauerhaft in die Warteschlange gestellt; die erneute Verarbeitung desselben Ereignisses muss für Ihre Bestellung sicher sein.",
      "tags": [
        "Webhook",
        "Signatur",
        "HMAC",
        "Idempotenz",
        "Ereignis",
        "Wiederholung"
      ],
      "sections": [
        {
          "id": "sources",
          "title": "Woher Ereignisse kommen",
          "paragraphs": [
            "invoice.created bedeutet nicht bezahlt. Zahlungsereignisse stammen aus einer verifizierten Serveroperation nach einem aktuellen Gateway-Lesezugriff; ein eingehender Ereignisname allein ist unzureichend.",
            "Gateway → Kevmi-Eingang und Kevmi → Händler-Zustellung sind verschiedene Abschnitte mit separaten Geheimnissen. Der Browser, Rücknavigation und Widget-Nachrichten setzen keinen Finanzstatus."
          ],
          "bullets": [],
          "steps": [],
          "table": {
            "headers": [
              "Ereignis",
              "Quelle"
            ],
            "rows": [
              [
                "invoice.created",
                "Rechnung gespeichert"
              ],
              [
                "invoice.updated",
                "Link-Verfügbarkeit geändert"
              ],
              [
                "payment.succeeded",
                "Exakte Zahlung vom Server verifiziert"
              ],
              [
                "payment.failed",
                "Fehlgeschlagene Operation verifiziert"
              ],
              [
                "payment.refunded",
                "Vollständige Rückerstattung verifiziert"
              ],
              [
                "payment.partially_refunded",
                "Teilweise Rückerstattung verifiziert"
              ],
              [
                "payment.disputed",
                "Streitfall verifiziert"
              ],
              [
                "payment.review_required",
                "Operation erfordert zusätzliche Prüfung"
              ]
            ]
          },
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "setup",
          "title": "Registrieren und verifizieren Sie einen Endpunkt",
          "paragraphs": [
            "URLs können nicht auf IP-Adressen, localhost, private Netzwerke, nicht standardmäßige Ports zielen oder Anmeldedaten enthalten. DNS wird vor der Zustellung geprüft; ausgehende POST-Anfragen folgen keinen Weiterleitungen. Ein Konto kann bis zu fünf Endpunkte registrieren.",
            "Das Verifizierungsereignis hat livemode=false. Ein erfolgreicher HTTP-Status allein ist unzureichend: Die Herausforderung muss exakt übereinstimmen. Das Rotieren des Geheimnisses erfordert eine erneute Verifizierung."
          ],
          "bullets": [],
          "steps": [
            "Unter /account#webhooks in Ihrem Händlerkonto geben Sie eine öffentliche HTTPS-URL, eine Beschreibung und die benötigten Ereignistypen ein.",
            "Speichern Sie das ausgestellte Geheimnis im serverseitigen Speicher. Sein voller Wert wird nur einmal angezeigt.",
            "Verifizieren Sie Signaturen über die ursprünglichen Anfragebytes.",
            "Führen Sie die Endpunktverifizierung aus. Für endpoint.verification geben Sie JSON zurück, das data.challenge wiedergibt: {\"challenge\":\"the received value\"}.",
            "Aktivieren Sie den verifizierten Endpunkt und prüfen Sie den Zustellungsverlauf."
          ],
          "table": null,
          "code": null,
          "note": "",
          "links": [
            {
              "label": "Webhooks in Ihrem Konto",
              "href": "/account#webhooks"
            }
          ]
        },
        {
          "id": "envelope",
          "title": "Ereignisumschlag",
          "paragraphs": [
            "id bleibt bei jedem Zustellversuch eines Ereignisses gleich. createdAt ist ein Unix-Zeitstempel in Millisekunden und apiVersion identifiziert die Vertragsversion. data enthält das gespeicherte Serverobjekt; das Beispiel ist gekürzt.",
            "livemode=true unterscheidet ein echtes Serverereignis von der Endpunktverifizierung. Es bedeutet nicht, dass eine Rechnung bezahlt ist: Prüfen Sie den Typ und die Zahlungsdaten. Behandeln Sie bekannte Ereignistypen und validieren Sie das Schema."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": {
            "language": "JSON · shortened example",
            "code": "{\n  \"id\": \"evt_example\",\n  \"type\": \"invoice.created\",\n  \"apiVersion\": \"2026-10-21\",\n  \"createdAt\": 1792540800000,\n  \"livemode\": true,\n  \"data\": {\n    \"invoice\": {\n      \"id\": \"lnk_example\",\n      \"orderId\": \"order-1042\",\n      \"currency\": \"USD\",\n      \"amountMinor\": 500,\n      \"vatCustomerPercent\": 100,\n      \"feeCustomerPercent\": 0\n    }\n  }\n}"
          },
          "note": "",
          "links": []
        },
        {
          "id": "signature",
          "title": "HMAC-SHA256 verifizieren",
          "paragraphs": [
            "Kevmi-Signature enthält t=seconds,v1=hex. Die Signatur ist HMAC-SHA256 über die Zeitstempelzeichenfolge, einen Punkt und den ursprünglichen Text: timestamp + \".\" + rawBody. Verwenden Sie das spezifische Endpunktgeheimnis und einen Vergleich in konstanter Zeit.",
            "Lehnen Sie Signaturen ab, deren Zeitstempel um mehr als 300 Sekunden in beide Richtungen von der Serverzeit abweicht. Synchronisieren Sie die Uhren. Parsen und serialisieren Sie JSON vor der Verifizierung nicht neu: Leerzeichen und Eigenschaftsreihenfolge beeinflussen die signierten Bytes."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": {
            "language": "Node.js · verification core",
            "code": "import { createHmac, timingSafeEqual } from 'node:crypto';\n\nfunction verifyKevmi(rawBody, header, secret, nowSeconds) {\n  const match = /^t=(\\d{10}),v1=([a-f0-9]{64})$/.exec(header || '');\n  if (!match || Math.abs(nowSeconds - Number(match[1])) > 300) {\n    return false;\n  }\n  const expected = createHmac('sha256', secret)\n    .update(match[1] + '.')\n    .update(rawBody)\n    .digest();\n  const received = Buffer.from(match[2], 'hex');\n  return expected.length === received.length\n    && timingSafeEqual(expected, received);\n}\n\n// Read bytes before JSON parsing; cap the request body.\n// secret comes from your server secret store.\nconst valid = verifyKevmi(rawBody, signature, secret,\n  Math.floor(Date.now() / 1000));\nif (!valid) throw new Error('Invalid webhook signature');\nconst event = JSON.parse(rawBody.toString('utf8'));\n// Validate the event schema and persist its ID together\n// with your order update in one database transaction.\n// Return a 2xx response after durable acceptance."
          },
          "note": "Dieses Beispiel behandelt die Signaturverifizierung. Ihr HTTP-Server benötigt außerdem ein Limit für die Textgröße, Schemavalidierung und transaktionale Ereignispersistenz.",
          "links": []
        },
        {
          "id": "delivery",
          "title": "Wiederholungsversuche und Bestätigung",
          "paragraphs": [
            "Jede 2xx-Antwort bestätigt ein normales Ereignis. Speichern Sie das Ereignis dauerhaft, bevor Sie antworten; aufwendige Arbeit kann über Ihre eigene Warteschlange fortgesetzt werden. Das Antwortzeitlimit beträgt acht Sekunden. Ein Netzwerkfehler oder eine Nicht-2xx-Antwort plant einen Wiederholungsversuch ein.",
            "Es gibt höchstens sechs Versuche: die ursprüngliche Zustellung plus Verzögerungen von einer Minute, fünf Minuten, 30 Minuten, zwei Stunden und 12 Stunden nach aufeinanderfolgenden Fehlern. Dies sind Warteschlangenpläne, keine Garantien für die genaue Zustellzeit. Das Ausschöpfen der Versuche markiert die Zustellung als fehlgeschlagen.",
            "Die Zustellung erfolgt mindestens einmal und verspricht keine strenge Reihenfolge. Speichern Sie die eindeutige Ereignis-ID in derselben Transaktion wie Ihre Bestellaktualisierung. Ein bereits angewendetes Duplikat sollte 2xx erhalten, ohne die Bestellung erneut auszuführen.",
            "Ein manueller Wiederholungsversuch startet die Zustellversuche neu, wobei die ursprüngliche Ereignis-ID, Zustell-ID und der genaue Text erhalten bleiben. Jeder Versuch erhält einen neuen Signaturzeitstempel. Das Pausieren eines Endpunkts erhält seine Warteschlange; das Löschen bricht ausstehende und fehlgeschlagene Zustellungen ab."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "reconcile",
          "title": "Zustellhistorie und Abgleich",
          "paragraphs": [
            "Die Oberfläche zeigt den Endpunktstatus, letzte Zustellungen, Versuchszahlen, letzte HTTP-Antwort, Fehler und den Zeitpunkt des nächsten Versuchs. Diese Diagnosen ergänzen Ihre eigenen Bestellaufzeichnungen.",
            "GET /api/v1/events mit events:read liefert bis zu 50 Ereignisse und nextCursor. Übergeben Sie den undurchsichtigen nextCursor unverändert als cursor; null markiert das Ende. Die Sortierung verwendet sowohl createdAt als auch id. Das alte Unix-Millisekunden-Grenzwertfeld bleibt separat verfügbar und kann nicht mit cursor kombiniert werden. Verifizierte Endpunkte erhalten abonnierte Ereignisse nicht früher als ihre Registrierung; pausierte Endpunkte sammeln weiterhin in der Warteschlange stehende Ereignisse für die Zustellung nach der Wiederaufnahme. Dies verspricht keine Historie vor der Endpunkterstellung."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": [
            {
              "label": "API-Schlüssel und Rechnungserstellung",
              "href": "/docs/payment-links-api"
            }
          ]
        },
        {
          "id": "gateway",
          "title": "Eingehende Gateway-Quittungsprüfungen",
          "paragraphs": [
            "Gateway v3 postet an /api/gateway/webhook mit X-Gateway-Event-Id, X-Gateway-Timestamp und X-Gateway-Signature: v1=<hex>. HMAC-SHA256 signiert timestamp + \".\" + rawBody mit GATEWAY_WEBHOOK_SECRET; das Uhrenfenster beträgt 300 Sekunden. Die Übereinstimmung von ID im Header/Text, API-Version, Live-Modus und Text-Hash wird geprüft.",
            "Eine Ereignis-ID, die mit unterschiedlichen Textbytes wiederverwendet wird, wird abgelehnt. Eine signierte Benachrichtigung löst ein authentifiziertes GET des genauen Vorgangs aus. Bestellung, Methode, Währung, Basis, genehmigter Gesamtbetrag und Version werden geprüft. Der Erfolg erfordert fulfillment_ready=true, verification=provider_confirmed, den genauen bezahlten Betrag und keinen Streitfall; Krypto benötigt außerdem bestätigte Abrechnungsnachweise.",
            "Ingress-Behandlung, Quittungen und Händlerereignisse werden vor Duplikaten geschützt. Alte reine Browser-Benachrichtigungsformate können keine erfolgreiche Zahlung feststellen. Händler-Webhooks enthalten niemals Kartenfelder, Bankcodes, QR-Daten, Anbieterzugangsdaten oder das Gatewaygeheimnis."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "telegram",
          "title": "Telegram hat einen separaten Vertrag",
          "paragraphs": [
            "POST /api/telegram/webhook verifiziert X-Telegram-Bot-Api-Secret-Token, die Update-Struktur und den Absender. update_id schützt vor doppelter Verarbeitung. Diese Route behandelt Anmeldung, Befehle, Support und Moderationsaktionen; sie akzeptiert keine Finanzquittungen.",
            "Der Bereitstellungseigentümer konfiguriert das Bot-Token, das Webhook-Geheimnis, die setWebhook-Registrierung und eine erreichbare HTTPS-Adresse. Sie sind getrennt vom Signaturgeheimnis des Händler-Endpunkts."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "stores-usd",
          "title": "Mehrere Geschäfte und ein USD-Basispreis",
          "paragraphs": [
            "Wählen Sie Alle Geschäfte für aggregierte Analysen und Betrieb, oder wählen Sie ein Geschäft für dessen eigene Aufzeichnungen. Jedes Geschäft hat eine separate storeId, einen Namen, einen MwSt-Standardwert, Rechnungen, API-Schlüssel, Webhook-Endpunkte, Ereignisverlauf und Website-Anwendung. Benachrichtigungen und Support-Tickets gehören zum Konto. Ein Konto kann bis zu 100 Geschäfte erstellen. Vorhandene Datensätze verbleiben im ersten Geschäft.",
            "Neue Workspace-Rechnungen verwenden pricingMode=\"universal\" und einen USD-Basispreis. Any umfasst Karte, Alipay, SBP und Krypto; ein Händler kann eine Teilmenge auswählen. Karten und Alipay berechnen USD. SBP berechnet RUB unter Verwendung des USD/RUB-Referenzkurses der Bank von Russland. Krypto berechnet USDT gemäß der expliziten Rechnungsregel 1 USD = 1 USDT. Dies ist eine Rechnungsumrechnungsregel, kein Markt-USDT-Kurs. Das Gateway liefert den Kurs der ausgewählten Münze, den genauen Überweisungsbetrag und Anweisungen vor der Überweisung.",
            "Der Referenzkurs und beide Beträge werden bei der Erstellung eingefroren. Rechnungen mit RUB-Umrechnung verfallen innerhalb von 24 Stunden. Wenn der Referenzkurs nicht abgerufen werden kann, schlägt die Erstellung mit FX_UNAVAILABLE fehl; es wird kein erfundener oder veralteter Ersatzkurs verwendet. Der Basisbetrag Minor und Angebote verwenden die USD-Buchungswährung. quotes[method].settlement enthält das native Belastungsangebot. Der öffentliche Checkout legt die ausgewählte Belastungswährung in currency, den ursprünglichen Preis in baseAmountMinor/baseCurrency und den Referenzkurs in fx offen. Sobald eine Zahlung ausgelöst wurde, kann ihre Methode nicht geändert werden; eine Rechnung hat einen Gateway-Vorgang.",
            "Erstellen Sie einen API-Schlüssel im vorgesehenen Geschäft und senden Sie Authorization: Bearer <key> von Ihrem Server. Seine Geschäftsbindung ist unveränderlich; X-Kevmi-Store kann ihm keinen Zugriff auf ein anderes Geschäft gewähren. Browser-Sitzungen wählen X-Kevmi-Store: <storeId>; wenn es weggelassen wird, wird das erste Geschäft ausgewählt. Der Wert all wird nur von GET /api/account/dashboard und GET /api/payment-links akzeptiert. Mutationen erfordern ein ausgewähltes Geschäft, Origin und X-CSRF-Token. Konto-IDs und Geschäfts-IDs sind unterschiedliche Kennungen.",
            "Aus Kompatibilitätsgründen behalten API-Anfragen ohne pricingMode=\"universal\" native Preise und die ursprünglichen Währungsbeschränkungen bei. Bestehende Rechnungen werden nie neu berechnet. Bestätigte Zahlungseingänge in Analysen spiegeln verifizierte Zahlungen abzüglich gespeicherter Rechnungsausgaben wider; sie sind kein abhebbarer Saldo. Legacy-Rechnungswährungen bleiben getrennt, und Auszahlungen werden mit dem Support vereinbart. Führen Sie eine Bestellung erst aus, nachdem Sie payment.fulfillmentReady=true und payment.status=\"succeeded\" über die Server-API, den Ereignisverlauf oder einen signierten Webhook geprüft haben."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        }
      ],
      "group": "developers",
      "url": "/docs/webhooks",
      "body": "Woher Ereignisse kommen\n\ninvoice.created bedeutet nicht bezahlt. Zahlungsereignisse stammen aus einer verifizierten Serveroperation nach einem aktuellen Gateway-Lesezugriff; ein eingehender Ereignisname allein ist unzureichend.\n\nGateway → Kevmi-Eingang und Kevmi → Händler-Zustellung sind verschiedene Abschnitte mit separaten Geheimnissen. Der Browser, Rücknavigation und Widget-Nachrichten setzen keinen Finanzstatus.\n\nEreignis · Quelle\ninvoice.created · Rechnung gespeichert\ninvoice.updated · Link-Verfügbarkeit geändert\npayment.succeeded · Exakte Zahlung vom Server verifiziert\npayment.failed · Fehlgeschlagene Operation verifiziert\npayment.refunded · Vollständige Rückerstattung verifiziert\npayment.partially_refunded · Teilweise Rückerstattung verifiziert\npayment.disputed · Streitfall verifiziert\npayment.review_required · Operation erfordert zusätzliche Prüfung\n\nRegistrieren und verifizieren Sie einen Endpunkt\n\nURLs können nicht auf IP-Adressen, localhost, private Netzwerke, nicht standardmäßige Ports zielen oder Anmeldedaten enthalten. DNS wird vor der Zustellung geprüft; ausgehende POST-Anfragen folgen keinen Weiterleitungen. Ein Konto kann bis zu fünf Endpunkte registrieren.\n\nDas Verifizierungsereignis hat livemode=false. Ein erfolgreicher HTTP-Status allein ist unzureichend: Die Herausforderung muss exakt übereinstimmen. Das Rotieren des Geheimnisses erfordert eine erneute Verifizierung.\n\nUnter /account#webhooks in Ihrem Händlerkonto geben Sie eine öffentliche HTTPS-URL, eine Beschreibung und die benötigten Ereignistypen ein.\n\nSpeichern Sie das ausgestellte Geheimnis im serverseitigen Speicher. Sein voller Wert wird nur einmal angezeigt.\n\nVerifizieren Sie Signaturen über die ursprünglichen Anfragebytes.\n\nFühren Sie die Endpunktverifizierung aus. Für endpoint.verification geben Sie JSON zurück, das data.challenge wiedergibt: {\"challenge\":\"the received value\"}.\n\nAktivieren Sie den verifizierten Endpunkt und prüfen Sie den Zustellungsverlauf.\n\nWebhooks in Ihrem Konto\n\nEreignisumschlag\n\nid bleibt bei jedem Zustellversuch eines Ereignisses gleich. createdAt ist ein Unix-Zeitstempel in Millisekunden und apiVersion identifiziert die Vertragsversion. data enthält das gespeicherte Serverobjekt; das Beispiel ist gekürzt.\n\nlivemode=true unterscheidet ein echtes Serverereignis von der Endpunktverifizierung. Es bedeutet nicht, dass eine Rechnung bezahlt ist: Prüfen Sie den Typ und die Zahlungsdaten. Behandeln Sie bekannte Ereignistypen und validieren Sie das Schema.\n\n{\n  \"id\": \"evt_example\",\n  \"type\": \"invoice.created\",\n  \"apiVersion\": \"2026-10-21\",\n  \"createdAt\": 1792540800000,\n  \"livemode\": true,\n  \"data\": {\n    \"invoice\": {\n      \"id\": \"lnk_example\",\n      \"orderId\": \"order-1042\",\n      \"currency\": \"USD\",\n      \"amountMinor\": 500,\n      \"vatCustomerPercent\": 100,\n      \"feeCustomerPercent\": 0\n    }\n  }\n}\n\nHMAC-SHA256 verifizieren\n\nKevmi-Signature enthält t=seconds,v1=hex. Die Signatur ist HMAC-SHA256 über die Zeitstempelzeichenfolge, einen Punkt und den ursprünglichen Text: timestamp + \".\" + rawBody. Verwenden Sie das spezifische Endpunktgeheimnis und einen Vergleich in konstanter Zeit.\n\nLehnen Sie Signaturen ab, deren Zeitstempel um mehr als 300 Sekunden in beide Richtungen von der Serverzeit abweicht. Synchronisieren Sie die Uhren. Parsen und serialisieren Sie JSON vor der Verifizierung nicht neu: Leerzeichen und Eigenschaftsreihenfolge beeinflussen die signierten Bytes.\n\nimport { createHmac, timingSafeEqual } from 'node:crypto';\n\nfunction verifyKevmi(rawBody, header, secret, nowSeconds) {\n  const match = /^t=(\\d{10}),v1=([a-f0-9]{64})$/.exec(header || '');\n  if (!match || Math.abs(nowSeconds - Number(match[1])) > 300) {\n    return false;\n  }\n  const expected = createHmac('sha256', secret)\n    .update(match[1] + '.')\n    .update(rawBody)\n    .digest();\n  const received = Buffer.from(match[2], 'hex');\n  return expected.length === received.length\n    && timingSafeEqual(expected, received);\n}\n\n// Read bytes before JSON parsing; cap the request body.\n// secret comes from your server secret store.\nconst valid = verifyKevmi(rawBody, signature, secret,\n  Math.floor(Date.now() / 1000));\nif (!valid) throw new Error('Invalid webhook signature');\nconst event = JSON.parse(rawBody.toString('utf8'));\n// Validate the event schema and persist its ID together\n// with your order update in one database transaction.\n// Return a 2xx response after durable acceptance.\n\nDieses Beispiel behandelt die Signaturverifizierung. Ihr HTTP-Server benötigt außerdem ein Limit für die Textgröße, Schemavalidierung und transaktionale Ereignispersistenz.\n\nWiederholungsversuche und Bestätigung\n\nJede 2xx-Antwort bestätigt ein normales Ereignis. Speichern Sie das Ereignis dauerhaft, bevor Sie antworten; aufwendige Arbeit kann über Ihre eigene Warteschlange fortgesetzt werden. Das Antwortzeitlimit beträgt acht Sekunden. Ein Netzwerkfehler oder eine Nicht-2xx-Antwort plant einen Wiederholungsversuch ein.\n\nEs gibt höchstens sechs Versuche: die ursprüngliche Zustellung plus Verzögerungen von einer Minute, fünf Minuten, 30 Minuten, zwei Stunden und 12 Stunden nach aufeinanderfolgenden Fehlern. Dies sind Warteschlangenpläne, keine Garantien für die genaue Zustellzeit. Das Ausschöpfen der Versuche markiert die Zustellung als fehlgeschlagen.\n\nDie Zustellung erfolgt mindestens einmal und verspricht keine strenge Reihenfolge. Speichern Sie die eindeutige Ereignis-ID in derselben Transaktion wie Ihre Bestellaktualisierung. Ein bereits angewendetes Duplikat sollte 2xx erhalten, ohne die Bestellung erneut auszuführen.\n\nEin manueller Wiederholungsversuch startet die Zustellversuche neu, wobei die ursprüngliche Ereignis-ID, Zustell-ID und der genaue Text erhalten bleiben. Jeder Versuch erhält einen neuen Signaturzeitstempel. Das Pausieren eines Endpunkts erhält seine Warteschlange; das Löschen bricht ausstehende und fehlgeschlagene Zustellungen ab.\n\nZustellhistorie und Abgleich\n\nDie Oberfläche zeigt den Endpunktstatus, letzte Zustellungen, Versuchszahlen, letzte HTTP-Antwort, Fehler und den Zeitpunkt des nächsten Versuchs. Diese Diagnosen ergänzen Ihre eigenen Bestellaufzeichnungen.\n\nGET /api/v1/events mit events:read liefert bis zu 50 Ereignisse und nextCursor. Übergeben Sie den undurchsichtigen nextCursor unverändert als cursor; null markiert das Ende. Die Sortierung verwendet sowohl createdAt als auch id. Das alte Unix-Millisekunden-Grenzwertfeld bleibt separat verfügbar und kann nicht mit cursor kombiniert werden. Verifizierte Endpunkte erhalten abonnierte Ereignisse nicht früher als ihre Registrierung; pausierte Endpunkte sammeln weiterhin in der Warteschlange stehende Ereignisse für die Zustellung nach der Wiederaufnahme. Dies verspricht keine Historie vor der Endpunkterstellung.\n\nAPI-Schlüssel und Rechnungserstellung\n\nEingehende Gateway-Quittungsprüfungen\n\nGateway v3 postet an /api/gateway/webhook mit X-Gateway-Event-Id, X-Gateway-Timestamp und X-Gateway-Signature: v1=<hex>. HMAC-SHA256 signiert timestamp + \".\" + rawBody mit GATEWAY_WEBHOOK_SECRET; das Uhrenfenster beträgt 300 Sekunden. Die Übereinstimmung von ID im Header/Text, API-Version, Live-Modus und Text-Hash wird geprüft.\n\nEine Ereignis-ID, die mit unterschiedlichen Textbytes wiederverwendet wird, wird abgelehnt. Eine signierte Benachrichtigung löst ein authentifiziertes GET des genauen Vorgangs aus. Bestellung, Methode, Währung, Basis, genehmigter Gesamtbetrag und Version werden geprüft. Der Erfolg erfordert fulfillment_ready=true, verification=provider_confirmed, den genauen bezahlten Betrag und keinen Streitfall; Krypto benötigt außerdem bestätigte Abrechnungsnachweise.\n\nIngress-Behandlung, Quittungen und Händlerereignisse werden vor Duplikaten geschützt. Alte reine Browser-Benachrichtigungsformate können keine erfolgreiche Zahlung feststellen. Händler-Webhooks enthalten niemals Kartenfelder, Bankcodes, QR-Daten, Anbieterzugangsdaten oder das Gatewaygeheimnis.\n\nTelegram hat einen separaten Vertrag\n\nPOST /api/telegram/webhook verifiziert X-Telegram-Bot-Api-Secret-Token, die Update-Struktur und den Absender. update_id schützt vor doppelter Verarbeitung. Diese Route behandelt Anmeldung, Befehle, Support und Moderationsaktionen; sie akzeptiert keine Finanzquittungen.\n\nDer Bereitstellungseigentümer konfiguriert das Bot-Token, das Webhook-Geheimnis, die setWebhook-Registrierung und eine erreichbare HTTPS-Adresse. Sie sind getrennt vom Signaturgeheimnis des Händler-Endpunkts.\n\nMehrere Geschäfte und ein USD-Basispreis\n\nWählen Sie Alle Geschäfte für aggregierte Analysen und Betrieb, oder wählen Sie ein Geschäft für dessen eigene Aufzeichnungen. Jedes Geschäft hat eine separate storeId, einen Namen, einen MwSt-Standardwert, Rechnungen, API-Schlüssel, Webhook-Endpunkte, Ereignisverlauf und Website-Anwendung. Benachrichtigungen und Support-Tickets gehören zum Konto. Ein Konto kann bis zu 100 Geschäfte erstellen. Vorhandene Datensätze verbleiben im ersten Geschäft.\n\nNeue Workspace-Rechnungen verwenden pricingMode=\"universal\" und einen USD-Basispreis. Any umfasst Karte, Alipay, SBP und Krypto; ein Händler kann eine Teilmenge auswählen. Karten und Alipay berechnen USD. SBP berechnet RUB unter Verwendung des USD/RUB-Referenzkurses der Bank von Russland. Krypto berechnet USDT gemäß der expliziten Rechnungsregel 1 USD = 1 USDT. Dies ist eine Rechnungsumrechnungsregel, kein Markt-USDT-Kurs. Das Gateway liefert den Kurs der ausgewählten Münze, den genauen Überweisungsbetrag und Anweisungen vor der Überweisung.\n\nDer Referenzkurs und beide Beträge werden bei der Erstellung eingefroren. Rechnungen mit RUB-Umrechnung verfallen innerhalb von 24 Stunden. Wenn der Referenzkurs nicht abgerufen werden kann, schlägt die Erstellung mit FX_UNAVAILABLE fehl; es wird kein erfundener oder veralteter Ersatzkurs verwendet. Der Basisbetrag Minor und Angebote verwenden die USD-Buchungswährung. quotes[method].settlement enthält das native Belastungsangebot. Der öffentliche Checkout legt die ausgewählte Belastungswährung in currency, den ursprünglichen Preis in baseAmountMinor/baseCurrency und den Referenzkurs in fx offen. Sobald eine Zahlung ausgelöst wurde, kann ihre Methode nicht geändert werden; eine Rechnung hat einen Gateway-Vorgang.\n\nErstellen Sie einen API-Schlüssel im vorgesehenen Geschäft und senden Sie Authorization: Bearer <key> von Ihrem Server. Seine Geschäftsbindung ist unveränderlich; X-Kevmi-Store kann ihm keinen Zugriff auf ein anderes Geschäft gewähren. Browser-Sitzungen wählen X-Kevmi-Store: <storeId>; wenn es weggelassen wird, wird das erste Geschäft ausgewählt. Der Wert all wird nur von GET /api/account/dashboard und GET /api/payment-links akzeptiert. Mutationen erfordern ein ausgewähltes Geschäft, Origin und X-CSRF-Token. Konto-IDs und Geschäfts-IDs sind unterschiedliche Kennungen.\n\nAus Kompatibilitätsgründen behalten API-Anfragen ohne pricingMode=\"universal\" native Preise und die ursprünglichen Währungsbeschränkungen bei. Bestehende Rechnungen werden nie neu berechnet. Bestätigte Zahlungseingänge in Analysen spiegeln verifizierte Zahlungen abzüglich gespeicherter Rechnungsausgaben wider; sie sind kein abhebbarer Saldo. Legacy-Rechnungswährungen bleiben getrennt, und Auszahlungen werden mit dem Support vereinbart. Führen Sie eine Bestellung erst aus, nachdem Sie payment.fulfillmentReady=true und payment.status=\"succeeded\" über die Server-API, den Ereignisverlauf oder einen signierten Webhook geprüft haben.",
      "readMinutes": 7
    },
    {
      "id": "limits",
      "title": "Grenzen und Verfügbarkeit",
      "summary": "Die Zahlungsverfügbarkeit hängt von Methode, Betrag, Land und den Bedingungen einer bestimmten Rechnung ab. Prüfen Sie den Gesamtbetrag, Einschränkungen und die anwendbare Bearbeitungszeit vor der Bestätigung.",
      "group": "payments",
      "url": "/docs/limits",
      "tags": [
        "Grenze",
        "Bearbeitungszeit",
        "Einbehalt",
        "Erstattung",
        "Rückbuchung",
        "Einschränkung"
      ],
      "sections": [
        {
          "id": "pending",
          "title": "Adapter- und Kanalgrenzen",
          "paragraphs": [
            "Kevmi prüft die folgenden Bereiche, bevor ein Vorgang erstellt wird. Ein Zahlungskanal kann zusätzliche Einschränkungen auferlegen; ein Betrag innerhalb des Bereichs garantiert keine Genehmigung. Die Änderung der Gateway-Konfiguration ändert die Kevmi-Grenzen nicht automatisch.",
            "Eine neue Zahlung und Kartenabsicht erfordern, dass der neueste Website-Review-Antrag des Händlers genehmigt wurde. Die Genehmigung allein verbindet das Zahlungsgateway nicht. Wenn die Überprüfung nach dem Versand geändert wird, bleibt der bestehende Vorgang für Statusabfragen, Abgleich und einen angefragten Bankcode verfügbar."
          ],
          "bullets": [],
          "steps": [],
          "table": {
            "headers": [
              "Methode",
              "Geprüfter Betrag",
              "Kevmi-Bereich"
            ],
            "rows": [
              [
                "Karte / Alipay",
                "USD-Basispreis",
                "$1–$1,000"
              ],
              [
                "SBP",
                "RUB-Kundengesamtbetrag",
                "₽1–₽100,000"
              ],
              [
                "Krypto",
                "USDT-Kundengesamtbetrag",
                "1–1.000.000 USDT + ausgewählte Netzwerkgrenzen"
              ]
            ]
          },
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "validation",
          "title": "Validierung ist keine kommerzielle Grenze",
          "paragraphs": [
            "Der Rechner und die API lehnen negative Beträge, ungültige Währungen und Berechnungen ab, bei denen die dem Händler zugewiesene Gebühr und MwSt. den Basisbetrag übersteigen. Diese Prüfungen schützen die Datenkorrektheit.",
            "Das Bestehen der Rechenarithmik garantiert nicht, dass ein Anbieter die Zahlung akzeptieren kann. Kommerzielle und Risikogrenzen werden separat vom Zahlungskanal geprüft."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "refunds",
          "title": "Erstattungen und umstrittene Transaktionen",
          "paragraphs": [
            "Verifizierte Erstattungen, Teilerstattungen, Streitfälle und Prüfzustände erscheinen im Vorgang und in Händlerereignissen. Dies bedeutet nicht, dass das Erstellen einer Erstattung oder Auszahlung im Konto implementiert ist.",
            "Erfüllen Sie nicht erneut für payment.partially_refunded, payment.refunded, payment.disputed oder payment.review_required. Bewahren Sie die ursprüngliche Bestell-/Zahlungszuordnung auf und leiten Sie Streitfälle an einen autorisierten Betreiber weiter."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "subscriptions",
          "title": "Wiederkehrende Belastungen",
          "paragraphs": [
            "Kevmi hat keine Abonnements oder wiederkehrenden Zahlungen. Das Speichern eines Bestelllinks autorisiert keine automatische künftige Belastung. Jede neue Bestellung wird separat bezahlt."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "ready",
          "title": "Bereitschaftsprüfungen",
          "paragraphs": [
            "gateway.configured in /api/config meldet die erforderlichen Gateway-Einstellungen, während /api/health den Serverspeicher prüft. Keines von beiden stellt eine Konnektivität zu einem Zahlungsanbieter her. Verwenden Sie invoice.availability in GET /api/checkout/{token} für die Bedingungen einer bestimmten Rechnung; der Zahlungserfolg wird separat gegen den Gateway-Vorgang verifiziert."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": [
            {
              "label": "Integrationsanforderungen",
              "href": "/docs/gateway"
            },
            {
              "label": "Fragen Sie nach Ihrem Anwendungsfall",
              "href": "/?support=open"
            }
          ]
        }
      ],
      "body": "Adapter- und Kanalgrenzen\n\nKevmi prüft die folgenden Bereiche, bevor ein Vorgang erstellt wird. Ein Zahlungskanal kann zusätzliche Einschränkungen auferlegen; ein Betrag innerhalb des Bereichs garantiert keine Genehmigung. Die Änderung der Gateway-Konfiguration ändert die Kevmi-Grenzen nicht automatisch.\n\nEine neue Zahlung und Kartenabsicht erfordern, dass der neueste Website-Review-Antrag des Händlers genehmigt wurde. Die Genehmigung allein verbindet das Zahlungsgateway nicht. Wenn die Überprüfung nach dem Versand geändert wird, bleibt der bestehende Vorgang für Statusabfragen, Abgleich und einen angefragten Bankcode verfügbar.\n\nMethode · Geprüfter Betrag · Kevmi-Bereich\nKarte / Alipay · USD-Basispreis · $1–$1,000\nSBP · RUB-Kundengesamtbetrag · ₽1–₽100,000\nKrypto · USDT-Kundengesamtbetrag · 1–1.000.000 USDT + ausgewählte Netzwerkgrenzen\n\nValidierung ist keine kommerzielle Grenze\n\nDer Rechner und die API lehnen negative Beträge, ungültige Währungen und Berechnungen ab, bei denen die dem Händler zugewiesene Gebühr und MwSt. den Basisbetrag übersteigen. Diese Prüfungen schützen die Datenkorrektheit.\n\nDas Bestehen der Rechenarithmik garantiert nicht, dass ein Anbieter die Zahlung akzeptieren kann. Kommerzielle und Risikogrenzen werden separat vom Zahlungskanal geprüft.\n\nErstattungen und umstrittene Transaktionen\n\nVerifizierte Erstattungen, Teilerstattungen, Streitfälle und Prüfzustände erscheinen im Vorgang und in Händlerereignissen. Dies bedeutet nicht, dass das Erstellen einer Erstattung oder Auszahlung im Konto implementiert ist.\n\nErfüllen Sie nicht erneut für payment.partially_refunded, payment.refunded, payment.disputed oder payment.review_required. Bewahren Sie die ursprüngliche Bestell-/Zahlungszuordnung auf und leiten Sie Streitfälle an einen autorisierten Betreiber weiter.\n\nWiederkehrende Belastungen\n\nKevmi hat keine Abonnements oder wiederkehrenden Zahlungen. Das Speichern eines Bestelllinks autorisiert keine automatische künftige Belastung. Jede neue Bestellung wird separat bezahlt.\n\nBereitschaftsprüfungen\n\ngateway.configured in /api/config meldet die erforderlichen Gateway-Einstellungen, während /api/health den Serverspeicher prüft. Keines von beiden stellt eine Konnektivität zu einem Zahlungsanbieter her. Verwenden Sie invoice.availability in GET /api/checkout/{token} für die Bedingungen einer bestimmten Rechnung; der Zahlungserfolg wird separat gegen den Gateway-Vorgang verifiziert.\n\nIntegrationsanforderungen\n\nFragen Sie nach Ihrem Anwendungsfall",
      "readMinutes": 3
    },
    {
      "id": "agent-access",
      "title": "Ressourcen für Suchmaschinen und KI",
      "summary": "Öffentliche Kevmi-Informationen sind in servergerendertem HTML, Klartext und strukturierten Formaten verfügbar. Diese Formate teilen eine Wissensversion und dieselben kommerziellen Fakten.",
      "group": "developers",
      "url": "/docs/agent-access",
      "tags": [
        "SEO",
        "Indexierung",
        "llms",
        "robots",
        "sitemap",
        "Agent",
        "JSON"
      ],
      "sections": [
        {
          "id": "files",
          "title": "Öffentliche Ressourcen",
          "paragraphs": [],
          "bullets": [],
          "steps": [],
          "table": {
            "headers": [
              "Adresse",
              "Inhalt"
            ],
            "rows": [
              [
                "/docs and /en/docs",
                "Vollständige Ausgaben des Leitfadens auf Russisch und Englisch"
              ],
              [
                "/llms.txt",
                "Englischer Index und Kernfakten"
              ],
              [
                "/llms-full.txt",
                "Vollständiger englischer Wissenstext"
              ],
              [
                "/knowledge.json",
                "Fakten, Gebühren, Artikel und Version"
              ],
              [
                "/openapi.json",
                "Implementierter Server-API-Vertrag"
              ],
              [
                "/sitemap.xml",
                "Veröffentlichte öffentliche Seiten"
              ],
              [
                "/robots.txt",
                "Crawler-Anweisungen"
              ]
            ]
          },
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "facts",
          "title": "Lesen strukturierter Fakten",
          "paragraphs": [
            "knowledge.facts.countries.card beschreibt die weltweite Abdeckung mit ausdrücklichen Einschränkungen. countryCount zählt Verzeichniseinträge, coverageLabel ist 190+, und exactList enthält unterstützte ISO-Einträge. restrictions bewahrt die Liste ausgeschlossener Anbieter auf.",
            "source=owner_provided und status=owner_list_received dokumentieren den Ursprung der Liste. independentlyVerified=false und verifiedCountryCount=null bedeuten, dass die Liste nicht unabhängig gegen ein Live-Gateway geprüft wurde; sie ist weiterhin eine empfangene und veröffentlichte Liste.",
            "partialCoverage enthält ** Länder mit unvollständiger Standortabdeckung. unresolvedFootnotes bewahrt das separate *-Zeichen für China. coverage=listed bedeutet Aufnahme in die Liste; partial_locations bezeichnet Standorteinschränkungen; footnote_pending bezeichnet die separate unbestätigte Bedeutung eines Zeichens. None garantiert die Freigabe jeder Karte.",
            "gatewayConnected=null und gatewayIntegration.liveConfigurationProvided=null bedeuten, dass die statische Wissensbasis keinen aktuellen Zustand einer Bereitstellung enthält. gatewayIntegration.availability kennzeichnet die Endpunkte für aktuelle Prüfungen. gateway.configured in /api/config meldet Einstellungen, nicht die Anbieterverbindung. invoice.availability in der Checkout-Antwort beschreibt berechtigte Rechnungsbedingungen, während das Kompatibilitätsfeld invoice.gatewayConnected availability.available spiegelt. Keines ersetzt die Betriebsbestätigung. gatewayIntegration.adapterImplemented=true beschreibt die Unterstützung des v3-Protokolls; subscriptionsSupported=false schließt wiederkehrende Gebühren aus."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": {
            "language": "JSON · fact excerpt",
            "code": "{\n  \"subscriptionsSupported\": false,\n  \"gatewayConnected\": null,\n  \"countries\": {\n    \"card\": {\n      \"coverageLabel\": \"190+\",\n      \"policy\": \"worldwide_except_restrictions\",\n      \"restrictions\": [\n        {\n          \"code\": \"AF\",\n          \"name\": \"Afghanistan\"\n        },\n        {\n          \"code\": \"AQ\",\n          \"name\": \"Antarctica\"\n        },\n        {\n          \"code\": \"BY\",\n          \"name\": \"Belarus\"\n        },\n        {\n          \"code\": \"MM\",\n          \"name\": \"Burma (Myanmar)\"\n        },\n        {\n          \"code\": \"BI\",\n          \"name\": \"Burundi\"\n        },\n        {\n          \"code\": \"CF\",\n          \"name\": \"Central African Republic\"\n        },\n        {\n          \"code\": \"TD\",\n          \"name\": \"Chad\"\n        },\n        {\n          \"code\": \"CU\",\n          \"name\": \"Cuba\"\n        },\n        {\n          \"code\": \"CD\",\n          \"name\": \"Democratic Republic of Congo\"\n        },\n        {\n          \"code\": \"CG\",\n          \"name\": \"Republic of Congo\"\n        },\n        {\n          \"code\": \"ER\",\n          \"name\": \"Eritrea\"\n        },\n        {\n          \"code\": \"HT\",\n          \"name\": \"Haiti\"\n        },\n        {\n          \"code\": \"IR\",\n          \"name\": \"Iran\"\n        },\n        {\n          \"code\": \"IQ\",\n          \"name\": \"Iraq\"\n        },\n        {\n          \"code\": \"LY\",\n          \"name\": \"Libya\"\n        },\n        {\n          \"code\": \"ML\",\n          \"name\": \"Mali\"\n        },\n        {\n          \"code\": \"NI\",\n          \"name\": \"Nicaragua\"\n        },\n        {\n          \"code\": \"KP\",\n          \"name\": \"North Korea\"\n        },\n        {\n          \"code\": \"RU\",\n          \"name\": \"Russia\"\n        },\n        {\n          \"code\": \"SO\",\n          \"name\": \"Somalia\"\n        },\n        {\n          \"code\": \"SS\",\n          \"name\": \"South Sudan\"\n        },\n        {\n          \"code\": \"SD\",\n          \"name\": \"Sudan\"\n        },\n        {\n          \"code\": \"SY\",\n          \"name\": \"Syria\"\n        },\n        {\n          \"code\": \"VE\",\n          \"name\": \"Venezuela\"\n        },\n        {\n          \"code\": \"YE\",\n          \"name\": \"Yemen\"\n        },\n        {\n          \"code\": \"ZW\",\n          \"name\": \"Zimbabwe\"\n        },\n        {\n          \"code\": \"UA-43\",\n          \"name\": \"Crimea (Region of Ukraine)\"\n        },\n        {\n          \"code\": \"UA-14\",\n          \"name\": \"Donetsk (Region of Ukraine)\"\n        },\n        {\n          \"code\": \"UA-65\",\n          \"name\": \"Kherson (Region of Ukraine)\"\n        },\n        {\n          \"code\": \"UA-09\",\n          \"name\": \"Luhansk (Region of Ukraine)\"\n        },\n        {\n          \"code\": \"UA-23\",\n          \"name\": \"Zaporizhzhia (Region of Ukraine)\"\n        },\n        {\n          \"code\": \"AN\",\n          \"name\": \"Netherlands Antilles\"\n        }\n      ],\n      \"independentlyVerified\": false,\n      \"approvalGuaranteed\": false\n    }\n  },\n  \"gatewayIntegration\": {\n    \"adapterImplemented\": true,\n    \"contract\": \"v3\",\n    \"liveConfigurationProvided\": null,\n    \"availability\": {\n      \"source\": \"runtime\",\n      \"configurationEndpoint\": \"/api/config\",\n      \"configurationIncludesHealthCheck\": false,\n      \"checkoutEndpoint\": \"/api/checkout/{token}\",\n      \"checkoutIncludesProviderApproval\": false\n    }\n  }\n}"
          },
          "note": "",
          "links": []
        },
        {
          "id": "privacy",
          "title": "Grenzen öffentlicher Informationen",
          "paragraphs": [
            "Klartext und JSON enthalten keine Sitzungen, Token, private Supportanfragen, Zahlungsdatensätze von Nutzern oder Integrationsgeheimnisse. Anmelde-, Konto- und Checkout-Seiten sind von der Suchindexierung ausgeschlossen.",
            "Das Lesen öffentlicher Dokumentation gewährt keine Berechtigungen zur Shop-Verwaltung. Persönliche Datensätze erfordern eine gültige Sitzung, und Änderungen erfordern zusätzliche Serverprüfungen."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "updates",
          "title": "Aktualisierungen und Zitate",
          "paragraphs": [
            "Artikel haben stabile IDs, URLs, Titel und ein Aktualisierungsdatum. Verlinken Sie beim Zitieren einer Antwort auf den relevanten Leitfaden und bewahren Sie Einschränkungen zu Transaktionsbedingungen.",
            "Sitemaps, llms-Ressourcen und serverseitig gerendertes HTML erleichtern das Extrahieren von Inhalten. Sie garantieren keine Indexierung, Suchposition oder Nutzung durch ein externes KI-System.",
            "Nur veröffentlichte Übersetzungen haben kanonische URLs, hreflang-Alternativen und Sitemap-Einträge. Ein für eine zukünftige Übersetzung konfiguriertes Gebietsschema ist keine veröffentlichte Sprachausgabe."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "assistant-admin-v16",
          "title": "Assistent, Support und Projektverwaltung",
          "paragraphs": [
            "Aktivieren Sie „Zugriff auf meine Daten im Chat erlauben“, wenn Sie Hilfe bei privaten Vorgängen benötigen. Eine Webanfrage mit includeAccount=true erfordert eine gültige Sitzung, Origin und X-CSRF-Token; X-Kevmi-Store wählt einen eigenen Store oder alle eigenen Stores aus. Ohne Berechtigung verwendet der Assistent öffentliche Dokumentation. In Telegram aktiviert eine separate Schaltfläche den Zugriff, nachdem der Absender identifiziert wurde.",
            "Das Tool read_account liest eigene Stores, Rechnungen mit bestätigtem Zahlungsstatus, Ereignisse, Anträge und Supportanfragen mit Fachantworten. Es gibt 30 Datensätze und nextPage zurück; ältere Datensätze sind über Paginierung verfügbar. Lesevorgänge pro Antwort sind begrenzt, daher muss eine unvollständige Stichprobe offengelegt werden. API-Schlüssel, Webhook-Geheimnisse, Kartendaten und Sitzungen werden dem Tool nicht bereitgestellt. Es kann keine Zahlungen belasten, auszahlen, erstatten oder Einstellungen ändern.",
            "Das Erstellen einer Supportanfrage im Arbeitsbereich oder in Telegram platziert eine separate Administratorwarnung in einer dauerhaften Warteschlange. Sie verlinkt auf /admin/tickets?ticket=<id>; vorübergehende Telegram-Fehler werden erneut versucht. Die Wiederherstellung nimmt auch ältere offene Anfragen ohne Warnung auf. Administratoren antworten auf der Anfrageseite; die Antwort wird im Benutzerarbeitsbereich gespeichert und über Telegram gesendet, wenn Support-Benachrichtigungen aktiviert sind.",
            "Der Bot verwendet Inline-Schaltflächen für das Hauptmenü, Stores, Benachrichtigungen, Support, Sicherheit und Sprache. Die Navigation bearbeitet die aktuelle Nachricht; ein nicht verfügbares altes Menü wird ersetzt. Zahlungs- und Sicherheitsbenachrichtigungen werden nicht als Wegwerf-Navigation behandelt. Das Abmelden über das Menü erfordert eine Bestätigung. Der explizite Befehl /logout beendet weiterhin jede Kontositzung.",
            "Das Panel /admin/project ist auf Telegram-IDs in der serverseitigen Allowlist MODERATOR_TELEGRAM_IDS beschränkt. Es umfasst Benutzer, Stores, Vorgänge, Schlüsselwiderruf, Deaktivierung von Webhooks, Pausieren von Rechnungen, Annahmesteuerungen und ein Prüfprotokoll. Mutationen erfordern CSRF und einen Grund. Das Panel kann einen Administrator nicht einschränken oder eine Zahlung manuell als erfolgreich erklären. Die Einschränkung eines Eigentümers beendet Sitzungen und blockiert API-Schlüsselzugriff; die Einschränkung eines Stores stoppt neue Vorgänge. Der Verlauf bleibt erhalten.",
            "Das öffentliche Angebot ist unter /public-offer und die Datenschutzrichtlinie unter /privacy-policy in jeder aktivierten Sprache verfügbar. Suchen Sie Münzen nach Name oder Tickersymbol. Ein Netzwerkauswahlfeld erscheint nur, wenn mehrere Live-Netzwerke verfügbar sind. Ein einzelnes Netzwerk wird automatisch ausgewählt und bleibt in der Bestätigung benannt. Die Live-Verfügbarkeit des Gateways bestimmt die wählbaren Paare; der Referenzkatalog aktiviert keinen Dienst.",
            "Verwenden Sie update.sh für routinemäßige Web-App-Veröffentlichungen: Kandidaten bauen, Migrationsverlauf prüfen, SQLite online sichern, einen zweiten Container starten, ihn verifizieren und Caddy elegant umschalten. Gateway, PostgreSQL und Mail werden nicht neu gestartet. Frühere statische Assets bleiben für geöffnete Tabs verfügbar. Eine neue Migration erfordert explizite überprüfte Genehmigung; eine inkompatible Schemaänderung ist keine nahtlose Bereitstellung."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": [
            {
              "label": "Öffentliches Angebot",
              "href": "/public-offer"
            },
            {
              "label": "Datenschutzrichtlinie",
              "href": "/privacy-policy"
            }
          ]
        }
      ],
      "body": "Öffentliche Ressourcen\n\nAdresse · Inhalt\n/docs and /en/docs · Vollständige Ausgaben des Leitfadens auf Russisch und Englisch\n/llms.txt · Englischer Index und Kernfakten\n/llms-full.txt · Vollständiger englischer Wissenstext\n/knowledge.json · Fakten, Gebühren, Artikel und Version\n/openapi.json · Implementierter Server-API-Vertrag\n/sitemap.xml · Veröffentlichte öffentliche Seiten\n/robots.txt · Crawler-Anweisungen\n\nLesen strukturierter Fakten\n\nknowledge.facts.countries.card beschreibt die weltweite Abdeckung mit ausdrücklichen Einschränkungen. countryCount zählt Verzeichniseinträge, coverageLabel ist 190+, und exactList enthält unterstützte ISO-Einträge. restrictions bewahrt die Liste ausgeschlossener Anbieter auf.\n\nsource=owner_provided und status=owner_list_received dokumentieren den Ursprung der Liste. independentlyVerified=false und verifiedCountryCount=null bedeuten, dass die Liste nicht unabhängig gegen ein Live-Gateway geprüft wurde; sie ist weiterhin eine empfangene und veröffentlichte Liste.\n\npartialCoverage enthält ** Länder mit unvollständiger Standortabdeckung. unresolvedFootnotes bewahrt das separate *-Zeichen für China. coverage=listed bedeutet Aufnahme in die Liste; partial_locations bezeichnet Standorteinschränkungen; footnote_pending bezeichnet die separate unbestätigte Bedeutung eines Zeichens. None garantiert die Freigabe jeder Karte.\n\ngatewayConnected=null und gatewayIntegration.liveConfigurationProvided=null bedeuten, dass die statische Wissensbasis keinen aktuellen Zustand einer Bereitstellung enthält. gatewayIntegration.availability kennzeichnet die Endpunkte für aktuelle Prüfungen. gateway.configured in /api/config meldet Einstellungen, nicht die Anbieterverbindung. invoice.availability in der Checkout-Antwort beschreibt berechtigte Rechnungsbedingungen, während das Kompatibilitätsfeld invoice.gatewayConnected availability.available spiegelt. Keines ersetzt die Betriebsbestätigung. gatewayIntegration.adapterImplemented=true beschreibt die Unterstützung des v3-Protokolls; subscriptionsSupported=false schließt wiederkehrende Gebühren aus.\n\n{\n  \"subscriptionsSupported\": false,\n  \"gatewayConnected\": null,\n  \"countries\": {\n    \"card\": {\n      \"coverageLabel\": \"190+\",\n      \"policy\": \"worldwide_except_restrictions\",\n      \"restrictions\": [\n        {\n          \"code\": \"AF\",\n          \"name\": \"Afghanistan\"\n        },\n        {\n          \"code\": \"AQ\",\n          \"name\": \"Antarctica\"\n        },\n        {\n          \"code\": \"BY\",\n          \"name\": \"Belarus\"\n        },\n        {\n          \"code\": \"MM\",\n          \"name\": \"Burma (Myanmar)\"\n        },\n        {\n          \"code\": \"BI\",\n          \"name\": \"Burundi\"\n        },\n        {\n          \"code\": \"CF\",\n          \"name\": \"Central African Republic\"\n        },\n        {\n          \"code\": \"TD\",\n          \"name\": \"Chad\"\n        },\n        {\n          \"code\": \"CU\",\n          \"name\": \"Cuba\"\n        },\n        {\n          \"code\": \"CD\",\n          \"name\": \"Democratic Republic of Congo\"\n        },\n        {\n          \"code\": \"CG\",\n          \"name\": \"Republic of Congo\"\n        },\n        {\n          \"code\": \"ER\",\n          \"name\": \"Eritrea\"\n        },\n        {\n          \"code\": \"HT\",\n          \"name\": \"Haiti\"\n        },\n        {\n          \"code\": \"IR\",\n          \"name\": \"Iran\"\n        },\n        {\n          \"code\": \"IQ\",\n          \"name\": \"Iraq\"\n        },\n        {\n          \"code\": \"LY\",\n          \"name\": \"Libya\"\n        },\n        {\n          \"code\": \"ML\",\n          \"name\": \"Mali\"\n        },\n        {\n          \"code\": \"NI\",\n          \"name\": \"Nicaragua\"\n        },\n        {\n          \"code\": \"KP\",\n          \"name\": \"North Korea\"\n        },\n        {\n          \"code\": \"RU\",\n          \"name\": \"Russia\"\n        },\n        {\n          \"code\": \"SO\",\n          \"name\": \"Somalia\"\n        },\n        {\n          \"code\": \"SS\",\n          \"name\": \"South Sudan\"\n        },\n        {\n          \"code\": \"SD\",\n          \"name\": \"Sudan\"\n        },\n        {\n          \"code\": \"SY\",\n          \"name\": \"Syria\"\n        },\n        {\n          \"code\": \"VE\",\n          \"name\": \"Venezuela\"\n        },\n        {\n          \"code\": \"YE\",\n          \"name\": \"Yemen\"\n        },\n        {\n          \"code\": \"ZW\",\n          \"name\": \"Zimbabwe\"\n        },\n        {\n          \"code\": \"UA-43\",\n          \"name\": \"Crimea (Region of Ukraine)\"\n        },\n        {\n          \"code\": \"UA-14\",\n          \"name\": \"Donetsk (Region of Ukraine)\"\n        },\n        {\n          \"code\": \"UA-65\",\n          \"name\": \"Kherson (Region of Ukraine)\"\n        },\n        {\n          \"code\": \"UA-09\",\n          \"name\": \"Luhansk (Region of Ukraine)\"\n        },\n        {\n          \"code\": \"UA-23\",\n          \"name\": \"Zaporizhzhia (Region of Ukraine)\"\n        },\n        {\n          \"code\": \"AN\",\n          \"name\": \"Netherlands Antilles\"\n        }\n      ],\n      \"independentlyVerified\": false,\n      \"approvalGuaranteed\": false\n    }\n  },\n  \"gatewayIntegration\": {\n    \"adapterImplemented\": true,\n    \"contract\": \"v3\",\n    \"liveConfigurationProvided\": null,\n    \"availability\": {\n      \"source\": \"runtime\",\n      \"configurationEndpoint\": \"/api/config\",\n      \"configurationIncludesHealthCheck\": false,\n      \"checkoutEndpoint\": \"/api/checkout/{token}\",\n      \"checkoutIncludesProviderApproval\": false\n    }\n  }\n}\n\nGrenzen öffentlicher Informationen\n\nKlartext und JSON enthalten keine Sitzungen, Token, private Supportanfragen, Zahlungsdatensätze von Nutzern oder Integrationsgeheimnisse. Anmelde-, Konto- und Checkout-Seiten sind von der Suchindexierung ausgeschlossen.\n\nDas Lesen öffentlicher Dokumentation gewährt keine Berechtigungen zur Shop-Verwaltung. Persönliche Datensätze erfordern eine gültige Sitzung, und Änderungen erfordern zusätzliche Serverprüfungen.\n\nAktualisierungen und Zitate\n\nArtikel haben stabile IDs, URLs, Titel und ein Aktualisierungsdatum. Verlinken Sie beim Zitieren einer Antwort auf den relevanten Leitfaden und bewahren Sie Einschränkungen zu Transaktionsbedingungen.\n\nSitemaps, llms-Ressourcen und serverseitig gerendertes HTML erleichtern das Extrahieren von Inhalten. Sie garantieren keine Indexierung, Suchposition oder Nutzung durch ein externes KI-System.\n\nNur veröffentlichte Übersetzungen haben kanonische URLs, hreflang-Alternativen und Sitemap-Einträge. Ein für eine zukünftige Übersetzung konfiguriertes Gebietsschema ist keine veröffentlichte Sprachausgabe.\n\nAssistent, Support und Projektverwaltung\n\nAktivieren Sie „Zugriff auf meine Daten im Chat erlauben“, wenn Sie Hilfe bei privaten Vorgängen benötigen. Eine Webanfrage mit includeAccount=true erfordert eine gültige Sitzung, Origin und X-CSRF-Token; X-Kevmi-Store wählt einen eigenen Store oder alle eigenen Stores aus. Ohne Berechtigung verwendet der Assistent öffentliche Dokumentation. In Telegram aktiviert eine separate Schaltfläche den Zugriff, nachdem der Absender identifiziert wurde.\n\nDas Tool read_account liest eigene Stores, Rechnungen mit bestätigtem Zahlungsstatus, Ereignisse, Anträge und Supportanfragen mit Fachantworten. Es gibt 30 Datensätze und nextPage zurück; ältere Datensätze sind über Paginierung verfügbar. Lesevorgänge pro Antwort sind begrenzt, daher muss eine unvollständige Stichprobe offengelegt werden. API-Schlüssel, Webhook-Geheimnisse, Kartendaten und Sitzungen werden dem Tool nicht bereitgestellt. Es kann keine Zahlungen belasten, auszahlen, erstatten oder Einstellungen ändern.\n\nDas Erstellen einer Supportanfrage im Arbeitsbereich oder in Telegram platziert eine separate Administratorwarnung in einer dauerhaften Warteschlange. Sie verlinkt auf /admin/tickets?ticket=<id>; vorübergehende Telegram-Fehler werden erneut versucht. Die Wiederherstellung nimmt auch ältere offene Anfragen ohne Warnung auf. Administratoren antworten auf der Anfrageseite; die Antwort wird im Benutzerarbeitsbereich gespeichert und über Telegram gesendet, wenn Support-Benachrichtigungen aktiviert sind.\n\nDer Bot verwendet Inline-Schaltflächen für das Hauptmenü, Stores, Benachrichtigungen, Support, Sicherheit und Sprache. Die Navigation bearbeitet die aktuelle Nachricht; ein nicht verfügbares altes Menü wird ersetzt. Zahlungs- und Sicherheitsbenachrichtigungen werden nicht als Wegwerf-Navigation behandelt. Das Abmelden über das Menü erfordert eine Bestätigung. Der explizite Befehl /logout beendet weiterhin jede Kontositzung.\n\nDas Panel /admin/project ist auf Telegram-IDs in der serverseitigen Allowlist MODERATOR_TELEGRAM_IDS beschränkt. Es umfasst Benutzer, Stores, Vorgänge, Schlüsselwiderruf, Deaktivierung von Webhooks, Pausieren von Rechnungen, Annahmesteuerungen und ein Prüfprotokoll. Mutationen erfordern CSRF und einen Grund. Das Panel kann einen Administrator nicht einschränken oder eine Zahlung manuell als erfolgreich erklären. Die Einschränkung eines Eigentümers beendet Sitzungen und blockiert API-Schlüsselzugriff; die Einschränkung eines Stores stoppt neue Vorgänge. Der Verlauf bleibt erhalten.\n\nDas öffentliche Angebot ist unter /public-offer und die Datenschutzrichtlinie unter /privacy-policy in jeder aktivierten Sprache verfügbar. Suchen Sie Münzen nach Name oder Tickersymbol. Ein Netzwerkauswahlfeld erscheint nur, wenn mehrere Live-Netzwerke verfügbar sind. Ein einzelnes Netzwerk wird automatisch ausgewählt und bleibt in der Bestätigung benannt. Die Live-Verfügbarkeit des Gateways bestimmt die wählbaren Paare; der Referenzkatalog aktiviert keinen Dienst.\n\nVerwenden Sie update.sh für routinemäßige Web-App-Veröffentlichungen: Kandidaten bauen, Migrationsverlauf prüfen, SQLite online sichern, einen zweiten Container starten, ihn verifizieren und Caddy elegant umschalten. Gateway, PostgreSQL und Mail werden nicht neu gestartet. Frühere statische Assets bleiben für geöffnete Tabs verfügbar. Eine neue Migration erfordert explizite überprüfte Genehmigung; eine inkompatible Schemaänderung ist keine nahtlose Bereitstellung.\n\nÖffentliches Angebot\n\nDatenschutzrichtlinie",
      "readMinutes": 5
    },
    {
      "id": "cost-sharing",
      "title": "Bearbeitungsgebühren und Mehrwertsteuer aufteilen",
      "summary": "Wählen Sie selbstständig, welchen Anteil der Bearbeitungsgebühr und der Mehrwertsteuer Ihr Kunde auf jeder Rechnung zahlt. Zwei Schieberegler verteilen jede Kostenposition von 0 bis 100 % in Ein-Prozent-Schritten, wobei das Ergebnis sichtbar ist, bevor Sie den Link erstellen.",
      "tags": [
        "Kostenverteilung",
        "Bearbeitungsgebühr",
        "Mehrwertsteuer",
        "Prozentsatz",
        "Schieberegler",
        "feeCustomerPercent",
        "vatCustomerPercent"
      ],
      "sections": [
        {
          "id": "controls",
          "title": "Zwei Regler für eine Bestellung",
          "paragraphs": [
            "Der Regler für die Bearbeitungsgebühr verteilt die gesamte Annahmegebühr, einschließlich sowohl ihres prozentualen als auch ihres festen Anteils. Der Mehrwertsteuer-Regler verteilt nur die Steuer. Kein Regler ändert den Tarif, den Steuersatz oder den Basisproduktpreis.",
            "Ganz links wird die Kostenposition dem Kunden zugewiesen; ganz rechts dem Händler. Beschriftungen zeigen die genauen Prozentsätze und Geldbeträge beider Parteien. Kunde, Gleichmäßig aufteilen und Händler bieten Voreinstellungen für eine schnelle Auswahl."
          ],
          "bullets": [
            "Der Kundenanteil wird zur Checkout-Summe addiert.",
            "Der Händleranteil wird vom Basisbestellpreis abgezogen.",
            "SBP und Kryptowährung haben eine Mehrwertsteuer von null, daher beeinflusst der Mehrwertsteuer-Regler ihre Summe nicht.",
            "Schaltflächen und Schieberegler funktionieren mit der Tastatur; Animation ist nicht erforderlich, um das Ergebnis zu verstehen."
          ],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": [
            {
              "label": "Rechner öffnen",
              "href": "/pricing"
            }
          ]
        },
        {
          "id": "base",
          "title": "Ein Basispreis, zwei getrennte Kostenpositionen",
          "paragraphs": [
            "Internationale Karten und Alipay kosten 10 % des Basispreises plus 0,50 $, mit einer Mehrwertsteuer von 16 % des Basispreises. SBP kostet 8 % und Kryptowährung 4 %; keine von beiden hat eine Mehrwertsteuer gemäß dem veröffentlichten Preismodell.",
            "Die Mehrwertsteuer wird vom Basispreis hinzugerechnet, nicht mithilfe von 16/116 herausgerechnet. Die Gebühr wird nicht auf einer Summe neu berechnet, die die Mehrwertsteuer oder den Kundenanteil an der Gebühr enthält. Die Provision von Kevmi ist bereits im veröffentlichten Tarif enthalten; weitere 5 % werden nicht hinzugefügt."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": {
            "language": "Formula · integer minor units",
            "code": "fee = roundHalfUp(base × rate / 100) + fixed\nvat = vatApplies ? roundHalfUp(base × 16 / 100) : 0\ncustomerFee = roundHalfUp(fee × feeCustomerPercent / 100)\ncustomerVat = roundHalfUp(vat × vatCustomerPercent / 100)\nmerchantFee = fee − customerFee\nmerchantVat = vat − customerVat\ncustomerTotal = base + customerFee + customerVat\nmerchantNet = base − merchantFee − merchantVat"
          },
          "note": "",
          "links": []
        },
        {
          "id": "example",
          "title": "Zuweisung einer Kartenbestellung über 5 $",
          "paragraphs": [
            "Jedes Beispiel unten verwendet einen Basispreis von 5,00 $, eine Gesamtkartengebühr von 1,00 $ und eine Mehrwertsteuer von 0,80 $. Die Prozentsätze ändern nur, wer diese Kostenpositionen trägt."
          ],
          "bullets": [],
          "steps": [],
          "table": {
            "headers": [
              "Kundenanteile: MwSt. / Gebühr",
              "Kunde zahlt",
              "Händler nach Abzügen"
            ],
            "rows": [
              [
                "100 % / 0 % · ursprüngliche Standardeinstellung",
                "$5,80",
                "$4,00"
              ],
              [
                "0 % / 0 % · Händler übernimmt alles",
                "$5,00",
                "$3,20"
              ],
              [
                "100 % / 100 % · Kunde übernimmt alles",
                "$6.80",
                "$5,00"
              ],
              [
                "50 % / 23 % · benutzerdefinierte Aufteilung",
                "$5.63",
                "$3.83"
              ]
            ]
          },
          "code": null,
          "note": "Die Tabelle veranschaulicht die Zuweisungsarithmetik. Von diesen Kartenkonfigurationen kann das aktuelle Gateway nur 100 % Kunden-MwSt. / 0 % Kundengebühr ausführen. Diese Berechnung initiiert keine Auszahlung; es gibt keine automatische Umrechnung von USD in USDT.",
          "links": []
        },
        {
          "id": "rounding",
          "title": "Runden ohne einen Cent zu verlieren",
          "paragraphs": [
            "Beträge sind ganzzahlige Nebenwährungseinheiten. Die Gesamtgebühr und die Gesamt-Mehrwertsteuer werden zunächst getrennt gerundet. Jeder Kundenanteil verwendet dann Halbaufrundung, und der Händler erhält den exakten Rest dieser Kostenposition. Die beiden Anteile ergeben daher immer den ursprünglichen Betrag.",
            "Bei einer Aufteilung einer Ein-Cent-Kostenposition im Verhältnis 50/50 werden dem Kunden ein Cent und dem Händler null zugewiesen. Der Prozentsatz bleibt 50 %, während die Geldbeträge die verfügbare Präzision der Währung widerspiegeln. Der Server lehnt Berechnungen mit negativen Händlererlösen ab."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "api",
          "title": "Legen Sie die Aufteilung über die API fest",
          "paragraphs": [
            "Senden Sie vatCustomerPercent und feeCustomerPercent als Ganzzahlen von 0 bis 100. Jede gilt für die zu erstellende Rechnung. Leere Zeichenfolgen, gebrochene Prozentsätze und Zahlen außerhalb des Bereichs werden abgelehnt.",
            "Das Weglassen von feeCustomerPercent weist die gesamte Gebühr dem Händler zu. Das Weglassen von vatCustomerPercent verwendet das Legacy-Feld vatPayer oder den Kontostandardwert. Legacy-Werte für Kunde und Händler entsprechen 100 % und 0 % Kunden-Mehrwertsteuer. Senden Sie keine widersprüchlichen vatPayer- und vatCustomerPercent-Werte.",
            "Antworten beschreiben einen Zwischenwert für den Mehrwertsteueranteil als vatPayer=shared. Verwenden Sie den numerischen Prozentsatz für neue Anfragen; shared wird nicht als Legacy-Eingabewert für vatPayer akzeptiert."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": {
            "language": "JSON",
            "code": "{\n  \"title\": \"Design project · order 1042\",\n  \"description\": \"One-time payment for the agreed design work\",\n  \"amountMinor\": 500,\n  \"currency\": \"USD\",\n  \"methods\": [\n    \"card\",\n    \"alipay\"\n  ],\n  \"vatCustomerPercent\": 100,\n  \"feeCustomerPercent\": 0,\n  \"orderId\": \"order-1042\",\n  \"metadata\": {\n    \"campaign\": \"autumn\"\n  }\n}"
          },
          "note": "Das Beispiel verwendet die unterstützte Zuweisung des Kartenkanals: die gesamte Mehrwertsteuer an den Kunden und die volle Bearbeitungsgebühr an den Händler. Das Speichern anderer Prozentsätze macht sie nicht ausführbar.",
          "links": [
            {
              "label": "Erstellen Sie eine Rechnung über die API",
              "href": "/docs/payment-links-api"
            }
          ]
        },
        {
          "id": "snapshot",
          "title": "Bedingungen bleiben bei der Rechnung",
          "paragraphs": [
            "Die Rechnung friert den Betrag, die Währung, die Methoden und beide Anteile ein. Das Ändern von Shop-Einstellungen ändert keine ausgestellten Links. Schieberegler berechnen die Zuweisung; die Live-Ausführung hängt von den Fähigkeiten des verbundenen Kanals ab.",
            "Für eine neue Live-Karten- oder Alipay-Zahlung unterstützt das aktuelle Gateway nur feeCustomerPercent=0 und vatCustomerPercent=100: der Händler übernimmt die gesamte Bearbeitungsgebühr und die MwSt wird dem Kunden vollständig hinzugefügt. Andere Anteile können auf einer Rechnung gespeichert und berechnet werden, aber die Ausführung ist mit unsupported_allocation blockiert. Der Server ändert gespeicherte Bedingungen niemals stillschweigend. SBP- und USDT-Kryptozahlungen unterstützen jeden Bearbeitungsgebührenanteil und haben keine MwSt."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        }
      ],
      "group": "payments",
      "url": "/docs/cost-sharing",
      "body": "Zwei Regler für eine Bestellung\n\nDer Regler für die Bearbeitungsgebühr verteilt die gesamte Annahmegebühr, einschließlich sowohl ihres prozentualen als auch ihres festen Anteils. Der Mehrwertsteuer-Regler verteilt nur die Steuer. Kein Regler ändert den Tarif, den Steuersatz oder den Basisproduktpreis.\n\nGanz links wird die Kostenposition dem Kunden zugewiesen; ganz rechts dem Händler. Beschriftungen zeigen die genauen Prozentsätze und Geldbeträge beider Parteien. Kunde, Gleichmäßig aufteilen und Händler bieten Voreinstellungen für eine schnelle Auswahl.\n\nDer Kundenanteil wird zur Checkout-Summe addiert.\n\nDer Händleranteil wird vom Basisbestellpreis abgezogen.\n\nSBP und Kryptowährung haben eine Mehrwertsteuer von null, daher beeinflusst der Mehrwertsteuer-Regler ihre Summe nicht.\n\nSchaltflächen und Schieberegler funktionieren mit der Tastatur; Animation ist nicht erforderlich, um das Ergebnis zu verstehen.\n\nRechner öffnen\n\nEin Basispreis, zwei getrennte Kostenpositionen\n\nInternationale Karten und Alipay kosten 10 % des Basispreises plus 0,50 $, mit einer Mehrwertsteuer von 16 % des Basispreises. SBP kostet 8 % und Kryptowährung 4 %; keine von beiden hat eine Mehrwertsteuer gemäß dem veröffentlichten Preismodell.\n\nDie Mehrwertsteuer wird vom Basispreis hinzugerechnet, nicht mithilfe von 16/116 herausgerechnet. Die Gebühr wird nicht auf einer Summe neu berechnet, die die Mehrwertsteuer oder den Kundenanteil an der Gebühr enthält. Die Provision von Kevmi ist bereits im veröffentlichten Tarif enthalten; weitere 5 % werden nicht hinzugefügt.\n\nfee = roundHalfUp(base × rate / 100) + fixed\nvat = vatApplies ? roundHalfUp(base × 16 / 100) : 0\ncustomerFee = roundHalfUp(fee × feeCustomerPercent / 100)\ncustomerVat = roundHalfUp(vat × vatCustomerPercent / 100)\nmerchantFee = fee − customerFee\nmerchantVat = vat − customerVat\ncustomerTotal = base + customerFee + customerVat\nmerchantNet = base − merchantFee − merchantVat\n\nZuweisung einer Kartenbestellung über 5 $\n\nJedes Beispiel unten verwendet einen Basispreis von 5,00 $, eine Gesamtkartengebühr von 1,00 $ und eine Mehrwertsteuer von 0,80 $. Die Prozentsätze ändern nur, wer diese Kostenpositionen trägt.\n\nKundenanteile: MwSt. / Gebühr · Kunde zahlt · Händler nach Abzügen\n100 % / 0 % · ursprüngliche Standardeinstellung · $5,80 · $4,00\n0 % / 0 % · Händler übernimmt alles · $5,00 · $3,20\n100 % / 100 % · Kunde übernimmt alles · $6.80 · $5,00\n50 % / 23 % · benutzerdefinierte Aufteilung · $5.63 · $3.83\n\nDie Tabelle veranschaulicht die Zuweisungsarithmetik. Von diesen Kartenkonfigurationen kann das aktuelle Gateway nur 100 % Kunden-MwSt. / 0 % Kundengebühr ausführen. Diese Berechnung initiiert keine Auszahlung; es gibt keine automatische Umrechnung von USD in USDT.\n\nRunden ohne einen Cent zu verlieren\n\nBeträge sind ganzzahlige Nebenwährungseinheiten. Die Gesamtgebühr und die Gesamt-Mehrwertsteuer werden zunächst getrennt gerundet. Jeder Kundenanteil verwendet dann Halbaufrundung, und der Händler erhält den exakten Rest dieser Kostenposition. Die beiden Anteile ergeben daher immer den ursprünglichen Betrag.\n\nBei einer Aufteilung einer Ein-Cent-Kostenposition im Verhältnis 50/50 werden dem Kunden ein Cent und dem Händler null zugewiesen. Der Prozentsatz bleibt 50 %, während die Geldbeträge die verfügbare Präzision der Währung widerspiegeln. Der Server lehnt Berechnungen mit negativen Händlererlösen ab.\n\nLegen Sie die Aufteilung über die API fest\n\nSenden Sie vatCustomerPercent und feeCustomerPercent als Ganzzahlen von 0 bis 100. Jede gilt für die zu erstellende Rechnung. Leere Zeichenfolgen, gebrochene Prozentsätze und Zahlen außerhalb des Bereichs werden abgelehnt.\n\nDas Weglassen von feeCustomerPercent weist die gesamte Gebühr dem Händler zu. Das Weglassen von vatCustomerPercent verwendet das Legacy-Feld vatPayer oder den Kontostandardwert. Legacy-Werte für Kunde und Händler entsprechen 100 % und 0 % Kunden-Mehrwertsteuer. Senden Sie keine widersprüchlichen vatPayer- und vatCustomerPercent-Werte.\n\nAntworten beschreiben einen Zwischenwert für den Mehrwertsteueranteil als vatPayer=shared. Verwenden Sie den numerischen Prozentsatz für neue Anfragen; shared wird nicht als Legacy-Eingabewert für vatPayer akzeptiert.\n\n{\n  \"title\": \"Design project · order 1042\",\n  \"description\": \"One-time payment for the agreed design work\",\n  \"amountMinor\": 500,\n  \"currency\": \"USD\",\n  \"methods\": [\n    \"card\",\n    \"alipay\"\n  ],\n  \"vatCustomerPercent\": 100,\n  \"feeCustomerPercent\": 0,\n  \"orderId\": \"order-1042\",\n  \"metadata\": {\n    \"campaign\": \"autumn\"\n  }\n}\n\nDas Beispiel verwendet die unterstützte Zuweisung des Kartenkanals: die gesamte Mehrwertsteuer an den Kunden und die volle Bearbeitungsgebühr an den Händler. Das Speichern anderer Prozentsätze macht sie nicht ausführbar.\n\nErstellen Sie eine Rechnung über die API\n\nBedingungen bleiben bei der Rechnung\n\nDie Rechnung friert den Betrag, die Währung, die Methoden und beide Anteile ein. Das Ändern von Shop-Einstellungen ändert keine ausgestellten Links. Schieberegler berechnen die Zuweisung; die Live-Ausführung hängt von den Fähigkeiten des verbundenen Kanals ab.\n\nFür eine neue Live-Karten- oder Alipay-Zahlung unterstützt das aktuelle Gateway nur feeCustomerPercent=0 und vatCustomerPercent=100: der Händler übernimmt die gesamte Bearbeitungsgebühr und die MwSt wird dem Kunden vollständig hinzugefügt. Andere Anteile können auf einer Rechnung gespeichert und berechnet werden, aber die Ausführung ist mit unsupported_allocation blockiert. Der Server ändert gespeicherte Bedingungen niemals stillschweigend. SBP- und USDT-Kryptozahlungen unterstützen jeden Bearbeitungsgebührenanteil und haben keine MwSt.",
      "readMinutes": 6
    },
    {
      "id": "widgets",
      "title": "Binden Sie Checkout in Ihre Website ein",
      "summary": "Öffnen Sie den Checkout in einem Modal, betten Sie ihn in eine Seite ein oder senden Sie den Kunden auf eine dedizierte Zahlungsseite. Das Widget verwendet eine öffentliche Checkout-URL und benötigt niemals einen Händler-API-Schlüssel im Browser.",
      "tags": [
        "Widget",
        "iframe",
        "Einbetten",
        "HTML",
        "Integration",
        "Modal",
        "Checkout"
      ],
      "sections": [
        {
          "id": "flow",
          "title": "Von Rechnung zu Checkout",
          "paragraphs": [
            "Erstellen Sie eine Rechnung in /account#links und erhalten Sie sofort checkoutUrl. Öffnen Sie /account#widget, fügen Sie den Link ein und wählen Sie ein Modal, einen Inline-Block oder eine Weiterleitung. Schlüssel und Webhooks sind in den angrenzenden Kontobereichen verfügbar.",
            "Die Builder-Vorschau verwendet immer eine Demo-Bestellung ohne Belastung. Der generierte Widget-Code behält Ihren Live-Link, dessen Bedingungen aus der gespeicherten Server-Rechnung stammen.",
            "Für eine neue Rechnung in der Oberfläche bietet USD Karten und Alipay an; RUB bietet SBP an; USDT bietet Krypto an. Die API kann auch USD + Krypto für die Kompatibilität speichern, aber ihre Live-Kryptozahlung ist mit crypto_requires_usdt blockiert. USD und USDT sind unterschiedlich, ohne automatische Umrechnung oder angenommenen 1:1-Kurs. Eine Kryptozahlung erfordert eine separate USDT-Rechnung."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": [
            {
              "label": "Integrations-Builder",
              "href": "/account#widget"
            },
            {
              "label": "Zahlungslinks-API",
              "href": "/docs/payment-links-api"
            }
          ]
        },
        {
          "id": "markup",
          "title": "Ein Button mit normalem Link-Fallback",
          "paragraphs": [
            "Dieses Beispiel öffnet eine Demo ohne Geld zu belasten. Ersetzen Sie beide URL-Werte durch checkoutUrl aus Ihrer Rechnungsantwort. Laden Sie das Skript von derselben Kevmi-Quelle wie die Checkout-URL.",
            "Das href öffnet den Checkout, wenn JavaScript nicht verfügbar ist. data-kevmi-label gibt dem iframe einen zugänglichen Namen. Fügen Sie das Skript einmal pro Seite ein."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": {
            "language": "HTML",
            "code": "<script src=\"https://kevmi.maxeevmax1.chatgpt.site/widgets/kevmi.js\" defer></script>\n<a href=\"https://kevmi.maxeevmax1.chatgpt.site/en/pay/demo\"\n   data-kevmi-checkout=\"https://kevmi.maxeevmax1.chatgpt.site/en/pay/demo\"\n   data-kevmi-mode=\"modal\"\n   data-kevmi-label=\"Order checkout\">Pay securely</a>"
          },
          "note": "",
          "links": []
        },
        {
          "id": "modes",
          "title": "Drei Möglichkeiten, den Checkout zu öffnen",
          "paragraphs": [
            "Verwenden Sie einen Container wie div für den Inline-Modus und ersetzen Sie CHECKOUT_URL_FROM_API durch eine echte URL. Der Rahmen passt sich der Containerbreite an; Checkout-Nachrichten können seine Höhe innerhalb eines begrenzten Bereichs anpassen.",
            "Das Modal schließt mit seinem Button, Escape oder einem Klick auf den Hintergrund. Der Fokus kehrt nach dem Schließen zum ursprünglichen Auslöser zurück. Reduzierte-Bewegung-Einstellungen verkürzen den Übergang."
          ],
          "bullets": [],
          "steps": [],
          "table": {
            "headers": [
              "data-kevmi-mode",
              "Verhalten",
              "Nützlich für"
            ],
            "rows": [
              [
                "Modal",
                "Ein Overlay-Dialog; der Standardmodus",
                "Ein Zahlungsbutton auf Bestellebene"
              ],
              [
                "inline",
                "Ein iframe im ausgewählten Container",
                "Ein Checkout-Schritt auf Ihrer Website"
              ],
              [
                "redirect",
                "Navigation zu Kevmi im aktuellen Tab",
                "Eine vollständige Zahlungsseite"
              ]
            ]
          },
          "code": {
            "language": "HTML",
            "code": "<div data-kevmi-checkout=\"CHECKOUT_URL_FROM_API\"\n     data-kevmi-mode=\"inline\"\n     data-kevmi-label=\"Order checkout\"></div>"
          },
          "note": "",
          "links": []
        },
        {
          "id": "javascript",
          "title": "Öffnen Sie den Checkout über Ihre Oberfläche",
          "paragraphs": [
            "Die Dokumentereignisse kevmi:opened und kevmi:closed ermöglichen es Ihrer Oberfläche, auf das Öffnen und Schließen zu reagieren. Ein kevmi:error-Ereignis am Auslöser meldet eine ungültige Checkout-URL. Nichts beweist eine Zahlung. Rufen Sie die JavaScript-API auf, nachdem das Widget-Skript geladen wurde."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": {
            "language": "JavaScript",
            "code": "window.Kevmi.open(checkoutUrl, {\n  mode: 'modal',\n  label: 'Order checkout',\n  closeLabel: 'Close checkout'\n});\n\n// Inline blocks added after page load are detected automatically.\n// You may also request mounting explicitly:\nwindow.Kevmi.mount(document);"
          },
          "note": "",
          "links": []
        },
        {
          "id": "security",
          "title": "Was eine erfolgreiche Zahlung beweist",
          "paragraphs": [
            "Platzieren Sie keine API-Schlüssel oder Signiergeheimnisse in HTML. Das Widget erhält nur einen öffentlichen Link zu einer Rechnung. Der Checkout verschlüsselt Kartendaten und Bankcodes mit dem Gateway-Schlüssel; der Kevmi-Server akzeptiert sie nicht im Klartext.",
            "postMessage aktualisiert den Oberflächenzustand, nicht die Auftragserfüllung. Überprüfen Sie den Nachrichtenursprung und das Quellfenster vor der Verarbeitung. Verwenden Sie ein verifiziertes payment.succeeded-Ereignis oder einen Status 'succeeded' in der GET link.payment-Zusammenfassung des Servers für das Endergebnis."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "Das Öffnen des Checkouts, das Schließen eines Widgets oder die Rückkehr zur Händler-Website beweist nicht, dass Geld empfangen wurde.",
          "links": [
            {
              "label": "Webhook-Signaturen und Zustellung",
              "href": "/docs/webhooks"
            }
          ]
        },
        {
          "id": "deployment",
          "title": "Vor dem Hinzufügen des Widgets zur Produktion",
          "paragraphs": [],
          "bullets": [
            "Erlauben Sie die Kevmi-Quelle in Ihren Content-Security-Policy-Direktiven script-src und frame-src, ohne unzusammenhängende Richtlinien zu erweitern.",
            "Prüfen Sie schmale Bildschirme, Tastaturzugriff sowie helle und dunkle Designs.",
            "Bestätigen Sie, dass die Rechnung aktiv, nicht abgelaufen ist und den korrekten Preis und die Kostenanteile aufweist.",
            "Behalten Sie einen gewöhnlichen Zahlungslink als Fallback.",
            "Testen Sie fehlgeschlagene Zustellungen und doppelte Webhook-Ereignisse, ohne einen Auftrag zweimal zu erstellen."
          ],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        }
      ],
      "group": "developers",
      "url": "/docs/widgets",
      "body": "Von Rechnung zu Checkout\n\nErstellen Sie eine Rechnung in /account#links und erhalten Sie sofort checkoutUrl. Öffnen Sie /account#widget, fügen Sie den Link ein und wählen Sie ein Modal, einen Inline-Block oder eine Weiterleitung. Schlüssel und Webhooks sind in den angrenzenden Kontobereichen verfügbar.\n\nDie Builder-Vorschau verwendet immer eine Demo-Bestellung ohne Belastung. Der generierte Widget-Code behält Ihren Live-Link, dessen Bedingungen aus der gespeicherten Server-Rechnung stammen.\n\nFür eine neue Rechnung in der Oberfläche bietet USD Karten und Alipay an; RUB bietet SBP an; USDT bietet Krypto an. Die API kann auch USD + Krypto für die Kompatibilität speichern, aber ihre Live-Kryptozahlung ist mit crypto_requires_usdt blockiert. USD und USDT sind unterschiedlich, ohne automatische Umrechnung oder angenommenen 1:1-Kurs. Eine Kryptozahlung erfordert eine separate USDT-Rechnung.\n\nIntegrations-Builder\n\nZahlungslinks-API\n\nEin Button mit normalem Link-Fallback\n\nDieses Beispiel öffnet eine Demo ohne Geld zu belasten. Ersetzen Sie beide URL-Werte durch checkoutUrl aus Ihrer Rechnungsantwort. Laden Sie das Skript von derselben Kevmi-Quelle wie die Checkout-URL.\n\nDas href öffnet den Checkout, wenn JavaScript nicht verfügbar ist. data-kevmi-label gibt dem iframe einen zugänglichen Namen. Fügen Sie das Skript einmal pro Seite ein.\n\n<script src=\"https://kevmi.maxeevmax1.chatgpt.site/widgets/kevmi.js\" defer></script>\n<a href=\"https://kevmi.maxeevmax1.chatgpt.site/en/pay/demo\"\n   data-kevmi-checkout=\"https://kevmi.maxeevmax1.chatgpt.site/en/pay/demo\"\n   data-kevmi-mode=\"modal\"\n   data-kevmi-label=\"Order checkout\">Pay securely</a>\n\nDrei Möglichkeiten, den Checkout zu öffnen\n\nVerwenden Sie einen Container wie div für den Inline-Modus und ersetzen Sie CHECKOUT_URL_FROM_API durch eine echte URL. Der Rahmen passt sich der Containerbreite an; Checkout-Nachrichten können seine Höhe innerhalb eines begrenzten Bereichs anpassen.\n\nDas Modal schließt mit seinem Button, Escape oder einem Klick auf den Hintergrund. Der Fokus kehrt nach dem Schließen zum ursprünglichen Auslöser zurück. Reduzierte-Bewegung-Einstellungen verkürzen den Übergang.\n\ndata-kevmi-mode · Verhalten · Nützlich für\nModal · Ein Overlay-Dialog; der Standardmodus · Ein Zahlungsbutton auf Bestellebene\ninline · Ein iframe im ausgewählten Container · Ein Checkout-Schritt auf Ihrer Website\nredirect · Navigation zu Kevmi im aktuellen Tab · Eine vollständige Zahlungsseite\n\n<div data-kevmi-checkout=\"CHECKOUT_URL_FROM_API\"\n     data-kevmi-mode=\"inline\"\n     data-kevmi-label=\"Order checkout\"></div>\n\nÖffnen Sie den Checkout über Ihre Oberfläche\n\nDie Dokumentereignisse kevmi:opened und kevmi:closed ermöglichen es Ihrer Oberfläche, auf das Öffnen und Schließen zu reagieren. Ein kevmi:error-Ereignis am Auslöser meldet eine ungültige Checkout-URL. Nichts beweist eine Zahlung. Rufen Sie die JavaScript-API auf, nachdem das Widget-Skript geladen wurde.\n\nwindow.Kevmi.open(checkoutUrl, {\n  mode: 'modal',\n  label: 'Order checkout',\n  closeLabel: 'Close checkout'\n});\n\n// Inline blocks added after page load are detected automatically.\n// You may also request mounting explicitly:\nwindow.Kevmi.mount(document);\n\nWas eine erfolgreiche Zahlung beweist\n\nPlatzieren Sie keine API-Schlüssel oder Signiergeheimnisse in HTML. Das Widget erhält nur einen öffentlichen Link zu einer Rechnung. Der Checkout verschlüsselt Kartendaten und Bankcodes mit dem Gateway-Schlüssel; der Kevmi-Server akzeptiert sie nicht im Klartext.\n\npostMessage aktualisiert den Oberflächenzustand, nicht die Auftragserfüllung. Überprüfen Sie den Nachrichtenursprung und das Quellfenster vor der Verarbeitung. Verwenden Sie ein verifiziertes payment.succeeded-Ereignis oder einen Status 'succeeded' in der GET link.payment-Zusammenfassung des Servers für das Endergebnis.\n\nDas Öffnen des Checkouts, das Schließen eines Widgets oder die Rückkehr zur Händler-Website beweist nicht, dass Geld empfangen wurde.\n\nWebhook-Signaturen und Zustellung\n\nVor dem Hinzufügen des Widgets zur Produktion\n\nErlauben Sie die Kevmi-Quelle in Ihren Content-Security-Policy-Direktiven script-src und frame-src, ohne unzusammenhängende Richtlinien zu erweitern.\n\nPrüfen Sie schmale Bildschirme, Tastaturzugriff sowie helle und dunkle Designs.\n\nBestätigen Sie, dass die Rechnung aktiv, nicht abgelaufen ist und den korrekten Preis und die Kostenanteile aufweist.\n\nBehalten Sie einen gewöhnlichen Zahlungslink als Fallback.\n\nTesten Sie fehlgeschlagene Zustellungen und doppelte Webhook-Ereignisse, ohne einen Auftrag zweimal zu erstellen.",
      "readMinutes": 4
    },
    {
      "id": "applications",
      "title": "Bewerben Sie sich, um Ihren Shop zu verbinden",
      "summary": "Reichen Sie Ihre Website ein, nachdem Sie sich mit Telegram angemeldet haben, und verfolgen Sie jede Prüfphase unter einer privaten URL. Automatisierte Prüfungen unterstützen den Prüfer; ein Moderator trifft immer die endgültige Entscheidung.",
      "tags": [
        "Anwendung",
        "Onboarding",
        "Moderation",
        "Website-Prüfung",
        "Status",
        "Telegram",
        "AI"
      ],
      "sections": [
        {
          "id": "submit",
          "title": "Eine Anwendung einreichen",
          "paragraphs": [
            "Beschreibungen erfordern 40–3000 Zeichen; Projektnamen erlauben bis zu 100. Die Website muss ohne Anmeldung zugänglich sein. URLs mit Anmeldeinformationen, privaten Hosts, nicht standardmäßigen Ports oder Query-Parametern werden nicht akzeptiert.",
            "Das verifizierte Konto besitzt die Anwendung. Der eingegebene Telegram-Kontakt dient der Kommunikation und ändert nicht das Eigentum. Das Weiterleiten der Tracking-URL gewährt keinem anderen Konto Zugriff."
          ],
          "bullets": [],
          "steps": [
            "Melden Sie sich mit Telegram an oder registrieren Sie sich, und öffnen Sie dann /account#applications.",
            "Geben Sie eine öffentliche HTTPS-Website-Adresse, einen Projektnamen, eine Kategorie und eine Beschreibung Ihrer Produkte oder Dienstleistungen ein.",
            "Fügen Sie einen Telegram-Kontakt hinzu. Erklären Sie, was Kunden erhalten und wie Bestellungen erfüllt werden.",
            "Bestätigen Sie Ihre Befugnis, die Website einzureichen, und senden Sie das Formular.",
            "Behalten Sie die Adresse /account#applications/{id}, die unmittelbar nach dem Einreichen geöffnet wird."
          ],
          "table": null,
          "code": null,
          "note": "",
          "links": [
            {
              "label": "Ihre Website einreichen",
              "href": "/account#applications"
            }
          ]
        },
        {
          "id": "stages",
          "title": "Vier Prüfphasen",
          "paragraphs": [
            "Die Verbindungslinie und Phasenmarkierungen spiegeln dauerhafte Serverzustände wider. Das erneute Öffnen der Seite setzt denselben Prozess fort. Das Schließen des Tabs bricht Ihre Anwendung nicht ab; Hintergrundjobs arbeiten weiter und stellen unterbrochene Phasen wieder her."
          ],
          "bullets": [],
          "steps": [],
          "table": {
            "headers": [
              "Phase",
              "Was passiert",
              "Angezeigter Status"
            ],
            "rows": [
              [
                "Anwendung erhalten",
                "Einreichungsdetails und die private URL sind gespeichert",
                "Die erste Phase ist abgeschlossen"
              ],
              [
                "Inhaltsprüfung",
                "KI vergleicht die Beschreibung mit öffentlichen Website-Inhalten",
                "Läuft, abgeschlossen oder wartet auf einen Spezialisten"
              ],
              [
                "Technische Prüfungen",
                "Verfügbarkeit und eine begrenzte Menge an Links werden untersucht",
                "Ein separates Ergebnis und Zeitstempel der Phase"
              ],
              [
                "Spezialistenprüfung",
                "Ein Moderator prüft die Einreichung und die Ergebnisse",
                "Wartet auf Entscheidung, Freigabe oder einen Ablehnungsgrund"
              ]
            ]
          },
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "attention",
          "title": "Eine gelbe Phase benötigt einen Spezialisten",
          "paragraphs": [
            "Eine gelbe Markierung bedeutet, dass eine Phase Aufmerksamkeit benötigt, zum Beispiel weil Informationen unzureichend sind, ein Link nicht verfügbar ist oder ein automatisiertes Ergebnis nicht sicher akzeptiert werden kann. Es ist keine endgültige Ablehnung. Die Statusseite erklärt den nächsten Schritt.",
            "Ein Moderator kann die aktuelle Phase zurücksetzen, damit die nächste Prüfung fortgesetzt wird. Eine abgelehnte Phase zeigt ein Kreuz und einen für Nutzer sichtbaren Grund, den der Moderator vor dem Senden bearbeiten kann. Das Zurücksetzen einer Zwischenphase entfernt niemals die abschließende manuelle Prüfung."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "scope",
          "title": "Was automatisierte Prüfungen abdecken",
          "paragraphs": [
            "Prüfungen untersuchen die öffentliche Startseite: HTTPS, HTTP-Antwort, Titel, Text und verdächtige Linkmuster. Sie fordern außerdem Header für höchstens drei Links auf derselben Website an. Anzahl der Weiterleitungen, Antwortgröße und Anfragezeit sind begrenzt.",
            "Die Prüfungen greifen nicht auf angemeldete Bereiche zu, führen keine heruntergeladenen Dateien aus und ersetzen keine Sicherheitsüberprüfung oder keinen Malware-Scanner. Der Abschluss einer Phase garantiert nicht, dass jede Seite frei von schädlichen Inhalten ist.",
            "Website-Inhalte sind nicht vertrauenswürdige Daten. Anweisungen auf einer Website können keinen Administrator zuweisen, Kevmi-Bedingungen ändern oder eine Anwendung genehmigen. Nicht verfügbare KI und fehlerhaft formatierte Modellausgaben erfordern eine Spezialistenprüfung, anstatt die Phase stillschweigend zu bestehen."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "updates",
          "title": "Telegram-Updates",
          "paragraphs": [
            "Der Eingang einer Anwendung, der Abschluss einer Phase, die Anforderung von Spezialistenaufmerksamkeit und eine endgültige Entscheidung erzeugen Benachrichtigungen mit einem privaten Tracking-Link. Diese verwenden die Kategorie „Support“ in den Benachrichtigungseinstellungen des Kontos. Das Deaktivieren dieser Kategorie stoppt die Nachrichten.",
            "Das Anwendungsereignis und der Eintrag im Benachrichtigungsausgang werden gemeinsam festgeschrieben. Die Telegram-Zustellung verwendet eine Warteschlange mit Wiederholungsversuchen und erfordert einen verbundenen Bot. Die Tracking-Seite bleibt die Quelle des aktuellen Status, wenn Telegram nicht verfügbar ist oder der Bot blockiert wurde.",
            "Moderation erhält separate Warnmeldungen. Nur Benutzer auf der Moderator-Allowlist des Servers können eine Phase aus Telegram zurücksetzen; ein alter Button kann keine wiederholte Entscheidung anwenden. Ablehnungsgründe werden im Moderationsarbeitsbereich bearbeitet."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": [
            {
              "label": "Benachrichtigungseinstellungen",
              "href": "/docs/notifications"
            }
          ]
        },
        {
          "id": "api",
          "title": "Vertrag für Anwendung und Entscheidung",
          "paragraphs": [
            "Die Eigentümerschaft stammt aus der Sitzung. Bewerber können userId, Status, Rollen oder Prüfungsergebnisse nicht einreichen. Das Wiederholen der Erstellung mit derselben Idempotency-Key und demselben Textkörper gibt die vorhandene Anwendung zurück; das Ändern des Textkörpers mit diesem Schlüssel erzeugt einen Konflikt.",
            "Eine Moderatorentscheidung gilt nur für die erwartete Anwendungsversion. Gleichzeitige Entscheidungen speichern einmal; die andere Anfrage erhält 409. Ein Ablehnungsgrund ist Klartext mit 10–1500 Zeichen. Interne Prüfungsnachweise sind auf Moderatoren beschränkt."
          ],
          "bullets": [],
          "steps": [],
          "table": {
            "headers": [
              "Route",
              "Zugriff und Verhalten"
            ],
            "rows": [
              [
                "POST /api/applications",
                "Sitzung + CSRF + Idempotency-Key; 202 mit einer privaten URL"
              ],
              [
                "GET /api/applications",
                "Anwendungen des aktuellen Kontos"
              ],
              [
                "GET /api/applications/{id}",
                "Eigene Einreichung, Phasen und öffentlicher Verlauf"
              ],
              [
                "POST /api/applications/{id}/resume",
                "Sitzung + CSRF; setzt nur die Verarbeitung von Anwendungen fort"
              ],
              [
                "GET /api/moderation/applications",
                "Nur verifizierte Moderatoren"
              ],
              [
                "POST /api/moderation/applications/{id}/decision",
                "approve_step oder reject, expectedVersion und ein Ablehnungsgrund"
              ]
            ]
          },
          "code": null,
          "note": "",
          "links": []
        },
        {
          "id": "outcome",
          "title": "Nach der Entscheidung",
          "paragraphs": [
            "Eine neue Zahlung und Kartenabsicht erfordern, dass der neueste Website-Review-Antrag des Händlers genehmigt wurde. Die Genehmigung allein verbindet das Zahlungsgateway nicht. Wenn die Überprüfung nach dem Versand geändert wird, bleibt der bestehende Vorgang für Statusabfragen, Abgleich und einen angefragten Bankcode verfügbar.",
            "Bei Ablehnung sieht der Händler den Grund und kann die Materialien korrigieren, bevor er erneut Antrag stellt. Eine gelbe Phase bedeutet, dass ein Spezialist noch entscheiden muss; es ist keine automatische Freigabe."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": [
            {
              "label": "Support",
              "href": "/?support=open"
            },
            {
              "label": "Gateway-Verfügbarkeit",
              "href": "/docs/gateway"
            }
          ]
        },
        {
          "id": "stores-usd",
          "title": "Mehrere Geschäfte und ein USD-Basispreis",
          "paragraphs": [
            "Wählen Sie Alle Geschäfte für aggregierte Analysen und Betrieb, oder wählen Sie ein Geschäft für dessen eigene Aufzeichnungen. Jedes Geschäft hat eine separate storeId, einen Namen, einen MwSt-Standardwert, Rechnungen, API-Schlüssel, Webhook-Endpunkte, Ereignisverlauf und Website-Anwendung. Benachrichtigungen und Support-Tickets gehören zum Konto. Ein Konto kann bis zu 100 Geschäfte erstellen. Vorhandene Datensätze verbleiben im ersten Geschäft.",
            "Neue Workspace-Rechnungen verwenden pricingMode=\"universal\" und einen USD-Basispreis. Any umfasst Karte, Alipay, SBP und Krypto; ein Händler kann eine Teilmenge auswählen. Karten und Alipay berechnen USD. SBP berechnet RUB unter Verwendung des USD/RUB-Referenzkurses der Bank von Russland. Krypto berechnet USDT gemäß der expliziten Rechnungsregel 1 USD = 1 USDT. Dies ist eine Rechnungsumrechnungsregel, kein Markt-USDT-Kurs. Das Gateway liefert den Kurs der ausgewählten Münze, den genauen Überweisungsbetrag und Anweisungen vor der Überweisung.",
            "Der Referenzkurs und beide Beträge werden bei der Erstellung eingefroren. Rechnungen mit RUB-Umrechnung verfallen innerhalb von 24 Stunden. Wenn der Referenzkurs nicht abgerufen werden kann, schlägt die Erstellung mit FX_UNAVAILABLE fehl; es wird kein erfundener oder veralteter Ersatzkurs verwendet. Der Basisbetrag Minor und Angebote verwenden die USD-Buchungswährung. quotes[method].settlement enthält das native Belastungsangebot. Der öffentliche Checkout legt die ausgewählte Belastungswährung in currency, den ursprünglichen Preis in baseAmountMinor/baseCurrency und den Referenzkurs in fx offen. Sobald eine Zahlung ausgelöst wurde, kann ihre Methode nicht geändert werden; eine Rechnung hat einen Gateway-Vorgang.",
            "Erstellen Sie einen API-Schlüssel im vorgesehenen Geschäft und senden Sie Authorization: Bearer <key> von Ihrem Server. Seine Geschäftsbindung ist unveränderlich; X-Kevmi-Store kann ihm keinen Zugriff auf ein anderes Geschäft gewähren. Browser-Sitzungen wählen X-Kevmi-Store: <storeId>; wenn es weggelassen wird, wird das erste Geschäft ausgewählt. Der Wert all wird nur von GET /api/account/dashboard und GET /api/payment-links akzeptiert. Mutationen erfordern ein ausgewähltes Geschäft, Origin und X-CSRF-Token. Konto-IDs und Geschäfts-IDs sind unterschiedliche Kennungen.",
            "Aus Kompatibilitätsgründen behalten API-Anfragen ohne pricingMode=\"universal\" native Preise und die ursprünglichen Währungsbeschränkungen bei. Bestehende Rechnungen werden nie neu berechnet. Bestätigte Zahlungseingänge in Analysen spiegeln verifizierte Zahlungen abzüglich gespeicherter Rechnungsausgaben wider; sie sind kein abhebbarer Saldo. Legacy-Rechnungswährungen bleiben getrennt, und Auszahlungen werden mit dem Support vereinbart. Führen Sie eine Bestellung erst aus, nachdem Sie payment.fulfillmentReady=true und payment.status=\"succeeded\" über die Server-API, den Ereignisverlauf oder einen signierten Webhook geprüft haben."
          ],
          "bullets": [],
          "steps": [],
          "table": null,
          "code": null,
          "note": "",
          "links": []
        }
      ],
      "group": "start",
      "url": "/docs/applications",
      "body": "Eine Anwendung einreichen\n\nBeschreibungen erfordern 40–3000 Zeichen; Projektnamen erlauben bis zu 100. Die Website muss ohne Anmeldung zugänglich sein. URLs mit Anmeldeinformationen, privaten Hosts, nicht standardmäßigen Ports oder Query-Parametern werden nicht akzeptiert.\n\nDas verifizierte Konto besitzt die Anwendung. Der eingegebene Telegram-Kontakt dient der Kommunikation und ändert nicht das Eigentum. Das Weiterleiten der Tracking-URL gewährt keinem anderen Konto Zugriff.\n\nMelden Sie sich mit Telegram an oder registrieren Sie sich, und öffnen Sie dann /account#applications.\n\nGeben Sie eine öffentliche HTTPS-Website-Adresse, einen Projektnamen, eine Kategorie und eine Beschreibung Ihrer Produkte oder Dienstleistungen ein.\n\nFügen Sie einen Telegram-Kontakt hinzu. Erklären Sie, was Kunden erhalten und wie Bestellungen erfüllt werden.\n\nBestätigen Sie Ihre Befugnis, die Website einzureichen, und senden Sie das Formular.\n\nBehalten Sie die Adresse /account#applications/{id}, die unmittelbar nach dem Einreichen geöffnet wird.\n\nIhre Website einreichen\n\nVier Prüfphasen\n\nDie Verbindungslinie und Phasenmarkierungen spiegeln dauerhafte Serverzustände wider. Das erneute Öffnen der Seite setzt denselben Prozess fort. Das Schließen des Tabs bricht Ihre Anwendung nicht ab; Hintergrundjobs arbeiten weiter und stellen unterbrochene Phasen wieder her.\n\nPhase · Was passiert · Angezeigter Status\nAnwendung erhalten · Einreichungsdetails und die private URL sind gespeichert · Die erste Phase ist abgeschlossen\nInhaltsprüfung · KI vergleicht die Beschreibung mit öffentlichen Website-Inhalten · Läuft, abgeschlossen oder wartet auf einen Spezialisten\nTechnische Prüfungen · Verfügbarkeit und eine begrenzte Menge an Links werden untersucht · Ein separates Ergebnis und Zeitstempel der Phase\nSpezialistenprüfung · Ein Moderator prüft die Einreichung und die Ergebnisse · Wartet auf Entscheidung, Freigabe oder einen Ablehnungsgrund\n\nEine gelbe Phase benötigt einen Spezialisten\n\nEine gelbe Markierung bedeutet, dass eine Phase Aufmerksamkeit benötigt, zum Beispiel weil Informationen unzureichend sind, ein Link nicht verfügbar ist oder ein automatisiertes Ergebnis nicht sicher akzeptiert werden kann. Es ist keine endgültige Ablehnung. Die Statusseite erklärt den nächsten Schritt.\n\nEin Moderator kann die aktuelle Phase zurücksetzen, damit die nächste Prüfung fortgesetzt wird. Eine abgelehnte Phase zeigt ein Kreuz und einen für Nutzer sichtbaren Grund, den der Moderator vor dem Senden bearbeiten kann. Das Zurücksetzen einer Zwischenphase entfernt niemals die abschließende manuelle Prüfung.\n\nWas automatisierte Prüfungen abdecken\n\nPrüfungen untersuchen die öffentliche Startseite: HTTPS, HTTP-Antwort, Titel, Text und verdächtige Linkmuster. Sie fordern außerdem Header für höchstens drei Links auf derselben Website an. Anzahl der Weiterleitungen, Antwortgröße und Anfragezeit sind begrenzt.\n\nDie Prüfungen greifen nicht auf angemeldete Bereiche zu, führen keine heruntergeladenen Dateien aus und ersetzen keine Sicherheitsüberprüfung oder keinen Malware-Scanner. Der Abschluss einer Phase garantiert nicht, dass jede Seite frei von schädlichen Inhalten ist.\n\nWebsite-Inhalte sind nicht vertrauenswürdige Daten. Anweisungen auf einer Website können keinen Administrator zuweisen, Kevmi-Bedingungen ändern oder eine Anwendung genehmigen. Nicht verfügbare KI und fehlerhaft formatierte Modellausgaben erfordern eine Spezialistenprüfung, anstatt die Phase stillschweigend zu bestehen.\n\nTelegram-Updates\n\nDer Eingang einer Anwendung, der Abschluss einer Phase, die Anforderung von Spezialistenaufmerksamkeit und eine endgültige Entscheidung erzeugen Benachrichtigungen mit einem privaten Tracking-Link. Diese verwenden die Kategorie „Support“ in den Benachrichtigungseinstellungen des Kontos. Das Deaktivieren dieser Kategorie stoppt die Nachrichten.\n\nDas Anwendungsereignis und der Eintrag im Benachrichtigungsausgang werden gemeinsam festgeschrieben. Die Telegram-Zustellung verwendet eine Warteschlange mit Wiederholungsversuchen und erfordert einen verbundenen Bot. Die Tracking-Seite bleibt die Quelle des aktuellen Status, wenn Telegram nicht verfügbar ist oder der Bot blockiert wurde.\n\nModeration erhält separate Warnmeldungen. Nur Benutzer auf der Moderator-Allowlist des Servers können eine Phase aus Telegram zurücksetzen; ein alter Button kann keine wiederholte Entscheidung anwenden. Ablehnungsgründe werden im Moderationsarbeitsbereich bearbeitet.\n\nBenachrichtigungseinstellungen\n\nVertrag für Anwendung und Entscheidung\n\nDie Eigentümerschaft stammt aus der Sitzung. Bewerber können userId, Status, Rollen oder Prüfungsergebnisse nicht einreichen. Das Wiederholen der Erstellung mit derselben Idempotency-Key und demselben Textkörper gibt die vorhandene Anwendung zurück; das Ändern des Textkörpers mit diesem Schlüssel erzeugt einen Konflikt.\n\nEine Moderatorentscheidung gilt nur für die erwartete Anwendungsversion. Gleichzeitige Entscheidungen speichern einmal; die andere Anfrage erhält 409. Ein Ablehnungsgrund ist Klartext mit 10–1500 Zeichen. Interne Prüfungsnachweise sind auf Moderatoren beschränkt.\n\nRoute · Zugriff und Verhalten\nPOST /api/applications · Sitzung + CSRF + Idempotency-Key; 202 mit einer privaten URL\nGET /api/applications · Anwendungen des aktuellen Kontos\nGET /api/applications/{id} · Eigene Einreichung, Phasen und öffentlicher Verlauf\nPOST /api/applications/{id}/resume · Sitzung + CSRF; setzt nur die Verarbeitung von Anwendungen fort\nGET /api/moderation/applications · Nur verifizierte Moderatoren\nPOST /api/moderation/applications/{id}/decision · approve_step oder reject, expectedVersion und ein Ablehnungsgrund\n\nNach der Entscheidung\n\nEine neue Zahlung und Kartenabsicht erfordern, dass der neueste Website-Review-Antrag des Händlers genehmigt wurde. Die Genehmigung allein verbindet das Zahlungsgateway nicht. Wenn die Überprüfung nach dem Versand geändert wird, bleibt der bestehende Vorgang für Statusabfragen, Abgleich und einen angefragten Bankcode verfügbar.\n\nBei Ablehnung sieht der Händler den Grund und kann die Materialien korrigieren, bevor er erneut Antrag stellt. Eine gelbe Phase bedeutet, dass ein Spezialist noch entscheiden muss; es ist keine automatische Freigabe.\n\nSupport\n\nGateway-Verfügbarkeit\n\nMehrere Geschäfte und ein USD-Basispreis\n\nWählen Sie Alle Geschäfte für aggregierte Analysen und Betrieb, oder wählen Sie ein Geschäft für dessen eigene Aufzeichnungen. Jedes Geschäft hat eine separate storeId, einen Namen, einen MwSt-Standardwert, Rechnungen, API-Schlüssel, Webhook-Endpunkte, Ereignisverlauf und Website-Anwendung. Benachrichtigungen und Support-Tickets gehören zum Konto. Ein Konto kann bis zu 100 Geschäfte erstellen. Vorhandene Datensätze verbleiben im ersten Geschäft.\n\nNeue Workspace-Rechnungen verwenden pricingMode=\"universal\" und einen USD-Basispreis. Any umfasst Karte, Alipay, SBP und Krypto; ein Händler kann eine Teilmenge auswählen. Karten und Alipay berechnen USD. SBP berechnet RUB unter Verwendung des USD/RUB-Referenzkurses der Bank von Russland. Krypto berechnet USDT gemäß der expliziten Rechnungsregel 1 USD = 1 USDT. Dies ist eine Rechnungsumrechnungsregel, kein Markt-USDT-Kurs. Das Gateway liefert den Kurs der ausgewählten Münze, den genauen Überweisungsbetrag und Anweisungen vor der Überweisung.\n\nDer Referenzkurs und beide Beträge werden bei der Erstellung eingefroren. Rechnungen mit RUB-Umrechnung verfallen innerhalb von 24 Stunden. Wenn der Referenzkurs nicht abgerufen werden kann, schlägt die Erstellung mit FX_UNAVAILABLE fehl; es wird kein erfundener oder veralteter Ersatzkurs verwendet. Der Basisbetrag Minor und Angebote verwenden die USD-Buchungswährung. quotes[method].settlement enthält das native Belastungsangebot. Der öffentliche Checkout legt die ausgewählte Belastungswährung in currency, den ursprünglichen Preis in baseAmountMinor/baseCurrency und den Referenzkurs in fx offen. Sobald eine Zahlung ausgelöst wurde, kann ihre Methode nicht geändert werden; eine Rechnung hat einen Gateway-Vorgang.\n\nErstellen Sie einen API-Schlüssel im vorgesehenen Geschäft und senden Sie Authorization: Bearer <key> von Ihrem Server. Seine Geschäftsbindung ist unveränderlich; X-Kevmi-Store kann ihm keinen Zugriff auf ein anderes Geschäft gewähren. Browser-Sitzungen wählen X-Kevmi-Store: <storeId>; wenn es weggelassen wird, wird das erste Geschäft ausgewählt. Der Wert all wird nur von GET /api/account/dashboard und GET /api/payment-links akzeptiert. Mutationen erfordern ein ausgewähltes Geschäft, Origin und X-CSRF-Token. Konto-IDs und Geschäfts-IDs sind unterschiedliche Kennungen.\n\nAus Kompatibilitätsgründen behalten API-Anfragen ohne pricingMode=\"universal\" native Preise und die ursprünglichen Währungsbeschränkungen bei. Bestehende Rechnungen werden nie neu berechnet. Bestätigte Zahlungseingänge in Analysen spiegeln verifizierte Zahlungen abzüglich gespeicherter Rechnungsausgaben wider; sie sind kein abhebbarer Saldo. Legacy-Rechnungswährungen bleiben getrennt, und Auszahlungen werden mit dem Support vereinbart. Führen Sie eine Bestellung erst aus, nachdem Sie payment.fulfillmentReady=true und payment.status=\"succeeded\" über die Server-API, den Ereignisverlauf oder einen signierten Webhook geprüft haben.",
      "readMinutes": 6
    }
  ],
  "facts": {
    "paymentType": "one_time",
    "subscriptionsSupported": false,
    "incomingFees": {
      "card": {
        "percent": 10,
        "fixedUsdMinor": 50,
        "vatApplies": true
      },
      "alipay": {
        "percent": 10,
        "fixedUsdMinor": 50,
        "vatApplies": true
      },
      "sbp": {
        "percent": 8,
        "fixedUsdMinor": 0,
        "vatApplies": false
      },
      "crypto": {
        "percent": 4,
        "fixedUsdMinor": 0,
        "vatApplies": false
      }
    },
    "vat": {
      "ratePercent": 16,
      "base": "order_base_amount",
      "defaultPayer": "customer",
      "payerOptions": [
        "customer",
        "merchant",
        "shared"
      ],
      "customerPercentRange": [
        0,
        100
      ],
      "customerPercentStep": 1,
      "feeBase": "order_base_amount",
      "source": "owner_confirmed",
      "example": {
        "baseUsdMinor": 500,
        "feeUsdMinor": 100,
        "vatUsdMinor": 80,
        "customerPayer": {
          "chargedUsdMinor": 580,
          "merchantNetUsdMinor": 400
        },
        "merchantPayer": {
          "chargedUsdMinor": 500,
          "merchantNetUsdMinor": 320
        }
      }
    },
    "payout": {
      "asset": "USDT",
      "network": "TRC20",
      "sourceFees": {
        "card": "4%",
        "alipay": "4%",
        "sbp": "5% + RUB 400",
        "crypto": "0% + $3"
      },
      "creationImplemented": false,
      "gatewayBalanceIsMerchantLedger": false,
      "fixedCryptoFeeCurrency": "USD"
    },
    "costSharing": {
      "pricingVersion": 2,
      "independent": [
        "vatCustomerPercent",
        "feeCustomerPercent"
      ],
      "range": [
        0,
        100
      ],
      "step": 1,
      "defaultVatCustomerPercent": 100,
      "defaultFeeCustomerPercent": 0,
      "customerSharesAddedToCharge": true,
      "merchantSharesDeductedFromBase": true,
      "rounding": "half_up_customer_share_then_exact_merchant_remainder",
      "invoiceTermsImmutable": true,
      "liveGatewayAllocation": {
        "card": {
          "vatCustomerPercent": 100,
          "feeCustomerPercent": 0
        },
        "alipay": {
          "vatCustomerPercent": 100,
          "feeCustomerPercent": 0
        },
        "sbp": {
          "feeCustomerPercent": [
            0,
            100
          ],
          "vatApplies": false
        },
        "crypto": {
          "feeCustomerPercent": [
            0,
            100
          ],
          "vatApplies": false
        },
        "otherSavedCardSplitsExecutable": false
      },
      "example": {
        "baseUsdMinor": 500,
        "vatCustomerPercent": 50,
        "feeCustomerPercent": 23,
        "customerVatMinor": 40,
        "customerFeeMinor": 23,
        "customerTotalMinor": 563,
        "merchantNetMinor": 383
      }
    },
    "paymentLinks": {
      "methodSelection": "customer_from_invoice_methods",
      "interfaceAnyMode": "all_methods_for_invoice_currency",
      "allowedMethodsByCurrency": {
        "USD": [
          "card",
          "alipay"
        ],
        "RUB": [
          "sbp"
        ],
        "USDT": [
          "crypto"
        ]
      },
      "apiCreateField": "methods",
      "legacyUsdCryptoApiSaveAccepted": true,
      "legacyUsdCryptoExecutable": false,
      "cryptoRequiresExplicitUsdt": true,
      "ownerGetPaymentField": "payment",
      "ownerGetPaymentNullable": true,
      "createAndPatchPaymentSummaryOptional": true,
      "apiAnyValueSupported": false,
      "quotesPerMethod": true,
      "automaticCurrencyConversion": false
    },
    "merchantAPI": {
      "basePath": "/api/v1",
      "createInvoicePath": "/api/v1/payments",
      "createsCharge": false,
      "returnsCheckoutUrl": true,
      "scopes": [
        "invoices:read",
        "invoices:write",
        "events:read"
      ],
      "defaultKeyLifetimeDays": 90,
      "maximumActiveKeys": 10,
      "keysStoredAsHashes": true
    },
    "widgets": {
      "script": "/widgets/kevmi.js",
      "modes": [
        "modal",
        "inline",
        "redirect"
      ],
      "publicCheckoutUrlOnly": true,
      "browserMessagesConfirmPayment": false
    },
    "webhooks": {
      "events": [
        "invoice.created",
        "invoice.updated",
        "payment.succeeded",
        "payment.failed",
        "payment.refunded",
        "payment.partially_refunded",
        "payment.disputed",
        "payment.review_required"
      ],
      "signatureHeader": "Kevmi-Signature",
      "signatureAlgorithm": "HMAC-SHA256",
      "signatureInput": "timestamp.rawBody",
      "timestampToleranceSeconds": 300,
      "delivery": "at_least_once",
      "maximumAttempts": 6,
      "retryDelaySeconds": [
        60,
        300,
        1800,
        7200,
        43200
      ],
      "endpointVerificationRequired": true,
      "paymentSource": "validated_gateway_receipt",
      "financialStatusFromBrowser": false
    },
    "applications": {
      "path": "/account#applications",
      "trackingPath": "/account#applications/{id}",
      "authentication": "telegram_session",
      "visibility": "owner_and_moderators",
      "stages": [
        "received",
        "ai_review",
        "technical_review",
        "manual_review"
      ],
      "manualFinalDecisionRequired": true,
      "businessTypes": [
        "digital_goods",
        "software",
        "services",
        "physical_goods",
        "education",
        "other"
      ],
      "submissionLimitPerDay": 5,
      "resumeLimitPerMinute": 30,
      "moderationLimitPerMinute": 30,
      "aiReviewsPerHour": 30,
      "unknownAutomatedResults": "needs_review",
      "checks": "bounded_public_content_and_same_origin_links",
      "safetyGuarantee": false,
      "notificationCategory": "support",
      "approvalActivatesGateway": false,
      "latestApprovalRequiredForNewPayment": true,
      "invoiceCreationBeforeApproval": true,
      "existingOperationReadableAfterApprovalChange": true
    },
    "countries": {
      "card": {
        "countryCount": 223,
        "ownerReportedCountryCount": null,
        "coverageLabel": "190+",
        "restrictions": [
          {
            "code": "AF",
            "name": "Afghanistan",
            "nameEn": "Afghanistan"
          },
          {
            "code": "AQ",
            "name": "Antarctica",
            "nameEn": "Antarctica"
          },
          {
            "code": "BY",
            "name": "Belarus",
            "nameEn": "Belarus"
          },
          {
            "code": "MM",
            "name": "Burma (Myanmar)",
            "nameEn": "Burma (Myanmar)"
          },
          {
            "code": "BI",
            "name": "Burundi",
            "nameEn": "Burundi"
          },
          {
            "code": "CF",
            "name": "Central African Republic",
            "nameEn": "Central African Republic"
          },
          {
            "code": "TD",
            "name": "Chad",
            "nameEn": "Chad"
          },
          {
            "code": "CU",
            "name": "Cuba",
            "nameEn": "Cuba"
          },
          {
            "code": "CD",
            "name": "Democratic Republic of Congo",
            "nameEn": "Democratic Republic of Congo"
          },
          {
            "code": "CG",
            "name": "Republic of Congo",
            "nameEn": "Republic of Congo"
          },
          {
            "code": "ER",
            "name": "Eritrea",
            "nameEn": "Eritrea"
          },
          {
            "code": "HT",
            "name": "Haiti",
            "nameEn": "Haiti"
          },
          {
            "code": "IR",
            "name": "Iran",
            "nameEn": "Iran"
          },
          {
            "code": "IQ",
            "name": "Iraq",
            "nameEn": "Iraq"
          },
          {
            "code": "LY",
            "name": "Libya",
            "nameEn": "Libya"
          },
          {
            "code": "ML",
            "name": "Mali",
            "nameEn": "Mali"
          },
          {
            "code": "NI",
            "name": "Nicaragua",
            "nameEn": "Nicaragua"
          },
          {
            "code": "KP",
            "name": "North Korea",
            "nameEn": "North Korea"
          },
          {
            "code": "RU",
            "name": "Russia",
            "nameEn": "Russia"
          },
          {
            "code": "SO",
            "name": "Somalia",
            "nameEn": "Somalia"
          },
          {
            "code": "SS",
            "name": "South Sudan",
            "nameEn": "South Sudan"
          },
          {
            "code": "SD",
            "name": "Sudan",
            "nameEn": "Sudan"
          },
          {
            "code": "SY",
            "name": "Syria",
            "nameEn": "Syria"
          },
          {
            "code": "VE",
            "name": "Venezuela",
            "nameEn": "Venezuela"
          },
          {
            "code": "YE",
            "name": "Yemen",
            "nameEn": "Yemen"
          },
          {
            "code": "ZW",
            "name": "Zimbabwe",
            "nameEn": "Zimbabwe"
          },
          {
            "code": "UA-43",
            "countryCode": "UA",
            "name": "Crimea (Region of Ukraine)",
            "nameEn": "Crimea (Region of Ukraine)"
          },
          {
            "code": "UA-14",
            "countryCode": "UA",
            "name": "Donetsk (Region of Ukraine)",
            "nameEn": "Donetsk (Region of Ukraine)"
          },
          {
            "code": "UA-65",
            "countryCode": "UA",
            "name": "Kherson (Region of Ukraine)",
            "nameEn": "Kherson (Region of Ukraine)"
          },
          {
            "code": "UA-09",
            "countryCode": "UA",
            "name": "Luhansk (Region of Ukraine)",
            "nameEn": "Luhansk (Region of Ukraine)"
          },
          {
            "code": "UA-23",
            "countryCode": "UA",
            "name": "Zaporizhzhia (Region of Ukraine)",
            "nameEn": "Zaporizhzhia (Region of Ukraine)"
          },
          {
            "code": "AN",
            "name": "Netherlands Antilles",
            "nameEn": "Netherlands Antilles"
          }
        ],
        "verifiedCountryCount": null,
        "exactList": [
          "AX",
          "AL",
          "DZ",
          "AS",
          "AD",
          "AO",
          "AI",
          "AG",
          "AR",
          "AM",
          "AW",
          "AU",
          "AT",
          "AZ",
          "BS",
          "BH",
          "BD",
          "BB",
          "BE",
          "BZ",
          "BJ",
          "BM",
          "BT",
          "BO",
          "BQ",
          "BA",
          "BW",
          "BV",
          "BR",
          "IO",
          "BN",
          "BG",
          "BF",
          "CV",
          "KH",
          "CM",
          "CA",
          "KY",
          "CL",
          "CN",
          "CX",
          "CC",
          "CO",
          "KM",
          "CK",
          "CR",
          "HR",
          "CW",
          "CY",
          "CZ",
          "CI",
          "DK",
          "DJ",
          "DM",
          "DO",
          "EC",
          "EG",
          "SV",
          "GQ",
          "EE",
          "SZ",
          "ET",
          "FK",
          "FO",
          "FM",
          "FJ",
          "FI",
          "FR",
          "GF",
          "PF",
          "TF",
          "GA",
          "GM",
          "GE",
          "DE",
          "GH",
          "GI",
          "GR",
          "GL",
          "GD",
          "GP",
          "GU",
          "GT",
          "GG",
          "GN",
          "GW",
          "GY",
          "HM",
          "VA",
          "HN",
          "HK",
          "HU",
          "IS",
          "IN",
          "ID",
          "IE",
          "IM",
          "IL",
          "IT",
          "JM",
          "JP",
          "JE",
          "JO",
          "KZ",
          "KE",
          "KI",
          "KW",
          "KG",
          "LA",
          "LV",
          "LB",
          "LS",
          "LR",
          "LI",
          "LT",
          "LU",
          "MO",
          "MG",
          "MW",
          "MY",
          "MV",
          "MT",
          "MH",
          "MQ",
          "MR",
          "MU",
          "YT",
          "MX",
          "MD",
          "MC",
          "MN",
          "ME",
          "MS",
          "MA",
          "MZ",
          "NA",
          "NR",
          "NP",
          "NL",
          "NC",
          "NZ",
          "NE",
          "NG",
          "NU",
          "NF",
          "MK",
          "MP",
          "NO",
          "OM",
          "PK",
          "PW",
          "PA",
          "PG",
          "PY",
          "PE",
          "PH",
          "PN",
          "PL",
          "PT",
          "PR",
          "QA",
          "RO",
          "RW",
          "RE",
          "BL",
          "SH",
          "KN",
          "LC",
          "MF",
          "PM",
          "VC",
          "WS",
          "SM",
          "ST",
          "SA",
          "SN",
          "RS",
          "SC",
          "SL",
          "SG",
          "SX",
          "SK",
          "SI",
          "SB",
          "ZA",
          "GS",
          "KR",
          "ES",
          "LK",
          "PS",
          "SR",
          "SJ",
          "SE",
          "CH",
          "TW",
          "TJ",
          "TZ",
          "TH",
          "TL",
          "TG",
          "TK",
          "TO",
          "TT",
          "TN",
          "TM",
          "TC",
          "TV",
          "TR",
          "UG",
          "UA",
          "AE",
          "GB",
          "UM",
          "US",
          "UY",
          "UZ",
          "VU",
          "VN",
          "VG",
          "VI",
          "WF",
          "EH",
          "ZM"
        ],
        "records": [
          {
            "code": "AX",
            "name": "Ålandinseln",
            "nameEn": "Åland Islands",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "AL",
            "name": "Albanien",
            "nameEn": "Albania",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "DZ",
            "name": "Algerien",
            "nameEn": "Algeria",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "AS",
            "name": "Amerikanisch-Samoa",
            "nameEn": "American Samoa",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "AD",
            "name": "Andorra",
            "nameEn": "Andorra",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "AO",
            "name": "Angola",
            "nameEn": "Angola",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "AI",
            "name": "Anguilla",
            "nameEn": "Anguilla",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "AG",
            "name": "Antigua und Barbuda",
            "nameEn": "Antigua & Barbuda",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "AR",
            "name": "Argentinien",
            "nameEn": "Argentina",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "AM",
            "name": "Armenien",
            "nameEn": "Armenia",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "AW",
            "name": "Aruba",
            "nameEn": "Aruba",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "AU",
            "name": "Australien",
            "nameEn": "Australia",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "AT",
            "name": "Österreich",
            "nameEn": "Austria",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "AZ",
            "name": "Aserbaidschan",
            "nameEn": "Azerbaijan",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "BS",
            "name": "Bahamas",
            "nameEn": "Bahamas",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "BH",
            "name": "Bahrain",
            "nameEn": "Bahrain",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "BD",
            "name": "Bangladesch",
            "nameEn": "Bangladesh",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "BB",
            "name": "Barbados",
            "nameEn": "Barbados",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "BE",
            "name": "Belgien",
            "nameEn": "Belgium",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "BZ",
            "name": "Belize",
            "nameEn": "Belize",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "BJ",
            "name": "Benin",
            "nameEn": "Benin",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "BM",
            "name": "Bermuda",
            "nameEn": "Bermuda",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "BT",
            "name": "Bhutan",
            "nameEn": "Bhutan",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "BO",
            "name": "Bolivien",
            "nameEn": "Bolivia",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "BQ",
            "name": "Karibische Niederlande",
            "nameEn": "Caribbean Netherlands",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "BA",
            "name": "Bosnien und Herzegowina",
            "nameEn": "Bosnia & Herzegovina",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "BW",
            "name": "Botsuana",
            "nameEn": "Botswana",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "BV",
            "name": "Bouvetinsel",
            "nameEn": "Bouvet Island",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "BR",
            "name": "Brasilien",
            "nameEn": "Brazil",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "IO",
            "name": "Britisches Territorium im Indischen Ozean",
            "nameEn": "British Indian Ocean Territory",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "BN",
            "name": "Brunei Darussalam",
            "nameEn": "Brunei",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "BG",
            "name": "Bulgarien",
            "nameEn": "Bulgaria",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "BF",
            "name": "Burkina Faso",
            "nameEn": "Burkina Faso",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "CV",
            "name": "Cabo Verde",
            "nameEn": "Cape Verde",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "KH",
            "name": "Kambodscha",
            "nameEn": "Cambodia",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "CM",
            "name": "Kamerun",
            "nameEn": "Cameroon",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "CA",
            "name": "Kanada",
            "nameEn": "Canada",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "KY",
            "name": "Kaimaninseln",
            "nameEn": "Cayman Islands",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "CL",
            "name": "Chile",
            "nameEn": "Chile",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "CN",
            "name": "China",
            "nameEn": "China",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "CX",
            "name": "Weihnachtsinsel",
            "nameEn": "Christmas Island",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "CC",
            "name": "Kokosinseln",
            "nameEn": "Cocos (Keeling) Islands",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "CO",
            "name": "Kolumbien",
            "nameEn": "Colombia",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "KM",
            "name": "Komoren",
            "nameEn": "Comoros",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "CK",
            "name": "Cookinseln",
            "nameEn": "Cook Islands",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "CR",
            "name": "Costa Rica",
            "nameEn": "Costa Rica",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "HR",
            "name": "Kroatien",
            "nameEn": "Croatia",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "CW",
            "name": "Curaçao",
            "nameEn": "Curaçao",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "CY",
            "name": "Zypern",
            "nameEn": "Cyprus",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "CZ",
            "name": "Tschechien",
            "nameEn": "Czechia",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "CI",
            "name": "Côte d’Ivoire",
            "nameEn": "Côte d’Ivoire",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "DK",
            "name": "Dänemark",
            "nameEn": "Denmark",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "DJ",
            "name": "Dschibuti",
            "nameEn": "Djibouti",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "DM",
            "name": "Dominica",
            "nameEn": "Dominica",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "DO",
            "name": "Dominikanische Republik",
            "nameEn": "Dominican Republic",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "EC",
            "name": "Ecuador",
            "nameEn": "Ecuador",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "EG",
            "name": "Ägypten",
            "nameEn": "Egypt",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "SV",
            "name": "El Salvador",
            "nameEn": "El Salvador",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "GQ",
            "name": "Äquatorialguinea",
            "nameEn": "Equatorial Guinea",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "EE",
            "name": "Estland",
            "nameEn": "Estonia",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "SZ",
            "name": "Eswatini",
            "nameEn": "Eswatini",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "ET",
            "name": "Äthiopien",
            "nameEn": "Ethiopia",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "FK",
            "name": "Falklandinseln",
            "nameEn": "Falkland Islands",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "FO",
            "name": "Färöer",
            "nameEn": "Faroe Islands",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "FM",
            "name": "Mikronesien",
            "nameEn": "Micronesia",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "FJ",
            "name": "Fidschi",
            "nameEn": "Fiji",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "FI",
            "name": "Finnland",
            "nameEn": "Finland",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "FR",
            "name": "Frankreich",
            "nameEn": "France",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "GF",
            "name": "Französisch-Guayana",
            "nameEn": "French Guiana",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "PF",
            "name": "Französisch-Polynesien",
            "nameEn": "French Polynesia",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "TF",
            "name": "Französische Süd- und Antarktisgebiete",
            "nameEn": "French Southern Territories",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "GA",
            "name": "Gabun",
            "nameEn": "Gabon",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "GM",
            "name": "Gambia",
            "nameEn": "Gambia",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "GE",
            "name": "Georgien",
            "nameEn": "Georgia",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "DE",
            "name": "Deutschland",
            "nameEn": "Germany",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "GH",
            "name": "Ghana",
            "nameEn": "Ghana",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "GI",
            "name": "Gibraltar",
            "nameEn": "Gibraltar",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "GR",
            "name": "Griechenland",
            "nameEn": "Greece",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "GL",
            "name": "Grönland",
            "nameEn": "Greenland",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "GD",
            "name": "Grenada",
            "nameEn": "Grenada",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "GP",
            "name": "Guadeloupe",
            "nameEn": "Guadeloupe",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "GU",
            "name": "Guam",
            "nameEn": "Guam",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "GT",
            "name": "Guatemala",
            "nameEn": "Guatemala",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "GG",
            "name": "Guernsey",
            "nameEn": "Guernsey",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "GN",
            "name": "Guinea",
            "nameEn": "Guinea",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "GW",
            "name": "Guinea-Bissau",
            "nameEn": "Guinea-Bissau",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "GY",
            "name": "Guyana",
            "nameEn": "Guyana",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "HM",
            "name": "Heard und McDonaldinseln",
            "nameEn": "Heard & McDonald Islands",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "VA",
            "name": "Vatikanstadt",
            "nameEn": "Vatican City",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "HN",
            "name": "Honduras",
            "nameEn": "Honduras",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "HK",
            "name": "Sonderverwaltungsregion Hongkong",
            "nameEn": "Hong Kong SAR China",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "HU",
            "name": "Ungarn",
            "nameEn": "Hungary",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "IS",
            "name": "Island",
            "nameEn": "Iceland",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "IN",
            "name": "Indien",
            "nameEn": "India",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "ID",
            "name": "Indonesien",
            "nameEn": "Indonesia",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "IE",
            "name": "Irland",
            "nameEn": "Ireland",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "IM",
            "name": "Isle of Man",
            "nameEn": "Isle of Man",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "IL",
            "name": "Israel",
            "nameEn": "Israel",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "IT",
            "name": "Italien",
            "nameEn": "Italy",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "JM",
            "name": "Jamaika",
            "nameEn": "Jamaica",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "JP",
            "name": "Japan",
            "nameEn": "Japan",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "JE",
            "name": "Jersey",
            "nameEn": "Jersey",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "JO",
            "name": "Jordanien",
            "nameEn": "Jordan",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "KZ",
            "name": "Kasachstan",
            "nameEn": "Kazakhstan",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "KE",
            "name": "Kenia",
            "nameEn": "Kenya",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "KI",
            "name": "Kiribati",
            "nameEn": "Kiribati",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "KW",
            "name": "Kuwait",
            "nameEn": "Kuwait",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "KG",
            "name": "Kirgisistan",
            "nameEn": "Kyrgyzstan",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "LA",
            "name": "Laos",
            "nameEn": "Laos",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "LV",
            "name": "Lettland",
            "nameEn": "Latvia",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "LB",
            "name": "Libanon",
            "nameEn": "Lebanon",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "LS",
            "name": "Lesotho",
            "nameEn": "Lesotho",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "LR",
            "name": "Liberia",
            "nameEn": "Liberia",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "LI",
            "name": "Liechtenstein",
            "nameEn": "Liechtenstein",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "LT",
            "name": "Litauen",
            "nameEn": "Lithuania",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "LU",
            "name": "Luxemburg",
            "nameEn": "Luxembourg",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "MO",
            "name": "Sonderverwaltungsregion Macau",
            "nameEn": "Macao SAR China",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "MG",
            "name": "Madagaskar",
            "nameEn": "Madagascar",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "MW",
            "name": "Malawi",
            "nameEn": "Malawi",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "MY",
            "name": "Malaysia",
            "nameEn": "Malaysia",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "MV",
            "name": "Malediven",
            "nameEn": "Maldives",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "MT",
            "name": "Malta",
            "nameEn": "Malta",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "MH",
            "name": "Marshallinseln",
            "nameEn": "Marshall Islands",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "MQ",
            "name": "Martinique",
            "nameEn": "Martinique",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "MR",
            "name": "Mauretanien",
            "nameEn": "Mauritania",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "MU",
            "name": "Mauritius",
            "nameEn": "Mauritius",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "YT",
            "name": "Mayotte",
            "nameEn": "Mayotte",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "MX",
            "name": "Mexiko",
            "nameEn": "Mexico",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "MD",
            "name": "Republik Moldau",
            "nameEn": "Moldova",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "MC",
            "name": "Monaco",
            "nameEn": "Monaco",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "MN",
            "name": "Mongolei",
            "nameEn": "Mongolia",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "ME",
            "name": "Montenegro",
            "nameEn": "Montenegro",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "MS",
            "name": "Montserrat",
            "nameEn": "Montserrat",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "MA",
            "name": "Marokko",
            "nameEn": "Morocco",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "MZ",
            "name": "Mosambik",
            "nameEn": "Mozambique",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "NA",
            "name": "Namibia",
            "nameEn": "Namibia",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "NR",
            "name": "Nauru",
            "nameEn": "Nauru",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "NP",
            "name": "Nepal",
            "nameEn": "Nepal",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "NL",
            "name": "Niederlande",
            "nameEn": "Netherlands",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "NC",
            "name": "Neukaledonien",
            "nameEn": "New Caledonia",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "NZ",
            "name": "Neuseeland",
            "nameEn": "New Zealand",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "NE",
            "name": "Niger",
            "nameEn": "Niger",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "NG",
            "name": "Nigeria",
            "nameEn": "Nigeria",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "NU",
            "name": "Niue",
            "nameEn": "Niue",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "NF",
            "name": "Norfolkinsel",
            "nameEn": "Norfolk Island",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "MK",
            "name": "Nordmazedonien",
            "nameEn": "North Macedonia",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "MP",
            "name": "Nördliche Marianen",
            "nameEn": "Northern Mariana Islands",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "NO",
            "name": "Norwegen",
            "nameEn": "Norway",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "OM",
            "name": "Oman",
            "nameEn": "Oman",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "PK",
            "name": "Pakistan",
            "nameEn": "Pakistan",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "PW",
            "name": "Palau",
            "nameEn": "Palau",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "PA",
            "name": "Panama",
            "nameEn": "Panama",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "PG",
            "name": "Papua-Neuguinea",
            "nameEn": "Papua New Guinea",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "PY",
            "name": "Paraguay",
            "nameEn": "Paraguay",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "PE",
            "name": "Peru",
            "nameEn": "Peru",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "PH",
            "name": "Philippinen",
            "nameEn": "Philippines",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "PN",
            "name": "Pitcairninseln",
            "nameEn": "Pitcairn Islands",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "PL",
            "name": "Polen",
            "nameEn": "Poland",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "PT",
            "name": "Portugal",
            "nameEn": "Portugal",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "PR",
            "name": "Puerto Rico",
            "nameEn": "Puerto Rico",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "QA",
            "name": "Katar",
            "nameEn": "Qatar",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "RO",
            "name": "Rumänien",
            "nameEn": "Romania",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "RW",
            "name": "Ruanda",
            "nameEn": "Rwanda",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "RE",
            "name": "Réunion",
            "nameEn": "Réunion",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "BL",
            "name": "St. Barthélemy",
            "nameEn": "St. Barthélemy",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "SH",
            "name": "St. Helena",
            "nameEn": "St. Helena",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "KN",
            "name": "St. Kitts und Nevis",
            "nameEn": "St. Kitts & Nevis",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "LC",
            "name": "St. Lucia",
            "nameEn": "St. Lucia",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "MF",
            "name": "St. Martin",
            "nameEn": "St. Martin",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "PM",
            "name": "St. Pierre und Miquelon",
            "nameEn": "St. Pierre & Miquelon",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "VC",
            "name": "St. Vincent und die Grenadinen",
            "nameEn": "St. Vincent & Grenadines",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "WS",
            "name": "Samoa",
            "nameEn": "Samoa",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "SM",
            "name": "San Marino",
            "nameEn": "San Marino",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "ST",
            "name": "São Tomé und Príncipe",
            "nameEn": "São Tomé & Príncipe",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "SA",
            "name": "Saudi-Arabien",
            "nameEn": "Saudi Arabia",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "SN",
            "name": "Senegal",
            "nameEn": "Senegal",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "RS",
            "name": "Serbien",
            "nameEn": "Serbia",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "SC",
            "name": "Seychellen",
            "nameEn": "Seychelles",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "SL",
            "name": "Sierra Leone",
            "nameEn": "Sierra Leone",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "SG",
            "name": "Singapur",
            "nameEn": "Singapore",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "SX",
            "name": "Sint Maarten",
            "nameEn": "Sint Maarten",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "SK",
            "name": "Slowakei",
            "nameEn": "Slovakia",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "SI",
            "name": "Slowenien",
            "nameEn": "Slovenia",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "SB",
            "name": "Salomonen",
            "nameEn": "Solomon Islands",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "ZA",
            "name": "Südafrika",
            "nameEn": "South Africa",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "GS",
            "name": "Südgeorgien und die Südlichen Sandwichinseln",
            "nameEn": "South Georgia & South Sandwich Islands",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "KR",
            "name": "Südkorea",
            "nameEn": "South Korea",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "ES",
            "name": "Spanien",
            "nameEn": "Spain",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "LK",
            "name": "Sri Lanka",
            "nameEn": "Sri Lanka",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "PS",
            "name": "Palästinensische Autonomiegebiete",
            "nameEn": "Palestinian Territories",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "SR",
            "name": "Suriname",
            "nameEn": "Suriname",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "SJ",
            "name": "Spitzbergen und Jan Mayen",
            "nameEn": "Svalbard & Jan Mayen",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "SE",
            "name": "Schweden",
            "nameEn": "Sweden",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "CH",
            "name": "Schweiz",
            "nameEn": "Switzerland",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "TW",
            "name": "Taiwan",
            "nameEn": "Taiwan",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "TJ",
            "name": "Tadschikistan",
            "nameEn": "Tajikistan",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "TZ",
            "name": "Tansania",
            "nameEn": "Tanzania",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "TH",
            "name": "Thailand",
            "nameEn": "Thailand",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "TL",
            "name": "Timor-Leste",
            "nameEn": "Timor-Leste",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "TG",
            "name": "Togo",
            "nameEn": "Togo",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "TK",
            "name": "Tokelau",
            "nameEn": "Tokelau",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "TO",
            "name": "Tonga",
            "nameEn": "Tonga",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "TT",
            "name": "Trinidad und Tobago",
            "nameEn": "Trinidad & Tobago",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "TN",
            "name": "Tunesien",
            "nameEn": "Tunisia",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "TM",
            "name": "Turkmenistan",
            "nameEn": "Turkmenistan",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "TC",
            "name": "Turks- und Caicosinseln",
            "nameEn": "Turks & Caicos Islands",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "TV",
            "name": "Tuvalu",
            "nameEn": "Tuvalu",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "TR",
            "name": "Türkei",
            "nameEn": "Türkiye",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "UG",
            "name": "Uganda",
            "nameEn": "Uganda",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "UA",
            "name": "Ukraine",
            "nameEn": "Ukraine",
            "marker": "**",
            "coverage": "partial_locations",
            "note": "Karten sind auf der Krim, in Donezk, Luhansk, Cherson und Saporischschja nicht verfügbar. Der Rest der Ukraine ist verfügbar."
          },
          {
            "code": "AE",
            "name": "Vereinigte Arabische Emirate",
            "nameEn": "United Arab Emirates",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "GB",
            "name": "Vereinigtes Königreich",
            "nameEn": "United Kingdom",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "UM",
            "name": "Amerikanische Überseeinseln",
            "nameEn": "U.S. Outlying Islands",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "US",
            "name": "Vereinigte Staaten",
            "nameEn": "United States",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "UY",
            "name": "Uruguay",
            "nameEn": "Uruguay",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "UZ",
            "name": "Usbekistan",
            "nameEn": "Uzbekistan",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "VU",
            "name": "Vanuatu",
            "nameEn": "Vanuatu",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "VN",
            "name": "Vietnam",
            "nameEn": "Vietnam",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "VG",
            "name": "Britische Jungferninseln",
            "nameEn": "British Virgin Islands",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "VI",
            "name": "Amerikanische Jungferninseln",
            "nameEn": "U.S. Virgin Islands",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "WF",
            "name": "Wallis und Futuna",
            "nameEn": "Wallis & Futuna",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "EH",
            "name": "Westsahara",
            "nameEn": "Western Sahara",
            "marker": "",
            "coverage": "listed",
            "note": ""
          },
          {
            "code": "ZM",
            "name": "Sambia",
            "nameEn": "Zambia",
            "marker": "",
            "coverage": "listed",
            "note": ""
          }
        ],
        "source": "owner_provided",
        "status": "owner_list_received",
        "policy": "worldwide_except_restrictions",
        "independentlyVerified": false,
        "partialCoverage": {
          "marker": "**",
          "countryCodes": [
            "UA"
          ],
          "note": "Karten sind auf der Krim, in Donezk, Luhansk, Cherson und Saporischschja nicht verfügbar. Der Rest der Ukraine ist verfügbar."
        },
        "unresolvedFootnotes": [],
        "approvalGuaranteed": false
      },
      "sbp": [
        "RU"
      ],
      "alipay": [
        "CN"
      ],
      "crypto": {
        "exactList": null,
        "status": "live_catalog_required",
        "invoiceCurrency": "USDT",
        "cataloguePath": "/api/checkout/{token}/crypto-services"
      }
    },
    "cryptoAcceptance": {
      "invoiceCurrency": "USDT",
      "coinCount": 16,
      "pairCount": 31,
      "pairs": [
        {
          "currency": "AVAX",
          "network": "avalanche",
          "networkLabel": "Avalanche C-Chain"
        },
        {
          "currency": "BCH",
          "network": "bch",
          "networkLabel": "Bitcoin Cash"
        },
        {
          "currency": "BNB",
          "network": "bsc",
          "networkLabel": "BNB Smart Chain"
        },
        {
          "currency": "BTC",
          "network": "btc",
          "networkLabel": "Bitcoin"
        },
        {
          "currency": "DAI",
          "network": "bsc",
          "networkLabel": "BNB Smart Chain"
        },
        {
          "currency": "DAI",
          "network": "eth",
          "networkLabel": "Ethereum"
        },
        {
          "currency": "DAI",
          "network": "polygon",
          "networkLabel": "Polygon PoS"
        },
        {
          "currency": "DASH",
          "network": "dash",
          "networkLabel": "Dash"
        },
        {
          "currency": "DOGE",
          "network": "doge",
          "networkLabel": "Dogecoin"
        },
        {
          "currency": "ETH",
          "network": "eth",
          "networkLabel": "Ethereum"
        },
        {
          "currency": "ETH",
          "network": "arbitrum",
          "networkLabel": "Arbitrum One"
        },
        {
          "currency": "ETH",
          "network": "bsc",
          "networkLabel": "BNB Smart Chain"
        },
        {
          "currency": "GRAM",
          "network": "ton",
          "networkLabel": "TON"
        },
        {
          "currency": "LTC",
          "network": "ltc",
          "networkLabel": "Litecoin"
        },
        {
          "currency": "POL",
          "network": "eth",
          "networkLabel": "Ethereum"
        },
        {
          "currency": "POL",
          "network": "polygon",
          "networkLabel": "Polygon PoS"
        },
        {
          "currency": "SHIB",
          "network": "eth",
          "networkLabel": "Ethereum"
        },
        {
          "currency": "TRX",
          "network": "tron",
          "networkLabel": "TRON"
        },
        {
          "currency": "USDC",
          "network": "arbitrum",
          "networkLabel": "Arbitrum One"
        },
        {
          "currency": "USDC",
          "network": "bsc",
          "networkLabel": "BNB Smart Chain"
        },
        {
          "currency": "USDC",
          "network": "polygon",
          "networkLabel": "Polygon PoS"
        },
        {
          "currency": "USDC",
          "network": "eth",
          "networkLabel": "Ethereum"
        },
        {
          "currency": "USDC",
          "network": "avalanche",
          "networkLabel": "Avalanche C-Chain"
        },
        {
          "currency": "USDT",
          "network": "tron",
          "networkLabel": "TRON"
        },
        {
          "currency": "USDT",
          "network": "avalanche",
          "networkLabel": "Avalanche C-Chain"
        },
        {
          "currency": "USDT",
          "network": "bsc",
          "networkLabel": "BNB Smart Chain"
        },
        {
          "currency": "USDT",
          "network": "ton",
          "networkLabel": "TON"
        },
        {
          "currency": "USDT",
          "network": "polygon",
          "networkLabel": "Polygon PoS"
        },
        {
          "currency": "USDT",
          "network": "arbitrum",
          "networkLabel": "Arbitrum One"
        },
        {
          "currency": "USDT",
          "network": "eth",
          "networkLabel": "Ethereum"
        },
        {
          "currency": "XMR",
          "network": "xmr",
          "networkLabel": "Monero"
        }
      ],
      "catalogueSource": "owner_provided",
      "liveAvailabilitySource": "/api/checkout/{token}/crypto-services",
      "referenceCatalogueConfirmsAvailability": false,
      "transferInstructionsSource": "created_gateway_operation",
      "invoiceFixesOtherCoinExchangeRate": false,
      "exactTransferAmountRequired": true,
      "merchantPayout": {
        "asset": "USDT",
        "network": "TRC20",
        "distinctFromAcceptanceNetworks": true,
        "creationImplemented": false
      }
    },
    "support": {
      "knowledgeScope": "all_published_articles_and_facts",
      "articleCount": 25,
      "historyMessagesPerRequest": 6,
      "historyStorage": "browser_local_storage",
      "historySync": "device_only",
      "separateConversations": true,
      "perConversationDrafts": true,
      "pageContext": "safe_section_label_only",
      "privateAccountAccess": false,
      "financialActions": false,
      "fallback": "documentation_search",
      "readinessEndpoint": "/api/config"
    },
    "notifications": {
      "pageSize": 30,
      "readStateStorage": "server",
      "readStateAffectsTelegramDelivery": false,
      "readEndpoint": "/api/notifications/read"
    },
    "gatewayIntegration": {
      "adapterImplemented": true,
      "contract": "v3",
      "liveConfigurationProvided": null,
      "requiredEnvironment": [
        "GATEWAY_API_KEY",
        "GATEWAY_WEBHOOK_SECRET"
      ],
      "connectionModes": {
        "externalHttps": {
          "originEnvironment": "GATEWAY_BASE_URL"
        },
        "selfHostedService": {
          "capability": "GATEWAY_SERVICE",
          "fixedDestination": true,
          "publicGatewayApi": false
        }
      },
      "availability": {
        "source": "runtime",
        "configurationEndpoint": "/api/config",
        "configurationField": "gateway.configured",
        "configurationIncludesHealthCheck": false,
        "checkoutEndpoint": "/api/checkout/{token}",
        "checkoutField": "invoice.availability",
        "checkoutCompatibilityAlias": "invoice.gatewayConnected",
        "checkoutIncludesProviderApproval": false
      },
      "cardTransport": "browser_JWE_to_gateway",
      "cardPlaintextAcceptedByKevmi": false,
      "hostedCardApi": false,
      "sealedAlgorithms": [
        "RSA-OAEP-256",
        "A256GCM"
      ],
      "ingress": {
        "path": "/api/gateway/webhook",
        "signatureHeader": "X-Gateway-Signature",
        "timestampHeader": "X-Gateway-Timestamp",
        "eventIdHeader": "X-Gateway-Event-Id",
        "signatureAlgorithm": "HMAC-SHA256",
        "signatureInput": "timestamp.rawBody",
        "timestampToleranceSeconds": 300,
        "authenticatedOperationReadRequired": true
      },
      "successRequires": [
        "fulfillment_ready",
        "provider_confirmed",
        "exact_paid_amount",
        "no_dispute",
        "crypto_settlement_evidence_if_crypto"
      ],
      "statusDoesNotCharge": true,
      "reconciliationDoesNotCharge": true,
      "oneDispatchedOperationPerInvoice": true,
      "ledgerNotImplemented": true
    },
    "merchantWorkspace": {
      "multipleStores": true,
      "storeLimit": 100,
      "storeEndpoint": "/api/stores",
      "storeHeader": "X-Kevmi-Store",
      "aggregateReadOnly": true,
      "pricingMode": "universal",
      "baseCurrency": "USD",
      "sbpChargeCurrency": "RUB",
      "cryptoChargeCurrency": "USDT",
      "usdUsdtInvoiceRatio": "1:1",
      "referenceRateSource": "https://www.cbr.ru/scripts/XML_daily.asp",
      "fxInvoiceMaxHours": 24,
      "path": "/account",
      "sections": [
        "overview",
        "payments",
        "payouts",
        "pricing",
        "stores",
        "links",
        "applications",
        "keys",
        "webhooks",
        "widget",
        "events",
        "knowledge",
        "store",
        "notifications",
        "support"
      ]
    },
    "gatewayConnected": null,
    "limitsConfirmed": false,
    "scope": "Public product documentation only. No user records or secrets."
  },
  "locale": "de",
  "docGroups": [
    {
      "id": "start",
      "title": "Erste Schritte",
      "description": "Vom ersten Besuch bis zum eingerichteten Shop.",
      "icon": "bolt"
    },
    {
      "id": "payments",
      "title": "Zahlungen und Bedingungen",
      "description": "Links, Beträge, MwSt., Zahlungsarten und Auszahlungen.",
      "icon": "card"
    },
    {
      "id": "account",
      "title": "Konto und Support",
      "description": "Telegram, Benachrichtigungen und Antworten auf deine Fragen.",
      "icon": "settings"
    },
    {
      "id": "developers",
      "title": "Entwickler",
      "description": "API, Sicherheit, Webhooks und Gateway-Anbindung.",
      "icon": "book"
    }
  ],
  "navPages": [
    {
      "href": "/",
      "title": "Übersicht",
      "icon": "grid"
    },
    {
      "href": "/payment-methods",
      "title": "Zahlungsarten",
      "icon": "card"
    },
    {
      "href": "/pricing",
      "title": "Gebühren",
      "icon": "percent"
    },
    {
      "href": "/payment-links",
      "title": "Zahlungslinks",
      "icon": "link"
    },
    {
      "href": "/countries",
      "title": "Abdeckung",
      "icon": "globe"
    },
    {
      "href": "/docs",
      "title": "Dokumentation",
      "icon": "book"
    },
    {
      "href": "/?support=open",
      "title": "Support",
      "icon": "chat"
    },
    {
      "href": "/integrations",
      "title": "Integrationen",
      "icon": "code"
    }
  ],
  "paymentMethods": [
    {
      "id": "card",
      "name": "Internationale Karten",
      "shortName": "Internationale Karten",
      "description": "Kartenzahlungen für internationale Kunden.",
      "incomingPercent": 10,
      "incomingFixedMinor": 50,
      "incomingFixedCurrency": "USD",
      "payoutPercent": 4,
      "payoutFixedMinor": 0,
      "payoutFixedCurrency": "USD",
      "vatApplies": true,
      "region": "Internationale Zahlungen",
      "symbol": "card",
      "geography": "Visa und Mastercard aus mehr als 190 Ländern, mit Ausnahme der Einschränkungsliste und fünf Regionen der Ukraine.",
      "countryCount": 223,
      "ownerReportedCountryCount": null,
      "coverageLabel": "190+"
    },
    {
      "id": "sbp",
      "name": "SBP",
      "shortName": "SBP",
      "description": "Bezahle über eine Bank mit dem russischen Schnellzahlungssystem.",
      "incomingPercent": 8,
      "incomingFixedMinor": 0,
      "incomingFixedCurrency": "RUB",
      "payoutPercent": 5,
      "payoutFixedMinor": 40000,
      "payoutFixedCurrency": "RUB",
      "vatApplies": false,
      "region": "Russland",
      "symbol": "sbp",
      "geography": "Russland. Die Verfügbarkeit hängt von Bank und Transaktion ab.",
      "countryCount": 1
    },
    {
      "id": "alipay",
      "name": "Alipay",
      "shortName": "Alipay",
      "description": "Alipay-Zahlungen für Kunden in China.",
      "incomingPercent": 10,
      "incomingFixedMinor": 50,
      "incomingFixedCurrency": "USD",
      "payoutPercent": 4,
      "payoutFixedMinor": 0,
      "payoutFixedCurrency": "USD",
      "vatApplies": true,
      "region": "China",
      "symbol": "alipay",
      "geography": "China. Die Verfügbarkeit hängt von Konto und Transaktion ab.",
      "countryCount": 1
    },
    {
      "id": "crypto",
      "name": "Kryptowährung",
      "shortName": "Krypto",
      "description": "Einmalige Kryptozahlungen mit 4 % Gebühr und ohne MwSt.",
      "incomingPercent": 4,
      "incomingFixedMinor": 0,
      "incomingFixedCurrency": "USD",
      "payoutPercent": 0,
      "payoutFixedMinor": 300,
      "payoutFixedCurrency": "USD",
      "vatApplies": false,
      "region": "Digitale Assets",
      "symbol": "crypto",
      "geography": "Alle Länder weltweit. Wählen Sie eine unterstützte Münze und ein Netzwerk aus. Auszahlungen erfolgen über USDT TRC20.",
      "countryCount": null
    }
  ],
  "payoutFees": {
    "card": "4%",
    "alipay": "4%",
    "sbp": "5% + RUB 400",
    "crypto": "0% + $3"
  },
  "documentationLocale": "de"
}
