Concise way of creating a IntRange out of an Int
Since it.duration is quite long, you could use the alternative expression:

(it.duration / 10 * 10) .. (it.duration / 10 * 10 + 9)


You still have common subexpressions, though. To avoid these, you can define a cluster:

fun cluster(x: Double, size: Double) = (x - x % size) .. (x - x % size + size - 1)


or, to avoid the common subexpression:

fun cluster(x: Double, size: Double) = (x - x % size).let { it .. (it + size - 1) }


(I wrote the above without a compiler, so it may or may not work, but you get the idea.)

Then, you can group the trips by their cluster:

trips.groupBy { cluster(it.duration, 10.0) }


By the way, the group "30-39" also contains 39.999, so you might get contacted by a nitpicker that your range should better be called "[30,40)". ;)