With the rapid growth of financial markets, many complex derivatives have been structured to meet specific financial goals. But most complex derivatives have no analytical formulas for their prices, e.g., when more than one market variable is factored. As a result, they must be priced by numerical methods such as lattice. A derivative is called multivariate if its value depends on more than one market variable. A lattice for a multivariate derivative is called a multivariate lattice. This paper proposes a flexible multi-phase method to build a multivariate lattice for pricing derivatives accurately. First, the original, correlated processes are transformed into uncorrelated ones by the orthogonalization method. A multivariate lattice is then constructed for the transformed, uncorrelated processes. To sharply reduce the nonlinearity error of many numerical pricing methods, our lattice has the flexibility to match the so-called "critical locations" - the locations where nonlinearity of the derivative's value function occurs. Numerical results for vulnerable options, insurance contracts guaranteed minimum withdrawal benefit, and defaultable bonds show that our methodology can be applied to the pricing of a wide range of complex financial contracts.