PHP SDK
PHP 7.4+Binde Krypto-Zahlungen über Composer in deine PHP-App ein.
composer require whollycrypto/php-sdkLOS GEHT’S
Installieren, Zahlungen annehmen und deinen Server im Blick behalten.
Nutze einen frischen Linux-VPS mit root-Zugriff. Installiere nicht über bestehende Websites oder Datenbanken. Docker, Compiler und eigene Blockchain-Nodes brauchst du nicht.
| VPS | Minimum Wenig Betrieb | Empfohlen |
|---|---|---|
| CPU | 1 vCPU | 2 vCPU |
| RAM | 2 GB | 4 GB |
| SSD | 20 GB | 60 GB |
Das Minimum ist ein Startwert für wenig Betrieb mit schlanken Ubuntu-/Debian-Images, keine Leistungszusage. Die Größen enthalten Linux. Halte vor der Installation mindestens 3 GiB frei, dazu Platz für Updates, Verlauf und Backups.
Das native Installationsskript braucht x86-64, systemd 247+ und Python 3.9+. ARM64 und Alpine/OpenRC sind nicht dabei.
Wähle eine noch gepflegte Version. Höhere Vorgaben deiner Distribution gelten zuerst: openSUSE Leap 16 nennt zum Beispiel mehr als 40 GB Speicherplatz.
Mehr Last braucht gegebenenfalls mehr CPU/RAM; RPC-Limits bleiben. Setup ist automatisiert getestet, aber nicht für jede Distribution vollständig auf einem frischen VPS.
Leite diese Standardnamen auf deinen VPS oder wähle eigene:
merchant.example.com: Dashboardpay.example.com: Checkoutapi.example.com: APINutze während der Einrichtung DNS ohne Proxy. Gib TCP 80/443 in beiden Firewalls frei und lass SSH offen. Die Ports 5432/8080 für Datenbank und App bleiben privat.
bash <(curl -fsSL https://releases.whollycrypto.com/setup_wholly.sh)Setup prüft Downloads und richtet PostgreSQL, Nginx, HTTPS und Dienste ein. Lieber Container? Nutze die optionale Docker-Installation.
Bestimmte Version? Hänge auf einem frischen VPS --version 7.8.1 an. Ohne Angabe wird die neueste stabile Version installiert.
Beim Fortsetzen bleiben die gewählte Version und erledigte Schritte erhalten, auch beim GitHub-Fallback. Eine vorhandene Installation wird nie heruntergestuft.
Schau dir das Skript an. Mit --check am Ende prüfst du die Voraussetzungen ohne Installation. --help zeigt die Optionen.
Setze die Einrichtung fort. Schlüssel und Einstellungen bleiben erhalten:
bash <(curl -fsSL https://releases.whollycrypto.com/setup_wholly.sh) --resumeWeitere Basisdomains können dieselben Dienstnamen nutzen. Auch IPv6-Einträge müssen auf diesen VPS zeigen. Aktiviere den Cloudflare-Proxy erst nach der Domain-Prüfung.
QR-Codes fordern den vollen offenen Betrag an. Toleranz akzeptiert nur Fehlbeträge; Bestätigungen bleiben nötig.
Neue Beträge für erkannte Stablecoins werden aufgerundet: 1,321 USDC → 1,33 USDC, auch ohne Zahlungstoleranz. Minimum: 0,01 Token.
Bestehende Rechnungen, Guthaben und Restbeträge nach Teilzahlungen bleiben exakt. Andere oder eigene Token behalten ihre normale Genauigkeit.
Die Admin-Anmeldung registriert automatisch dein Guthabenkonto mit deiner E-Mail. Du bekommst einmalig 10 USD Startguthaben in deiner Abrechnungswährung. Kein Aktivierungscode nötig.
Erstelle eine Rechnung. Die Aktivierung versucht es bei Verbindungsproblemen automatisch erneut. Erneutes Verbinden gibt kein weiteres Startguthaben.
Probier den sicheren Checkout aus, ganz ohne Empfangsadresse oder echte Zahlung.
Dein Basic-Auth-Login steht in /root/whollycrypto/config/setup-credentials.txt. Er ist getrennt von E-Mail und Passwort deines Dashboard-Kontos.
Neue Projekte übernehmen Währung und Zeitzone aus den Systemeinstellungen; Stores nutzen die Projektwährung. Bestehende Konto-Zeitzonen änderst du separat unter Settings → Account.
whollycrypto welcome zeigt dir deine Dashboard-Adresse und hilfreiche Links erneut.
Bei einer frischen Installation ab 7.0.0 wählst du den Modus beim ersten Admin-Konto. Das lässt sich nicht rückgängig machen. Für einen Wechsel brauchst du eine neue Installation. Vor 7.0.0 erstellte Installationen bleiben im Merchant-Modus, auch ohne angelegten Admin.
Merchant: deine eigenen Projekte und Stores. Operator: getrennte Händlerkonten auf einer Installation hosten und eine eigene Prepaid-Gebühr berechnen. Dein eigenes Geschäft ist ohne interne Operator-Gebühr dabei.
Die Operator-Einrichtung fragt nach einer vierten Adresse, etwa operator.example.com, und einem eigenen Basic-Auth-Benutzernamen mit Passwort. Wähle deinen Namen, richte DNS zum VPS ein, prüfe DNS und aktiviere HTTPS. Das Panel öffnet direkt auf dieser Adresse. Merchant, Checkout und API bleiben getrennt.
Nutze den neuen Operator-Basic-Auth-Zugang und danach deine Admin-E-Mail mit Passwort. Der Merchant-Basic-Auth-Zugang bleibt gleich. Bei DNS- oder Zertifikatsfehlern kannst du die Einrichtung fortsetzen. Auch beim Update von 7.0.0 ist dieser Schritt nötig; bestehende Adressen bleiben erreichbar.
Bei 3% Operator-Gebühr kostet eine Rechnung über 100 EUR den Händler 3 EUR Guthaben. Bei anderer Guthabenwährung wird der Fiat-Kurs bei Rechnungserstellung gespeichert.
Du zahlst separat die normale Wholly-Crypto-Installationsgebühr. Kundenzahlungen werden nicht auf der Blockchain geteilt. Guthaben-Käufe zählen nicht erneut als Verkäufe.
Eine Aufladung wird erst nach automatisch verifizierter Zahlung gutgeschrieben. Checkout öffnen oder Rechnung manuell akzeptieren reicht nicht. Rücknahmen bleiben im Verlauf; kommt eine zurückgenommene Aufladung wieder, musst du sie prüfen.
Ohne Händlerguthaben pausieren IPN, Webhooks, Sweeps und neue Projekte/Stores. Bestehende Checkouts und Zahlungseingänge laufen weiter. Zu wenig Installationsguthaben kann die Automatisierung aller Händler pausieren. Ein deaktivierter Händler kann sich nicht anmelden und keine neuen Rechnungen erstellen; alte Zahlungen werden weiter geprüft.
Die Anwendung trennt Konten, nicht ein eigener VPS pro Händler. Händler sehen keine fremden Projekte, Wallets, API-Zugänge, Börsenkonten oder Guthaben. Der Server-Admin kann aber auf Hot-Wallet-Schlüssel zugreifen. Sag das vor der Anmeldung klar. Nutze vertrauenswürdiges Hosting, eigene Backups und genug Kapazität für die gemeinsame Last.
Im Operator-Modus ab 7.1.0 verfügbar.
Ab 7.2.0 findest du unter Wallets Guthaben, Adressen und Backups; unter Sweep manuelles Senden und automatische Regeln. Behalte ETH für Token-Gebühren. Merchant top-ups zeigt Händler-Aufladungen. Dein Guthaben oben bezahlt separat die Installationsgebühren. My business öffnet deinen eigenen Merchant-Bereich in einem neuen Tab.
Unter Finances siehst du verdiente Gebühren, bestätigte Installationskosten, die geschätzte Marge und aktuelle Händlerguthaben. Filtere nach Zeitraum, Händler oder Anzeigewährung und lade einen CSV-Bericht herunter.
Der Zeitraum richtet sich nach der ersten Bestätigung einer Rechnung. Spätere Gebührenrücknahmen sind enthalten. Prepaid-Guthaben ist kein Umsatz; Kosten deines eigenen Geschäfts stehen separat. Fehlen Kosten oder Kurse, bleibt die betroffene Marge offen. Umrechnungen nutzen aktuelle zwischengespeicherte Fiat-Kurse. Gas und Betriebskosten sind nicht enthalten.
Add merchant erstellt eine Einladung. Ab 7.3.0 kannst du kostenloses Startguthaben in der Händlerwährung festlegen, auch null. Dein eigenes Operator-Guthaben ändert sich dadurch nicht. Send invitation by email ist standardmäßig angehakt.
Richte zuerst deinen SMTP-Anbieter unter Settings → Invitation email mit TLS oder STARTTLS ein. Der Verbindungstest sendet keine E-Mail. Alternativ nimmst du den Haken raus und teilst den Link privat. Bei einem E-Mail-Fehler bleiben Konto und Guthaben erhalten; lege den Händler nicht nochmal an.
Einen neuen Link oder Passwort-Reset findest du unter Merchants → Manage → User accounts. Die SMTP-Annahme garantiert keine Zustellung. Teile den Merchant-Basic-Auth-Zugang separat, niemals deine Operator-Zugangsdaten.
Einladungen gelten 48 Stunden, Reset-Links eine Stunde. Jeder Link funktioniert einmal. Du kannst ihn dort ersetzen oder widerrufen. Ein neues Passwort meldet bestehende Sitzungen ab; 2FA bleibt aktiv. Der Merchant-Basic-Auth-Zugang wird weiterhin benötigt.
Automatisiere gehostete Händler mit SDK 2.6.0 und Wholly Crypto ab 7.4.0. Aktiviere Operator → Settings → Operator API und erstelle einen Schlüssel mit passenden Rechten.
Lege Konten direkt mit Passwort oder per Einladung an. Verwalte Nutzer, Projekte, Stores, Gebühren und lokale Guthaben; lies Berichte und empfange signierte Ereignisse. Die Zustimmung zur gehosteten Wallet beim ersten Login, 2FA und die Trennung der Händler bleiben erhalten.
Für jeden Schreibzugriff speicherst du einen Idempotenz-Schlüssel. Guthaben-Gutschriften laden nicht dein Installationsguthaben auf. Wallet-Schlüssel, Senden und Server-Konfiguration sind nicht über diese API verfügbar.
Nutze api.deine-domain.de/v1/operator. Operator-Schlüssel bleiben im Backend, nie im Browser oder beim Händler.
Operator-API und Rechte (Englisch) → · Offizielle SDKs & Beispiele →
Settings → Tokens lädt zuerst 250 Token, dann den übrigen Katalog.
Projekt → Wallets → Backup all exportiert TXT oder durchsuchbares Offline-HTML mit QR-Codes. Beide enthalten unverschlüsselte Schlüssel und Wiederherstellungswörter. Kopie außerhalb des VPS aufbewahren; niemals teilen oder hochladen.
Root kann auf Schlüssel zugreifen. Wallet-Guides erklären Rechnungsadressen, natives Gas und externe Monero-/Lightning-Backups.
Settings → Address book: Speichere Chain und Adresse. Native Coins und passende CoinGecko-Token erscheinen automatisch. Admins verwalten die Liste. Zahlungen bleiben unverändert.
Token-Abfragen: 22 Chains. Private Guthaben und Bitcoin-/CashTokens-/Kaspa-Token brauchen separate Zugänge oder Indexer. Fehler erscheinen statt erfundener Null-Guthaben.
Sammle Rechnungsguthaben in einem anderen Wallet: manuell senden oder automatisch sweepen. Token-Transfers brauchen auch den nativen Coin der Chain für Gebühren.
Verifizierte USDC/USDT nutzen ersatzweise frische Kurse aktivierter Kraken-/Binance-Anbieter. Price unavailable heißt: Der Kurs fehlt, nicht das Guthaben.
Chain/Dezimalstellen werden geprüft. Projektweite Preise ändern bestehende Angebote nicht. Ein Katalogtreffer allein aktiviert keine Zahlungsart.
DEX Screener braucht einen Pool zum exakten Contract, 10.000 USD Liquidität und einen Trade innerhalb einer Stunde. Kurse werden jede Minute erneuert; Fehler oder fünf Minuten alte Kurse blockieren neue Angebote.
DEX-Kurse können manipuliert sein; Prüfungen sind keine Audits. Nutze vertrauenswürdige Standard-Token: ERC-20 oder klassisches SPL. Token-2022/Erweiterungen sind nicht unterstützt. Ohne passenden Pool: Festpreis nutzen.
Settings → System → Regional defaults legt Währung/Zeitzone für neue Projekte und die Zeitzone neuer Konten fest. Bestehende Einstellungen und Guthaben bleiben unverändert. Die Dashboard-Währung kannst du weiterhin wählen.
Persönliche Zeitzone: Settings → Account → Edit user.
Payment methods → Choose for this invoice schränkt akzeptierte Chains/Token ein. All store payment methods behält die Store-Auswahl bei.
Teste jede Zahlungsart mit einem kleinen Betrag. Prüfe die Rechnung, bevor du eine Bestellung erfüllst: Die Rückleitung zum Shop ist kein Zahlungsnachweis.
Prüfe bei Integrationen die Signaturen von IPN/Webhooks und den Status über die Rechnungs-API. Verarbeite mehrfach zugestellte Ereignisse nur einmal.
API: filtere payment_methods mit chain_slug und asset_tickers. Inaktive Einträge werden ignoriert; ohne Treffer gelten Store-Standards. Nur eine Chain lädt alle aktiven Assets. Gleiche Kürzel brauchen Asset-IDs. Sicherheitschecks bleiben aktiv.
Scanner offline? Rechnungen behalten ihre Zahlungsarten, die Erkennung wartet. Chain connections zeigt passende Scanner-APIs; erreichbar heißt nicht scannerkompatibel. Standard: zwei unabhängige Anbieter.
Wallets und Kurse bleiben nötig. Monero-/Lightning-Dienste müssen Zahlungsanforderungen ausstellen können.
API/MCP-Fehler enthalten error.details.payment_methods. SDK 2.4.0 erklärt bekannte Fehler sicher: PHP getPaymentMethodIssues(), Python payment_method_issues, Node paymentMethodIssues. Fehlerreferenz →
Krypto-Beträge werden aufgerundet und enthalten den Kursaufschlag des Stores. Eine Rechnung in Fiat tauscht deine Krypto-Zahlung nicht automatisch in Bankguthaben um.
Bei null Bestätigungen gilt die Zahlung schon beim Erkennen als abgeschlossen – ohne den Schutz von Netzwerkbestätigungen. Native EVM-Zahlungen werden als direkte Überweisungen erkannt. Prüfe abweichende oder unklare Zahlungen unter Needs attention.
Prüfe in Chain connections passende APIs, vollständige Historie und unabhängige Anbieter. Raw-Nodes brauchen Zeit zum Aufholen. Alle Empfangs-APIs →
Zahlungen, Salden und Wartung teilen sich Anbieter-Budgets. Ohne neue Arbeit wird seltener geprüft. Ältere Rechnungen bleiben für verspätete Zahlungen und Reorgs überwacht, nach dem Aufholen bis zu stündlich. WSS-Hinweise ergänzen HTTP-Scans. Der Checkout muss nicht offen bleiben. Öffentliche Nodes haben trotzdem Limits. Wholly Crypto betreibt selbst keine Nodes.
Standardmäßig gesperrt. Mit Stores → Invoice → Allow zero-amount invoices erlaubst du Nullbeträge manuell und per API. Sie sind sofort abgeschlossen, ohne Zahlung, Empfangsadresse, Transaktion oder Verarbeitungsgebühr.
Store → Checkout: Themes, Farben, Logos, Favicon, Zahlungsarten, Links sowie Intro und Outro mit eigener Schriftgröße. Projekt- und Store-Namen kannst du getrennt ein- oder ausblenden. Neue Stores übernehmen das Design des Standard-Stores. Änderungen speichern automatisch.
Open hosted preview zeigt fünf Zahlungszustände, ohne echte Zahlung. Kein eigenes HTML/CSS/JavaScript. Der Browser merkt sich gültige Zahlungsarten, nie Adressen oder Beträge. Erkannte Zahlungen bleiben bei ihrer Zahlungsart.
IPN sendet jedes Rechnungsereignis an die Standard-URL deines Stores oder die ipn_url der Rechnung. Webhooks senden nur ausgewählte Ereignisse. Beide senden denselben JSON-Snapshot per POST.
Wann gibst du die Bestellung frei? Nutze bei ereignisbasierter Verarbeitung event_type = invoice.settled mit status = settled. Prüfe den aktuellen Rechnungsstand und deine Bestellung. Buche nur einmal. payment.received allein reicht nicht.
status zeigt den Rechnungsstand beim Erstellen der Nachricht. event_type sagt, was passiert ist.
payment.received + processing, später invoice.settled + settled.payment.received und invoice.settled beide settled.Beide Abläufe sind auch auf anderen Chains möglich. Zwei Ereignisse bedeuten nicht automatisch zwei Zahlungen. Sie können dieselbe sequence, aber verschiedene event_id haben. Die Zustellreihenfolge ist nicht garantiert. processing muss nicht vorher eintreffen.
| Rechnungsstatus | Bedeutung |
|---|---|
new | Wartet auf Zahlung |
processing | Teilzahlung oder wartet auf Bestätigungen |
settled | Nach Rechnungsregeln oder manuell akzeptiert |
expired | Frist vorbei; späte Zahlungen können noch erkannt werden |
invalid | Zahlung prüfen oder bereits abgelehnt |
cancelled | Storniert, nicht erstattet |
Ereignisse: invoice.created, payment.received, invoice.processing, invoice.settled, invoice.expired, invoice.invalid, invoice.cancelled. Alle Ereignisse und Sonderfälle →
amount_status: none, partial, paid, overpaid. paid berücksichtigt Toleranz, nicht Bestätigungen. timing_status: on_time oder late. resolution: automatic, manually_settled oder manually_invalidated. Bei requires_review = true gelten deine Regeln für Sonderfälle.
invoice_id entspricht der API-Antwort. amount, currency und order_id beschreiben deine Bestellung. payment_info ergänzt Transfers, genaue Kryptobeträge, festen Kurs/Aufschlag/Toleranz und unverbindliche Marktkurse. Kundendaten und Metadaten bleiben privat.
paid_chain, paid_asset, paid_payment_method_id, paid_asset_amount, paid_asset_amount_received und settlement_exchange_rate zeigen den Abschluss. Diese Werte bleiben gespeichert. Fehlende Nachweise/Daten bleiben null. Spätere Eingänge findest du in payment_info oder der Zahlungs-API.
Nutze Dezimalstrings. Addiere keine verschiedenen Assets; unbestätigt heißt nicht fehlend. Prüfhinweise erlauben keine automatische Freigabe oder Erstattung. Interne Gas-Aufladungen sind keine Kundenzahlungen und lösen kein payment.received aus.
Getrennte Signierschlüssel: Store → IPN gilt für IPNs, auch mit eigener ipn_url pro Rechnung. Jeder Endpunkt unter Store → Webhooks hat seinen eigenen Schlüssel, sichtbar beim Anlegen oder Erneuern.
Beide nutzen Wholly-Signature und dieselbe SDK-Prüfung. Nutze den passenden Signierschlüssel, keinen API-Schlüssel. Wenn du den IPN-Schlüssel erneuerst, bleiben die Webhook-Schlüssel unverändert.
Prüfe unveränderten Body, Zeitstempel und Projekt-/Store-Zuordnung. Speichere dauerhaft, dann antworte mit HTTP 2xx. Ein Worker prüft die aktuelle Rechnung über deine feste API-URL und bucht einmal in einer Datenbanktransaktion. Header sind unsigniert; nutze die signierte Identität im Version-2-Body.
Ereignisbasiert: Duplikate über signierte event_id erkennen, dann invoice.settled filtern. SDK-statusbasiert: Projekt + invoice_id + sequence zusammenfassen, dann den Status unabhängig vom Ereignistyp prüfen. Danach keinen Ereignisfilter ergänzen. Beide brauchen zusätzlich Schutz vor doppelten Bestellbuchungen.
Wiederholungen behalten Body und Ereignis-ID. Alte Revisionen dürfen neuere nicht überschreiben. IPN versucht bis zu acht Zustellungen; Webhook-Wiederholungen sind optional. Zu wenig Guthaben pausiert Nachrichten, nicht Zahlungen.
Store → IPN / Webhooks → History → Details zeigt Body und Ergebnis. Inhalte laufen nach 90 Tagen ab. Erneutes Senden beweist keinen Zahlungseingang.
Vollständiger Body, Ereignistabelle und Empfänger-Beispiele →
Sende unterstützte Assets an Kraken, Binance oder Coinbase. Behalte den Coin oder tausche gutgeschriebene Einzahlungen. Fiat bleibt auf der Börse.
Der Mindestbetrag gilt je Einzahlung, nicht je Sweep. Eine zu kleine Einzahlung stoppt den Plan. Sammle kleine Beträge zuerst in deinem eigenen Wallet; zusätzliche Netzwerkgebühren fallen an.
Märkte aktualisieren sich alle zwei Minuten. Nur zugeordnete, gutgeschriebene Einzahlungen können umgetauscht werden. Veraltete Kurse stoppen neue Orders. 1% bleibt als Gebührenreserve auf der Börse, getrennt vom Verarbeitungsguthaben.
Keep minimum amount behält einen Coin-/Token-Betrag im Projekt-Wallet. Der Sweep-Mindestbetrag ist ein eigener Auslöser. Null behält keine zusätzliche Reserve; manuelle Überweisungen bleiben unverändert. Netzwerkgebühren kommen aus dem Überschuss.
Setze unklare Überweisungen fort, statt sie zu ersetzen. Das Wallet bleibt bis zur Bestätigung oder zum Ablauf ungenutzter Angebote reserviert. Große Sweeps brauchen mehrere Durchläufe.
Börsenverwahrung, KYC, regionale Grenzen und Gebühren gelten. Keine Bankauszahlungen oder Hebel. Ohne Guthaben pausieren neue Umtausche; bestehende Orders werden weiter geprüft.
Du empfängst weiterhin Zahlungen, wenn dein Guthaben aufgebraucht ist. Rechnungen, Checkout und Zahlungsüberwachung bestehender Stores laufen weiter. Eine fehlende geprüfte Abrechnungsverbindung oder Kontosperre ist etwas anderes und kann neue Rechnungen blockieren.
| Geht weiterhin | Pausiert ohne nutzbares Guthaben |
|---|---|
| Rechnungen, Checkout und Bestätigungen | IPN/Webhooks samt Wiederholungen |
| Wallets, Guthaben und Backups | Sweep: Überweisungen, Gas, Rückzahlungen und neue Börsen-Umtausche |
| Auswertungen, Lese-API und bestehende Einstellungen | Neue Projekte und Stores |
| Update-Suche und Wiederherstellung abgebrochener Updates | Neue Versionen installieren |
Lade über das Guthaben-Symbol auf. Nach der geprüften Aufladung laufen aktivierte Automatiken weiter – auch Sweep-Regeln, die Geld senden. Schalte Regeln aus, die nicht fortgesetzt werden sollen.
Öffne Auto top-up nach Requests. Wähle ein gesichertes Empfangs-Wallet, Schwellenwert, Aufladebetrag, Tageslimit und maximale Netzwerkgebühr. Bestätige die Freigabe und speichere. Anfangs ist die Funktion aus.
Nutze BTC, ETH oder Ethereum-USDC/USDT, wenn angeboten. Token-Absender brauchen ETH; diese Regel füllt fehlendes Gas nicht auf. Operatoren nutzen eigene Empfangs-Wallets, gehostete Händler zahlen an ihren Operator.
Die freigegebene Aufladung kann trotz Guthaben-Pause für Sweep laufen. Nur der Empfänger bestätigt die Gutschrift. Es läuft jeweils eine automatische Aufladung. Ausschalten stoppt ungesendete Schritte, nicht bereits übermittelte Transaktionen.
Nutze Check payment in Auto top-up. Du kannst dieselbe noch gültige Zahlung fortsetzen oder eine nachweislich fehlgeschlagene Ethereum-Überweisung abschließen und die Regel pausieren. Unklare oder ausstehende Zahlungen bleiben gesperrt, damit du nicht doppelt sendest. Ein abgelaufenes Angebot beweist keinen Zahlungsfehler.
Neue Installationen starten mit der zugewiesenen Gebühr, normalerweise 1 %. Nach Aktivierung gibt es einmalig 10 USD Startguthaben oder den Gegenwert. Gebühren richten sich nach dem ursprünglichen Fiatwert der bezahlten Rechnung. Die Krypto-Zahlung deiner Kunden wird nicht aufgeteilt.
Gebühren fallen weiter an, auch bei negativem Saldo. Gleiche das Minus aus und lade genug für nutzbares Guthaben über dem erlaubten Spielraum auf. Bei funktionierender Verbindung siehst du Guthabenänderungen normalerweise nach 10–15 Sekunden.
Für Updates muss dein geprüftes Guthaben über null liegen, auch wenn Automatiken einen Spielraum haben. Eine Aufladung installiert Updates nie automatisch.
Pausierte Benachrichtigungen verbrauchen keine Versuche. Gespeicherte Zustellungen werden fortgesetzt, ihre normale Ablaufzeit bleibt bestehen. Gleiche fehlende Ereignisse über die Rechnungs-API ab.
Schaltet der Betreiber Gebühren ab, gelten keine neuen Verarbeitungsgebühren oder Guthaben-Einschränkungen. Alte Gebühren bleiben im Verlauf. Ohne Kopplung kannst du Projekte/Stores einrichten; Rechnungen brauchen geprüfte Abrechnung. Bereits erstellte Rechnungen werden weiter überwacht.
Umsatzdiagramme und Filter bleiben über den Tabs: Projects & stores, Invoices, Wallets und Sweeps. Durchsuche die Listen. Projects & stores bietet CSV-Exporte. Eigene Zeiträume umfassen bis zu 366 Tage. Wallets zeigen gespeicherte Guthaben.
Optionaler Projektzugriff unter api.example.com/mcp. Zahlungen lesen oder Rechnungen freigeben. MCP einrichten & Rechte wählen →
Mit unseren offiziellen SDKs erstellst du Rechnungen, prüfst Zahlungen und verifizierst IPN/Webhooks.
Binde Krypto-Zahlungen über Composer in deine PHP-App ein.
composer require whollycrypto/php-sdkVerbinde deine Python-App oder dein Backend ohne zusätzliche Laufzeit-Abhängigkeiten.
python -m pip install whollycryptoEin npm-Paket für JavaScript und TypeScript, mit eingebauten Typen.
npm install whollycryptoFüge den Branch main in Xcode hinzu. Swift-Einrichtung und App-Sicherheit →
https://github.com/whollycrypto-com/whollycrypto-swift-sdk.gitNutze die API-Domain deiner Installation und halte API-Schlüssel auf deinem Server. Alle SDKs sind MIT-lizenziert.
Öffne Projekt → Zahlungstools und wähle einen Store. Teile einen dauerhaften Zahlungslink, kassiere vor Ort oder plane Zahlungsanfragen per E-Mail.
Store-Design, Bestätigungen und Callbacks gelten weiter. Pausieren stoppt neue Anfragen, nicht bestehende Zahlungen. Der Verlauf verlinkt jede Rechnung. Verpasste Termine erzeugen keine E-Mail-Flut. Erneutes Senden nutzt dieselbe unbezahlte, noch gültige Rechnung.
Kunden-Checkout, Zahlungslinks und geplante E-Mails gibt es auf Englisch, Deutsch, Spanisch, brasilianischem Portugiesisch, Italienisch, Russisch, vereinfachtem Chinesisch, Französisch, Koreanisch und Japanisch.
Store → Rechnung → Checkout-Sprache legt den Standard fest. Du kannst ihn pro Rechnung oder Zahlungstool überschreiben. E-Mails und erneute Sendungen behalten die Rechnungssprache. Deine Texte bleiben unverändert; Merchant- und Operator-Konsole bleiben Englisch.
Aktiviere SMTP unter Einstellungen → System, unter den IP-Beschränkungen. Gib den öffentlichen Hostnamen deines Anbieters, Login, Absender und optional die Antwortadresse ein. Nutze TLS auf Port 465 oder STARTTLS auf 587.
Speichere, teste die Verbindung und sende dir eine Test-E-Mail. Richte SPF/DKIM bei deinem Anbieter ein. Eine SMTP-Annahme garantiert keine Zustellung im Posteingang.
Geplante Anfragen nutzen System-SMTP. Benachrichtigungskanäle können es ebenfalls wählen. Bestehende Kanal- und Operator-Einladungseinstellungen bleiben unverändert. Nur der Installationsadmin verwaltet die verschlüsselten Zugangsdaten. Fehlgeschlagene Sendungen musst du ausdrücklich erneut senden.
Die Glocke öffnet deine Benachrichtigungen. Die Farbschemata findest du im Einstellungsmenü.
Wiederholte Probleme werden zusammengefasst. Der Verlauf bleibt 30 Tage erhalten; Projektberechtigungen gelten weiterhin. Das Lesen löst kein Problem. Diese Meldungen ersetzen weder Store-IPN noch Webhooks.
Aktiviere Project → Marketplace, wähle Stores und lege Verkäufer mit unabhängig geprüften Adressen an. Erstelle eine Rechnung mit exakten Verkäuferanteilen. Gib Auszahlungen manuell frei oder nutze automatische Regeln mit Limits.
Nur Bitcoin Mainnet und unterstützte EVM-Coins/ERC-20. Kunden zahlen zuerst in Projekt-Wallets, nicht direkt an Verkäufer. Halte freie native Coins für Gebühren bereit. Normale Sweeps überspringen geschützte Empfangsadressen.
Die Verarbeitungsgebühr fällt einmal auf die ursprüngliche Rechnung an, getrennt von deiner Provision. Unterzahlungen und unklare Eingänge brauchen eine Prüfung. Erstattungen nach Auszahlung benötigen eigene Mittel, keinen automatischen Rückruf.
Zahlungen für mehrere Verkäufer einrichten · Marketplace-API-Referenz
Unter Einstellungen → Buchhaltung findest du Berichte, Transaktionen, Exporte und Prüfungen. Das Dashboard bleibt getrennt.
Bestätigte Eingänge, Rückzahlungen und erfasste Kosten bleiben von Wallet-Transfers und Guthabenaufladungen getrennt. Jede Rechnung wird nur einmal gezählt, auch bei mehreren Zahlungen.
Historische Werte nutzen gespeicherte Nachweise, nicht heutige Preise. Ältere Kurse und tatsächliche Gebühren können fehlen; fehlende Kosten werden nie als null angenommen. Solange Nachweise fehlen, bleibt der Nettobetrag nicht verfügbar.
Erfasst werden die in Wholly Crypto gespeicherten Vorgänge, nicht jede externe Wallet- oder Börsentransaktion. Das ist eine Buchhaltungshilfe, keine Steuererklärung oder Gewinnrechnung. Teile Exporte sicher: Sie können Kunden-E-Mail-Adressen enthalten.
Übertrage Guthaben von den Empfangsadressen deines Projekts an ein Ziel deiner Wahl. Unter Projekt → Sweep findest du automatische Regeln und den Transferverlauf.
Sende native Coins auf 29 Chains; Monero bleibt view-only. Token: geprüfte ERC-20 und klassisches SPL. Manuelles Senden und automatische Sweeps nutzen dieselben Schutzregeln.
Zu BTC, EVM, SOL und TRX kommen 18 native Adapter. Dein Anbieter braucht eine Sende-API. ZEC bleibt transparent; ADA lässt Token-Ausgänge liegen; DOT nutzt Asset Hub; HBAR braucht ein Relay. Ziele mit Pflicht-Memo, Tag oder Kommentar brauchen eine externe Wallet.
Gas-Aufladung, Bestätigungen und Token-Versand laufen nach der Freigabe im Hintergrund weiter. Unter Transfer activity siehst du den Fortschritt, auch nach dem Schließen des Fensters. Gesendet heißt nicht bestätigt.
Keep in project wallet ETH: 0 bedeutet keine zusätzliche Reserve, nicht „alle ETH ausgeben“. 0.005 hält mindestens 0,005 ETH für später zurück. Für diesen Transfer brauchst du also zusätzliches Guthaben. Gespeicherte automatische Regeln ändern sich nicht.
Das Tageslimit begrenzt die zugeteilten nativen Coins je Token-Regel über die letzten 24 Stunden. 1 EUR kann bei wenig Nutzung ein Startwert sein, keine Kostengarantie oder tägliche Gebühr. Auch Aufladungen kosten Netzwerkgebühren. Maximum network fee % begrenzt auf Wunsch die gemeinsamen Auflade-/Transfergebühren.
Checks laufen automatisch. Nur geeignete Adressen mit Token erhalten Gas, keine leeren Adressen. Fehlt einer Adresse Gas und liegt ihr Token-Guthaben unter dem Sweep-Minimum, wartet sie. Gas-Limits erklärt →
Senden deaktiviert? Prüfe whollycrypto transfers status. Kontrolliere vor whollycrypto transfers enable alle aktiven Regeln: Der Befehl gilt serverweit und kann gespeicherte Regeln sofort ausführen. Stoppen kann bereits gesendete Transaktionen nicht zurückholen.
Settings → System → Live domains: Mit Manage bearbeitest oder entfernst du Domains. Add domain öffnet die Einrichtung einer neuen Domain. Entwurf speichern, DNS prüfen, veröffentlichen. Nur neue Adressen brauchen DNS-/SSL-Prüfungen. Bestehende Adressen bleiben aktiv.
Store → Basic: wähle aktive Adressen für Konsole, Checkout und API. Für Links gilt: Store → Standard-Store → System. Entfernte Namen werden übersprungen. Trage die API-Domain auch im SDK ein. Wiederholte signierte Benachrichtigungen behalten ihre Links.
HTTPS läuft automatisch. Schalte Cloudflare nach der Einrichtung ein oder aus. Let’s Encrypt bleibt aktiv.
/.well-known/acme-challenge/ auf Port 80 ohne Umleitungen oder Zugangskontrolle für Zertifikatserneuerungen erreichbar.Wir prüfen die zuständigen Nameserver und den Ursprungsserver: Direct oder Cloudflare. Besucher können alte DNS-Daten zwischenspeichern.
Speichern/Löschen nutzt ab 5.6.2 POST: keine Ausnahme für „Not GET or POST“ nötig. Anmeldung und CSRF-Schutz bleiben aktiv. Erlaube auf api.* weiterhin die dokumentierten API-Methoden.
Richte 2FA unter Settings → Account ein. Reine Projektbenutzer nutzen My security in der Fußzeile. Bestätige dein Passwort, scanne TOTP-QR/Schlüssel und gib einen sechsstelligen Code ein.
Probier Verifyr Authenticator für iOS oder Android, oder eine andere TOTP-App. Sichere die einmaligen Wiederherstellungscodes getrennt vom Passwort. Lass HTTP Basic aktiv.
Neue Codes oder das Abschalten von 2FA brauchen dein Passwort und einen Authenticator- oder ungenutzten Wiederherstellungscode. Andere Sitzungen werden abgemeldet. Halte Handy-/Serveruhren synchron. 2FA schützt keinen bereits gehackten Server.
Das Theme-Symbol wechselt Light → Dim → Dark und merkt sich die Wahl im Browser. Das Store-Checkout-Design bleibt getrennt.
merchant.*- oder api.*-Adresse. Deine aktuelle Dashboard-IP muss erlaubt bleiben.pay.* normalerweise offen, damit Kunden von überall zahlen können.Optional kannst du Cloudflare-Zugriffsregeln ergänzen. Nimm Zertifikatserneuerungen davon aus. Nutze keine Browser-Anmeldeprüfung für API oder Checkout. Der Proxy allein beschränkt keine IPs.
Ausgesperrt? Starte über SSH whollycrypto access-reset --domain merchant.example.com. Nur diese Adresse wird innerhalb von fünf Sekunden wieder geöffnet. Der Anmeldeschutz bleibt aktiv.
whollycrypto ssl
whollycrypto ssl --fixDer erste Befehl prüft aktive Zertifikate. --fix repariert TLS-Dateien und erneuert fehlende/ablaufende Zertifikate. Nginx muss laufen; halte Ports 80/443 offen.
Mit whollycrypto ssl --domain merchant.example.com --reissue erzwingst du die Neuausstellung. Ausstellungslimits gelten weiter. Blockiert Cloudflare die HTTP-Prüfung, nutze kurz DNS-only. Wallets, Anmeldeschutz und Domains bleiben gleich.
Entscheidungen brauchen einen Grund. Rückzahlungen erfordern eine eigene bestätigte Überweisung; ein anderer Rechnungsstatus sendet kein Geld.
Versionshinweise lesen, dann unter Settings → System → Software updates oder per CLI aktualisieren. Signaturprüfung, Backup und App-Prüfung bleiben Pflicht. Checkout pausiert kurz.
whollycrypto update --check
whollycrypto updateUpdates warten ab 0.1.32 zwei Minuten auf Hintergrundaufgaben. Dein Checkout bleibt dabei online. Bei Zeitüberschreitung: Abbruch mit wiederhergestellten Zeitplänen.
Updater blockiert? Einmal ausführen; dein installierter Schlüssel prüft den Download.
bash <(curl -fsSL https://releases.whollycrypto.com/update_wholly.sh)Bewahre getestete Backups von PostgreSQL, Konfiguration, Wallet-Verschlüsselungsschlüssel und Wallet-Exporten getrennt vom Server auf. Lokale Archive sind unverschlüsselt.
Unterbrich keine Migration. Starte keine ältere App mit neuerer Datenbank. Stelle passende Datenbank-/Konfigurationsbackups gemeinsam wieder her. Guthabenregeln bleiben unverändert.
Setup und Updates nutzen bei Ausfällen den offiziellen GitHub-Mirror. Aktiviere GitHub-Fallback auch für das Setup-Skript. Signaturen, Prüfsummen und Guthabenregeln bleiben Pflicht.
Als root über SSH.
whollycrypto status
whollycrypto doctor
whollycrypto backup| Befehl | Zweck |
|---|---|
whollycrypto version | Installierte Version. |
whollycrypto status | App und Datenbank prüfen. |
whollycrypto logs | Letzte 80 App-Protokollzeilen. |
whollycrypto restart | Neustart und Funktionstest. |
whollycrypto doctor | Prüfen, ohne Änderungen. |
whollycrypto doctor --fix | Verwaltete Dateirechte und fehlenden CLI-Link reparieren. |
whollycrypto htaccess | Basic-Auth-Login zurücksetzen. |
whollycrypto admin-reset | Admin-Passwort zurücksetzen. |
whollycrypto 2fa-reset | Authenticator eines Kontos zurücksetzen, ohne das Passwort zu ändern. |
whollycrypto transfers statuswhollycrypto transfers enablewhollycrypto transfers disable | Senden für alle Projekte prüfen, aktivieren oder pausieren. Aktivieren startet die App neu und kann gespeicherte Regeln sofort ausführen; Bestätigung nötig. Updates behalten Pausen bei. |
whollycrypto ssl | HTTPS prüfen, mit --fix reparieren. |
whollycrypto access-reset --domain HOST | IP-Sperre einer Adresse aufheben. |
whollycrypto update --check | Nach signierten Updates suchen. |
whollycrypto update | Backup, Update und Neustart. |
whollycrypto backup | Root-only-Archiv in /root/whollycrypto/backups/releases/. |
whollycrypto recover | Abgebrochene Wartung oder Updates mit unverändertem Schema retten. Stellt nie automatisch eine Datenbank wieder her. |
whollycrypto reset | Ein Projekt, alle Geschäftsprojekte oder nur Reparatur wählen. |
whollycrypto uninstall --checkwhollycrypto uninstall | Entfernen erst prüfen, dann die native Anwendung entfernen. Datenbank, Schlüssel und Backups bleiben. |
whollycrypto welcome | Dashboard-Adresse und Links. |
whollycrypto --help | Befehle; --help danach zeigt die jeweiligen Optionen. |
Die Prüfung ändert nichts; Probleme ergeben einen Exit-Code ungleich null. --fix repariert nur verwaltete Dateirechte und einen fehlenden CLI-Link. Keine Neustarts, Löschungen oder Gebührenänderungen.
whollycrypto reset
# Vorschau ohne Änderungen:
whollycrypto reset --scope business --check
whollycrypto reset --scope project --project YOUR_PROJECT_IDENTIFIER --checkWähle ein Projekt, alle Geschäftsprojekte oder nur Reparatur. Ein Projekt-Reset löscht die gewählten Projekte, Stores, Wallet-Daten und Zahlungshistorie dauerhaft. Reparatur prüft und korrigiert nur verwaltete Dateirechte und den CLI-Link.
Schalte die Projekte vorher aus, kläre offene Zahlungen und Transfers und übertrage bekannte Wallet-Guthaben. Konten, Domains, Nodes, Guthaben, Abrechnungsidentität und Installationsmodus bleiben erhalten. Operator-Empfangswallets und gehostete Guthabenaufzeichnungen sind geschützt. Der Setup-Assistent wird nicht erneut geöffnet.
Vor dem Löschen musst du einen Bestätigungstext eingeben; dann entsteht ein geprüftes Wiederherstellungsbackup. Sichere Wallets zusätzlich außerhalb des Servers: Alte Adressen können weiter Geld empfangen, werden nach dem Löschen aber nicht mehr verfolgt. Zwischengespeicherte Salden beweisen nicht, dass Wallets leer sind.
whollycrypto uninstall --check
whollycrypto uninstallStoppt Checkout, API und Hintergrundaufgaben. Nach Backup und Bestätigung werden Anwendung und verwaltete Server-Einbindung entfernt. Offene Zahlungen oder Transfers verhindern das Entfernen. Dateien werden ins Wiederherstellungsbackup verschoben, nicht vernichtet.
Datenbank, Konfiguration, Schlüssel und Backups bleiben erhalten. Gemeinsam genutzte Nginx-/PostgreSQL-Pakete und TLS-Zertifikate bleiben unverändert. Der Befehl zeigt dir einen Offline-Befehl zur Wiederherstellung. Starte keine Neuinstallation über die erhaltenen Daten.
Reset und Entfernen gelten für native VPS-Installationen, nicht Docker oder Umbrel. Nutze dort Backup und Stop deiner Integration und behalte die Volumes. Die beiden Löschbefehle akzeptieren kein --yes.
whollycrypto htaccessWähle Benutzer, Namen und Passwort und bestätige. Das ändert die erste Browser-Anmeldung, nicht dein Dashboard-Konto. Andere Benutzer und API-Zugangsdaten bleiben gleich.
whollycrypto admin-resetWähle den Admin per E-Mail und bestätige das neue Passwort. Sitzungen und Kontosperren werden aufgehoben; IP-Regeln bleiben aktiv.
Normale Resets lassen 2FA aktiv. Sind Authenticator und Wiederherstellungscodes verloren, nutze ausdrücklich whollycrypto admin-reset --email admin@example.com --reset-2fa. Richte 2FA nach der Anmeldung erneut ein.
Braucht die Datenbank, nicht App oder altes Passwort. Andere Konten, Wallets und Rechte bleiben gleich; deaktivierte Konten bleiben deaktiviert.
Authenticator und Wiederherstellungscodes verloren? Wähle als root ein Konto.
whollycrypto 2fa-reset
# Oder das Konto direkt wählen:
whollycrypto 2fa-reset --email user@example.comEntfernt Sitzungen, Authenticator und Wiederherstellungscodes. Melde dich mit deinem Passwort an und richte 2FA erneut ein. Rechte, Wallets und Basic Auth bleiben gleich; deaktivierte Konten bleiben deaktiviert.
Braucht die Datenbank, nicht die App oder Guthaben. Ohne Terminal: --email und --yes.
Enter erzeugt ein Passwort in /root/whollycrypto/config/credential-resets/: privat, unverschlüsselt, erst nach Erfolg nutzbar. Eigene Passwörter werden nicht gespeichert.
whollycrypto htaccess --user admin --new-user operator
whollycrypto admin-reset --email admin@example.comOhne Terminal brauchst du das bestehende Konto plus --generate oder --password-file /root/private-password.txt sowie --yes. Passwortdateien müssen root gehören und Modus 600 haben. Schreibe Passwörter nie in Befehle oder Umgebungsvariablen.
--yes überspringt nur die Bestätigung. Repariere abgebrochene Updates zuerst; gleichzeitige Kontoänderungen stoppen den Reset.