The PayPal Sandbox is supposed to let us test the PayPal functionality from the comfort of a fake/test environment.
However, in practice: the Sandbox environment is much slower than the production environment – and often abnormally slow.
Here is an example that's, sadly, fairly typical:
2017-12-19 10:27 Test payment OK.
2017-12-19 12:43 Test payment finally visible in the test business account, but IPN still not sent (queued, 0 retry, nothing on ngrok.)
2017-12-19 20:23 IPN finally received.

i.e.: it took close to 10 hours between the test purchase and reception of the first IPN.
Below are some tips.
A normal purchase flow (be it production or Sandbox) goes like this:
- You perform a purchase on your own site.
- The money gets sent to your merchant account.
- The IPN gets sent to your site.
In production: steps 2 and 3 occur typically within minutes of step 1.
But, in the Sandbox environment: step 2 (the balance) often occurs only hours after step 1. Even once step 2 does occur, step 3 (the IPN) still does not occur immediately and it's common to have to wait many hours.
This is all very annoying, of course, and defeats the purposes of a test environment.
To test things are working okay on your end and that it's just "good old" PayPal being miserably slow:
- Keep an eye on your error logs. No error during your test order?
- Keep an eye on the Sandbox merchant account to know when the money arrives.
- Keep an eye on your activity logs to see if you received any notification on the expected URL. (Using ngrok for local development makes this even easier.)
- Keep an eye on the IPN history page of the Sandbox to know the status of the IPN. In particular:
- Check the Latest delivery attempt date/time field. As long as it's empty, you cannot blame your own IPN script.
Source: this is based on my using PayPal in production for years and testing using PayPal Sandbox a few times a year. When testing, it was always hard to tell if I'd messed up something (no notification) or if it was just the Sandbox being slow. I ended up timing things out… and it turns out it's just common for notifications to be 5H+ late, or even much more than that.
Bottom-line:
- Move to a new and better payment gateway, e.g.: Stripe, where the test environment does behave in real-time.
- If you're stuck with PayPal, simulating IPNs (by submitting your own fake IPNs or old data) might prove more convenient than using the Sandbox, at least when time is critical.