---
title: "Discounts and promotion codes"
description: "The multi Project discount, promotion codes, and how the two combine on one subscription."
updated: "2026-08-28"
verifiedAgainst:
  - apps/web/lib/promotion-code.ts
  - packages/shared/src/billing-access.ts
  - packages/shared/src/index.ts
---

Two kinds of discount can apply, and they stack in a defined order.

## The multi Project discount

Applied automatically, worked out per Project, and taken off that Project's own
subscription item rather than off the subscription as a whole.

What decides a Project's discount is its position in the workspace, not how many
Projects the workspace runs:

| Position | Discount on that Project's plan price |
| --- | --- |
| 1 | None |
| 2 to 4 | 10 percent |
| 5 to 10 | 15 percent |
| 11 to 20 | 20 percent |

**Adding a Project does not re-price the Projects you already run.** The new one
joins at the next free position and takes that position's band; every existing
Project keeps the band its own position already earned.

Positions are recomputed oldest first, and nothing is grandfathered. If an
earlier Project stops occupying a position, the Projects behind it move up and
their discounts change accordingly. Only active, priced, Stripe-billed Projects
occupy a position at all: archived Projects, Projects still choosing a plan,
unpriced Projects and out-of-band Agency Projects neither hold a position nor
deepen anyone else's discount. A Free Project is unpriced, so it is not one of
them.

It is a percentage on each Project's own plan price, so a workspace with mixed
plans gets the right answer for each, and each discount line is rounded on its
own because that is what the invoice does.

## Promotion codes

A code you enter. There are two places one can land, and they are different
money:

<PropertyList>
  <Property name="On the subscription">
    Applies to the whole subscription, after per Project discounts. This is the
    one discount slot Blogged never writes to itself, which is why a promotion
    code can live there without competing with the positional bands.
  </Property>
  <Property name="On one Project">
    Taken off that Project's line first, before the subscription level discount.
  </Property>
</PropertyList>

The billing page states which case applies to you in words rather than leaving
you to work it out from a total.

## They combine

A promotion code and the multi Project discount are not exclusive. The code is
deducted on top of the per Project discounts.

## Where the numbers come from

Every figure shown is the one Stripe computed. Blogged does not recompute
discounts client side, because a second answer can disagree with the charge, and
the charge is what actually happens.
