PayPal or Venmo point-of-sale payments work in the same way as other QR code wallet payments at the point of sale. However, a special onboarding flow applies, and you can test your integration using a test app provided by PayPal.
Onboard with PayPal/Venmo
To enable point-of-sale PayPal or Venmo transactions through Adyen, you need to have PayPal sandbox and business accounts exclusively for Adyen point of sale. We then need to configure settings for you, both on your PayPal accounts and on the Adyen side.
You cannot use a PayPal account that you may already have for online payments or for an integration with another payment services provider.
-
Create a PayPal developer account, if you do not have one already.
-
Go to https://developer.paypal.com and select Log in to Dashboard > Sign up.
-
-
Create PayPal sandbox user accounts exclusively for Adyen point of sale. You need these accounts for testing.
- Go to https://developer.paypal.com and log in with your developer account.
-
Create a Business and a Personal sandbox account.
-
Create a PayPal business account for Adyen point of sale. You need this account for making live payments.
-
Go to https://www.paypal.com/us/business and select Sign up.
-
-
Ask your Adyen account manager to set up your accounts for PayPal and/or Venmo.
You will receive a link to a location where you can confirm you give us permission to configure your PayPal account. We can then add the stores under your Adyen merchant account to your PayPal account.
Implement a payment flow
For PayPal and Venmo we support all QR code payment flows:
- Merchant-presented from terminal: you launch the QR code from the terminal.
- Merchant-presented from POS app: you launch the QR code through your payment request.
- Consumer-presented: you scan the QR code that the shopper launched on their phone.
Merchant-presented from terminal
To launch a PayPal or Venmo QR code from the terminal:
- Initiate a payment.
- On the terminal, select Wallets and then either PayPal or Venmo.
- Hand the terminal to the shopper, so they can scan the QR code with their mobile phone and verify the payment.
- You receive the result of the payment, as you would receive the result of a card payment.
Refer to Initiate from terminal for a general description of this flow.
Merchant-presented from POS app
To launch a PayPal or Venmo QR code directly instead of by manually selecting options on the terminal:
-
Make a payment request with a
PaymentTransactionobject that includes:TransactionConditions.AllowedPaymentBrand: paypal_pos for a PayPal QR code, or venmo_pos for a Venmo QR code.
The example below shows how to initiate a EUR 10.99 PayPal payment from your POS app.
{ "SaleToPOIRequest":{ "MessageHeader":{ "ProtocolVersion":"3.0", "MessageClass":"Service", "MessageCategory":"Payment", "MessageType":"Request", "ServiceID":"0918171608", "SaleID":"POSSystemID12345", "POIID":"V400m-324688179" }, "PaymentRequest":{ "SaleData":{ "SaleTransactionID":{ "TransactionID":"8954", "TimeStamp":"2019-09-18T15:16:08+00:00" }, }, "PaymentTransaction":{ "AmountsReq":{ "Currency":"EUR", "RequestedAmount":10.99 }, "TransactionConditions":{ "AllowedPaymentBrand":[ "paypal_pos" ] } } } } } -
Hand the terminal to the shopper, so they can scan the QR code with their mobile phone and verify the payment.
-
You receive the result of the payment, as you would receive the result of a card payment.
Refer to Initiate from POS app for a general description of this flow.
Consumer-presented
To initiate a PayPal or Venmo payment by scanning the QR code presented in the PayPal or Venmo wallet app on the shopper's phone:
-
Scan the shopper's QR code with your barcode scanner.
-
Translate the QR code data into a 12-digit numeric value, to be passed in the payment request.
-
Make a payment request with a
PaymentRequestobject that contains:PaymentData.PaymentInstrumentData.PaymentInstrumentType: StoredValue-
PaymentData.PaymentInstrumentData.StoredValueAccountID: the details of the barcode or QR code:StoredValueAccountType: OtherEntryMode: ScannedIdentificationType: BarCodeStoredValueID: a numeric value representing the shopper's QR code.
The example below shows how to initiate a payment of 10.99 euros, using a QR code with the numeric value 593190468703.
{ "SaleToPOIRequest":{ "MessageHeader":{ "ProtocolVersion":"3.0", "MessageClass":"Service", "MessageCategory":"Payment", "MessageType":"Request", "ServiceID":"0918171609", "SaleID":"POSSystemID12345", "POIID":"V400m-324688179" }, "PaymentRequest":{ "SaleData":{ "SaleTransactionID":{ "TransactionID":"19630", "TimeStamp":"2019-09-18T15:26:39+00:00" }, }, "PaymentData":{ "PaymentInstrumentData":{ "PaymentInstrumentType":"StoredValue", "StoredValueAccountID":{ "StoredValueAccountType":"Other", "EntryMode":[ "Scanned" ], "IdentificationType":"BarCode", "StoredValueID":"593190468703" } } }, "PaymentTransaction":{ "AmountsReq":{ "Currency":"EUR", "RequestedAmount":10.99 } } } } } -
You receive the result of the payment, as you would receive the result of a card payment.
Refer to Initiate from barcode scanner for a general description of this flow.
Refunds
QR code wallets only support referenced refunds, so you'll have to make a ReversalRequest to refund a QR code wallet payment. Both full and partial referenced refunds are allowed.
Testing PayPal/Venmo
To try out PayPal or Venmo payments, you can use the Adyen simulator as described in Testing QR code wallets.
But you can also use a test app and a sandbox environment provided by PayPal. The test app is an iOS app for both PayPal and Venmo. An Android test app will be available soon.
To use the PayPal test app:
-
Contact us, and provide us with:
- The email address where you want to receive emails from PayPal and us about the test app.
-
Your company logo in PNG format with a resolution of 150 ppi. PayPal will include that in the app.
-
Download the test app using the link you will receive in an email from PayPal.
-
Log in to the test app using the credentials from your PayPal developer account.
-
Make test payments using your personal sandbox account.
-
Check the result in your personal and business sandbox accounts.