Seven cost types. Temporal periods. Country-specific COGS. Bundle rollup. Weight-tier shipping. Per-currency gateway fees with international surcharges. Every cost, every order, penny-accurate.
All PlansMost merchants see their Shopify revenue number and think that's profit. It's not. A $100 order might have $25 in product cost, $8 in shipping, $5.32 in gateway fees, and $12 in overhead allocation. That's only $49.68 in net profit — half the sale price. Miss just one cost category, and your P&L is fundamentally broken.
Spreadsheets fail because costs shift: suppliers raise prices mid-year, shipping carriers change zones, payment processors adjust rates, and you scale from manual fulfillment to 3PL. Tracking cost periods manually is error-prone and slow. By the time you realize a cost was wrong, you've already made a dozen pricing decisions based on bad data.
NetNet's cost engine solves this by modeling every cost type the way your business actually works. Costs are captured at order ingestion time, stored with full audit trail, and evaluated using lookup chains that resolve the exact cost for each variant, country, and time period. When costs change, old orders keep old costs — you get historical accuracy for any date range.
Every cost is calculated per-order at ingestion time — not aggregated, not estimated. Stored with full audit trail. Each cost type is optimized for a different part of your P&L, from tangible product costs to intangible overhead allocation.
Bundles, tiers, periods
Profiles, zones, weight
% + flat + tax-on-fee
Flat, %, COD-specific
Per unit, per line item
6 overhead categories
Per-currency defaults
Most apps give you one cost per product. Real businesses source differently by country, negotiate volume tiers with suppliers, bundle components together, and adjust costs when suppliers raise prices. NetNet's COGS engine handles all of it by running a 7-step lookup chain that always picks the right cost for each order.
Different colors, sizes, or materials have different costs. Set cost individually per variant. Products without costs show amber warnings so you never accidentally miss a SKU.
Suppliers offer bulk discounts. Buy 10 units at $28, but 100+ at $22. Your orders automatically use the highest matching tier. Encourages customers to buy bigger orders that hit lower cost tiers.
When you bundle products together, cost auto-calculates from component costs. Edit a component once and it flows through to every order that includes it — no double-data-entry nightmare.
Manufacturing costs differ by destination. US orders from a local supplier might be $15, but EU orders from a European distributor are $18. NetNet resolves the right cost per country, per order.
When a supplier raises prices mid-year, create a new cost period. Old orders keep old costs (historically accurate), new orders use new costs. Overlapping periods auto-resolve — no manual date juggling.
Manage hundreds of SKUs via bulk import. Export a CSV template with all your variants, fill in cost_per_unit, re-import, and NetNet shows you exactly what imported, what skipped, and what failed — with reasons.
Using a flat 2.9% estimate understates fees by $1,240/mo on international and AMEX transactions.
Shipping is never simple. A D2C brand selling apparel and home goods pays different rates by zone, product weight, and order volume. NetNet models this complexity with multi-profile shipping that tracks historical rate changes and always applies the rate that was active on the order date.
Use manual configured rates you negotiate with carriers, pull the customer's quoted shipping cost from Shopify, or bake shipping into your product COGS. Pick what matches your business model.
Lightweight items (apparel, accessories) ship different rates than heavy items (furniture, bulk orders). Create separate profiles, assign products, and each profile gets its own zone/rate configuration.
Group countries into zones (Domestic, EU, International). Rates vary by zone. Use 'Rest of World' to catch countries you haven't explicitly defined — no orphaned orders.
Configure flat rates (one price for all weights), quantity-based (first item + each additional item), or weight tiers (0-500g, 500g-1kg, etc.). One active type per zone — switch easily as your carrier rates change.
Ranges must be continuous with no gaps. 0-500g, 500g-1000g, 1000g+ is valid. 0-500g, 600g-1000g is invalid (gap at 500-600g). The API enforces this to prevent edge case orders with undefined costs.
Carrier changed rates on June 1st? Create a new period. May orders use May rates, June orders use June rates. When you add a new rate, the old open-ended period auto-closes — no manual date bookkeeping.
When an order has apparel (light profile) and furniture (heavy profile), choose Sum to add both costs, or Max to use the highest. Prevents undercharging on mixed orders.
Most apps assume Shopify Payments at 2.9% + 30¢ flat. That's rarely right. Stripe is 2.9% + 30¢, but PayPal is 2.9% + 30¢ with sometimes a higher percentage for cross-border, and many gateways charge tax ON the fee itself. A $100 order in India on Razorpay is 2% fee + 18% tax on the fee. NetNet's 3-part formula captures the exact cost structure of every payment method you use.
The three-part formula that most merchant tools ignore. A $100 Stripe transaction costs 2.9% ($2.90) + $0.30 flat = $3.20. But in some jurisdictions, tax applies to the fee itself. NetNet handles all three independently.
Cross-border transactions cost more. If a Canadian customer pays in CAD on a USD store, the processor charges currency conversion fees and international card surcharges. NetNet tracks these as separate percentages from your base rate.
Match gateway names via case-insensitive substring. A single rule 'stripe' matches 'Stripe Inc', 'Stripe Direct', 'stripe_connect' — no regex needed. Use comma-separated keywords if a gateway goes by multiple names.
When Stripe raised rates from 2.8% to 2.9%, add a new period. April orders keep old rates, May onwards use new rates. No retroactive changes, no guesswork.
Cash on Delivery is fundamentally different — the processor charges a flat fee per order, not a percentage. NetNet auto-detects COD via keywords and applies separate fee logic to COD vs card orders.
Configure your own rates. If missing, use Shopify's extracted transaction fee from order metadata. If still missing, use plan-based estimates (2% Basic, 1% Shopify, 0.5% Advanced, 0% Plus). You control the priority.
Your supplier charges you $5 per order for packaging, your warehouse charges $1.50 per unit for pick-and-pack, and you charge customers a 2% convenience fee. These are separate systems because they scale differently — one applies once, the other multiplies by quantity.
Applied once per order, regardless of order size. Configure as a flat amount or percentage of revenue. Can scope to COD orders only if you handle those differently.
Applied per unit in the order. Flat fees multiply by quantity, percentage fees calculate on each line item's subtotal. Handles bundled items correctly.
When a customer disputes a charge, the payment processor charges you a chargeback fee. Stripe charges $15, Razorpay charges different amounts for domestic vs international disputes, and each currency may have a different default. NetNet tracks disputes automatically and applies the right per-currency fee, with the option to waive fees on disputes you win.
USD/CAD: $15, GBP: £10, AUD: $25, JPY: ¥1,300, and 12+ more currencies pre-configured with Shopify Payments standard rates. The right fee applies based on customer currency.
Your processor charges differently? Override the default. Custom per-currency amounts stored in store settings. Add new currencies anytime.
If you enable 'waive fee on win', disputes with status WON or CHARGE_REFUNDED don't hit your profit. You only pay when the dispute is actually lost.
An order can have multiple disputes. Each is tracked independently — not a flat one-fee-per-order model. A customer disputes twice, you pay twice.
Your P&L isn't just per-order costs. It's also rent, payroll, tools, fulfillment infrastructure, and marketing. These are fixed monthly costs that should be spread evenly across your profit calculation. If you had $30K in rent + salaries this month, that's about $1K per day. When you view a 7-day P&L slice, it should automatically allocate 7K of those costs. NetNet's custom cost system handles this by letting you define monthly budgets and automatically prorating them daily.
Rent, utilities, insurance
Shopify subscription, tools, SaaS
Influencer spend, content, PR
Warehouse ops, 3PL fees, packing
Payroll, contractor costs
Returns processing, photography
Supplier raised prices on June 1st? Gateway changed rates mid-month? Shipping carrier updated zones? In spreadsheet systems, this forces retroactive changes that corrupt your history. NetNet's temporal periods solve this: add a new cost period, old orders keep old costs, new orders use new costs. Your P&L for any past date range stays frozen-accurate forever.
When you create a new period, the previous open-ended period auto-closes automatically. No manual date management, no accidental overlaps.
Viewing January orders? They use January's costs, not today's. Your P&L for any past period is frozen accurate and never changes — even when costs go up.
Leave the end date empty for 'until further notice'. When you add a new period, the open one closes automatically. No date hunting.
See how gateway fees, shipping, COGS, and overhead stack up across your orders. Use these charts to identify cost optimization opportunities.
Using a flat 2.9% estimate understates fees by $1,240/mo on international and AMEX transactions.
Free plan. No credit card. Install in 60 seconds.
Install Free on Shopify