paypal operating metrics (non financial) last 4-5 years
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.
| 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.
| 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:
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:
While I cannot graph Braintree metrics, the financial data I can chart for you confirms the success of this strategy:
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.
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:
Because PayPal does not provide these figures, the "Braintree vs. Branded" split is purely an analytical estimate.
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.
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:
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:
| 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 |
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"]
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)