Are you an LLM? Read llms.txt for a summary of the docs, or llms-full.txt for the full context.
Raise a dispute · Boson Protocol
Skip to content

Raise a dispute

After redemption, if the goods aren't what was promised, the buyer has a dispute window to raise a dispute. The exchange transitions to DISPUTED and the dispute state machine takes over.

SDK
await (await sdk.raiseDispute(exchangeId)).wait()

Mutual resolution

The simplest path is mutual: buyer and seller agree on a buyerPercent (0–100) of the escrow that goes to the buyer. Both sign an EIP-712 typed-data envelope; whichever submits the tx attaches both sigs.

See Recipes → Mutual dispute resolution for the full flow.

Escalation

If mutual resolution doesn't happen within the resolution window, the buyer can escalate. The dispute resolver then decides binding buyerPercent, takes their fee, and the exchange terminates.

await sdk.escalateDispute(exchangeId)

Retracting

The buyer can retract at any time before resolution / escalation. The exchange terminates with the seller getting everything (price + deposit).

await sdk.retractDispute(exchangeId)

Common gotchas

  • The dispute window starts at redemption. Not at commit. Watch disputeDuration on the offer.
  • Mutual sigs require both EIP-712 typed-data signatures to match. Use the SDK / MCP helpers; don't hand-build.
  • You can't dispute a non-redeemed exchange. Use cancel instead.

Next