Paypal Payments Plugin for WordPress

All the PayPal plugins I’ve tested have fixed payment settings. This plugin is different. It allows the user to fill in a form with their reference number/ ID/invoice number and the amount to pay before submitting to PayPal.

It’s ideal for anyone who has variable payments: guest houses, B&B, hairdressers, dog walkers, window cleaners, builders, plumbers and so on.

And as simple as I can make it.

Once you have installed and activated the plugin just go to the settings page and enter your PayPal email address and the Currency.  Now go to your payment page and enter the shortcode [qpp]. That’s it, nothing else to do.

Click Here to Download the Plugin

Upgrade to Pro

The free version of the plugin will do the job but if you want a slick and professional payments portal you need the awesome In-Context payments. This is a PayPal feature that lets people make a payment without leaving your website. Find out More...

But there’s more…

Paypal Payments admin page

PayPal Payments admin page

You can:

  • Have multiple payment forms on your site,
  • Preset the ID and the amount
  • Let users select the quantity
  • List options for a product or service.
  • Edit any of the labels and error message
  • Style the form width, font, background and borders
  • Add your own custom CSS
  • Change the settings for thank you and cancel pages
  • Add coupon codes
  • Use WordPress queries
  • Link to Terms and Conditions
  • Calculate and display live totals

And it’s not just me

All these websites use the plugin as well. Or at least they did when I created the page.

People who use the plugin

Setting up and using the plugin

Here is my handy guide to setting up and using the plugin.

Some forms to look at

Here’s a page of example forms to play with.

Instant Payment Notification

If you have a PayPal Business or Premier account you can get instant payment notifications. Set this up on the IPN page of the plugin settings. If you need to check it’s working there is a guide to IPN simulation.


All the shortcodes are given on the plugin setup page. They are also published on this plugin shortcodes page.

Using Queries

An alternative to shortcodes is to use WordPress queries. The basic format is:£100&coupon=ABC123

The key is the use a single question mark to begin the query and ampersands to separate each bit.

If you already have a question mark in your URL just use ampersands like this:£100&coupon=ABC123

