Trades

Every trade moves through a fixed lifecycle: create, fund, deliver, then release (or cancel/refund). Milestone-based trades repeat the deliver/release step per milestone instead of once for the whole trade.

Create a trade

POST /api/partner/v1/trades/

{
  "title": "Widget",
  "amount": "100.00",
  "currency": "KES",
  "seller_id": "<seller's Intasef user id>",
  "buyer_name": "Jane Buyer",
  "buyer_phone": "+254700000000",
  "external_reference": "your-own-order-id-123"
}

seller_id is required for Marketplace partners. Merchant partners can omit it — their trades use an implicit house seller instead.

external_referenceis yours to set on every trade — use your own order/transaction ID so you can reconcile trades against your own records without depending on Intasef's trade ID.

Check status

GET /api/partner/v1/trades/{id}/ — poll this, or rely on webhooks (see the Webhooks page) for real-time updates.

Fund, deliver, release

  • POST /api/partner/v1/trades/{id}/fund/
  • POST /api/partner/v1/trades/{id}/deliver/
  • POST /api/partner/v1/trades/{id}/release/
  • POST /api/partner/v1/trades/{id}/cancel/

Milestones

Passing a milestones array when creating a trade is what makes it milestone-based — omit it for a single deliver/release trade.

  • POST /api/partner/v1/trades/{id}/milestones/{milestone_id}/deliver/
  • POST /api/partner/v1/trades/{id}/milestones/{milestone_id}/release/