List transactions
GET /transactions returns your CONFIRMED and EXTERNAL fuel transactions for a date range of up to 31 days, 100 per page, with every field explained.
GET /api/v1/integration/transactionsReturns the caller's CONFIRMED and EXTERNAL fuel transactions created within a date range, newest first, with cursor-based pagination. The customer account is derived from the API key.
Query parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
from | ISO 8601 date-time | Yes | Start of the range on created_at (inclusive). |
to | ISO 8601 date-time | Yes | End of the range on created_at. The range may span at most 31 days. |
corporate_group_id | integer | No | Restrict to one corporate group. Must belong to your account. |
corporate_id | integer or comma-separated list | No | Restrict to one or more corporates. Must belong to your account, and to the group if corporate_group_id is also given. |
status | list of CONFIRMED, EXTERNAL | No | Filter by status. Both are returned when omitted. |
limit | integer | No | Page size. Default 50, maximum 100. |
cursor | string | No | Opaque cursor from the previous page's pagination.next_cursor. Repeat the same filters when passing a cursor. |
Pass several statuses as a comma-separated list, for example status=CONFIRMED,EXTERNAL.
Which transactions are returned?
- Only
CONFIRMEDandEXTERNALtransactions.PENDING,VOIDandCANCELEDtransactions are never returned. A transaction that is voided or canceled after you fetched it simply disappears from later results for the same range. See Detecting voids and cancellations. - Refund transactions (for duplicates, variances or resolved disputes) are returned, with
correction_reference_idpointing to the original transaction. - Manual balance adjustments made by Octane's accountants are never returned.
Example request
curl -G "https://prod-app.octanetech-api.com/api/v1/integration/transactions" \
-H "X-API-Key: $OCTANE_API_KEY" \
--data-urlencode "from=2026-09-01T00:00:00Z" \
--data-urlencode "to=2026-09-30T23:59:59Z" \
--data-urlencode "corporate_id=67,68" \
--data-urlencode "status=CONFIRMED" \
--data-urlencode "limit=100"Example response
{
"data": [
{
"id": 185432,
"status": "CONFIRMED",
"created_at": "2026-09-20T08:59:36.340Z",
"confirmed_at": "2026-09-20T09:00:02.110Z",
"correction_reference_id": null,
"corporate": { "id": 67, "name": "Acme Logistics" },
"corporate_group": { "id": 9, "name": "Acme Group" },
"fuel": {
"type": { "id": 2, "name": "Benzine 92" },
"liters": 18.5,
"price_per_liter": 13.75,
"amount": 254.38
},
"odometer_reading": 120450,
"distance_traveled": 312,
"fuel_consumption": 5.93,
"station": {
"id": 164,
"name": "Misr Petroleum - Ring Road",
"provider": { "id": 7, "name": "Misr Petroleum" },
"is_external": false
},
"vehicle": {
"id": 4,
"code": "V-004",
"number_plate": "ABC 1234",
"chassis_number": "JTDBR32E720123456",
"brand": "Toyota",
"model": "Hilux",
"year": 2021,
"department": { "id": 3, "name": "Distribution" }
},
"driver": { "id": 31, "name": "Ahmed Mostafa" },
"fees": {
"total_fees": 1.06,
"total_vat": 0.13,
"total_amount": 255.435000
},
"images": {
"pump": "https://storage.example/pump.jpg?X-Amz-Expires=3600&...",
"odometer": "https://storage.example/odometer.jpg?X-Amz-Expires=3600&...",
"expires_at": "2026-09-20T10:00:02Z"
}
}
],
"pagination": {
"limit": 100,
"has_more": true,
"next_cursor": "eyJ0IjoiMjAyNi0wOS0yMFQwODo1OTozNi4zNDBaIiwiaWQiOjE4NTQzMn0"
}
}Successful responses may also include the X-Access-Expires-At header. See Access expiry.
The transaction object
Top level
| Field | Type | Description |
|---|---|---|
id | integer | Unique transaction id. Stable across Pull and webhook deliveries. |
status | CONFIRMED or EXTERNAL | |
created_at | date-time | When the transaction was created. The from and to filters apply to this field. |
confirmed_at | date-time, nullable | When the transaction was confirmed. |
correction_reference_id | integer, nullable | For refund transactions, the id of the original transaction being corrected. null otherwise. |
corporate | object | The corporate the vehicle belongs to. Always present. |
corporate_group | object, nullable | The corporate's group. null when the corporate is not in a group. |
fuel | object | Fuel type, quantity and price. |
odometer_reading | integer, nullable | Odometer value captured at the transaction, when available. |
distance_traveled | integer, nullable | Distance since the vehicle's previous transaction, when it can be computed. |
fuel_consumption | number, nullable | Litres per 100 km since the previous transaction, when it can be computed. |
station | object | Where the fuel was dispensed. |
vehicle | object | The vehicle that was fuelled. |
driver | object | The driver. |
fees | object | Total fees, total VAT and the total amount charged. |
images | object | Presigned URLs of the pump and odometer photos. |
corporate and corporate_group
| Field | Type | Description |
|---|---|---|
id | integer | |
name | string |
fuel
| Field | Type | Description |
|---|---|---|
type.id | integer | Fuel type id. |
type.name | string | Fuel type name, for example Benzine 92. |
liters | number | Quantity dispensed, 2 decimals. |
price_per_liter | number | Unit price, 2 decimals. |
amount | number | Fuel amount before fees, 2 decimals. |
station
| Field | Type | Description |
|---|---|---|
id | integer, nullable | Station id. null for external stations. |
name | string | Station name. For external transactions, the name of the external station as entered. |
provider | object, nullable | The station provider (id, name). null for external stations. |
is_external | boolean | true when the transaction was recorded at a station outside the Octane network. |
vehicle
| Field | Type | Description |
|---|---|---|
id | integer | |
code | string, nullable | Your internal vehicle code, as configured in Octane. |
number_plate | string, nullable | |
chassis_number | string, nullable | |
brand, model | string, nullable | |
year | integer, nullable | |
department | object, nullable | The vehicle's department (id, name), when assigned. |
driver
| Field | Type | Description |
|---|---|---|
id | integer | |
name | string | |
mobile_number | string | Present only when Octane has enabled driver mobile numbers on your key. Ask your account manager if you need it. |
The driver's email address is never returned.
fees
The same three figures shown in the Octane dashboard's transactions table.
| Field | Type | Description |
|---|---|---|
total_fees | number | All service fees applied to the transaction, excluding VAT. 2 decimals. |
total_vat | number | All VAT applied to the transaction. 2 decimals. |
total_amount | number | Total deducted from your balance: fuel.amount + total_fees + total_vat. 6 decimals, so it matches your Octane statement exactly. |
Fees are returned exactly as recorded on the transaction, for EXTERNAL transactions as well as CONFIRMED ones. A breakdown of individual fee types is not part of the API.
images
| Field | Type | Description |
|---|---|---|
pump | string (URL), nullable | Photo of the pump display. null when no photo exists. |
odometer | string (URL), nullable | Photo of the odometer. null when no photo exists. |
expires_at | date-time | When the URLs stop working. |
Image URLs are presigned and expire after 1 hour. Download the images promptly if you need to keep them; do not store the URLs. Re-fetch the transaction to get fresh URLs.
External transactions
An EXTERNAL transaction was recorded at a station outside the Octane network. It has the same shape as a confirmed transaction, with these differences:
statusisEXTERNAL.station.is_externalistrue,station.idandstation.providerarenull, andstation.nameis the external station name.feesare returned as recorded, which may be zero or non-zero depending on your agreement.
Precision rules
| Field | Precision |
|---|---|
fuel.liters, fuel.price_per_liter, fuel.amount | 2 decimals |
fees.total_fees, fees.total_vat | 2 decimals |
fees.total_amount | 6 decimals |
fuel_consumption | 2 decimals |
Errors
| Status | Code | Cause |
|---|---|---|
400 | VALIDATION_FAILED | Missing or malformed parameter, range over 31 days, limit over 100, unknown status, invalid cursor. The fields object names the offending parameter. |
404 | CORPORATE_NOT_FOUND | A corporate_id does not belong to your account (or to the given group). |
404 | CORPORATE_GROUP_NOT_FOUND | The corporate_group_id does not belong to your account. |
Plus the shared authentication and network errors. See Errors.


