IFTA / API documentation

IFTA Jurisdiction Mileage and Fuel API

Per-truck, per-jurisdiction, per-day mileage and fuel data for IFTA filing and settlement. Endpoints, schemas, special tax fields, rollups, imports, exceptions, audit evidence, exports and errors.

1. Overview

The IFTA Jurisdiction Mileage and Fuel API returns per-truck, per-jurisdiction, per-day mileage and fuel records for IFTA filing and settlement, plus weekly and quarterly rollups, the vehicle master, fuel purchase import, special tax summaries, exceptions, audit evidence and bulk exports. It is built for fleet operators, ELD and TMS integrators, and settlement system developers.

Base URLhttps://api.mapup.ai/ifta/v1
Authenticationx-api-key header, one key per fleet account
FormatJSON over HTTPS. All timestamps ISO 8601. Distances in miles unless distance_unit=km
FreshnessRecords finalize on a three-day rolling window. Requests inside the window return HTTP 202 with data_complete: false
PaginationFleet-wide endpoints page with next_cursor

Jurisdiction miles

Per-truck, per-state mileage split daily. IFTA-taxable and excluded miles separated. Odometer and GPS reconciliation on every segment.

Fuel transactions

Card network and on-premise purchases linked by truck and date. Tax-paid status per transaction for the IFTA net calculation.

Special taxes

NY HUT, Oregon weight-mile, Kentucky KYU, New Mexico WDT and Connecticut HUF detected and computed automatically, edge cases flagged.

2. Authentication and conventions

Every request carries the API key in the header. Keys are issued per fleet account from your MapUp account; write to ifta@mapup.ai to have one issued or rotated. This is the same x-api-key convention used across all MapUp APIs.

x-api-key: YOUR_API_KEY

Rate limiting

Every response includes headers so your integration can track usage and back off cleanly. When the limit is exceeded the API returns HTTP 429; implement exponential backoff using Retry-After.

Response headerDescription
X-RateLimit-LimitMaximum requests per minute for your account
X-RateLimit-RemainingRequests remaining in the current window
X-RateLimit-ResetUnix timestamp when the window resets
Retry-AfterSeconds to wait before retrying. Present only on 429 responses

Units and time zones

distance_unit (mi default, or km) controls every distance and odometer value in a response, and the response echoes it on the vehicle object. time_zone (IANA name, UTC default) controls timestamp formatting; each jurisdiction segment also carries its own local time zone.

3. Endpoints

GET/dailyPer-truck, per-day jurisdiction mileage and fuel records
GET/fleet/dailyAll trucks in the fleet for a given date
GET/weeklyWeekly rollup per truck per jurisdiction
GET/fleet/weeklyAll trucks for a given week
GET/quarterlyQuarterly IFTA rollup per truck per jurisdiction
GET/vehiclesVehicle master with IFTA qualification and external ID mappings
GET/vehicles/{truck_id}Single vehicle by ID, VIN or any external ID
GET/fuel-purchasesFuel transactions across all vendors, filterable by date, truck and jurisdiction
POST/fuel-purchasesImport fuel purchase records: manual, CSV or on-premise station data
GET/special-tax/summaryNY HUT, OR WMT, KYU, NM WDT and CT HUF aggregates per truck and period
GET/exceptionsMissing fuel, unmatched vehicles, odometer deltas, GPS gaps, held records
GET/audit/evidenceAudit packet: GPS points, crossings, odometer readings, toll matches, fuel receipts
POST/exportsAsynchronous CSV, Excel, PDF or JSON exports for large fleets
GET/exports/{job_id}Status and download URL for an export job

4. Query parameters

ParameterTypeRequiredDescription
truck_idstringYes for single-truck endpointsCanonical truck identifier (mapup_truck_id). Omit on fleet-wide endpoints
dateYYYY-MM-DDYes (/daily)The operating date. Cannot be in the future
week_startYYYY-MM-DDYes (/weekly)Monday of the target week
quarterYYYY-QNYes (/quarterly)For example 2026-Q1
jurisdictionstringNoTwo-character state or province code. Filters to that jurisdiction
include_excludedbooleanNo (false)When true, includes Oregon weight-mile and other IFTA-excluded records
distance_unitstringNo (mi)mi or km. Controls all distance and odometer values
time_zonestringNo (UTC)IANA time zone, for example America/New_York. Controls timestamp formatting
cursorstringNoContinuation token from a previous fleet-wide response

