Back to Gateway Index
PayPal logo
Payment Gateway

PayPal

The world's most recognized online payment platform with 430M+ active accounts across 200+ countries

Builder Verdict

Pick PayPal when buyer trust, global brand recognition, and broad consumer adoption matter more than developer experience or low per-transaction fees — it's the default choice for e-commerce, digital goods, and businesses targeting mainstream consumers worldwide.

Complexity

◆◆ Moderate

Region

200+ countries

Fees

3.49% + 49¢

PayPal is a global digital payments platform founded in 1998 that serves over 430 million active accounts across 200+ countries and regions. It offers merchants a full suite of payment tools — from checkout buttons and invoicing to marketplace payments, in-person POS via Zettle, and Buy Now Pay Later — supporting 25 currencies with one of the highest brand-trust conversion rates in online payments.

Last full audit: April 13, 2026

01

Trust Score Breakdown

Account Stability

55/100

PayPal is notorious for automated account limitations and freezes without prior warning or human review. The BBB has logged over 34,000 complaints in the last three years, with frozen accounts and withheld funds being the most common issues. Only about one-third of complaints were resolved to the merchant's satisfaction. While millions of merchants operate without incident, the risk of sudden restrictions remains a significant concern for businesses that depend on PayPal as their sole payment processor.

Developer Experience

62/100

PayPal's API landscape is fragmented across multiple generations: the legacy NVP/SOAP APIs, the modern REST v2 APIs, and the separate Braintree SDK — each with its own documentation, authentication patterns, and feature sets. The REST v2 Orders API and JavaScript SDK are capable but lack the polish and consistency of Stripe's developer experience. Braintree's Drop-in UI is a reasonable pre-built checkout component. Documentation quality is adequate but uneven, and error messages can be cryptic. Merchant adoption of newer APIs has been slow due to integration complexity.

Payout Reliability

74/100

Standard withdrawals to bank take 1-3 business days, and instant transfers are available for a 1.5% fee. However, new sellers face a 21-day fund hold on payments until they establish a track record, and accounts flagged by the automated risk system can have funds frozen for up to 180 days. For established merchants with clean history, payouts are reliable and predictable.

Support Quality

48/100

PayPal's Trustpilot rating is a dismal 1.3-1.8 out of 5 stars from over 35,000 reviews, driven by poor customer service experiences. Of 33,516 BBB complaints, only 11,487 were resolved to the merchant's satisfaction. Users report generic automated responses, difficulty reaching human agents for urgent issues like account freezes, and lengthy resolution processes. The contrast with ratings on G2 (4.4/5) and Capterra (4.7/5) suggests that day-to-day product usage is satisfactory, but support during problems is severely lacking.

Track Record

95/100

Founded in 1998, PayPal is one of the oldest and most established digital payment platforms. With over 430 million active accounts, presence in 200+ countries, and deep integrations across major e-commerce platforms, it has an unmatched track record of reliability at scale. PayPal continues to innovate with AI checkout partnerships (Microsoft Copilot, Google UCP), BNPL products, and expansion into Africa and emerging markets in 2026.

Transparency

60/100

PayPal publishes its pricing page, but the fee structure is complex with multiple tiers depending on transaction type (Checkout vs. standard card vs. QR vs. Zettle). International fee stacking (base + 1.5% international + ~3% currency conversion) can push effective rates above 7% — this is not immediately obvious. The currency conversion markup of approximately 3% is particularly opaque. Refund policy changed to not return processing fees, which caught many merchants off guard.

02

Availability Matrix

