tolly. Log in

Norwegian toll + ferry costs · one API call

The toll API that gets the numbers right.

Send a route polyline. Get the authoritative toll + ferry cost back — computed the way it is actually billed, down to the øre. One call in, one number out.

p50 < 100 ms · OpenAPI 3.1 · NVDB open data

Quote · q_01J9ZK3D8W 38 ms

Bergen → Stavanger · E39

Toll passages (11) 184.50
timesregel tag −20% EV rate
Ferry (1 crossing) 228.00

Mortavika–Arsvågen

Total NOK 412.50
confidence: exact tariff 2026-06 · integer øre

Statens vegvesen NVDB · authoritative

NLOD-licensed open data

Refreshed monthly

Why tolly

Legacy services give you list prices. tolly gives you the number that hits the invoice.

01

Correct totals

The hour rule (timesregel), monthly caps, tag and EV discounts — computed server-side, in the legally mandated order, with integer øre arithmetic. No floating-point drift. Validated against real AutoPASS statements, to the øre.

timesregel · monthly caps · integer øre

02

Fast

A single stateless call into a pure calculation engine. Quotes are cacheable, and the p50 sits well under 100 milliseconds.

stateless · cacheable · p50 < 100 ms

03

Built for machines

Clean JSON. OpenAPI 3.1 with generated TypeScript and Swift clients. RFC 9457 problem details for errors. Every passage carries an explainable rule trace (applied[]) and a confidence flag — the API tells you when it is not sure, instead of guessing.

OpenAPI 3.1 · RFC 9457 · applied[] · confidence

04

Metered + transparent

A per-key usage dashboard and request ids on everything, for full traceability. Tariffs are versioned, so any historical quote can be reproduced exactly.

usage dashboard · request ids · versioned tariffs

The API

One call. One number.

Post your route waypoints and a vehicle. Get toll, ferry and grand total back — with a rule trace explaining every øre.

POST https://api.tolly.no/quotes

Request

{
  "waypoints": [
    { "lat": 60.3913, "lng": 5.3221 },
    { "lat": 58.9700, "lng": 5.7331 }
  ],
  "vehicle": {
    "class": "car",
    "fuel": "electric",
    "autopassTag": true
  }
}

Response · 200 · 41 ms

{
  "requestId": "req_01J9ZK3D8WQX",
  "tariffVersion": "2026-06",
  "bompenger":  { "amountOre": 18450, "currency": "NOK" },
  "ferje":      { "amountOre": 22800, "currency": "NOK" },
  "grandTotal": { "amountOre": 41250, "currency": "NOK" }, // integer øre, never floats
  "confidence": "exact", // flags uncertainty instead of guessing
  "passages": [
    {
      "station": "Fjøsanger (E39)",
      "chargedOre": 2400,
      "applied": ["timesregel", "tag_rebate", "ev_rate"]
    }
    // + 10 more passages, each with a full rule trace
  ]
}

applied[]
Every passage explains exactly which rules produced its price.

tariffVersion
Tariffs are versioned — reproduce any historical quote, bit for bit.

RFC 9457
Errors are machine-readable problem details, not prose in a 500.

Pricing

Metered, transparent — talk to us.

tolly is metered per quote, with a usage dashboard on every key. We are onboarding integration partners now — get in touch and we will set you up.

no lock-in · request ids on everything · versioned tariffs