Create, list, track, and poll deliveries.

flasho.deliveries

flasho.deliveries

create()

const { delivery } = await flasho.deliveries.create({
  customerName: 'Ahmed Ali',
  customerNumber: '99887766',
  pickupLatitude: 29.3764,
  pickupLongitude: 47.9785,
  deliveryLatitude: 29.3117,
  deliveryLongitude: 48.0034,
});
 
console.log(delivery.orderNumber);    // FLH4001
console.log(delivery.status);         // PENDING
console.log(delivery.estimatedPrice); // "1.250"

Cash on delivery: set collectCash: true and pass cashAmount as a KWD string such as "12.500".

Scheduled: set isScheduled: true and scheduledDeliveryAt to an ISO 8601 UTC datetime.

list() and get()

const { deliveries } = await flasho.deliveries.list({ status: 'ENROUTE', limit: 20 });
const { delivery } = await flasho.deliveries.get(deliveries[0].id);
 
console.log(delivery.driverName, delivery.driverPhone);

list() accepts status and limit (1–100, default 50).

poll()

Keep a tracking screen updated until the order finishes.

useEffect(() => {
  let stopped = false;
 
  flasho.deliveries.poll(deliveryId, {
    intervalMs: 5000,
    onUpdate: (delivery) => {
      if (!stopped) setStatus(delivery.status);
    },
  });
 
  return () => {
    stopped = true;
  };
}, [deliveryId]);

poll() resolves on DELIVERED, CANCELLED, REJECTED, or FAILED. It throws if timeoutMs (default 15 minutes) is exceeded.

Order statuses

PENDING → REQUESTED → ACCEPTED → INPROGRESS → PICKEDUP → ENROUTE → DELIVERED

Terminal states: DELIVERED, CANCELLED, REJECTED, FAILED.