paypal operating metrics (non financial) last 4-5 years

Calling: search_ticker - query="PayPal"

Calling: search_sec_compressed_filing - search_patterns=["active accounts", "payment transactions", "total payment volume", "TPV"], ticker="PYPL", year="2024"

Calling: search_sec_compressed_filing - ticker="PYPL", year="2023", search_patterns=["active accounts", "payment transactions", "total payment volume", "TPV"]

Calling: search_sec_compressed_filing - search_patterns=["active accounts", "payment transactions", "total payment volume", "TPV"], ticker="PYPL", year="2022"

Calling: search_sec_compressed_filing - search_patterns=["active accounts", "payment transactions", "total payment volume", "TPV"], ticker="PYPL", year="2021"

The table below summarizes PayPal’s key non-financial operating metrics for the last four years (2021–2024), tracking platform scale and user engagement.

PayPal Key Operating Metrics (2021–2024)

Metric 2024 2023 2022 2021
Total Payment Volume (TPV) \$1.68 T \$1.53 T \$1.36 T \$1.25 T
Payment Transactions (Billions) 26.3 B 25.0 B 22.3 B 19.3 B
Active Accounts (Millions) 434 M 426 M 435 M 426 M
Transactions per Active Account 60.6 58.7 51.4 45.4
Cross-Border TPV (% of Total) 12% 12% 13% 16%

Notes on Metrics: * Total Payment Volume (TPV): Represents the value of payments, net of reversals, successfully completed on the platform (excluding gateway-exclusive transactions). * Active Accounts: Defined as an account registered directly with PayPal or a platform access partner that has completed a transaction in the past 12 months. * Transactions per Active Account: Calculated as total payment transactions (trailing 12 months) divided by active accounts at the end of the period; this is a key metric for measuring platform engagement and "stickiness." * Cross-Border TPV: Indicates the proportion of volume originating from transactions where the merchant and consumer are in different countries, historically a key driver of higher revenue yield.

1 bar chart for each metric showing the trend

Calling: compute - code="import pandas as pd\n\ndata = {\n 'year': [2021, 2022, 2023, 2024],\n 'TPV_Trillions': [1.25, 1.36, 1.53, 1.68],\n 'Transactions_Billions': [19.3, 22.3, 25.0, 26.3],\n 'Active_Accounts_Millions': [426, 435, 426, 434],\n 'Transactions_Per_Account': [45.4, 51.4, 58.7, 60.6],\n 'Cross_Border_TPV_Percent': [16, 13, 12, 12]\n}\nresult = pd.DataFrame(data)", dataframe_ids=[] Error: dataframe_ids is required

Calling: load - tickers=["PYPL"], metrics=["market_cap"] DataFrame 103 OK pypl_overview (1 rows)

Calling: compute - dataframe_ids=[103], code="import pandas as pd\n\ndata = {\n 'year': [2021, 2022, 2023, 2024],\n 'TPV_Trillions': [1.25, 1.36, 1.53, 1.68],\n 'Transactions_Billions': [19.3, 22.3, 25.0, 26.3],\n 'Active_Accounts_Millions': [426, 435, 426, 434],\n 'Transactions_Per_Account': [45.4, 51.4, 58.7, 60.6],\n 'Cross_Border_TPV_Percent': [16, 13, 12, 12]\n}\nresult = pd.DataFrame(data)" DataFrame 104 OK result_104 (4 rows)

Calling: show_chart - series=["TPV_Trillions"], dataframe_id=104, chart_type="bar", title="Total Payment Volume (Trillions USD)", x="year" Blob 32 DataFrame 104 OK result_104 (4 rows)

Calling: show_chart - dataframe_id=104, chart_type="bar", x="year", series=["Transactions_Billions"], title="Payment Transactions (Billions)" Blob 33 DataFrame 104 OK result_104 (4 rows)

Calling: show_chart - title="Active Accounts (Millions)", x="year", dataframe_id=104, series=["Active_Accounts_Millions"], chart_type="bar" Blob 34 DataFrame 104 OK result_104 (4 rows)

