- Non-custodial
- Geld direkt auf Ihr Wallet
- 9 Netzwerke · USDT und USDC
Krypto akzeptieren.
Direkt auf Ihr Wallet.
Fertiges Krypto-Payment-Gateway für Website, App oder Bot. Sie erstellen eine Rechnung mit einem einzigen Aufruf, leiten den Kunden auf unsere Bezahlseite weiter und erhalten einen Webhook, sobald das Netzwerk die Zahlung bestätigt hat.
- Sandbox ohne echtes Geld
- Clients für Node, PHP, Python, Go
- Signierte Webhooks mit Wiederholungen
a1f3…9c0e · TRONWährung wählen
Genauen Betrag überweisen
Zahlung erkannt
Warten auf Bestätigungen im Netzwerk TRON
Bestätigungen
TRON: 19 Blöcke – etwa eine Minute
Bezahlt
49.99 USDT – im Wallet des Shops
invoice.paid → Ihr Server 200 OKSie verkaufen. Wir beobachten die Blockchain.
Coinetic gibt jedem Kunden eine eigene Adresse, erkennt die Zahlung, wartet die nötigen Bestätigungen ab und meldet Ihrem Server erst dann „bezahlt“. Das Geld fließt vom Wallet des Kunden direkt auf Ihres – an uns vorbei.
9 Netzwerke. Ihr Kunde zahlt mit dem, was er hat
Native Coins, USDT und USDC. Ein Token wird nur über eine freigegebene Contract-Adresse gutgeschrieben – ein gefälschter „USDT“ ändert keinen Status.
Drei Schritte zur Krypto-Zahlung
Keine Nodes, keine Wallets auf dem Server, keine Smart Contracts auf Ihrer Seite. Bezahlseite, Kurse, Adressen und Bestätigungen übernehmen wir.
import { CoineticClient } from "./cryptopay.js";
const cp = new CoineticClient({
baseUrl: "https://pay.coinetic.money",
keyId: process.env.API_KEY,
secret: process.env.API_SECRET, // nur auf dem Server
});
const invoice = await cp.createInvoice({
order_id: "ORDER-1001",
price_amount: "49.99", // String, keine Zahl
price_currency: "USD",
return_url: "https://shop.example/orders/ORDER-1001",
}, "order-ORDER-1001"); // Idempotency-Keyrequire 'Cryptopay.php';
$cp = new \Cryptopay\Client('https://pay.coinetic.money', getenv('API_KEY'), getenv('API_SECRET'));
$invoice = $cp->createInvoice([
'order_id' => 'ORDER-1001',
'price_amount' => '49.99',
'price_currency' => 'USD',
'return_url' => 'https://shop.example/orders/ORDER-1001',
], 'order-ORDER-1001');from cryptopay import CoineticClient
cp = CoineticClient("https://pay.coinetic.money", os.environ["API_KEY"], os.environ["API_SECRET"])
invoice = cp.create_invoice({
"order_id": "ORDER-1001",
"price_amount": "49.99",
"price_currency": "USD",
"return_url": "https://shop.example/orders/ORDER-1001",
}, "order-ORDER-1001")cp := &cryptopayclient.Client{
BaseURL: "https://pay.coinetic.money",
KeyID: os.Getenv("API_KEY"),
Secret: os.Getenv("API_SECRET"),
HTTP: &http.Client{Timeout: 10 * time.Second},
}
inv, err := cp.CreateInvoice(ctx, cryptopayclient.CreateInvoice{
OrderID: "ORDER-1001",
PriceAmount: "49.99",
PriceCurrency: "USD",
ReturnURL: "https://shop.example/orders/ORDER-1001",
}, "order-ORDER-1001")// Express: Kunden auf die Coinetic-Bezahlseite weiterleiten
app.post("/checkout", async (req, res) => {
const order = await createOrder(req);
const invoice = await cp.createInvoice({ /* wie in Schritt 1 */ }, `order-${order.id}`);
await saveInvoiceId(order.id, invoice.id);
res.redirect(303, invoice.checkout_url);
});$invoice = $cp->createInvoice([/* wie in Schritt 1 */], 'order-' . $order['id']);
save_invoice_id($order['id'], $invoice['id']);
header('Location: ' . $invoice['checkout_url'], true, 303);
exit;# Flask
@app.post("/checkout")
def checkout():
order = create_order(request)
invoice = cp.create_invoice({...}, f"order-{order.id}")
save_invoice_id(order.id, invoice["id"])
return redirect(invoice["checkout_url"], code=303)http.Redirect(w, r, inv.CheckoutURL, http.StatusSeeOther)import { verifyWebhook } from "./cryptopay.js";
app.post("/webhooks/coinetic", express.raw({ type: "application/json" }), async (req, res) => {
let event;
try { event = verifyWebhook(process.env.WEBHOOK_SECRET, req.headers, req.body); }
catch (e) { return res.status(e.status ?? 400).end(); } // fremde Signatur
const inv = await cp.getInvoice(event.data.invoice_id); // Status aus der API
if (inv.status === "paid" || inv.status === "overpaid") await fulfilOnce(inv.order_id);
res.sendStatus(200);
});$headers = array_change_key_case(getallheaders(), CASE_LOWER);
try {
$event = \Cryptopay\verify_webhook(getenv('WEBHOOK_SECRET'), $headers, file_get_contents('php://input'));
} catch (\Cryptopay\CryptopayException $e) {
http_response_code($e->status); exit;
}
$inv = $cp->getInvoice($event['data']['invoice_id']); // Status aus der API
if (in_array($inv['status'], ['paid', 'overpaid'], true)) fulfil_once($inv['order_id']);
http_response_code(200);from cryptopay import verify_webhook, CryptopayError
@app.post("/webhooks/coinetic")
def webhook():
headers = {k.lower(): v for k, v in request.headers.items()}
try:
event = verify_webhook(os.environ["WEBHOOK_SECRET"], headers, request.get_data())
except CryptopayError as e:
return "", e.status
inv = cp.get_invoice(event["data"]["invoice_id"]) # Status aus der API
if inv["status"] in ("paid", "overpaid"):
fulfil_once(inv["order_id"])
return "", 200Jeder Client ist eine einzige Datei ohne Abhängigkeiten – laden Sie ihn für Ihre Sprache herunter. Schritt für Schritt erklärt im Schnellstart.
REST und Webhooks. Idempotent. Berechenbar.
Eine kleine API, die sich kaum falsch verwenden lässt. Sandbox-Schlüssel erhalten Sie im Dashboard in wenigen Minuten.
Idempotency-Keybei jeder ändernden AnfrageEine Wiederholung nach einem Timeout liefert dieselbe Rechnung, statt eine zweite anzulegen.- HMAC-SHA256-SignaturDas Secret verlässt nie Ihren Server; Zeitstempel und Nonce schützen vor Replay-Angriffen.
- Beträge als StringsKein Float: Dezimal-Strings und kleinste Einheiten des Assets.
- Referenzwerte für SignaturenEinen eigenen Client in jeder Sprache prüfen Sie in einer Minute.
POST /v1/invoices HTTP/1.1
Authorization: CP-HMAC key=ak_live_…, ts=1760000000, nonce=…, sig=…
Idempotency-Key: order-ORDER-1001
Content-Type: application/json
{"order_id":"ORDER-1001","price_amount":"49.99","price_currency":"USD"}{
"id": "inv_x7k2…",
"status": "created",
"checkout_url": "https://pay.coinetic.money/pay/inv_x7k2…#t=…",
"expires_at": "2026-10-12T15:30:00Z",
"livemode": true
}Alles, wofür man sonst ein halbes Jahr braucht
Bezahlseite
QR-Code, exakter Betrag, Netzwerkhinweis, Live-Status und Timer. Auf Russisch und Englisch, mit hellem und dunklem Design.
Geld auf Ihrem Wallet
BTC, LTC, TRON – Adressen aus Ihrem xpub; EVM – eine Smart-Adresse, die nur an Ihr Wallet weiterleitet; Solana – Ihre eigene Adresse.
Fester Kurs
Preis in USD oder EUR. Der Coin-Betrag wird aus dem Median dreier Börsen berechnet und 20 Minuten gehalten. Für USDT und USDC gilt 1:1.
Unter- und Überzahlung
Eigene Status, Nachzahlung an dieselbe Adresse, Toleranz für Rundungen der Wallets; verspätete Stablecoin-Zahlungen werden automatisch gutgeschrieben.
Zuverlässige Webhooks
HMAC-Signatur, Wiederholungen über 24 Stunden, Ereignisreihenfolge je Rechnung, Zustellprotokoll und erneutes Senden im Dashboard.
Sandbox
Dieselbe API ohne echtes Geld: Die Buttons „Exakt zahlen“, „Unterzahlung“, „Überzahlung“ und „Halber Betrag“ testen jedes Szenario.
Wir können Ihr Geld nicht ausgeben. Technisch unmöglich.
Für den Zahlungsempfang genügen die öffentlichen Daten Ihrer Wallets. Private Keys und Seed-Phrasen fragt Coinetic weder ab noch speichert es sie. Die Adresse, die der Kunde erhält, ist aus Ihrem Schlüssel abgeleitet – und wir prüfen das dreifach.
- Nur öffentliche Schlüsselxpub/zpub für BTC, LTC und TRON, eine Adresse für Solana, ein Sammel-Wallet für EVM-Netzwerke.
- Wallet-Wechsel mit VerzögerungPasswort, zweiter Faktor, E-Mail und eine Frist zum Widerrufen – selbst wenn jemand ins Dashboard gelangt.
- Gebühr separatWir behalten keinen Anteil der Zahlung ein: Einmal im Monat stellen wir eine Rechnung, die Sie in Krypto begleichen.
Coinetic vs. Custodial-Anbieter
| Custodial-Anbieter | Coinetic | |
|---|---|---|
| Wo liegt das Geld nach der Zahlung? | Beim Anbieter bis zur Auszahlung | Sofort auf Ihrem Wallet |
| Wer kann über die Mittel verfügen? | Der Anbieter | Nur Sie |
| Auszahlung | Antrag, Limits, Wartezeit | Nicht nötig |
| Gebühr | Meist von der Zahlung abgezogen | Separate Monatsrechnung |
| Wenn der Anbieter gehackt wird | Guthaben aller Händler in Gefahr | Wir haben keine Schlüssel zu Ihrem Geld |
„Bezahlt“ erst nach Netzwerkbestätigung
Den Status ändert nur der Blockchain-Watcher. Nicht die Bezahlseite, nicht der Kunde und kein URL-Parameter. Wird ein Block zurückgerollt, erhalten Sie invoice.reorged.
createdRechnung erstellt, der Kunde wählt einen Coin
awaiting_paymentAdresse und exakter Betrag ausgegeben
detectedZahlung im Netzwerk sichtbar – noch nicht ausliefern
confirmingIm Block, Bestätigungen laufen n/N
paidBestätigt – Bestellung kann ausgeliefert werden
Wie viele Bestätigungen wir je Netzwerk abwarten, steht unter „Netzwerke und Assets“.
Eine Integration – jede Plattform
Onlineshops
Ein Button „Mit Krypto bezahlen“ neben den Kartenzahlungen. Kunden zahlen aus jedem Wallet oder direkt von der Börse.
SaaS und digitale Güter
metadata in der Rechnung verknüpft die Zahlung mit Nutzer und Tarif. Freischaltung automatisch per Webhook.
Apps und Bots
iOS, Android, Telegram: Sie öffnen den Zahlungslink und holen den Nutzer über return_url zurück.
Häufige Fragen
Was ist ein non-custodial Krypto-Payment-Gateway?
Ein Zahlungsdienst, der kein Kundengeld verwahrt. Coinetic gibt dem Kunden eine aus Ihrem öffentlichen Schlüssel abgeleitete Adresse, überwacht die Blockchain und meldet die Zahlung – die Mittel selbst gehen aber sofort auf Ihr Wallet. Ausgeben oder umleiten können wir sie nicht.
Wie lange dauert die Anbindung?
Der Code ist an einem Abend fertig: Rechnung erstellen, Redirect und Webhook-Handler. Davor kommen die Registrierung im Dashboard, die Empfangs-Wallets und ein Test in der Sandbox. Der ganze Weg Schritt für Schritt.
Welche Kryptowährungen und Netzwerke werden unterstützt?
BTC, LTC, ETH, BNB, POL, TRX, SOL sowie USDT und USDC – in 9 Netzwerken: Bitcoin, Litecoin, Ethereum, BNB Smart Chain, Polygon, Base, Arbitrum One, TRON und Solana. Vollständige Liste.
Muss ich eigene Nodes betreiben oder Schlüssel auf dem Server speichern?
Nein. Netzwerküberwachung, Adressen und Bestätigungen liegen bei Coinetic. Auf Ihrem Server liegen nur der API-Schlüssel zum Signieren der Anfragen und das Webhook-Secret.
In welcher Währung lege ich den Preis fest?
In USD, EUR, USDT oder USDC. Der Kunde sieht den Betrag im gewählten Coin; für BTC, ETH und andere volatile Assets wird der Kurs für 20 Minuten anhand des Medians dreier Börsen fixiert.
Wann gilt eine Zahlung als bezahlt?
Erst nach der nötigen Zahl an Netzwerkbestätigungen: zum Beispiel 2 Blöcke bei Bitcoin und 19 Blöcke bei TRON. Den Status „bezahlt“ setzt der Blockchain-Watcher, nicht die Bezahlseite und nicht der Kunde. Wird ein Block zurückgerollt, kommt der Webhook invoice.reorged.
Was, wenn der Kunde zu wenig oder im falschen Netzwerk zahlt?
Eine Unterzahlung erhält den Status underpaid, der Kunde zahlt an dieselbe Adresse nach. Eine Überweisung in einem anderen EVM-Netzwerk oder mit einem gefälschten Token wird nicht gutgeschrieben, ist aber in der Rechnung sichtbar – mehr dazu.
Kann ich dem Kunden Geld zurückerstatten?
Ja. POST /v1/refunds oder ein Klick im Dashboard legt einen Erstattungsauftrag an. Da die Zahlung auf Ihrem Wallet eingegangen ist, senden Sie die Überweisung selbst und hinterlegen den Hash; in EVM-Netzwerken findet Coinetic sie selbst auf der Blockchain und sendet den Webhook refund.sent. So funktionieren Erstattungen.
Funktioniert Coinetic mit mobilen Apps und Telegram-Bots?
Ja. Die Rechnung erstellt Ihr Server, die App oder der Bot öffnet den Zahlungslink im System-Browser. Das API-Secret gelangt nie in die App. So öffnen Sie die Zahlung.
Was kostet es?
Ein Prozentsatz nur auf bezahlte Rechnungen, ohne Einrichtungsgebühr; die Gebühr wird einmal im Monat separat in Rechnung gestellt. Preise und Rechner.
Erste Testzahlung in 15 Minuten
Registrieren, Sandbox-Schlüssel holen und eine Zahlung ohne echtes Geld durchspielen.