Developer docs

Mark delivered

POST /escrow/:reference/deliver — seller (merchant) confirms goods were dispatched/delivered.

HTTP
POST https://www.harrenapay.com/api/public/v1/escrow/:reference/deliver

Behavior

  • Requires status funded.
  • Sets seller_marked_delivered_at (exposed as seller_delivered_at on GET).
  • DB trigger sets auto_release_at = delivered + inspection_window_days (default 1 day / 24 hours).
  • Fires webhook escrow.delivered (includes tracking fields when present).
  • Idempotent: repeat calls return already_delivered: true.

Body (self-managed)

New merchant escrows default to delivery_mode: "self_managed". For those (and legacy none), tracking_number and proof_photo_url are required.

cURL
curl -X POST https://www.harrenapay.com/api/public/v1/escrow/order_4821/deliver \
  -H "Authorization: Bearer hpay_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "tracking_number": "GIG123456",
    "courier_name": "GIG Logistics",
    "proof_photo_url": "https://cdn.example.com/dispatch/order_4821.jpg",
    "notes": "Left with security"
  }'
JSON
{
  "ok": true,
  "delivered_at": "2026-07-16T12:00:00.000Z",
  "dispatch_proof": {
    "tracking_number": "GIG123456",
    "courier_name": "GIG Logistics",
    "proof_photo_url": "https://cdn.example.com/dispatch/order_4821.jpg",
    "notes": "Left with security",
    "submitted_at": "…",
    "submitted_via": "api"
  },
  "delivery_tracking": "GIG Logistics GIG123456"
}