Octane

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/transactions

Returns 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

ParameterTypeRequiredDescription
fromISO 8601 date-timeYesStart of the range on created_at (inclusive).
toISO 8601 date-timeYesEnd of the range on created_at. The range may span at most 31 days.
corporate_group_idintegerNoRestrict to one corporate group. Must belong to your account.
corporate_idinteger or comma-separated listNoRestrict to one or more corporates. Must belong to your account, and to the group if corporate_group_id is also given.
statuslist of CONFIRMED, EXTERNALNoFilter by status. Both are returned when omitted.
limitintegerNoPage size. Default 50, maximum 100.
cursorstringNoOpaque 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 CONFIRMED and EXTERNAL transactions. PENDING, VOID and CANCELED transactions 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_id pointing 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

FieldTypeDescription
idintegerUnique transaction id. Stable across Pull and webhook deliveries.
statusCONFIRMED or EXTERNAL
created_atdate-timeWhen the transaction was created. The from and to filters apply to this field.
confirmed_atdate-time, nullableWhen the transaction was confirmed.
correction_reference_idinteger, nullableFor refund transactions, the id of the original transaction being corrected. null otherwise.
corporateobjectThe corporate the vehicle belongs to. Always present.
corporate_groupobject, nullableThe corporate's group. null when the corporate is not in a group.
fuelobjectFuel type, quantity and price.
odometer_readinginteger, nullableOdometer value captured at the transaction, when available.
distance_traveledinteger, nullableDistance since the vehicle's previous transaction, when it can be computed.
fuel_consumptionnumber, nullableLitres per 100 km since the previous transaction, when it can be computed.
stationobjectWhere the fuel was dispensed.
vehicleobjectThe vehicle that was fuelled.
driverobjectThe driver.
feesobjectTotal fees, total VAT and the total amount charged.
imagesobjectPresigned URLs of the pump and odometer photos.

corporate and corporate_group

FieldTypeDescription
idinteger
namestring

fuel

FieldTypeDescription
type.idintegerFuel type id.
type.namestringFuel type name, for example Benzine 92.
litersnumberQuantity dispensed, 2 decimals.
price_per_liternumberUnit price, 2 decimals.
amountnumberFuel amount before fees, 2 decimals.

station

FieldTypeDescription
idinteger, nullableStation id. null for external stations.
namestringStation name. For external transactions, the name of the external station as entered.
providerobject, nullableThe station provider (id, name). null for external stations.
is_externalbooleantrue when the transaction was recorded at a station outside the Octane network.

vehicle

FieldTypeDescription
idinteger
codestring, nullableYour internal vehicle code, as configured in Octane.
number_platestring, nullable
chassis_numberstring, nullable
brand, modelstring, nullable
yearinteger, nullable
departmentobject, nullableThe vehicle's department (id, name), when assigned.

driver

FieldTypeDescription
idinteger
namestring
mobile_numberstringPresent 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.

FieldTypeDescription
total_feesnumberAll service fees applied to the transaction, excluding VAT. 2 decimals.
total_vatnumberAll VAT applied to the transaction. 2 decimals.
total_amountnumberTotal 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

FieldTypeDescription
pumpstring (URL), nullablePhoto of the pump display. null when no photo exists.
odometerstring (URL), nullablePhoto of the odometer. null when no photo exists.
expires_atdate-timeWhen 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:

  • status is EXTERNAL.
  • station.is_external is true, station.id and station.provider are null, and station.name is the external station name.
  • fees are returned as recorded, which may be zero or non-zero depending on your agreement.

Precision rules

FieldPrecision
fuel.liters, fuel.price_per_liter, fuel.amount2 decimals
fees.total_fees, fees.total_vat2 decimals
fees.total_amount6 decimals
fuel_consumption2 decimals

Errors

StatusCodeCause
400VALIDATION_FAILEDMissing or malformed parameter, range over 31 days, limit over 100, unknown status, invalid cursor. The fields object names the offending parameter.
404CORPORATE_NOT_FOUNDA corporate_id does not belong to your account (or to the given group).
404CORPORATE_GROUP_NOT_FOUNDThe corporate_group_id does not belong to your account.

Plus the shared authentication and network errors. See Errors.

On this page