---
title: "Record an owned toll or clean-air charge"
method: POST
path: "/api/v1/tolls/transactions"
tags: ["Tolls"]
---

# Record an owned toll or clean-air charge

`POST /api/v1/tolls/transactions`

## Request

- Base URL: `https://fleetkeep.co.uk`
- URL: `https://fleetkeep.co.uk/api/v1/tolls/transactions`
- Auth: OAuth 2 (authorization code, authorization URL `https://fleetkeep.co.uk/auth/oauth2/authorize`, token URL `https://fleetkeep.co.uk/auth/oauth2/token`, scopes: `tolls:write`)

Records customer-supplied spend only. It does not initiate, settle or verify payment.

## Headers

- `Idempotency-Key` string, required

## Request body

- TollTransactionWrite
  - `vehicleId` string, uuid, required
  - `chargeAccountId` string, uuid, nullable
  - `providerName` string, required
  - `chargeType` 'toll' | 'congestion' | 'ulez' | 'clean_air_zone' | 'penalty' | 'adjustment'
  - `chargedOn` string, date, required
  - `amountPence` integer, required
  - `location` string, nullable
  - `invoiceReference` string, nullable
  - `status` 'recorded' | 'needs_review' | 'disputed' | 'reimbursed'
  - `notes` string, nullable

## Response `200`

Idempotent replay

- TollTransactionEnvelope
  - `transaction` TollTransaction, required
    - `id` string, uuid, required
    - `vehicleId` string, uuid, required
    - `chargeAccountId` string, uuid, nullable, required
    - `providerName` string, required
    - `chargeType` string, required
    - `chargedOn` string, date, required
    - `amountPence` integer, required
    - `currency` 'GBP', required
    - `location` string, nullable, required
    - `invoiceReference` string, nullable, required
    - `source` string, required
    - `status` string, required
    - `notes` string, nullable, required
    - `createdAt` string, date-time, required
    - `updatedAt` string, date-time, required
  - `replay` boolean, required

## Other responses

- `201`: Created
- `400`: The request body or query was invalid.
- `401`: Missing or invalid Bearer access token.
- `403`: Token does not include the required scope.
- `404`: The requested resource does not exist on the authorised user's account, is the wrong event type, or is immutable history for this operation.
- `409`: Confirmation is required or the supplied confirmation is invalid, stale, replayed or bound to different content.
- `429`: Per-token rate limit exceeded (60 requests per minute).

---

[API](https://skmtc.dev/fleetkeep/apis/fleetkeep-api.md) · [All operations](https://skmtc.dev/fleetkeep/apis/fleetkeep-api/llms.txt) · [OpenAPI document](https://skmtc.dev/fleetkeep/apis/fleetkeep-api/revisions/ace19bc0d64d?raw)
