Convert API
Konvertieren Sie Kryptowährungen direkt aus Ihrem Händlerguthaben — holen Sie sich eine Live-Kursangabe und führen Sie zum Marktpreis aus.
Mit der Convert API können Sie Währungen innerhalb Ihres Händlerguthabens zum aktuellen Marktpreis tauschen — dieselbe Engine, die den Swap-Tab im Händler-Dashboard antreibt, jetzt aus Ihrem Backend aufrufbar.
Convert-Endpoints werden mit Ihrem regulären API-Schlüssel signiert — demselben, der für Payment API-Anfragen verwendet wird, nicht dem Payout-API-Schlüssel. Die Ausführung einer Konvertierung belastet und bucht sofort Ihr Händlerguthaben, behandeln Sie diesen Schlüssel daher mit derselben Sorgfalt wie jedes geldbewegende Credential.
Konvertierungspreis abrufen
Liefert eine indikative Kursangabe für eine Konvertierung zum aktuellen Marktpreis — den effektiven Kurs und die resultierenden Beträge. Es wird nichts belastet oder reserviert; rufen Sie dies so oft auf, wie Sie vor der Ausführung benötigen.
/v1/convert/priceAnfrageparameter
| Feld | Typ | Pflicht | Beschreibung | Wert |
|---|---|---|---|---|
from_currency | string | ja | Quellwährung | |
to_currency | string | ja | Zielwährung. Muss sich von from_currency unterscheiden | |
amount | decimal | ja | Zu konvertierender Betrag, größer als 0 | |
amount_type | string | ja | Auf welche Seite sich amount bezieht |
amount_type=from gibt genau amount von from_currency aus. amount_type=to erhält genau amount von to_currency.
🟢 200 OK · application/json
{
"state": 0,
"result": {
"success": true,
"from_currency": "BTC",
"to_currency": "USDT",
"amount_type": "from",
"from_amount": "0.01000000",
"to_amount": "947.86690000",
"effective_rate": "94786.69000000",
"from_amount_usd": "947.87",
"to_amount_usd": "947.87"
}
}Antwortfelder
| Feld | Typ | Beschreibung |
|---|---|---|
success | boolean | Ob die Kursangabe erfolgreich berechnet wurde |
from_currency | string | Quellwährung |
to_currency | string | Zielwährung |
amount_type | string | Spiegelt das amount_type der Anfrage wider |
from_amount | string | Betrag, der in from_currency belastet würde |
to_amount | string | Betrag, der in to_currency gutgeschrieben würde |
effective_rate | string | Auf diese Kursangabe angewendeter Kurs — 1 Einheit from_currency in to_currency (enthält bereits die Preisgestaltung der Plattform) |
from_amount_usd | string | null | USD-Äquivalent von from_amount |
to_amount_usd | string | null | USD-Äquivalent von to_amount |
- Die Kursangabe ist nur indikativ — der Marktpreis kann sich zwischen Kursangabe und Ausführungsaufruf ändern.
- Dieser Aufruf belastet oder reserviert kein Guthaben.
curl -X POST https://api.2328.io/api/v1/convert/price \
-H "Content-Type: application/json" \
-H "User-Agent: MyShop/1.0 (+https://myshop.example)" \
-H "project: YOUR_PROJECT_UUID" \
-H "sign: YOUR_HMAC_SIGNATURE"Konvertierung ausführen
Führt eine Konvertierung zum aktuellen Marktpreis aus und aktualisiert Ihr Händlerguthaben. Es gibt keinen separaten Schritt zur "Bestätigung einer Kursangabe" — rufen Sie diesen Endpoint direkt mit dem zu konvertierenden Betrag auf.
/v1/convertIdempotenz. Die Wiederholung derselben Anfrage (gleiche from_currency, to_currency, amount, amount_type) innerhalb von etwa einer Minute nach dem ersten Aufruf liefert die bestehende Konvertierung zurück, statt eine zweite zu erstellen. Nach Ablauf dieses Zeitfensters wird eine identische Anfrage als neue Konvertierung behandelt — wiederholen Sie einen Timeout nicht blind, ohne zuvor das vorherige Ergebnis zu prüfen.
Dieser Endpoint ist auf 10 Anfragen pro Minute pro Aufrufer begrenzt — strenger als das allgemeine API-Limit —, da jeder Aufruf reales Guthaben bewegt.
Anfrageparameter
| Feld | Typ | Pflicht | Beschreibung | Wert |
|---|---|---|---|---|
from_currency | string | ja | Quellwährung | |
to_currency | string | ja | Zielwährung. Muss sich von from_currency unterscheiden | |
amount | decimal | ja | Zu konvertierender Betrag, größer als 0 | |
amount_type | string | ja | Auf welche Seite sich amount bezieht |
🟢 200 OK · application/json
{
"state": 0,
"result": {
"id": 12345,
"type": "manual",
"status": "completed",
"from_currency": "BTC",
"to_currency": "USDT",
"from_amount": "0.01000000",
"requested_from_amount": "0.01000000",
"refund_amount": null,
"to_amount": "947.86690000",
"exchange_rate": "94786.69000000",
"fee_amount": "0.00000000",
"from_amount_usd": "947.87",
"to_amount_usd": "947.87",
"processed_at": "2026-01-20T15:30:24Z",
"created_at": "2026-01-20T15:30:22Z"
}
}Antwortfelder
| Feld | Typ | Beschreibung |
|---|---|---|
id | int | Vom System vergebene Konvertierungsauftrags-ID |
type | string | Für diese API immer manual |
status | string | Aktueller Status (siehe „Konvertierungsstatus" unten) |
from_currency | string | Quellwährung |
to_currency | string | Zielwährung |
from_amount | string | Belasteter Betrag in from_currency |
requested_from_amount | string | null | Ihr ursprünglich angeforderter Quellbetrag, wenn amount_type = from. null, wenn amount_type = to |
refund_amount | string | null | Teil des vorbelasteten Betrags, der Ihnen nach einer Teilausführung zurückerstattet wurde. null, wenn der Auftrag vollständig ausgeführt wurde |
to_amount | string | Gutgeschriebener Betrag in to_currency |
exchange_rate | string | Tatsächlich auf diese Konvertierung angewendeter Kurs — 1 Einheit from_currency in to_currency (enthält bereits die Preisgestaltung der Plattform) |
fee_amount | string | Für diese Konvertierung erhobene Plattformgebühr, angegeben in from_currency oder to_currency je nach Handelsrichtung. Bereits in exchange_rate enthalten — wird zur Transparenz angezeigt |
from_amount_usd | string | null | USD-Äquivalent von from_amount |
to_amount_usd | string | null | USD-Äquivalent von to_amount |
processed_at | string (ISO 8601) | null | Zeitpunkt, zu dem die Konvertierung abgeschlossen wurde. null, solange sie noch in Bearbeitung ist |
created_at | string (ISO 8601) | Zeitpunkt, zu dem der Konvertierungsauftrag erstellt wurde |
Konvertierungsstatus
| Status | Beschreibung |
|---|---|
pending | Erstellt, noch nicht an den Markt gesendet |
processing | Guthaben gesperrt, Auftrag am Markt platziert |
completed | Vollständig ausgeführt — to_amount wurde Ihrem Guthaben gutgeschrieben |
failed | Konnte nicht ausgeführt werden — jeder vorbelastete Betrag wurde automatisch zurückerstattet |
partially_completed | Nur für Währungspaare ohne direkten Markt (über eine Zwischenwährung geroutet): Der erste Schritt wurde abgeschlossen, der zweite ist fehlgeschlagen. Sie erhalten die Zwischenwährung anstelle von to_currency — konvertieren Sie von dort erneut, um Ihr ursprüngliches Ziel zu erreichen |
curl -X POST https://api.2328.io/api/v1/convert \
-H "Content-Type: application/json" \
-H "User-Agent: MyShop/1.0 (+https://myshop.example)" \
-H "project: YOUR_PROJECT_UUID" \
-H "sign: YOUR_HMAC_SIGNATURE"Fehler
Bei einem Fehlschlag hat die Antwort state: 1 und einen error_code — gemeinsam für /v1/convert/price und /v1/convert:
🔴 422 / 400 · application/json
{
"state": 1,
"error_code": "amount_too_small",
"errors": {
"amount": "Amount is too small for this conversion. Please increase the amount and try again."
}
}error_code | HTTP-Status | Beschreibung |
|---|---|---|
validation_failed | 422 | Ungültige oder fehlende Parameter, oder Ablehnung aufgrund einer Geschäftsregel (z. B. unzureichendes Guthaben) — Details siehe Feld errors |
amount_too_small | 422 | amount liegt unter der minimal handelbaren Größe für dieses Währungspaar |
convert_unavailable | 400 | Die Konvertierung konnte gerade nicht ausgeführt werden (Marktdaten nicht verfügbar oder keine Route zwischen den beiden Währungen) — bitte in Kürze erneut versuchen |
internal_error | 400 | Unerwarteter interner Serverfehler bei der Verarbeitung der Anfrage |
Automatische Umrechnung eingehender Zahlungen
Auto-convert ist eine Projekteinstellung für eingehende invoice und statische Wallet-Gutschriften. Sie wird im merchant Dashboard konfiguriert, nicht durch Hinzufügen von Feldern zu /v1/payment. Jede Regel wählt eine oder mehrere Quellwährungen und eine Zielwährung aus.
Nach Abschluss der Umrechnung können Zahlungsinformationen und merchant webhooks Folgendes enthalten:
{
"payment_amount": "0.14800000",
"merchant_amount": "0.146520000000000000",
"payer_currency": "XMR",
"convert": {
"to_currency": "USDT",
"commission": "0.09000000",
"rate": "323.21000000",
"amount": "47.262015740000000000"
}
}Die Betragsbereiche sind absichtlich getrennt:
payment_amount— was in der Quellzahlungswährung in der Blockchain erkannt wurde;merchant_amount— der Nettoquellbetrag, der der merchant vor der Umrechnung zugeordnet werden kann;convert.amount— der Betrag, der inconvert.to_currencygutgeschrieben wurde;convert.rateundconvert.commission— das durchgeführte Umrechnungsergebnis, nicht ein Preis, den Sie lokal neu berechnen sollten.
Das Fehlen von convert ist bedeutungsvoll: Die Umrechnung könnte nicht abgeschlossen sein, für diese Quelle nicht konfiguriert sein oder auf eine Gutschrift in Quellwährung zurückgefallen sein. Erfinden Sie niemals einen Zielbetrag aus /exchange-rates oder einem öffentlichen Marktpreis.
Fehler bei Auto-convert und fallback
Die Umrechnung erfolgt nach dem Empfang der Blockchain-Zahlung. Marktverfügbarkeit, Mindestbestellmengen, Präzisionsgrenzen, Exchange-Timeouts und unzureichende ausführbare Liquidität können die Umrechnung verzögern oder verhindern.
- Einzahlungen unterhalb des globalen/projektbezogenen Minimums umgehen die Umrechnungspipeline und werden der Quellwährung gutgeschrieben.
- Vorübergehende Fehler können asynchron erneut versucht werden.
- Große oder nicht handelbare Einzahlungen können nach Ausschöpfen der retry-Richtlinie auf eine Gutschrift in Quellwährung zurückfallen.
- Eine Zahlung kann daher gültig sein, selbst wenn die gewünschte Umrechnung in die Zielwährung nicht erfolgt ist.
Ihre Integration sollte zunächst die überprüfte Zahlung speichern und dann die tatsächlich gutgeschriebene Währung aus den Zahlungsinformationen, dem optionalen convert-Block und merchant Salden abstimmen. Blockieren Sie nicht die Bestätigung der Zahlung webhook, während Sie auf Ihre eigenen Analysen oder Benachrichtigungssysteme warten.
Auto-convert Akzeptanztests
Testen Sie mindestens: erfolgreiche direkte Umwandlung, Brücken-/Mehrfach-Umwandlung, dust unter dem Minimum, vorübergehendes retry, fallback in Quellwährung, Unterzahlung, Überzahlung, doppelte webhook, fehlende convert und reconciliation nach einem mehrdeutigen timeout.
Manuelle Umwandlungs-Edge-Cases
/v1/convert/priceist eine indikative Vorschau; Marktentwicklungen können das Ausführungsergebnis ändern.amount_type: fromkorrigiert die Anforderung auf der Quellseite, währendamount_type: toeinen Betrag auf der Zielseite anfordert. Tauschen Sie die Bedeutung nicht, wenn die Bestätigungs-Oberfläche angezeigt wird.- Ein Paar ohne direkten Markt kann über eine Zwischengeldwährung geleitet werden. Wenn nur ein Teil abgeschlossen wird, meldet
partially_completeddie Zwischenbuchung. - Wenn ein Ausführungsaufruf ein Timeout hat, führen Sie vor dem erneuten Versuch einen Abgleich durch. Eine Marktorder kann ausgeführt werden, auch wenn ihre HTTP-Antwort verloren geht.
- Behandeln Sie
failedals einen Status zur Abstimmung, nicht als Erlaubnis, einen lokalen Ausgleichseintrag vorzunehmen; die Plattform verwaltet die Debit-/Rückerstattungsbuchhaltung.