We show that it is decidable whether a third-order matching problem in the polymorphic lambda calculus has a solution. The proof is constructive in the sense that an algorithm can be extracted from it that, given such a problem, returns a substitution if it has a solution and fail otherwise.