Calling: show_chart - chart_type="bar", x="year", dataframe_id=104, series=["Transactions_Per_Account"], title="Transactions per Active Account" Blob 35 DataFrame 104 OK result_104 (4 rows)

Calling: show_chart - chart_type="bar", series=["Cross_Border_TPV_Percent"], dataframe_id=104, title="Cross-Border TPV (% of Total)", x="year" Blob 36 DataFrame 104 OK result_104 (4 rows)

add 25 also

Calling: search_sec_compressed_filing - search_patterns=["active accounts", "payment transactions", "total payment volume", "TPV"], year="2025", ticker="PYPL"

PayPal's operational data for 2025 shows continued growth in Total Payment Volume and Active Accounts, alongside a shift in transactional engagement metrics.

PayPal Key Operating Metrics (2021–2025)

Metric 2025 2024 2023 2022 2021
Total Payment Volume (TPV) \$1.79 T \$1.68 T \$1.53 T \$1.36 T \$1.25 T
Payment Transactions (Billions) 25.4 B 26.3 B 25.0 B 22.3 B 19.3 B
Active Accounts (Millions) 439 M 434 M 426 M 435 M 426 M
Transactions per Active Account 57.7 60.6 58.7 51.4 45.4
Cross-Border TPV (% of Total) 12% 12% 12% 13% 16%

Key Trends from 2025: * TPV Growth: Total Payment Volume reached \$1.79 trillion, maintaining a consistent upward trajectory (up 7% from 2024). * Active Account Stabilization: Active accounts grew to 439 million, recovering from the 2023 dip. * Engagement Shift: The number of payment transactions per active account (57.7) experienced a slight decline compared to the 2024 peak (60.6), reflecting adjustments in user activity frequency.

in charts - with 2025 data

Calling: compute - dataframe_ids=[], code="import pandas as pd\n\ndata = {\n 'year': [2021, 2022, 2023, 2024, 2025],\n 'TPV_Trillions': [1.25, 1.36, 1.53, 1.68, 1.79],\n 'Transactions_Billions': [19.3, 22.3, 25.0, 26.3, 25.4],\n 'Active_Accounts_Millions': [426, 435, 426, 434, 439],\n 'Transactions_Per_Account': [45.4, 51.4, 58.7, 60.6, 57.7],\n 'Cross_Border_TPV_Percent': [16, 13, 12, 12, 12]\n}\nresult = pd.DataFrame(data)" Error: dataframe_ids is required

Calling: compute - dataframe_ids=[103], code="import pandas as pd\n\ndata = {\n 'year': [2021, 2022, 2023, 2024, 2025],\n 'TPV_Trillions': [1.25, 1.36, 1.53, 1.68, 1.79],\n 'Transactions_Billions': [19.3, 22.3, 25.0, 26.3, 25.4],\n 'Active_Accounts_Millions': [426, 435, 426, 434, 439],\n 'Transactions_Per_Account': [45.4, 51.4, 58.7, 60.6, 57.7],\n 'Cross_Border_TPV_Percent': [16, 13, 12, 12, 12]\n}\nresult = pd.DataFrame(data)" DataFrame 105 OK result_105 (5 rows)

Calling: show_chart - chart_type="bar", dataframe_id=105, x="year", series=["TPV_Trillions"], title="Total Payment Volume (Trillions USD)" Blob 37 DataFrame 105 OK result_105 (5 rows)

Calling: show_chart - dataframe_id=105, x="year", chart_type="bar", title="Payment Transactions (Billions)", series=["Transactions_Billions"] Blob 38 DataFrame 105 OK result_105 (5 rows)

Calling: show_chart - series=["Active_Accounts_Millions"], chart_type="bar", x="year", dataframe_id=105, title="Active Accounts (Millions)" Blob 39 DataFrame 105 OK result_105 (5 rows)

Calling: show_chart - title="Transactions per Active Account", chart_type="bar", series=["Transactions_Per_Account"], x="year", dataframe_id=105 Blob 40 DataFrame 105 OK result_105 (5 rows)

Calling: show_chart - chart_type="bar", title="Cross-Border TPV (% of Total)", dataframe_id=105, x="year", series=["Cross_Border_TPV_Percent"] Blob 41 DataFrame 105 OK result_105 (5 rows)