Region Countries Currencies Payout Timing
North America US, Canada, Mexico USD, CAD, MXN 1-3 business days (standard), instant available for 1.5% fee (US)
Europe UK, Germany, France, Netherlands, Spain, Italy, Ireland, Belgium, Austria, Switzerland, Sweden, Denmark, Norway, Finland, Portugal, Poland, Czech Republic, Romania, Hungary, Bulgaria, Greece, Croatia, Slovakia, Slovenia, Estonia, Latvia, Lithuania, Luxembourg, Malta, Cyprus, Iceland, Liechtenstein, Monaco, San Marino, Andorra, Albania, Bosnia and Herzegovina, North Macedonia, Serbia, Moldova, Montenegro EUR, GBP, CHF, SEK, NOK, DKK, PLN, CZK, RON, HUF 1-3 business days to linked bank account
Asia-Pacific Australia, Japan, Singapore, Hong Kong, New Zealand, South Korea, Taiwan (limited), Philippines, Thailand (limited), Indonesia (limited), Vietnam (limited), Malaysia (limited), India (receive international only), Sri Lanka (limited), Cambodia, Mongolia AUD, JPY, SGD, HKD, NZD, PHP, TWD, THB 1-5 business days depending on country and local banking infrastructure
Middle East & North Africa Israel, UAE, Saudi Arabia, Qatar (limited), Kuwait (limited), Oman (limited), Bahrain (limited), Jordan (limited), Egypt (limited), Morocco, Tunisia ILS, AED, SAR Varies by country, 1-5 business days where withdrawals are supported
Sub-Saharan Africa South Africa, Kenya, Ghana, Tanzania, Senegal, Ivory Coast, Cameroon, Mauritius, Botswana, Mozambique, Madagascar, Rwanda ZAR Varies by country; many African countries have limited withdrawal options
Nigeria (via Paga partnership) Nigeria — since the January 2026 PayPal × Paga partnership (after 20+ years of send-only restrictions), Nigerian users can link PayPal to a Paga wallet to receive payments from 200+ countries, withdraw instantly in Naira, keep balances in USD, and shop globally at PayPal merchants. Personal profiles and business profiles are supported; full merchant-level PayPal acceptance through Paga's gateways is still rolling out. Venmo receive is supported from US senders. Receive in up to 25 currencies via PayPal; settle in NGN via the linked Paga wallet or retain a USD balance. Conversion at 'willing-buyer, willing-seller' rates (positioned as competitive with informal alternatives). Instant Naira withdrawal via linked Paga wallet
Latin America & Caribbean Brazil, Argentina, Chile, Colombia, Peru, Uruguay, Ecuador, Costa Rica, Panama, Dominican Republic, Guatemala, El Salvador, Jamaica, Trinidad and Tobago, Bahamas, Barbados, Bermuda, Antigua and Barbuda, Belize BRL, MXN 1-5 business days; varies significantly by country
NOT Available (notable exclusions) Turkey (banned since 2016), Russia (discontinued 2022), Afghanistan, Belarus, Iran, Iraq, Myanmar, North Korea, Syria, Libya, Venezuela, Zimbabwe, Cuba, Crimea region, Pakistan, Liberia N/A N/A
03

Feature Snapshot

One-time Payments

Via PayPal Checkout (Smart Payment Buttons), Payment Links, Braintree, or REST API v2 Orders. Supports cards, PayPal balance, Venmo, and local payment methods.

Subscriptions / Recurring Billing

Supports flat-rate, tiered, and volume-based pricing models. Includes trial periods, automatic payment retries (every 5 days, up to 2x per cycle), and customer self-service management. Fees: 3.49% + 49c per recurring payment.

Invoicing

Create and send customizable invoices via email, SMS, or QR code. Supports recurring invoices, automatic reminders, and multiple payment methods (PayPal, Venmo, cards, ACH). 78% of invoices paid within one day. Optional $14.99/month subscription tier.

Marketplace / Platform Payments (Commerce Platform)

PayPal Commerce Platform enables split payments, multi-party payouts, and sub-merchant onboarding for marketplaces. Platform fees are charged to the seller. Combines checkout with Hyperwallet payout rails.

In-Person Payments (Zettle POS)

PayPal POS (formerly Zettle) with card reader ($29), Tap to Pay on phone, inventory management, and sales reporting. Accepts cards, contactless, Apple Pay, Google Pay, Venmo. Fee: 2.29% + 9c. No monthly fees.

Payment Links (No-Code)

Shareable payment URLs and QR codes — no website or coding required. Also includes PayPal.Me personal payment links and Buy Buttons. Supports PayPal, Venmo, Pay Later, Apple Pay, and cards. 28% sales increase reported after adoption.

Hosted Checkout (Smart Payment Buttons)

