Want the Full Drupal ECommerce Solution?

How do we keep this site running? This post may contain affiliate links — the cost is the same to you, but we get a referral fee. Compensation does not affect rankings. Thanks!

One thing that’s made E-Commerce setups difficult has been the disparity between the different elements that make it work. A successful E-Commerce setup will have a merchant account, payment gateway, shopping cart, and website that all work in tandem. Until recently, it took a developer or two to get them all working smoothly together, while allowing you to accept customers’ credit cards on your website, in a secure fashion, while still giving them a seamless shopping experience. The difficulty in setting this kind of E-Commerce solution up has just been greatly reduced via Drupal’s E-Commerce setup featuring Ubercart and Paypal.

Paypal Payments – Paypal Account Required After First Transaction

The easiest and most popular way to get up and running to accept payments online is, without a doubt, Paypal. The drawback with Paypal is not only the increased fees you pay for the convenience and simplicity, but also the fact that a user has a Paypal account associated with their credit card number or email address.

Paypal: User Account Tied to Credit Card and Email

Paypal advertises the fact that all but one of their website payment solutions (Paypal Express Checkout) do not require the customer to have a Paypal account. While this is true, it only applies to the first transaction. You’ll notice that when you make a payment via a website that uses Paypal’s easy to implement Email Payments or Website Payments Standard (WPS) methods (both of which carry no monthly fee), Paypal will allow the transaction to go through the first time by simply having the customer enter their credit card information.

What is not made so clear, however, is that a Paypal account is then created for the customer, and if they ever use that credit card or email address again with Paypal, they will be prompted to login. In other words, they can only checkout without a Paypal account the first time. The obvious disadvantage for your customers is that they’ll need to safekeep their Paypal account information so they can use it to make a purchase from (or anyone that uses Paypal for payments) next time. This is a huge barrier to sales for any future transaction – for the simple fact that if the user has trouble logging in (ie. they can’t remember their password), they’ll be unable to complete payment, and will most likely go and purchase your product or service elsewhere.

So, what’s the next best solution – one that won’t have your customers needing to create a Paypal account or remember Paypal login details? In come Drupal, the Ubercart ECommerce module, and Paypal’s Website Payments Pro.

Drupal ECommerce: Ubercart and Paypal Website Payments Pro

The nice thing about Drupal’s Ubercart module is that it takes a great shopping cart and streamlines it for use with Drupal. With the two, you have a website that’s easy to use and administer as well as a solid, free, built-in shopping cart. Add Paypal Website Payments Pro to the mix, and you have a fully featured E-Commerce solution that is regularly updated by a large community of open source developers. To integrate Website Payments Pro in Drupal’s Ubercart, you simply adjust the “Payment Settings” under Ubercart’s “Store Configuration” menu.

Advantages to Using Website Payments Pro

Since Paypal’s Website Payments Pro cost $30/ month (USD), you may want to begin by using Paypal’s free Website Payments Standard. Once you’re familiar with how it works, and you have enough demand/ monthly volume to justify the monthly fee, I think you’ll find the following Payments Pro features useful (this is what caused us to finally upgrade):

  • Integrated merchant account – this means your clients never need a Paypal account – not on the first transaction, and not on their last.
  • Virtual terminal – you can take credit card numbers over the phone, via fax, etc. – just as in a retail store, and key them into your “virtual terminal” to process them. Once again, the convenience gets passed down to your customers, who won’t need to bother with a Paypal account, retaining login details, etc.
  • Security handled by Paypal – if you choose to have your customers checkout on Paypal (most of the order process occurs on your website, with the final processing done on Paypal), you won’t have to setup a secure server.
  • Customers check out on your site, not Paypal – If, on the other hand, you prefer to have customers go through the entire check out process on your website, you can have your host setup a secure environment on your server (SSL) for this to happen.

With the right level of experience, you can get slightly better transaction fee rates, and potentially a lower monthly cost, for an ECommerce setup with another merchant provider and gateway. But for simplicity, this Drupal Ubercart/ Paypal Website Payments setup can’t be beat.

Advantages to Using Paypal’s Website Payments Standard (WPS)

