> ## Documentation Index
> Fetch the complete documentation index at: https://docs.getovra.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Disputes

> Chargebacks gegen Agent-Transaktionen einreichen und lösen.

Ein Dispute ist eine formelle Anfechtung gegen eine settled Transaktion. Nützlich wenn Ware nicht ankommt, der Merchant überberechnet, oder der Agent trotz Policy etwas Unautorisiertes gezahlt hat. Jede Transaktion kann maximal einen offenen Dispute haben. Dispute-Lifecycle ist plan-tier-gated.

## Reason-Codes

| Code                   | Bedeutung                                |
| ---------------------- | ---------------------------------------- |
| `unauthorized`         | Spend nicht von Policy autorisiert       |
| `fraud`                | Verdacht auf betrügerische Transaktion   |
| `not_received`         | Ware oder Service nie geliefert          |
| `not_as_described`     | Geliefert aber matcht nicht Vereinbarung |
| `duplicate`            | Mehrfach belastet                        |
| `incorrect_amount`     | Betrag weicht vom vereinbarten Preis ab  |
| `canceled`             | Cancelled aber trotzdem belastet         |
| `credit_not_processed` | Refund nicht applied                     |

## Dispute einreichen

```bash theme={}
curl -X POST https://api.getovra.com/disputes \
  -H "Authorization: Bearer $OVRA_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{
    "transactionId": "tx_...",
    "reason": "not_received",
    "description": "Order vor 10 Tagen aufgegeben, Tracking zeigt keine Bewegung"
  }'
```

Response:

```json theme={}
{
  "id": "dsp_...",
  "transactionId": "tx_...",
  "reason": "not_received",
  "status": "open",
  "createdAt": "2026-04-20T12:34:56Z"
}
```

## Evidence anhängen

```bash theme={}
curl -X POST https://api.getovra.com/disputes/dsp_.../evidence \
  -H "Authorization: Bearer $OVRA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "type": "communication",
    "description": "Email-Thread mit Merchant-Support",
    "fileUrl": "https://storage.example.com/evidence/abc.pdf"
  }'
```

Evidence-Typen: `receipt` · `shipping` · `communication` · `cancellation` · `refund_policy` · `product_description` · `other`. File-URLs müssen HTTPS sein und SSRF-safe (keine Private-IPs).

## Lösen

```bash theme={}
curl -X PATCH https://api.getovra.com/disputes/dsp_... \
  -H "Authorization: Bearer $OVRA_API_KEY" \
  -d '{ "status": "resolved" }'
```

Status auf `resolved` oder `rejected` setzen. Nach Schließung sind keine weiteren Mutationen erlaubt.

## Webhooks

| Event              | Wann                                      |
| ------------------ | ----------------------------------------- |
| `dispute.created`  | Eingereicht                               |
| `dispute.updated`  | Evidence hinzugefügt oder Felder geändert |
| `dispute.resolved` | Geschlossen (resolved oder rejected)      |

## Plan-Tier-Gating

| Plan       | Dispute-Management               |
| ---------- | -------------------------------- |
| Free       | –                                |
| Starter    | Nur View                         |
| Business   | Voll (filen + verwalten + lösen) |
| Enterprise | Voll + automated Workflows       |

## Surfaces

| Surface   | Capability                              |
| --------- | --------------------------------------- |
| REST      | `/disputes`, `/disputes/:id/evidence`   |
| SDK       | `ovra.disputes.*`                       |
| MCP       | `ovra_dispute` (action: `get` · `file`) |
| Dashboard | `/dashboard/disputes`                   |

## Weiter

<CardGroup cols={2}>
  <Card title="Transaktionen" icon="receipt" href="/de/concepts/transactions">
    Was du anfechtest.
  </Card>

  <Card title="Intelligenz" icon="chart-line" href="/de/concepts/intelligence">
    Audit-Trail und Access-Events für Dispute-Investigations.
  </Card>
</CardGroup>