i see that transactoins declined in 2025 - can you find commentary on this in annual report - why this happened. and just double check if this is correct. give output in bullet points. also use web search to chek commentary

[Response aborted]

i see that transactoins declined in 2025 - can you find commentary on this in annual report - why this happened. and just double check if this is correct. give output in bullet points. also use web search to chek commentary

Calling: search_sec_compressed_filing - ticker="PYPL", search_patterns=["reason for decrease in payment transactions", "why did payment transactions decline in 2025", "Braintree volume 2025", "decline in payment transactions 2025 explanation"], year="2025"

Calling: search_sec_compressed_filing - search_patterns=["payment transactions decline", "Braintree volume trend", "merchant mix shift", "strategic changes in Braintree"], ticker="PYPL", year="2025"

Calling: search_sec_filing - year="2025", why_not_summary="Compressed filing search yielded 0 matches for specific phrases. Need to search raw text for explanation of transaction decline.", search_patterns=["Number of payment transactions decreased", "\"payment transactions\" 2025", "Braintree strategic shift", "decline in transactions"], ticker="PYPL"

Calling: exa_web_search - queries=["why did PayPal payment transactions decline in 2025", "PayPal 2025 transaction volume decline explained", "Did PayPal intentionally lower Braintree transaction volume in 2025?"], post_search_concerns="I have confirmed the decline in PayPal's payment transactions from 2024 to 2025 using SEC filings, but I need to find public commentary or analyst reports explaining *why* this occurred, as the filing itself might be dense or require synthesizing disparate sections."

The headline decline in PayPal's payment transactions from 26.3 billion in 2024 to 25.4 billion in 2025 is correct, but it is a deliberate result of management’s strategic shift, not a sign of fundamental collapse.

Here is the explanation for the decline, based on management commentary and analyst reviews of the 2025 performance:

  • Intentional "Price-to-Value" Strategy: The primary driver of the decline was an intentional decision by management to execute "price-to-value" actions within their Braintree (unbranded processing) business.
  • Shedding Unprofitable Volume: Historically, PayPal built its Braintree customer base by offering aggressive, low pricing to win market share. This resulted in high transaction volume but very low profitability. In 2025, management renegotiated contracts with large merchants and prioritized "profitable growth" over raw volume. This led them to knowingly shed low-margin Payment Service Provider (PSP) volume.
  • "Headline" vs. "Core" Performance: The decline in total transactions masks the underlying health of the core business. When you exclude the specific low-margin PSP (Braintree) transactions, payment transactions actually grew by approximately 6%.
  • Profitability Over Volume: This strategy successfully improved profitability metrics. Even with lower transaction counts, PayPal reported a 6% rise in transaction margin dollars (a key metric tracking profitability from the core payments business) and an improved adjusted operating margin (19.2% in 2025 vs 18.4% in 2024).
  • Additional Market Headwinds: While the Braintree strategy was the main driver of the volume decline, the company did note that growth in its branded checkout business was pressured by other factors, including:
    • Macroeconomic softness: Particularly in international markets like Germany.
    • Competitive pressures: Increased competition in online checkout from rivals like Apple Pay, Shop Pay, and Stripe Link.
    • Vertical deceleration: Slower growth in specific categories such as crypto, gaming, and ticketing.

Summary: You are seeing the result of a "hard reset." Management traded the quantity of total transactions for the quality (profitability) of those transactions. The core branded business (which is higher margin) continued to grow, even as they shrank the lower-margin, high-volume processing business.

can you give charts for braintree data (1 chart per data) and non braintree data.Also give charts for revenue, revenue by braintree/non-btraintree and margin etc. 1 chart per metric.

Calling: search_sec_compressed_filing - search_patterns=["Braintree revenue", "Braintree volume", "branded checkout revenue", "transaction revenue mix", "operating margin history"], ticker="PYPL", year="2025"

Calling: search_sec_filing - why_not_summary="Need to extract specific operational splits for Braintree that aren't in the summary tables.", year="2025", search_patterns=["Braintree volume growth", "\"Braintree\" revenue contribution", "\"transaction margin dollars\""], ticker="PYPL"

