Bitcoin API: BTC-Zahlungen annehmen, ohne eine Node zu betreiben
Nehmen Sie BTC-Zahlungen über eine REST-API an. Generieren Sie Deposit-Adressen, verfolgen Sie Bestätigungen und senden Sie Auszahlungen, ohne eine vollständige Bitcoin-Node zu betreiben.
Suchen Sie nach einer Bitcoin API, ist das erste Ergebnis meist die RPC-Referenz von Bitcoin Core. Sie ist die kanonische Schnittstelle zum Netzwerk und setzt voraus, dass Sie eine Full Node betreiben: bitcoind installieren, etwa mehrere hundert Gigabyte an Chain-Daten synchronisieren, die Maschine online halten und den Upgrade-Zyklus mit jedem Release wiederholen. Für manche Projekte ist das der richtige Weg. Wenn Sie in Ihrer Anwendung BTC-Zahlungen annehmen wollen, ist es ein Umweg.
Chaingateways Bitcoin API ist die REST-Alternative. Sie erstellen Wallets und Deposit-Adressen über schlichtes HTTPS, senden BTC mit einem einzigen POST und erhalten einen Webhook, wenn Coins eintreffen. Es ist eine BTC API im einfachsten Sinne: HTTPS rein, JSON raus. Die Authentifizierung ist ein Bearer-Token aus einem kostenlosen 7-Tage-Test – keine Node, kein KYC zum Start.
Bitcoin über REST statt JSON-RPC
Bitcoin Cores JSON-RPC will eine synchronisierte Node, bevor die erste brauchbare Antwort kommt. Eine REST API will einen API-Key. Der Unterschied zeigt sich im Kalender: Der initiale Block-Download dauert auf typischer Hardware Tage, und danach verbraucht die Node weiter Speicherplatz und Bandbreite und muss überwacht werden, solange Ihr Produkt lebt. Unser Artikel zu Blockchain API vs. Blockchain Node vergleicht beide Ansätze im Detail. Betreiben Sie Ihre eigene Node, wenn Sie Kontrolle auf Policy-Ebene über Ihre Sicht auf das Netzwerk brauchen; nutzen Sie die API, wenn Zahlungen das Ziel sind.
Die Alltagsaufrufe lassen sich sauber auf das REST-Modell übertragen. Wo eine Node-Integration getnewaddress und listtransactions umwickelt und auf Änderungen pollt, weist die API Adressen zu und lässt den Webhook das Beobachten übernehmen. Polling-Loops verschwinden, und mit ihnen die Cron-Jobs, die an einem Wochenende still kaputtgehen.
Es gibt einen zweiten Unterschied. Rohe RPC-Methoden liefern rohe Daten. Chaingateway liefert strukturiertes JSON mit lesbaren Feldern, sodass eine Antwort direkt in Ihre Datenbank wandern kann statt durch eine Parsing-Schicht.
Was Sie mit bitcoin-core RPC brauchen würden, nebeneinander
Der Vergleich wird konkret, sobald man die tatsächliche Arbeit auflistet. Angenommen, die Aufgabe lautet: „Jedem Kunden eine Deposit-Adresse geben und sein Konto gutschreiben, wenn BTC eintrifft.“
| Aufgabe | Mit Bitcoin Core (JSON-RPC) | Mit der REST API |
|---|---|---|
| Voraussetzung | eine synchronisierte Full Node: bitcoind plus mehrere hundert GB Chain-Daten | ein API-Key |
| Neue Deposit-Adresse | getnewaddress pro Kunde, plus ein Wallet-Backup-Regime, das Sie selbst skripten | POST /api/v2/bitcoin/wallets/{wallet}/addresses |
| Eingehendes BTC erkennen | walletnotify konfigurieren, oder listsinceblock / gettransaction per Timer pollen | signiertes Webhook-POST an Ihren Server |
| BTC senden | sendtoaddress, plus eine Hot Wallet in der Node, Fee-Einstellungen und Wallet-Datei-Backups, die Sie selbst verantworten | POST /api/v2/bitcoin/transactions |
| Bestätigungen verfolgen | gettransaction erneut pollen, bis die Anzahl Ihrer Policy genügt | GET /api/v2/bitcoin/transactions/{txid}/decoded pollen, das die Bestätigungsanzahl mitliefert |
| Audit-Trail | listtransactions-Output parsen und in eigenem Code dedupen | GET /api/v2/bitcoin/webhooks/notifications |
| Laufende Kosten | Speicher, Bandbreite, Upgrades, Monitoring | das Problem des Anbieters |
Ausgehende Zahlungen verdienen den genaueren Blick. sendtoaddress sieht wie ein einziger Aufruf aus, setzt aber eine Hot Wallet innerhalb Ihrer Node voraus, Fee-Einstellungen, die Sie selbst verantworten, und ein getestetes Backup der Wallet-Datei. Sogar getbalance ist enger gefasst, als es scheint: Es meldet das Guthaben der Node-Wallet, nicht das einer beliebigen Adresse, sodass exchange-artige Buchhaltung weiterhin in Ihrem Code landet. Nichts davon ist Kritik an Bitcoin Core – es ist die Referenzsoftware für den Betrieb des Netzwerks und darin gut. Es war nie als Payments-Backend einer Webanwendung gedacht, weshalb sich so viel Klebe-Code darum ansammelt.
BTC über REST senden
Die REST-Seite des Sendepfads sind drei Endpoints. POST /api/v2/bitcoin/wallets erstellt eine Wallet, verschlüsselt mit einem Passwort, das Chaingateway nicht speichert – verlieren Sie es, kann niemand die Wallet wiederherstellen, was genau der Sinn ist. POST /api/v2/bitcoin/wallets/{wallet}/addresses leitet so viele Adressen darunter ab, wie Sie brauchen; eine Wallet trägt sie alle. Und POST /api/v2/bitcoin/transactions sendet:
curl -X POST https://app.chaingateway.io/api/v2/bitcoin/transactions \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"to": "bc1qar0srrr7xfkvy5l643lydnw9re59gtzzwf5mdq",
"amount": 0.0015,
"walletname": "treasury",
"password": "wallet-password",
"speed": "medium"
}'
Die Antwort trägt die txid der broadcasteten Transaktion. speed nimmt fast, medium oder slow und setzt das Fee-Level – den Trade-off zwischen Kosten und Zeit bis zur ersten Bestätigung. Ein optionales subtractfee: true zieht die Netzwerkgebühr vom Betrag ab, statt sie obendrauf zu addieren, was Sie wollen, wenn ein Kunde sein volles Guthaben abhebt.
Das ist der komplette Sende-Aufruf – Konto erstellen und ihn im Testnet mit Ihrer eigenen Wallet ausführen.
Alles, was Sie brauchen, um BTC anzunehmen
Webhooks (IPN)
Instant Payment Notifications für eingehende Transaktionen, gesendet sobald eine passende Transaktion on-chain abgeschlossen ist. Setzen Sie ein persönliches Secret in Ihrem Profil, und jede Benachrichtigung trägt einen X-Signature-Header, den Ihr Server verifizieren kann. Fehlgeschlagene Zustellungen werden unter GET /api/v2/bitcoin/webhooks/notifications/failed aufgelistet und lassen sich mit einem Aufruf erneut senden.
Vorhersehbare REST-Endpoints
Adressen erstellen und Zahlungen mit einer sauberen, konsistenten API verfolgen. Requests und Responses sehen aus wie der Rest der Chaingateway-Plattform, sodass ein Entwickler, der eine Chain integriert hat, die Bitcoin-Antworten ohne Handbuch liest.
Sichere Adressverwaltung
Non-custodial per Design, mit eingebauter Adressvalidierung. Fehlerhafte oder falsch getippte Adressen schlagen fehl, bevor irgendetwas die Chain berührt.
Dekodierte Abfragen
Transaktionsdaten kommen als strukturiertes JSON statt roher Hex, inklusive der Beträge und des Bestätigungsstatus, auf denen Ihr Backend handelt.
Blockzeiten und Bestätigungen: was Sie erwarten können
Bitcoin fügt etwa alle zehn Minuten einen Block hinzu, wobei einzelne Abstände stark variieren. Jeder neue Block, der auf den mit Ihrer Transaktion gebaut wird, fügt eine Bestätigung hinzu, und jede Bestätigung erschwert eine Rückabwicklung.
| Zahlungsgröße | Zu erwartende Bestätigungen |
|---|---|
| Klein, bis etwa 1.000 $ | 1 (etwa 10 Minuten) |
| Mittelgroß, bis etwa 10.000 $ | 3 (etwa 30 Minuten) |
| Groß | 6 (etwa eine Stunde) |
| Sehr groß, über 1 Million $ | 10 oder mehr |
Sechs Bestätigungen – etwa eine Stunde – sind seit den frühen Börsentagen der de-facto-Standard für „abgewickelt“, und das gilt weiterhin Mitte 2026.
Zehn Minuten sind ein Durchschnitt, kein Zeitplan
Die Difficulty-Adjustment hält ihn über die Zeit stabil, aber einzelne Abstände streuen breit darum – zwei Blöcke innerhalb einer Minute kommen vor, ebenso vierzigminütige Dürreperioden. Payment-UX muss das respektieren: „etwa zehn Minuten“ ist ein Durchschnitt, kein Versprechen, weshalb Ihre Checkout-Seite „meist innerhalb einer Stunde“ sagen sollte statt einen Countdown-Timer laufen zu lassen, den sie nicht einhalten kann.
Warum nicht bei null Bestätigungen gutschreiben?
Weil eine Transaktion, bis sie in einem Block steckt, im Mempool sitzt, wo sie ersetzt oder doppelt ausgegeben werden kann, und selbst der neueste Block bei einer Reorganisation aus der Chain fallen kann. Die API teilt diese Arbeit in zwei. Der Webhook feuert, sobald die Transaktion on-chain abgewickelt ist – das Payload trägt Betrag, Adresse, txid und Blocknummer –, sodass Ihre UI sofort reagieren kann. Von dort liefert GET /api/v2/bitcoin/transactions/{txid}/decoded die aktuelle Bestätigungsanzahl, sodass Ihr Ledger nur Geld gutschreibt, das Ihren Schwellenwert erreicht hat. Zeigen Sie Fortschritt früh, schreiben Sie spät gut.
UTXOs: warum sich Bitcoin-Deposits von EVM-Chains unterscheiden
Bitcoin kennt keine Kontoguthaben. Was die Chain speichert, sind unspent transaction outputs – UTXOs –, jeder ein diskreter Wertklumpen, an eine Adresse gebunden. Das „Guthaben“ einer Wallet ist eine Zahl, die Ihre Software ableitet, indem sie jedes UTXO summiert, das ihre Adressen kontrollieren; das Protokoll speichert diese Summe nirgends. Ausgeben verbraucht ganze UTXOs und erzeugt neue, inklusive eines Wechselgeld-Outputs zurück an Sie selbst, so wie die Bezahlung einer 7-Euro-Rechnung mit einem 10-Euro-Schein Münzen zurückgibt.
Ethereum läuft nach dem umgekehrten Modell. Ein Konto hat ein Guthaben, die Chain speichert es direkt, und ein Deposit ist ein Increment. Auf EVM-Chains ist es normal, einem Kunden eine Adresse zu geben und über Jahre hundert Deposits darauf anhäufen zu lassen.
Für die Deposit-Verwaltung hat das UTXO-Modell einen praktischen Vorteil: Es drängt Sie zu einer Adresse pro Kunde oder pro Rechnung, was ohnehin das sauberere Design ist. Jede eingehende Zahlung ist ein neuer Output an eine Adresse, die Sie beobachten, sodass die Zuordnung eindeutig ist – kein Memo-Parsing, kein Abgleich nach Betrag. Es bedeutet auch, dass „das Guthaben einer Adresse“ eine Frage ist, die ein Indexer beantwortet, nicht die Chain selbst – genau die Buchhaltung, die Sie auslagern, indem Sie eine API mit Webhooks nutzen statt die Maschinerie selbst zu betreiben. Die Benachrichtigung sagt Ihnen: dieser Betrag, diese Adresse, diese Transaktion, dieser Block. Den Rest erledigt Ihr Ledger.
Der Deposit-Flow, Schritt für Schritt
Die meisten Bitcoin-Integrationen bei Chaingateway drehen sich um Deposits: eine Adresse pro Kunde, ein Webhook pro Zahlung.
- Weisen Sie jedem Kunden eine Deposit-Adresse aus Ihrer Wallet zu (
POST /api/v2/bitcoin/wallets/{wallet}/addresses). - Der Kunde sendet BTC.
- Sobald die Transaktion on-chain abgewickelt ist, sendet Chaingateway eine signierte Benachrichtigung per POST an Ihren Server, mit Betrag, Adresse, txid und Blocknummer.
- Ihr Backend verifiziert die Signatur und schreibt das Konto gut, sobald die Bestätigungsanzahl – ausgelesen aus
GET /api/v2/bitcoin/transactions/{txid}/decoded– Ihren Schwellenwert erreicht.
Zwei Implementierungshinweise. Die Zustellung ist nicht exactly-once – eine fehlgeschlagene Benachrichtigung, die Sie über die API erneut senden, kommt vollständig erneut an –, machen Sie Ihren Handler also idempotent und knüpfen Sie Gutschriften an die Transaktions-ID statt Callbacks zu zählen. Und Bestätigungen existieren aus gutem Grund: Der neueste Block kann bei einer Reorg immer noch verworfen werden, weshalb die Gutschrift-Entscheidung an der Bestätigungsanzahl hängen sollte, nicht am Webhook allein.
Es hilft, jeden Deposit als kleine Zustandsmaschine statt als Boolean zu modellieren. Eine Bestellung startet bei awaiting_payment, wechselt zu detected, wenn der Webhook feuert, geht durch confirming, während Ihr Poller die Bestätigungsanzahl beobachtet, und landet bei settled, sobald der Schwellenwert erreicht ist – mit underpaid und expired als expliziten Nebenausgängen. Kunden, die 0,00095 BTC gegen eine 0,001-BTC-Rechnung senden, gibt es, meist weil ihre Wallet die Netzwerkgebühr vom eingegebenen Betrag abgezogen hat; entscheiden Sie im Voraus, ob Ihre Toleranz den Fehlbetrag absorbiert oder die Bestellung auf eine Nachzahlung wartet. Und geben Sie Rechnungen ein Ablaufdatum. Wechselkurse bewegen sich, sodass eine Adresse, die am Montag zum Rechnungsbetrag passte, in der folgenden Woche nicht zu einem veralteten Preis abgewickelt werden sollte.
Für Audits und Abgleich lässt sich jede Benachrichtigung, die Ihr Konto erhalten hat, über die API auflisten:
curl https://app.chaingateway.io/api/v2/bitcoin/webhooks/notifications \
-H "Authorization: Bearer YOUR_API_KEY"Erst Testnet
Fügen Sie den Header X-Network: testnet hinzu, und jeder Aufruf auf dieser Seite läuft gegen Bitcoins Testnetzwerk: dieselben Routen, dieselben Response-Formen, wertlose Coins. Faucets geben kostenlos Test-BTC aus, sodass sich der gesamte Deposit-Flow – Adresse, Zahlung, Webhook, Bestätigungen – Ende-zu-Ende proben lässt, ohne einen Satoshi auszugeben.
Halten Sie den Header hinter der Konfiguration statt im Code verstreut, und geben Sie Ihrer Staging-Umgebung eine separate Callback-URL, damit Test-Deposits nicht in das Produktions-Ledger sickern können. Funktioniert die Probe, entfernen Sie den Header. Sonst ändert sich nichts an der Integration, was der Sinn ist: Das erste Mainnet-Deposit sollte langweilig sein.
Wenn etwas fehlschlägt
Ein Payments-Backend verdient sich an den schlechten Tagen seine Existenzberechtigung, planen Sie also die Fehlerpfade explizit.
Auf der HTTP-Ebene gelten die üblichen REST-Regeln. Ein 401 bedeutet, dass der Bearer-Token falsch oder fehlend ist; korrigieren Sie den Key, statt es erneut zu versuchen. Andere 4xx-Antworten weisen auf den Request selbst hin – loggen Sie den Body, der das Problem benennt, und behandeln Sie es als Bug. Antworten im 5xx-Bereich und Timeouts sind vorübergehend; wiederholen Sie diese mit Backoff.
Die Bitcoin-spezifischen Fehlermodi liegen oberhalb von HTTP. Ein Deposit, das nie bestätigt, hat meist zu wenig Gebühr bezahlt und steckt im Mempool fest; es kann Stunden später bestätigen oder ganz verschwinden, weshalb detected und settled in Ihrem System getrennte Zustände bleiben müssen. Eine Benachrichtigung mit einem Betrag unter der Rechnung ist eine Geschäftsentscheidung, kein Fehler – behandeln Sie sie im Code, nicht in einer Support-Warteschlange. Und war Ihr Webhook-Endpoint down, warten die fehlgeschlagenen Zustellungen auf Sie: GET /api/v2/bitcoin/webhooks/notifications/failed listet sie auf, POST /api/v2/bitcoin/webhooks/notifications/{id}/retry sendet jede erneut, und die vollständige Liste unter GET /api/v2/bitcoin/webhooks/notifications lässt Sie mit dem Ledger abgleichen und Lücken gutschreiben. Führen Sie diesen Abgleich nächtlich durch, selbst wenn nichts falsch aussieht. Ein Reconciliation-Job, der nur nach Vorfällen läuft, findet seine Bugs in Produktion.
Brauchen Sie Stablecoins neben BTC?
Bitcoin selbst kennt kein USDT oder USDC – Stablecoins leben auf anderen Chains. Was die geteilte Plattform Ihnen gibt, ist ein Vorsprung: Ihre Bitcoin-Integration spricht bereits dieselbe API wie unsere Ethereum- und TRON-Endpoints. Nehmen Sie heute BTC an, fügen Sie im nächsten Sprint USDT auf TRON mit demselben Key und demselben Webhook-Handler hinzu. Die Blockchain-API-Übersicht listet alle sieben unterstützten Chains.
Die praktische Reihenfolge für die meisten Teams: BTC-Deposits zuerst launchen, weil Kunden genau danach namentlich fragen, dann Zahlungsdaten entscheiden lassen, welche Stablecoin-Schiene als Zweites dazukommt. Bei Chaingateway nutzt diese zweite Schiene Ihre Signaturverifizierung, Ihren Reconciliation-Job und Ihre Deposit-Zustandsmaschine unverändert.
Warum Entwickler auf Bitcoin bauen
- Es hat die längste Erfolgsgeschichte jeder Blockchain, im Betrieb seit 2009, und die breiteste Anerkennung unter Endnutzern.
- Das Netzwerk wickelt rund um die Uhr ab. Es gibt keine Bankzeiten und keine regionalen Cut-offs.
- Bestätigungen folgen einem vorhersehbaren Rhythmus, mit einem neuen Block etwa alle zehn Minuten, was Payment-Workflows leicht kalkulierbar hält.
- Die Adoption ist die größte aller Krypto-Netzwerke, sodass „Nehmt ihr Bitcoin?“ weiterhin die erste Frage von Kunden ist.
Keine dieser Eigenschaften stammt aus einem Roadmap-Update; es sind dieselben Garantien, mit denen das Netzwerk ausgeliefert wurde. Diese Stabilität ist das Argument für BTC in Produkten mit langem Horizont: Eine dieses Jahr gebaute Integration wird nicht durch einen Protokoll-Kurswechsel im nächsten Jahr obsolet – mehr, als die meisten Payment-Stacks von sich behaupten können.
Gebaut für echte Zahlungs-Use-Cases
Der naheliegende Fall ist Checkout: Ein Kunde wählt Bitcoin, und Ihre App weist eine Adresse zu; der Webhook bestätigt die Zahlung. Dieselben Bausteine tragen auch schwerere Lasten. Börsen und Gaming-Plattformen betreiben eine Deposit-Adresse pro Nutzer und schreiben Guthaben bei Bestätigung gut. Auszahlungs- und Remittance-Flows treiben grenzüberschreitende Transfers ohne Korrespondenzbanken dazwischen. Abo-Geschäfte generieren jeden Zyklus eine frische Rechnungsadresse und lassen den Webhook sie abschließen.
Was diese Fälle gemeinsam haben, ist die Form der Arbeit. Bitcoin übernimmt die Abwicklung; Ihre Anwendung übernimmt den Zustand. Die API sitzt zwischen beiden und verwandelt Chain-Events in HTTP-Aufrufe, die Ihr Framework bereits zu routen weiß – weshalb der Checkout-Fall und der Börsen-Fall auf derselben Handvoll Endpoints laufen.
Integration in drei Schritten
Holen Sie sich Ihren API-Key. Die Registrierung ist kostenlos, und der Test startet ohne KYC.
Stellen Sie Ihren ersten Request. Bestätigen Sie den Key mit GET /api/account, erstellen Sie dann eine Wallet und Ihre Deposit-Adressen.
Richten Sie Webhooks ein und gehen Sie live. Richten Sie Benachrichtigungen auf Ihren Endpoint, verifizieren Sie die HMAC-Signatur, entfernen Sie dann den X-Network: testnet-Header – derselbe Code läuft auf Mainnet.
Was auf welcher Chain funktioniert
Bitcoin ist die einzige Zeile ohne Token-Transfer-Spalte: Die Chain hat keinen Token-Standard, sodass natives BTC über sein eigenes Wallet-Modell läuft statt über einen ERC-20-artigen Aufruf. So ordnet es sich neben den anderen sechs Chains ein.
| Chain | Adressen | Token-Transfers | Deposit-Webhooks |
|---|---|---|---|
| Bitcoin | POST /api/v2/bitcoin/wallets/{wallet}/addresses | — (kein Token-Standard) | GET /api/v2/bitcoin/webhooks/notifications |
| Ethereum | POST /api/v2/ethereum/addresses/import | ERC-20: POST /api/v2/ethereum/transactions/erc20 | GET /api/v2/ethereum/webhooks/notifications |
| TRON | POST /api/v2/tron/addresses/import | TRC-20 und TRC-10: POST /api/v2/tron/transactions/trc20 und .../trc10 | GET /api/v2/tron/webhooks/notifications |
| Solana | POST /api/v2/solana/addresses | SPL: POST /api/v2/solana/transactions/SPL | — |
| BNB Smart Chain | POST /api/v2/bsc/addresses/import | BEP-20: POST /api/v2/bsc/transactions/bep20 | GET /api/v2/bsc/webhooks/notifications |
| Polygon | POST /api/v2/polygon/addresses/import | ERC-20: POST /api/v2/polygon/transactions/erc20 | GET /api/v2/polygon/webhooks/notifications |
| Arbitrum | POST /api/v2/arbitrum/addresses/import | ERC-20: POST /api/v2/arbitrum/transactions/erc20 | GET /api/v2/arbitrum/webhooks/notifications |
Zwei Fußnoten, um die Tabelle richtig zu lesen. Erstens: TRON ist die tiefste Integration auf der Plattform. Über die obigen Routen hinaus dokumentiert die Referenz Staking (POST /api/v2/tron/freeze und /delegate), Chain-Parameter und ein Self-Signing-Paar – /transactions/trc20/build, um eine Transaktion zu konstruieren, und /transactions/broadcast, um eine lokal signierte einzureichen. Besteht Ihr Compliance-Team darauf, dass Private Keys Ihre Server nie verlassen, ist dieses Build-and-Broadcast-Muster Ihr Weg.
Zweitens: Ein Strich bedeutet, dass die aktuelle Referenz für diese Zelle keine v2-Route dokumentiert, nicht dass das Netzwerk zweite Wahl ist. Bitcoin hat keinen Token-Standard, daher die leere Token-Zelle – natives BTC läuft stattdessen über sein eigenes Wallet-Modell: eine passwortverschlüsselte Wallet mit POST /api/v2/bitcoin/wallets erstellen, Deposit-Adressen darunter ableiten und mit POST /api/v2/bitcoin/transactions senden. Solanas Referenz deckt Adresserstellung, SOL- und SPL-Transfers sowie Guthaben- und Block-Abfragen ab, aber noch keine Webhooks. Für alles, was hier nicht aufgeführt ist, hat die API-Referenz den aktuellen Stand.
Häufig gestellte Fragen
Bereit, Bitcoin-Zahlungen anzunehmen?
Erstellen Sie ein Konto unter app.chaingateway.io/register, erstellen Sie eine Wallet und senden Sie einen Testnet-BTC-Transfer. Die vollständige Endpoint-Referenz steht in den Docs, und Pläne und Rate Limits haben ihre eigene Seite.