It is Fubini's theorem, hoping that your functions are bounded:
Integrate[f[s] Integrate[g[u], {u, 0, s}], {s, 0, T}] ==
Integrate[Integrate[f[s] g[u], {u, 0, s}], {s, 0, T}] ==
Integrate[f[s] g[u], {u, 0, s}, {s, 0, T}] ==
Integrate[f[s] g[u],
Element[{u, s}, Triangle[{{0, 0}, {T, T}, {0, T}}]]]
It may be easier to set a precision target for a PrecisionGoal
for a single NIntegrate
than for a nested expression. However, I am no expert on this.