The advantage to Website Payments Standard is that you still get good website integration (people check out on your website, pay on Paypal, then are returned to your site) with Drupal + Ubercart + Paypal WPS. The primary advantages to Paypal WPS is the lack of a monthly fee, and no need to setup an SSL certificate on your site. The major difference between WPS and Pro is that with Pro you can complete the entire checkout on your website – similar to a traditional merchant account setup with SSL certificate. In addition, with Paypal Pro you’ll be able, with the addition of their subscription option (an additional $20/ month), to create recurring subscription charges. And if a credit card expires, the user will be notified (a standard gateway setup supports this option as well, thanks to Ubercart’s notifications system).

The main problem people have had with Ubercart and Paypal WPS is that it’s not always easy to get Paypal communicating with your website and updating the order status to reflect that a customer had paid (to “payment received” or “completed”).

Without further ado, here’s an updated guide on getting Drupal’s Ubercart and Paypal Website Payments Standard to work together harmoniously.

Getting Ubercart and Website Payments Standard (Paypal WPS) to Work Together

How to Get These Three to Sing the Same Song?

Drupal has long been one of the most powerful open source systems on the market. But it’s always had its shortcomings. There still isn’t a stable, reliable event/ calendar management system for Drupal (although CCK + Date + Calendar comes close), and for years the E-Commerce module fell short of the robust implementation required of loaded shopping sites. That has all changed with the latest iteration of Ubercart and support for Paypal WPS (Web Payments Standard) and Paypal Pro.

Drupal, Ubercart, and Paypal – a Harmonious Relationship

If you install the latest stable, recommended versions of Drupal 6 and the respective Ubercart module, you can more or less get up and running with a payment gateway such as Authorize.net without too much trouble. You simply fill in the appropriate values in the configuration fields, setup your server to support SSL, add some products and run a couple tests, and you’re off to the races. Believe it or not, this is easier than getting Paypal’s Website Payments Pro to cooperate.

Can’t Get Ubercart’s Paypal Payment Status to Update from “Pending” to “Completed”?

One of the biggest configuration problems with the Drupal/Ubercart/Paypal setup is the difficulty getting Paypal to communicate with your website. Currently, in most of the Ubercart support forums, they tell you to disable IPN and leave the IPN URL field blank. Unfortunately, with Paypal’s recent update, leaving this field blank in effect disables the IPN feature. What you’ll notice is that while a customer is able to checkout and complete their purchase in Paypal, their order is not recorded in Ubercart. If it is, the payment status is simply recorded as “pending,” with no IPN messages in the watchdog (check your log reports and filter by UC_… messages – if IPN is setup successfully, you’ll see messages from Paypal to your website).

Turn ON Paypal IPN and Use IPN URL

The solution? Turn on IPN and enter //example.com/uc_paypal/ipn (or //example.com/uc_paypal/ipn for non-SSL) in the IPN URL field. You can reach the IPN settings in your Paypal account by logging in and browsing to Profile > More Options > My Selling Tools > and selecting “update” next to Instant Payment Notifications. Turn on IPN and enter the above URL, replacing example.com with your website name, in the IPN URL field and save your settings.

Turn ON Auto Return