You can use any combination of queries in any order:$3.99

  1. Mohsin Alam said:

    Great thanks for this excellent plugin. I used this plugin one of my client’s website, and it was working as explained.

    • Graham said:

      Thank you Mohsin.

    • Mohsin Alam said:

      Thank you Mr. Graham for your reply. I have a question. Is it possible to add the different description in each option? Because website owner can understand which package buyer picked. Also, that would be great if customers could pick a date. Can it possible to implement by your “Quick PayPal Payments” plugin?

    • Graham said:

      Not sure what you mean by a different description. Can you send me a link to the site. Adding a date is easy but PayPal will reject the field (it’s not an allowed variable). All it would do is display in the notification email.

    • Mohsin Alam said:

      I’m working on this site

      I can’t make an option to select a package with the exact amount, then I make a different field with the amount, but this is not a smart way. The customer can select $700 package but also select $275 in amount [this is wrong, they have to select actual package amount as mentioned, now I can’t protect them to do this mistake] section. So is there any way to make auto amount when they select any package?

      Look there, I set a text field to write booking date, but it could be nice to have a date picker, no problem to have email notification only because website owner wants to know the booking date, that’s it.

      About Description: When customer selects a package then website owner will get a custom description of package, but this is optional [screenshot:

  2. Paul said:

    Hi Graham – awesome plugin, and thank you! I am trying to use queries to dynamically fill in the reference and amount. I am adding in a [qpp] shortcode into a page, and then adding in a querystring like “?id=123&reference=Doodah&amount=£100&coupon=ABC123” to that page.

    However the form is not auto populated. Please let me know what I am doing wrong, I’m obviously being very dumb or doing something wrong, I just can’t figure it out!

    Thank you again

    • Graham said:

      Hi Paul,

      I thought this was already part of the plugin but it seems to have gone awry. I will find out what’s gone wrong and send you an update to test.

  3. Pankaj said:

    Graham I am still waiting my reply. But the first thing important for me, when i click on sandbox option, so the form page is not opening, showing while blank page.
    Why so that?

    • Graham said:

      Hi Pankaj,

      I didn’t get your message. Is the blank page in the dashboard or on the payment page.

  4. Aleksandr said:

    Hello, Graham! First, thank you very much for your awesome plugin!

    I’ve noticed a strange bug using references and coupon codes. If you enter a wrong coupon code and hit “Apply Coupon”, you’ll see the message that the code is invalid and the price for the service becomes 0$ (other services became hidden and unavailable to choose). And you still can proceed to PayPal with zero price.

    Is there anyway to fix this? Thank you for your time!

  5. Dominic said:

    Hi Graham, I already asked you this via email, but thought I’d re-ask here in case someone else reading knows the answer. Your plug in is great but I have one small problem. I have the “Register Without Payment” checkbox activated, but when people use it the “Places Available” isn’t being counted. It gets counted and subtracted when people register and pay with paypal, but it does not get counted if they Register without payment.

    In the Registration tool in the WP dashboard, the Places Available space is blank.

    Is this a bug, or am I missing something obvious? (It wouldn’t be the first time.)

    Thanks for a great plugin.

    • Graham said:

      Just sent you an update with a load of bug fixes – this should be one of them

    • Dominic said:

      You’re awesome. It hasn’t arrived yet, but I’ll keep an eye out for it. Thank you!

  6. Yves Chaput said:

    Hello again, just a suggestion this time.
    It would be nice to have a direct link from the sidebar, in WordPress dashboard, to the plugin settings.
    Now we have to go to the plugin page, scroll down to the plugin itself and hit Settings.
    Nothing major but it can be annoying a bit when you have to do some back and forth testings. 😉
    Thanks for reading.

    • Graham said:

      Yup, I can do this. Will only take me a few moments to do (later today) and I’ll send you an update to test.

    • Yves Chaput said:

      No rush Graham. Whenever you feel like doing it.
      I appreciate your quick reply and willingness to add features to your plugin.

      Cheers bro!

  7. Yves Chaput said:

    Hi there Graham, I’ trying to use the queries to customize the for so the customer doesn’t have to fill that part. In the setup of the form, I have already setup some choices so I thought it was blocking the queries but it doesn’t seem so.
    My problem is the form is not taking the amount in.
    Here’s my query,$195
    But WordPress strips the $ from the amount.
    I tried using %24 to replace it but to no avail.
    It is in sandbox mode so you can test it without problems.

    Any idea?
    Great little plugin by the way. 🙂

    • Yves Chaput said:

      Another question, is it possible to give a customer the choice to either pay in full or choose a specific set of installments?
      Like, “Pay in full now or pay in 5 easy installments”
      I have the feeling your plugin is not build to handle that.
      I guess my options are to setup 2 different forms on the same page.
      Will they confilct each other if I do that?

      Sorry, I’m a pain… and like you, I’m not even being paid to set this website up.
      Helping a friend in need.
      Actually, I might get a free meal for it, I’ll have a pint in your honnor. 😉

    • Graham said:

      Nope, this isn’t an option at the moment but it is possible to do. I’m busy with some other work at the moment (that pays the bills) but will have a look at how to do this in the next day or two. In the meantime your friend will have to make do with two forms on the page.

    • Graham said:

      It’s working fine for me in the form on the right. What it doesn’t do is work on anything other than the default form. I can fix this though. I’ll do it with the other simple request your asked for and send it over later.

    • Yves Chaput said:

      It’s no big deal with the 2 forms on a page. I thought it would be a great addition to your plugin to have the possibility to offer installments.

      As for the queries, the form on the right is your default. I just put it there to show my friend we could have a form there too.
      The form on the left is what matters most for me.
      The form has been built with 3 reference options.
      From what I gathered, sending queries overwrite the predefined references.
      Could this be a problem, having predefined references on a form targeted by a query?

    • Graham said:

      I’ve now added a query so you can add the form name. There are some other enhancements being tested, as soon as they are done I will send over the update for you to play with.

  8. Fer said:

    Hi there!
    Congratulations for this complete plugin.Just one question: There are any way to put an image instead the default submit button?

    • Graham said:

      Hi Fer,
      If you go to the ‘Styling’ page you will see an image upload option under the ‘Submit Options’.

    • Graham said:

      You aren’t passing a reference (the description) to paypal. Add a fixed reference and it will work

    • Fer said:

      Many Thanks! Solved! Just a question more, when I click in the submit button and open the pay pal page in other winndow, the plugin disappears from my page (euros payment). Thats its a normal behavior?

      Congratulations again for your plugin! I will make a donation for your plugin and your support! May be you can not pay a lot of bills, but any way … 😉 I will do!

    • Graham said:

      Any donation is always appreciated. Opening into a new page/tab is always dodgy as each browser does this differently. So there is no good solution.

  9. Jack said:

    Hi, I noticed that customers emails are added to the payments page even if they cancel without paying. Is this something that can be fixed?

    • Graham said:

      Hi Jack,
      If you use the IPN feature you will get notified of those people who have paid and can delete or chase up those who haven’t.

  10. Kristine said:

    Hello I have service about article, how to make a user can choose how many words they want, (with slider maybe) and multiple by the price and the quantity of the article
    let say a customer wan to buy 10 article 500 words article with price about $0.5 per 100 words so the total amount is 500 words x $0.5 x 10 quantity = $25

    • Graham said:

      Hi Kristine,
      The slider only work on the amount field so it’s not possible to do as you want. What I can do is build you a version of the plugun that meets your needs. I would have to charge for the work though as I do have bills to pay and it’s quite a complex upgrade.

    • matt said:

      did this really work can u help

    • Graham said:

      Did what work Matt?

  11. John Palir said:

    Every time someone uses the PPQ link below it adds 9.99 in shipping charges once you place your zip at check out. How can I remove this?


    This happened after I updated last week and I can not find a field showing $9.99 for shipping anywhere.


    • Graham said:

      Hi John,
      The zip code bit isn’t part of the plugin. That’s something you have set up in your PayPal account. All the plugin does is send the invoice number and amount to PayPal. Everything that happens after this is controlled by your account settings.

  12. mina said:

    I just want to know if there is an option to make some fields required like the personal details fields.. Thanks for help.. its great plugin

    • Graham said:

      Hi Mina,
      It’s an easy enough thing to add a ‘required field’ option to the personal details field. I will have a play and send you and update in a day or two to test.

  13. nfc said:

    Hello, I want to allow users to put in how frequently they want to make a payment submitting recurring payments. Right now it only lets me have the frequency and range of recurring payments hard set, if you look at the site linked there is a pay once a month option for 12 months but I want the user to pick how many months. Is there a way I can let user input direct that?

    • Graham said:

      It’s not an option at the moment. I had enough problems getting recurring payment to work in the first place which is why it’s fixed. I’ve got an update ready to upload later today so will take a look at your suggestion after the weekend.

  14. Juda Robillos said:

    Hi I want to know on how to process paypal payment first before registering an event.
    Thanks 🙂

    • Graham said:

      Hi Juda,
      It’s not possible to do this. If you make the payment first the plugin won’t know who made the payment (paypal doesn’t feed this information back to the plugin). However I’m working on an update that will report back when the registrant has paid. You can then monitor and check and delete those who didn’t pay.

  15. Rabiul said:

    I just love your plugin. I have send you an email about the problem I am facing but you haven’t replied. Here’s the problem I am facing..
    When I click on the payment button, it takes me to paypal. But the problem is, every time it multiples the payment amount 10 times. Suppose, I have a package for $10 but when I wanted to pay the money, paypal shows $100. Where’s the problem? I have tried many times, removed the plugin and re-installed it but the problem remains same. Can you please give me a solution? I would love to hear from you. Thanks

    • Graham said:

      Hi Rabiul,
      I’ve just answered your email – to investigate the problem I need to see the payment form and I can’t see it on your site. Can you send over a link to a page with the form.

    • Rabiul said:

      My problem is fixed, thank you very much. But now I am facing another problem. Can you please tell me if there is a auto renew system which will auto renew after 1 month or a particular period of time?

    • Graham said:

      Sure, just use the ‘Recurring Payments’ option in the form settings. But you do need a PayPal Business or Premier account.

    • Rabiul said:

      Thanks Graham. After selecting the “recurring” option, I want to make all the fields hidden. How to do that? And besides that, what I have to do for making the auto renew system working perfectly? I have a premium Paypal account.

    • Graham said:

      What fields do you want hidden? If you want the full auto-renew features the plugin may not be the best option as it follows a complex set of rules. If you email your requirements I can better advise.

    • Rabiul said:

      I have mailed you, please check it. Thank you very much for your support, this plugin is a great help to me.

  16. pree said:

    The paypal was working good before i update the wordpress .. After i update my wordpress the paypal page was not working. It shows the error like “This recipient is currently unable to receive money.” Can you please help me!?

    • Graham said:

      Hi Pree,
      That’s usually a problem with your paypal account, either you need to confirm your email address or there is a limitation on your account. I don’t think it’s a problem with the plugin as nobody else has reported the error.

  17. Bruce said:


    Is it possible to set the “custom” variable in the plugin?
    I mean the “custom” variable mentioned in this page.

    Thank you.

  18. Bruce said:


    I got this error when I use HKD as currency.

    Warning: number_format() expects parameter 2 to be long, string given in C:pathwp-contentpluginsquick-paypal-paymentsquick-paypal-payments.php on line 344

    Please help. Thank you.

    • Graham said:

      Hi Bruce,
      I found the bug. The plugin does a bit of complex filtering depending on the currency and it wasn’t properly clearing the decimals from HKD. I’ve got a bit more testing to do and will send you an update once that’s complete.

  19. Ben said:

    Is it possible to add pre-filled logged in user data fields to the payment box?

    Many thanks,

    • Fer said:

      I didnt realize! Thanks a lot, Ben!

    • Fer said:

      Sorry to ask again, can I control the text in article description field in pay pal page?
      Thanks again,

    • Graham said:


      Can you send me a link to the payment page so I can make a test payment and see the problem?

  20. Clif said:

    Is there a way to add an advanced variable? I’d like this plugin to work with a membership plugin for a fitness site.

    • Graham said:

      Hi Clif,
      Adding things to the plugin is the easy bit. The problem is paypal, you are limited to a set number of fields which means if the info you want to collect isn’t in the list PayPal will ignore it. What is the advanced variable?

What do you think?

Checkout the awesome new OnePage Theme. Designed for tablets and phones but perfect on a desktop


Ouch! There was a server error.
Retry »

Sending message...

Ask a question

Spambot blocker question

2 + 7 =

Web Analytics Web Analytics