Example requests

# Single truck, single day
GET https://api.mapup.ai/ifta/v1/daily?truck_id=fleet1-truck42&date=2026-05-12
x-api-key: YOUR_API_KEY

# Full fleet, one week, Eastern time, kilometers
GET https://api.mapup.ai/ifta/v1/fleet/weekly?week_start=2026-05-11&time_zone=America/New_York&distance_unit=km
x-api-key: YOUR_API_KEY

# Include Oregon weight-mile records (excluded from IFTA totals by default)
GET https://api.mapup.ai/ifta/v1/daily?truck_id=fleet1-truck42&date=2026-05-12&include_excluded=true
x-api-key: YOUR_API_KEY

5. Response envelope

Every daily, weekly and quarterly response carries the same three blocks before the records: status, vehicle and meta. Check status first.

Vehicle object

The canonical vehicle identity and every external system mapping needed for cross-system reconciliation.

FieldTypeDescription
mapup_truck_idstringMapUp canonical truck identifier. Stable across all integrations
unit_numberstringFleet-assigned unit number
vinstring17-character VIN
year, make, modelstringModel year, manufacturer, model
base_jurisdictionstringIFTA base jurisdiction for this vehicle
registered_weight_lbsintegerRegistered gross weight. Decides special program applicability
ifta_qualifiedbooleanConfigured per unit from your fleet list under the IFTA qualified motor vehicle definition (weight, axles, combination). Not derived by MapUp; keeps non-qualified units out of the return
distance_unitstringmi or km, applied to every distance and odometer value in the response

vehicle.external_ids object

Maps the vehicle to its identifiers in the systems connected to the account. Null means that provider is not connected for this vehicle. When a fleet runs several ELD providers, this block lets a settlement system match MapUp output to its own records without a separate lookup table.

FieldTypeDescription
motive_vehicle_idstring or nullMotive vehicle ID
geotab_device_idstring or nullGeotab device serial number
transflow_unit_idstring or nullTransflow unit identifier
tms_tractor_idstring or nullTMS tractor or power unit ID
efs_card_idstring or nullEFS fuel card ID assigned to this vehicle
comdata_card_idstring or nullComdata fuel card ID
wex_card_idstring or nullWEX fuel card ID

Meta block

FieldTypeDescription
dateYYYY-MM-DDThe operating date for this record
generated_atISO 8601When the record was assembled by the pipeline
data_lag_daysintegerDays between the operating date and finalization. Typically one to three
data_completebooleanFalse inside the three-day window. Re-fetch on day three
time_zonestringIANA time zone applied to timestamps in this response
warningsstring[]Non-fatal flags: RECONCILIATION_DELTA, CROSSING_INFERRED, ODOMETER_FALLBACK, HIGH_MILEAGE_FLAG

6. Mileage records

mileage_records is an array with one object per jurisdiction per day.

FieldTypeDescription
jurisdictionstringTwo-character IFTA jurisdiction code, for example NY, PA, ON
miles_totalfloatAll miles operated in this jurisdiction on this date
miles_taxablefloatIFTA-taxable miles. Zero for Oregon (weight-mile ledger). For New York, includes Thruway miles, which are IFTA-taxable and HUT-exempt
miles_toll_roadfloatMiles on toll road segments within this jurisdiction
toll_road_flagbooleanTrue if any toll road miles were recorded in this jurisdiction
toll_road_namestring or nullToll road name where identified, for example NY-THRUWAY, MA-TURNPIKE
toll_road_sourceenumPROVIDER, TOLLMATCH or DERIVED. Indicates the confidence of the match
ifta_excludedbooleanTrue for Oregon and non-IFTA jurisdictions
odometer_start, odometer_endfloatOdometer reading at jurisdiction entry and exit
odometer_sourceenumECM (authoritative), GPS (fallback), ESTIMATED (flagged)
odometer_unitstringmi or km, matching the vehicle's distance unit
gps_reconstructed_milesfloatMiles from GPS route reconstruction. Used to validate the odometer delta
reconciliation_delta_pctfloatPercentage difference between the odometer delta and GPS miles
reconciliation_flagenumOK under 2 percent, FLAGGED 2 to 5, WARNING 5 to 15, HELD over 15
eld_providerstringSource ELD for the segment: Motive, Geotab, Transflow, PlatformScience and others
ping_countintegerGPS pings used in route reconstruction for this segment
start_lat, start_lonfloatCoordinates at jurisdiction entry
end_lat, end_lonfloatCoordinates at jurisdiction exit
entry_time, exit_timeISO 8601Timestamps of jurisdiction entry and exit
time_zonestringIANA time zone for this segment
crossing_inferredbooleanTrue if the border crossing was inferred across a GPS gap
special_taxobject or nullNull for standard states. Populated for NY, OR, KY, NM, CT. See section 9

