Many countries have adopted the vertical separation governance structure in the railway freight industry over the past decades. Under this governance structure, an Infrastructure Manager (IM), which might be an independent company or a government agency, sells train itineraries to Freight Operating Companies (FOCs). After purchasing the itineraries, a FOC will have the rights to run trains on the designated paths at the designated times and thus can provide transport service to shippers. In the process, an IM needs to determine a list of prices for their train itineraries; and a FOC needs to determine which train itineraries to purchase to serve uncertain customer demands based on the IM’s price list. This study considers the interaction between an IM and a FOC as a network-based Stackelberg game. Our study first formulates a bi-level optimisation model to determine the equilibrium prices that the IM would charge to maximise its own profits unilaterally without collaboration. A method involving gradient and local search has been developed to solve the bi-level model. Secondly, an inverse optimisation model is proposed to determine the prices leading to global optimality. A Fenchel cutting plane-based algorithm is developed to solve the inverse optimisation model. Thirdly, a subsidy contract is designed for the game to coordinate the players’ decisions. A two-layer gradient search method is developed to determine the optimal subsidy rate. Numerical cases based on the UK rail freight industry data are provided to validate the models and algorithms.