How profit is calculated
This page walks through exactly how ProTally turns a completed Stripe payment into the profit numbers you see across the app.
The calculation, step by step
When a Stripe payment completes, ProTally:
- Records the revenue from the payment, matched to the product and price involved.
- Deducts the Stripe processing fee for that payment.
- Applies the cost of goods — the cost that was active for that price on the payment date. For tiered prices, the cost is calculated across the relevant tiers.
- Produces net profit — revenue minus fees minus cost — and the associated margin.
These per-sale results roll up into the Account, Products and Product overviews.
A simple example
A customer buys a product with a per-unit price of £40, and you've configured a unit cost of £15:
| Line | Amount |
|---|---|
| Revenue | £40.00 |
| Stripe fee | −£0.78 |
| Cost of goods | −£15.00 |
| Net profit | £24.22 |
| Margin | ~61% |
(The Stripe fee shown is illustrative — ProTally uses the actual fee Stripe charged on the payment.)
Stripe fees and how they're attributed
Stripe fees are always included in the overall profit calculation. The Analytics settings let you control two things:
- Fee proration — when on, fees are distributed across products in proportion to their revenue share, and shown per product in the Products Overview and Product Overview. When off, fees are factored into totals only.
- Fees position — whether fees are classified as a cost of revenue or an operating expense. This affects how they appear in a P&L view but not the net profit figure.
Costs are point-in-time
Because ProTally applies the cost that was active on the payment date, updating a cost today doesn't retroactively change yesterday's profit. This keeps historical reporting trustworthy. See Cost history for how versioning works.
What's tracked today
ProTally calculates profit from completed Stripe payments, including those taken via Stripe Checkout. Running a data sync brings up to 12 months of historical payments into the calculations so your trends are complete.
Payment intents without a product are not captured
If you create PaymentIntents directly — without associating them with a Stripe product — ProTally cannot link those payments to a product and they will not appear in any overview. If you notice revenue missing from your reports, this is the most common cause. Contact support and we can help you review your setup.
On the roadmap
We're continually expanding ProTally's coverage. Per-invoice and per-customer profit breakdowns are on the roadmap — get in touch if these would help your business.
Where to go next
- Configuring product costs — make sure every price has a cost so these calculations are accurate.
- Account Overview — see the rolled-up result.