Calculate net profit, ROI, and margins after Amazon fees
Profit Breakdown
Monthly Net Profit$0.00
Net Margin0%
Unit Profit$0.00
Total ROI0%
Total Revenue:
Amazon Fees (Referral + FBA):
Total Expenses (COGS + PPC + Shipping):
Understanding Amazon FBA Profitability
Selling on Amazon FBA (Fulfillment by Amazon) is a powerful way to scale an e-commerce business, but the fee structure can be complex. To ensure your private label or wholesale business is sustainable, you must calculate your "True Profit" after all hidden costs.
Key Components of the FBA Calculation
Referral Fees: This is Amazon's "commission" for selling on their platform. For most categories, this is 15% of the total sale price.
FBA Fulfillment Fees: This covers picking, packing, and shipping your product to the customer. This depends on the weight and dimensions of your product.
COGS (Cost of Goods Sold): The price you pay your manufacturer per unit, including any packaging costs.
Landing Costs: The shipping costs to get your products from your supplier (often in China) to an Amazon fulfillment center.
FBA Profit Calculation Example
If you sell a yoga mat for $40.00:
Referral Fee (15%): $6.00
FBA Fee: $7.50
COGS: $10.00
Shipping: $2.00
Net Profit per Unit: $40 – $6 – $7.50 – $10 – $2 = $14.50
Profit Margin: 36.25%
The Importance of PPC Spend
Many sellers forget to include Pay-Per-Click (PPC) advertising costs. If you spend $500 a month on ads to sell 100 units, that adds an extra $5.00 cost per unit. This can often be the difference between a profitable product and a losing one. Always factor in your ACOS (Advertising Cost of Sales) when determining long-term viability.
function calculateFBAProfit() {
var salePrice = parseFloat(document.getElementById('salePrice').value) || 0;
var unitsSold = parseFloat(document.getElementById('unitsSold').value) || 0;
var cogs = parseFloat(document.getElementById('cogs').value) || 0;
var shippingCost = parseFloat(document.getElementById('shippingCost').value) || 0;
var referralRate = parseFloat(document.getElementById('referralFee').value) || 0;
var fbaFee = parseFloat(document.getElementById('fbaFee').value) || 0;
var ppcSpend = parseFloat(document.getElementById('ppcSpend').value) || 0;
var miscCosts = parseFloat(document.getElementById('miscCosts').value) || 0;
// Revenue Calculations
var totalRevenue = salePrice * unitsSold;
// Amazon Fee Calculations
var referralFeeTotal = (referralRate / 100) * salePrice;
var totalFeesPerUnit = referralFeeTotal + fbaFee;
var totalFeesMonthly = totalFeesPerUnit * unitsSold;
// Cost Calculations
var totalCogsMonthly = cogs * unitsSold;
var totalShippingMonthly = shippingCost * unitsSold;
var totalExpensesMonthly = totalCogsMonthly + totalShippingMonthly + ppcSpend + miscCosts;
// Profit Calculations
var netProfitMonthly = totalRevenue – totalFeesMonthly – totalExpensesMonthly;
var unitProfit = unitsSold > 0 ? netProfitMonthly / unitsSold : 0;
var netMargin = totalRevenue > 0 ? (netProfitMonthly / totalRevenue) * 100 : 0;
// ROI Calculation (Profit / Total Investment)
var totalInvestment = totalCogsMonthly + totalShippingMonthly + ppcSpend + miscCosts;
var roi = totalInvestment > 0 ? (netProfitMonthly / totalInvestment) * 100 : 0;
// Update Display
document.getElementById('resultSection').style.display = 'block';
document.getElementById('resNetProfit').innerHTML = '$' + netProfitMonthly.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
document.getElementById('resMargin').innerHTML = netMargin.toFixed(2) + '%';
document.getElementById('resUnitProfit').innerHTML = '$' + unitProfit.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
document.getElementById('resROI').innerHTML = roi.toFixed(2) + '%';
document.getElementById('resRevenue').innerHTML = '$' + totalRevenue.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
document.getElementById('resTotalFees').innerHTML = '$' + totalFeesMonthly.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
document.getElementById('resTotalExpenses').innerHTML = '$' + totalExpensesMonthly.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
// Scroll slightly to results
document.getElementById('resultSection').scrollIntoView({ behavior: 'smooth', block: 'nearest' });
}