# Formulas

> The exact math Tillage uses for line items, quote and invoice totals, discounts, tax, platform fees and fee gross-up.

- URL: https://tillage.ai/docs/reference/formulas
- Section: [Reference](https://tillage.ai/docs/reference)

This page sets out every calculation Tillage makes on prices and fees, with worked examples. Use it to check a total, explain a number to a client, or rebuild Tillage's math in a spreadsheet.

Money is rounded to the cent at the end of each fee step. Line items are calculated at full precision and rounded for display.

## Line items

Each line item is priced as quantity × rate, then raised by its variance and the quote's profit margin.

```
Base cost        = Quantity × Unit price
With variance    = Base cost × (1 + Variance% ÷ 100)
Line total       = With variance × (1 + Profit margin% ÷ 100)
```

Or in one line:

```
Line total = Quantity × Unit price × (1 + Variance%) × (1 + Profit margin%)
```

- **Variance** is set per line item. It's a buffer for uncertainty in the estimate.
- **Profit margin** is set once for the whole quote and applies to every line.

Profit margin here is a markup on cost: a 20% margin multiplies the price by 1.20. It isn't margin as a share of the final price. A 20% markup gives a gross margin of about 16.7%.

### Example

40 hours at $150 an hour, with 15% variance and a 20% profit margin:

| Step | Calculation | Result |
|---|---|---|
| Base cost | 40 × $150 | $6,000.00 |
| With variance | $6,000 × 1.15 | $6,900.00 |
| Line total | $6,900 × 1.20 | $8,280.00 |

Your client sees the line total. Variance and margin are built in and never shown as separate amounts.

Profit margin is limited to 0–100%. Variance and margin are applied when you create a quote or an invoice; once an invoice is saved, editing it keeps the line totals as they are.

## Quote and invoice totals

```
Subtotal        = Σ Line totals
After discount  = Subtotal − Discount
Tax             = After discount × Tax rate ÷ 100
Total           = After discount + Tax
```

The summary shows the steps as **Base Subtotal** (Σ base cost), **With Variance**, **With Profit Margin** (the subtotal above), then any discount and tax.

### Discounts

| Type | Discount amount |
|---|---|
| Percentage | Subtotal × Discount% ÷ 100 |
| Fixed | The fixed amount, never more than the subtotal |

Discounts apply after profit margin, so they come out of the final price.

### Tax

Tax is a percentage of the total after discount. It's shown only if your team has turned on the tax field, under the label from your tax settings.

### Example

Two line items totaling $8,280.00 and $2,070.00, with a 10% discount and 8% tax:

| Step | Calculation | Result |
|---|---|---|
| Subtotal | $8,280 + $2,070 | $10,350.00 |
| Discount | $10,350 × 0.10 | −$1,035.00 |
| After discount | | $9,315.00 |
| Tax | $9,315 × 0.08 | $745.20 |
| Total | | $10,060.20 |

## Platform fee

```
Platform fee = min(Invoice total × 1%, $50.00)
```

It's calculated on the invoice total, not on any fees added at checkout.

| Invoice total | Platform fee |
|---|---|
| $500 | $5.00 |
| $2,500 | $25.00 |
| $5,000 | $50.00 |
| $12,000 | $50.00 (capped) |

## Stripe processing fee

Tillage estimates Stripe's fee with Stripe's standard US rates:

```
Card fee = Charge × 2.9% + $0.30
ACH fee  = min(Charge × 0.8%, $5.00)
```

Stripe charges its fee on the full amount the client pays. Your actual Stripe fee can differ, for example on international cards or outside the US.

## Fee gross-up

When your client pays fees, they're added in this order:

```
Subtotal = Invoice total + Platform fee (if the client pays it)
Charge   = Subtotal + Processing pass-through (if the client pays it)
```

### Card

To leave the subtotal intact after Stripe's fee, the pass-through solves for the fee on the final charge:

```
Processing pass-through = (Subtotal × 0.029 + $0.30) ÷ (1 − 0.029)
```

Equivalently, `Charge = (Subtotal + $0.30) ÷ 0.971`.

### Bank transfer (ACH)

```
Uncapped pass-through = Subtotal × 0.008 ÷ (1 − 0.008)
```

If Stripe's fee on `Subtotal + Uncapped pass-through` reaches the $5.00 cap, the pass-through is $5.00. Otherwise it's the uncapped amount. In practice, the cap applies on subtotals above roughly $620.

### What you receive

```
You receive = Charge − Platform fee − Stripe fee
```

When the client pays both fees, this equals the invoice total.

### Example

A $2,500 invoice paid by card, client pays both fees:

| Step | Calculation | Result |
|---|---|---|
| Platform fee | min($2,500 × 1%, $50) | $25.00 |
| Subtotal | $2,500 + $25 | $2,525.00 |
| Processing pass-through | ($2,525 × 0.029 + $0.30) ÷ 0.971 | $75.72 |
| Charge | $2,525 + $75.72 | $2,600.72 |
| Stripe fee | $2,600.72 × 0.029 + $0.30 | $75.72 |
| You receive | $2,600.72 − $25 − $75.72 | $2,500.00 |

The same invoice paid by ACH: the uncapped pass-through would be $20.36, but Stripe's fee would hit the $5.00 cap, so the pass-through is $5.00 and the client pays $2,530.00.

More worked examples are in [Processing fees](https://tillage.ai/docs/invoices/processing-fees#worked-examples).

## Recurring revenue

```
MRR = Σ amounts of active monthly schedules
ARR = Σ (amount × payments per year) for every active schedule
```

Payments per year: weekly 52, monthly 12, quarterly 4, biannual 2, annually 1. See [Dashboard and analytics](https://tillage.ai/docs/reports/dashboard-and-analytics#recurring-revenue).

## Related

- [Line items and pricing](https://tillage.ai/docs/quotes/line-items-and-pricing)
- [Processing fees](https://tillage.ai/docs/invoices/processing-fees)
- [Pricing and fees](https://tillage.ai/docs/reference/pricing-and-fees)

---

All docs: https://tillage.ai/docs.md  
Site index for AI assistants: https://tillage.ai/llms.txt  
Sign up free: https://app.tillage.ai/signup
