WooCommerce Report by Payment Method (2026 Guide)

WooCommerce Report by Payment Method (2026 Guide)
5/5 - (1 vote)

You probably have two or three payment gateways active on your store right now. Maybe Stripe, PayPal, and cash on delivery. But do you actually know which one brings in the most revenue? Or which one your customers prefer?

WooCommerce doesn’t give you this data. You can open any individual order and see what gateway was used, but there’s no page that says “Stripe brought in $12,000 this month, PayPal brought in $6,000.” To see that, you’d have to export all your orders and build a pivot table — and do it again next month.

There are better ways. Below are three methods to create a WooCommerce report by payment method, from a simple plugin to raw SQL.

Why This Matters

Not all payment gateways are equal. Stripe charges different fees than PayPal. Bank transfers are free but slow. Cash on delivery has a higher cancellation rate.

When you can see revenue broken down by gateway, a few things become obvious. Maybe 70% of your orders go through Stripe, but PayPal customers spend more per order on average. Maybe you’re paying unnecessary fees on a gateway that only handles 3% of your sales. Or maybe customers in certain countries strongly prefer a gateway you haven’t prioritized.

Without a report, you’re guessing. With one, you can actually decide whether to drop a gateway, promote another at checkout, or negotiate better rates with a payment provider.

What WooCommerce Shows (and What It Doesn’t)

If you go to WooCommerce → Analytics → Orders, you’ll see a list of individual orders with the payment method shown on each one. That’s it. There’s no summary, no totals per gateway, no chart.

WooCommerce also has a Revenue tab in Analytics, but it lumps everything together regardless of how the customer paid. You can filter orders by status, date, product, or coupon — but not by payment method.

So if you want gateway-level data, you need one of the methods below. For a full overview of what’s possible beyond WooCommerce defaults, see WooCommerce custom reports with WooReports.

Method 1: WooReports Pro

The fastest way to get a WooCommerce report by payment method without touching code. WooReports Pro has two dedicated modules for this: a revenue-based Payment Gateway report and a profit-based Profit by Gateway report.

Payment Gateway Report

After installing the plugin, go to WooReports → Payment Gateway. You’ll see a table listing every gateway your store has used, with the number of orders and total revenue for each. Filter by date range — today, last 7 days, last 30 days, or a custom range — and the numbers update instantly.

woocommerce report by payment method

Profit by Gateway

Revenue per gateway is useful. Profit per gateway is what actually matters.

Say you sell products with very different margins. It’s possible that most Stripe orders are for your low-margin products while PayPal orders tend to be higher-margin items. Revenue numbers alone won’t show you this — you need cost data.

WooReports Pro adds a Profit by Gateway report under WooReports → Profit by Gateway. It takes the cost of goods you’ve entered for each product and calculates net profit per gateway.

To use it, enter cost prices for your products first. Edit any product, go to the General tab, and fill in the Cost field next to the regular price. WooReports calculates profit on every order going forward.

WooCommerce Profit by Gateway

Export

Every report can be exported with one click — Excel (XLSX), PDF, CSV, or print directly from the browser. The PDF export uses TCPDF and supports Arabic RTL for right-to-left stores.

What Else You Get

Beyond payment gateway reports, WooReports Pro includes 15+ report modules: Overview, Orders, Products, Categories, Coupons, Customers, Orders Status, Locations, Shippings, Tax, Stock, Profit by Product, Profit by Order, and Dokan Vendor reports. It also sends scheduled sales summary emails via WP-Cron. Pricing starts from $29/year for a single site — see the full advanced WooCommerce reporting feature list.

Method 2: SQL Query

If you’re comfortable with databases, you can pull gateway revenue directly with SQL. No plugin needed.

HPOS (WooCommerce 8.0+)

Most WooCommerce stores now use High-Performance Order Storage. Here’s the query:

SELECT 
    pm.payment_method_title,
    COUNT(*) AS total_orders,
    SUM(pm.total_amount) AS total_revenue,
    ROUND(AVG(pm.total_amount), 2) AS avg_order_value
FROM 
    wp_wc_orders AS pm
WHERE 
    pm.status IN ('wc-completed', 'wc-processing')
    AND pm.date_created_gmt >= '2026-01-01'
    AND pm.date_created_gmt < '2026-04-01'
GROUP BY 
    pm.payment_method
ORDER BY 
    total_revenue DESC;

Legacy Storage (pre-HPOS)

If your store still uses the old post-based storage:

SELECT 
    gateway_meta.meta_value AS payment_method,
    COUNT(*) AS total_orders,
    SUM(total_meta.meta_value) AS total_revenue,
    ROUND(AVG(total_meta.meta_value), 2) AS avg_order_value
FROM 
    wp_posts AS orders
INNER JOIN wp_postmeta AS gateway_meta 
    ON orders.ID = gateway_meta.post_id 
    AND gateway_meta.meta_key = '_payment_method_title'
INNER JOIN wp_postmeta AS total_meta 
    ON orders.ID = total_meta.post_id 
    AND total_meta.meta_key = '_order_total'
WHERE 
    orders.post_type = 'shop_order'
    AND orders.post_status IN ('wc-completed', 'wc-processing')
    AND orders.post_date >= '2026-01-01'
    AND orders.post_date < '2026-04-01'
GROUP BY 
    gateway_meta.meta_value
ORDER BY 
    total_revenue DESC;

Run either query in phpMyAdmin or Adminer. Change wp_ to your table prefix and adjust the dates.

The Catch

SQL gives you numbers, not a dashboard. You’ll need to re-run the query every time you want fresh data. It also only shows revenue — not profit. And if you want to share this with a store manager or client who doesn’t have database access, you’re stuck copying into a spreadsheet anyway.

Method 3: Custom PHP Code

For developers who’d rather work in code than SQL, you can use WooCommerce’s wc_get_orders() function:

$orders = wc_get_orders( array(
    'status'     => array( 'completed', 'processing' ),
    'limit'      => -1,
    'date_after' => '2026-01-01',
    'return'     => 'objects',
) );

$gateway_totals = array();

foreach ( $orders as $order ) {
    $method = $order->get_payment_method_title();
    
    if ( ! isset( $gateway_totals[ $method ] ) ) {
        $gateway_totals[ $method ] = array(
            'orders'  => 0,
            'revenue' => 0,
        );
    }
    
    $gateway_totals[ $method ]['orders']++;
    $gateway_totals[ $method ]['revenue'] += (float) $order->get_total();
}

uasort( $gateway_totals, function( $a, $b ) {
    return $b['revenue'] <=> $a['revenue'];
} );

You could drop this in a custom admin page, a WP-CLI command, or a REST endpoint. It’s flexible, but you’re building and maintaining it yourself.

Quick Comparison

WooReports ProSQLPHP Code
Revenue per gateway
Profit per gateway
Date filteringManualManual
DashboardBuild it yourself
Export to Excel/PDF
Skill levelAnyoneDBADeveloper
PriceFrom $29/yrFreeFree

For store owners and managers, WooReports Pro is the practical choice — revenue and profit per gateway with date filtering, export, and 15+ other WooCommerce sales reports in one plugin.

If you’re a developer and prefer to own the code, the SQL or PHP approach works — just know that you’ll be maintaining it.

Have a Question or Tip to Share? We’d Love to Hear from You!
Mahdi Khaksar
Mahdi Khaksar

WordPress Expert & Article Author

I’ve been in the WordPress world for years. Here at NikanWP, I enjoy creating helpful tutorials to support others who are building amazing things with WordPress.


Connect with me