Disputes

Since a partner can originate a trade for both its buyer and seller, every dispute action requires an explicit partyfield — the API can't infer which side is disputing.

Open a dispute

POST /api/partner/v1/trades/{id}/dispute/

{
  "reason": "Item arrived damaged",
  "category": "quality_issue",
  "party": "buyer"
}

reason must be at least 20 characters long.

Propose a resolution

POST /api/partner/v1/trades/{id}/proposals/

{
  "outcome": "split",
  "split_buyer_pct": "50.00",
  "party": "buyer"
}

Valid outcomes: buyer_win, seller_win, split.

Respond to a proposal

POST /api/partner/v1/trades/{id}/proposals/{proposal_id}/respond/

{
  "accept": true,
  "party": "buyer"
}

Accepting a proposal triggers the fund split automatically — there's no separate release step. Rejecting leaves the dispute open for a new proposal.

What partners can't do

A dispute can only be resolved by mutual proposal-and-accept between the two parties. Direct admin resolution (an Intasef staff member manually deciding an outcome) is never reachable through the partner API — that's a deliberate trust boundary, not a missing endpoint.