PayPal express checkout handling "pending payments" with IPN

Rob picture Rob · Feb 16, 2012 · Viewed 11.2k times · Source

I cant find anny clear documentations about this.
If you use paypal express checkout, when a payment is pending what happens next?
Does paypal sends you by IPN an update if the states changes, do you have options?

Let say you do an DoExpressCheckoutPayment (with NVP) and you get this:

&PAYMENTSTATUS=Pending 
&PENDINGREASON= ECHECK //The payment is pending because it was made by an eCheck that has not yet cleared. 
&REASONCODE=None

So you've made the payment and you want to wait until its cleared? What should you do next.

Update Some (external documentation) I found only sugest you could use (IPN?) to handle pending payments.

"If the Do Express Checkout Payment PENDINGREASON response is a value other than none or completed , the payment is pending. Typically, this means the customer has paid with aneCheck. In such a case, funds are not guaranteed, and you should not ship or deliver items or services until the payment has successfully completed. NOTE:
PayPal recommends that you block eChecks as a payment method if you are unable tohandle pending state payments.To find out the status of a pending payment, you can:

Submit an Inquiry transaction.

Check the status using PayPal Manager. See PayPal Manager online help for details."

The paypal sandbox seems to have the option to check IPN messages for the express checkout type. The only correlation (if its ment to be used this way) between the DoExpressCheckoutPayment and the IPN seems you can use the "custom" field to keep track of a pending status. The txn_id (ipn) isn't given in DoExpressCheckoutPayment (nvp). Does any one have any experience with this?

Answer

Robert picture Robert · Feb 17, 2012

The transaction ID is most certainly given in DoExpressCheckoutPayment, even if the PAYMENTSTATUS=Pending. A pending payment is still a transaction.

So yes, you would be notified via IPN when the transaction is completed. This typically takes a few working days.
Once it has completed, you can correlate the transaction from DoExpressCheckoutPayment to the IPN you will have received via the txn_id in the IPN.

Note: If you want to test a 'Pending' payment in the PayPal Sandbox, simply go to https://developer.paypal.com/ > Test account and click on 'Payment review' for the seller account you're testing with.
Once payment review is enabled on that seller account, any transactions it receives will be in a 'Pending' state.
Simply disable payment review to release the tranasctions afterwards.