@cdr-kit/react/Components/EscrowDeliveryConfirm

<EscrowDeliveryConfirm>

Buyer-side flow for ConditionalEscrowCondition: pay → confirm delivery → seller paid + buyer reads. Surfaces the timeout countdown after which the seller can claim unilaterally.
import { EscrowDeliveryConfirm } from "@cdr-kit/react"

Live preview

mock
vault #8812Escrow
price0.01 $IP
timeout24h after pay
stateawaiting payment
confirm releases funds to seller AND grants buyer read access. No arbiter = no refund path.
import { EscrowDeliveryConfirm } from "@cdr-kit/react";

<EscrowDeliveryConfirm uuid={8812} buyer={connectedAddress} />

// Render-prop for the dashboard:
<EscrowDeliveryConfirm uuid={8812} buyer={connectedAddress}>
{({ paidAt, delivered, timeoutInMs, confirmDelivery, pay }) => (
  paidAt === 0n
    ? <button onClick={() => pay()}>Pay listing price</button>
    : delivered
      ? <span>delivered </span>
      : <button onClick={() => confirmDelivery()}>Confirm delivery</button>
)}
</EscrowDeliveryConfirm>

Props

PropTypeDefaultDescription
uuidrequirednumberConditionalEscrowCondition-gated vault uuid.
buyerHex | undefinedAddress whose paidAt/delivered state to read. Usually the connected wallet.
children(state) => ReactNodeRender-prop. Receives the full EscrowState including seller, price, timeoutSecs, arbiter, paidAt, delivered, timeoutInMs, plus pay() and confirmDelivery() actions.

Intrinsic CDR limitation

Once a buyer pays + confirms + reads, they hold plaintext forever. The dispute path (arbiter refund) can revoke future access but cannot "un-read." Document this in your buyer UX.