Zahlungen mit Rechnungen annehmen
Mit einer Rechnung stellst du einem Telegram-Nutzer einen Betrag in Rechnung. Du erstellst sie über die API, schickst dem Zahler ihren Link, und der Betrag wird deinem App-Guthaben in dem Moment gutgeschrieben, in dem die Zahlung bestätigt ist.
Der Ablauf
- Erstelle die Rechnung mit
createInvoiceund gib ein Asset und einen Betrag an (oder einen Fiat-Preis – siehe unten). - Schicke dem Zahler den Link aus der Antwort. Beim Öffnen landet er auf dem Bildschirm Rechnung bezahlen in der App.
- Er bestätigt und zahlt aus seinem Guthaben – sofort und ohne Netzwerkgebühr. Ein Zahler ohne ausreichendes Guthaben kann die Rechnung aus einer externen Wallet finanzieren; sie wird automatisch beglichen, sobald seine Übertragung ankommt, und für dich sieht es gleich aus.
- Du wirst benachrichtigt. Der Webhook
invoice_paidwird ausgelöst und der Betrag landet in deinem App-Guthaben. - Liefere die Bestellung aus. Warte auf nichts weiter; die Zahlung ist ab diesem Punkt endgültig.
Wenn du lieber pollst, statt einen Webhook zu empfangen: getInvoices liefert
deine Rechnungen mit ihrem aktuellen Status. Der Webhook ist der schnellere Weg –
Polling ist die Rückfalllösung.
Preise in Fiat
Eine Rechnung kann in Krypto ausgepreist werden oder in einer Fiat-Währung mit einer Liste akzeptierter Assets. Der Zahler begleicht sie dann in dem akzeptierten Asset, das er besitzt, umgerechnet zum Kurs im Moment der Zahlung. Das ist die übliche Wahl für einen Shop, dessen Katalog in einer realen Währung geführt wird.
Wenn du lieber einen festen Preis nennen willst: rate_lock_seconds schreibt
die Umrechnungskurse bei der Erstellung für ein begrenztes Zeitfenster fest –
der Zahler sieht genau die festgeschriebenen Beträge, und du trägst für diese
Minuten das Kursrisiko. Details in der Rechnungs-Referenz.
Du kannst außerdem swap_to setzen, damit eingehende Zahlungen beim Eingang in
ein einziges Asset getauscht werden – praktisch, um dein Guthaben in einem
Stablecoin zu halten, ohne die Tauschvorgänge selbst durchzuführen.
Nützliche Optionen für Rechnungen
- description – wird dem Zahler auf dem Bildschirm Rechnung bezahlen angezeigt.
- hidden_message – wird dem Zahler erst nach der Zahlung gezeigt. So lieferst du einen Code, einen Schlüssel oder einen Link ohne separaten Zustellweg.
- payload – dein eigener, undurchsichtiger String, der im Webhook zurückgegeben wird. Trage hier deine Bestell-ID ein.
- expires_in – eine Frist, nach der die Rechnung nicht mehr bezahlt werden kann.
- paid_btn_name / paid_btn_url – der Button, den der Zahler nach der Zahlung sieht, um ihn zurück zu deinem Bot, deinem Kanal oder deiner Artikelseite zu bringen.
- open_amount – kein fester Betrag; der Zahler gibt ihn bei der Zahlung ein. Die natürliche Form für Spenden und Trinkgelder.
Eine unbezahlte Rechnung kannst du mit deleteInvoice stornieren.
Rückerstattungen
refundInvoice erstattet den Nennbetrag einer bezahlten Rechnung – oder einen
beliebigen Teil davon – aus deinem App-Guthaben an den zurück, der sie bezahlt
hat, auch an anonyme Zahler und ohne offenzulegen, wer sie waren.
Teilerstattungen summieren sich bis zum Nennbetrag; die Rechnung führt sie in
refunded_amount. Übergib eine spend_id, damit eine Wiederholung nach einem
Timeout das Ergebnis wiedergibt, statt zweimal zu erstatten. Die Plattformgebühr
wird nicht erstattet.
⚠️ Prüfe die Webhook-Signatur, bevor du lieferst
Jeder kann per POST an deine Webhook-URL senden. Prüfe den Header
TgPayCrypto-API-Signature – HMAC-SHA256 über den rohen Anfrage-Body, mit
dem SHA-256 deines API-Tokens als Schlüssel –, bevor du eine Zahlung als echt
behandelst, und dedupliziere anhand von update_id, damit eine Wiederholung die
Bestellung nicht zweimal versendet.
War dieser Artikel hilfreich?
Danke für dein Feedback.