Field parity with ELD trip APIs

start_lat/lon, end_lat/lon, odometer_start/end, time_zone and distance (as miles_total) align with the trip records settlement teams already consume from ELD APIs. IFTA adds reconciliation, toll road attribution and special jurisdiction flagging on top.

daily_summary object

FieldTypeDescription
total_milesfloatSum of miles_total across jurisdictions
total_taxable_milesfloatSum of miles_taxable (excludes Oregon and non-IFTA)
total_ifta_excluded_milesfloatMiles in excluded jurisdictions
total_fuel_gallons_purchasedfloatFuel purchased on this date
jurisdictions_operatedstring[]Jurisdiction codes operated in
jurisdiction_countintegerNumber of jurisdictions operated in
has_special_taxesbooleanTrue if any mileage record carries a special_tax block
special_taxes_presentstring[]Programs triggered, for example ["NY-HUT"]

7. Fuel transactions

fuel_transactions is an array with one object per purchase event. Fuel is separate from mileage: it is bought at a point and consumed across jurisdictions, so IFTA apportionment happens at rollup time using fleet MPG, not per transaction.

FieldTypeDescription
transaction_idstringMapUp canonical transaction identifier
source_transaction_idstringOriginal ID from the card vendor or on-premise system
sourceenumEFS_INTEGRATION, COMDATA_INTEGRATION, WEX_INTEGRATION, ON_PREM, MANUAL, CSV_IMPORT
timestampISO 8601Purchase timestamp
purchase_jurisdictionstringTwo-character code where the fuel was bought
fuel_typeenumDIESEL, GASOLINE, LNG, CNG, PROPANE, BIODIESEL, DEF, OTHER
fuel_amount, fuel_unitfloat, stringQuantity and unit (gal or ltr)
price_per_unit, total_cost, currencyfloat, float, stringPrice per unit, total, USD or CAD
vendorstring or nullStation vendor name
ref_nostring or nullVendor reference or receipt number, for the audit trail
location_name, location_lat, location_lonstring, float, float (nullable)Station name or address and coordinates
odometer_at_fill, odometer_unitfloat or null, stringOdometer at purchase where captured
tax_paid_flagbooleanTrue if road tax was paid at the point of purchase. False for on-premise and some bulk purchases
tax_paid_gallonsfloatGallons on which tax was paid. Can differ from fuel_amount on partial-tax transactions
driver_id, driver_namestring or nullDriver, where captured by the card

On-premise fuel and DEF

Yard fills usually carry tax_paid_flag: false because no road tax is collected at the pump, and they need different tax treatment from retail purchases. The flag follows the purchase record, not the location: bulk fuel bought with tax paid keeps its tax_paid_gallons, and the bulk invoice and withdrawal records are the evidence behind it. DEF is tagged fuel_type: DEF and excluded from fuel apportionment, fleet MPG and tax-paid totals automatically.

8. Sample response

One truck operating in New York and Pennsylvania on one day, with one fuel purchase in New Jersey that morning. Values are illustrative.

