PayPal Payment Services Overview
Tags: paypal, api, classic, rest
Published: 2018-10-29 02:53:35

---
title: PayPal Payment Services Overview
published: true
description: An overview of PayPal's wide array of web service APIs and payment products.
tags: paypal, api, classic, rest
---

#Overview

PayPal has a wide range of payment products and services.  Over the years many of them have over-lapped, and it can be very confusing what you should be using and when.

I just wanted to offer this no-fluff review of what PayPal has to offer because I see so many developers frustrated and confused by everything they provide.

#PayPal Standard

If you are creating basic PayPal buttons from within your PayPal account, this is [PayPal Standard](https://developer.paypal.com/docs/integration/web/).  

This can also be used in other ways, but the end result is simple HTML form that sets up a basic form POST to PayPal with [standard variables](https://developer.paypal.com/docs/classic/paypal-payments-standard/integration-guide/Appx_websitestandard_htmlvariables/) included for payment details.

This is the easiest method of tying PayPal payments into a website or application.

#Express Checkout

This is the API method of integration PayPal payments, where buyers would typically login to a PayPal account and submit a payment (although this is not required.)

This is available as a [REST/JSON service](https://developer.paypal.com/docs/checkout/), or also as [NVP/SOAP](https://developer.paypal.com/docs/classic/api/#express-checkout).

PayPal is calling NVP/SOAP the Classic API, and they have notices in that documentation that it is deprecated.  This is not entirely true.

They are indeed trying to get people into the REST services (or others that we'll review in later) but the Classic API is not going anywhere.  If you prefer NVP/SOAP for any reason, or you already have things integrated that way, you don't have to worry about it going away any time soon. 

I do recommend using the REST services if you can, and I especially recommend making sure you integrate the [Smart Payment Buttons](https://developer.paypal.com/docs/checkout/#smart-payment-buttons?mark=smart%20pay).

The Smart Payment Buttons make the experience much better for buyers, and it makes it more obvious that you do NOT have to have a PayPal account in order to pay with a credit card.  It will still be PayPal branded checkout, though.

#Website Payments Pro

Specifically, this is the [DoDirectPayment](https://developer.paypal.com/docs/classic/api/merchant/DoDirectPayment_API_Operation_NVP/) API.  This is the Classic API version of processing credit cards directly, much like you would with any other credit card processor account (ie. Stripe, Intuit, PayLeap, Group ISO, etc.)

With this you would simply add a credit card form directly to your checkout where the user would enter their details.  You would send those details to PayPal's server for a success/fail result.

No PayPal Branding is displayed here.  It's completely up to you to build your checkout system and process the data accordingly.

#Payments Pro

This one, without the "Website" included in the name, is virtually the same thing as DoDirectPayment except that it uses the [PayFlow Gateway](https://developer.paypal.com/docs/classic/products/payflow/) instead.

PayPal acquired the PayFlow gateway from Verisign years ago.  Unfortunately, the product name they used is very much like the DDP product, so it's often confused.  

If you're ever working with a client or building your own integration for "PayPal Pro" you need to make sure you know exactly which version of it you're going to be working with:  DoDirectPayment or PayFlow.

I've seen quite a few people find documentation for "Pro", integrate accordingly, and later find out they used the wrong one based on what the client actually had on their account.  Watch out for this.

#Braintree

This is another acquisition PayPal made a few years back.  [Braintree](https://www.braintreepayments.com/) is essentially another standard credit card processor like Stripe or any other, but they offer a couple of different ways to integrate things.

##Drop-In UI

For a simplified integration, you can use the [Braintree Drop-In UI](https://developers.braintreepayments.com/guides/drop-in/overview/javascript/v2), which embeds a Braintree hosted payment system into your application using an iFrame. 

This will include PayPal, direct credit cards, Apple Pay, and Google Pay all within a single integration.  This is great, and it works wonderfully in most cases.  If you find it too limiting, though, you can integrate Braintree Direct.

##Direct

This is essentially the same thing as PayPal Pro (DoDirectPayment and PayFlow as discussed above.)  This allows you to process cards directly without any iFrame or branding at all (other than what you add yourself).  

#Reference Transactions

This is when you use the data that PayPal stores on their server to process future payments for the same buyer.  This allows you to setup things like "one-click payment" without the need to store sensitive credit card details in your own database.

You might see this called a number of different things:  Reference Transactions, Token Payments, Vaulted Payments, Future Payments, etc.  They all mean the same thing.

##Classic API
With the Classic API, the terminology is "Reference Transaction".  This can be used with Express Checkout and PayPal Pro.  

However, if you are using this with Express Checkout, the seller PayPal account will need to have "[Billing Agreements](https://developer.paypal.com/docs/classic/express-checkout/integration-guide/ECReferenceTxns/?mark=reference%20transaction#)" enabled on their account.  This is a very difficult thing to get approved, unfortunately.  

No additional approval is required for Reference transactions with PayPal Pro

##REST API
This functionality is referred to as a [Vault in the REST APIs](https://developer.paypal.com/docs/integration/direct/vault/).

#Adaptitve Payments

This is a platform PayPal launched in 2009 that was really pretty cool, but it didn't last, and it is now officially deprecated.  If you're already approved for it you can continue using it, but they are not approving any new APP IDs for Adaptive Payments applications.

What it does is allows you to split payment sin real-time during checkout, adjust who pays fees, create accounts using APIs, and some other things I won't get into much here since it's no longer available.

Adaptive Payments is meant to be replaced by PayPal Marketplaces.

#PayPal Marketplaces

This is what PayPal is launching for people to build online marketplaces like eBay, Amazon, or other similar sites where 3rd party vendors are posting their products for sale, and the site owner often wants to keep a commission.

This platform will allow you to do the same sort of split payments that Adaptive Payments did, and it will also allow you to tack on your own additional fee if you would like to (above and beyond PayPal's fee.)

## TIP
As of this writing, the Marketplaces API is only available to select PayPal Partners.  As such, there is a bit of a gap to fill since Adaptive Payments is already deprecated, but Marketplaces is not ready yet.  Check [this guide](https://www.angelleye.com/paypal-split-payments-express-checkout-billing-agreements-reference-transactions/) for work-arounds to this problem if you find yourself stuck in this gap.

#Invoicing

PayPal provides a pretty robust invoicing system for free built right into the platform.  Just go to www.paypal.com/invoice and you can play around with it if you didn't already know about it.

It allows you to create invoices which are sent to the buyer with a professional, branded design.  It allows your buyer to pay with a PayPal account or by using a credit directly.  You can send invoice reminders, cancel invoices, etc. all from within your PayPal invoice manager.  

The [Invoicing APIs](https://developer.paypal.com/docs/invoicing/) simply allow you to do all of this over API calls.  

#Instant Payment Notification (IPN)

This is a [notification system](https://developer.paypal.com/docs/classic/ipn/integration-guide/IPNIntro/) where PayPal will send a POST of data to a listener that you specify any time a transaction hits your PayPal account.  

IPN is designed to work with:

* PayPal Standard
* Classic APIs

#Webhooks

Webhooks are the same as IPN, but they are a bit more broad and flexible.  Webhooks work with the REST APIs.

It's very important to make sure you're using IPN with Classic APIs, and Webhooks with REST APIs.  If you trigger a payment with REST expecting to get an IPN you'll be sitting there confused when you don't get one.

#Conclusion

This was my attempt at a short and sweet, no fluff post about PayPal's products and how to avoid confusion or issues integrating the various products into your applications.  This could be a MUCH longer article, though, so if I have missed something you're curious about or I've confused you just let me know and I'll clarify.

Hope this is valuable for you in some way!