- METHOD TYPEE-wallet
- PAYMENTS
- PAYOUTS
- REFUNDS
- RECURRING
Introduction
PayPal is an alternative payments system that supports online money transfers for both businesses and individuals. It is most popular in western markets such as the U.S.A, Germany, and the U.K. It is an instant way to wire money. As an E-wallet, PayPal is globally recognized and accepted (except for in sanctioned countries and entities).
PayPal requires creating an account, which is linked to a debit or credit card.
Supported Countries
- Albania
- Algeria
- Andorra
- Angola
- Anguilla
- Antigua and Barbuda
- Argentina
- Armenia
- Aruba
- Australia
- Austria
- Azerbaijan
- Bahamas
- Bahrain
- Barbados
- Belarus
- Belgium
- Belize
- Benin
- Bermuda
- Bhutan
- Bolivia
- Bosnia-Herzegovina
- Botswana
- Brazil
- Saint Lucia
- British Indian Ocean Territory
- Brunei
- Bulgaria
- Burkina Faso
- Burundi
- Cambodia
- Cameroon
- Canada
- Cape Verde
- Cayman Islands
- Chad
- China
- Colombia
- Comoros
- Congo
- Cook Islands
- Costa Rica
- Cote dIvoire
- Croatia
- Cyprus
- Chile
- Denmark
- Djibouti
- Dominica
- Dominican Republic
- Ecuador
- Egypt
- El Salvador
- Eritrea
- Estonia
- Ethiopia
- Falkland Islands (Malvinas)
- Faroe Islands
- Fiji
- Finland
- France
- French Guiana
- French Polynesia
- Gabon
- Gambia
- Georgia
- Germany
- Gibraltar
- Greece
- Greenland
- Grenada
- Guadeloupe
- Guatemala
- Guinea
- Guinea-Bissau
- Guyana
- Honduras
- Hong Kong
- Hungary
- Iceland
- India
- Czech Republic
- Ireland
- Israel
- Italy
- Jamaica
- Japan
- Jordan
- Kazakhstan
- Kenya
- Kiribati
- Kuwait
- Laos
- Latvia
- Lesotho
- Liechtenstein
- Lithuania
- Luxembourg
- Macedonia
- Madagascar
- Malawi
- Malaysia
- Maldives
- Mali
- Malta
- Marshall Islands
- Martinique
- Mauritania
- Mauritius
- Mayotte
- Mexico
- Micronesia
- Indonesia
- Moldova
- Monaco
- Mongolia
- Montenegro
- Montserrat
- Morocco
- Mozambique
- Namibia
- Nauru
- Nepal
- Netherlands
- Netherlands Antilles
- New Caledonia
- New Zealand
- Nicaragua
- Niger
- Nigeria
- Niue
- Norfolk Island
- Norway
- Oman
- Palau
- Panama
- Papua New Guinea
- Paraguay
- Peru
- Philippines
- Pitcairn
- Poland
- Portugal
- Qatar
- Reunion
- Romania
- Russia
- Rwanda
- Saint Helena
- Saint Kitts and Nevis
- Saint Pierre and Miquelon
- Saint Vincent and Grenadines
- Samoa
- San Marino
- Sao Tome and Principe
- Saudi Arabia
- Saudi Arabia
- Senegal
- Serbia
- Seychelles
- Sierra Leone
- Singapore
- Slovakia
- Slovenia
- Solomon Islands
- Somalia
- South Africa
- South Korea
- Spain
- Sri Lanka
- Suriname
- Svalbard and Jan Mayen Islands
- Swaziland
- Sweden
- Switzerland
- Taiwan
- Tajikistan
- Tanzania, United Republic of
- Thailand
- Togo
- Tonga
- Trinidad and Tobago
- Tunisia
- Turkmenistan
- Turks and Caicos Islands
- Tuvalu
- Uganda
- Ukraine
- United Arab Emirates
- United Kingdom
- United States
- Uruguay
- Vanuatu
- Venezuela
- Vietnam
- Virgin Islands
- Wallis and Futuna
- Yemen
- Zambia
- Zimbabwe
Supported Currencies
- AUD
- BRL
- CAD
- CHF
- CNY
- CZK
- DKK
- EUR
- GBP
- HKD
- HUF
- ILS
- JPY
- MXN
- MYR
- NOK
- NZD
- PHP
- PLN
- RUB
- SEK
- SGD
- THB
- TWD
- USD
Payment (Deposit) Flow
There are two flows where you can use PayPal: regular Sale flow and Auth-Settle flow. The default is Sale.
If you want to use an Auth-Settle flow when integrated through REST API, you must send transactionType
: Auth in the /payments
request.
Authorization places a temporary hold on the funds and is valid for 29 days. However, settlement is guaranteed within the first 3 days. After that, the transaction may not be settled (see Appendix).
1. Send a /payments
Request
Perform the payment by sending a /payments
request with its mandatory parameters including:
buyerDetails.buyerId
amount
currency
paymentOption.alternativePaymentMethod
class containing:name
: “payPal“
deviceDetails
class containing:ipAddress
buyerDetails.billingAddress
class containing:countryCode
buyerDetails
class containing:firstName
,lastName
,email
Example /payments
Request
{ "processingEntityId": "<your processing entity id>", "amount": 1, "currency": "EUR", "paymentOption": { "alternativePaymentMethod": { "name": "payPal" } }, "custom": { "description": "Some description" }, "deviceDetails": { "ipAddress": "192.168.2.38" }, "urlDetails": { "webhookUrl": "https://example.com/webhook", "successUrl": "https://example.com/success", "failureUrl": "https://example.com/failure", "pendingUrl": "https://example.com/pending" }, "buyerDetails": { "buyerId": "PayPal-test07", "firstName": "John", "lastName": "Doe", "email": "[email protected]", "phone": "4161238888", "billingAddress": { "address": "30 Alenbi st", "zip": "M6T1J1", "city": "Berlin", "countryCode": "DE", "phone": "4161238888" } } }
Example /payments
Response
{ "paymentId": "736a14fd27974a2497315d2e096c73eb", "amount": 1, "currency": "EUR", "transactionType": "Sale", "result": { "status": "redirect" }, "redirectUrl": "https://www.sandbox.paypal.com/ca/cgi-bin/merchantpaymentweb?cmd=_express-checkout&token=EC-7B153820TA9023147&useraction=commit ", "paymentOption": { "alternativePaymentMethod": { "name": "payPal", "paymentTokenId": "fe20bffd6afe458897438daea6b9b5ba" } } }
After the transaction is processed, Nuvei sends a webhooks that includes the result of the transaction to the URL provided in urlDetails.webhookUrl
, which Nuvei recommends including in the /payments
request.
- REST API
-
1. Send a
/payments
RequestPerform the payment by sending a
/payments
request with its mandatory parameters including:buyerDetails.buyerId
amount
currency
paymentOption.alternativePaymentMethod
class containing:name
: “payPal“
deviceDetails
class containing:ipAddress
buyerDetails.billingAddress
class containing:countryCode
buyerDetails
class containing:firstName
,lastName
,email
Example
/payments
Request{ "processingEntityId": "<your processing entity id>", "amount": 1, "currency": "EUR", "paymentOption": { "alternativePaymentMethod": { "name": "payPal" } }, "custom": { "description": "Some description" }, "deviceDetails": { "ipAddress": "192.168.2.38" }, "urlDetails": { "webhookUrl": "https://example.com/webhook", "successUrl": "https://example.com/success", "failureUrl": "https://example.com/failure", "pendingUrl": "https://example.com/pending" }, "buyerDetails": { "buyerId": "PayPal-test07", "firstName": "John", "lastName": "Doe", "email": "[email protected]", "phone": "4161238888", "billingAddress": { "address": "30 Alenbi st", "zip": "M6T1J1", "city": "Berlin", "countryCode": "DE", "phone": "4161238888" } } }
Example
/payments
Response{ "paymentId": "736a14fd27974a2497315d2e096c73eb", "amount": 1, "currency": "EUR", "transactionType": "Sale", "result": { "status": "redirect" }, "redirectUrl": "https://www.sandbox.paypal.com/ca/cgi-bin/merchantpaymentweb?cmd=_express-checkout&token=EC-7B153820TA9023147&useraction=commit ", "paymentOption": { "alternativePaymentMethod": { "name": "payPal", "paymentTokenId": "fe20bffd6afe458897438daea6b9b5ba" } } }
After the transaction is processed, Nuvei sends a webhooks that includes the result of the transaction to the URL provided in
urlDetails.webhookUrl
, which Nuvei recommends including in the/payments
request.
Payout (Withdrawal) Flow
To initiate payouts with PayPal, you can submit a request using either of the following parameters:
- Using
paymentOption.alternativePaymentMethod
class.
Example /payouts
Request
{ "processingEntityId": "123e4567-e89b-12d3-a456-426614174000", "amount": 60, "currency": "EUR", "paymentOption": { "alternativePaymentMethod": { "name": "payPal" } }, "buyerDetails": { "buyerId": "buyerId123", "firstName": "John", "lastName": "JSmith", "companyName": "Nuvei Corp", "locale": "bg-BG", "dateOfBirth": "1978-01-01", "email": "[email protected]", "phone": "+1234567889", "billingAddress": { "state": "TX", "city": "Austin", "zip": "78652", "countryCode": "US" }, "shippingAddress": { "sameAsBilling": true } } }
- Using
paymentTokenId
– This method utilizes a previously stored Alternative Payment Method (APM) account via a payment token.
Example
/payouts
Request
{ "processingEntityId": "123e4567-e89b-12d3-a456-426614174000", "amount": 60, "currency": "EUR", "paymentOption": { "paymentToken": { "paymentTokenId": "abc123def456ghi789jkl012mno345pq" } }, "buyerDetails": { "buyerId": "buyerId123", "firstName": "John", "lastName": "JSmith", "companyName": "Nuvei Corp", "locale": "bg-BG", "dateOfBirth": "1978-01-01", "email": "[email protected]", "phone": "+1234567889", "billingAddress": { "state": "TX", "city": "Austin", "zip": "78652", "countryCode": "US" }, "shippingAddress": { "sameAsBilling": true } } }
User Experience
Payment
- PayPal opens a pop-up window for the user to log in to their PayPal account.
- After logging in, the user sees a summary of the payment.
- The user confirms and the payment is performed.
Configuration Requirements
PayPal payouts require an Instant Payment Notification (IPN) in order to be received and updated on Nuvei’s gateway. This requires the merchant to apply the following IPN URL on the PayPal merchant account in the PayPal merchant area: https://apm.safecharge.com/paypal/paypalnotification.ashx
For more information about Instant Payment Notifications (IPN) see the PayPal website, for instance on these pages: https://www.paypal.com/us/cshelp/article/what-is-instant-payment-notification-or-ipn-help188 and https://developer.paypal.com/api/nvp-soap/ipn/ht-ipn/.
Required details for PayPal MID setup:
- Paypal Merchant Password
- Paypal Merchant Username
- Paypal Merchant Signature
Gaming Restrictions
The gaming restriction means that a user cannot use more than one PayPal account per website, and other users cannot share the same account. (In other words, one unique PayPal account per user per site.)
Quick Registration
PayPal’s Quick Registration allows customers that do not have an account on the merchant site to use their PayPal account details to register them on the site by making a purchase.
Testing
- Usernames: [email protected], [email protected]
- Password: 1q2w3e$R
In addition, a merchant can also create a test account on developer.paypal.com using the their PayPal credentials.
Appendix
For detailed information, refer to https://developer.paypal.co.