When someone pays with PayPal and the payment is complete, PayPal sends an IPN (Instant Payment Notification) back to the site saying the payment is complete and the actual order is created.
Sometimes that IPN can be delayed but usually only a couple of minutes. Though there have been cases where it has taken a couple of hours.
If it is not working at all here are some things to check
Your PayPal account is not a “Business Account”
If your PayPal account is a “personal” account then you need to upgrade it to a business account.
They paid with an eCheck
If a customer pays with an eCheck, the order will not get created until the eCheck as cleared which can be days.
You are forcing httpS in the URL but have not updated the config file
If you are forcing httpS (secure URL going from http to https) either following these directions or from your main website and you did not do step #2 on this page, that could be the issue. Check your config and be sure the $setup['url'] value contains the https like step 2 here.
Your server or host is blocking the IPN
Perhaps a firewall or something similar on the server is blocking PayPal's IPN. You would need to check with your hosting company support about that. Here is a list of PayPal's IP addresses.
See what PayPal shows about the IPN status
Log into your PayPal account then click here.
You should have a Search Results section. If nothing is in it, change the dates to when a payment was made.
Date/time created - Message ID - Status - Transaction ID
See what is under Status. If it says Disabled, then for some reason PayPal was not able to talk back to the server to update Sytist with the payment information and create the order.
In this case you will need to check with your hosting company support about them blocking IPN.