Skip to content

Corporate Accounts

Taxi & Private HireProductsAccount › Corporate Accounts

Generally available

Corporate / B2B accounts that book and pay collectively for many passengers. Each Account has its own auth method (badge / PIN / SSO), default merge preference, capability set, custom field definitions, departmental hierarchy (AccountDepartment), and employee list (AccountEmployee). Trips charged to an account go on the account invoice instead of the passenger card. Used heavily for corporate commute contracts, school transport, medical-NHS contracts.

Example request

POST /client/{clientId}/account

{
  "ref": "<external ref — required>",
  "name": "<name — required>",
  "active": true,
  "authType": "PIN"
}

Endpoints

MethodPath
POST /client/{clientId}/account/{accountId}/brand/{brandId}
POST /client/{clientId}/account/{accountId}/clientcapability/{capabilityId}
POST /client/{clientId}/account/{accountId}/tag/{tagName}
POST /client/{clientId}/account · primary
DELETE /client/{clientId}/account/{accountId}/clientcapability/{capabilityId}
GET /client/{clientId}/account/{accountId}
GET /client/{clientId}/account/{accountId}/tag
DELETE /client/{clientId}/account/{accountId}/tag/{tagName}
GET /client/{clientId}/account/search
POST /client/{clientId}/account/{accountId}

Full request/response schemas and an interactive explorer will live in the API reference (coming soon).

Use cases

Operator flows that exercise this feature.

Create a corporate account

config risk: low

Set up a corporate account with a department and an employee.

  1. POST /client/{clientId}/account
  2. POST /client/{clientId}/accountdepartment
  3. POST /client/{clientId}/accountemployee
Update an account

config risk: low

Modify a corporate account (billing, contacts, SLA).

  1. POST /client/{clientId}/account/{accountId}

Fields

FieldTypeDescription
ref string External reference for the account — integration-friendly handle. Surfaced on the dispatch board and invoices.
name string Trading display name for the corporate account. Used wherever an account is shown to operators / drivers.
active bool Master enable/disable. Inactive accounts cannot create new trips; existing data preserved for reporting.
complexAccount bool When true, the account uses the complex routing rules — multi-department billing, per-department departments approver flow, AccountField-driven custom data capture.
primaryGroup string Primary Group attachment — convenience field for the most-used bulk group when filtering / reporting.
brand Brand Brand the account belongs to. Inherits default settings from the Brand.
primaryContact AccountEmployee Primary AccountEmployee contact. Recipient of billing emails, escalation flows, and the default invoice CC.
secondaryContact AccountEmployee Backup AccountEmployee contact — used when the primary is unreachable.
streetAddress string
addressArea string
city string
state string
postCode string
country string
iban string
bic string
companyNumber string
taxNumber string
tradingAlias string
companyName string
website string
phone string
email string
accountDepartments Collection Departments under this account — each department can carry its own billing config, primary group, and authorised employee list.
accountEmployees Collection Employees authorised to book on this account. Each AccountEmployee is anchored to a Customer; flagged employees can authenticate via PIN/PASSWORD per `authType`.
authType AccountAuthType · PIN | SMS | NONE | MFA | INHERIT Authentication method this account requires when employees book under its credit (PIN / PASSWORD / NONE). Drives the booking-flow auth prompt.
automatedMergeStrategy AutomatedMergeStrategy · DISABLED | ENABLED Whether dispatch may automatically merge trips on this account (and how — DISABLED / SAME_DEPARTMENT / ANY). Drives the merge-analyzer eligibility check.
mergePreference MergePreference · INHERIT | NEVER | NONE | ACCOUNT | ACCOUNT_DEPARTMENT | ALL Default MergePreference inherited by new departments / customers booking under this account. INHERIT falls back to the Brand setting → Client default.
accountFields Collection
tags Collection Allows multiple accounts to be grouped by a common tag, and referred to as a group in other areas of the system
driverNote string Notes shared with the Driver and Operator, to be treated as publicly visible and not to include personal information
managementNote string Internal notes for management use only.
groups Collection
clientCapabilities Collection Default Capabilities used when booking trips for this record
deletedAt integer
deletedBy bigint
clientId bigint Tenant scope. Every tenant-aware entity carries this; `ClientFilter` enforces row-level isolation on read; the multi-tenancy routing layer (`/client/{clientId}`) sets it at create time. Surfaced only under `admin` / `tripLog` groups — never to end users.
internalKey string Optional client-supplied external reference / idempotency key. When present, lets external systems correlate platform-side records back to their own source-of-truth ids. Not persisted to a column — populated by the request handler when the caller sets it.
__objectType string Discriminator string (entity class short-name) emitted alongside the id in serialized output. Resolved at read time by `getObjectType()`; lets the FE dispatch entity-specific rendering without inspecting the URL.
id bigint Snowflake-style primary key (unsigned BIGINT). Generated by `IdFactory` at create time; surfaced to the FE / API as a `G`-prefixed string and stripped back to plain bigint server-side before Doctrine lookup.
createdDate integer Unix timestamp the row was first persisted. Set in the entity's PrePersist hook; never rewritten on subsequent updates.
updatedDate integer Unix timestamp the row was last touched. Bumped on every commit that hits the Doctrine UoW for this entity; drives FE invalidation + the listing change cursor.
passiveUpdatedDate int Read-through alias for `updatedDate` exposed under different serializer groups. Lets the FE distinguish "real edit" from "background touch" projections without changing the underlying column.
listingUpdatedDate int Listing-projection timestamp surfaced only under the `listMode` group. Driven by `TripCache` and other listing-shape refreshers separately from `updatedDate` so a listing rebuild doesn't trigger detail-page invalidation.