In practice, it is common, especially for online retailers, to bundle different products together during procurement to save transportation and handling costs. It is important to understand and theorize how to manage dynamic procurement by taking advantage of joint ordering in the presence of joint and individual setup costs. We characterize the structure of optimal policy for a periodic review multi-product inventory system with multiple setup costs, including a joint setup cost and individual setup costs for each product. By proposing the notion of ($\mathcal K,\bm \eta$)-quasi-convexity, we show that an optimal procurement policy for such a system follows the so-called ($\sigma,\omega,\bm S$) policy when demands are stochastically increasing over time: order up to $\bm S$ for states in the region $\sigma$, do not order for states in the region $\omega$, and order certain quantities for states neither in $\sigma$ nor in $\omega$. We also obtain ordering monotonicity properties that characterize the structure of the optimal policy, and we provide some bounds for the parameters of the optimal policy. Our results can also accommodate inter-product demand correlation, such as customer choice for different products. Leveraging these operational insights, we propose three simple heuristic policies: the independent ($\bm s,\bm S$) policy, vector ($\bm s,\bm S$) policy and linear interpolation ($\bm s,\bm S$) policy. Extensive numerical experiments indicate that the linear interpolation ($\bm s, \bm S$) policy outperforms the other two heuristics, with the performance gap being less than 3.5% on average and only 0.5% in some cases. Finally, we show that how our results can be extended to systems with more complex setup cost functions, such as time-varying, set-based, and quantity-dependent setup costs.