PayPal JavaScript SDK renders branded payment buttons that launch a PayPal-hosted checkout flow. Automatically shows relevant payment methods based on buyer's location. Handles 3D Secure and PCI compliance.

Embeddable UI (Braintree Drop-in)

Braintree Drop-in UI provides a pre-built payment form for web, iOS, and Android. Supports cards, PayPal, Venmo, Apple Pay, and Google Pay. Client SDK tokenizes payment data and returns a nonce for server-side processing.

Pay Later / BNPL (Pay in 4, Pay Monthly)

Pay in 4: four interest-free payments over 6 weeks ($30-$1,500). Pay Monthly: 6-24 month financing up to $10,000 (up to 35.99% APR). No late fees. Soft credit check only. ~$40B BNPL volume in 2025 with 20% YoY growth.

Venmo Integration (US only)

Accept Venmo payments at checkout via the PayPal JavaScript SDK. Same fee structure as PayPal Checkout (3.49% + 49c). US-only. Taps into Venmo's large millennial and Gen-Z user base.

Fraud Prevention (Seller Protection + Fraud Protection Advanced)

Seller Protection covers eligible transactions against unauthorized payments and item-not-received claims. Fraud Protection Advanced (for larger merchants) uses AI/ML risk models with 200+ data features, custom rules, and per-transaction risk scoring.

3D Secure Authentication

Supports 3DS1 and 3DS2. PayPal Checkout handles 3DS automatically. Advanced integrations can trigger 3DS via SCA_ALWAYS or SCA_WHEN_REQUIRED flags. Enables chargeback liability shift to issuer. Available in US, Canada, Europe, Australia, and APAC.

Webhooks

REST API webhooks with RSA-SHA256 signature verification (certificate-based). Supports 100+ event types, retries up to 25 times over 3 days on failure. Legacy IPN (Instant Payment Notification) still supported but deprecated in favor of webhooks.

Multi-Currency Support

Accept payments in 25 currencies across 200+ countries. Currency conversion available with approximately 3% markup spread. Merchants can hold balances in multiple currencies.

QR Code Payments

Generate QR codes for in-person or remote payments. Competitive fee of 2.29% + 9c for transactions over $10. Customers scan to pay with PayPal, Venmo, or cards.

Cryptocurrency

Buy, sell, and hold Bitcoin, Ethereum, Litecoin, Bitcoin Cash, and PYUSD directly in the PayPal app. Checkout with Crypto allows spending crypto at any PayPal merchant.

Network Tokenization / Vault

Braintree Vault stores payment methods securely with PCI-compliant tokenization. Network tokenization generates card-network-level tokens that update automatically, improving authorization rates and reducing fraud.

Reporting & Analytics

Dashboard reporting for transactions, disputes, and payouts. Transaction Graph Insights (launched January 2026) provides cross-merchant analytics for advertisers using data from 430M+ consumer accounts.

04

Pricing Breakdown

PayPal Checkout / Venmo (domestic) 3.49% + 49¢
Standard credit/debit card processing (domestic) 2.99% + 49¢
Advanced credit/debit card processing 2.89% + 29¢
QR code transactions (over $10) 2.29% + 9¢
In-person / Zettle POS 2.29% + 9¢
Pay Later (Pay in 4 / Pay Monthly) 4.99% + 49¢
International transaction surcharge +1.50% on top of base rate
Currency conversion fee ~3.0% markup on the exchange rate
Standard dispute fee $15 per dispute (refunded if seller wins)
High-volume dispute fee $30 per dispute (if dispute rate exceeds 1.5% with 100+ transactions; not refunded even if seller wins)
Chargeback fee $20 per chargeback (waived if Seller Protection applies)
ACH bank withdrawal Free (standard) or $0.49 per transaction for business disbursements
Instant transfer to bank/debit card 1.50% (minimum $0.25, maximum $15)
Wire transfer withdrawal $20 per transfer
Refund policy Processing fees are typically not returned on refunded transactions
Setup / monthly / cancellation fees None — no setup, monthly, or cancellation fees for standard accounts
05

Security & Compliance

