List your orders
https://api.nexgapp.com/v1/ordersLiveReturns orders placed with the merchant your key is bound to, newest first: guest orders from nexgapp.com and, once booking ships, service bookings made through the API.
You never send a merchant id. The key decides the merchant, so a key can never read another merchant’s orders. The stage is the one the merchant console shows, read from the order rather than worked out again.
Poll this endpoint to keep your system in step with NexG. Each call costs 3 tokens; at the default 60 tokens a minute, polling once a minute leaves plenty of room for catalogue reads.
- Authentication
- API key with
merchant_read, bound to your merchant - Rate limit cost
- 3 tokens
- Caching
- Never cached
- Available since
- 22 October 2026
Query parameters
cursorquery · stringOptionalThe next_cursor from the previous page, passed back unchanged. Leave it out for the first page. A cursor this endpoint did not issue is refused with 400.
limitquery · integerOptionalResults per page, 1 to 100. Defaults to 25. A value outside that range is refused with 400.
Any other query parameter is refused with 400 invalid_request.
Headers
X-Api-Keyheader · stringRequiredA key bound to your merchant, with merchant_read. Or send it as Authorization: Bearer <key>.
Response
Order data.items[]
order_iduuidNexG’s id for the order. Store it.
referencestringThe reference people read, such as NX-261110-0003. Store it too.
servicestringThe API service code for a service booking; an empty string for other orders.
quantityintegerUnits on the order: passengers for a transfer, items for a basket.
stagestringWhere the order is: placed, confirmed, preparing, ready, picked_up, arriving, delivered, cancelled, disputed or refunded. The same stage the merchant console shows.
payment_methodstringmpesa_stk, card, bank_transfer, cash_on_delivery, charge_to_room or on_account.
payment_statusstringpending, authorised, paid, collected, failed, refunded or partially_refunded.
currencystringAlways KES.
total_centsintegerThe order total in cents (KES 1,616.25 is 161625), fixed when it was placed.
scheduled_fortimestamp or nullWhen it is booked for, if it was scheduled.
pickup_labelstring or nullWhere it is collected from, for a ride or a courier.
dropoff_labelstring or nullWhere it is going.
created_attimestampWhen it was placed.
Errors
Every error has the same shape; see Errors. Branch on error.code and the HTTP status, never on the message.
- 400
invalid_requestBoth X-Api-Key and Authorization were sent, or Authorization is not a Bearer key.
- 401
not_foundThe key is unknown, revoked or expired, or its merchant cannot use the API right now. All of these get the same answer on purpose.
- 403
not_foundNo key was sent, or the key does not have merchant_read.
- 429
rate_limitedYour token bucket is empty. Wait the number of seconds in the Retry-After header.
- 503
internal_errorNexG could not check the key or the rate limit. Retry with backoff.
- 400
invalid_requestA query parameter is not one this endpoint accepts, or fails validation. error.fields names it.
- 403
not_foundNexG refused the read for this key, for example because it is not bound to a merchant.
- 500
internal_errorNexG could not read the orders.
- 500
internal_errorSomething unexpected failed on NexG’s side. NexG logs the X-Request-Id: quote it if you report the failure.
Good to know
- The city, category and q parameters other list endpoints take are accepted here and ignored.
- Merchant keys work only while the merchant may operate: not while it is paused, suspended or delisted, and not while its application is waiting for approval.