Fehlerantwort-Format
Alle API-Fehler folgen einem einheitlichen Format:
{
"success": false,
"error": "Human-readable error message",
"details": [
{
"field": "amount",
"message": "Must be a positive number"
}
]
}HTTP-Statuscodes
200OKAnfrage erfolgreich
201CreatedRessource erfolgreich erstellt
400Bad RequestUngültige Anfragedaten oder Validierungsfehler
401UnauthorizedFehlende oder ungültige Authentifizierung
403ForbiddenNicht berechtigt, auf diese Ressource zuzugreifen
404Not FoundRessource nicht gefunden
429Too Many RequestsRatenbegrenzung überschritten
500Internal ErrorServerfehler – bitte kontaktieren Sie den Support
| Code | Status | Beschreibung |
|---|---|---|
200 | OK | Anfrage erfolgreich |
201 | Created | Ressource erfolgreich erstellt |
400 | Bad Request | Ungültige Anfragedaten oder Validierungsfehler |
401 | Unauthorized | Fehlende oder ungültige Authentifizierung |
403 | Forbidden | Nicht berechtigt, auf diese Ressource zuzugreifen |
404 | Not Found | Ressource nicht gefunden |
429 | Too Many Requests | Ratenbegrenzung überschritten |
500 | Internal Error | Serverfehler – bitte kontaktieren Sie den Support |
Häufige Fehler
Validierungsfehler (400)
Ungültige EingabedatenDer Anfragekörper entspricht nicht dem erwarteten Schema. Prüfen Sie das -Array für spezifische Feldfehler.details
{
"success": false,
"error": "Invalid input data",
"details": [
{"path": ["amount"], "message": "Expected number, received string"},
{"path": ["token"], "message": "Invalid enum value. Expected 'USDC' | 'EURC'"}
]
}Ungültiger BetragDer Betrag muss zwischen 0,01 und 1.000.000 liegen.
Ungültige HändleradresseDie stimmt nicht mit der Wallet-Adresse des Händlers überein.toAddress
Authentifizierungsfehler (401/403)
Kein Token bereitgestelltGeschützter Endpunkt erfordert Authentifizierung. Fügen Sie den - oder -Header hinzu.AuthorizationX-API-Key
Ungültiger oder abgelaufener TokenJWT-Token ist abgelaufen (15 Min. Lebensdauer) oder fehlerhaft. Authentifizieren Sie sich erneut, um einen neuen Token zu erhalten.
Ungültiger API KeyAPI Key nicht gefunden oder wurde widerrufen. Stellen Sie sicher, dass Sie den richtigen Key verwenden.
Ressourcenfehler (404)
Händler nicht gefundenKein Händler mit der angegebenen ID vorhanden. Überprüfen Sie Ihre .merchantId
Zahlung nicht gefundenKeine Zahlung mit der angegebenen ID vorhanden. Prüfen Sie, ob die Zahlungs-ID korrekt ist.
Zahlung existiert bereitsEine Zahlung mit diesem existiert bereits. Die API gibt mit den vorhandenen Zahlungsdaten zurück. Dies verhindert Double-Spend-Angriffe.txHash200
API-Fehlercodes
Bei einem Fehler enthält die Antwort ein maschinenlesbares -Feld, das Sie für die programmatische Fehlerbehandlung verwenden können:code
{
"success": false,
"error": "Human-readable message",
"code": "RATE_LIMIT_EXCEEDED",
"retryAfter": 60
}Allgemeine Fehlercodes
RATE_LIMIT_EXCEEDED429Ratenbegrenzung für diesen Endpunkt überschritten
INVALID_UUID_FORMAT400ID-Parameter ist keine gültige UUID
MISSING_PARAMETER400Ein erforderlicher Parameter fehlt
2FA_REQUIRED403Vorgang erfordert aktivierte 2FA
2FA_CODE_REQUIRED4002FA-Code wurde nicht angegeben
2FA_INVALID4012FA-Code ist falsch oder abgelaufen
SELF_TRANSFER_NOT_ALLOWED400Auszahlung an Ihr eigenes Fivo-Wallet nicht möglich
INVALID_MERCHANT_ID400Merchant ID-Format ist ungültig
WEBHOOK_LIMIT_REACHED400Maximale Webhooks pro Händler erreicht
REFUND_WINDOW_EXPIRED400Rückerstattungsfenster (180 Tage) ist abgelaufen
REFUND_EXCEEDS_REMAINING400Betrag übersteigt den erstattungsfähigen Saldo
PAYMENT_NOT_COMPLETED400Zahlung hat nicht den Status "abgeschlossen"
NO_SOURCE_ADDRESS400Zahlung hat keine Quelladresse
REFUND_NOT_CANCELABLE400Rückerstattung hat nicht den Status "ausstehend"
| Code | HTTP | Beschreibung |
|---|---|---|
RATE_LIMIT_EXCEEDED | 429 | Ratenbegrenzung für diesen Endpunkt überschritten |
INVALID_UUID_FORMAT | 400 | ID-Parameter ist keine gültige UUID |
MISSING_PARAMETER | 400 | Ein erforderlicher Parameter fehlt |
2FA_REQUIRED | 403 | Vorgang erfordert aktivierte 2FA |
2FA_CODE_REQUIRED | 400 | 2FA-Code wurde nicht angegeben |
2FA_INVALID | 401 | 2FA-Code ist falsch oder abgelaufen |
SELF_TRANSFER_NOT_ALLOWED | 400 | Auszahlung an Ihr eigenes Fivo-Wallet nicht möglich |
INVALID_MERCHANT_ID | 400 | Merchant ID-Format ist ungültig |
WEBHOOK_LIMIT_REACHED | 400 | Maximale Webhooks pro Händler erreicht |
REFUND_WINDOW_EXPIRED | 400 | Rückerstattungsfenster (180 Tage) ist abgelaufen |
REFUND_EXCEEDS_REMAINING | 400 | Betrag übersteigt den erstattungsfähigen Saldo |
PAYMENT_NOT_COMPLETED | 400 | Zahlung hat nicht den Status "abgeschlossen" |
NO_SOURCE_ADDRESS | 400 | Zahlung hat keine Quelladresse |
REFUND_NOT_CANCELABLE | 400 | Rückerstattung hat nicht den Status "ausstehend" |
Blockchain-Fehlercodes
Diese Codes erscheinen im -Feld fehlgeschlagener Zahlungen:failure_reason
E001Unzureichendes Guthaben im Absender-Wallet
E002Transaktion auf der Blockchain zurückgewiesen
E003Netzwerk-Timeout während der Transaktion
E004Ungültige Wallet-Adresse
E005Gas-Schätzung fehlgeschlagen
E006Benutzer hat die Transaktion abgebrochen
E007CCTP-Attestierung fehlgeschlagen
E999Unbekannter Blockchain-Fehler
| Code | Beschreibung |
|---|---|
E001 | Unzureichendes Guthaben im Absender-Wallet |
E002 | Transaktion auf der Blockchain zurückgewiesen |
E003 | Netzwerk-Timeout während der Transaktion |
E004 | Ungültige Wallet-Adresse |
E005 | Gas-Schätzung fehlgeschlagen |
E006 | Benutzer hat die Transaktion abgebrochen |
E007 | CCTP-Attestierung fehlgeschlagen |
E999 | Unbekannter Blockchain-Fehler |
Ratenbegrenzung
Wenn Sie Ratenbegrenzungen überschreiten, erhalten Sie eine 429-Antwort mit zusätzlichen Headern:
HTTP/1.1 429 Too Many Requests
Retry-After: 60
X-RateLimit-Limit: 100
X-RateLimit-Remaining: 0
X-RateLimit-Reset: 1705312800
{
"success": false,
"error": "Rate limit exceeded",
"message": "Too many requests. Please retry after 1 minute.",
"code": "RATE_LIMIT_EXCEEDED",
"retryAfter": 60,
"context": "general"
}Ratenbegrenzungs-Header
| Header | Beschreibung |
|---|---|
Retry-After | Sekunden bis zum nächsten Versuch |
X-RateLimit-Limit | Maximale Anfragen im Zeitfenster |
X-RateLimit-Remaining | Verbleibende Anfragen im aktuellen Zeitfenster |
X-RateLimit-Reset | Unix-Zeitstempel, wann das Limit zurückgesetzt wird |
Ratenbegrenzungen nach Endpunkt
API Key-Endpunkte
200 req / 1 minute
Per: API Key
Allgemeine API
100 req / 1 minute
Per: IP
Zahlungserstellung (Widget)
20 req / 1 minute
Per: IP
Login
5 req / 5 minutes
Per: IP + E-Mail
Registrierung
3 req / 15 minutes
Per: IP
Passwort zurücksetzen
3 req / 15 minutes
Per: IP + E-Mail
2FA-Verifizierung
5 req / 5 minutes
Per: IP
Auszahlungen
10 req / 10 minutes
Per: IP
Kontaktformular
3 req / 15 minutes
Per: IP
| Endpunkt | Limit | Zeitfenster | Pro |
|---|---|---|---|
| API Key-Endpunkte | 200 req | 1 minute | API Key |
| Allgemeine API | 100 req | 1 minute | IP |
| Zahlungserstellung (Widget) | 20 req | 1 minute | IP |
| Login | 5 req | 5 minutes | IP + E-Mail |
| Registrierung | 3 req | 15 minutes | IP |
| Passwort zurücksetzen | 3 req | 15 minutes | IP + E-Mail |
| 2FA-Verifizierung | 5 req | 5 minutes | IP |
| Auszahlungen | 10 req | 10 minutes | IP |
| Kontaktformular | 3 req | 15 minutes | IP |
Best Practice
Retry-AfterKettenübergreifende Fehler
Kettenübergreifende Zahlungen werden clientseitig durch Bridge Kit im Widget abgewickelt. Wenn der Bridge-Vorgang fehlschlägt (z.B. Attestierungs-Timeout, Mint-Fehler), zeigt das Widget den Fehler direkt dem Kunden an. Diese Fehler erreichen nicht die Backend-API.
Wenn eine kettenübergreifende Zahlung nach der Burn-Transaktion fehlschlägt, kann der Kunde den Support mit seinem Transaktions-Hash kontaktieren. Fehlgeschlagene Zahlungen speichern den Fehler im -Feld, das über die Zahlungsstatus-API zugänglich ist.failure_reason
Betrugserkennung
Fivo enthält eine integrierte Betrugserkennung. Diese Fehler weisen auf potenzielle Angriffe hin:
Zahlungsbetrag-Verifizierung fehlgeschlagenDer angegebene Betrag stimmt nicht mit dem tatsächlichen Blockchain-Transaktionsbetrag überein. Dies könnte auf einen Versuch hindeuten, Zahlungsdatensätze zu manipulieren.
Sicherheit
Beispiel zur Fehlerbehandlung
So behandeln Sie API-Fehler korrekt in Ihrem Code:
async function createCheckoutSession(data) {
try {
const response = await fetch('https://api.fivo.finance/checkout/sessions', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'X-API-Key': process.env.FIVO_API_KEY
},
body: JSON.stringify(data)
});
const result = await response.json();
if (!response.ok) {
// Handle specific error codes
switch (response.status) {
case 400:
console.error('Validation error:', result.details);
throw new Error('Invalid session data');
case 401:
console.error('Authentication failed');
throw new Error('Please check your API key');
case 429:
const retryAfter = response.headers.get('Retry-After');
console.log(`Rate limited. Retry after ${retryAfter}s`);
throw new Error('Too many requests');
default:
throw new Error(result.error || 'Unknown error');
}
}
return result.data;
} catch (error) {
console.error('Checkout session failed:', error.message);
throw error;
}
}Weiterhin Probleme?
Wenn Sie auf einen hier nicht aufgeführten Fehler stoßen, kontaktieren Sie bitte den Support mit:
- Der vollständigen Fehlerantwort
- Anfragedetails (Endpunkt, Methode, Body)
- Zahlungs-ID oder Transaktions-Hash (falls zutreffend)
- Zeitstempel, wann der Fehler aufgetreten ist