Workshop & operations

Fuel card import

Read the file, run the rules, release the flagged rows, post. Hundreds of statement rows become refuellings on the right vehicle — and the rows where something is off surface before they are booked.

FormatsProvider files · CSV · XML · JSON
Validation rules15, configurable per rule
Rule severitiesOff · info · warning · blocker
PickupManual · IMAP · FTP

Nobody retypes the fuel card statement any more

The import ships parsers for widespread fuel card providers and additionally reads generic CSV, XML and JSON files. Nothing ambiguous is guessed: a row without an unambiguous vehicle is held, not posted. Which irregularities actually stop a row is decided by a rule engine using the same severities the receipt review already uses.

What it does

What the module actually does

Provider files, generic CSV, XML and JSON

The provider is recognized from the file itself. Column names run through an alias table so 'Card no.' and 'Card number' are the same column — instead of failing a real statement on a mandatory-column check.

Import templates with field mapping

For files no shipped parser knows, you create a template: your columns onto the import's fields, maintained once and reused on every later run.

Five-step vehicle matching

By card number, licence plate and partial card numbers. Ambiguous means unmatched — nothing is guessed. Driver and cost centre come from the file, falling back to the assigned driver or the vehicle.

Configurable validation rules

Fifteen rules, each set to off, info, warning or blocker — among them unmatched vehicle, unknown card, odometer regression, implausible volume, a refuelling outside business hours and a duplicate transaction. Out of the box only the missing vehicle match holds a row.

Review queue with mandatory reasons

Held rows land in their own queue and are released or rejected individually or in bulk — each with a reason. A row is decided exactly once, and the triggering rule hits are logged with it so a later threshold change does not rewrite the old case.

Pickup from mailbox or FTP

Instead of uploading every file by hand, the system fetches it from an IMAP mailbox or an FTP account — per tenant, with a test button, error display and file name filter.

Duplicates, cancellation and re-runs

Every row carries a stable key, so reading the same statement twice does not post it twice. A run can be cancelled or re-run, and an audit trail records per run who decided what and when.

Electricity, gas and cross-border refuelling

Charging sessions are posted in kilowatt hours, not litres. Foreign refuellings carry their country, and the VAT rate is checked against the rate in force in that country on that day.

Workflow

Import run

  1. 01Read file
  2. 02Dry run with rules
  3. 03Release the flagged rows
  4. 04Post

Frequently asked questions

Then you create an import template and map your file's columns onto the import's fields once — for CSV, XML or JSON. Because the software runs on your infrastructure, a provider-specific parser can additionally be added as part of a customization project.

The import runs in two stages: first a dry run that only analyses and evaluates the rules, then a deliberate commit. Only rows that are either unremarkable or explicitly released get posted. Rows without an unambiguous match are held, not guessed.

That is a permission of its own, separate from the right to post an import. The reason is simple: moving a threshold silently changes what every future import lets through. Before saving, a changed rule can be simulated against an import that already ran.

Posted rows become a receipt and a refuelling — with vehicle, driver, cost centre, volume, price and fuel type. The highest imported odometer reading is additionally carried onto the vehicle; a backwards reading is silently discarded: the refuelling stays valid, only its odometer value is unusable.

See this module with your own data

30 minutes, no sales pressure: we show the module in the context of your fleet — self-hosted in your data centre, GDPR-compliant, made in Germany.