API changelog
Changes to the Transportial REST API that matter to integrations. For product changes, see the release notes.
2026.102026-10-13
eCMR, Peppol e-invoicing, carrier portal, Transportial network, gap-free invoicing, tax schemes for 36 countries with combined tax rates, and fuel-tax reporting
Added
- eCMR endpoints under
/consignmentNote/{id}(sign,amend,deliver,reservation,cancel,pdf,export) and/consignment/{id}/consignmentNote, plus public share-link variants under/consignmentNote:shared/.... - Peppol and UBL:
/administration/{id}/peppol(register, verify) andGET /invoice/{id}/ubl; inbound e-invoices are imported automatically. - Dock timeslots:
/location-timeslots,/timeslot-bookings/...(outbound, confirm, complete, accept-proposal) and/timeslot-booking-linkswith public booking and request endpoints. - Maintenance:
/maintenance-plans,/work-orders, and/trip/{id}/startCheckfor the pre-trip check; newafterMaintenanceDueSoonandafterTripStartCheckFailedtrigger events. GET /management/forecast/demandfor demand forecasts, and activity timelines such asGET /consignment/{id}/activity.- Quotes:
/quote/{id}/option/{lineId}/accept|decline,/quote/{id}/reviseandGET /quote/{id}/agreement. - Mail: drafts, signatures, labels, rules and saved views under
/mail/...; mailbox OAuth sign-in via/inbox/oauth/url. - OAuth 2.1 authorization server (
/oauth/authorize,/oauth/token,/oauth/register,.well-knownmetadata) and an MCP endpoint at/mcpfor AI assistants. - Developer portal: sandbox platform, secret rotation, test and redelivered webhooks under
/developer/.... - New integrations: Webfleet Tours (
web_fleet_tours, the Webfleet Tour & Activity API as its own connector next to WF.Connectweb_fleet) and a TransFollow eCMR connector; Webfleet can now delete orders of cancelled trips. - Parcel, express and freight carrier connectors (sector
parcel, featureparcelCarriers):dhl_express,dhl_parcel_nl,dhl_parcel_de,dhl_freight,ups,fedex,dpd(DPD Netherlands, Belgium and Germany) anddsv(myDSV road, air, sea and rail). Consignments of a trip forwarded under a capacity contract that uses the connector are booked on confirm, with labels and tracking numbers stored on the consignment; tracking completes pickup and delivery stops. Manual booking and tracking via/consignment/{id}/parcel/.... - Shippeo real-time visibility connector (
shippeo) for both the carrier and the shipper role: transport orders, milestones, ETAs, GPS positions and proof of delivery, with shared-secret authentication on its listeners. Idempotency-Keyrequest header on create endpoints: a retried request with the same key returns the stored response instead of creating twice (409while the first is still running,422when the key was used for a different request); TTL and operations configurable per platform.- Failed tasks (feature
failedTasksView):GET /failedTasks/{offset}/{amount},POST /failedTasks/retryandPOST /failedTasks/dismissover failed message automation runs, integration objects, workflow runs, app webhooks, network syncs and held orders. - Invoices:
POST /invoice/{id}/credit-and-reissue(full credit note plus a new draft copy); per-administration period close (revenue/cost closed-until dates and policy) andbookingDateon invoices. - Multiple currencies:
/exchange-ratesand/exchange-rate/{id}, a base currency per administration and converted totals on invoices. - VAT rule generator for pricing tax rates:
/pricing/taxRates:presets,/pricing/taxRates:generateand/pricing/taxRates:apply. GET /pricing/selectors/{entityType}: the curated selectors (GSJson paths with type, unit and possible values) that pricing module filters,fieldmodules, formulas and percentage start values can use per priced entity type.- Bill-to party and credit control:
billToon transport orders,defaultBillToon businesses,GET /business/{id}/credit, and thecreditOverrideflag (permissionoverride:creditLimit) when a credit rule blocks an order. - Accounting mapping rules with dimensions:
/accounting-mapping-rules(CRUD,order,evaluate). - Orders: duplicate check (
POST /transportOrders/duplicates), hold on orders, consignments and trips (/transportOrder/{id}/hold,/consignment/{id}/hold,/trip/{id}/hold), stops hidden from the executing carrier, recurring order schedules (/transportOrderSchedule/{id}withpreview,generateand generated orders) and order defaults per customer and location. - Assignment rules:
/assignment-rules(CRUD,order,preview,apply,generate,options, team conversion). - Validation rules in plain language:
/validation-rules(CRUD,draft,test,settings) and aVALIDATIONworkflow step. - Document inbox:
/document-inbox/...(upload, list, analysis, link, reprocess, apply or dismiss conflicts) and document classification and verification on/document/{id}; required documents (/required-documents/status,/required-documents/invoice-check) and QR codes on generated paperwork (/paperwork/codes). - Incidents:
/incident,/incident/{id}/followUp,/incidents/{offset}/{amount}andGET /transportOrder/{id}/incidents. - Carrier portal for supplier accounts:
/carrier/trips/{offset}/{amount}and/carrier/trip/{id}/...(start, finish, actions, ETA per stop, executor details, documents, location updates, start check, eCMR). - Transportial network (feature
transportialNetwork): forward orders to another Transportial platform via/transportial-network/links,/transportial-network/ordersand/transportial-network/order/{id}/review|resync. Received orders always arrive as a request. - Carrier compliance:
PUT /business/{id}/carrierStatus,POST /carrierCompliance:check,POST /carrierCompliance/laneHistory, and neutral CMR (/neutralCmr:resolve). - Customer portal: order cut-off times (
/portal/orderSettings,/portal/cutOff/check), change and cancel requests (/transportOrder/{id}/changeRequest(s),/orderChangeRequest/{id}/approve|reject|withdraw) and document upload (/transportOrder/{id}/portalDocuments). - Customer charge approval:
/quote/{id}/charge/{lineId}/submit|approve|reject|invoiced-externallyand public share-link variants; per-consignment tracking links (/consignment/{id}/tracking-link,regenerate,revoke). - Planning: soft time windows with tolerances, a hard-window tolerance and an "opening hours affect plan status" switch in
planningSettings.timingSettings; stop-duration rules and anchor stops (featureadvancedTiming);timingexplanation per stop; nearby orders (/nearby/forTrip/{tripId},/nearby/forConsignment/{consignmentId}); trip budget lock (/trip/{id}/budget), allocation strategy, revenue split basis andmax/min/round/ceilin pricing formulas. - Predefined roles (14, including
CARRIERandCUSTOMER) withPOST /role/{id}/resetandPOST /role/{id}/duplicate. - Driver app tracking settings exposed to OpenMove (platform tracking configuration).
financialSettings.invoiceIssueSettingswithnumberOnSendanddateOnSend(both defaulttrue).- Coupon codes: coupons get a
codeandtrialDays(a coupon gives a discount, a free trial, or both). Customers redeem a code withPOST /platform/billing/couponor at signup withcouponCodeonPOST /user/register; the billing JSON shows the running discount asactiveDiscount. - Live ETA engine per platform:
planningSettings.etaSettings.engine(internalby default,routing,transportial,ptv_online,here,google,osrm) andengineIntervalMinutes(default 5). The leg being driven is re-estimated by that engine on position updates at most once per interval and on every stop change; PTV Developer uses its native ETA call on a stored route id. Failures fall back to the internal estimate. - Jurisdictions:
GET /jurisdictions?country=US,CA(operationIdget:jurisdictions, any authenticated user) returns every country (ISO 3166-1 alpha-2 code and name), plus the subdivisions (ISO 3166-2 codes such asUS-TX,CA-ON,DE-BY,NL-NH) of the requested countries. Source: Natural Earth admin-1 (public domain). Cacheable for a day. Errorjurisdiction_unknown_country(400). These ISO codes are the jurisdictions used by tax settings, tax registrations and exemptions, and fuel-tax reporting. - Fuel and road tax reporting (feature
fuelTaxReporting, permissionread:fuelTax; without the feature every route answers400fuel_tax_reporting_disabled). Schemes have three engine types:fuel_tax_return(IFTA),distance_tax(per-distance taxes) andfuel_tax_refund(fuel excise refunds). Bundled US schemes:ifta,us-or-wmt,us-ny-hut,us-ky-kyu,us-nm-wdt,us-ct-huf(refund and non-US distance schemes below). -GET /fuel-tax/schemes(get:fuelTaxSchemes):schemes[]withkey,type,name,jurisdictions,period(quarterly|monthly|annual),enabled,custom,filing,source,legalBasis,vehicleFieldsandunits { distance, volume, weight, currency }. -GET /fuel-tax/returns/{scheme}/{year}/{period}?fuelType=&vehicleIds=(get:fuelTaxReturn): the return of one scheme for one period (period= quarter 1-4 or month 1-12). Every type carriesscheme,type,name,year,period,status(final|preliminary|missing),dueDate,units,currencyandwarnings[].fuel_tax_return:fuelType,fleetMpg,totalMiles,totalGallons,lines[]per member jurisdiction (total and taxable distance, taxable / tax-paid / net taxable volume, rate, surcharge rate, tax due, surcharge due, credit, net),vehicles[](qualified,qualificationSource, miles, gallons, MPG,gapMiles),totals,nonMemberMiles[],baseJurisdiction,licenseNumber.distance_tax:state,jurisdictions,filing,totalMiles,totalDistance,tax,totals,legalBasis,source,effectiveDate,lines[]per vehicle (weight, axles, method, distance, rate, tax).fuel_tax_refund:lines[]per jurisdiction (litres,refundableRate,refund),vehicles[],totals. -GET /fuel-tax/returns/{scheme}/{year}/{period}/export(get:fuelTaxReturn:export): the same return as an Excel (.xls) download. -GET /fuel-tax/rates/{scheme}/{year}/{period}(get:fuelTaxRates):rates[]per jurisdiction (label,rate,surchargeRate,unit,currency;fuelTypefor matrix rates), including the platform's rate overrides. -GET /fuel-tax/jurisdiction-miles?from=&to=&vehicleIds=(get:fuelTaxJurisdictionMiles): distance per vehicle per jurisdiction (jurisdiction,name,country,countryName,miles,kilometres,gapMiles) and per country;from/toaccept an ISO instant or a zone-less local date-time; at most 400 days per request. - Errors:fuel_tax_unknown_scheme,fuel_tax_invalid_period,fuel_tax_unknown_fuel_type,fuel_tax_invalid_date, andfuel_tax_invalid_schemewhen settings are saved with an invalid custom scheme. - Distance per jurisdiction is derived from the vehicles' location updates worldwide (ISO 3166-2 subdivision where boundary data exists, else the country), computed per vehicle and platform-local day on first use and cached; days withinfuelTaxSettings.aggregateSettleDaysof today are recomputed on every request and never stored. - Insight reportfuelTaxReturn("Road and fuel tax return") for message automation report attachments, parametersscheme(empty = first enabled scheme),yearandperiod(both empty = last completed period) andfuelType. Only listed when the feature is on. - Platform settings (
PUT /platform/settings): -fuelTaxSettings:schemes(enabled scheme keys, default none),baseJurisdiction(ISO),iftaLicenseNumber,fuelTypes(default["diesel"]),gpsGapMaxKm(default 50),maxPlausibleSpeedKmh(default 160),aggregateSettleDays(default 1),rateOverrides[] { scheme, year, period, jurisdiction, fuelType, rate, surcharge }(quarteraccepted as a write-only alias ofperiod; emptyfuelType= every fuel type) andcustomSchemes[](owndistance_tax/fuel_tax_refundschemes in the bundled format, validated on save). -pricingSettings.vatRuleSettings.taxBlocs[] { key, name, members }: trade blocs (members are ISO country or subdivision codes);EUalways exists and anEUentry replaceseuMemberStates. -pricingSettings.vatRuleSettings.subdivisionOverrides[] { code, intrastateFreightTaxable, rate, invoiceTax, invoiceRate }: corrections of a scheme's subdivision data, keyed by ISO 3166-2 code;invoiceTax: trueadds a scenario and rule for the subdivision. -pricingSettings.vatRuleSettings.customSchemes[]: own tax schemes in the shipped format; a custom scheme replaces the shipped scheme of the same jurisdiction, others are added. Validated on save. - Businesses:
taxRegistrations[] { jurisdiction, number }(VAT, GST/HST, QST or sales-tax registrations besidesvat, per ISO country or subdivision) andtaxExemptions[] { jurisdiction, certificateNumber, validUntil }(exemption or resale certificates; without a number an exemption is ignored;validUntilinclusive, null = no expiry) on create, update and read. - Vehicles:
fuelTax(nullable):iftaQualified(null = derive: 3+ axles or registered gross weight over 26,000 lb),registeredGrossWeightKg,axleCount,baseJurisdiction,plateJurisdiction,iftaDecal,nyHutMethod(gross|unloaded),nyHutTable(1-10),nmOneWayHauler,fhwaClass(1-13),weightDistanceExempt. - Fuel transactions:
jurisdiction(ISO subdivision or country of the fuel stop; derived from the location on save when blank) andtaxPaid(defaulttrue;false= bulk or untaxed fuel, no tax-paid credit). - Combined tax rates (tax components) on
GET /taxRates,POST /taxRate,PUT /taxRate/{id},PUT /taxRatesand tax rate search:components[] { name, jurisdiction, percentage, vatCategory, vatExemptionReason, vatExemptionReasonCode, creditCode, debitCode, compound, sequenceNr }(default[]). With components the rate'spercentageis derived and stored as the effective rate (sum; acompoundcomponent is charged on the net plus the earlier components; 6 decimals, e.g. GST 5 + compound 9.975 = 15.47375) and any sentpercentageis ignored; the rate'svatCategory, when null, becomes the first component's category;compoundis forcedfalseon the first component andsequenceNris renumbered in list order. Emptycomponentskeeps the single-percentage behaviour, and a rate with exactly one component behaves as a plain rate. Tax-rate copies embedded in amounts (line.value.taxRate) omit an emptycomponentskey. New validation errors (400):tax_rate_component_name_required(paramsindex),tax_rate_component_percentage_invalid(name,percentage),tax_rate_effective_percentage_invalid(percentage). - Tax breakdowns (read-only, ignored on write):
invoice.lines[].taxesandquote.lines[].taxes(TaxComponentAmount { name, jurisdiction, percentage, taxableAmount, taxAmount, vatCategory, compound }, one row for a rate without components,[]without a tax rate) and document-levelinvoice.taxBreakdown/quote.taxBreakdown. Rates without (or with one) component group by VAT category and percentage, as in the EN 16931 VAT breakdown; components of combined rates group by name, jurisdiction, category and percentage. Invoice rows add up toinvoice.tax(group tax = rounded summed taxable × percentage, lines without tax rate form aZ0% row); quote rows are the sums of the included lines'taxes. Tax is calculated per line per component, half-up, in currency minor units. - Document templates can bind
taxBreakdown[].*andlines[].taxes[].*. - Tax schemes: subdivision data (also in
vatRuleSettings.customSchemes) and its effective-datedrates[]may carrycomponents[] { name, jurisdiction, percentage, compound, vatCategory };createMissingTaxRatesthen creates a combined rate (named "<Subdivision> <component 1> + <component 2> <effective>%"), listed with its components intaxRatesToCreate[].components. AsubdivisionOverridesentry withrate/invoiceRatedrops the components. - Tax schemes for 36 countries (
GET /pricing/taxRates:presets,presetCountry): NL, BE, DE (templateeu-vat, generated output unchanged); AT, BG, CY, CZ, DK, EE, ES, FI, FR, GR, HR, HU, IE, IT, LT, LU, LV, MT, PL, PT, RO, SE, SI, SK (new templateeu-vat-movement=eu-vatplus exempt domestic legs of international movements, national law and reverse-charge wording, effective-dated standard rates since 2020); GB, CH (with LI), NO, AU, NZ, SG, AE (GCC freight international), CA (international zero-rated; by destination province: HST ON 13 / NB, NL, PE 15 / NS 14, 15 before 2025-04-01; GST 5 + QST 9.975 for freight within Québec; GST 5 elsewhere) and US. - Scheme format additions (shipped schemes and
vatRuleSettings.customSchemes):placeholders(template defaults such asreverseChargeWording/reverseChargeLegalBasis, overridable per scheme; every placeholder used needs a value), subdivisionvariants[] { key, name, rate, rates, components, invoiceNote, legalBasis }expanded by scenarios/rules withsubdivisionVariant(e.g. CAwithin), and research metadataconfidence,sources[],notes[], also returned per preset by the presets endpoint. - International movement and combined transport facts:
taxContext.combinedTransport(a consignment of the order has the existing combined transport switch ("Is combined transport") on; the platform settingplanningSettings.alwaysCombinedTransportsets it by default on new consignments) and the derivedtaxContext.internationalMovement(combined transport, or the route crosses a country border; a trip has it when one of its orders has it). Used by theeu-vat-movement, GB, CH, NO, CA, AU, NZ, SG and AE rules to zero-rate a domestic leg of an import or export. No new field on transport orders. - New road and fuel tax schemes (
GET /fuel-tax/schemes):fuel_tax_refund:be-professional-diesel,fr-ticpe-gazole-routier,es-gasoleo-profesional,it-gasolio-commerciale,hu-commercial-diesel,si-commercial-transport-diesel,ie-diesel-rebate-scheme,pt-gasoleo-profissional,hr-commercial-diesel,ro-diesel-excise-compensation,au-fuel-tax-credit-heavy-vehicles;distance_tax:nz-ruc,ch-lsva(CH + LI),is-kilometragjald. ES, SI, CH and IS are monthly, the rest quarterly; km / l / kg in EUR, HUF, RON, AUD, NZD, CHF or ISK. Scheme entries gainrateBasis(per_distance|per_tonne_km|per_1000_km, distance taxes),vehicleProperties(e.g.["emissionStandard"]),relatedAidsandconfidence. - Refund returns:
aidLines[](lines of related temporary aids:kind: "aid",aid,aidName; refundlines[]carrykind: "refund"),aids[] { key, name, status, litres, amount, currency, legalBasis, source },totals.aid,totals.total,totals.cappedLitres, per vehicleaid,cappedLitres,eligibilityNoteanddistanceKm(when a litres-per-km cap applies), pluslegalBasis,source,confidence. Linejurisdictioncan be a region grouping subdivisions (e.g.FR-20RCorse). Refund schemes support caps (litres per vehicle per year/period, litres per GPS km), eligibility by weight, UNECE vehicle category and minimum Euro class, and formula rates (excise minus floor). - Distance tax returns:
rateBasis,confidence; lines addtonneKm(per tonne-km),vehicleType(NZ RUC type) andeuroClass(CH);weightis the charged weight (trailer added, caps applied) andrateis per km, per tonne-km or per 1,000 km. Rates endpoint units addtkmand1000km; aid rates are listed with the label prefixaid: <name>. - Vehicle `fuelTax` fields:
vehicleCategory(UNECEN1-N3,M1-M3,O1-O4),combinationType(rigid|tractor|combination|trailer, null = derived from the vehicle type),trailerGrossWeightKg,rucVehicleType. - New fuel-tax warning codes:
rates_partial,excise_missing,aid_rates_preliminary,refund_cap_reached,cap_distance_unknown,vehicle_type_missing,emission_class_missing,trailer_weight_missing; scheme warningses_aid_depends_on_excise,hu_crisis_rate_diesel,ie_licensed_operators_only,ro_romanian_carriers_only,au_auxiliary_equipment,nz_ruc_prepaid_licences,ch_lsva_trailer_per_trip,is_discounts_not_applied.vehicle_not_eligiblecarriesreason,vehicle_eligibility_unknowncarriesmissing, andrates_preliminary/rates_missingcarrysource. - Tax rule facts: pricing tax-rate rule filters on transport orders and trips can select
taxContext:taxContext.issuer|customer|departure|arrival.{country, subdivision, blocs},taxContext.customer.{vatNumber, hasVatNumber, registrations, registeredIn},taxContext.countries,taxContext.subdivisions,singleCountry,singleSubdivision,crossesCountryBorder,crossesSubdivisionBorder,taxContext.blocs.<KEY>.{customerIn, departureIn, arrivalIn, within, intra, leaves},taxContext.customerExemptandtaxContext.available. Computed only while evaluating rules that reference it. - US tax scheme (
presetCountry: "US") for the tax rule generator: tax-exempt customers, transport to or from outside the US, interstate transport, one rule per state whose tax on freight goes on the invoice (Hawaii general excise tax, New Mexico gross receipts tax) and everything else untaxed. County and city rates are not in the data. - The
financeand fleet permission groups of the predefined roles include*:fuelTax. - High-value goods fact:
taxContext.highValueGoods(a consignment of the order hashighValueGoods, or one of its goods items has). Consignment rows (/consignmentstable views) now returnhighValueGoods.
Changed
POST /pricing/modules/from-documentsaccepts thetargetEntityTypeandcurrencyof the pricing being edited and returnswarnings; generated modules use the serialised enum values (trip,km,hours, ...), are validated against the selector catalogue and repaired once by the AI. Excel uploads to AI generators now include every sheet, and CSV/JSON uploads are read as text.- OpenAPI documentation expanded across the API with consistent tags, descriptions and validation rules in the schemas.
- Driver trip lists accept
?group=active|upcoming|history|cancelled. - Invoice and quote list filters (including overdue) are now applied by search.
- Database constraint conflicts now return HTTP 409 with a translatable
constraint_*error key instead of a generic 500. - Behaviour change: outgoing draft invoices no longer get a number (
nameempty,number0). The gap-free number is assigned when the invoice is issued (POST /invoice/{id}/send, statusopen, or created as open), and withdateOnSenda date still on the creation day moves to the issue day. SetnumberOnSendtofalseto keep numbering at creation. - Issued outgoing invoices are locked: printed fields can no longer be changed (
invoice_issued_locked) and they cannot be deleted. The bill-to and issuer details are frozen at issue and returned as issued. - Accounting connectors (Exact, Twinfield, Moneybird, AFAS, e-Boekhouden, SnelStart, QuickBooks, Salesforce) push outgoing invoices only once issued; Exact receives the invoice when it is sent.
- Behaviour change:
invoiceson transport orders is read-only; it is ignored on create and update. planStatusis the single timeliness verdict of stops and trips. It now also checks time-window constraints (best fit), soft windows with their tolerance and anchors (and opening hours when enabled); the hard tolerance is configurable (hardWindowToleranceMinutes, default 5). The time-window breach exception fires ontoo_late.- Customer and supplier accounts, and share-link requests, receive filtered financial data: customers never get cost-side fields (
expectedCost,pricingElements, ledger entries, budgets, purchase documents, credit data), suppliers never get revenue-side fields (expectedRevenue, the customer's quote and invoices). Trips are returned with a fixed set of non-financial fields. - Portal quote and invoice searches return documents where the account's own business is the counterparty, in the requested
direction(inorout); suppliers can no longer answer their own quotes. - Inviting or creating a user requires a role.
- Tax rule generator (
GET /pricing/taxRates:presets,POST /pricing/taxRates:generate,POST /pricing/taxRates:apply): - Schemes are data in one format for every jurisdiction (NL, BE and DE include the sharedeu-vattemplate); generated NL/BE/DE rules are unchanged. - Request:createMissingTaxRates(create a tax rate, jurisdiction the ISO 3166-2 code, categoryS, for every per-subdivision scenario without one; apply needscreate:taxRateor settings access) andeffectiveDate(generate with the rates in force on that date; default today).presetCountryalso accepts the ISO 3166-2 code of a custom subdivision scheme. - Presets response:presets[]now carryjurisdiction,law,standardRate,scenarios,subdivisions(after the platform's overrides, rates in force today),includes, effective-datedratesandcustom; new top-leveltaxBlocsandtemplates. - Generate/apply response:mapping[]entries addname,description,subdivision,subdivisionName,subdivisionRateandcreateTaxRate; newtaxRatesToCreate[](scenario,subdivision,name,jurisdiction,percentage,vatCategory,taxRateIdafter apply). - Per-subdivision scenario keys use ISO codes (intrastate:US-HI). - Issued invoices keep their tax: the breakdown of a sent invoice is computed from the tax-rate copies frozen on its lines; saving an issued invoice no longer refreshes those copies from the current tax rate settings. Credit notes from
credit-and-reissuekeep the original lines' copies, components included. - UBL / Peppol: an invoice with a line whose rate has two or more components is refused with
400ubl_multiple_tax_components_unsupported(paramsinvoice,taxRates) onGET /invoice/{id}/ubl, and Peppol delivery fails with the same (non-retryable) error, because Peppol BIS allows one VAT category per line. Single-component rates export as a normal VAT rate. - Default invoice and quote PDFs print one tax row per
taxBreakdownentry ("<name> <percentage>%") whenever there are two or more entries (also for two plain rates such as 21% and 9%) or a component of a combined rate. - Accounting connectors (Moneybird, Exact Online, QuickBooks, SnelStart, e-Boekhouden, Twinfield, AFAS) book a combined rate as one tax at its effective percentage under the rate's own
creditCode/debitCode(a blank rate code falls back to a code shared by all components; QuickBooks uses its imported tax code) and log a warning. e-Boekhouden refuses the sync of a taxed combined rate whose code is not an e-Boekhouden VAT code. Stripe receives one tax rate at the effective percentage. - Combined rates on quotes round the net to minor units; rates without components keep the previous quote calculation.
- Fuel-tax return
statusispreliminarywhen a refund, aid or distance rate of the period is unpublished or low-confidence, or part of the period has no rate, andmissingwhen there is no rate at all (e.g. a formula refund without a known excise).dueDatemay be""for schemes settled from card data or invoiced/prepaid (ES, PT, HR, AU, NZ RUC, CH LSVA, IS). Custom schemes accept the new refund/distance keys (seeroad-taxes/index.json_readme) anddueDate: "none",{yearsAfterPeriod}or{endOfYearsAfter}. vatContextis now an alias oftaxContextthat keeps every earlier flat field (customerCountry,customerVatNumber,customerHasVatNumber,customerInEu,issuerCountry,departureCountry,arrivalCountry,departureInEu,arrivalInEu,countries,singleCountry,withinEu,leavesEu,intraEu,available), so stored rules keep matching. The EU fields now come from theEUtrade bloc.pricingSettings.vatRuleSettings.euMemberStatesis still read, buttaxBlocswith anEUentry takes precedence.Consignment.combinedis documented with both its uses: the combined transport switch, and consolidation byPOST /consignments/combine(which also setsconsignment). Only a consignment withoutconsignmentcounts as combined transport fortaxContext.combinedTransport.
Deprecated
- Selecting
vatContext.*in new rules: usetaxContext.*. Existing rules keep working. fuelTaxSettings.rateOverrides[].quarter(input alias only; useperiod).
Removed
- Routing of inbound messages to vehicle chats; inbound mail, SMS and WhatsApp messages are routed to the chat of the consignment they mention.
- The unfinished uturn and PSA booking options.
Fixed
- Booking-aware routing no longer renumbers consignment stop sequences.
- Moneybird connections resolve their triggers correctly after OAuth sign-in.
- Ledger attribution of quote costs and revenue between trips and transport orders corrected.
- Long-running queries and lock waits are now bounded, preventing requests from hanging.
- The
permissions.txtgenerator no longer drops permissions declared outside its scan (override:creditLimit,read:all-invoices).
Security
- Failed two-factor attempts are now limited per session.
- Hardened validation of mailbox server connections.
- eCMR share links can require a one-time verification code before signing.
- Integration credentials are no longer returned to non-admin users in notification preferences and platform responses.
- Requests without an authenticated context are refused on protected routes, and live updates to portal users only contain what they may see.
2026.092026-09-30
Map planning, a rebuilt Marketplace and first-to-accept dispatch
Added
- Trip offers for first-to-accept dispatch:
/trip/{id}/offers:nearby,/trip/{id}/offers:withdraw,/trip/{id}/offers,/trip-offers/open,/trip-offer/{id}/acceptand/trip-offer/{id}/decline. - Marketplace endpoints
/marketplace/search/{offset}/{amount}(live freight exchange search) and/marketplace/import(turn an offer into a transport order). - Return load suggestions:
/recommendations/returnLoad/forTrip/{tripId}. - Map planning search endpoints
/mapPlanning/consignments,/mapPlanning/tripsand/mapPlanning/vehicles. - User dashboards:
/dashboards,/dashboard,/dashboard/{id}and/dashboard/{id}/duplicate. - Workflow template catalog:
/workflow-templatesand/workflow-template/{id}/duplicate. - Lean board rows for vehicles (
/vehicles/board/{offset}/{amount}) and a prioritized trip board per driver (/chauffeur/{id}/trips/prioritized/board/{offset}/{amount}); route geometry via/route/{id}/lineString. - New connectors: X12 EDI (204 load tenders in; 990, 214 and 210 out, with 997 acknowledgements) over hosted FTP, SFTP or API; Samsara, Motive and Geotab telematics; QuickBooks Online; DAT and Truckstop load boards.
- Messaging connectors for SMS and WhatsApp via Twilio, Bird, Vonage and Meta, with inbound webhooks and signature verification.
- Platform settings for regions (units, formats, time zones), first-to-accept dispatch, live activity, AI model, marketplace and legal terms version; addresses gain
stateand a second address line, locations a time zone.
Changed
- Board and list endpoints return lean rows for faster loading; second-level caching added for frequently read reference data.
- Pricing module fields can be typed as quantity or price.
- Webfleet, Trimble, Transics and FleetAccess activity imports now record richer activity attributes.
- Unit conversion accepts both comma and dot as decimal separator for lengths and weights.
Fixed
- A transport order is no longer completed while some of its consignments are still open.
- Optimizer requests keep delivery dates authoritative, narrow them with opening hours and include trailer depots.
- A failed stop attempt is resolved once a later attempt of the same type succeeds; board computer failures now trigger replanning.
- Transics planning places are processed individually and keep their place IDs when a cancellation result is missing.
- Trip progression keeps its integration origin when processed asynchronously.
- Shared links for trips, transport orders, quotes and invoices now open correctly when the link comes from a different portal address.
2026.082026-08-31
Transportial Desktop, automatic exceptions and smarter ETAs
Added
- Insights endpoints:
/insights/consignments/lanes:byDateRange,/insights/invoices/openAging,/insights/quotes/conversion:byDateRange,/insights/customers/revenue:byDateRange,/insights/chauffeurs/trips:byDateRange,/insights/vehicles/utilization:byDateRangeand/insights/chauffeurs/tachoActivities:byDateRange. - Grouped execution:
/trip/{id}/actions/lifecycleupdates the lifecycle of several actions at once;/trip/{id}/action:unplannedrecords an unplanned stop;/trip/{id}/locationUpdateposts a location update for a trip. - Planned actions:
/planned-actions/plan,/planned-action/{id}and/planned-action/{id}/time; timeslot bookings via/timeslot-bookings. - ADR lookup by UN number:
/adr/un-numbersand/adr/un-numbers/{unNumber}. - Document templates:
/documentTemplate/generate(AI generation),/documentTemplate-templatesand/documentTemplate-template/{id}/duplicate(catalog). - Integrations:
/integration/{id}/trace/{type}/{traceId},/integration/schedule/previewfor cron schedules, and/integration/virtualFtp/detailsfor the hosted FTP server. - Chat:
/chats/messages/{offset}/{amount}lists messages across all chats; equipment sensors via/transportEquipments/sensors/latest/{offset}/{amount}. - Translation usage per platform:
/platform/{id}/translation/usage; DeepL and Google Cloud Translation providers with translation memory. - New connectors: rFMS (DAF, Daimler, Iveco, MAN, Renault, Scania, Volvo), FleetAccess, SnelStart, e-Boekhouden, air and ocean shipment tracking, and the PTV OptiFlow optimizer.
Changed
- Routing engine can be set to
NONE; new platform settings for route alternatives, cost calculation mode, recalculation mode, ETA tuning, quote route calculation, trip cancellation and grouped action execution. - Integrations sync incrementally with a cursor, dispatch work in parallel and use pooled outbound HTTP connections, making imports significantly faster.
- Integration request logging can be enabled per connector; integrations accept connector-specific options.
- Message automation templates support
??(coalesce),:trimand:replace. - Server messages are now available in Spanish, French, Hausa and Romanian.
Deprecated
- PTV xTour (xServer 1) is retired on 1 September 2026; switch to another routing or optimization engine.
Fixed
- ETA timelines no longer double-count waiting time.
- Location updates and position fetching for Transics and other board computers are faster and more reliable.
- Vehicle search no longer fails on incomplete records.
Security
- Secrets are redacted from integration logs and traces.
- The hosted FTP server supports and can enforce FTPS.
2026.072026-07-31
Fleet FMS view, a new route planner and driver performance
Added
- Fleet telematics:
/vehicle/{id}/sensors,/vehicle/{id}/sensors/values/{fromDate}/{toDate},/vehicles/sensors/latest/{offset}/{amount},/sensors/{id}/aggregates/{start}/{end},/vehicle/{id}/tacho-times,/vehicles/tacho-times/{offset}/{amount}and/vehicles/utilization/{fromDate}/{toDate}/{offset}/{amount}. - Driving style:
/vehicle/{id}/driving-style/{fromDate}/{toDate},/chauffeur/{id}/driving-style/{fromDate}/{toDate}and/vehicles/driving-style/{fromDate}/{toDate}/{offset}/{amount}. - Insights:
/insights/vehicles/idlingFuelCost:byDateRangeand/insights/vehicles/temperatureCompliance:byDateRange; geofenced locations via/locations/geofences/{offset}/{amount}. - Driver reviews:
/driver-review,/driver-review/{id},/driver-reviews/{offset}/{amount}and/driver-reviews/chauffeur/{id}/{offset}/{amount}. - Order templates:
/transportOrder/{id}/saveAsTemplate,/transportOrder/{id}/createFromTemplateand/transportOrders/templates/{offset}/{amount}. - Lean list endpoints:
/trips/list/{offset}/{amount},/consignments/list/{offset}/{amount},/transportOrders/list/{offset}/{amount}and/trips/board/{offset}/{amount}. - Planning:
/planned-actions,/chauffeurs/availability,/fleet/{id}/history,/vehicle/{id}/events/{offset}/{amount}and/chat/{id}/read. - AI mapping generation for data sources:
/integration/dataSource/mapping:generate; value mapping rules and test assertions on integrations. - Payment provider webhooks:
/payment/webhook/stripe/{platformId},/payment/webhook/mollie/{platformId}and/payment/webhook/adyen/{platformId}. - New connectors: Salesforce (accounts, transport orders, invoices), Squarell telematics and TRAVIS truck parking bookings; Webfleet planning updates at stop level.
Changed
- Contracts gain a contract number, validity period and identifiers; transport orders can reference a contract.
- Integrations no longer echo a change back to the integration that caused it, and outbound handlers can be limited to changes in the fields they declare.
- Trip updates from live providers wait for confirmation instead of moving ahead when a confirmation is required.
- AI extraction no longer fills fields that are disabled on the platform.
- Integration records older than 30 days are cleaned up automatically to keep processing fast.
Fixed
- Re-saving a transport order with attached files no longer breaks the attachments.
- Quote and pricing element fixes, including quantities and tax rate comparison.
- Forwarded trips and user registration edge cases.
Security
- Added cross-tenant checks on additional endpoints.
2026.062026-06-30
Compliance overview, AI data assistant and bulk order editing
Added
- Compliance endpoints:
GET /compliance/overview, posting declarations (search, create,POST /posting-declaration/{id}/declare, dismiss), customs declarations (CRUD and search) andPOST /certificates/expiring:check. - Fuel transactions: CRUD and
POST /fuel-transactions/{offset}/{amount}search. Transactions are flagged automatically when the quantity exceeds the vehicle's tank capacity. - Pallet movements: CRUD on
/pallet-movementsandPOST /pallet-balances/summaryfor net balances per counterparty and pallet type. - Damages filtered by vehicle or transport equipment, e.g.
/damages/vehicle/{id}/{offset}/{amount}. - Energy and service booking types, plus
POST /bookings/energy/plan/{tripId}to plan a fueling or charging stop for a trip (automatic planning is opt-in through the platform energy settings). POST /insights/chatanswers natural-language questions over your data, andPOST /insights/customers/emissions:byDateRangereturns emissions per customer.GET /vehicle/registry-lookup/{licensePlate}?country=looks up vehicle details in a connected national vehicle registry.POST /location/geocode/validateAddressGeoReferencevalidates an address, with a new platform setting to turn validation on.POST /transportOrders/bulkEditupdates status, customer, executing business, team, administration or action time windows for many transport orders at once.- Alerts gained SLA and assignment fields, and the platform has new cabotage alert settings. Integration data sources gained a
sequentialProcessingoption, and field mappings can append to arrays.
Changed
- Transport order, consignment and trip models now expose
allDocumentswith every related document. - Transics: places (locations) now sync through their own insert, update and cancel tasks, separate from trips, which supports differently configured Transics environments.
- Webfleet: orders now include the load type, and planning updates are more robust.
- Pricing: time-based modules use the trip's estimated end date, and vehicle, transport equipment and driver price modules are resolved by query.
- The transport order PDF is rendered by the PDF service with a new layout.
Fixed
- Linked-mail lookups failed because of a faulty query.
- Looking up the default language no longer throws an error when no default is configured.
- Quote creation now falls back correctly when quote lines are missing.
- Incoming integration updates on actions and locations are applied correctly.
- File metadata columns are widened so long MIME types and extensions are stored correctly.
Security
- Hardened access checks on several endpoints and on file downloads.
2026.052026-05-31
Planning recommendations, replanning suggestions and chat management
Added
GET /recommendations/{candidateType}/forConsignment/{consignmentId}returns ranked candidates with reasons and warnings (candidateType:vehicle,chauffeur,transportEquipment,capacityContract).- Replanning suggestions:
POST /replanning-suggestions/{offset}/{amount}(search), plusPOST /replanning-suggestions/{id}/evaluate,/acceptand/dismiss. POST /calendar/recurring-events/bulk/previewpreviews which drivers and transport equipment a bulk availability request will hit. Bulk creation now supports recurring calendar events, driver timeslots and to-dos as targets.- Calendar events have a
blockingflag, and driver activities support recurrence. GET /vehicles/trips-and-events:byDate/{fromDate}/{toDate},GET /chauffeurs/trips-activities-events:byDate/{fromDate}/{toDate}and a transport-equipment equivalent return planner lanes in one call.- Mapon connector: vehicle import, planning insert, update and cancel, status updates, and text messages.
- Integrations can subscribe to multiple trigger events.
- Trips and move actions expose CO2e well-to-wheel and tank-to-wheel values. Goods support
cbmas a volume unit.
Changed
- Exact Online sales-order import resolves delivery addresses, delivery dates and goods deliveries, and maps lines to items instead of generic goods.
- Webfleet: more stable order ID generation and planning synchronization.
- Chats are soft-deleted instead of being removed together with their messages.
- CMR PDFs are generated by the PDF service.
Fixed
- The refresh-token flow now issues new access tokens correctly.
- Attaching transport equipment to consignments works again.
- Fixed chat fetching, the status filter on searches, and a case where processing could loop endlessly.
- Transics: vehicles and their chats are created correctly. A PTV validation error no longer blocks route calculation.
Security
- Hardened input sanitization and access checks on query, transport order, trip and user endpoints.
2026.042026-04-30
Workflows, App Store publishing and customer portal chat
Added
- Workflows API:
POST /workflow,GET /workflows/{offset}/{amount}, update, delete,POST /workflow/{id}/duplicate,POST /workflow/{id}/executeandGET /workflow/{id}/executions/{offset}/{amount}. POST /transportOrder/{id}/create:invoicecreates an invoice from a transport order.POST /route/calculate:alternativesreturns alternative routes (for example fastest, eco and cheapest) to compare on toll, travel time and emissions.- Bulk actions
POST /vehicles/bulk,/chauffeurs/bulk,/transportEquipments/bulkand/businesses/bulk(ids,action:deleteoroperational,value). POST /calendar/recurring-events/bulkcreates recurring events for many drivers or pieces of equipment, with a rotation pattern (weeks on and off).- Developer and App Store endpoints for app pricing, screenshots, publisher verification, reviews, analytics, developer statistics, featured apps and app API tokens.
- Rail, inland waterway and air booking types.
- Payment status sync for invoices from Exact Online, Moneybird and Twinfield.
- Platform settings for automatic chat translation and for showing chat in the customer portal.
Changed
- Regenerated and restructured OpenAPI (Swagger) documentation.
- Webfleet: order documents are sent as attachments (up to 5 files of at most 5 MB each, in common image, PDF and office formats), and the driver filter on updates was improved.
- Exact Online sales-order import was improved.
- Description fields now accept longer text.
Fixed
- Fixed event creation through the API.
- Fixed location search and consignment updates.
- Fixed Transics synchronization issues.
2026.032026-03-31
Customer portal, setup wizard and the bulk trip planner
Added
POST /transportOrder/{id}/splitsplits a transport order into legs/trips;POST /transportOrder/{id}/forwardforwards an order;GET /transportOrder/{id}/tripsandGET /transportOrder/{id}/trips:customerlist an order's trips.POST /transportOrders/cancelcancels several transport orders and all their elements in one call.POST /quote/{id}/create:transportOrdercreates a transport order from a quote.PUT /trip/{id}/complete-actionscompletes all remaining actions of a trip.- Activity endpoints:
GET /transportOrder/{id}/activity,/trip/{id}/activity,/invoice/{id}/activity,/quote/{id}/activity. - Public invoice payments:
GET /invoice:public/{id}/{shareCode}/payment-providers,POST .../payment-intentandPOST .../confirm-payment(Stripe and Adyen). - Integration tests:
GET/POST /integration/{id}/test,PUT/DELETE /integration/{id}/test/{testId},POST /integration/{id}/test/{testId}/runandPOST /integration/{id}/test/run. - Marketplace:
POST /api/v1/tender/inboundto submit tenders from external systems andPOST /tender/{id}/accept-and-plan; connectors for Timocom, Trans.eu, Teleroute, DAT, Freightos and Sennder. - Access requests:
GET /user/access-requests/{offset}/{amount},POST /user/access-request/{id}/approveand/decline;POST /booking/carrier/{carrierId}/confirmwebhook for ferry booking confirmations. - Tax rates and pricing categories: CRUD and search under
/taxRate,/taxRates/{offset}/{amount},/pricingCategoryand/pricingCategories/{offset}/{amount};POST /insights/trips:dailyReport.
Changed
- New connectors: DFDS, Stena Line, P&O Ferries and CLdN ferry bookings, SeaRates shipment tracking, Avantida container reuse, Adyen payments and Exact Online sales order import.
- Routing engines OSRM, HERE and Google can be selected per platform; a new optimizer engine option was added to planning settings.
- Vehicles and transport equipment gained
axles; trips can be linked to teams; documents haveisPublic, verification and validity fields; quotes and invoices accept a contact person. - Transport order numbers now use a 64-bit sequence.
- OpenAPI/Swagger definition regenerated with more precise schemas and documentation for integrations, message automations and price modules.
Fixed
- Failed webhook deliveries can be retried instead of being lost.
- Child records removed from a transport order or trip are now deleted reliably (orphan removal).
- Webfleet planning cancellation and chauffeur filtering fixes.
2026.022026-02-28
App Store, report query builder and invoice approvals
Added
POST /trip/{id}/completecompletes a trip inPENDING_COMPLETION, triggering invoices and integration events; platform settingrequirePlannerCompletionForTrips.GET /trip/{id}/financials/combinedreturns combined financials for combined trips.GET /transportOrder/{id}/{shareCode}/tripsexposes trip tracking for shared transport orders, honoring new visibility fields (showTripTracking,showVehicle,showChauffeur,showDocuments,showCustomerDetails).- App Store endpoints:
GET /app-store/categories(plus category create/update/delete), app detail,GET /app-store/pending/{offset}/{amount}andGET/PUT /app/installation/{installationId}/settings. - Message automations accept
documentAttachmentsgenerated from document templates or insight reports. - Teams have
managers; administrations havetransportOrderTermsAndConditions; platform planning settingsortActionsOnConsignmentDrop.
Changed
- PDF generation (invoices, quotes, transport orders, document templates) moved to a dedicated PDF service.
- Exact Online connector re-syncs invoices and quotes on update, uploads their documents and uses the configured journal codes.
- Google Routes can be used for distance matrix calculations in the optimizer; optimization requests accept multiple depots.
- Trip read and update endpoints respond considerably faster; live updates are batched.
Fixed
- Duplicate invoice creation and ledger entry ID collisions between modules.
- Incoming invoices are no longer automatically marked as paid.
- Transport order status calculation, invoice status and invoice due dates.
- Telegram and FTP connector fixes and several memory leaks in integration workers.
2026.012026-01-30
Email client, document designer and AI-generated setups
Added
- Document templates:
POST/PUT /documentTemplate,GET/DELETE /documentTemplate/{id},POST /documentTemplate/{id}/duplicate,GET/POST /documentTemplates/{offset}/{amount}andGET /documentTemplate/fields/{entityType}for bindable fields. - Mail:
POST /mail/send,POST /mail/{id}/reply,POST /mail/{id}/forward,GET /mail/thread/{threadId},PUT /mail/{id}/star,POST /mail/{id}/link,DELETE /mail/{id}/unlinkandGET /mails/linked/{entityType}/{entityId}. - AI generation:
POST /integration/generate,POST /messageAutomation/generateandPOST /pricing/modules/from-documents. GET /chauffeur/{id}/trips/prioritized/{offset}/{amount}returns a driver's trips sorted by status priority.- Subscription price module type with billing period, allocation strategy and optional pro-rata.
- Platform setting
aiProvider(OPENAI,GEMINI,CLAUDE) selects the AI provider used by AI features. - Microsoft 365 (Graph) mailbox fetching connector.
Changed
- Capacity contracts support
CHAUFFEURandTRANSPORT_EQUIPMENTsub-types and can be filtered by them. - Action status updates accept questionnaire answers.
- Optimizer distance matrices can be calculated through PTV xServer and PTV Developer.
Fixed
- EVO GPS authentication.
- Asynchronous search indexing and message automations triggered by trip updates.
- Links of the first link type could not be created.
- Faster, cleaner shutdown and lower memory use for API and worker nodes.
2025.122025-12-31
Action questionnaires, automation preferences and a new trip map
Added
GET /action/{id}/result/questionnaireandPOST /action/{id}/result: fetch the questionnaire that applies to an action and submit its answers; answers are mapped onto the action result.GET /messageAutomation/user-preferencesandPOST /messageAutomation/user-preference: list and toggle the automations a user is subscribed to.- Message automations accept user-toggle and user permission filter options.
- Planning settings
onlyCalculateRouteOnTripConfirmed,onlyCalculateCapacityOnTripConfirmedandonlyCalculateFinanceOnTripConfirmed. POST /trip/optimizeracceptsoptimizerAlgorithmConfiguration(operating intervals, maximum driving period, maximum period, constraint overrides).- Exact Online integration: multi-division support, sales order import and invoice sync as ledger entries.
Changed
- EvoGPS integration rebuilt: separate tasks for vehicles, drivers, driver status and vehicle data.
- Integration objects are processed asynchronously, with a synchronous path where results are needed immediately.
- Chat search also matches on user details.
- Types are soft-deleted, so references to deleted types remain resolvable.
- Ledger entries carry a source flag; revenue and cost are calculated per source (quote, order, consignment, trip).
Fixed
- Cost ledger entries are attributed to the correct consignment.
- Errors when saving pricing elements that referenced a new business.
- Integration filters and message automation sending.
- Trip saving and consistent live updates for consignments.
2025.112025-11-30
Calendar events, calendar sync and a driver plan board
Added
- Calendar events:
POST /calendarEvent,PUT /calendarEvent,GET/DELETE /calendarEvent/{id},GET /calendarEvents/{offset}/{amount}andPOST /calendarEvents/search/{offset}/{amount}, with recurrence patterns. GET /vehicle/{id}/trips-todos-and-events:byDateTime/{startDateTime}/{endDateTime}.- Action schedules: CRUD under
/action-schedules. - Location timeslots and timeslot bookings (first version):
GET /location-timeslots/available,POST /timeslot-bookings,GET /timeslot-bookings/{id},POST /timeslot-bookings/{id}/cancel. GET /file/{id}/download:proxyto download files through the API.- Calendar integrations for Microsoft, Google and Apple calendars.
- DP World integration (EDIFACT over SFTP) and Microsoft Graph e-mail sending.
- Platform setting for allowed inbound e-mail domains.
- Localized text fields for administration texts such as terms and conditions; API messages in German and Italian.
Changed
- Server framework upgraded; plain-text error responses are now returned as JSON with an
errorsarray. - Graceful shutdown and new health probes reduce failed requests during deployments.
- Search request bodies for vehicles, chauffeurs and transport equipment are documented in the OpenAPI specification, including availability filters.
- Extended consignment and transport order responses.
- Chauffeur timeslots are merged into chauffeur activities.
Fixed
- Webfleet positions, board computer linking and SMTP sending.
- Time zone handling in message template date formatting.
- Integration file template filtering on actual values.
2025.102025-10-30
External chat channels, invoice approvals and online payments
Added
- External chat channels:
GET/POST /chat/{chatId}/integrations,PUT/DELETE /chat/{chatId}/integrations/{bindingId}andPOST /chat/{chatId}/send-external. Messages expose their source (internal, e-mail, WhatsApp or Telegram, inbound or outbound). - Invoice approvals:
POST /invoice/{invoiceId}/request-approval,POST /invoice/{invoiceId}/approve,POST /invoice/{invoiceId}/reject,GET /invoice/pending-approvals,GET /invoice/all-pending-approvals. GET /invoice:public/{id}/{shareCode}to read a shared invoice.GET /vehicle/{id}/trips-and-events:byDateTime/{startDateTime}/{endDateTime},GET /chauffeur/{id}/activities-and-events:byDateTime/{fromDate}/{toDate}andGET /transportEquipment/{id}/trips-and-events:byDateTime/{startDateTime}/{endDateTime}.POST /chauffeur/{id}/assign-userto create and invite a user for a driver; drivers can sign in with the chauffeur role.- Stripe and Mollie integrations, triggered after an invoice is sent.
- Google Maps and HERE route calculators.
Changed
- Financial ledger logic rebuilt: revenue and cost propagate between quote, transport order, consignments and trip.
- Deleting and cancelling a transport order follow the same rules; deletes now also handle consignment actions and tenders.
- FleetAccess integration syncs board computers and positions only.
- Permissions and initial data for new environments are created at startup.
Fixed
- Duplicated ledger entries and doubled revenue or costs from quotes.
- Consignment numbers when several consignments are saved at once.
- Orphaned capacity events after deleting or cancelling trips.
- Crash on the first transport order in a new environment.
2025.092025-09-23
Exact Online and Moneybird, App Store and smarter templates
Added
- Exact Online and Moneybird integrations: invoice and quote sync, relation creation and default code lookup.
POST /insights/vehicles/actions: report of vehicle stops in a date range, including durations.- Currency and tax rate handling for incoming invoices and quotes.
Changed
- Message templates and automations use a new template interpreter with nested conditions, loops, tables and date formatting.
- Route calculation takes booking actions into account and splits routes around them.
- Action events carry context and attributes for all action types.
Fixed
- Date formatting and capitalization in templates.
- Invoice and quote input and admin-level integrations.
2025.082025-08-31
FleetAccess, Microsoft 365 mail and booking-aware routes
Added
- Asynchronous requests: send the header
async: trueon supported endpoints, then pollGET /async/status/{requestId}and fetchGET /async/result/{requestId}. - App Store endpoints:
GET /app-store/browse/{offset}/{amount},POST /app/{appId}/install,GET /apps/installedandDELETE /app/installation/{installationId}. Installed apps receive access tokens and webhooks. - FleetAccess integration (vehicles, drivers, driver status, positions, activities, tire data).
- SMTP integrations support OAuth 2.0 authentication.
Changed
- PTV route calculation uses task-based requests for long routes.
- Routes are split around booking actions.
- Load meters and length/width are converted for goods, vehicles and transport equipment; negative and decimal inputs are handled.
Fixed
- Webfleet driver import with special characters.
- ETA/ETD calculation for single actions.
- Capacity events left behind by deleted trips.
2025.072025-07-31
Redesigned optimizer, new reports and driver activities in OpenMove
Added
GET /chauffeur/{id}/trip-stats: trip statistics of a driver (permissionread:chauffeur-trip-stats).POST /chauffeurs/{id}/activity: log a driver's current activity; the previous activity is closed.POST /insights/consignments:results: consignments and their results in a period (permissionget:consignmentResultsByDate).POST /insights/trips:loading/location/{id}: loading sheet of a location (permissionget:tripsLoadingSheet).- Planning settings
optimizerAlgorithmConfiguration(default vehicle operating intervals, maximum driving period, maximum period).
Changed
- Optimizer responses include the consignments that could not be planned.
- Search ranks exact matches first; relevance sorting applies only when a query is given.
notesdefault to an empty array instead of null on users, businesses, chauffeurs, vehicles, integrations, tires and bans.- Webfleet vehicle import improved; external attribute values are stored as values.
Fixed
- Duplicate transport order numbers.
- Trip capacity calculation and capacity change metrics.
- Capacity contract handling.
2025.062025-06-30
Webfleet order sync, recurring driver availability and vehicle types
Added
- Driver timeslot exceptions:
POST /chauffeur-timeslots/{timeslotId}/exception,GET /chauffeur-timeslots/{timeslotId}/exceptionandDELETE /chauffeur-timeslots/{timeslotId}/exceptions/{exceptionId}. GET /chauffeurs/{chauffeurId}/calendar-occurrencesreturns the expanded calendar occurrences for a driver.- Webfleet integration: trip updates now update the existing Webfleet order (update planning), including booking information and order types.
- Vehicle types are now a supported type target entity.
Changed
- Webfleet requests now send credentials as a Basic
Authorizationheader instead of URL parameters, following Webfleet's deprecation of URL credentials. - Integration fields support basic authentication with an API key as an extra value.
- Capacity change event types were renamed; existing events are migrated automatically.
Fixed
- Integration responses whose body is a JSON array (instead of an object) are now parsed correctly.
- PTV route calculations returned incorrect values in some cases.
- Estimated arrival and departure per action in generated quote route options.
2025.052025-05-30
Version history, multimodal quote options and double-booking alerts
Added
GET /entity:history/{entityType}/{id}/{offset}/{amount}returns the version history (changes, user and timestamp) of an entity.GET /consignment:cancel/{id}cancels a single consignment.GET /location/{id}/actions/{offset}/{amount}lists the actions planned at a location.GET /user/{id}/sessions/{offset}/{amount}lists a user's sessions.- Calendar endpoints:
POST /calendar/recurring-events,GET /calendar/recurring-events/occurrences, exceptions on recurring events, and per-resource events and availability under/calendar/chauffeurs/{id},/calendar/vehicles/{id}and/calendar/transport-equipment/{id}. - New
BOOKINGaction type carrying booking type, booking number, bill of lading number and external reference. - Webfleet integration: send trips as orders (insert planning), cancel them, and receive status updates and positions.
- FTP file exchange for integrations: uploaded files create integration input; outgoing files are offered for download.
- Platform alert settings for the new vehicle, transport equipment and driver double-booking alerts.
Changed
- Generating quote lines from a transport order now returns lines for multiple transport-mode options (road, sea, air, rail), grouped per option.
- Trip search by
type/typesnow also matches trips without a type. - Sessions and platform settings are cached, reducing response times.
Fixed
- Two-factor (OTP) verification during login.
- Updating a business could fail.
- Widget data and live consignment updates.
2025.042025-04-29
Shareable trip execution, Webfleet, EVO GPS and Squarell connections
Added
GET /chauffeur/{id}/trips/future/{offset}/{amount}andGET /chauffeur/{id}/trips/past/{offset}/{amount}return a driver's upcoming and past trips.- Trip search accepts multiple statuses in one request.
- New integrations: Webfleet (
web_fleet: vehicles, drivers, text messages), EVO GPS (evogps: devices, positions) and Squarell (vehicle data and tachograph DDD files). mobilePhonefield on contact persons.- Teams gain an e-mail integration, fleets and an order-number prefix.
Changed
- Updates received through integration data sources are now merged into the existing record instead of replacing it.
- Additional database indexes improve trip and on-board computer queries.
Fixed
- Deleted trips were still returned by trip search.
- Vehicle search and quote calculations returned incorrect results in some cases.
2025.032025-03-30
Automatic trip alerts, load meter calculation and Exchange 365 mail
Added
GET /chauffeur/{id}/trips:byStatus/{status}/{offset}/{amount}returns a driver's trips by status.chauffeurIdfilter in trip search.- Microsoft Exchange 365 (
EXCHANGE) integration type, usable as an e-mail channel for message automations; WhatsApp added as a message automation channel. - Platform planning settings
goodsWeightsAndLoadMetersAreTotalFieldsandshowEventsOnActionCards; trip settingminimumEstimatedDurationUntilNextStartDateTimeConstraint.
Changed
- Vehicle
loadMeters(available load meters) moved toloadLoadMeters;loadMetersnow holds the load meters taken. Existing values are migrated automatically. - Goods load meters and length/width are now converted into each other on save, as are transport equipment load length/width and
loadLoadMeters. - Message automation channels now expose
integrationManualTypes(a list) instead ofintegrationManualType. - Integration search accepts a
manualTypesfilter.
Fixed
- Integration updates overwrote existing records instead of updating them.
- Real-time socket events were not always sent.
- Notifications were not returned in descending order.
2025.022025-02-28
Settings groups, configurable trip fields and a new PDF engine
Added
- Settings groups:
POST /settingsGroup,PUT /settingsGroup,GET /settingsGroup/{id},DELETE /settingsGroup/{id},GET /settingsGroup/{id}/apply, andGET/POST /settingsGroups/{offset}/{amount}to list and search. POST /user/session/refreshrefreshes an access session using a refresh token.remarkfield on trips.transportModefilter in trip search.- Roles can be marked as platform-specific.
Changed
- Search uses fuzzy and wildcard matching across entities.
- Invoice, quote and transport order PDFs are rendered by a dedicated PDF service, honoring the request's language and date format.
- Maximum upload size increased.
Fixed
- Avatar missing in
GET /chauffeur/user/{id}. - Cabotage statistics calculation.
- Socket connections for real-time user events dropped in some cases.
2025.012025-01-31
Alerts, expected costs and turnover, and redesigned CMR printing
Added
- Alert endpoints:
POST /alerts(alerts for a set of entities),GET /alerts/{entityType}/{entityId}/{offset}/{amount},PUT /alert/{id}/solveandPUT /alert/{id}/ignore. GET /chauffeur/user/{id}returns the driver linked to a user.expectedCostandexpectedRevenueon transport orders and consignments; expected costs and turnover on trips.- Platform
routingEnginesetting (defaults to PTV). - New
TYPE_TAKE_AND_RETURN(packaging) action type; types can carry a deposit value and pricing category.
Removed
- Manual alert create, update and delete endpoints (
POST /alert,PUT /alert,DELETE /alert/{id}). Alerts are now generated by Transportial and handled with solve/ignore.
Fixed
- Creating a driver through the API now creates a user that can log in.
- Message automations could send duplicate messages.
- Reading
.xlsxfiles and base64-encoded file uploads.
20242024-12-31
Management dashboards, App Store, single sign-on and AI import
Added
- Endpoints for driver
certificates,bans,serviceCards,complaintsandtires, each with filtering by chauffeur or business. - Ledger entry endpoints, plus revenue and cost calculation on trips, transport orders, consignments and vehicles.
- App Store resources: apps, app versions and publishers.
- Alerts endpoints (create, get, search, update, delete).
- AI document reading: create transport orders, quotes and invoices from uploaded files and e-mails (including
.eml). - Public quote access by share code, plus a reminder endpoint for quotes and invoices.
- Bulk trip actions to update, confirm or cancel several trips in one request.
- Board and to-do statistics endpoints, and a TQL field search endpoint.
- Draft (concept) transport orders that can be accepted or declined.
- New connectors: FleetsOnline, YourSoft, and the DP World and PSA terminals.
Changed
- Workflows were renamed to message automations, with matching endpoints and permissions.
- Request and response models were standardized across all entities and published in the OpenAPI documentation.
- Tenders now reference consignments instead of whole transport orders.
- Trips now expose
estimatedDurationand estimated end dates. Route calculation also returns ETD. - Business and contact person models now include contact persons in responses.
- Live updates are pushed directly over the socket for much faster refreshes.
Fixed
- SAML single sign-on now redirects correctly to the identity provider.
- Twinfield accounting sync is more reliable.
Security
- Hardened the permission checks on individual fields and entities.
- Simplified and stabilized OpenID login.
20232023-12-31
Own routing engine, driver planner and self-service signup
Added
- SAML single sign-on configuration and authentication endpoints.
- Two-factor authentication (OTP) for login, plus recovery codes.
- Public registration route with location-based time zone detection.
- Billing endpoints for usage events and invoices per platform.
- Booking endpoints and trip confirmation.
- Route responses now include CO2 emissions, elevation and toll path details. Routing engine can be set per platform.
- Quote and invoice sending, invoice combining and PDF downloads.
- Webhook connection type for integrations, and API access integrations.
- Socket subscriptions for trips and transport equipment.
- Connectors: Twinfield, AFAS, HubSpot, project44, Trimble, Iveco, Teleroute, BigMile, OpenSky and CHAMP.
Changed
- Files are now served through temporary download URLs instead of being streamed by the API.
- Integrations can import JSON and XML files, and businesses are a supported import type.
- Transport equipment gained container number and seal fields, and actions support a refuel type.
- Trip responses now include
lastAction,lastPlannedActionandcurrentAction.
Removed
- Removed the old standalone pricing entity, replaced by pricing modules.
Fixed
- More stable database session and transaction handling under load.
Security
- Users get no permissions until two-factor verification is complete.
20222022-12-29
Planner, invoicing, capacity contracts and workflows
Added
- Capacity, capacity contract and schedule endpoints with time slots.
- Workflow endpoints with template interpretation and scheduled or event triggers.
- Pricing module endpoints, and invoice lines with sequence numbers and totals.
- TQL query endpoints, including field lookup with pagination (
/tql/fields/{entityType}/{keyword}/{offset}). - Tender bid endpoints to accept, decline and counter, plus lowest bid and bid count.
- Consignment combine and split endpoints, plus linked trips (
linkedTrip) and trip swapping. - Camera, tachograph and chauffeur time slot resources.
- Schedule routes and route calculation with GraphHopper, starting with maritime routes.
- Excel file handling for imports, and a Postman collection.
- Connectors: TIMOCOM freight exchange (offers, orders, location updates), Telenormic vehicle cameras, container shipping schedules, statistics reporting, and board computer messaging (telegrams).
Changed
- Permissions are generated from the API routes, and roles can now delete.
- Monetary amounts are stored as decimals, and long text fields have no length limit.
- Many query parameters moved to path parameters, and the general search endpoint was expanded.
- OpenAPI documentation is generated from the code and published per module.
Fixed
- Failed integration objects are now retried and repaired automatically.
Security
- Added rate limiting and stricter CORS and referrer handling.
20212021-12-29
Integrations, plan board, invoicing and Marketplace
Added
- Integration resources: configurable, file template and manual integrations, plus integration tasks and objects.
- Endpoints for chauffeurs, terminals, transport equipment, contracts, lanes, boards and to-dos.
- Administration and document endpoints, plus widget and insight resources.
- Tender (Marketplace) endpoints.
- WebSocket live updates and Firebase push notifications.
- ETA calculation through PTV and a location-on-route check.
- Connectors: Transics, TransFollow, Portbase, project44 and Uturn, plus e-mail and FTP/SFTP imports.
- Search on identifier value and name, and filters such as
hasAdrandhasDriverLicense.
Changed
- The data model was upgraded to OTM 5.1.
- JWT-based authentication and a new login method.
- Pagination parameter
fromwas renamed tooffset. - The database moved to PostgreSQL, with versioned migrations.
- Added
alwaysCombinedTransportto platforms.
Removed
- Removed the old external attributes and value-with-unit structures in favor of simpler fields.
Security
- Upgraded password hashing (Argon2).
20202020-12-23
Transportial foundation: orders, fleet and communication
Added
- REST API with CRUD and search endpoints for transport orders, consignments, goods, actions, trips and routes.
- Fleet resources: vehicles, vehicle groups, fleets, board computers and sensors.
- Relation resources: businesses, customers, actors and locations with geo references.
- Chat, mail import, message templates and notifications endpoints.
- Constraint and event resources, plus associations between entities.
- Registration, login and session management endpoints.
- OpenAPI (Swagger) documentation for all endpoints.
Changed
- The data model was aligned with OTM 5 (Open Trip Model).
Security
- Permission checks on every route.