{
  "status": "ok",
  "vehicle": {
    "mapup_truck_id": "fleet1-truck42",
    "unit_number": "4421",
    "vin": "1XXXXXXXXXXXXXXXX",
    "year": "2022", "make": "Freightliner", "model": "Cascadia",
    "base_jurisdiction": "MI",
    "registered_weight_lbs": 80000,
    "ifta_qualified": true,
    "distance_unit": "mi",
    "external_ids": {
      "motive_vehicle_id": null,
      "geotab_device_id": "G9-SN-44210",
      "transflow_unit_id": null,
      "tms_tractor_id": "4421",
      "efs_card_id": "EFS-001",
      "comdata_card_id": null,
      "wex_card_id": null
    }
  },
  "meta": {
    "date": "2026-05-12",
    "generated_at": "2026-05-15T04:32:11Z",
    "data_lag_days": 3, "data_complete": true,
    "time_zone": "UTC", "warnings": []
  },
  "mileage_records": [
    {
      "jurisdiction": "NY",
      "miles_total": 187.4, "miles_taxable": 187.4,
      "miles_toll_road": 52.5, "toll_road_flag": true,
      "toll_road_name": "NY-THRUWAY", "toll_road_source": "TOLLMATCH",
      "ifta_excluded": false,
      "odometer_start": 184220.1, "odometer_end": 184407.5,
      "odometer_source": "ECM", "odometer_unit": "mi",
      "gps_reconstructed_miles": 186.9,
      "reconciliation_delta_pct": 0.27, "reconciliation_flag": "OK",
      "eld_provider": "Geotab", "ping_count": 218,
      "start_lat": 42.998, "start_lon": -78.188,
      "end_lat": 41.084, "end_lon": -75.224,
      "entry_time": "2026-05-12T08:14:33Z",
      "exit_time": "2026-05-12T11:52:07Z",
      "time_zone": "America/New_York",
      "crossing_inferred": false,
      "special_tax": {
        "program": "NY-HUT", "applicable": true,
        "program_miles": 134.9,
        "ny_thruway_miles": 52.5,
        "ny_non_thruway_miles": 134.9,
        "hut_taxable_miles": 134.9, "hut_exempt_miles": 52.5
      }
    },
    {
      "jurisdiction": "PA",
      "miles_total": 96.2, "miles_taxable": 96.2,
      "miles_toll_road": 0, "toll_road_flag": false,
      "toll_road_name": null, "toll_road_source": "DERIVED",
      "ifta_excluded": false,
      "odometer_start": 184407.5, "odometer_end": 184503.9,
      "odometer_source": "ECM", "odometer_unit": "mi",
      "gps_reconstructed_miles": 96.4,
      "reconciliation_delta_pct": 0.21, "reconciliation_flag": "OK",
      "eld_provider": "Geotab", "ping_count": 121,
      "start_lat": 41.084, "start_lon": -75.224,
      "end_lat": 40.271, "end_lon": -76.882,
      "entry_time": "2026-05-12T11:52:07Z",
      "exit_time": "2026-05-12T14:05:40Z",
      "time_zone": "America/New_York",
      "crossing_inferred": false,
      "special_tax": null
    }
  ],
  "daily_summary": {
    "total_miles": 283.6, "total_taxable_miles": 283.6,
    "total_ifta_excluded_miles": 0,
    "total_fuel_gallons_purchased": 87.3,
    "jurisdictions_operated": ["NY", "PA"], "jurisdiction_count": 2,
    "has_special_taxes": true, "special_taxes_present": ["NY-HUT"]
  },
  "fuel_transactions": [
    {
      "transaction_id": "mp-fuel-00441892",
      "source_transaction_id": "EFS-20260512-00441892",
      "source": "EFS_INTEGRATION",
      "timestamp": "2026-05-12T07:48:00Z",
      "purchase_jurisdiction": "NJ",
      "fuel_type": "DIESEL", "fuel_amount": 87.3, "fuel_unit": "gal",
      "price_per_unit": 3.729, "total_cost": 325.64, "currency": "USD",
      "vendor": "Travel center",
      "ref_no": "TXN-987654",
      "location_name": "Travel center, Newark NJ",
      "location_lat": 40.713, "location_lon": -74.006,
      "odometer_at_fill": 184210, "odometer_unit": "mi",
      "tax_paid_flag": true, "tax_paid_gallons": 87.3,
      "driver_id": "D-1001", "driver_name": null
    }
  ]
}

9. Special tax handling

Five states impose mileage-based taxes alongside IFTA. IFTA detects when a truck operates in one, checks the program's weight gate against the vehicle, and populates the special_tax block on the record. There is nothing to request. Use include_excluded=true to retrieve Oregon records.

