> ## Documentation Index
> Fetch the complete documentation index at: https://docs.payluk.ng/llms.txt
> Use this file to discover all available pages before exploring further.

# Release & resolve (disputes) overview

> Confirm delivery to release funds, raise disputes, and resolve them as the merchant.

This group covers the **end** of an escrow: the buyer releasing funds on delivery,
either party raising a dispute, and you (the merchant) resolving it. It also
includes the merchant-wide read feeds. See
[Escrow lifecycle](/concepts/escrow-lifecycle) for the states involved.

<Warning>
  Watch the `customer-id` header carefully here:

  * **Per-customer** routes (confirm, submit dispute, my disputes) **require** it.
  * **Merchant-wide** routes ([List all disputes](/api-reference/disputes/list-all-customers-disputes),
    [Escrow feeds](/api-reference/disputes/get-escrow-feeds),
    [Resolve dispute](/api-reference/disputes/resolve-dispute)) **must not** send it.
</Warning>

## Release & dispute (per-customer)

| Route                                                                           | Method & path                                   | What it does                                                                                                                                                                                                                                                                               |
| ------------------------------------------------------------------------------- | ----------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| [Buyer confirm payment](/api-reference/disputes/buyer-confirm-payment-standard) | `POST /v1/escrow/confirm-payment/{escrowId}`    | Buyer confirms delivery on a **standard** escrow; releases the full amount and closes it `COMPLETED`. **`customer-id` = buyer.**                                                                                                                                                           |
| [Submit dispute](/api-reference/disputes/submit-dispute)                        | `POST /v1/escrow/submit-dispute/{paymentToken}` | Open or reply to a dispute (escrow must be `OPENED`). **`multipart/form-data`** with a `message` and optional evidence `file`. **Only the buyer can open a dispute**; the seller can only respond once one is raised. **Milestone escrows can't be disputed.** **`customer-id` required.** |
| [List my disputes](/api-reference/disputes/list-my-disputes)                    | `GET /v1/escrow/dispute/get`                    | A customer's disputes, with optional `paymentToken` / date filters. **`customer-id` required.**                                                                                                                                                                                            |
| [Get dispute by escrow ID](/api-reference/disputes/get-dispute-by-escrow-id)    | `GET /v1/escrow/dispute/get/{escrowId}`         | The dispute thread for one escrow. **`customer-id` required.**                                                                                                                                                                                                                             |

## Merchant-wide (no `customer-id`)

| Route                                                                               | Method & path                                | What it does                                                                                                                                                     |
| ----------------------------------------------------------------------------------- | -------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [List all customers' disputes](/api-reference/disputes/list-all-customers-disputes) | `GET /v1/escrow/all-dispute`                 | Every dispute across all your customers, paginated.                                                                                                              |
| [Get escrow feeds](/api-reference/disputes/get-escrow-feeds)                        | `GET /v1/escrow/feeds`                       | All customers' escrows, with `status` / `customerId` / `categoryId` / date filters.                                                                              |
| [Resolve dispute](/api-reference/disputes/resolve-dispute)                          | `POST /v1/escrow/dispute/resolve/{escrowId}` | You settle the dispute. **`multipart/form-data`**: `resolution` text + `status` (`COMPLETED` releases to seller, `REFUNDED` returns to buyer) + optional `file`. |

## Resolution paths

<Steps>
  <Step title="Happy path">
    Buyer [confirms](/api-reference/disputes/buyer-confirm-payment-standard) →
    `COMPLETED`.
  </Step>

  <Step title="Contested">
    The buyer [opens a dispute](/api-reference/disputes/submit-dispute)
    (`DISPUTED`); the seller responds (`INVESTIGATING`). Standard escrows only.
  </Step>

  <Step title="Merchant decides">
    You [resolve](/api-reference/disputes/resolve-dispute) → `COMPLETED` (seller
    paid) or `REFUNDED` (buyer refunded).
  </Step>
</Steps>
