Exhibit

Win the disputes you should win.A Refund the ones you'd lose.B

Exhibit is the dispute desk for small PayPal sellers. It reads each dispute, pulls the order, payment and tracking behind it, and writes the response with every sentence pinned to the record that proves it.

Real sandbox case

PP-R-DCJ-10190321

Not received, $104.00, Maya Lindqvist

  1. 1Read the caseDisputes API
  2. 2Gather the recordsOrders, Payments, tracking, store
  3. 3Argue itOne sentence, one record
  4. 4Check every figureStruck if it isn't in the exhibit
  5. 5File it with PayPalEvidence and a Bates-stamped PDF

9 exhibits, 5 sentences, 0 struck. Argued by GPT-5.6 on Azure OpenAI, filed 5 Oct 2026.

Open this case
Halden Ceramics88 Kiln Row, Portland, OR
PP-R-DCJ-10190321

Re: not received, $104.00, order HC-85215

Fight it80% for the seller

HC-000001

PP-R-DCJ-10190321Not received$104.00

Maya Lindqvist, store order HC-85215

Cases argued
11
Sentences checked
52
Struck before filing
0
Filed with PayPal
7
On the desk now
$1,126.00

No claim without a record

A response that gets one date wrong hands the case to the buyer. So Exhibit never takes the model's word for a fact. Every amount, date, time, tracking number and id in a sentence has to appear in the exhibits that sentence cites, or the sentence is struck before filing.

The model argues. The records decide what it's allowed to say.

USPS recorded delivery on 27 Sep 2026, 13:00 in San Francisco, CA 94109.E

USPS recorded delivery on 25 Sep 2026, 13:00 in San Francisco, CA 94109.

Struck: 25 Sep 2026, 13:00 isn't in Exhibit E. We moved one date in the sentence above by a few days and ran the same checker the filing uses.

Every record becomes an exhibit

The case on the desk, as a PayPal reviewer would get it: 9 lettered records. The yellow tab is the buyer's claim. What comes from PayPal is quoted as the API returned it, with its id; what comes from the store says so.

How a case moves

  1. 1

    Read the case

    A buyer disputes a payment. Exhibit reads the case from PayPal: the reason, the amount, the deadline, and what PayPal will accept as a response.

    GET /v1/customer/disputes/{id}

  2. 2

    Gather the records

    It pulls the order, the payment and the issuer's address checks, the tracking on file, the carrier's scans, the emails and the listing. Each becomes a numbered exhibit.

    GET /v2/checkout/orders/{id} and /v2/payments/captures/{id}

  3. 3

    Argue it

    GPT-5.6 on Azure OpenAI weighs the exhibits, tallies the points for each side, recommends fighting or refunding, and writes the response with an exhibit mark on every sentence.

    Azure OpenAI Responses API, one forced function call

  4. 4

    Check every sentence

    Before anything is filed, each amount, date, time and id in the response is matched against the exhibits it cites. Anything unmatched is struck, and you see why.

    Runs on Exhibit's server, no model involved

  5. 5

    File it with PayPal

    You approve with one click. Exhibit files the evidence with tracking details and a Bates-stamped PDF, or accepts the claim and refunds, through the Disputes API.

    POST /provide-evidence or /accept-claim

What reaches PayPal

One multipart call to provide-evidence: the response as notes, the tracking or refund details, and a PDF with the response on page one and every exhibit on its own page, each Bates-stamped HC-000001 onwards, the way exhibits are marked in a filing.

When the call is to refund, it's accept-claim instead, and PayPal refunds the buyer.

Read the PDF for PP-R-DCJ-10190321

Built on the PayPal platform

Twelve calls, all in the free sandbox with test money. A case is opened, read, argued, filed and ruled on without anyone touching the PayPal website.

  1. OpeningPOST /v2/checkout/ordersThe buyer pays the shop by card: one call with intent CAPTURE, returns COMPLETED.
  2. OpeningPOST /v2/checkout/orders/{id}/trackThe shop adds the carrier and tracking number to the order.
  3. OpeningPOST /v2/payments/captures/{id}/refund“Charged twice” only: the duplicate charge is refunded in full, a real refund.
  4. OpeningPOST /v2/customer-support/process-chargebackThe card issuer files a chargeback (sandbox simulator, Visa and Mastercard reason codes).
  5. ReadingGET /v1/customer/disputesThe desk: every case on the account, soonest deadline first.
  6. ReadingGET /v1/customer/disputes/{id}Reason, amount, stage, deadline, and the links that say what PayPal will accept now.
  7. ReadingGET /v2/checkout/orders/{id}Items, ship-to address and trackers: Exhibits B and D.
  8. ReadingGET /v2/payments/captures/{id}Amount, fees, and the issuer's address and security-code checks: Exhibit C.
  9. ReadingGET /v2/payments/refunds/{id}A refund already made, as an exhibit of its own.
  10. FilingPOST /v1/customer/disputes/{id}/provide-evidenceThe response, tracking or refund details, and the Bates-stamped PDF, in one multipart call.
  11. FilingPOST /v1/customer/disputes/{id}/accept-claimA full refund when the records point the buyer's way.
  12. FilingPOST /v1/customer/disputes/{id}/adjudicateSandbox only: ask PayPal's simulator for a ruling once the case is under review.

It tells you when to give up

Fighting a case you'll lose costs a dispute fee and a customer. When the records point the other way (no tracking, a likely stolen card), Exhibit says so, shows the tally that decided it, and accepts the claim for you with one confirmed click.

Made for the phone in your apron pocket

Most sellers read a dispute notice on their phone. The brief reads the same there: tap an exhibit letter and the record opens in place under the sentence that cites it; the desk becomes a list of cards.

A case on a phone: the response with exhibit marks, and Exhibit E opened under its sentence

Try it as the seller

Open a case and Exhibit takes a real sandbox card payment, ships it, and has the card issuer file a chargeback through PayPal. Then it's on your desk.

Open a sandbox case