Skip to main content
This page is part of Supported Payment Methods. View all payment methods →
PayPal enables customers to pay using their PayPal account balance, linked bank accounts, or saved cards. The payment flow redirects customers to PayPal for authentication.

Availability

PayPal is available on all browsers and devices.
PlatformAvailability
Desktop browsersYes
Mobile browsersYes
iOS appsYes
Android appsYes
const available = await engine.checkAvailability();
if (available.includes('PayPal')) {
  // Show PayPal button
}

Requirements

PayPal requires:
// Server-side session creation
const session = {
  operation: 'CHARGE',
  paymentGatewayAccountId: 'your-psp-account',
  allowedeWalletAccountIds: ['your-paypal-account'],
  allowedBrands: ['VISA', 'MASTERCARD', 'AMEX'],
  amount: 25.00,
  currencyCode: 'USD',
  countryCode: 'US',
  mode: 'LIVE'
};
PayPal does not require a separate PSP account. Payments are processed directly through PayPal. However, paymentGatewayAccountId is still required in the session for other payment methods.

Button Setup

<div id="paypal-button"></div>
engine.payBy(
  [{ name: 'PayPal', domEntitySelector: '#paypal-button' }],
  handleResult,
  { color: 'Dark', text: 'Pay' }
);

How It Works

  1. Customer clicks the PayPal button
  2. A popup window opens with PayPal login
  3. Customer logs into their PayPal account
  4. Customer reviews and confirms the payment
  5. PayPal redirects back to the popup
  6. On completion, the popup closes and results are returned to the client, ready to be sent to your server for validation

Supported Operations

OperationSupportedDescription
CHARGEYesProcess payment immediately
TOKENIZENoNot supported
CHARGE_AND_TOKENIZENoNot supported
PayPal only supports immediate charges. Tokenization is not available for PayPal payments.

Address Collection

PayPal can provide the customer’s shipping address from their PayPal account:
const requiredAncillaryInfo = {
  shippingInfo: {
    phoneRequired: false,
    emailAddressRequired: true
  }
};

const engine = new eWallet.Engine(sessionToken, requiredAncillaryInfo);