PCI DSS Level 1 Service Provider (highest level) — certified under Visa CISP, MasterCard SDP, and AICPA SAS 70
SOC 2 SOC 2 Type II certified annually. SOC 1 (SSAE 18) also maintained.
Encryption TLS 1.2+ required for all API connections. AES-256 encryption at rest for stored payment data. Multi-factor authentication available for merchant accounts.
3D Secure Supports 3DS1 and 3DS2. PayPal Checkout handles 3DS automatically. Advanced integrations support SCA_ALWAYS and SCA_WHEN_REQUIRED modes. Enables liability shift to card issuer.
Fraud Prevention 24/7 ML-based fraud detection. Seller Protection covers unauthorized transactions and item-not-received claims. Fraud Protection Advanced offers 200+ data features, custom rules, and real-time risk scoring for larger merchants.
Tokenization Braintree Vault provides PCI-compliant payment method storage with unique tokens per merchant. Network tokenization generates card-network-level tokens that auto-update on card reissuance, improving authorization rates.
Webhook Security All webhook events signed with RSA-SHA256 using certificate-based verification. Supports both self-cryptographic (offline) verification and postback verification via PayPal API.
Buyer Protection PayPal Purchase Protection covers buyers for eligible purchases — item not received or significantly not as described. Creates a robust dispute resolution system that builds buyer trust but can be challenging for sellers.
06

Integration Prompt

Copy & use this 6422-char integration prompt

Production-ready prompt for Claude / GPT / Cursor — handles setup, security, webhooks & gotchas

You are integrating PayPal as a payment gateway into a [Django / Next.js / etc.] application.

## Setup
1. Create a PayPal Developer account at developer.paypal.com and create a REST API app
2. Store your API credentials in environment variables — NEVER hardcode them:
   - `PAYPAL_CLIENT_ID` (starts with `A` for live, sandbox IDs vary)
   - `PAYPAL_CLIENT_SECRET` (keep server-side only)
   - `PAYPAL_WEBHOOK_ID` (from the webhook configuration in Developer Dashboard)
   - `PAYPAL_MODE` (set to `sandbox` or `live`)
3. Base URLs:
   - Sandbox: `https://api-m.sandbox.paypal.com`
   - Live: `https://api-m.paypal.com`

## Authentication
PayPal REST APIs use OAuth 2.0. Get an access token before making API calls:

```python
import requests
import base64

def get_paypal_token():
    auth = base64.b64encode(
        f"{settings.PAYPAL_CLIENT_ID}:{settings.PAYPAL_CLIENT_SECRET}".encode()
    ).decode()
    response = requests.post(
        f"{PAYPAL_BASE_URL}/v1/oauth2/token",
        headers={"Authorization": f"Basic {auth}"},
        data={"grant_type": "client_credentials"},
    )
    return response.json()["access_token"]
```

## Recommended Integration: PayPal JavaScript SDK + Orders API v2
For most use cases, use PayPal's Smart Payment Buttons with the Orders API:

### Client-side (JavaScript):
```html
<script src="https://www.paypal.com/sdk/js?client-id=YOUR_CLIENT_ID&currency=USD"></script>
<div id="paypal-button-container"></div>
<script>
  paypal.Buttons({
    createOrder: function() {
      return fetch('/api/paypal/create-order/', {
        method: 'POST',
        headers: { 'Content-Type': 'application/json' },
        body: JSON.stringify({ amount: '20.00' })
      }).then(res => res.json()).then(data => data.id);
    },
    onApprove: function(data) {
      return fetch(`/api/paypal/capture-order/${data.orderID}/`, {
        method: 'POST'
      }).then(res => res.json()).then(details => {
        // Show success message to buyer
      });
    },
    onError: function(err) {
      // Handle errors (show message to buyer, log for debugging)
    }
  }).render('#paypal-button-container');
</script>
```

### Server-side (Create Order):
```python
def create_order(request):
    token = get_paypal_token()
    order_data = {
        "intent": "CAPTURE",
        "purchase_units": [{
            "amount": {
                "currency_code": "USD",
                "value": "20.00"
            },
            "description": "Product Name",
            "custom_id": "your_internal_order_id"
        }]
    }
    response = requests.post(
        f"{PAYPAL_BASE_URL}/v2/checkout/orders",
        headers={
            "Authorization": f"Bearer {token}",
            "Content-Type": "application/json",
        },
        json=order_data,
    )
    return JsonResponse(response.json())
```