Calling: compute - dataframe_ids=[], code="import pandas as pd\n\ndata = {\n 'year': [2023, 2024, 2025],\n 'Total_Revenue_Billions': [29.77, 31.80, 33.17],\n 'Operating_Margin_Percent': [17.0, 17.0, 18.0]\n}\nresult = pd.DataFrame(data)" Error: dataframe_ids is required

Calling: compute - dataframe_ids=[105], code="import pandas as pd\n\ndata = {\n 'year': [2023, 2024, 2025],\n 'Total_Revenue_Billions': [29.77, 31.80, 33.17],\n 'Operating_Margin_Percent': [17.0, 17.0, 18.0]\n}\nresult = pd.DataFrame(data)" DataFrame 106 OK result_106 (3 rows)

Calling: show_chart - dataframe_id=106, series=["Total_Revenue_Billions"], chart_type="bar", x="year", title="Total Revenue (Billions USD)" Blob 42 DataFrame 106 OK result_106 (3 rows)

Calling: show_chart - x="year", series=["Operating_Margin_Percent"], dataframe_id=106, title="Operating Margin (%)", chart_type="bar" Blob 43 DataFrame 106 OK result_106 (3 rows)

what happened?

[Response aborted]

what happened?

I apologize for the confusion. The reason I was unable to provide the Braintree vs. Non-Braintree charts is that PayPal does not officially break out separate revenue, volume, or margin numbers for Braintree in their public SEC filings.

Because Braintree is integrated into their "Payment Services" segment, the company does not provide a formal, line-item split of Braintree's standalone financial metrics. Analysts often estimate these figures, but they are not official company data.

To provide you with the most useful information, I have summarized the key trends that management has publicly disclosed regarding this strategic shift:

Key Strategic Commentary on Braintree vs. Core Business

  • No Official "Braintree" Split: Management treats Braintree as a key component of their overall volume, but they do not report its specific revenue or profit independently. This is common for large payment processors.
  • The Strategic Pivot (The "What Happened"):
    • In 2023–2024: PayPal prioritized aggressive volume growth. Braintree was the primary vehicle for this, offering low-margin processing services to massive global merchants (like Uber, Airbnb, etc.). This pumped up "Total Payment Volume" (TPV) but diluted the overall transaction margin.
    • In 2025: Management acknowledged that this strategy was unsustainable. They shifted to "Profitable Growth." This involved renegotiating contracts with these large merchants. In cases where merchants were unwilling to pay a higher price to improve PayPal's margins, PayPal effectively chose to walk away from that volume.
    • The Result: This is why you see total transaction volume decline in 2025 (as we discussed, down 4%), but your revenue (up 4%) and operating margin (up to 18%) still improved.

What You Can See in the Financial Data

While I cannot graph Braintree metrics, the financial data I can chart for you confirms the success of this strategy:

  1. Revenue Growth: Even with the intentional shedding of low-margin volume, total revenue continued to climb.
  2. Margin Expansion: The jump in Operating Margin to 18% (from 17% in 2024) is the direct "proof" that the strategy of cutting low-margin volume worked.

If you are looking for these specific Braintree splits, they generally only exist in "Sell-side" analyst reports (from investment banks like Goldman Sachs, Morgan Stanley, etc.), rather than in the company's own annual report. Would you like me to look for analyst consensus estimates on Braintree's impact instead?

is there any segment?

Calling: search_sec_filing - why_not_summary="Checking if PayPal reports specific segments in the 10-K that might reveal Braintree vs branded data.", ticker="PYPL", search_patterns=["segment reporting", "reportable segments", "revenue by segment", "\"Braintree\" revenue segment"], year="2025"

PayPal does not report Braintree as a separate segment.

In their SEC filings (including the 2025 10-K), PayPal reports its operations as a single reportable segment. They do not break out Braintree or "Branded Checkout" as separate business segments.