StateProgramRuleWhat the API returns
New YorkHighway use tax (NY-HUT)HUT applies on all New York public highways except toll-paid portions of the Thruway. Thruway miles are IFTA-taxable but HUT-exempt; other New York miles are bothny_thruway_miles (HUT-exempt, IFTA-taxable), ny_non_thruway_miles (HUT-taxable, IFTA-taxable), hut_taxable_miles, hut_exempt_miles
OregonWeight-mile tax (OR-WMT)Oregon is an IFTA member but does not collect fuel tax on these vehicles through IFTA; it levies a weight-mile tax on its own ledger. Oregon miles are kept out of the fuel tax totals and excluded from responses by defaultifta_excluded: true, special_tax.program: "OR-WMT", program_miles for weight-mile reporting
KentuckyWeight distance tax (KYU)Applies to vehicles over 59,999 lbs combined licensed weight, not farm-plated. Kentucky is an IFTA member; its miles stay in IFTA totals and are also flagged for KYUifta_excluded: false, special_tax.program: "KYU", program_miles
New MexicoWeight distance tax (NM-WDT)Applies to vehicles over 26,000 lbs declared gross weight. IFTA member; miles stay in IFTA totals and are flagged for WDTifta_excluded: false, special_tax.program: "NM-WDT", program_miles
ConnecticutHighway use fee (CT-HUF)Applies to combination vehicles of 26,000 lbs and over, rate by weight bracket. IFTA member; miles stay in IFTA totals and are flagged for HUFifta_excluded: false, special_tax.program: "CT-HUF", program_miles

special_tax object

FieldTypeDescription
programenum or nullNY-HUT, OR-WMT, KYU, NM-WDT, CT-HUF, NON-IFTA, or null
applicablebooleanTrue if the vehicle meets the program's weight gate
program_milesfloatMiles subject to the program's tax or fee
ny_thruway_milesfloat or nullNew York only. Toll-paid Thruway miles: IFTA-taxable, HUT-exempt
ny_non_thruway_milesfloat or nullNew York only. All other New York miles: IFTA-taxable, HUT-taxable
hut_taxable_milesfloat or nullNew York only. Equals ny_non_thruway_miles. Goes on the HUT return
hut_exempt_milesfloat or nullNew York only. Equals ny_thruway_miles. Keep the toll receipts for these

Per-program summary

StateProgramIFTA memberWeight gateFilingifta_excluded
NYNY-HUTYesUnloaded weight over 8,000 lbs (truck) or over 4,000 lbs (tractor)Quarterlyfalse
OROR-WMTYes, taxed by weight-mileOver 26,000 lbsOn Oregon's scheduletrue
KYKYUYes60,000 lbs and over combined licensed weightQuarterlyfalse
NMNM-WDTYesOver 26,000 lbs declared gross weightQuarterlyfalse
CTCT-HUFYes26,000 lbs and over, combination vehiclesQuarterlyfalse

Non-IFTA jurisdictions

Records from these jurisdictions carry ifta_excluded: true and special_tax.program: "NON-IFTA", and are omitted from all IFTA totals.

JurisdictionCodeReason
AlaskaAKNot connected to the contiguous highway network
HawaiiHIIsland geography; no IFTA interaction
District of ColumbiaDCNot an IFTA member
Northwest Territories, Nunavut, YukonNT, NU, YTCanadian territories; not IFTA members
MexicoMXOutside IFTA jurisdiction

Historical reconciliation

If a legacy system included Oregon in fuel tax totals, or did not carry Connecticut separately in periods before the highway use fee, the reconciliation shows a delta for those jurisdictions. Both are corrections, not errors, and should be documented as such.

10. Rollup endpoints

Weekly rollup: GET /weekly and GET /fleet/weekly

Aggregates daily records by truck, jurisdiction and week (Monday to Sunday). Designed for owner-operator fuel settlement. Fleet MPG is applied at the weekly level.

FieldTypeDescription
vehicleobjectFull vehicle object with external_ids
week_start, week_endYYYY-MM-DDMonday and Sunday of the week
jurisdictionstringTwo-character code
miles_total, miles_taxablefloatAll miles and IFTA-taxable miles for the week
fuel_gallons_purchasedfloatFuel purchased in this jurisdiction for the week
fuel_gallons_consumedfloatEstimated consumption using fleet MPG
fleet_mpg_appliedfloatFleet-level MPG used: total fleet miles divided by total fleet fuel for the week
tax_paid_gallonsfloatGallons where tax was paid at the point of purchase
special_tax_summaryobject or nullAggregated special program miles for the week
days_operatedintegerDays this truck operated in this jurisdiction during the week

