Combine Shopify & Stripe Data Without Code
Let me walk you through this step by step. If you're running an ecommerce business, you've probably noticed something frustrating: Shopify tells you one story about your revenue, and Stripe tells you another. Both are true, but neither gives you the complete picture.
Today, I'm going to show you how to merge these two datasets in just three clicks—no spreadsheets, no formulas, no coding required. By the end of this tutorial, you'll see your true profitability per order, including all fees that eat into your revenue.
There's no such thing as a dumb question in analytics, so if any step feels unclear, the troubleshooting section at the end has you covered.
What You'll Need Before Starting
Before we begin, make sure you have:
- Admin access to Shopify - You need permission to export order data
- Access to Stripe Dashboard - To export payment and fee information
- At least 30 days of order history - More data gives you better insights
- 15 minutes of uninterrupted time - This process is quick, but accuracy matters
Don't worry if you're not technical. I've designed this tutorial to start from first principles and build from there.
Why You Need Both Datasets (And Why Each One Alone Isn't Enough)
Let's start with the basics. Your Shopify dashboard shows you orders—what customers bought, when they bought it, and what they paid. This is your gross revenue.
Your Stripe dashboard shows you payments—what actually hit your bank account after processing fees, refunds, and chargebacks. This is your net revenue.
Here's where it gets interesting. Imagine you had a $1,000 order today:
- Shopify says: "You made $1,000!"
- Stripe says: "You received $968.00"
- You wonder: "Where did the other $32 go?"
The answer is Stripe fees (2.9% + $0.30 per transaction in this case). But it gets more complex when you consider:
- Multiple payment methods (credit card, Apple Pay, Google Pay)
- International transactions with currency conversion fees
- Partial refunds that reduce your net revenue
- Disputes and chargebacks that can reverse entire transactions
Without combining both datasets, you're making decisions based on incomplete information. You might think a product is profitable when the payment fees make it break-even. You might not notice that international orders cost you more to process.
The simplest explanation is often the most useful: you need both datasets to see the full financial picture of every order.
What You're Building: Revenue vs. Fees vs. Profit
By the end of this tutorial, you'll have a single dataset that shows you:
| What You'll See | Where It Comes From | Why It Matters |
|---|---|---|
| Order Total | Shopify | What the customer paid |
| Processing Fees | Stripe | What you paid to accept payment |
| Net Revenue | Stripe | What actually reached your account |
| Product Details | Shopify | Which items drove the sale |
| Customer Location | Shopify | Geographic profitability analysis |
| True Profit | Calculated | Order Total - Fees = Real Profit |
This combined view lets you answer questions that neither system can answer alone, like "Which products are actually profitable after payment processing?" or "Do international orders cost more to process than they're worth?"
Step 1: Export Your Shopify Order Data
First, let's get your order data out of Shopify. I'll walk you through exactly where to click.
Navigating to the Export Function
- Log into your Shopify admin dashboard
- Click on Orders in the left sidebar
- Look for the Export button in the top-right corner (it's next to the filters)
- Click Export orders
Choosing the Right Export Settings
You'll see several options. Here's what to select:
- Export: Select "All orders" or choose a specific date range (I recommend at least 90 days for meaningful analysis)
- Export as: Choose "CSV for Excel, Numbers, or other spreadsheet programs"
- Format: Select "Plain CSV file"
Understanding Shopify Order Export CSV Columns
When you open your Shopify export, you'll see many columns. The most important ones for our analysis are:
- Name - The order ID (like #1001, #1002)
- Email - Customer email address
- Financial Status - Whether the order was paid
- Total - The full order amount
- Lineitem name - What products were ordered
- Lineitem quantity - How many of each item
- Lineitem price - The sale price
- Lineitem compare-at price - The original price (if on sale)
The Shopify Order Export CSV Columns "Lineitem Compare-At Price" Explained
Many people search specifically for information about the "lineitem compare at price" column in Shopify order export CSV files. Let me explain what this column means and why it matters for your profitability analysis.
The lineitem compare-at price (sometimes written as "compare at price" or "compare-at price") shows the original price of a product before any discounts were applied. This is crucial for understanding:
- How much discount you offered on each item
- Whether discounted products are still profitable after payment processing fees
- Which promotions are actually driving profitable sales
For example, if your Shopify orders export CSV columns show "lineitem compare-at price" as $100 and "lineitem price" as $70, you gave a $30 discount. When we later combine this with Stripe fees, you'll see if that $70 sale is still profitable after the 3% processing fee.
Sample Shopify Export Data
Here's what a few rows might look like:
Name,Email,Financial Status,Total,Lineitem name,Lineitem quantity,Lineitem price,Lineitem compare-at price
#1001,[email protected],paid,129.99,Wireless Mouse,1,129.99,149.99
#1002,[email protected],paid,79.99,USB Cable,2,39.99,49.99
#1003,[email protected],paid,299.99,Keyboard,1,299.99,299.99
Verification Step
Before moving on, open your exported CSV file and verify:
- ✓ You see order numbers in the "Name" column
- ✓ The "Total" column has numeric values
- ✓ The "Financial Status" column shows "paid" for completed orders
- ✓ You have at least 20-30 orders (more is better for analysis)
If everything looks good, you're ready for step 2!
Step 2: Export Your Stripe Payment Data
Now let's get the payment data from Stripe. This will show us what you actually received after fees.
Navigating to Stripe Exports
- Log into your Stripe Dashboard
- Click on Payments in the left sidebar
- Click the Export button at the top of the page
- Choose your export settings (I'll explain below)
Configuring Your Stripe Export
Stripe gives you several export options. Here's what works best for this analysis:
- Date range: Match the same dates as your Shopify export (this is critical for matching)
- Type: Select "Payments"
- Columns: Choose "All available columns" (we need the fee information)
- Format: CSV
Key Stripe Columns You'll Use
The Stripe export includes these essential columns:
- id - The Stripe charge ID
- Amount - The gross transaction amount
- Fee - The Stripe processing fee
- Net - What you actually received (Amount - Fee)
- Description - Often contains your Shopify order number
- Customer Email - The buyer's email address
- Created - When the charge was processed
Sample Stripe Export Data
Here's what your Stripe data might look like:
id,Amount,Fee,Net,Description,Customer Email,Created
ch_abc123,129.99,4.07,125.92,Order #1001,[email protected],2026-03-01 14:23:01
ch_def456,79.99,2.62,77.37,Order #1002,[email protected],2026-03-01 16:45:33
ch_ghi789,299.99,9.00,290.99,Order #1003,[email protected],2026-03-02 09:12:45
Verification Step
Before proceeding, check that your Stripe export has:
- ✓ The same date range as your Shopify export
- ✓ Fee amounts in the "Fee" column
- ✓ Net amounts that equal (Amount - Fee)
- ✓ A description or metadata field that might contain order numbers
Perfect! Now you have both pieces of the puzzle. Let's put them together.
Step 3: Match on Order ID or Transaction ID
This is where the magic happens. We're going to join these two datasets so each row shows the complete financial picture of an order.
Understanding the Join Key
Before we build a model or use any advanced techniques, let's just look at the data. What field appears in both datasets that we can use to match them?
Usually, it's one of these:
- Order Number - Shopify's "Name" field (#1001) should appear in Stripe's "Description" field
- Customer Email - Both systems capture this, but be careful: customers can place multiple orders
- Transaction ID - If you've configured metadata in Stripe, it might store the Shopify order ID
The most reliable match is the order number. Let's use that.
Using the MCP Analytics Data Merging Tool
Rather than wrestling with VLOOKUP formulas or writing SQL, let's use a tool designed for this exact task. Head over to the MCP Analytics data merging tool.
Upload Your Files
- Click "Upload First Dataset" and select your Shopify CSV
- Click "Upload Second Dataset" and select your Stripe CSV
- The tool will automatically detect the columns in each file
Configure the Join
Now tell the tool how to match the datasets:
- Under "Join Key from First Dataset", select "Name" (this is your Shopify order number)
- Under "Join Key from Second Dataset", select "Description" (this contains your order number)
- Choose "Inner Join" as your join type (this keeps only orders that appear in both systems)
- Click "Merge Datasets"
What's Happening Behind the Scenes
The tool is matching each Shopify order with its corresponding Stripe payment. An "inner join" means:
- If an order appears in both Shopify and Stripe → it's included
- If an order only appears in Shopify (maybe unpaid) → it's excluded
- If a charge only appears in Stripe (maybe a refund) → it's excluded
This ensures you're only analyzing completed, paid orders.
Alternative Approach: Manual Matching (If the Tool Doesn't Work)
If for some reason the automated matching doesn't work perfectly, here's a manual approach using spreadsheet software:
In Google Sheets or Excel:
- Open both CSV files in separate sheets
- In your Shopify sheet, add a new column called "Stripe Fee"
- Use this formula in cell (assuming order number is in A2 and Stripe data is in Sheet2):
=IFERROR(VLOOKUP("*"&A2&"*",Sheet2!$D:$F,2,FALSE),0)
This searches the Stripe description column for your order number and pulls back the fee.
- Add another column called "Net Revenue" with this formula:
=IFERROR(VLOOKUP("*"&A2&"*",Sheet2!$D:$F,3,FALSE),0)
This pulls the net amount you received.
But honestly, let's use the automated tool—it's much faster and less error-prone. I've just included this as a backup option.
Verification Step
After merging, check that:
- ✓ The number of rows makes sense (should roughly match your paid orders in Shopify)
- ✓ You see both Shopify columns (product names, quantities) AND Stripe columns (fees, net amounts)
- ✓ Random spot-check: pick an order and verify the fee calculation makes sense (roughly 3% of order total)
Step 4: Review the Combined Dataset
Let's look at what you've created. Your merged dataset should now show the complete financial story of each order.
Sample Merged Output
Here's what your combined data should look like:
Order,Customer,Product,Qty,Price,Order_Total,Stripe_Fee,Net_Revenue,True_Profit
#1001,[email protected],Wireless Mouse,1,129.99,129.99,4.07,125.92,125.92
#1002,[email protected],USB Cable,2,39.99,79.98,2.62,77.36,77.36
#1003,[email protected],Keyboard,1,299.99,299.99,9.00,290.99,290.99
Understanding Each Column
Let me walk through what each column tells us:
- Order - Your Shopify order identifier (from Shopify)
- Customer - Buyer's email (from both, used for verification)
- Product - What was purchased (from Shopify)
- Qty - Quantity ordered (from Shopify)
- Price - Per-item price (from Shopify)
- Order_Total - What customer paid (from Shopify)
- Stripe_Fee - Processing cost (from Stripe)
- Net_Revenue - What you received (from Stripe)
- True_Profit - Net_Revenue minus your product costs (you'll add this)
Calculating True Profit
Now that you see revenue AND fees, you can calculate true profit. You'll need one more piece of information: your product costs.
Add a column for "Product_Cost" and fill in what each item costs you (COGS - Cost of Goods Sold). Then calculate:
True_Profit = Net_Revenue - (Product_Cost × Qty)
This shows you profit after both payment processing and product costs. Now you're seeing the real profitability of each order.
Export Your Merged Dataset
Don't forget to save your work! Click "Download as CSV" to export the merged dataset. You can now analyze this in any tool you prefer—or continue with our analysis features below.
5 Instant Insights You Can Now Answer
Before we dig deeper with models or complex analyses, let's just look at the data and see what it tells us. Here are five questions you can now answer instantly:
1. What Are Your Actual Profit Margins?
Create a simple calculation:
Profit_Margin = (Net_Revenue - Product_Cost) / Order_Total × 100
You might discover that products you thought had 40% margins actually have 35% margins after fees. That 5% difference is real money.
2. Which Payment Methods Cost You More?
Look at the "Stripe_Fee" column and group by payment type. You'll often find:
- Credit cards: ~2.9% + $0.30
- American Express: ~3.5% + $0.30
- International cards: 3.9% + $0.30
If you're seeing high international card fees, you might want to consider regional payment processors or adjust international pricing.
3. Are Discounted Products Still Profitable?
Remember that "lineitem compare-at price" column from Shopify? Now you can compare:
- Original price: $149.99
- Sale price: $129.99
- After Stripe fees: $125.92
- After product cost: $85.92 profit
Is that 20% discount worth it? Now you can see the full impact on your bottom line. For a deeper understanding of how to prioritize products by profitability, check out our guide on ABC and Pareto analysis for data-driven decisions.
4. How Much Do Fees Cost You Per Month?
Sum the "Stripe_Fee" column for any time period:
Total_Monthly_Fees = SUM(Stripe_Fee)
Many store owners are shocked to discover they're paying $1,500+ per month in processing fees. Understanding this helps you evaluate whether alternative payment processors might save you money.
5. Which Products Have the Best Net Profit?
Sort your merged dataset by "True_Profit" (descending). The top products are your real winners—they're profitable after all costs.
You might find that your bestselling product (by volume) isn't your most profitable product (by margin). This is crucial information for inventory decisions and marketing spend.
Common Join Issues and How to Fix Them
There's no such thing as a dumb question in analytics. Here are the most common issues people encounter when merging Shopify and Stripe data, along with solutions.
Issue 1: Order Numbers Don't Match
Symptom: Your merge produces zero matches or very few matches.
Cause: Shopify uses order numbers like "#1001" but Stripe's description might say "Order 1001" (without the #), or vice versa.
Solution: Clean the data before joining. Remove special characters:
- In the Shopify column, replace "#" with nothing
- In the Stripe column, remove "Order " prefix if present
- Make sure both are just numbers: 1001, 1002, 1003
Issue 2: Multiple Shopify Orders for One Stripe Charge
Symptom: One Stripe charge matches multiple Shopify orders.
Cause: Customer placed multiple orders quickly, and they were batched into one charge.
Solution: Look at timestamps. Join on both order number AND timestamp (within a few minutes). Alternatively, use customer email as a secondary join key.
Issue 3: Refunded Orders Skewing Results
Symptom: Some orders show negative net revenue.
Cause: The order was refunded, but both the original charge and refund appear in your data.
Solution: Filter out refunds before analyzing. Look for:
- Negative amounts in Stripe data
- "Refunded" status in Shopify "Financial Status" column
- Stripe descriptions containing "Refund" or "Reversal"
-- Keep only positive transactions
Filter: Stripe_Amount > 0 AND Shopify_Financial_Status = "paid"
Issue 4: Date Ranges Don't Align
Symptom: Many Shopify orders don't have matching Stripe charges.
Cause: You exported different date ranges from each system, OR there's a lag between order creation and payment processing.
Solution: Re-export both datasets with the same date range, but give Stripe data an extra 2-3 days buffer (payments can take time to process). If you're analyzing statistical significance of changes over time, our guide on A/B testing statistical significance can help you understand whether differences are meaningful.
Issue 5: Missing Stripe Fee Data
Symptom: After merging, the Stripe_Fee column is empty or shows zeros.
Cause: You didn't include the "Fee" column in your Stripe export.
Solution: Go back to Stripe and re-export with "All available columns" selected. Make sure you see these columns in your CSV:
- Amount
- Fee
- Net
If you're still stuck, the troubleshooting section below has more specific guidance for edge cases.
Next Steps: Analyze by Product, Region, or Customer
Now that you have a unified dataset, the real fun begins. Let's explore what questions you can answer by grouping and filtering your data.
Analyze by Product
Group your merged data by "Product" name to see:
- Which products generate the most net revenue (after fees)
- Which products have the highest profit margins
- Whether high-volume products are actually profitable at scale
-- Example analysis: Group by product
SELECT
Product,
SUM(Order_Total) as Gross_Revenue,
SUM(Stripe_Fee) as Total_Fees,
SUM(Net_Revenue) as Net_Revenue,
COUNT(*) as Orders,
AVG(True_Profit) as Avg_Profit_Per_Order
GROUP BY Product
ORDER BY Net_Revenue DESC
This shows you which products are your real moneymakers after accounting for payment processing.
Analyze by Region or Customer Location
Your Shopify export includes shipping addresses. Use this to analyze geographic profitability:
- Do international orders cost more to process? (Higher Stripe fees)
- Which countries or states generate the most profit?
- Should you adjust pricing for specific regions to offset processing costs?
Group by "Shipping Country" or "Shipping State" to see regional patterns.
Analyze by Customer
Group by customer email to identify:
- Your most valuable customers (by total net revenue)
- Customers whose orders are consistently profitable
- Whether repeat customers have better margins (they might order higher-value items)
-- Example: Find top customers by net revenue
SELECT
Customer_Email,
COUNT(DISTINCT Order) as Order_Count,
SUM(Net_Revenue) as Lifetime_Value,
AVG(Stripe_Fee / Order_Total) as Avg_Fee_Percentage
GROUP BY Customer_Email
ORDER BY Lifetime_Value DESC
LIMIT 20
Time-Based Analysis
Add a date column (from your "Created" timestamp) and analyze trends:
- Are fees increasing over time?
- Do certain days or months have better profit margins?
- How do seasonal promotions affect true profitability?
Looking at your data over time helps you notice patterns that weekly dashboards miss. If you want to understand how changes impact your metrics over time, explore our article on boosting algorithms for data-driven decisions.
Advanced: Multi-Dimensional Analysis
Combine multiple dimensions for deeper insights:
- Which products are most profitable in which regions?
- Do certain customers consistently buy lower-margin products?
- How do discount codes affect profitability by product category?
The possibilities are endless once you have clean, merged data. The greatest value of analyzing data is when it forces us to notice what we never expected to see.
Ready to Go Deeper?
You've successfully merged your Shopify and Stripe data—congratulations! You now have a complete financial picture of every order.
But combining the data is just the beginning. The next step is analyzing it to uncover insights that drive real business decisions.
Analyze Your Merged Dataset with MCP Analytics
Head over to our free analysis tool to:
- Visualize profit margins across products, regions, and time periods
- Identify your most profitable customers by lifetime value after fees
- Track fee percentages over time to negotiate better rates with payment processors
- Build custom dashboards without writing any code
- Export reports for your team or stakeholders
No credit card required. Upload your merged CSV and start exploring in seconds.
Troubleshooting Guide
If you're stuck at any point, don't worry—here are solutions to specific problems.
My Shopify Export Is Missing Columns
Problem: You don't see "lineitem compare-at price" or other expected columns.
Solution: Make sure you selected the right export format. Go back to Shopify Orders → Export → Choose "CSV for Excel, Numbers, or other spreadsheet programs" (not "Plain CSV file"). The plain format has fewer columns.
Stripe Won't Let Me Export All Columns
Problem: The Stripe export dialog doesn't show a "Fee" column option.
Solution: You might be on a restricted Stripe account. Try these steps:
- Go to Stripe Dashboard → Payments
- Click "More" (three dots) → "Export"
- Choose "Custom" as the export type
- Manually select columns including: Amount, Fee, Net, Description
The Merge Tool Says "No Matching Rows Found"
Problem: After uploading both files, the merge produces zero matches.
Solution checklist:
- Open both CSV files and visually confirm that order numbers appear in both
- Check if Shopify uses "#1001" while Stripe uses "1001"—you'll need to remove the "#"
- Verify that both exports cover the same date range
- Make sure the Stripe "Description" field actually contains order numbers (it should if Shopify is your payment processor)
Some Orders Are Duplicated After Merging
Problem: One Shopify order appears multiple times in the merged data.
Solution: This happens when Shopify exports line items separately. If an order had 3 products, it might appear as 3 rows. This is actually fine for product-level analysis! Each row shows revenue and fees at the line-item level.
If you want order-level aggregation instead, group by "Order" and sum the amounts.
Fees Seem Too High or Too Low
Problem: The Stripe fees don't match your expectations (should be around 2.9% + $0.30 per transaction).
Solution: Check these common issues:
- Are you on a custom Stripe pricing plan? Your rates might differ from standard pricing
- Do you have international transactions? These have higher fees (3.9%+)
- Are there chargebacks or disputes? These add additional fees
- Did you include refunds? Stripe fees aren't refunded, which can skew your averages
Still Stuck?
If you're still having issues after trying these solutions, the problem might be with data formatting or specific to your Shopify/Stripe setup. Reach out to us through the analysis tool with a sample of your data (anonymized), and we'll help troubleshoot.
Frequently Asked Questions
How often should I merge my Shopify and Stripe data?
For ongoing analysis, I recommend monthly. Export both datasets on the 1st of each month for the previous month's data. This gives you a consistent rhythm for tracking profitability trends.
If you're making pricing decisions or running promotions, you might want to do it weekly to see the impact faster.
What if I use a payment processor other than Stripe?
The same principles apply! Whether you use PayPal, Square, or another processor, you need the same data points:
- Transaction amount (gross revenue)
- Processing fees
- Net revenue (what you received)
- An identifier that matches to your Shopify orders
Export these from your payment processor and follow the same merging steps.
Do I need to include refunds and chargebacks?
For initial profitability analysis, I recommend excluding refunds—they complicate the picture. Start with completed, paid orders only.
Once you understand your baseline profitability, you can run a separate analysis on refunds and chargebacks to see how they impact your overall margins.
Can I automate this process?
Yes! Once you've done the manual process a few times and understand how the data connects, you can automate it with tools like Zapier or by using Shopify and Stripe's APIs. However, I recommend starting manually so you understand what's happening behind the scenes.
What about other costs like shipping and advertising?
This tutorial focused on payment processing fees because they're often invisible in standard reports. But you're right—for complete profitability, you should also factor in:
- Cost of Goods Sold (COGS)
- Shipping costs
- Advertising spend (CAC - Customer Acquisition Cost)
- Returns and refunds
Once you have this merged dataset, you can add columns for these other costs to get a complete profit picture.
How accurate is this analysis?
As long as your exports are complete and cover the same date range, this analysis is highly accurate. The merged data shows exactly what happened financially for each order.
The only caveat: there might be a 1-2 day lag between when an order is created in Shopify and when the payment is processed by Stripe. For most analyses, this is negligible, but if you're looking at daily data, keep this timing difference in mind.
You Did It!
Let's celebrate—you've successfully combined two critical datasets to see the complete financial picture of your ecommerce business. You're no longer guessing about profitability; you're looking at real data.
Here's what you accomplished today:
- ✓ Exported order data from Shopify including lineitem pricing
- ✓ Exported payment data from Stripe including fees
- ✓ Merged the datasets on order ID
- ✓ Created a unified view showing revenue, fees, and net profit
- ✓ Learned how to analyze by product, region, and customer
The simplest explanation is often the most useful: now you know where every dollar goes, from customer payment to your bank account.
What does this visualization tell us? Let's look together: some products that seemed profitable might have thin margins after fees. Some customer segments might be more valuable than you thought. Some regions might need pricing adjustments.
These insights are only visible when you combine both data sources.
Where to Go From Here
Now that you have clean, merged data, here are your next steps:
- Analyze your top products by net profitability (after fees)
- Review your pricing strategy for products with low margins
- Identify your most profitable customer segments to focus marketing spend
- Set up a monthly process to track these metrics over time
- Explore the MCP Analytics tool for deeper visualizations and insights
Remember: there's no such thing as a dumb question in analytics. If you got stuck anywhere in this tutorial, that's valuable feedback for me to make it clearer. And if you discovered interesting patterns in your data, that's exactly what this analysis is for—noticing what you never expected to see.
Happy analyzing!
— MCP Analytics Team
Explore more: Shopify Analytics — all tools, tutorials, and guides →
Not sure which plan? Compare plans →