The other important setting is located in Profile > More Options > My Sellings Tools > Website Preferences. Here you’ll want to turn on Auto Return with the following Return URL (//www.example.com/cart/checkout/complete (substituting your site name in place of example.com, and change to // if not using SSL). Use this and not //www.example.com/uc_paypal/wps/complete, which was intended for an older version of Paypal/ Ubercart. All the other settings should be off, with the exception of “Paypal Account Optional,” which we like to leave on.

If Using Secure Pages (SSL)

If you’re using the Secure Pages module to handle your SSL pages, you’ll want to add the following pages to include SSL (make these paths secure):


Voila Test your setup either in Sandbox (Paypal Developer), or using a small transaction ($1) that you can later refund. If you still can’t get Paypal WPS and Ubercart to work together, please comment below.

Alex bring a series of in-depth articles on search marketing and content management systems as well as troubleshooting tips to We Rock Your Web's collection. He is an avid tennis player, nature enthusiast, and hiker, and enjoys spending time with his wife, friends, and dogs, Bella and Lily.

Leave a Reply

17 Comments on "Want the Full Drupal ECommerce Solution?"


This article reminds me about many of the concerns and issues that business and web site owners face when they are considering adding the ability to accept credit cards to their site.

The thing is that this is an essential today. If you are going to do business online, you simply must accept credit cards. Otherwise, how will you get paid for your products or services? I guess you could ask people to come in to your local shop. Or you could ask them to download a form, fill it out and then fax or mail it in. Actually, I cannot imagine a business taking this approach today.

Does this make any sense to you? Me neither. In fact, just doing these things will brand you an amateur so fast that any serious customer will hit the back button and be gone forever. Do not let this happen to you! You need to have some way of collect orders via credit cards.

One of the easiest ways, as the article points out, is with PayPal. This is a very common service. I think that probably most of the US traffic online has a PayPal account. Even if they do not, it is a quick and easy process. In many cases, a customer can pay with a credit card through PayPal, without even needing to create an account (something the author did not really clarify very well).

A big downside to PayPal is indeed the fees involved. It can seem like they are squeezing the life out of you. Then again, I think this is still a good option, just due to its popularity. However, I would not recommend using PayPal as your only solution. There is just too much that can go wrong. I know of many people that have had their seller accounts shut down with PayPal, or placed on hold. Many of these happened fro silly little technical reasons. As a business owner, you simply cannot afford to take this kind of risk by putting all your eggs in one basket.

The solution to this is find alternative credit card processors. There are a number of services which operate very close to the way PayPal does, minus the heavy handed tactics. I personally like and use the service provided by 2checkout.com. Once again, the fees are a bit high. I am not fond of paying high fees, but it seems to be a needed evil in certain situations.

The other main option is to go out and get a merchant account. This could be done directly through a bank, or you could use one of the merchant account resellers that seem to proliferate on the internet today.


Either way, a merchant account is the most direct way to process credit card orders. There are some technical details which will need to be worked out. However, usually the service provider will help guide you through this. It is usually just adding a page or two to your site that allows for the secure processing of cards and transactions. Once you have it set up you are good to go. From this point, everything will happen behind the scenes and it is all automated.

In some cases, you may want to consider having several of these systems running together. Personally, some of my sites run PayPal and others run 2checkout. But, I if anything should happen I am perfectly situated to switch to the other provider with very minimal loss of income. This is probably the smartest way to operate with multiple processing systems in place. You never know when there may be a situation that calls for a switch. It is certainly much easier to already be prepared than having to scramble around looking for a solution and then trying to figure out how to implement it. Not to mention doing all of this when you are possibly quite agitated and not in a great mood to focus.

Each business should also consider the fact that merchant accounts usually come with a number of additional fees and expenses which will need to be paid. Having said this, if this is the first time you are getting the ability to process credit cards, then the additional sales you will receive more than make up for these additional fees. Nonetheless, many experienced business owners are always complaining about their merchant account fees. It seems that many of these also come with long term contracts and the businesses are sometimes hard to deal with.

Customer service can also be a real issue. Many times, these providers only see you as cash cow. Just pay your money every month and go away seems to be a very common attitude. I am also happy to report that things certainly do not need to be this way. Many of the newer merchants out there have become aware of the commonly held ideas about poor customer service and are really trying to change. In addition, many of the common fee structures are being changed to make the entire process much more simplified and streamlined.

These are excellent changes which should make the whole industry seem less like a bunch of con artists promoting shady deals in the dark corners. I guess it is not quite that bad, but if you do your research and choose carefully, it is certainly very likely that you can find a great merchant provider with excellent fees and solid customer service.

Finding such a merchant provider is so needed. This whole issue actually effects your ability to get paid. What could be more important than that? You need a company that you can consider your partner, not an adversary.


Late in the article, the information gets a bit technical, and I was a little lost at first. There was no immediate explanation for what “IPN” stood for or why it needed to be disabled. Later, it was illuminated that this meant Instant Payment Notification, but it still was not entirely clear what role this would have played in the setup. That said, I learn better by doing rather than by reading, so perhaps these are the sort of things that for me are better figured out by getting on the program and trying it rather than just reading about how it works in theory. Nevertheless, the instructions were very clear, and I especially appreciated the supporting links. I actually went onto my own Drupal 6-powered site and tinkered out with the advice in the article. It seems to take a little while and I definitely learned a lot by trying out the article’s recommended instructions.


The title of the article immediately caught my attention, as Drupal, Ubercart and Paypal are all software and/or internet-based programs that are paving the road to the future of E-commerce.

I appreciated that the article got straight to the point and started giving out information. As a Drupal user via a professional web developer, I really needed the information about what Drupal ECommerce was about and how it might help. The fact that these questions were immediately answered was very impressive to me and I got excited to continue reading.

Paypal has remained somewhat of a mystery to me, even though I have both a personal account and manage an account for my business. I also use PayPal at various websites and it really had been a mystery to me as to why I could not ever just put in my credit card number at a particular site without having to enter my login information. It is certainly eye-opening to see that Paypal operates the way they do, and that the company then seems to offer its own solution of paying for a ‘better’ version of Paypal, Paypal Pro. This seems a bit disingenuous to me, and definitely turned me away from wanting to use Paypal. What good is it anyway if it will actually hurt my company’s ability to make a sale? Not cool. I will be asking my Drupal web developer if there are any free or less expensive alternatives to Paypal Pro that do not require users to have an account.

I did feel that the advice I was getting through the article was written by experts in the field and that whoever wrote the article knows the best ways to get the Drupal, Paypal, and Ubercart programs to function together smoothly (‘dance’, as they put it). The comparative advice is also quite useful, in terms of choosing between Paypal, Paypal Pro, and Paypal Website Payments Standard (WPS). I also really appreciated the Authorize.net payment gateway recommendation. It is nice to know that Drupal and Ubercart offer a way to run a store that is easy and free to operate, even if it does not have the name recognition or the reputation for safety and security offered by Paypal.


I kept finding conflicting settings for WPS, and most of the forum posts are 4 years old now. In the end I followed your settings, with the addition of adding “uc_paypal/wps” and “uc_paypal/wps/*” to the Secure Pages SSL list. Everything is FINALLY working now, thank goodness! That was incredibly frustrating, there seems to be no documentation for Ubercart 3. Yay for Google.


Ubercart is a solid shopping cart. Way more flexible IMO than the “E-Commerce” Drupal module. The only thing they need to work on is providing more payment/ merchant account provider support. Not all of us use authorize.net or Paypal.


I’m loving the Drupal + Ubercart + Authorize.net CIM combination – finally a stable, secure and easy way for me to process payments. It’s even working flawlessly in recurring mode, and when a customer’s card expires, I simply login to authorize.net and update the expiration date. Drupal automatically references that CIM correctly for the next transaction attempt.

The only thing that’s a bit annoying is that I’m unable to reference a CIM profile when creating a new transaction. So I either need to get the credit card data from my customer all over again (because it’s stored encrypted in CIM, for good reason), or have them go through the order/ transaction steps themselves.

Am I missing something? Is there a for me, as admin, to create an order on behalf of a customer using their existing authorize.net CIM profile?


Wow, this has got to be the ultimate E-commerce setup. Drupal plus Ubercart makes my shopping cart life so much easier! I remember when it used to be such a hassle to get shopping cart, payment gateway, payment processor, and website, etc. to work in tandem. Drupal and Ubercart, so far, provide a stable and secure solution.

I’m using the Authorize.net payment gateway with CIM (Customer Information Manager). I’ve got subscriptions working with the credit card module, so I don’t need ARB (Automated Recurring Billing, which costs an extra $10/ month from Authorize.net). My only problem is the eCheck.net service (also $10/ month – allows me to accept check payments) isn’t given as a recurring payment option. Is anyone working on this? I’d be willing to sponsor development.

I tried adding ARB instead, but that doesn’t seem to integrate with Ubercart nearly as seamlessly as CIM does. ARB does, however, add an “expiry date reminder” for my customers. I can see the expiration dates in CIM, but I can’t find a way to create a condition/ action/ trigger reminder…

I know that’s a lot, but if anyone can provide support (I’m willing to sponsor) for either recurring eCheck.net with CIM or expiration date reminders w/o ARB, I’d be eternally grateful!


There is a long-running (at least 8 months) bug in Ubercart dealing with Paypal. A user that orders through Paypal will either get their e-mail confirmation twice (making it look like they paid twice) or not at all (so if they ordered a download, they do not get a link since Ubercart has no way to display a download link on the checkout page normally..). This is a bad usability bug and it’s amazing that it’s been so long without an official patch. I don’t relish the idea of angry customers e-mailing me wondering why they were charged twice (even though they weren’t).

It’s a shame, since I think Drupal/Ubercart could make a great membership site with an integrated storefront.


There’s an easy fix for this using condition groups. This worked for me (from ubercart.org):

For all affected Conditional Actions…

I have two Conditions groups. They are related with OR, so that the trigger fires if either group evaluates to TRUE.

* The first group contains two Conditions, which are related with AND, so that the group evaluates to TRUE iff both conditions are true.

* The first Condition in the first group is a Check the payment Method condition, and it is checking to see if this is a PayPal order.
* The second Condition in the first group is a Check the order status condition, and it is checking to see if the status is “In checkout”

* The second group contains just one Condition, so I’ve left it on the default relationship of AND (but it should make no difference!)

* The Condition in the second group is a Check the payment method condition, and it is checking to see if this is NOT a PayPal order. I.e., the payment method ticked is PayPal, but the NEGATE box is also ticked.

That’s it. The result: The conditional action fires either if the order was not placed through PayPal, or if it was PayPal but the order status was “In Checkout”.

I should add that I only have two Payment Methods enabled – PayPal and Check, so I can’t comment on what things like Authorize.NET would do. But I can say what you need to do with it. If any additional payment method turns out to be issuing duplicate e-mails, tick it in both the Payment Method Conditions (1.1 and 2.1). If it does not cause duplicate e-mails, leave it out of the equation.

Finally, on my store, I needed this on three Conditional Actions (all with the Customer Completes Checkout trigger). Those 3 Actions are:

* E-mail customer checkout notification
* E-mail admin checkout notification
* Decrement stock upon order submission


There’s a long-running bug with Drupal/Ubercart regarding payments through Paypal…emails get sent twice or sometimes not at all. Not very user friendly, people thinking they’re getting charged twice, or getting no confirmation of order OR the download link they bought (since you can’t display it on the checkout success page in Ubercart normally!) :/ This bug has been around for at least 8 months and there is still no official fix.

I really liked Ubercart and that combined with Drupal’s access control, has a lot of potential. But I don’t like the idea of angry customers asking me why they were charged twice when they really weren’t.


Wow – the Ubercart Drupal module is waaay better than the E-Commerce Drupal module. It appears to be much more modular, self-contained and reliable. I’m able to easily set it up with Authorize.net’s CIM and eCheck services, and can track customer accounts, invoices, recurring billing, etc. without having to pay for my bank’s optional $12.95 monthly reporting service, as I get all the info I need within Ubercart’s reporting and stats! Thanks Ubercart and Drupal!



I recently started an Ubercart (Drupal) online shopping cart for selling affiliate products and managed to embed the affiliate links into my Drupal website, so that the clicks are registered in my affiliate (website’s) account.

I would like to know, if there is a way (modules or any other option) to do a checkout for my affiliate products within my website without transferring/redirecting the visitor to the affiliate website. And here is the most important thing: whenever I do a checkout/sale it must be registered in my affiliate (website’s) account even though I am doing the entire process of checkout within my Drupal-Ubercart website.

Please let me know if this is possible with Ubercart-Drupal website and how should it be done.

Thank you for your valuable input.


We Rock Your Web
We Rock Your Web

That would depend on the implementation of the affiliate code. There would need to be communication between Drupal’s Ubercart and the affiliate tracking system for your sale to be registered. Hence, this is a question best directed at your affiliate provider.

Good luck!


Great tutorial. Any chance you guys will cover the process of selecting and opening a merchant bank, setting up a payment gateway, SSL, PCI compliance, etc.? Paypal is fine for a startup but I’m ready for the next level. And it’s annoying that my clients have to keep track of Paypal account login info after the first transaction…

We Rock Your Web
We Rock Your Web

Yes, we’re in the process of writing up a complete E-Commerce tutorial that will take you through the whole process. Stay tuned! (And sign up for our “content updates” at top left if you haven’t already – you’ll be notified within 24 hours when the tutorial goes live).

best website designer
best website designer

Drupal and Ubercart are without a doubt a killer E-commerce combination, especially compared to the flimsy setups that existed back in the day. However, I’m still flummoxed by the lack of any kind of solid merchant bank provider. While I don’t want to pay the heinous Paypal monthly fees, their system continues to be the one to beat when it comes to simplicity and ease of installation.


Send this to a friend