Fiatside

Developers

Fehlerkatalog

Jeder Fehler trägt einen stabilen, maschinenlesbaren Code und einen kohärenten HTTP-Status. Der Code ist das, worauf Ihre Integration verzweigen sollte: Der Text kann sich ändern, der Code nicht.

01

Form eines Fehlers

Die aktuelle Form ist bewusst minimal. Sie ist stabil, und das ist entscheidend: ein Code und nichts, das ein internes Detail preisgibt.

Aktuelle Form – echte Antwortjson
{ "error": "rate_stale" }
Mit einem menschenlesbaren Grund – echte Antwortjson
{
  "error": "rail_not_open",
  "reason": {
    "fr": "La retenue TDS de 1 % et l’enregistrement FIU-IND exigent une entite locale…",
    "en": "The 1% TDS withholding and FIU-IND registration require a local entity…"
  }
}

Manche Fehler enthalten ein zweisprachiges Grund-Objekt, das dem Benutzer unverändert angezeigt werden soll. Ein geschlossener Zahlungsweg ist einer: Der Grund erklärt eine benannte regulatorische Einschränkung, keinen Ausfall, und das Anzeigen spart eine Support-Anfrage. Die versionierte API wird diesem Umschlag eine Anfrage-ID hinzufügen, damit Sie uns auf eine genaue Zeile in unseren Protokollen verweisen können.

02

Gültige Codes

Diese Codes werden heute vom Kurs-Endpunkt zurückgegeben.

Gültige Codes
codeHTTPWas es bedeutetWas zu tun ist
invalid_request400Der Anfragetext besteht die Schema-Validierung nicht: fehlendes Feld, falscher Typ, Wert außerhalb der zulässigen Grenzen.Stellen Sie sicher, dass der Betrag ein String und keine Zahl ist und dass die Richtung genau „sell“ oder „receive“ ist.
invalid_amount400Der Betrag kann nicht geparst werden oder hat mehr Dezimalstellen, als der Vermögenswert oder die Währung akzeptiert.Auf die Einheitenpräzision kürzen: 6 Dezimalstellen für USDT, 8 für BTC, 2 für den Euro, 0 für den CFA-Franc.
unknown_asset_or_rail404Die Kennung des Vermögenswerts oder Zahlungswegs existiert nicht im Katalog.Kennungen sind stabil und werden nie neu vergeben. Laden Sie den Katalog neu, anstatt sie zu erraten.
rail_not_open409Der Zahlungsweg existiert, ist aber nicht offen. Die Antwort enthält den genauen Grund in beiden Sprachen.Zeigen Sie den Grund unverändert an: Er erklärt eine regulatorische Einschränkung, keinen Ausfall. Bieten Sie einen offenen Zahlungsweg im selben Land an.
asset_not_offered409Der Vermögenswert ist im Katalog, wird aber nicht angeboten – der Fall für Vermögenswerte mit erhöhter Anonymität.Bieten Sie ihn in Ihrem Auswahlfeld nicht an. Der Katalog gibt ihn mit seinem Grund zurück, damit Sie ihn erklären können.
rate_stale503Der letzte bekannte Preis überschreitet das maximal tolerierte Alter. Die Engine weigert sich, ein Angebot zu erstellen, anstatt einen veralteten Preis als verbindlich zu dienen.Wiederholen Sie den Versuch nach einigen Sekunden. Speichern Sie nicht das letzte erfolgreiche Angebot zwischen, um die Lücke zu füllen: Das wäre genau der Fehler, den dieser Code verhindert.
rate_unavailable503Für dieses Paar aus Vermögenswert und Währung ist kein Preis verfügbar.Deaktivieren Sie das Paar in Ihrer Oberfläche, anstatt einen Schätzwert anzuzeigen. Ein angezeigter Schätzwert wird zu einer Erwartung.
quote_failed500Unerwarteter Fehler während der Berechnung. Es wird kein Angebot zurückgegeben.Wiederholen Sie den Versuch einmal; wenn der Fehler weiterhin besteht, schreiben Sie uns mit dem genauen Zeitstempel des Aufrufs.
03

