> ## 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.

# Changelog

> New features, improvements, and fixes to the Payluk merchant API.

<Update label="July 24, 2026" description="Vault escrow" tags={["Escrow", "New"]}>
  ## Vault escrow: merchant-only pooled stakes

  A new escrow type for competition-style products: two or more of your customers
  each stake an amount into one pot, and you declare the winner, who receives the
  whole pot minus the platform fee.

  * New settlement type **`VAULT`**, alongside `STANDARD` and `MILESTONE`.
  * Four merchant-only endpoints under `/v1/escrow/vault/*`:
    [create](/api-reference/vault-escrow/create-vault-escrow),
    [declare winner](/api-reference/vault-escrow/declare-vault-winner),
    [cancel](/api-reference/vault-escrow/cancel-vault-escrow), and
    [get](/api-reference/vault-escrow/get-vault-escrow).
  * Vaults are **created already funded**: every stake is verified against the
    participant's main balance and locked into their own escrow balance in one
    all-or-nothing call.
  * **Tournament mode**: any number of participants from 2 up.
  * The platform fee is collected **whether the vault completes or is
    cancelled**: cancellation refunds each stake minus its pro-rata fee share.
  * Escrow responses now carry `participants[]` and `winnerId` fields (populated
    for vault escrows only).

  See [Vault escrows](/concepts/vault-escrows) for the full concept.

  ## Milestone due dates must be in the future

  `dueDate` on milestone creation, editing, and conversion is now rejected unless
  it parses to a future date.
</Update>

<Update label="July 18, 2026" description="Milestone endpoints on the merchant API" tags={["Escrow"]}>
  ## Milestone escrow endpoints for merchants

  The milestone escrow surface is now available on the merchant (`/v1`) API:

  * [Create milestone escrow](/api-reference/milestone-escrow/create-milestone-escrow): `POST /v1/escrow/milestone/create`
  * [Edit milestone escrow](/api-reference/milestone-escrow/edit-milestone-escrow): `PUT /v1/escrow/milestone/edit/{paymentToken}`
  * [Convert to milestone](/api-reference/milestone-escrow/convert-to-milestone): `PUT /v1/escrow/milestone/convert/{paymentToken}`
  * [Get milestones](/api-reference/milestone-escrow/get-milestones): `GET /v1/escrow/milestone/{paymentToken}`
  * [Confirm milestone](/api-reference/milestone-escrow/confirm-milestone): `POST /v1/escrow/milestone/confirm/{escrowId}/{milestoneId}`
</Update>

<Update label="June 29, 2026" description="Sequential milestone release" tags={["Escrow"]}>
  ## Milestones now release in order

  A buyer can only confirm the **earliest still-pending** milestone; milestone 3
  cannot be released before 1 and 2. Dispute-driven settlement (release-remaining
  or refund) still settles every remaining milestone at once.
</Update>

<Update label="June 24, 2026" description="Dedicated virtual accounts" tags={["Payments"]}>
  ## Dedicated virtual accounts for Nigerian customers

  [Generate virtual account](/api-reference/payments/generate-virtual-account) now
  issues a **permanent, dedicated** virtual account for merchant customers who
  supplied a BVN. Customers without a BVN keep receiving 24-hour temporary
  accounts. Virtual accounts remain Nigerian-only.
</Update>

<Update label="June 22, 2026" description="Milestone escrows introduced" tags={["Escrow", "New"]}>
  ## Milestone escrows

  Escrows can now hold the full amount upfront and release it **in parts** as the
  buyer confirms each milestone; see
  [Milestone escrows](/concepts/milestone-escrows).

  * New settlement type **`MILESTONE`**; escrow responses carry a `milestones[]`
    array.
  * At least 2 milestones, positive integer amounts summing to the escrow
    `amount`, and `whoPays: buyer` only.
  * Each milestone may name an optional **`customerId` beneficiary** who receives
    that milestone's funds instead of the seller.
  * The escrow completes automatically when the final milestone is released.
</Update>

<Update label="May 10, 2026" description="Payments & disputes improvements" tags={["Payments", "Disputes"]}>
  ## Batch payment verification and dispute lookup

  * [Verify payment](/api-reference/payments/verify-payment) accepts multiple
    `references` in one call, and escrow payment intents support **multiple escrow
    IDs**, so a buyer can pay several escrows at once.
  * New endpoint: [Get dispute by escrow ID](/api-reference/disputes/get-dispute-by-escrow-id).
  * Escrow listings accept a **`status`** filter.
</Update>
