Sign in
Konvertierungen/Convert API

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.

POST/v1/convert/price

Anfrageparameter

FeldTypPflichtBeschreibungWert
from_currencystringjaQuellwährung
to_currencystringjaZielwährung. Muss sich von from_currency unterscheiden
amountdecimaljaZu konvertierender Betrag, größer als 0
amount_typestringjaAuf 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

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

FeldTypBeschreibung
successbooleanOb die Kursangabe erfolgreich berechnet wurde
from_currencystringQuellwährung
to_currencystringZielwährung
amount_typestringSpiegelt das amount_type der Anfrage wider
from_amountstringBetrag, der in from_currency belastet würde
to_amountstringBetrag, der in to_currency gutgeschrieben würde
effective_ratestringAuf diese Kursangabe angewendeter Kurs — 1 Einheit from_currency in to_currency (enthält bereits die Preisgestaltung der Plattform)
from_amount_usdstring | nullUSD-Äquivalent von from_amount
to_amount_usdstring | nullUSD-Ä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.
Credentials
RequestPOST/v1/convert/price
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"
Response
Click Try it to see the response here.

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.

POST/v1/convert

Idempotenz. 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

FeldTypPflichtBeschreibungWert
from_currencystringjaQuellwährung
to_currencystringjaZielwährung. Muss sich von from_currency unterscheiden
amountdecimaljaZu konvertierender Betrag, größer als 0
amount_typestringjaAuf welche Seite sich amount bezieht

🟢 200 OK · application/json

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

FeldTypBeschreibung
idintVom System vergebene Konvertierungsauftrags-ID
typestringFür diese API immer manual
statusstringAktueller Status (siehe „Konvertierungsstatus" unten)
from_currencystringQuellwährung
to_currencystringZielwährung
from_amountstringBelasteter Betrag in from_currency
requested_from_amountstring | nullIhr ursprünglich angeforderter Quellbetrag, wenn amount_type = from. null, wenn amount_type = to
refund_amountstring | nullTeil des vorbelasteten Betrags, der Ihnen nach einer Teilausführung zurückerstattet wurde. null, wenn der Auftrag vollständig ausgeführt wurde
to_amountstringGutgeschriebener Betrag in to_currency
exchange_ratestringTatsächlich auf diese Konvertierung angewendeter Kurs — 1 Einheit from_currency in to_currency (enthält bereits die Preisgestaltung der Plattform)
fee_amountstringFü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_usdstring | nullUSD-Äquivalent von from_amount
to_amount_usdstring | nullUSD-Äquivalent von to_amount
processed_atstring (ISO 8601) | nullZeitpunkt, zu dem die Konvertierung abgeschlossen wurde. null, solange sie noch in Bearbeitung ist
created_atstring (ISO 8601)Zeitpunkt, zu dem der Konvertierungsauftrag erstellt wurde

Konvertierungsstatus

StatusBeschreibung
pendingErstellt, noch nicht an den Markt gesendet
processingGuthaben gesperrt, Auftrag am Markt platziert
completedVollständig ausgeführt — to_amount wurde Ihrem Guthaben gutgeschrieben
failedKonnte nicht ausgeführt werden — jeder vorbelastete Betrag wurde automatisch zurückerstattet
partially_completedNur 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
RequestPOST/v1/convert
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"
Response
Click Try it to see the response here.

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

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_codeHTTP-StatusBeschreibung
validation_failed422Ungültige oder fehlende Parameter, oder Ablehnung aufgrund einer Geschäftsregel (z. B. unzureichendes Guthaben) — Details siehe Feld errors
amount_too_small422amount liegt unter der minimal handelbaren Größe für dieses Währungspaar
convert_unavailable400Die 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_error400Unerwarteter 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:

JSON
{
  "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 in convert.to_currency gutgeschrieben wurde;
  • convert.rate und convert.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/price ist eine indikative Vorschau; Marktentwicklungen können das Ausführungsergebnis ändern.
  • amount_type: from korrigiert die Anforderung auf der Quellseite, während amount_type: to einen 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_completed die 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 failed als einen Status zur Abstimmung, nicht als Erlaubnis, einen lokalen Ausgleichseintrag vorzunehmen; die Plattform verwaltet die Debit-/Rückerstattungsbuchhaltung.