Why doesn't PayPal break this out?

  • Integrated Business Model: PayPal views Braintree (their unbranded processing engine) as an integral part of their "Transaction Services." Because their backend infrastructure, risk management, and settlement platforms are shared across both branded (PayPal button) and unbranded (Braintree) services, they do not manage or report them as distinct, siloed financial entities.
  • Segment Reporting Rule: Under accounting standards (ASC 280), companies are only required to report separate segments if they have distinct financial information that the Chief Operating Decision Maker (CODM) uses to allocate resources and assess performance. Since PayPal manages the company as a unified payments platform, it is legally and operationally classified as one reportable segment.

The Closest Proxy They Provide

While you won't find a "Braintree Revenue" line item, PayPal does break down their revenue into two primary categories in their Income Statement, which gives a hint about the business mix:

  1. Transaction Revenues: This is the bulk of their revenue (roughly 90%+). This includes fees from both the branded PayPal button and the unbranded Braintree processing volume.
  2. Other Value Added Services: This includes interest income on customer balances, credit products, and other ancillary services.

Where can you find this data?

Because PayPal does not provide these figures, the "Braintree vs. Branded" split is purely an analytical estimate.

  • Equity Research: Investment banks (like Morgan Stanley, JPMorgan, or Citi) have analysts who create detailed "sum-of-the-parts" valuation models. They "reverse engineer" the Braintree volume by analyzing market data, processing volumes of large merchants, and industry-wide trends.
  • The Limitation: These numbers are not GAAP-audited and are not "official." They are educated guesses by Wall Street analysts.

Recommendation: If you need this data for a project, you shouldn't look for it in the annual report, as it simply doesn't exist there. Instead, you would need to look at Equity Research reports (often available via Bloomberg or brokerage platforms) where analysts provide these estimates.

what segments doe sit report

PayPal reports its business as a single reportable segment.

In their SEC filings (including the 2025 10-K), PayPal explicitly states that its chief operating decision-maker manages the company as a single, consolidated entity. They do not report financial results (revenue, profit, or assets) for individual business units like Braintree, Venmo, or Branded Checkout as separate segments.

How PayPal Categorizes Revenue Instead

While they don't use "segments," they do provide a breakdown of their revenue into two distinct revenue streams. This is often where confusion arises, as these two categories capture the entirety of their business:

1. Transaction Revenues

  • What it is: This is the core engine of PayPal. It includes fees earned from processing payments.
  • What it captures: This contains the volume from:
    • Branded Checkout: The PayPal button on merchant sites.
    • Unbranded Processing: The Braintree platform services.
    • Venmo: Payment processing fees within the Venmo ecosystem.
  • Why they group it: All of these services rely on the same underlying transaction processing infrastructure and risk management platforms.

2. Other Value Added Services

  • What it is: This represents revenue that is not directly tied to a specific payment transaction fee.
  • What it captures:
    • Interest Income: Interest earned on funds held in customer balances.
    • Credit Products: Interest and fee income from consumer and merchant credit products (e.g., PayPal Credit, Buy Now, Pay Later).
    • Referral/Other Fees: Income from partnerships and ancillary services.

Summary of Presentation

If you are reading the "Notes to Consolidated Financial Statements" in their annual report, you will see a table titled "Net Revenues by Type," which will look like this:

Revenue Type 2025 2024 2023
Transaction Revenues $XX $XX $XX
Other Value Added Services $XX $XX $XX
Total Net Revenues $XX $XX $XX

Crucial Takeaway: If you are trying to find an official "Braintree" number or a "Venmo" number in their financial statements, it does not exist. The company has made the strategic decision to manage and report the business as one unified platform, likely to simplify their narrative and reflect how their backend technology is shared across all these products.

so can you give numbers for the splits they report

Calling: search_sec_compressed_filing - ticker="PYPL", search_patterns=["Net revenues by type", "Transaction revenues", "Other value added services"], year="2025"

Calling: search_sec_filing - ticker="PYPL", why_not_summary="The compressed summary did not extract the 'Net Revenues by Type' table. I need to grep the raw 10-K filing to find these exact line items.", year="2025", search_patterns=["\"Net revenues\" \"Transaction revenues\" \"Other value added services\"", "\"Transaction revenues\" 2025 2024 2023"]

PayPal reports their net revenues by two types: Transaction Revenues (fees from payments) and Other Value Added Services (interest, credit products, etc.).

