WordPress PayPal plugin connects PayPal to your WordPress site and makes e-commerce available for you. With the WordPress PayPal plugin, you can create various types of buttons such as Add to Cart, Buy Now, Donation or Subscription with a simple shortcode to accept PayPal payments from your users. This plugin allows both one-time and recurring subscription payments so you can run your online store with great ease.
WP PayPal plugin uses the PayPal Payments Standard API to create a checkout process for your customer that is fast, easy, and intuitive. With one simple shortcode, you can add a secure payment button to your website that lets you accept credit card, debit card, and PayPal payments from any mobile device, tablet, or PC.
WordPress PayPal Info
Requirements
- A self-hosted WordPress site running on a WordPress Optimized Environment.
- A PayPal account that supports selling online.
Features
- Accept PayPal and PayPal Credit (US only) payments
- No monthly fee
- Accept credit cards and debit cards
- Optimized mobile checkout experience
- Accept one-time or recurring payments
- Simplified PCI compliance
- Accept donations
- OneTouchTM enables checkout with a click of a button
- Accept 25 currencies from over 200+ countries and markets
WordPress PayPal Plugin Installation
- Login to your WordPress admin dashboard
- Go to Plugins->Add New
- Enter WP PayPal in the search box
- Once you find the plugin hit the install button
Option 2
- Download the zip version of the plugin
- Go to Plugins->Add New and switch to the Upload tab
- Select the zip file on your computer
- Upload and install it
Option 3
- Download the zip file and extract it
- Connect to your website via FTP (you can use a software like Filezilla to transfer files to your server) and browse to the “/wp-content/plugins” folder
- Select the folder containing the plugin files on your computer and upload it
- Once all the files have been uploaded to your web server you can activate the plugin from the Plugins menu (WordPress admin dashboard)
WordPress PayPal Plugin Usage
In order to create a button, you need to insert a shortcode and specify the type in the button parameter.
Buy Now
[wp_paypal button="buynow" name="My product" amount="1.00"]
Add to Cart
[wp_paypal button="cart" name="My product" amount="1.00"]
View Cart
[wp_paypal button="viewcart"]
Donation
[wp_paypal button="donate" name="My product"]
Subscription
[wp_paypal button="subscribe" name="My product" a3="1.00" p3="1" t3="M" src="1"]
For subscription setup see how to create a subscription button in WordPress.
PayPal Button Demo

PayPal Button Customizations
Button Image
“button_image” parameter can be added to the shortcode to show your own button image instead of the default PayPal button. For example:
[wp_paypal button="buynow" name="My product" amount="4.99" button_image="https://example.com/images/buy.png"]
Shipping
“shipping” parameter can be added to the shortcode to charge shipping for an item. For example:
[wp_paypal button="buynow" name="My product" amount="4.99" shipping="1.75"]
Shipping2
“shipping2” parameter can be added to the shortcode to charge shipping for each additional unit of an item. For example:
[wp_paypal button="buynow" name="My product" amount="4.99" shipping="1.75" shipping2="0.75"]
This means, If a user orders:
My Product (Quantity 1), total shipping would be $1.75.
when the order becomes:
My Product (Quantity 2), total shipping would be $1.75 + $0.75.
When it contains:
My Product (Quantity 3), total shipping would be $1.75 + $0.75 + $0.75.
And so on.
This feature is also very useful if you want to offer shipping at a discounted rate for each additional item.
Tax/GST
“tax” parameter can be added to the shortcode to charge GST for an item. For example:
[wp_paypal button="buynow" name="My product" amount="4.99" tax="2.15"]
Handling Fees
“handling” parameter can be added to the shortcode to charge handling fees for an item. For example:
[wp_paypal button="buynow" name="My product" amount="4.99" handling="2.50"]
This parameter is not quantity-specific. That means the same handling cost applies, regardless of the number of items on the order.
Success Page
“return” parameter can be added to the shortcode to redirect the user to a specific page on your site after the payment. For example:
[wp_paypal button="buynow" name="My product" amount="4.99" return="https://example.com/thank-you"]
Cancellation Page
“cancel_return” parameter can be added to the shortcode to redirect the user to a specific page on your site if they cancel checkout before completing the payment. For example:
[wp_paypal button="buynow" name="My product" amount="4.99" cancel_return="https://example.com/payment-canceled"]
Currency
To use a different currency code than the one you specified in the settings, you can add the “currency” parameter to the shortcode. For example:
[wp_paypal button="buynow" name="My product" amount="4.99" currency="SGD"]
Show/Hide Shipping Address
“no_shipping” parameter can be added to the shortcode to control whether or not to prompt buyers for a shipping address. Allowable values are,
- 0 – Prompt for a shipping address but do not require one (This option is set by default)
- 1 – Do not prompt for a shipping address
- 2 – Prompt for a shipping address and require one
For example:
[wp_paypal button="buynow" name="My product" amount="4.99" no_shipping="1"]
Shopping URL
“shopping_url” parameter can be added to the shortcode to redirect buyers to a page when they click the Continue Shopping button on the PayPal Shopping Cart page. This parameter can only be used with an Add to Cart button. For example:
[wp_paypal button="cart" name="My product" amount="4.99" shopping_url="https://example.com/shop"]
Allow Buyers to Specify the Quantity
“undefined_quantity” parameter can be added to the shortcode to allow buyers to specify the quantity of the item on the Paypal payment page. This parameter is only used with a Buy Now button. For example:
[wp_paypal button="buynow" name="My product" amount="4.99" undefined_quantity="1"]
Open PayPal Button in a New Window/Tab
“target” parameter can be added to the shortcode to open a PayPal button in a new window or tab. For example:
[wp_paypal button="buynow" name="My product" amount="4.99" target="_blank"]
Manage PayPal Orders
When you receive a new order it will appear in the Orders menu. You can then do the following to finalize it:
1) Send a purchase confirmation email to the customer (include download links if applicable)
2) Ship the goods