Quarterly rollup: GET /quarterly

Aggregates to the IFTA filing period. Fleet MPG is applied at the quarter level. Feeds return preparation directly: taxable miles divided by fleet MPG gives consumed gallons; consumed less tax-paid gallons gives the net position per jurisdiction, to which the jurisdiction rate applies.

FieldTypeDescription
vehicleobjectFull vehicle object with external_ids
quarterYYYY-QNFor example 2026-Q1
jurisdictionstringTwo-character code
total_miles, taxable_milesfloatAll miles and IFTA-taxable miles for the quarter
total_fuel_purchasedfloatFuel gallons purchased in this jurisdiction
estimated_fuel_consumedfloatFuel consumed using the quarterly fleet MPG
quarterly_fleet_mpgfloatFleet-level MPG for the full quarter
net_tax_gallonsfloatConsumed minus tax-paid gallons purchased in the jurisdiction. Positive is tax owed, negative is credit. Purchased gallons without tax-paid evidence do not reduce it
ifta_excludedbooleanTrue for Oregon and non-IFTA jurisdictions
special_tax_summaryobject or nullAggregated special program miles for the quarter

Fleet MPG

IFTA fuel apportionment always uses fleet-level MPG for the reporting period, not per-truck or per-trip MPG. quarterly_fleet_mpg shows the exact value applied. Use /quarterly for filing, not accumulated daily or weekly records.

11. Vehicles

GET/vehiclesFleet vehicle master

Returns every vehicle on the account with IFTA qualification, registered weight, base jurisdiction and external ID mappings across all connected ELD, fuel card and TMS providers. Filter with ifta_qualified, eld_provider and base_jurisdiction. Pages with next_cursor.

GET/vehicles/{truck_id}Single vehicle

Look up one vehicle by mapup_truck_id, VIN, or any external ID. Returns the vehicle object from section 5.

GET https://api.mapup.ai/ifta/v1/vehicles?eld_provider=Geotab&ifta_qualified=true
GET https://api.mapup.ai/ifta/v1/vehicles/G9-SN-44210

12. Fuel purchases

GET/fuel-purchasesFuel transactions across all sources

Standalone fuel purchase endpoint. Returns normalized transactions across connected card networks (EFS, Comdata, WEX), on-premise stations and manual entries. Filter with truck_id, start_date, end_date, jurisdiction, source and fuel_type. Same schema as the fuel_transactions array in section 7, queryable without a date or truck.

POST/fuel-purchasesImport fuel purchase records

Imports purchases MapUp does not receive through a direct integration: on-premise fuel that is pushed rather than pulled, other vendors, receipts. Accepts one transaction or a batch array. Supported source values: EFS_INTEGRATION, COMDATA_INTEGRATION, WEX_INTEGRATION, ON_PREM, MANUAL, CSV_IMPORT. Returns each created transaction with its MapUp transaction_id. Duplicates against an existing source_transaction_id are rejected, not double-counted.

POST https://api.mapup.ai/ifta/v1/fuel-purchases
x-api-key: YOUR_API_KEY
Content-Type: application/json

[
  {
    "truck_id": "fleet1-truck42",
    "source": "ON_PREM",
    "source_transaction_id": "YARD-A-2026-05-11-0093",
    "timestamp": "2026-05-11T19:20:00-04:00",
    "purchase_jurisdiction": "MI",
    "fuel_type": "DIESEL", "fuel_amount": 120.0, "fuel_unit": "gal",
    "price_per_unit": 3.41, "total_cost": 409.20, "currency": "USD",
    "location_name": "Yard A",
    "odometer_at_fill": 184090, "odometer_unit": "mi",
    "tax_paid_flag": false, "tax_paid_gallons": 0
  }
]
{
  "status": "ok",
  "created": [
    { "transaction_id": "mp-fuel-00441901", "source_transaction_id": "YARD-A-2026-05-11-0093" }
  ],
  "rejected": []
}

13. Special tax summary

GET/special-tax/summaryProgram aggregates per truck and period

Consolidates NY HUT, OR WMT, KYU, NM WDT and CT HUF miles separately from the core IFTA response. Filter with truck_id, program, start_date, end_date and quarter. Each program returns its miles, the applicable weight gate and the filing frequency. This endpoint is the source for special tax filing preparation and is independent of the IFTA rollup.

