Docs · Sellers
Dispute packet exports
LiveUpdated
Sellers. Written for merchants that receive agent orders.
A dispute packet is one object rendered six ways, because every dispute interface has a different free-text slot, a different file limit and a different window. Every export is generated today; you paste or upload it. Direct delivery into the vendors’ APIs comes next.
The exports
| Export | Goes into | Shape and limit |
|---|---|---|
stripe_evidence_text | Stripe evidence[uncategorized_text] | Text headed “Agent purchase under a signed mandate”; all Stripe text fields together may not exceed 150,000 characters and can be submitted once; the PDF may be attached separately up to 4.5 MB |
shopify_uncategorized_text | Shopify disputeEvidenceUpdate.uncategorizedText | Text |
chargeflow_payload | Chargeflow order and evidence | { order: {…}, additional_notes, policies: [{ policy_type: "agent_mandate", … }], refunds: [] }; PDF up to 5 MB |
justt_payload | Justt upsert transaction | { transactionCustomerFrontUserId, transactionOrderDeviceId, transactionOrderIpAddress, transactionCustomerDisplayedTransactionDescription, … }, the CE3.0 fields Justt exposes |
mastercard_context | The merchant-held agenticTransactionContext of the Mastercard merchant playbook | { agentIdentity, consumerIdentity, signatureProof, agentSession, purchaseIntent } plus a pattern_templates object with one template for each of the four agent dispute patterns (“I don’t remember buying this”, “this is not what I asked for”, a runaway agent, an agent mistake) |
klarna_pdf | Klarna disputes | The representment PDF; Klarna accepts PDF only, within a 21-day window |
| Representment PDF | Any interface with a file slot; Adyen accepts JPG, TIFF and PDF and rejects material containing a card number | One or two Letter pages, text only, no images, no card number anywhere |
Every export names the record id and the verify command, so whoever reads it, an issuer, an acquirer, a vendor, can run npx enruta-verify on the record without an Enruta account. When an export would exceed its interface’s limit it is trimmed and the full packet is linked.
Getting them
GET /v0/sellers/records/rec_01M25129GZMJXTNQ47TMZRDGHN/dispute-packet Authorization: Bearer enruta_slr_…
→ { "id": "dsp_…", "generated_by": "seller", "ce30": { … }, "exports": { "stripe_evidence_text": "…", "chargeflow_payload": { … }, … }, "packet_record_id": "rec_…" }
GET /v0/sellers/records/rec_01M25129GZMJXTNQ47TMZRDGHN/representment.pdf
→ application/pdfThe seller’s packet goes on the seller’s chain with chain.of the buyer’s record id and hash. Your store can build a “Dispute packet” panel from these two calls; the reference merchant’s admin does.
enruta disputes packet rec_01M25129GZMJXTNQ47TMZRDGHN --export stripe # prints stripe_evidence_text
enruta disputes packet rec_01M25129GZMJXTNQ47TMZRDGHN --export chargeflow # prints the JSON payload
enruta disputes packet rec_01M25129GZMJXTNQ47TMZRDGHN --pdf ./representment.pdf/disputes/{id} shows the CE3.0 checklist, one copy button per export, the PDF download and the outcome form. Seller organizations see the same on the order’s page.
Delivery
| Destination | Today | Planned |
|---|---|---|
| Stripe, Shopify | Copy the text into the dispute form; attach the PDF | Write-back with the PSP adapters (October 2026) |
| Chargeflow, Justt, Verifi | Paste the payload | A free field feed over their APIs from the first quarter of 2027 |
| Adyen, Checkout.com | Upload the PDF | Adyen Disputes API delivery with the Adyen adapter (January 2027) |
| Klarna | Upload the PDF within the 21-day window | Disputes API v4 delivery, unscheduled |
| Ethoca or Verifi alerts | When an alert arrives, the middleware’s labels already say whether the order was inside a signed limit and whether a person approved it | Automatic answer from the packet, unscheduled |
Nothing here claims to change the issuer’s decision. What changes is that a merchant has something to submit for an agent order that verifies, instead of a login timestamp and an address.