### Server-side (Capture Order):
```python
def capture_order(request, order_id):
    token = get_paypal_token()
    response = requests.post(
        f"{PAYPAL_BASE_URL}/v2/checkout/orders/{order_id}/capture",
        headers={
            "Authorization": f"Bearer {token}",
            "Content-Type": "application/json",
        },
    )
    result = response.json()
    if result["status"] == "COMPLETED":
        # Fulfill the order using result["purchase_units"][0]["payments"]["captures"][0]
        pass
    return JsonResponse(result)
```

## Webhook Handling (Critical)
Never rely solely on the client-side onApprove callback — always confirm payment via webhooks:

1. Register your webhook endpoint in the PayPal Developer Dashboard
2. Subscribe to events: `CHECKOUT.ORDER.APPROVED`, `PAYMENT.CAPTURE.COMPLETED`, `PAYMENT.CAPTURE.DENIED`
3. ALWAYS verify the webhook signature (RSA-SHA256):

```python
import hashlib
import base64
from OpenSSL import crypto
import requests as http_requests

def verify_webhook(request):
    # Option 1: Postback verification (simpler but adds latency)
    token = get_paypal_token()
    verification_data = {
        "auth_algo": request.META.get("HTTP_PAYPAL_AUTH_ALGO"),
        "cert_url": request.META.get("HTTP_PAYPAL_CERT_URL"),
        "transmission_id": request.META.get("HTTP_PAYPAL_TRANSMISSION_ID"),
        "transmission_sig": request.META.get("HTTP_PAYPAL_TRANSMISSION_SIG"),
        "transmission_time": request.META.get("HTTP_PAYPAL_TRANSMISSION_TIME"),
        "webhook_id": settings.PAYPAL_WEBHOOK_ID,
        "webhook_event": json.loads(request.body),
    }
    response = http_requests.post(
        f"{PAYPAL_BASE_URL}/v1/notifications/verify-webhook-signature",
        headers={"Authorization": f"Bearer {token}", "Content-Type": "application/json"},
        json=verification_data,
    )
    return response.json().get("verification_status") == "SUCCESS"
```

4. Implement idempotency: track processed event IDs to prevent duplicate fulfillment
5. Return 200 quickly, then process asynchronously
6. IMPORTANT: Use the raw request body for verification — do not re-serialize parsed JSON

## Security Best Practices
- Never expose your Client Secret on the client side
- Always verify webhook signatures before processing events
- Use HTTPS for all endpoints — PayPal rejects HTTP webhook URLs
- Store tokens securely and refresh them (tokens expire after ~9 hours)
- Use `custom_id` in purchase_units to link PayPal orders to your internal records
- Enable 3D Secure for card payments via the advanced checkout integration

## Testing
- Use sandbox mode with sandbox API credentials
- PayPal provides sandbox accounts: a personal (buyer) and business (seller) account
- Sandbox URL: https://www.sandbox.paypal.com
- Test various scenarios: successful payment, declined card, pending payment, disputes
- Use the IPN/Webhook Simulator in the Developer Dashboard for webhook testing

## Common Gotchas
- Use the REST v2 Orders API only — ignore Classic NVP/SOAP API references
- Amounts must be strings, not numbers (e.g., "20.00" not 20.00)
- Currency amounts must have exactly 2 decimal places for most currencies
- International payments add 1.5% + potential 3% currency conversion on top of base rate
- PayPal may hold funds for new sellers for up to 21 days — plan for cash flow impact
- Webhook events can arrive out of order — design idempotent handlers
- The `custom_id` field does NOT auto-propagate to all related objects — pass it explicitly
- PayPal retries webhook delivery up to 25 times over 3 days for non-2xx responses

Replace [Django / Next.js / etc.] with your stack. Follows PCI DSS best practices and handles common edge cases.

07

Common Pitfalls

7 items
1

Automated account limitations and fund freezes

