I have tested a PayPal IPN on sandbox. It works without issue. I tested it using the demo PayPal account. Now I have moved live I cannot test with a PayPal account, as I only have one. So I tried using a card. The payment is successfully made. However, the IPN is empty.
I don't have any PHP errors for the IPN call. The IPN URL defined in Notifications -> Payment Notifications on my live account is correct.
The payment is made using PayPal Smart Checkout: https://developer.paypal.com/docs/checkout/#how-the-buttons-work
Does PayPal not use IPNs when buying by card?