{
  "status": "ok",
  "quarter": "2026-Q2",
  "programs": [
    {
      "program": "NY-HUT", "filing": "QUARTERLY",
      "trucks": [
        { "mapup_truck_id": "fleet1-truck42", "applicable": true, "program_miles": 1642.7,
          "ny_thruway_miles": 588.1, "ny_non_thruway_miles": 1642.7 }
      ]
    },
    {
      "program": "OR-WMT", "filing": "STATE_SCHEDULE",
      "trucks": [
        { "mapup_truck_id": "fleet1-truck17", "applicable": true, "program_miles": 903.4 }
      ]
    }
  ]
}

Special programs have different filing frequencies, weight gates and calculation methods. Keeping them in a dedicated module means a state changing a program, or adding one, does not change the core IFTA schema.

14. Exceptions

GET/exceptionsData quality issues and held records

Surfaces the records IFTA found and held rather than absorbed: missing fuel for trucks with mileage, vehicle IDs unmatched across providers, odometer reconciliation deltas over the threshold, GPS coverage gaps, inferred crossings, missing weights for a special program. Designed for fleet operations teams and integration health monitoring. Filter with truck_id, start_date, end_date, jurisdiction, reason and status. Pages with next_cursor.

FieldTypeDescription
exception_idstringStable identifier for the exception
mapup_truck_idstring or nullTruck, where the record is matched to one. Null for an unmatched device
external_idstring or nullThe device or card identifier for unmatched records
dateYYYY-MM-DDOperating date
jurisdictionstring or nullJurisdiction, where the exception is on a segment
reasonenumMISSING_FUEL, UNMATCHED_VEHICLE, ODOMETER_DELTA, GPS_GAP, CROSSING_INFERRED, MISSING_WEIGHT, FUEL_TYPE_MISSING
statusenumHELD, WARNING, FLAGGED, RESOLVED
detailstringPlain-language explanation of what was found
reconciliation_delta_pctfloat or nullFor odometer exceptions
detected_at, resolved_atISO 8601When found and when resolved
resolutionstring or nullThe note recorded when the exception was resolved
GET https://api.mapup.ai/ifta/v1/exceptions?start_date=2026-05-11&end_date=2026-05-17&status=HELD

{
  "status": "ok",
  "exceptions": [
    {
      "exception_id": "exc_01J8XA7Q",
      "mapup_truck_id": "fleet1-truck63", "external_id": null,
      "date": "2026-05-14", "jurisdiction": "OH",
      "reason": "ODOMETER_DELTA", "status": "HELD",
      "detail": "ECM odometer delta 241.0 mi against 188.7 GPS-reconstructed miles (27.7 percent). Segment withheld from rollup.",
      "reconciliation_delta_pct": 27.7,
      "detected_at": "2026-05-17T04:10:52Z", "resolved_at": null, "resolution": null
    }
  ],
  "next_cursor": null
}

15. Audit evidence

GET/audit/evidenceEvidence packet for one truck, date and jurisdiction

Returns the full evidence packet behind a jurisdiction figure: the raw GPS points used in route reconstruction, the crossing timestamps and coordinates, the odometer readings at each crossing, the toll road segment matches and the fuel receipt references. Designed for audit defense and regulatory inquiries. Requires truck_id, date and jurisdiction.

BlockContents
vehicleThe vehicle object, with external_ids
segmentThe mileage record for the jurisdiction and date (section 6)
gps_points[]timestamp, lat, lon, speed, odometer for every ping used in reconstruction
crossings[]type (ENTRY or EXIT), timestamp, lat, lon, odometer, inferred
toll_matches[]toll_road_name, start_time, end_time, miles, source
fuel_receipts[]transaction_id, ref_no, timestamp, purchase_jurisdiction, fuel_amount, tax_paid_flag
provenanceeld_provider, ping_count, odometer_source, generated_at, rule_version
GET https://api.mapup.ai/ifta/v1/audit/evidence?truck_id=fleet1-truck42&date=2026-05-12&jurisdiction=NY

For a whole audit request (many trucks, a quarter), submit an export with report: "audit_evidence" and the truck list; see section 16.

16. Exports

POST/exportsAsynchronous export for large fleets

