There is one other reason why the Payment status is pending. If you are sending doAuthorization then the funds will always be in a status of pending until you capture the funds.
Directly from the PayPal Documentation: For example, an unsettled authorization's PaymentStatus is set to Pending; however, its PendingReason is set to authorization, which is not related to payment review.
You will need to capture the funds, or set your payment action to Sale. All an authorization does is freeze the money on the card or in the PayPal account, but does not send the money to your PayPal Account. Funds are not sent to your PayPal account until the Authorization is Captured.
From the PayPal Documentation: To capture an authorization send this API Call: DoCapture
You send the amount you want to capture and the Authorization ID to PayPal and the actual money is moved from the consumer's funding source to the PayPal account.
Just in case you need it, here is the Express Checkout Integration documentation:
Express Checkout Integration Overview