Skip to content

RESOURCESReference

The mechanics, written down.

A fleet platform asks you to trust it with fuel money and with the record of where your vehicles went. That is easier to do when the mechanism is legible, so here it is: the checks, the failure modes, the interfaces and the vocabulary.

01How it works

Four things worth understanding before you rely on them.

Fuel authorization

Every transaction runs the same sequence, in the same order, in under 200 milliseconds. The engine reads the vehicle’s position from the telemetry directly — there is no integration between two products to go stale, which is the entire reason a position check is possible at the pump at all.

  1. 01Card

    Active, not suspended, blocked or expired. A block reaches every POS immediately rather than at the next sync.

  2. 02PIN

    Verified against a hash. Repeated failures lock the card rather than allowing a queue of guesses.

  3. 03Funds

    Prepaid balance or available credit, in the account’s own currency.

  4. 04Policy

    Fuel type, per-transaction and daily, weekly and monthly caps, litres per fill, permitted hours, and whether this station is on the approved list.

  5. 05Position

    The vehicle’s own last GPS fix against the station. It must be inside that station’s approved 200 m fuelling zone — the same circle drawn on the map — or the transaction is flagged or declined; stale telemetry is recorded as unavailable rather than treated as agreement.

  6. 06Sanity

    An odometer that goes backwards, or the same card at a second station within half an hour, is flagged.

An approved transaction holds the funds; the pump dispenses; the POS returns the litres actually delivered and the sale is settled against them. The record is insert-only — a mistake is reversed on the record rather than edited away.

When the network drops

Connectivity here is not a reliability metric, it is a condition. Every surface has a defined behaviour for losing it, and the reconciliation always trusts the clock nearest the event.

GPS tracker

Stores positions on the device — tens of thousands of records, depending on the unit — and forwards them when coverage returns. Timestamps come from the device clock, and duplicates are rejected on device and time, so a replayed buffer cannot inflate a trip.

Alerts

A buffered gap is evaluated retrospectively when it lands. An overspeed that happened out of coverage is still an overspeed, raised with the time it occurred.

POS at the pump

Authorizes against locally cached card rules, stores the sale, and syncs on reconnect flagged for review. A forecourt does not stop selling because a tower is down.

Driver app

Trips, work orders, inspections, incidents and DUI tests are captured and queued. Biometric re-authentication stays valid offline for 24 hours.

Maps

Vector tiles for Liberia, Sierra Leone and Guinea are pre-downloaded, so the map still draws with no data at all.

Driver safety scoring

A score is only useful if the driver can see how it was arrived at and do something about it. Events are weighted rather than counted flat — a failed breathalyser test is not the same as one harsh corner — and the driver sees their own score, their own events and the trend in their app, not only their manager.

Measured

Speeding, harsh braking, harsh acceleration, harsh cornering, idling and fatigue, normalised against distance driven so a busy driver is not punished for being busy.

Acted on

An event can be dismissed or turned into coaching, which assigns training matched to the weakness and tracks whether it was acknowledged and completed.

Contestable

Penalties tied to events carry the underlying evidence, with timestamps and positions, so a deduction can be argued with instead of simply appearing on a payslip.

Remote immobilisation

Cutting a vehicle’s ignition remotely is the most dangerous thing this platform can do, so it is the most heavily gated. The command refuses to run above 5 km/h, refuses to run on telemetry older than five minutes, requires a typed reason, and writes the speed and position at the moment it was issued into the audit log alongside who issued it.

Those two gates are not configurable. A driver is never immobilised by surprise at speed, and the analytics layer can recommend but never act — a human with the permission has to issue it.

02Build on it

An API, signed webhooks, and rules you can write without us.

Developer API

Base

https://api.fleet.kappagee.com/v1/ — one domain. Fuel lives under /v1/fuel, not on a second API.

Auth

A scoped API key, sent as a bearer token. Keys are shown once at creation, revocable, and rate-limited per account.

Scopes

Every scope maps to real endpoints — vehicles:read, trips:read, alerts:read, fuel:read. A key without the scope gets 403, not a partial answer.

Webhooks

Outbound events signed with HMAC-SHA256 so you can verify the sender. Delivery outcomes are recorded rather than dropped.

Provisioning

SCIM 2.0 for users from your identity provider, and OIDC single sign-on. Deactivating someone there deactivates them here.

Automation, without writing code

Rules are built as an event, a set of conditions and one or more actions — notify, raise, require an approval, or call a webhook. They can match on all conditions or any of them, run in a priority order, and hold a cooldown so one noisy vehicle cannot fire the same rule fifty times in an hour.

You can see whether it fired

Every match writes a run — the rule, the event, the subject, what it did and whether that succeeded. A rule that has never fired says so on its own row. An automation you cannot audit is not an automation, it is a rumour.

You can test it before enabling it

A dry run evaluates the conditions against a sample and shows which passed and whether the rule would have fired — with nothing executed and nothing written.

Outbound webhooks are restricted to public addresses and signed, so a rule cannot be pointed at something inside our own network and used to read it.

03Reference

The tables people ask us for.

Report catalogue

Twenty-five standard reports across fleet, safety, fuel, finance and compliance. Each runs live against your own data over a period you choose, and downloads as CSV, Excel or PDF. Anything not in the list can be built in the no-code builder and scheduled like the rest.

  • Fuel usage by vehicle
  • Trip log summary
  • Maintenance cost
  • Driver violations
  • Device uptime
  • Work-order SLA
  • Driver safety scorecard
  • Fleet utilisation
  • Geofence event log
  • Penalty summary
  • Document expiry status
  • Vehicle inventory
  • Driver roster
  • Trip activity summary

A representative selection · the full catalogue is in the platform

Roles & permissions

Roles are enforced in the API guard, not merely reflected in the interface — hiding a button is not access control. Custom roles can be composed from the same permissions.

RoleSeesCan do
tenant_adminWhole accountUsers, settings, billing and every module.
fleet_managerWhole accountVehicles, drivers, trips, maintenance and fuel policy.
regional_managerTheir regionA fleet manager, scoped to an assigned part of the fleet.
dispatcherWhole accountLive tracking, trips and work orders. No administration.
mechanicWhole accountMaintenance only.
accounts_officerWhole accountFuel spend, penalties, settlement and payroll exports.
auditorWhole accountRead-only. The guard refuses unsafe verbs outright, not just the buttons.
driverTheir own recordMobile app: own trips, score, fuel card and profile.
station_partnerTheir stationPartner portal: their own forecourt and nothing else.

Vehicle status vocabulary

Seven states, one vocabulary. The same seven drive the map markers, the sidebar filters, the wallboard and every status count in reporting — so two screens never disagree about what a vehicle is doing.

MovingParkedIdlingMaintenance dueEmergencyOfflineStolen-vehicle recovery

NEXTTry it against your own fleet

Reading about it only gets you so far.

We will set up your vehicles, put trackers on them and let you watch the record build itself for a week. If it does not tell you something you did not already know, that is a fair answer too.