WP PayPal Extensions
WP PayPal plugin comes with a couple of extensions that you can use to enhance its functionality on your website.
1. Custom Buy Now Amount
With this extension, your buyers will be able to purchase an item with a custom price.

All you need to do is install this extension and leave the amount parameter empty in the shortcode.
[wp_paypal button="buynow" name="My product" amount=""]
2. Buy Now Discount
Buy Now Discount extension allows you to offer various automatic discount options with your WP PayPal Buy Now buttons.
Check out the extension page here
Suzanne Gould says
Hey I have just addded your buy now button -I have it working and transfering through to paypal.
I wanted to added a success page after the order – so I created a hidden thankyou page on my website and added it the code.
Yet when the paypal ordere completes it redirects back to a sorry not found page with this url
https://edinburghholisticdogs.co.uk/checkout/order-received/
the sort code i have entered is
[wp_paypal button="buynow" name="My product" amount="0.01" Return=" https://edinburghholisticdogs.co.uk/checkout/order-received/" button_image="https://edinburghholisticdogs.co.uk/wp-content/uploads/2020/06/Pre-Order-Now1.png"]
what am I missing?
Noor Alam says
@Suzanne, I see an empty space just before the URL. Please remove it. Please also provide a link to the page where you have the button.
Nicole Bolin says
I am unable to find any instructions (code) in the above documentation for how to add variants (size, color, etc). Can this plugin do that and if so what are the maximum number of variants that can be added per product? Thank you.
Nick says
Hi I have installed… and set up the plugin. I have added the merchant ID and the PP associated account email address. But PP says … Things don’t appear to be working at the moment. Please try again later. I still have sandbox mode enabled? These are my parameters.
[wp_paypal button="subscribe" name="Total Licensing - UK" a3="60.00" p3="1" t3="Y" src="https://wordpress.org/plugins/wp-paypal/1"]
There are four items in total
URL supplied
I believe this is a recurring annual subscription. Is there anything I am missing Thanks?
Noor Alam says
@Nick, The src parameter is wrong. It’s linking to a page.
ThumbOne says
What are a3, p3 and t3? I’d like to set up a subscription button with say an annual or monthly autocharge. But the doc above doesn’t tell us what a3, p3 and t3 are. Any guidelines I’m missing?
ThumbOne says
Ha, found it on Stack Overflow:
a3: Regular rate. This is the price of the subscription
p3: Regular billing cycle. This is the length of the billing cycle. The number is modified by the regular billing cycle units (t3, below)
t3: Regular billing cycle units. This is the units of the regular billing cycle (p3, above) Acceptable values are: D (days), W (weeks), M (months), Y (years)
Really worth putting in the doc above.
Noor Alam says
@ThumbOne, There is a separate documentation page for it: https://wphowto.net/how-to-create-a-paypal-subscription-button-in-wordpress-911
Caterina says
My PayPal account is registered in Italy. How do I make the button and plugin work internationally?
Noor Alam says
@Caterina, I’m not sure what that means. You can only accept payments from someone in Italy?
Tania J Peterson says
Hi, I just installed the paypal for wordpress plugin and inserted several “buy now” buttons on the website with the pricing inside the code. I don’t have a paypal business account, and would prefer if possible not to have one. Can I receive payments now just with a personal paypal account or do I have to create a business account? If I sandbox test receiving payments, do I have to create a business account?
Noor Alam says
@Tania, You don’t need a business account to accept live payments. For testing you need two sandbox accounts – one to represent a buyer and another to represent a merchant. It’s better to create a business account for the merchant because personal accounts don’t support all the PayPal features. You will also be able to reuse this account in the future to test other PayPal APIs.
Tania J Peterson says
Thanks very much. That’s all I need to know.
Jessica says
Hello,
I am interested in using this plugin for a future client. Is there a paid version? Also, just to clarify – these buttons open up a new window within PayPal’s site, is that correct? I just want to ensure that the shopping cart itself is hosted on PayPal’s server, making PCI compliance their issue.
Thanks!
Jessica
Noor Alam says
@Jessica, It’s a free plugin. The shopping cart is hosted on PayPal’s server but the product data is posted from your site.
Sara says
Hi, I added buy now button but the item is to be shipped in different country the shipping price will also change. Is there a way to achieve this ?
Noor Alam says
@Sara, The plugin doesn’t really any shipping address from the customer. Can you configure country specific shipping in your PayPal account?
VASUDEVAN JAYARAJ says
when integrating paypal in wordpress showing this error “Things don’t appear to be working at the moment. Please try again later”. what can I do.
Jeniffer says
Good Day, I have this shortcode added on a page :
[wp_paypal button="paynow" name="CCTSW" amount="75.00"]
and it seems not working, page can be found here :https://www.stsw.org/credentialing/applications/credential-application/
it says, “Please enter a correct button type” please advice. Thanks.Noor Alam says
@Jeniffer, Can you please show where it mentions the button=”paynow” parameter?
Jennifer says
Hi,
This is the page
https://www.stsw.org/credentialing/applications/credential-application/
.frontend –
https://prnt.sc/tnexq3
backend –
https://prnt.sc/tneyxw
Noor Alam says
@Jennifer, I mean how did you get this button=”paynow” parameter? Does it show anywhere on the site that you can use this parameter in the shortcode?
Jennifer says
Hi,
The buttons on this page is working before. I wasn’t sure why it didn’t work after all. I change “paynow” to “buynow” and it worked. Does the “paynow” parameter no longer in effect?
https://www.stsw.org/credentialing/applications/credential-application/
Noor Alam says
@Jennifer, There never was any paynow parameter.
Yves says
Will the return and cancel_return page receive a status or details of the transactions
Noor Alam says
@Yves, PayPal may send some data but the plugin doesn’t process it.
Mike says
Can an email address be used in place of a merchant ID? I am a sole proprietor and do not have articles of incorporation, and thus can’t get a paypal merchant account.
Noor Alam says
@Mike, you can just leave it empty.
RuthW says
Hi, I need to insert a “comment” field into the PayPal check-out window on my website. Any advice on how to do this?
Lucian lazar says
Hello, I’m using the WP Paypal shortcode inside a contact form 7, but it stamps only the shortcode code. How can I use it inside a contact form 7?
Thanks
Noor Alam says
@Lucian, You can only insert it into a shortcode block of the post/page editor.
Barry Ellis says
Hi when integrating wp-paypal into my WordPress site I get this error “Things don’t appear to be working at the moment. Please try again later”. The plugin is stuck in “enable test mode” in settings. When I un-tick this option as soon as I select “save changes” it re-ticks the enable test mode option automatically. What is causing this.
Noor Alam says
@Barry, This sounds like a caching issue.
Michael Gurner says
Hi – I’m getting orders and am getting Paypal confirmation, but I’m not seeing anything added to the Orders tab in WordPress – can you advise?
Noor Alam says
@Michael, Please enable debug, reset the log file and make another test purchase so I can take a look.
Michael says
Hi – my purchases are going to paypal correctly, but I’m not seeing anything in the app back end in WordPress – nothing gets added to my orders page. Can you advise?
ThumbOne says
Why do my buttons all have an odd grey box around them? Can be seen here:
https://www.hogs.org.au/joining-hogs/
Noor Alam says
@ThumbOne, Something is adding class=”btn btn-default” to the button image. The plugin doesn’t do this. Is it coming from your theme?
ThumbOne says
Maybe. I’d have to work out how to check. Not familiar with WP themes.
ThumbOne says
I can see the styles are defined in:
/wp-content/themes/activetab/assets/bootstrap/css/bootstrap-theme.css?ver=3.2
but I can’t see how or what is applying that style to the button.
ThumbOne says
Well I found where it happens. Did I ever mention how much I detest WordPress and will lost it as soon as I can? Anyhow its in this line of JS:
$(‘input[type=submit], input[type=image], input[type=button], input[type=reset], button’).addClass(‘btn’).addClass(‘btn-default’);
In wait for it, this included file:
Notice activetab. The theme I lost, the theme we wondered might be causinghte issue. And it’s now on anothe theme! Not active tab.
Man, how does one get WordPress to lose the activetab theming JS!?
ThumbOne says
I guess the real question is, given many other themes do similar (some are clean) and I work with a crew that seem to want ActiveTab, can code be added to this plugin to undo this, to force the button image to claslessness?
ThumbOne says
And I sort of fixed it by putting this custom code on my WordPress page:
window.addEventListener(“load”, function(){
Array.from(document.forms).forEach(
function (form, i) {
if (form.action == “https://www.paypal.com/cgi-bin/webscr”)
for (let j=0; j<form.children.length; j++)
if (form.children[j].tagName == "INPUT" && form.children[j].getAttribute('type') == "image")
form.children[j].removeAttribute("class");
}
);
});
It’s clunky as something in the footer of the theme (so after my page loads) attaches those classes, so the only way I can lose them again is by attaching to an onload event, ut alas this means the page renders with shaded boxes then flicks clean!
Noor Alam says
@ThumbOne, Glad to hear that you found a workaround. However, this is not a good solution. Your theme should not dynamically add classes to buttons with JavaScript.
ThumbOne says
It’s not my theme, it’s a trashy theme clearly because it does just that! Indeed a bad move. But the others admining the site seem to like it and I tried many others and most do some odd styling to those buttons! Did I mention that I loath the bloated complexity of WordPress and would just as soon see us migrate to PicoCMS. KISS IMHO!
Margaret says
For BuyNow button, I specified a button image, but the standard PayPal button is displayed. The shortcode is
[wp_paypal button="buynow" name="Adult Ticket" amount="20.00" no_shipping="1" undefined_quantity="1" button_image="http://nvchorale.044ef61.netsolhost.com/wp-content/uploads/2020/07/BuyNow-darkpurple.png" return="http://nvchorale.044ef61.netsolhost.com/thank-you-adult-ticket/" cancel_return="http://nvchorale.044ef61.netsolhost.com/thank-you-adult-ticket/"]
Noor Alam says
@Margaret, I’ve made some changes to your shortcode. Please copy and paste it into a shortcode block and see what happens.
Margaret says
Did the change have anything to do with the quotation marks? I was looking at the code more carefully and realized that they were not all the same – some were vertical and some were slanted. I changed them all to vertical and I got the image. And when I copied your code the undefined_quantity parameter worked as well. Thank you!
Margaret says
Now I am using the donate button. My shortcode is
[wp_paypal button="donate" name="Bronze Level: $25-$249" target="_blank"]
I get the donate button, and the PayPal window appears in a new tab, but the name does not appear. What am I doing wrong? Is it the double quotes again? I tried copying the double quote from the button type value and pasting it around the name value, but the name value still does not appear on the PayPal screen.
Noor Alam says
@Margaret, Sometimes PayPal doesn’t show the name until you log in.
Margaret says
Does that mean that only people with PayPal accounts will see the name? I used the guest account option, and it did not appear on the screen to collect my financial information. I suppose PayPal could be making changes, since I did get the name on the first PayPal screen (where the amount of the donation is to be entered) a few weeks ago.
Guidini says
Hello. I need to put “I agree to the Terms & Condition” in my checkout.
Is it possible for me to do this?
Erich Haynes says
how can I make the sales tax dynamic function? my sales tax is 6% but it’s just adding 6 cents to the total rather than figuring a total amount
Noor Alam says
@Erich, Did you specify this in the shortcode or in your PayPal account?