Codes aus dem veröffentlichten Vertrag

Diese Codes begleiten Endpunkte, die noch nicht geöffnet sind. Sie werden veröffentlicht, damit Ihre Fehlerbehandlung nur einmal geschrieben wird.

Gültige Codes
codeHTTPWas es bedeutetWas zu tun ist
unauthorized401Schlüssel fehlt, widerrufen oder in der falschen Umgebung verwendet.Ein sk_test_-Schlüssel funktioniert nicht in der Produktion, und umgekehrt auch nicht: Das ist beabsichtigt.
idempotency_conflict409Derselbe Idempotenzschlüssel wurde bereits mit einem anderen Anfragetext verwendet.Ein Schlüssel gehört zu einer Absicht. Wenn sich der Inhalt ändert, ändert sich der Schlüssel; andernfalls ist nicht zu unterscheiden, welche der beiden Bestellungen erneut ausgeführt werden soll.
quote_expired409Das Angebot hat sein Sperrfenster überschritten.Fragen Sie erneut ein Angebot an und lassen Sie den neuen Betrag akzeptieren. Wir passen den Preis niemals stillschweigend gegen den Kunden an.
beneficiary_rejected422Die Empfängerdaten bestehen die Zahlungsweg-Validierung nicht: ungültige Prüfsumme, nicht konformes Format oder ein Name, der nicht mit der verifizierten Identität übereinstimmt.Die Antwort nennt das fehlerhafte Feld. Der Name des Begünstigten muss der verifizierten Identität entsprechen: Eine Auszahlung an Dritte ist nicht möglich.
country_not_served451Das Zielland wird nicht bedient: Sanktionen, restriktive Maßnahmen oder das Fehlen eines lokalen Rahmens.Der Code 451 wird bewusst anstelle einer 404 gewählt: Wenn wir ablehnen, sagen wir, dass es eine Ablehnung ist und warum.
rate_limited429Zu viele Aufrufe innerhalb des gleitenden Zeitfensters.Beachten Sie den Retry-After-Header. Angebote sind günstig in der Warteschlange, teuer im Daueraufruf.
not_found404Die Ressource existiert nicht oder gehört nicht zu Ihrem Schlüssel.Beide Fälle geben denselben Code zurück: Eine Antwort, die sie unterscheidet, würde es jedem ermöglichen, die Referenzen anderer aufzulisten.
04

Was kein Fehler ist

Ein Betrag außerhalb der Grenzen des Zahlungswegs gibt ein gültiges Angebot mit einem limitError-Objekt zurück. Es ist kein Fehler: Es sind Informationen, die Ihre Oberfläche anzeigen sollte.

Antwortauszugjson
"limitError": { "code": "below_min", "limit": "20.00" }

Diesen Fall als HTTP-Fehler zu behandeln, würde Sie um den berechneten Betrag bringen und damit um die Fähigkeit, dem Benutzer zu sagen: „Sie sind 16,53 EUR unter dem Minimum für diese Auszahlungsmethode.“ Die Grenze gilt für den Nettobetrag, den der Empfänger erhält.

05

Wiederholen oder nicht

Drei Familien, drei Verhaltensweisen. Das Wiederholen eines Validierungsfehlers in einer Schleife füllt nur Ihre Protokolle.

Nie wiederholen

invalid_request, invalid_amount, unknown_asset_or_rail, asset_not_offered, unauthorized. Die Anfrage ist fehlerhaft: Eine unveränderte Wiederholung führt zum gleichen Ergebnis. Beheben Sie sie oder zeigen Sie den Grund an.

Mit Backoff wiederholen

rate_stale, rate_unavailable, quote_failed und jede Ratenbegrenzung. Warten Sie einige Sekunden, mit wachsendem Abstand zwischen den Versuchen. Füllen Sie die Wartezeit nicht mit einem zwischengespeicherten Kurs.

Eine Entscheidung anfordern

rail_not_open, quote_expired, beneficiary_rejected, country_not_served. Die Situation erfordert eine menschliche Entscheidung: Bieten Sie einen anderen Zahlungsweg, ein neues Angebot, korrigierte Details an.