Recently we had an issue on one of our client websites and we spent a lot of time on it, due to the ambiguity and confusion over the issue which is there on the internet. However in the end, it was a simple solution and I just thought, I should write a blog post on that so that any body else struggling with same problem can easily rectify that situation without spending a penny.

The problem we had was as follows:

Our client was using PayPal website pro (Payflow Pro) having a login to for offering credit card processing services on his website.

We had that integrated and we also had usual paypal express checkout as a second option on the website so customer who want to pay via PayPal account can also proceed and pay. PayPal express checkout integration was a normal API username password and signature keys generated from the PayPal live account using NVP API.

Then we received another request that we need to have fraud filters on payments as client was not authorized to sell on certain zip codes so we need to block the order right away instead of letting them purchase it. We had the zip code check on woo-commerce cart however what we were worried about was that a customer may enter wrong zip code just to by-pass the check on checkout and still make an order.

In order to resolve that, we have to have a fraud filter at PayPal so they can verify the zip code and address entered on checkout to the one they payment processor or bank have on file and reject the payment if it doesn’t match.

For that we talked to PayPal Payflow Pro Technical support on the phone and asked them to enable fraud filters for us on so that we can reject the AVS and Zip code mismatch transactions. Tech support guy listened to our problem and then checked our previous transaction and then replied that

“you are using NVP API on express checkout transaction and not using the Payflow API for that, if we enable fraud protection its going to only work on credit card transaction as it will be enabled on Payflow account only. Since you are also receiving payments on Express checkout using another API that will continue to work without the fraud filter. Please update your API integration for PayPal express and then call us again, we will verify it that it’s now using PayFlow API and then we will enable the fraud filters.”

He also provided us this link via email: to update our integration to move to payflow api from NVP.

We were very confused by this response as we promised the client that we will “fix” this issue and its seems like a whole new plugin from scratch which could mean weeks of work and potentially for free as we had already committed.

Anyway, after spending a week on research and finally I realized that I don’t at all need to develop a new plugin from scratch, what PayPal guys are asking is actually already available but with a new name! Yes! Its called “Paypal Advanced”.

PayPal advanced loads the hosted pages setup via and provides a credit card form as well as PayPal Express checkout option on the same page. And last but not least many plugins for PayPal Advanced are easily available on the wordpress plugin directory!

I used this plugin,

After installing it, enable it and then go to wooCommerce > checkout settings and click on PayPal Advanced and enter your PayPal manager’s credentials and voila! You’re done!

User will have have an option to pay via PayPal Advanced and you can rename it to just PayPal, selecting this option will take user to Payflow hosted page with credit card form and an option of Checkout with PayPal, choosing checkout with PayPal will actually process the express checkout transaction using PayFlow API! That’s what the PayPal technical support was asking us to do!

You can customize the hosted pages layout, add your logo etc. by logging into with your credentials:

After logging in, click on Service Settings on the menu bar.

Then click Setup link under hosted checkout pages

In the setup page, fill in the information as shown in screenshot below:

You can also click on “Design Pages” to add your own logo and change border color etc. to match your website logo on the hosted page.

After that, just scroll down and click on “Save Changes”.

You’re done!