How Shopify Revenue Verification Works (And Why It's the Only Number That Matters)
Shopify's OAuth API gives read-only access to every order in a store's history. Here's exactly how verification works, what it reveals, what it misses, and why it should be the standard for every DTC acquisition.
When you're evaluating a DTC brand for acquisition, you will receive a seller's representation of their revenue. You should not trust it until you've verified it independently. Shopify's read-only OAuth API is the most powerful tool available for that verification — and it's available for every Shopify-native brand in the world.
What OAuth Access Means
When a seller grants OAuth read-only access to their Shopify admin, you receive programmatic access to their full order database. This is not a screenshot. It's not a PDF export that can be manipulated. It's direct access to the source-of-truth database that Shopify maintains on the seller's behalf.
Read-only access means you can query data but cannot change anything. The seller's business is unaffected by the connection. Most sellers who are comfortable with their numbers are willing to grant this access as part of due diligence. A seller who resists is worth asking about directly.
The Verification Workflow Step by Step
- Request the OAuth scope. You need at minimum read access to orders, products, and customers. The specific Shopify API scopes are:
read_orders,read_products,read_customers,read_analytics. - Pull the full order history. Request all orders since account creation (or a minimum of 36 months). For each order, capture: created_at, total_price, financial_status, and line_items.
- Segment by financial status. Separate paid orders from refunded, pending, and cancelled. Gross revenue = all paid order values. Net revenue = paid orders minus refunds.
- Aggregate by month. Build a month-by-month revenue table. Compare to the seller's reported figures. A discrepancy of more than 2–3% warrants an explanation.
- Cross-reference with payment processors. Request Stripe or PayPal statements for the same period. Settlement totals should approximate net Shopify revenue (minus payment processing fees, typically 2–3%).
What the Data Reveals
Beyond the headline revenue number, Shopify API data tells you:
- Refund rate by product: High refunds on a specific SKU signal quality issues or misleading marketing. Request a breakdown by product ID.
- Discount penetration: What percentage of orders used a discount code? A brand running 30%+ of orders with discounts to maintain revenue is artificially suppressing churn — the real repeat purchase rate is lower than the headline suggests.
- New vs. returning customer split: Shopify tags orders by customer type. If 80% of orders are from new customers, the brand is on a paid acquisition treadmill with low organic retention.
- Geographic distribution: Where are orders shipping? Concentration in one market creates platform dependency or logistics risk you need to understand.
- Order frequency distribution: How many customers have placed 1, 2, 3, 4+ orders? The shape of this distribution tells you about the brand's repeat purchase economics.
Common Manipulation Attempts
- Bulk test orders: Large orders placed to internal addresses, sometimes captured as revenue then refunded post-sale. Visible when you cross-reference customer addresses.
- Wholesale orders in retail Shopify: Single large orders from business customers inflating retail metrics. Check for unusually large single orders that would be implausible for a B2C transaction.
- Subscription pre-billing: Billing subscribers for future months immediately before a sale to front-load revenue. Shows up as a spike in subscription orders in the final 60–90 days.
What Verification Doesn't Cover
Shopify API verification is necessary but not sufficient. It doesn't tell you: true COGS and gross margin, ad spend and marketing efficiency, Amazon or wholesale revenue, off-platform transactions, or the sustainability of current growth. Think of verified Shopify revenue as the foundation — the starting point for a complete diligence process, not the end point.