Contents
Booking Report - Plugixa Chauffeur
GET /plugixa-chauffeur/v1/reports/summary
Totals, breakdowns, a daily series and the booking rows for bookings created in a date range.
Needs Plugixa Chauffeur Pro with an active licence. Needs a signed-in user with the plugixa_chauffeur_manage capability (administrators have it after activation).
Note.
revenueadds upprice_totalof every booking in the range, cancelled, failed and refunded ones included, and mixes currencies when your forms use more than one.paid_revenuecounts only bookings whose payment status ispaid, so partly refunded bookings are left out of it.
Request
GET https://your-site.example/wp-json/plugixa-chauffeur/v1/reports/summary?from=2026-10-01&to=2026-10-31
Query parameters
| Name | Type | Default | Description |
|---|---|---|---|
from |
string |
30 days ago |
First creation date, YYYY-MM-DD, included. |
to |
string |
today |
Last creation date, YYYY-MM-DD, included. |
A value not in the form YYYY-MM-DD falls back to the default. The range is on the booking’s creation date, not its pickup date.
Responses
200 OK. data is the report.
{
"success": true,
"message": "",
"data": {
"from": "2026-10-01",
"to": "2026-10-31",
"currency": "EUR",
"total_bookings": 2,
"revenue": 213.5,
"paid_revenue": 78.5,
"avg_value": 106.75,
"by_status": {
"completed": 1,
"pending": 1
},
"by_service": [
{
"service": "distance",
"count": 1,
"revenue": 78.5
},
{
"service": "hourly",
"count": 1,
"revenue": 135.0
}
],
"by_vehicle": [
{
"name": "Mercedes V-Class",
"count": 1,
"revenue": 135.0
},
{
"name": "Mercedes E-Class",
"count": 1,
"revenue": 78.5
}
],
"daily": [
{
"date": "2026-10-04",
"count": 1,
"revenue": 78.5
},
{
"date": "2026-10-18",
"count": 1,
"revenue": 135.0
}
],
"rows": [
{
"booking_number": "PXC-20261018-4471",
"created_at": "2026-10-18 17:02:00",
"customer_name": "Hugo Bernard",
"customer_email": "hugo.bernard@example.com",
"service_type": "hourly",
"status": "pending",
"payment_status": "unpaid",
"price_total": 135.0,
"currency": "EUR"
},
{
"booking_number": "PXC-20261004-0815",
"created_at": "2026-10-04 09:30:00",
"customer_name": "Claire Martin",
"customer_email": "claire.martin@example.com",
"service_type": "distance",
"status": "completed",
"payment_status": "paid",
"price_total": 78.5,
"currency": "EUR"
}
]
}
}
| Field | Type | Meaning |
|---|---|---|
data.currency |
string |
The site currency from Settings, for display |
data.total_bookings |
integer |
Bookings created in the range |
data.revenue |
number |
Sum of price_total, every status |
data.paid_revenue |
number |
The same, for bookings whose payment status is paid |
data.avg_value |
number |
revenue divided by total_bookings |
data.by_status |
object |
Bookings per status |
data.by_vehicle |
array |
Top 10 vehicles by revenue. Bookings without a vehicle are grouped under a dash |
data.daily |
array |
One entry per day that has bookings; days without any are absent |
data.rows |
array |
Up to 1,000 bookings, newest first, with the customer’s name and e-mail |
Errors
Plus the errors every endpoint can return.
Examples
curl -s "https://your-site.example/wp-json/plugixa-chauffeur/v1/reports/summary?from=2026-10-01&to=2026-10-31" \
-u "admin:$WP_APP_PASSWORD"
<?php
$query = http_build_query([
'from' => '2026-10-01',
'to' => '2026-10-31',
]);
$ch = curl_init('https://your-site.example/wp-json/plugixa-chauffeur/v1/reports/summary?' . $query);
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_USERPWD => 'admin:' . getenv('WP_APP_PASSWORD'),
]);
$response = json_decode(curl_exec($ch), true);
curl_close($ch);
const auth = Buffer.from(`admin:${process.env.WP_APP_PASSWORD}`).toString('base64');
const query = new URLSearchParams({ from: '2026-10-01', to: '2026-10-31' });
const response = await fetch(`https://your-site.example/wp-json/plugixa-chauffeur/v1/reports/summary?${query}`, {
headers: {
'Authorization': `Basic ${auth}`,
},
});
const { data } = await response.json();
Quick Links
Share