How to calculate markup
Markup % = (selling price − cost) ÷ cost × 100. To work forward from a chosen markup, use selling price = cost × (1 + markup % ÷ 100).
A $100 cost with a 20% markup produces a $120 selling price and $20 gross profit. These formulas work the same way in USD, CAD, GBP, EUR, AUD, or any other currency because no exchange rate is involved.
Markup vs margin: they are not the same percentage
Markup divides profit by cost. Gross margin divides profit by selling price. On the same $100-to-$120 example, the 20% markup is a 16.67% gross margin.
| Markup | Equivalent gross margin | Price on $100 cost |
|---|---|---|
| 10% | 9.09% | $110.00 |
| 20% | 16.67% | $120.00 |
| 25% | 20.00% | $125.00 |
| 50% | 33.33% | $150.00 |
| 100% | 50.00% | $200.00 |
Marking up reimbursable client expenses
At-cost passthrough bills the client exactly what you paid. Cost-plus billing adds an agreed markup. Your commercial agreement determines whether that markup is appropriate and how it should be disclosed; this calculator does not recommend a rate.
Keep markup separate from sales tax, GST, HST, or VAT. Adding markup does not determine whether the underlying cost is deductible. Read the agency passthrough billing guide for contract structure and industry-specific context. Estimates — confirm with your tax professional.
Apply the markup to captured expenses in ExpenseBot
ExpenseBot is a receipt and expense tracker that turns a reviewed client expense report into a private Google Doc invoice. It is not a full invoicing suite and does not send the invoice automatically.
- Capture or upload the receipts and assign them to the client.
- Create and review the exact reimbursable expense report you want to bill.
- Choose Bill Client, review the expense subtotal, and enter the markup percentage.
- Confirm the invoice details, then generate the private document.
ExpenseBot calculates markup as the included expense subtotal multiplied by the markup percentage, rounded to cents. Manually added fee and service lines keep their exact prices and are not included in the markup base. Use profit by client to compare tracked revenue and costs after billing.
Frequently asked questions
How do I calculate a 20% markup?
Multiply cost by 1.20. A $100 cost becomes a $120 selling price, leaving $20 gross profit.
Is a 20% markup the same as a 20% margin?
No. A 20% markup on $100 produces a $120 selling price. The $20 profit is 16.67% of the selling price, so the gross margin is 16.67%.
How do I calculate markup when I know cost and selling price?
Subtract cost from selling price, divide the result by cost, and multiply by 100. For a $100 cost and $120 price, the markup is 20%.
Can I add a markup to expenses I rebill to a client?
You can when your agreement permits it. State whether expenses are passed through at cost or billed cost-plus, and keep markup separate from sales tax, GST, HST, or VAT. Estimates — confirm with your tax professional.
Does ExpenseBot apply markup to my own service fee lines?
No. ExpenseBot's Bill Client flow applies the selected markup percentage to included expense rows only. Fee and service lines keep the exact prices you entered.
Turn receipt totals into client-ready invoices
Capture the receipts, group them by client, review the exact report, and choose the markup before generating the invoice document.