We explore the properties of various types of public and private pricing on a congested road network with heterogeneous users and allowing for elastic demand. Heterogeneity is represented by a continuum of values of time. The network consists of both serial and parallel links, which allows us to model second-best pricing restrictions on either complementary or substitute links, while still accounting for interaction between different groups on shared links (e.g. in city centres). We find that private (revenue-maximizing) pricing is much less efficient than public, whether on the partial or the full network; but this difference is mitigated by the product differentiation made possible by heterogeneous users. Ignoring heterogeneity causes the welfare benefits of second-best pricing of one parallel link, a policy currently receiving favourable consideration, to be dramatically underestimated Product differentiation produces some unexpected distributional effects, including the possibility that first-best pricing can result in one of the parallel routes being both more expensive and more congested than with no pricing.