Mira, si tu codigo es correcto, funcional de acuerdo a tus pruebas preproductivas, y
recibes una respuesta válida dentro de las que la documentación indica, entonces es un tema que debes consultar con PayPal.
No es un tema de programación. No hay errores mostrados por PHP, ni errores devueltos por PayPal (es un mensaje válido).
Aún así te comento que toda transacción en cualquier sistema de pagos via web, tiene tiempo de vigencia por requisitos de seguridad. Por ello no me extrañaría que el codigo a validar esté vencido, en especial si la imputación del pago se ha efectuado...
En cualquier caso, en mi opinión es un tema off topic, que debes resolver con PayPal.
Posdata: De acuerdo a la documentacion del link que pusiste, es posible que el mensaje recibido sea INVALID si hay algún cambio a la estructura de datos quw PayPal espera recibir, y como eso dependerá de TU listener, deberás consultar con PayPal para saber que está pasando realmente.
Usualmente los sistemas de pasarelas de pagos conservan un log de transacciones que registra los procesamientos de mensajes. En esos casos ellos pueden decir con certeza donde está el error, si es un problema de parseo.
Cita: 1) PayPal HTTP POSTs an IPN message to your listener that notifies it of an event.
2) Your listener returns an empty HTTP 200 response to PayPal.
3) Your listener HTTP POSTs the complete, unaltered message back to PayPal; the message must contain the same fields (in the same order) as the original message and be encoded in the same way as the original message.
PayPal sends a single word back - either VERIFIED (if the message matches the original) or INVALID (if the message does not match the original).