P2P Escrow B2B API

Secure B2B endpoints for partner platforms (such as AgriSync) to create, manage, and monitor P2P Escrow transactions backed by automated WhatsApp group moderation, Virtual Accounts, and real-time Webhooks.

Authentication

Include one of these headers on every server-to-server API call:

X-Partner-Api-Key: <your-laskad-issued-key>
# OR
X-AgriSync-Api-Key: <your-laskad-issued-key>

Keys are provisioned by Laskad operations. Missing or invalid keys return 401 Unauthorized.

Base URL

HTTPShttps://api.laskad.app/api/v1/b2b/escrow

POST/api/v1/b2b/escrow/create

Creates a new P2P Escrow transaction, provisions a dedicated Virtual Account for buyer deposit, creates a WhatsApp group, and registers optional real-time outbound webhooks.

Parameters

NameInTypeRequiredDescription
X-Partner-Api-KeyheaderstringrequiredPartner API Key
partnerNamebodystringrequiredName of the partner platform (e.g., "AgriSync")
buyerNamebodystringrequiredFull name of the buyer
buyerPhonebodystringrequiredBuyer WhatsApp phone number in E.164 format (e.g. 2348012345678)
sellerNamebodystringrequiredFull name of the seller
sellerPhonebodystringrequiredSeller WhatsApp phone number
itemDescriptionbodystringrequiredDescription of item or commodity
totalAmountbodynumberrequiredTotal transaction amount in Naira (min: 100)
webhookUrlbodystring (URL)optionalOutbound HTTP POST webhook URL for status updates
webhookSecretbodystringoptionalSecret key for HMAC-SHA256 signature verification
sellerBankCodebodystringoptionalSeller 3-digit bank code for disbursement
sellerAccountNumberbodystringoptionalSeller 10-digit bank account number
partnerBankCodebodystringoptionalPartner bank code for commission payout
partnerAccountNumberbodystringoptionalPartner 10-digit bank account number

Response Fields

FieldTypeDescription
successbooleanAlways true for 2xx responses
escrowIdstring (UUID)Laskad internal Escrow UUID
statusstringInitial status: AWAITING_FUNDING
groupJidstringCreated WhatsApp Group JID
inviteLinkstring | nullWhatsApp Group direct invitation URL
virtualAccount.accountNumberstring10-digit Virtual Account Number to deposit into
virtualAccount.bankNamestringBank Name for Virtual Account
virtualAccount.expectedAmountnumberExact expected funding amount
breakdown.totalAmountnumberTotal purchase price
breakdown.sellerPayoutAmountnumberPayout amount to seller after 3% commission
breakdown.laskadCommissionnumberLaskad fee (1.5%)
breakdown.partnerCommissionnumberPartner fee share (1.5%)

Example Request

curl -X POST https://api.laskad.app/api/v1/b2b/escrow/create \
  -H "Content-Type: application/json" \
  -H "X-Partner-Api-Key: your-key" \
  -d '{
    "partnerName": "AgriSync",
    "buyerName": "John Doe",
    "buyerPhone": "2348012345678",
    "sellerName": "Farmer Bio",
    "sellerPhone": "2348098765432",
    "itemDescription": "50 Bags of Rice",
    "totalAmount": 150000,
    "webhookUrl": "https://agrisynai.farm/api/webhooks/laskad"
  }'

Example Response

{
  "success": true,
  "escrowId": "f81d4fae-7dec-11d0-a765-00a0c91e6bf6",
  "status": "AWAITING_FUNDING",
  "groupJid": "12036398495038290@g.us",
  "inviteLink": "https://chat.whatsapp.com/ExAmPlELiNk123",
  "virtualAccount": {
    "accountNumber": "9940123456",
    "bankName": "Wema Bank / Lint",
    "accountName": "Laskad Escrow",
    "expectedAmount": 150000
  },
  "breakdown": {
    "totalAmount": 150000,
    "sellerPayoutAmount": 145500,
    "laskadCommission": 2250,
    "partnerCommission": 2250
  }
}
GET/api/v1/b2b/escrow/:id

Fetches full real-time details and transaction state for a specific P2P Escrow session by its UUID.

Parameters

NameInTypeRequiredDescription
idpathstring (UUID)requiredLaskad Escrow ID
X-Partner-Api-KeyheaderstringrequiredPartner API key

Example Request

curl https://api.laskad.app/api/v1/b2b/escrow/f81d4fae-7dec-11d0-a765-00a0c91e6bf6 \
  -H "X-Partner-Api-Key: your-key"

Example Response

{
  "id": "f81d4fae-7dec-11d0-a765-00a0c91e6bf6",
  "partnerName": "AgriSync",
  "buyerName": "John Doe",
  "sellerName": "Farmer Bio",
  "itemDescription": "50 Bags of Rice",
  "totalAmount": "150000.00",
  "status": "FUNDED",
  "virtualAccountNumber": "9940123456",
  "virtualBankName": "Wema Bank / Lint",
  "createdAt": "2026-09-12T09:40:00.000Z"
}
GET/api/v1/b2b/escrow

Returns all escrow transactions created by your partner platform. Filterable by status.

Parameters

NameInTypeRequiredDescription
X-Partner-Api-KeyheaderstringrequiredPartner API key
statusquerystringoptionalFilter by status: AWAITING_FUNDING | FUNDED | POLL_ACTIVE | COMPLETED | DISPUTED
partnerNamequerystringoptionalFilter by partner name
POST/api/v1/b2b/escrow/:id/dispute

Flags an escrow session as DISPUTED. Funds will remain safely frozen in escrow, and a notice will be dispatched to the WhatsApp group and outbound webhooks.

Parameters

NameInTypeRequiredDescription
idpathstring (UUID)requiredEscrow UUID
X-Partner-Api-KeyheaderstringrequiredPartner API key
reasonbodystringoptionalOptional description of the dispute reason