Submit an export with a format (CSV, EXCEL, PDF, JSON), a report, a date range or quarter, and an optional scope (truck list, jurisdiction). Returns a job_id. For quarterly filing preparation and back-office bulk processing, where per-request calls are impractical at scale.

FieldValues
formatCSV, EXCEL, PDF, JSON
reportdaily, weekly, quarterly, ifta_report (the state-by-state summary, PDF), special_tax, fuel_purchases, exceptions, audit_evidence
start_date, end_date or quarterThe period
truck_idsOptional list; omit for the full fleet
jurisdictionOptional filter
include_excludedInclude Oregon and non-IFTA records
POST https://api.mapup.ai/ifta/v1/exports
x-api-key: YOUR_API_KEY
Content-Type: application/json

{ "format": "EXCEL", "report": "quarterly", "quarter": "2026-Q2" }

HTTP 202
{ "status": "ok", "job_id": "exp_01J8XB2M", "state": "QUEUED" }
GET/exports/{job_id}Poll for status and the download URL
{
  "status": "ok",
  "job_id": "exp_01J8XB2M",
  "state": "COMPLETE",
  "download_url": "https://api.mapup.ai/ifta/v1/exports/exp_01J8XB2M/download",
  "expires_at": "2026-07-09T04:00:00Z"
}

state is QUEUED, RUNNING, COMPLETE or FAILED. Download URLs expire; re-poll for a fresh one.

17. Errors and data freshness

Error payload

{
  "status": "error",
  "error": {
    "code": "TRUCK_NOT_FOUND",
    "message": "No vehicle matching truck_id 'fleet1-truck99' in fleet registry.",
    "error_id": "err_01J8X9..."
  }
}

error_id is present on 500 responses; include it when contacting support.

HTTP status codes

HTTPCodeMeaning and recommended action
200OKRecord returned and finalized. data_complete: true
202DATA_PENDINGInside the three-day window. Best-available data returned with data_complete: false. Re-fetch on day three
206DATA_INCOMPLETEOne or more jurisdiction records in HELD status (delta over 15 percent). Held records are omitted
400INVALID_DATEDate format incorrect or in the future. Use YYYY-MM-DD
400INVALID_JURISDICTIONJurisdiction code not recognized. Use two-character IFTA codes
400INVALID_QUARTERQuarter format incorrect. Use YYYY-QN
400MISSING_TRUCK_IDtruck_id is required on single-truck endpoints
404TRUCK_NOT_FOUNDtruck_id not in the fleet registry
404NO_DATA_FOR_DATENo GPS or ELD data for this truck on this date
429RATE_LIMITEDToo many requests. Back off using Retry-After
500PIPELINE_ERRORInternal error. Include error_id when contacting support

The three-day window

ELD devices buffer GPS and odometer data locally and transmit when connectivity returns. A three-day rolling window ensures late-arriving data is included before records finalize.

WorkflowRecommended pattern
Weekly settlementPull the prior Monday to Sunday week once its last day is three days old, so every day in it has finalized
Daily monitoringPull today minus three with data_complete: false accepted
Quarterly filingUse /quarterly, not accumulated daily records

Reconciliation flag values

FlagDeltaMiles usedMeaning
OKUnder 2 percentOdometerHigh confidence. ECM odometer and GPS agree
FLAGGED2 to 5 percentOdometerMinor variance. Logged for review
WARNING5 to 15 percentGPSSignificant variance. GPS used as fallback
HELDOver 15 percentWithheldRecord excluded pending review. Response returns HTTP 206

18. Relationship to TollGuru state mileage

The TollGuru Toll API returns estimated per-state mileage as part of pre-trip route calculations. The IFTA API returns different data: ECM odometer-reconciled, GPS-verified, finalized actual miles driven, structured for tax compliance. If you use both, expect small differences between TollGuru's estimated state miles and IFTA actuals. The IFTA API is the authoritative source for filing. TollGuru toll segment data feeds the IFTA API's Thruway and non-Thruway split for New York HUT.

19. Support

For integration questions, reconciliation setup or held record resolution, write to ifta@mapup.ai with your fleet account ID, truck_id, date range and any error_id values. Severities and response times are on the get started page.

Questions we have not answered here?

Write to ifta@mapup.ai with your fleet name and, if it is about a number, the unit, the jurisdiction and the period. We add the answer to these pages.

Back to IFTA