Booking lifecycle
A booking has a booking status, and each item (transfer, hourly service or airport service) has its own item status.
Booking status
status | Meaning | What you should do |
|---|---|---|
confirmed | We guarantee the service. | Show the booking as confirmed to the traveller. |
on_request | We are checking availability or the price (short notice, special request, area outside regular service, or your account's credit limit would be exceeded). | Show it as "pending confirmation". We confirm or propose an alternative, usually within a few hours; you receive a webhook. |
offered | For an on-request booking we proposed a price or vehicle. The offer object shows our note and the new total; item prices are the offered prices. | Ask the traveller, then POST /bookings/{reference}/offer/accept or /offer/decline. Do not treat it as confirmed. |
pending_payment | Card-paying accounts: waiting for payment at payment_url. | Send the traveller to payment_url. |
cancelled | Cancelled by you or by us. | Check total for any cancellation fee. |
Offers on on-request bookings
When we cannot confirm a booking instantly it becomes on_request. We then either confirm it (confirmed) or propose another price or vehicle (offered); you receive booking.updated either way. Selling to travellers? Send instant_only (or ask for an instant-only account) and these statuses never occur: see Quotes & booking.
"status": "offered",
"offer": { "offered_at": "2026-11-01T10:15:00+00:00", "note": "Minivan not available, Vito at the same price", "total": 120.0, "currency": "EUR", "accepted_at": null }POST /bookings/{reference}/offer/accept→ the booking becomesconfirmed. Card-paying accounts receive apayment_url; the booking is confirmed when payment arrives (offer.accepted_atis set meanwhile).POST /bookings/{reference}/offer/declinewith optional{"reason": "…"}→ the booking is cancelled free of charge.- Both return
409 not_offeredwhen there is no open offer. In the sandbox, create the situation withPOST /test/bookings/{reference}/simulateand{"event": "on_request"}, then{"event": "offered"}.
Item status
status | Meaning |
|---|---|
scheduled | Planned; the driver is not assigned yet. |
driver_assigned | A driver is assigned: driver.name, driver.phone and driver.vehicle_plate are filled. |
on_route | The driver is on the way or waiting at the pick-up point. |
completed | The service was completed. |
no_show | The traveller did not show up; the service is charged. |
cancelled | The item was cancelled. If it was cancelled late, cancellation_fee shows the charge. |
Driver details are normally assigned the day before, and at the latest a few hours before pick-up.
Following changes
You can follow bookings in two ways — use both:
- Webhooks (recommended): we send
booking.updatedorbooking.cancelledwithin a few minutes of any change your customer can see — status, driver, time, price. See Webhooks. - Polling:
GET /bookings/{reference}returns the current state. If you poll, do it at most every 15 minutes per booking, and only for bookings in the next 48 hours.
Times
pickup_at is local time at the pick-up place without an offset, for example 2026-11-20T14:30; timezone names the IANA time zone (Europe/Istanbul). Show times to the traveller exactly as they are, without converting.
Flight delays
For airport pick-ups with a flight_number, the driver follows the flight and waits for the actual landing. Free waiting time is given per vehicle type in GET /vehicle-types (free_waiting_minutes, counted from landing).