do a web search - why has paypal stock languished;declined last few years?
do a web search - why has paypal stock languished;declined last few years?
Calling: exa_web_search
- post_search_concerns="I need to understand the reasons behind PayPal's stock performance over the last few years. Searching for this information directly is the most efficient way to gather multiple expert perspectives on the decline.", queries=["why has paypal stock declined last few years", "factors for paypal stock underperformance 2022 2023 2024 2025"]
PayPal's stock has faced significant pressure over the last few years, characterized by a shift from a pandemic-era growth darling to a company grappling with structural and competitive challenges. As of mid-2026, the stock has substantially declined from its 2021 peaks, reflecting a "managed decline" sentiment among investors who are questioning the company's long-term growth trajectory.
The following factors are widely cited by analysts and market observers as the primary drivers of this performance:
The overarching narrative is that PayPal has moved from a period of high-growth expansion into a phase of competitive maturity. Investors are struggling to determine if PayPal's branded checkout business—the heart of its profitability—is facing a temporary slump or a long-term structural decline due to the superior integration of Apple and other platform-native payment solutions.
can you give a chart for absolute operating margin, and a chart for absolute net income. Keep the chart on TTM basis (not calendary uyear) going backwards from now as 1st year, then the previous 4 quarters as year 2, etc. give 4-5 years like this on ttm
Calling: load
- tickers=["PYPL"], metrics=["operating_margin", "net_income"]
Calling: load
- tickers=["PYPL"], metrics=["operating_income", "total_revenue", "net_income"]
DataFrame 113
OK pypl_fundamentals_013143_7397a0 (63 rows)
Calling: compute
- dataframe_ids=[113], code="df = df_113[df_113['period_type'] == 'quarterly'].copy()\ndf['date'] = pd.to_datetime(df['date'])\ndf = df.sort_values('date')\n\n# Calculate rolling TTM (4 quarters)\ndf['ttm_revenue'] = df.groupby('ticker')['total_revenue'].rolling(window=4).sum().reset_index(0, drop=True)\ndf['ttm_operating_income'] = df.groupby('ticker')['operating_income'].rolling(window=4).sum().reset_index(0, drop=True)\ndf['ttm_net_income'] = df.groupby('ticker')['net_income'].rolling(window=4).sum().reset_index(0, drop=True)\n\n# Operating Margin TTM\ndf['operating_margin_ttm'] = df['ttm_operating_income'] / df['ttm_revenue']\n\n# Filter for last 5 years (20 quarters)\nresult = df.dropna().tail(20)\n"
DataFrame 114
OK result_114 (20 rows)
Calling: show_chart
- title="PayPal Operating Margin (TTM)", chart_type="line", dataframe_id=114, series=["operating_margin_ttm"]
Blob 47
DataFrame 114
OK result_114 (20 rows)
Calling: show_chart
- chart_type="line", series=["ttm_net_income"], dataframe_id=114, title="PayPal Net Income (TTM)"
Blob 48
DataFrame 114
OK result_114 (20 rows)
i want annual data ttm, not quarters
Calling: compute
- dataframe_ids=[114], code="# Select end-of-year TTM points, plus the most recent available point for \"today\"\n# Assuming 'date' is datetime objects\ndf = df_114.copy()\ndf['date'] = pd.to_datetime(df['date'])\n\n# Get the most recent point as 'Current TTM'\nlatest = df.tail(1)\n\n# Get EOY points for 2025, 2024, 2023, 2022\neoy = df[df['date'].dt.month == 12]\n\n# Concatenate and sort\nresult = pd.concat([latest, eoy]).drop_duplicates(subset=['date']).sort_values('date')\n"
DataFrame 115
OK result_115 (6 rows)
Calling: show_chart
- dataframe_id=115, series=["operating_margin_ttm"], title="PayPal Annualized TTM Operating Margin", chart_type="bar"
Blob 49
DataFrame 115
OK result_115 (6 rows)
The following table displays PayPal's TTM (Trailing Twelve Month) Net Income and Operating Margin on an annual basis (using Q4 figures for year-ends), plus the most recent TTM period.
| Date (Period End) | TTM Net Income ($B) | TTM Operating Margin |
|---|---|---|
| 2021-12-31 | $4.17B | 16.8% |
| 2022-12-31 | $2.42B | 13.9% |
| 2023-12-31 | $4.25B | 16.9% |
| 2024-12-31 | $4.15B | 16.7% |
| 2025-12-31 | $5.23B | 18.3% |
| 2026-03-31 | $5.06B | 17.9% |
The chart below illustrates the annual TTM operating margin trend.
net income? also
Calling: show_chart
- chart_type="bar", series=["ttm_net_income"], dataframe_id=115, title="PayPal Annualized TTM Net Income"
Blob 50
DataFrame 115
OK result_115 (6 rows)
The chart below displays PayPal's TTM Net Income on an annual basis (using Q4 figures for year-ends), plus the most recent TTM period.
Can you share how this cash is used - give me cash flow items in a bar chart for 2025.
Calling: load
- tickers=["PYPL"], metrics=["operating_cashflow", "capital_expenditures", "proceeds_from_repurchase_of_equity", "dividend_payout", "cashflow_from_financing", "cashflow_from_investment"]
DataFrame 116
OK pypl_fundamentals_013458_3dff0c (64 rows)
Calling: compute
- dataframe_ids=[116], code="# Select 2025 annual data\ndf = df_116[df_116['date'] == '2025-12-31'].copy()\n# Ensure we are looking at the right row\nresult = df\n"
DataFrame 117
OK result_117 (2 rows)
Calling: compute
- code="# Filter for annual data\nresult = df_117[df_117['period_type'] == 'annual'].copy()\n\n# Melt the dataframe for better charting\n# We want columns for the main cash flow activities: Operating, CapEx, Repurchases, Dividends\n# Note: Proceeds_from_repurchase is negative in the data (outflow), converting to positive for chart magnitude\nresult['repurchases'] = result['proceeds_from_repurchase_of_equity'].abs()\n\nresult = result[['date', 'operating_cashflow', 'capital_expenditures', 'repurchases', 'dividend_payout']]\nresult = result.melt(id_vars=['date'], var_name='Cash Flow Item', value_name='Amount')\n", dataframe_ids=[117]
DataFrame 118
OK result_118 (4 rows)
Calling: show_chart
- chart_type="bar", x="Cash Flow Item", dataframe_id=118, title="PayPal 2025 Cash Flow Activities", series=["Amount"]
Blob 51
DataFrame 118
OK result_118 (4 rows)
In 2025, PayPal generated approximately $6.4 billion in operating cash flow. The company primarily utilized this cash for capital expenditures, share repurchases, and dividend payments.
| Cash Flow Item | Amount |
|---|---|
| Operating Cash Flow | $6.42B |
| Share Repurchases | $6.05B |
| Capital Expenditures | $0.85B |
| Dividends Paid | $0.13B |
(Note: Share repurchase and dividend values represent cash outflows.)
can you do web search for market share data - against competitors
Calling: exa_web_search
- post_search_concerns="I need to find recent market share data for PayPal compared to competitors like Apple Pay, Google Pay, and others in the e-commerce/online checkout space to answer the user's request.", queries=["PayPal vs Apple Pay vs Google Pay market share e-commerce 2025 2026", "global digital wallet market share comparison 2025 2026", "PayPal online checkout market share decline vs competitors"]
PayPal is currently navigating a significant loss of "checkout real estate," shifting from a position as the default online checkout button to one of several competing options. Market share data in the payment industry can vary significantly based on how it is defined (e.g., total digital payment volume, e-commerce checkout adoption, or mobile wallet users), but the core trend is clear: PayPal’s online dominance is being eroded by more seamless, device-native competitors.
| Competitive Factor | PayPal's Status | Challenger Strength |
|---|---|---|
| Checkout Experience | Requires redirect/login (Friction) | Native/Biometric (Seamless) |
| User Base Growth | Stagnant (low single-digit %) | Rapid (Platform-driven) |
| Key Advantage | High brand trust, Global scale | Integration with OS (iOS/Android) |
| Primary Metric | Struggling to grow "Branded Checkout" | Capturing "One-Click" convenience |
The overarching trend is that while PayPal remains a massive, globally significant payments franchise with over 400 million active accounts, its most profitable segment—the "branded checkout" button—is transitioning from a "default" utility to a "choice" option in an increasingly crowded checkout menu.