Escrows

Escrows are automatically created when a buyer pays through a payment link. You don't create escrows directly — they are the result of a successful payment. Escrows protect both buyers and sellers by holding funds until delivery is confirmed.

Escrow lifecycle

PENDING → ACTIVE → AWAITING CONFIRMATION → COMPLETED
                ↘ DISPUTED → COMPLETED / REFUNDED
                ↘ REFUNDED
                ↘ CANCELLED

Status descriptions

StatusDescription
pendingEscrow created, awaiting payment
activePayment received, funds locked
awaiting_confirmationSeller marked as delivered, waiting for buyer confirmation
disputedA dispute has been opened, funds locked until resolved
completedDelivery confirmed, funds released to seller
refundedFull refund issued to buyer
cancelledTransaction cancelled

Fee structure

Fees are added on top of the transaction amount at payment time. The buyer pays the base amount plus fees; the seller always receives the full base amount on release.

  • Platform fee— Kashia's fee on every transaction (default 1.5%, minimum ₦100, cap ₦50,000)
  • Marketplace fee — optional commission for marketplace merchants (0–20%, optional cap). Single-vendor merchants charge 0%.
  • Fees are snapshotted on the escrow when payment is received
  • Example: ₦1,000,000 item + ₦15,000 platform fee + ₦100,000 marketplace fee → buyer pays ₦1,115,000, seller receives ₦1,000,000
  • On refund or cancellation, the buyer receives the base amount only — fees are non-refundable. See Fees for details.

Endpoints

GET/api/v1/merchant/escrows

List escrows for the authenticated merchant. Requires Merchant JWT from dashboard login.

Parameters
ParameterTypeRequiredDescription
statusstringNo (default: all)Filter by escrow status
pageintegerNo (default: 1)Page number
per_pageintegerNo (default: 20)Items per page
GET/api/v1/merchant/escrows/:id

Returns full escrow details including buyer, seller, status history, and linked dispute.

Escrow actions

These endpoints accept Merchant JWT or User JWT depending on the action. Marketplace apps can also use hosted action links — see Action Links.

POST/api/v1/external/escrows/:escrowId/deliver

Mark as shipped via API key with optional shipping_details.

POST/api/v1/external/escrows/:escrowId/confirm

Confirm receipt via API key.

POST/api/v1/escrows/:id/deliver

Mark escrow as shipped. Seller or merchant. Optional shipping_details body.

POST/api/v1/escrows/:id/confirm

Confirm delivery and release funds. Buyer only.

POST/api/v1/escrows/:id/cancel

Cancel escrow. Merchant only.

Request example

json
{ "reason": "..." }
POST/api/v1/escrows/:id/refund

Issue a full refund. Merchant or admin.

Request example

json
{ "reason": "..." }