Guthaben
Lesen Sie Ihr verfügbares und auszahlbares Guthaben.
Das Sandbox-Guthaben ist virtuell. Sandbox-Zahlungen wechseln sofort zu available_amount, ohne ein Wertstellungsdatum abzuwarten, sodass Sie Auszahlungen gleich testen können.
Das Live-Guthaben besteht aus echten Zahlungseingängen. Eine Zahlung wartet in pending_settlement_amount bis zu ihrem Wertstellungsdatum und wechselt dann zu available_amount.
Guthaben abrufen
Antwort · 200
Guthabenübersicht.
Balance
Antwort · Beispiel
{
"currency_code": "USD",
"available_amount": "48200.00",
"pending_settlement_amount": "250.00",
"environment": "live"
}
Mögliche Fehler
GET/api/v3/balance/withdrawableAuszahlbares Guthaben abrufen
Antwort · 200
Übersicht des auszahlbaren Guthabens.
WithdrawableBalance
Antwort · Beispiel
{
"currency_code": "USD",
"withdrawable_amount": "48200.00",
"can_withdraw": true,
"environment": "live"
}
Mögliche Fehler
Rückerstattungen
Fordern Sie eine Rückerstattung oder Stornierung an und verfolgen Sie sie.
In Live gilt: HTTP 202 bedeutet, dass die Anfrage entgegengenommen wurde, nicht dass die Rückerstattung abgeschlossen ist. Verfolgen Sie das Ergebnis über die Status-Endpunkte: requested, dann awaiting_provider_manual, dann completed; oder rejected / cancelled.
In der Sandbox wird eine Anfrage sofort abgeschlossen (standardmäßig completed). Senden Sie X-CAV-Sandbox-Scenario: rejected, um eine abgelehnte Rückerstattung zu testen.
Live-Anfragen werden geprüft. Verfolgen Sie die Rückabwicklung bis completed, rejected oder cancelled. Nur ein abgeschlossener refund sendet payment.refunded; einen void verfolgen Sie mit GET.
POST/api/v3/refundsIdempotency-Key erforderlichRückerstattung oder Stornierung beantragen
Parameter
Anfrage-Body
Anfrage-Body · Beispiel
{
"payment_code": "ab34cdef",
"operation_type": "refund",
"reason": "Customer cancelled the order."
}
Antwort · 202
Rückabwicklung angefordert. Sie wird geprüft und von Hand an den Anbieter übermittelt. Mit einem Sandbox-Schlüssel wird das simulierte Ergebnis zurückgegeben (environment sandbox); auch eine idempotente Wiederholung liefert 202.
Reversal
Antwort · Beispiel
{
"id": "9B2E6F3A-0C1D-4E5F-8A7B-000000000001",
"operation": "refund",
"status": "requested",
"amount": "250.00",
"currency": "USD",
"reason": "Customer cancelled the order.",
"provider_reference": "string",
"provider_refunded_at": "2026-09-26T09:00:00.000Z",
"created_at": "2026-09-26T09:00:00.000Z",
"updated_at": "2026-09-26T09:00:00.000Z",
"payment_code": "ab34cdef",
"environment": "live"
}
Mögliche Fehler
Rückerstattungen auflisten
Parameter
Antwort · 200
Paginierte Rückerstattungen.
Antwort · Beispiel
{
"data": [
{
"id": "9B2E6F3A-0C1D-4E5F-8A7B-000000000001",
"operation": "refund",
"status": "requested",
"amount": "250.00",
"currency": "USD",
"reason": "Customer cancelled the order.",
"provider_reference": "string",
"provider_refunded_at": "2026-09-26T09:00:00.000Z",
"created_at": "2026-09-26T09:00:00.000Z",
"updated_at": "2026-09-26T09:00:00.000Z",
"payment_code": "ab34cdef",
"environment": "live"
}
],
"meta": {
"page": 1,
"per_page": 20,
"total": 1,
"total_pages": 1
}
}
Mögliche Fehler
Status einer Rückerstattung abrufen
Parameter
Antwort · 200
Die Rückabwicklung.
Objekt: Reversal (Felder siehe Rückerstattung oder Stornierung beantragen).
Antwort · Beispiel
{
"id": "9B2E6F3A-0C1D-4E5F-8A7B-000000000001",
"operation": "refund",
"status": "requested",
"amount": "250.00",
"currency": "USD",
"reason": "Customer cancelled the order.",
"provider_reference": "string",
"provider_refunded_at": "2026-09-26T09:00:00.000Z",
"created_at": "2026-09-26T09:00:00.000Z",
"updated_at": "2026-09-26T09:00:00.000Z",
"payment_code": "ab34cdef",
"environment": "live"
}
Mögliche Fehler
Benachrichtigung
Wird eine Rückerstattung abgeschlossen, geht eine signierte Benachrichtigung payment.refunded an die Webhook-URL der Zahlung. Header, Signatur und Wiederholungen entsprechen den Webhooks. Ein void sendet keine Benachrichtigung.
Signierte Benachrichtigung payment.refunded an die Händler-URL
Anfrage-Body
Anfrage-Body · Beispiel
{
"event_id": "B5D4E456-EFC1-4EC2-A613-D64A16E45BD5",
"event_type": "payment.refunded",
"environment": "sandbox",
"occurred_at": "2026-09-28T12:00:00.000Z",
"refund": {
"public_id": "A1B2C3D4-E5F6-4789-8ABC-DEF012345678",
"status": "completed",
"amount": "100.00",
"currency_code": "USD",
"completed_at": "2026-09-28T12:00:00.000Z"
},
"payment": {
"public_id": "11111111-2222-4333-8444-555555555555",
"code": "ab34cdef",
"merchant_reference": "SIP-2026-0001"
},
"order": {
"public_id": "66666666-7777-4888-8999-AAAAAAAAAAAA"
}
}
Auszahlungen
Fordern Sie eine USDT-Auszahlung (TRC20) an und verfolgen Sie sie.
In Live gilt: HTTP 201 bedeutet, dass die Anfrage angenommen und der Betrag reserviert wurde, nicht dass die USDT gesendet wurden. Prüfen Sie status und tx_hash und kontrollieren Sie die Adresse doppelt: Eine Überweisung auf der Chain lässt sich nicht rückgängig machen.
Eine Sandbox-Auszahlung belastet das virtuelle Guthaben und sendet nie etwas auf die Chain. Es gelten dieselben Regeln wie in der Live-Umgebung, einschließlich Mindestbetrag, Tageslimit und Umrechnungskurs. Senden Sie X-CAV-Sandbox-Scenario: rejected, um eine Ablehnung zu testen. Die Sandbox akzeptiert die TRON-Nulladresse als Ziel; die Live-Umgebung lehnt Burn-Adressen mit 1000030 ab.
Mindestbetrag und Tageslimit werden von Manuell pro Konto festgelegt; unterhalb des Mindestbetrags liefert die API 9000019, oberhalb des Limits 9000021. In der Live-Umgebung sendet ein Operator von Manuell die USDT und trägt tx_hash ein (sent) oder lehnt die Anfrage mit einer Begründung ab (rejected); der Betrag geht dann an Ihr Guthaben zurück.
POST/api/v3/withdrawalsIdempotency-Key erforderlichUSDT-Auszahlung beantragen
Parameter
Anfrage-Body
Anfrage-Body · Beispiel
{
"amount": "250.00",
"address": "REPLACE_WITH_YOUR_TRON_ADDRESS",
"address_acknowledged": true
}
Antwort · 201
Auszahlung angefordert. Das Guthaben wird reserviert; der On-Chain-Versand erfolgt von Hand. Mit einem Sandbox-Schlüssel wird das simulierte Ergebnis zurückgegeben (environment sandbox); auch eine idempotente Wiederholung liefert 201.
Withdrawal
Antwort · Beispiel
{
"id": "7F0C2A94-3B1E-4D58-9A6F-1C2D3E4F5A6B",
"status": "requested",
"amount": "250.00",
"currency": "USD",
"asset": "USDT",
"network": "TRC20",
"address": "REPLACE_WITH_YOUR_TRON_ADDRESS",
"usdt_amount": "249.000000",
"tx_hash": null,
"rejection_reason": null,
"requested_at": "2026-09-26T09:30:00.000Z",
"processed_at": null,
"created_at": "2026-09-26T09:30:00.000Z",
"environment": "live"
}
Mögliche Fehler
Auszahlungen auflisten
Parameter
Antwort · 200
Paginierte Auszahlungen.
Antwort · Beispiel
{
"data": [
{
"id": "7F0C2A94-3B1E-4D58-9A6F-1C2D3E4F5A6B",
"status": "requested",
"amount": "250.00",
"currency": "USD",
"asset": "USDT",
"network": "TRC20",
"address": "REPLACE_WITH_YOUR_TRON_ADDRESS",
"usdt_amount": "249.000000",
"tx_hash": null,
"rejection_reason": null,
"requested_at": "2026-09-26T09:30:00.000Z",
"processed_at": null,
"created_at": "2026-09-26T09:30:00.000Z",
"environment": "live"
}
],
"meta": {
"page": 1,
"per_page": 20,
"total": 1,
"total_pages": 1
}
}
Mögliche Fehler
GET/api/v3/withdrawals/{id}Status einer Auszahlung abrufen
Parameter
Antwort · 200
Die Auszahlung.
Objekt: Withdrawal (Felder siehe USDT-Auszahlung beantragen).
Antwort · Beispiel
{
"id": "7F0C2A94-3B1E-4D58-9A6F-1C2D3E4F5A6B",
"status": "requested",
"amount": "250.00",
"currency": "USD",
"asset": "USDT",
"network": "TRC20",
"address": "REPLACE_WITH_YOUR_TRON_ADDRESS",
"usdt_amount": "249.000000",
"tx_hash": null,
"rejection_reason": null,
"requested_at": "2026-09-26T09:30:00.000Z",
"processed_at": null,
"created_at": "2026-09-26T09:30:00.000Z",
"environment": "live"
}
Mögliche Fehler
Rückbuchungen
Listen Sie Rückbuchungen auf und reichen Sie Ihre Nachweise ein.
Streitfälle kommen von den Kartennetzwerken, daher legen Sie in der Sandbox selbst einen Test-Streitfall mit POST /api/v3/sandbox/disputes an. Siehe Kontovorgänge testen.
Manuell erfasst einen Streitfall, sobald die Bank ihn meldet. Der strittige Betrag wird von Ihrem Guthaben abgezogen (das Guthaben kann negativ werden, und can_withdraw wird false) und wieder gutgeschrieben, wenn Sie gewinnen. Senden Sie Ihre Nachweise vor evidence_due_at; ein neuer Idempotency-Key ersetzt Ihre frühere Notiz, solange der Streitfall offen ist.
Streitfälle auflisten
Parameter
Antwort · 200
Paginierte Streitfälle.
Dispute
Antwort · Beispiel
{
"data": [
{
"id": "9B2E6F3A-0C1D-4E5F-8A7B-000000000001",
"service": "api",
"amount": "250.00",
"currency": "USD",
"status": "open",
"reason": "fraud",
"reason_note": "string",
"occurred_on": "2026-09-26",
"evidence_due_at": "2026-09-26T09:00:00.000Z",
"evidence_submitted_at": "2026-09-26T09:00:00.000Z",
"merchant_evidence_note": "string",
"merchant_evidence_submitted_at": "2026-09-26T09:00:00.000Z",
"resolved_at": "2026-09-26T09:00:00.000Z",
"created_at": "2026-09-26T09:00:00.000Z",
"payment_code": "ab34cdef",
"environment": "live"
}
],
"meta": {
"page": 1,
"per_page": 20,
"total": 1,
"total_pages": 1
}
}
Mögliche Fehler
Streitfall abrufen
Parameter
Antwort · 200
Der Streitfall.
Objekt: Dispute (Felder siehe Streitfälle auflisten).
Antwort · Beispiel
{
"id": "9B2E6F3A-0C1D-4E5F-8A7B-000000000001",
"service": "api",
"amount": "250.00",
"currency": "USD",
"status": "open",
"reason": "fraud",
"reason_note": "string",
"occurred_on": "2026-09-26",
"evidence_due_at": "2026-09-26T09:00:00.000Z",
"evidence_submitted_at": "2026-09-26T09:00:00.000Z",
"merchant_evidence_note": "string",
"merchant_evidence_submitted_at": "2026-09-26T09:00:00.000Z",
"resolved_at": "2026-09-26T09:00:00.000Z",
"created_at": "2026-09-26T09:00:00.000Z",
"payment_code": "ab34cdef",
"environment": "live"
}
Mögliche Fehler
POST/api/v3/disputes/{id}/evidenceIdempotency-Key erforderlichNachweis zum Streitfall einreichen
Parameter
Anfrage-Body
Anfrage-Body · Beispiel
{
"note": "Order 4821 was delivered on 2026-09-25. Carrier reference ABC123."
}
Antwort · 200
Nachweis erfasst; der Status des Streitfalls ändert sich nicht. Eine identische idempotente Wiederholung liefert den ursprünglichen Antwort-Body.
Objekt: Dispute (Felder siehe Streitfälle auflisten).
Antwort · Beispiel
{
"id": "9B2E6F3A-0C1D-4E5F-8A7B-000000000001",
"service": "api",
"amount": "250.00",
"currency": "USD",
"status": "open",
"reason": "fraud",
"reason_note": "string",
"occurred_on": "2026-09-26",
"evidence_due_at": "2026-09-26T09:00:00.000Z",
"evidence_submitted_at": "2026-09-26T09:00:00.000Z",
"merchant_evidence_note": "string",
"merchant_evidence_submitted_at": "2026-09-26T09:00:00.000Z",
"resolved_at": "2026-09-26T09:00:00.000Z",
"created_at": "2026-09-26T09:00:00.000Z",
"payment_code": "ab34cdef",
"environment": "live"
}
Mögliche Fehler
Zustellungen verwalten
Prüfen Sie Webhook-Zustellungen und wiederholen Sie fehlgeschlagene.
Die Adresse für Benachrichtigungen wird je Umgebung unter “API-Schlüssel und Integration” festgelegt. Die folgenden Endpunkte listen Zustellungen auf und reihen fehlgeschlagene erneut ein.
GET/api/v3/webhooks/deliveriesWebhook-Zustellungen auflisten
Parameter
Antwort · 200
Paginierte Zustellungen.
WebhookDelivery
Antwort · Beispiel
{
"data": [
{
"id": "9B2E6F3A-0C1D-4E5F-8A7B-000000000001",
"event": "payment.paid",
"status": "pending",
"payment_code": null,
"attempt_count": 1,
"last_status_code": null,
"last_error": null,
"last_error_code": null,
"last_error_message": null,
"next_attempt_at": null,
"delivered_at": null,
"created_at": "2026-09-26T09:00:00.000Z"
}
],
"meta": {
"page": 1,
"per_page": 20,
"total": 1,
"total_pages": 1
}
}
Mögliche Fehler
GET/api/v3/webhooks/deliveries/{id}Webhook-Zustellung abrufen
Parameter
Antwort · 200
Die Zustellung, einschließlich URL und Payload.
WebhookDeliveryDetail
Antwort · Beispiel
{
"id": "9B2E6F3A-0C1D-4E5F-8A7B-000000000001",
"event": "payment.paid",
"status": "pending",
"payment_code": null,
"attempt_count": 1,
"last_status_code": null,
"last_error": null,
"last_error_code": null,
"last_error_message": null,
"next_attempt_at": null,
"delivered_at": null,
"created_at": "2026-09-26T09:00:00.000Z",
"url": "string",
"payload": null
}
Mögliche Fehler
POST/api/v3/webhooks/deliveries/{id}/retryIdempotency-Key erforderlichFehlgeschlagene Zustellung erneut versuchen
Parameter
Antwort · 200
Fehlgeschlagene Zustellung erneut eingereiht. Eine identische idempotente Wiederholung liefert die ursprüngliche Antwort zur Einreihung, ohne einen weiteren Versuch auszulösen.
Objekt: WebhookDeliveryDetail (Felder siehe Webhook-Zustellung abrufen).
Antwort · Beispiel
{
"id": "9B2E6F3A-0C1D-4E5F-8A7B-000000000001",
"event": "payment.paid",
"status": "pending",
"payment_code": null,
"attempt_count": 1,
"last_status_code": null,
"last_error": null,
"last_error_code": null,
"last_error_message": null,
"next_attempt_at": null,
"delivered_at": null,
"created_at": "2026-09-26T09:00:00.000Z",
"url": "string",
"payload": null
}
Mögliche Fehler
Zustellfehler
last_error ist ein Legacy-Feld; verwenden Sie in neuen Integrationen last_error_code.
Dienststatus und Wartung
Einzelne Dienste können vorübergehend in Wartung genommen werden. Betroffen sind nur neue Vorgänge; dieser Abschnitt zeigt, was stoppt, was weiterläuft und wie Sie den Status abfragen.
GET/api/v3/service-statusÖffentlichDienststatus abrufen
Antwort · 200
Dienste in Wartung (die Liste kann leer sein).
ServiceStatusItem
Antwort · Beispiel
{
"data": [
{
"service": "api_collection",
"until": "2026-10-01T12:00:00Z",
"note": "Planned maintenance."
}
]
}
Weitere Antworten
429Anfragelimit überschritten.
Mögliche Fehler
Kontovorgänge testen
Guthaben, Rückerstattungen, Auszahlungen und Streitfälle funktionieren in der Sandbox mit denselben Endpunkten, Bodys und Fehlercodes wie live.
- Sandbox-Zahlungen wechseln sofort zu
available_amount, ohne ein Wertstellungsdatum abzuwarten. - Rückerstattungs- und Auszahlungsanfragen werden sofort abgeschlossen. Der Header
X-CAV-Sandbox-Scenario wählt das Ergebnis. - Streitfälle kommen von der Bank, daher legen Sie in der Sandbox einen mit
POST /api/v3/sandbox/disputes an.
Prüfen Sie Tests zu Rückerstattungen, Auszahlungen und Streitfällen unter “Sandbox-Vorgänge”.
Ergebnis wählen
Rückerstattungs- und Auszahlungsanfragen verwenden dieselben Endpunkte und Bodys wie in der Live-Umgebung. Um das Ergebnis zu wählen, fügen Sie den optionalen Header X-CAV-Sandbox-Scenario hinzu. Er ist nicht Teil der Signatur. Mit einem Live-Schlüssel wird der Header mit 422 (1000001) abgelehnt, damit aus einem Test nie eine echte Anfrage werden kann.
X-CAV-Sandbox-Scenario
X-CAV-Sandbox-Scenario: rejected
Test-Streitfall
Streitfälle kommen von den Kartenorganisationen und können live nicht von Ihrer Seite ausgelöst werden. Dies ist der einzige reine Sandbox-Endpunkt: Er erstellt einen Test-Streitfall für eine bezahlte Sandbox-Zahlung und gibt dasselbe Dispute-Objekt zurück wie die Live-Umgebung.
POST/api/v3/sandbox/disputesIdempotency-Key erforderlichSandbox-Streitfall für eine bezahlte Sandbox-Zahlung erstellen
Anfrage-Body
Anfrage-Body · Beispiel
{
"payment_code": "ab34cdef",
"scenario": "open",
"reason": "fraud"
}
Antwort · 201
Streitfall erfasst; eine idempotente Wiederholung liefert denselben Streitfall.
Objekt: Dispute (Felder siehe Streitfälle auflisten).
Antwort · Beispiel
{
"id": "B5D4E456-EFC1-4EC2-A613-D64A16E45BD5",
"service": "api",
"amount": "250.00",
"currency": "USD",
"status": "open",
"reason": "fraud",
"reason_note": null,
"occurred_on": "2026-09-30",
"evidence_due_at": "2026-10-07T09:00:00.000Z",
"evidence_submitted_at": null,
"merchant_evidence_note": null,
"merchant_evidence_submitted_at": null,
"resolved_at": null,
"created_at": "2026-09-30T09:00:00.000Z",
"payment_code": "ab34cdef",
"environment": "sandbox"
}
Mögliche Fehler