PayPal's automated risk system can limit accounts and freeze funds for up to 180 days without prior warning or human review. Triggers include transaction spikes, high chargeback rates, policy violations, or missing verification documents. The BBB has logged over 34,000 complaints in three years, with frozen funds being the top issue. Mitigation: maintain complete business documentation, gradually ramp volume, keep dispute rates low, and never rely on PayPal as your sole payment processor.

2

21-day fund hold for new sellers

New PayPal business accounts face a 21-day rolling reserve on payments until they establish a track record of successful deliveries and low disputes. This can severely impact cash flow for new businesses. Mitigation: add tracking numbers to all shipments, maintain positive buyer feedback, and build transaction history to lift the hold faster.

3

Buyer-biased dispute resolution

PayPal's Purchase Protection program tends to favor buyers in disputes, especially for digital goods and services where proof of delivery is harder to establish. Sellers report losing disputes even with documentation. The dispute process can take weeks, during which funds are held. Mitigation: use Seller Protection-eligible transaction types, ship with tracking to confirmed addresses, and keep thorough documentation.

4

Fragmented API landscape across multiple generations

PayPal maintains three distinct API ecosystems: the legacy NVP/SOAP (Classic) APIs, the modern REST v2 APIs, and the separate Braintree SDK. Each has its own authentication, documentation, and feature coverage. Many guides and Stack Overflow answers reference deprecated Classic API patterns. This fragmentation confuses developers and slows integration. Mitigation: use only the REST v2 Orders API for new integrations, use Braintree Drop-in if you need an embeddable UI, and ignore Classic API references.

5

International fee stacking can exceed 7%

A US business accepting an international PayPal Checkout payment in a foreign currency pays: 3.49% + 49c (base) + 1.50% (international) + ~3.0% (currency conversion) = ~7.99% + 49c effective rate. This fee stacking is spread across multiple pricing page sections and is not immediately obvious. Mitigation: encourage domestic PayPal accounts, set pricing in your settlement currency, or consider alternative processors for high international volume.

6

Processing fees not returned on refunds

When you issue a refund, PayPal typically does not return the original processing fee. For a $100 PayPal Checkout transaction, you pay $3.98 in fees and get back $0 of that on refund. This changes the economics of generous return policies. Mitigation: factor non-refundable fees into your pricing and return policy calculations.

7

Slow merchant adoption of new APIs and technology

In early 2026, PayPal acknowledged that merchant adoption of its latest technology has been slower than expected, stymying growth. Large merchants require more hands-on integration support than anticipated, and operational deployment issues have slowed rollouts. This means some newer features may have fewer real-world examples and community resources available.

08

Community Pulse

PayPal elicits a sharply polarized response from the merchant community. On review platforms like G2 (4.4/5) and Capterra (4.7/5), users praise PayPal's brand recognition, high checkout conversion rates, and broad buyer adoption. However, on Trustpilot (1.3/5 from 35,000+ reviews) and the BBB (34,000+ complaints), the experience is overwhelmingly negative — dominated by stories of sudden account freezes, funds held for months without explanation, and support interactions that go nowhere. Developers express frustration with the fragmented API landscape and the difficulty of choosing between REST v2, Braintree, and legacy Classic APIs. The general consensus is that PayPal remains a must-have payment option due to its consumer trust and conversion benefits, but merchants are increasingly adding Stripe or other processors as their primary gateway to reduce dependency on PayPal's unpredictable account management.

Sentiment last updated: April 2026 · We summarize — never copy — community content. Links go to original threads.

09

Changelog

  1. availability

    Split Nigeria out of the generic Sub-Saharan Africa row into its own 'Nigeria (via Paga partnership)' row. January 2026 PayPal × Paga partnership ended 20+ years of send-only restrictions — Nigerian users can now receive payments from 200+ countries and withdraw instantly in Naira via a linked Paga wallet. Personal and business profiles both supported; full merchant-level PayPal acceptance via Paga gateways still rolling out.

  2. all

    Initial gateway entry created with full audit — all categories verified from scratch

Back to Gateway Index

LearnWithHasan.com · Payment Gateway Index · No affiliate links · Builder-first