Choose Your PayPal API, Making Sense of the Mess

The invoicing and accounting web app I’m building will require payment if it is used by larger companies. To facilitate this, I turned to the biggest online payment provider that I knew that also has integration options: PayPal. On its developer website, PayPal offers an immense amount of options with very little guidance on what to choose.

I’ve tried to go over the different options and figure out when you might want to use which API. Here’s a little flow chart (click to enlarge):

Pick your PayPal API

Your most important choice will be whether you implement everything via the web services or you use many of the forms PayPal offers. I like the second option because seeing the familiar PayPal screens will give your users extra confidence. Paying via the Internet is always a case of trusting the other party.

I doubt any one will use the asynchronous Instant Payment Notification (IPN) as this doesn’t provide guarantees and, I believe, will also greatly complicate your code.

If you’re programming in Java, you will also notice most of the SDK code is pretty awkward (remember model 1? No? Good). So as soon as I noticed there is a pretty straightforward and seemingly robust Java library for the Express Checkout API, that pretty much made the choice for me.

Do you have any experience with PayPal? I’d love to hear your view on their API jungle. I’m also open to corrections, as PayPal’s documents are far from clear and different names seem to apply to the same technology.

update: Today I actually wanted to try out Website Payments Pro. Turns out that this is only available in the US, UK and Canada. You’d think that this would be advertised in a large type somewhere on the front page. But it isn’t. The mess is even worse than I thought.