Here are the officially reported numbers for the last three years:

PayPal Net Revenues by Type (Billions USD)

Revenue Type 2025 2024 2023
Transaction Revenues \$29.45 B \$28.60 B \$27.16 B
Other Value Added Services \$3.72 B \$3.20 B \$2.61 B
Total Net Revenues \$33.17 B \$31.80 B \$29.77 B

Key Takeaways from these Splits:

  • Dominance of Transaction Revenues: Transaction revenues remain the massive engine of the company, consistently accounting for ~89–90% of total revenue. This confirms that PayPal's primary business model is still processing volume, regardless of whether that is branded (PayPal) or unbranded (Braintree).
  • Rapid Growth in "Other Value Added Services": While Transaction Revenues grew by ~3% in 2025, Other Value Added Services grew by ~16%.
    • The "Why": This acceleration is primarily driven by interest income. Because PayPal holds significant customer balances, the higher interest rate environment (through 2024–2025) allowed them to earn significantly more money on their cash deposits and the assets underlying customer balances.
    • Credit Portfolio: This category also captures the expansion of their consumer and merchant credit offerings (like "Buy Now, Pay Later"), which the company has been actively trying to grow as a higher-margin revenue stream.

This confirms the "segment" reporting: they do not break out Braintree or Venmo because those are all bundled inside "Transaction Revenues." The split above is the highest level of granularity the company provides in their annual reports.

chart

Calling: compute - dataframe_ids=[], code="import pandas as pd\n\ndata = {\n 'year': [2023, 2024, 2025],\n 'Transaction_Revenues': [27.16, 28.60, 29.45],\n 'Other_Value_Added_Services': [2.61, 3.20, 3.72]\n}\nresult = pd.DataFrame(data)" Error: dataframe_ids is required

Calling: compute - dataframe_ids=[103], code="import pandas as pd\n\ndata = {\n 'year': [2023, 2024, 2025],\n 'Transaction_Revenues': [27.16, 28.60, 29.45],\n 'Other_Value_Added_Services': [2.61, 3.20, 3.72]\n}\nresult = pd.DataFrame(data)" DataFrame 107 OK result_107 (3 rows)

Calling: show_chart - dataframe_id=107, title="PayPal Revenue Composition (Billions USD)", series=["Transaction_Revenues", "Other_Value_Added_Services"], x="year", chart_type="bar" Blob 44 DataFrame 107 OK result_107 (3 rows)

can you give chart for net income, eps. and comments on why stock price has decline is low rated.

Calling: load - tickers=["PYPL"], metrics=["net_income", "eps"]

DataFrame 108 OK pypl_overview_012840_c6c5c9 (1 rows, cols: ticker, date, eps)
DataFrame 109 OK pypl_fundamentals (63 rows, cols: ticker, date, period_type, net_income)

Calling: search_sec_compressed_filing - search_patterns=["Net income", "Diluted EPS", "Earnings per share"], year="2025", ticker="PYPL"

Calling: compute - dataframe_ids=[], code="import pandas as pd\n\ndata = {\n 'year': [2023, 2024, 2025],\n 'Net_Income_Millions': [4246, 4147, 5233],\n 'EPS_Diluted': [3.84, 3.99, 5.41]\n}\nresult = pd.DataFrame(data)" Error: dataframe_ids is required

Calling: compute - dataframe_ids=[103], code="import pandas as pd\n\ndata = {\n 'year': [2023, 2024, 2025],\n 'Net_Income_Millions': [4246, 4147, 5233],\n 'EPS_Diluted': [3.84, 3.99, 5.41]\n}\nresult = pd.DataFrame(data)" DataFrame 110 OK result_110 (3 rows)

Calling: show_chart - title="Net Income (Millions USD)", chart_type="bar", dataframe_id=110, series=["Net_Income_Millions"], x="year" Blob 45 DataFrame 110 OK result_110 (3 rows)

Calling: show_chart - chart_type="bar", x="year", title="Diluted EPS (USD)", series=["EPS_Diluted"], dataframe_id=110 Blob 46 DataFrame 110 OK result_110 (3 rows)

New