# Dispute delivery

Send a dispute packet straight into Stripe, Shopify, Adyen, Klarna, Chargeflow or Justt, in each interface’s own evidence fields, instead of pasting it.

Status: Live · Updated: 2026-09-14
For: seller
Source: https://enruta.ai/docs/dispute-delivery

A [dispute packet](https://enruta.ai/docs/dispute-packet) is generated from the sealed record in one call. Delivery takes it the last step: into the interface where the dispute is fought, in that interface’s own evidence fields, with the representment PDF attached where the interface accepts files.

### POST /v0/disputes/{id}/deliveries

```json
{ "target": "stripe", "connection_id": "psc_01M3E1…", "dispute_ref": "dp_1S8…", "submit": true }
```

`target` is `stripe`, `shopify`, `adyen`, `klarna`, `chargeflow` or `justt`. `connection_id` names the [PSP connection](https://enruta.ai/docs/psp-connections) to deliver through when the target is your PSP; `dispute_ref` names the dispute at the target (a Stripe `dp_…`, a Shopify dispute, an Adyen `pspReference`) when the packet does not already know it; `submit: false` places the evidence without submitting it for review. `GET` on the same path lists the deliveries made. The answer is the delivery’s status: `delivered`, `partner_access_required`, `missing_credentials` or `failed`, with the target’s own reference and each step it took, never the credentials.

## Targets

| Target | Where it lands | Status |
|---|---|---|
| `stripe` | The dispute’s evidence: the text in the evidence fields, the PDF as a file, submitted for review | Live |
| `shopify` | `disputeEvidenceUpdate` on the Shopify dispute | Code complete; needs a Shopify app that Shopify has approved |
| `adyen` | `supplyDefenseDocument`, then `defendDispute` | Code complete; needs your Adyen account |
| `klarna` | Klarna’s Disputes API v4, as a PDF inside the 21-day window | Code complete; needs your Klarna account, enrolled in the Disputes API |
| `chargeflow` | Chargeflow’s evidence intake | Code complete; needs your Chargeflow account |
| `justt` | Justt’s upsert-transaction call | Code complete; needs your Justt account |

> A delivery without what its target needs (your account’s credentials, or for Shopify an approved app) answers `missing_credentials` or `partner_access_required` and changes nothing; the export is still there to paste or upload.

## What is delivered

- The export for that interface (`stripe_evidence_text`, `shopify_uncategorized_text`, `chargeflow_payload`, `justt_payload`, the PDF for Klarna), from the packet’s [exports](https://enruta.ai/docs/dispute-packet-exports).
- The representment PDF wherever the interface takes files.
- The record id and the verify command, so whoever reads the case can run `npx enruta-verify` on the record.

## For platforms

A platform that serves many merchants can subscribe to the same fields as a [feed](https://enruta.ai/docs/dispute-field-feeds), in Chargeflow, Justt or Visa CE3.0 shape, instead of delivering one packet at a time.
