PHPackages                             foodticket/deliveroo - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [API Development](/categories/api)
4. /
5. foodticket/deliveroo

ActiveLibrary[API Development](/categories/api)

foodticket/deliveroo
====================

A PHP client to integrate with the Deliveroo API

v0.0.15(3w ago)18.5k↑11.9%MITPHPPHP ^8.3

Since Dec 4Pushed 3w ago1 watchersCompare

[ Source](https://github.com/food-ticket/deliveroo)[ Packagist](https://packagist.org/packages/foodticket/deliveroo)[ RSS](/packages/foodticket-deliveroo/feed)WikiDiscussions main Synced 2d ago

READMEChangelog (10)Dependencies (4)Versions (18)Used By (0)

Implement the new Deliveroo API
===============================

[](#implement-the-new-deliveroo-api)

This package allows you to easily make requests to the new Deliveroo API. The full documentation of the Deliveroo API can be found here: .

Requirements
------------

[](#requirements)

- PHP &gt;= 8.3
- Laravel &gt;= 12.0

Installation
------------

[](#installation)

You can install the package via composer:

```
composer require foodticket/deliveroo
```

The package will automatically register itself.

Configuration
-------------

[](#configuration)

To start using the Deliveroo API you will need a client ID and client secret. You can get these by creating an app on the [Deliveroo Developer Portal](https://developers.deliveroo.com/dashboard). Add the Client ID and client secret to your .env file:

```
DELIVEROO_BASE_URL=
DELIVEROO_AUTH_URL=
DELIVEROO_CLIENT_ID=
DELIVEROO_CLIENT_SECRET=
DELIVEROO_WEBHOOK_SECRET=
```

Making requests
---------------

[](#making-requests)

### Orders

[](#orders)

#### Get orders

[](#get-orders)

Retrieve a paginated list of orders for a specific restaurant. Returns an object with a `next` cursor and a collection of `orders`.

```
use Foodticket\Deliveroo\DeliverooApi;

$api = new DeliverooApi();
$result = $api->getOrders($brandId, $restaurantId);

// With optional filters
$result = $api->getOrders(
    brandId: $brandId,
    restaurantId: $restaurantId,
    cursor: $result->next,       // pagination cursor from previous response
    startDate: Carbon::now()->subDay(),
    endDate: Carbon::now(),
);

foreach ($result->orders as $order) {
    // ...
}
```

ParameterTypeRequiredDescription`$brandId``string`YesYour Deliveroo brand ID`$restaurantId``string`YesThe restaurant/site ID`$cursor``string|null`NoPagination cursor from a previous response`$startDate``Carbon|null`NoFilter orders from this date (ISO 8601)`$endDate``Carbon|null`NoFilter orders up to this date (ISO 8601)---

#### Get order

[](#get-order)

Retrieve a single order by its ID.

```
$order = $api->getOrder($orderId);
```

ParameterTypeRequiredDescription`$orderId``string`YesThe Deliveroo order ID---

#### Update order status

[](#update-order-status)

Accept, reject, or cancel an order. When rejecting, a `$rejectReason` is required.

```
use Foodticket\Deliveroo\Enums\OrderStatus;
use Foodticket\Deliveroo\Enums\OrderRejectReason;

// Accept an order
$api->updateOrderStatus($orderId, OrderStatus::ACCEPTED);

// Reject an order (reject reason is required)
$api->updateOrderStatus(
    orderId: $orderId,
    status: OrderStatus::REJECTED,
    rejectReason: OrderRejectReason::INGREDIENT_UNAVAILABLE,
    notes: 'The main ingredient is out of stock.',
);
```

ParameterTypeRequiredDescription`$orderId``string`YesThe Deliveroo order ID`$status``OrderStatus`YesThe new status (see [`OrderStatus`](#orderstatus))`$rejectReason``OrderRejectReason|null`Required when rejectingReason for rejection (see [`OrderRejectReason`](#orderrejectreason))`$notes``string|null`NoOptional notes sent alongside the status update---

#### Sync order status

[](#sync-order-status)

Inform Deliveroo whether your system successfully received and processed an order.

```
use Foodticket\Deliveroo\Enums\OrderSyncStatus;
use Foodticket\Deliveroo\Enums\Reason;

// Report successful sync
$api->syncStatusOrder($orderId, OrderSyncStatus::SUCCEEDED, Carbon::now());

// Report failed sync (reason is required)
$api->syncStatusOrder(
    orderId: $orderId,
    syncStatus: OrderSyncStatus::FAILED,
    occurredAt: Carbon::now(),
    reason: Reason::WEBHOOK_FAILED,
    notes: 'The webhook endpoint returned a 500.',
);
```

ParameterTypeRequiredDescription`$orderId``string`YesThe Deliveroo order ID`$syncStatus``OrderSyncStatus`YesSync result (see [`OrderSyncStatus`](#ordersyncstatus))`$occurredAt``Carbon`YesTimestamp when the sync attempt occurred`$reason``Reason|null`Required when status is `FAILED`Failure reason (see [`Reason`](#reason))`$notes``string|null`NoOptional notes---

#### Set order preparation stage

[](#set-order-preparation-stage)

Report the current preparation stage of an order to Deliveroo so it can coordinate courier dispatch.

```
use Foodticket\Deliveroo\Enums\OrderStage;

$api->setOrderPreparationStage(
    orderId: $orderId,
    stage: OrderStage::IN_KITCHEN,
    occurredAt: Carbon::now(),
);

// Optionally signal an expected delay in minutes (0, 2, 4, 6, 8, or 10)
$api->setOrderPreparationStage(
    orderId: $orderId,
    stage: OrderStage::READY_FOR_COLLECTION,
    occurredAt: Carbon::now(),
    delay: 4,
);
```

ParameterTypeRequiredDescription`$orderId``string`YesThe Deliveroo order ID`$stage``OrderStage`YesCurrent preparation stage (see [`OrderStage`](#orderstage))`$occurredAt``Carbon`YesTimestamp when this stage was reached`$delay``int|null`NoExpected additional delay in minutes. Allowed values: `0`, `2`, `4`, `6`, `8`, `10`---

### Brands

[](#brands)

#### Get brand ID

[](#get-brand-id)

Look up brand information by restaurant location ID.

```
$brand = $api->getBrandId($locationId);
```

ParameterTypeRequiredDescription`$locationId``string`YesThe Deliveroo restaurant location ID---

#### Get all brands

[](#get-all-brands)

Retrieve all brands associated with your integrator credentials.

```
$brands = $api->getBrands();
```

---

#### Change integrator webhook configuration

[](#change-integrator-webhook-configuration)

Configure which webhook type each restaurant location should use. Each entry must be a `WebhookConfiguration` object.

```
use Foodticket\Deliveroo\DataObjects\WebhookConfiguration;
use Foodticket\Deliveroo\Enums\WebhookType;

$api->changeIntegratorWebhooksConfiguration(
    brandId: $brandId,
    webhookConfigurations: [
        new WebhookConfiguration(
            location_id: 'location-123',
            orders_api_webhook_type: WebhookType::POS,
        ),
        new WebhookConfiguration(
            location_id: 'location-456',
            orders_api_webhook_type: WebhookType::ORDER_EVENTS,
        ),
    ],
);
```

ParameterTypeRequiredDescription`$brandId``string`YesYour Deliveroo brand ID`$webhookConfigurations``WebhookConfiguration[]`YesOne entry per location (must not be empty)---

### Create your own request

[](#create-your-own-request)

If you need to call an endpoint not covered by this package, use the underlying HTTP client directly:

```
$api = new DeliverooApi();
$response = $api->request()->get('https://api.developers.deliveroo.com/order/v1/integrator/brands/{$brand_id}/sites-config');
```

---

Enums
-----

[](#enums)

### OrderStatus

[](#orderstatus)

Used in `updateOrderStatus()`.

CaseValueDescription`PLACED``placed`Order is placed in the system`ACCEPTED``accepted`Order is accepted by the site`CONFIRMED``confirmed`Scheduled orders only — site has confirmed preparation has started`REJECTED``rejected`Order is rejected by the site or auto-rejected due to no response`CANCELED``canceled`Order was canceled by the site or customer### OrderRejectReason

[](#orderrejectreason)

Used in `updateOrderStatus()` when status is `REJECTED`.

CaseValue`CLOSING_EARLY``closing_early``BUSY``busy``INGREDIENT_UNAVAILABLE``ingredient_unavailable``OTHER``other`### OrderSyncStatus

[](#ordersyncstatus)

Used in `syncStatusOrder()`.

CaseValue`SUCCEEDED``succeeded``FAILED``failed`### OrderStage

[](#orderstage)

Used in `setOrderPreparationStage()`.

CaseValueDescription`IN_KITCHEN``in_kitchen`Cooking has started`READY_FOR_COLLECTION_SOON``ready_for_collection_soon`Food is a maximum of 60s from being ready to collect`READY_FOR_COLLECTION``ready_for_collection`Food is cooked and packaged`COLLECTED``collected`The order has been collected### Reason

[](#reason)

Used in `syncStatusOrder()` when sync status is `FAILED`.

CaseValue`PRICE_MISMATCHED``price_mismatched``POS_ITEM_ID_MISMATCHED``pos_item_id_mismatched``POS_ITEM_ID_NOT_FOUND``pos_item_id_not_found``ITEMS_OUT_OF_STOCK``items_out_of_stock``LOCATION_OFFLINE``location_offline``LOCATION_NOT_SUPPORTED``location_not_supported``UNSUPPORTED_ORDER_TYPE``unsupported_order_type``NO_WEBHOOK_URL``no_webhook_url``WEBHOOK_FAILED``webhook_failed``TIMED_OUT``timed_out``NO_SYNC_CONFIRMATION``no_sync_confirmation``OTHER``other`### WebhookType

[](#webhooktype)

Used in `WebhookConfiguration`.

CaseValue`POS``pos``ORDER_EVENTS``order_events``POS_AND_ORDER_EVENTS``pos_and_order_events`### FulfillmentType

[](#fulfillmenttype)

CaseValue`DELIVEROO``deliveroo``RESTAURANT``restaurant``CUSTOMER``customer``TABLE_SERVICE``table_service`---

Data Objects
------------

[](#data-objects)

### WebhookConfiguration

[](#webhookconfiguration)

Used when calling `changeIntegratorWebhooksConfiguration()`.

```
use Foodticket\Deliveroo\DataObjects\WebhookConfiguration;
use Foodticket\Deliveroo\Enums\WebhookType;

new WebhookConfiguration(
    location_id: 'location-123',
    orders_api_webhook_type: WebhookType::POS,
);
```

PropertyTypeDescription`location_id``string`The Deliveroo restaurant location ID`orders_api_webhook_type``WebhookType`The webhook type to assign to this location---

Webhooks
--------

[](#webhooks)

To start receiving webhooks from Deliveroo, you need to add the following route to the `App\Providers\RouteServiceProvider` file:

```
$this->routes(function () {
    // ...
    Route::deliverooWebhooks();
});
```

Security Vulnerabilities
------------------------

[](#security-vulnerabilities)

If you discover a security vulnerability within this project, please email me via .

###  Health Score

49

—

FairBetter than 94% of packages

Maintenance95

Actively maintained with recent releases

Popularity26

Limited adoption so far

Community9

Small or concentrated contributor base

Maturity53

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 73.1% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~39 days

Recently: every ~131 days

Total

15

Last Release

22d ago

PHP version history (2 changes)v0.0.1PHP ^8.3

v0.0.14PHP ^8.2

### Community

Maintainers

![](https://www.gravatar.com/avatar/9a331f154c735cc3b44cc802b7b183a58e503dfcf5dc3add0dea69eae3bc61ff?d=identicon)[foodticket](/maintainers/foodticket)

---

Top Contributors

[![rikmorskate](https://avatars.githubusercontent.com/u/3383883?v=4)](https://github.com/rikmorskate "rikmorskate (19 commits)")[![h-sols](https://avatars.githubusercontent.com/u/210041382?v=4)](https://github.com/h-sols "h-sols (7 commits)")

---

Tags

phpapi clientdeliveryfoodticketdeliveroo

### Embed Badge

![Health badge](/badges/foodticket-deliveroo/health.svg)

```
[![Health](https://phpackages.com/badges/foodticket-deliveroo/health.svg)](https://phpackages.com/packages/foodticket-deliveroo)
```

###  Alternatives

[openai-php/laravel

OpenAI PHP for Laravel is a supercharged PHP API client that allows you to interact with the Open AI API

3.7k9.5M89](/packages/openai-php-laravel)[statamic/cms

The Statamic CMS Core Package

4.8k3.6M985](/packages/statamic-cms)[mozex/anthropic-laravel

Laravel integration for the Anthropic API: facade, config publishing, install command, testing fakes, messages, streaming, tool use, thinking, and batches.

74331.3k1](/packages/mozex-anthropic-laravel)[scriptdevelop/whatsapp-manager

Paquete para manejo de WhatsApp Business API en Laravel

783.8k](/packages/scriptdevelop-whatsapp-manager)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
