Plans and billing
What each plan includes, how the Team trial works, how to subscribe, change or cancel, and what happens to seats and settings when your plan changes.
Plans#
| Free | Starter | Team | |
|---|---|---|---|
| Price | $0 | $49/month, flat | $149/month, flat |
| Dashboard seats | 5 | 5 | 20 |
| Pull request (PR) comment with per-run cost, structural risk flags | ✓ | ✓ | ✓ |
Merge blocking (org-wide dashboard threshold, or each repository's .diffcost.yml) |
— | ✓ | ✓ |
| Slack alerts | — | ✓ | ✓ |
| Dashboard comparison history (needs an API key) | 30 days | 12 months | Unlimited |
| Cost trends chart | — | ✓ | ✓ |
| Per-repository thresholds in the dashboard | — | — | ✓ |
| Cost attribution per PR author | — | — | ✓ |
- Every plan covers unlimited repositories.
- The Free plan needs no account and no API key: the Action posts PR comments on its own. With an API key, the dashboard shows the last 30 days on Free and the dashboard's pricing settings apply. Once the DiffCost GitHub App is installed, its
diffcost/cost-checkstatus always passes; without the App no status is posted, and each PR comment says so. - Seats count the people who use the dashboard; CI runs never need a seat.
- Enterprise (more than 20 seats, and an audit log) is available on request: email support@diffcost.dev.
The Team trial#
Each organization gets a 14-day Team trial: Team features and 20 seats, no credit card.
- It starts when the first GitHub organization owner signs in at diffcost.dev, because only owners can set DiffCost up (create API keys). If another member signs in first, the organization stays on Free, and the dashboard asks an owner to sign in.
- Plan the start. The trial runs once per organization, and an owner's first sign-in starts it. Set the Action up on Free first (it needs no account), and have an owner sign in when you're ready to create the API key and set a threshold.
- During the trial, the sidebar and the Billing page show the days left, and the PR comment says how many days remain. DiffCost sends no email before the trial ends.
- Subscribing during the trial ends the trial at once and starts the paid plan; unused trial days aren't carried over.
- When the trial ends without a subscription, the organization moves to Free. Nothing is deleted:
- PR comments continue, with a line saying the trial has ended;
- merge blocking stops, and the
diffcost/cost-checkstatus reports success; - Slack alerts stop;
- your thresholds are kept, and apply again when you subscribe;
- the seat limit drops from 20 to 5 (see Seats).
Subscribe#
Admins subscribe from Billing in the dashboard:
- Click Subscribe to Starter ($49/mo) or Subscribe to Team ($149/mo) on a plan card. The trial and Free sections at the top of the page also offer Upgrade to Starter ($49/mo) and Team ($149/mo).
- Pay in Stripe Checkout.
- You're returned to the dashboard. The plan switches over as soon as Stripe confirms the payment, usually within a minute; refresh if it still shows the previous plan.
If the organization has more members than the plan's seats, the Billing page warns you before you buy (see Seats).
Change or cancel a Stripe subscription#
Admins open the Stripe customer portal with Manage subscription in Stripe on the Billing page (or Change plan in Stripe on a plan card). There you can update the payment method, switch between Starter and Team, or cancel. The dashboard follows Stripe's changes automatically.
- Cancelled: when Stripe reports the subscription as cancelled, the organization moves to Free. From then on, no threshold is evaluated and every
diffcost/cost-checkstatus passes. - Refunds: an admin can ask for a full refund of any payment within 30 days of the charge by emailing support@diffcost.dev and naming the organization (terms of service). A refund doesn't cancel the subscription; cancel it in the portal too.
- A payment failed: the plan stays while Stripe retries. If the subscription becomes unpaid or paused, the organization moves to Free and the Billing page says "Your Stripe subscription isn't active". Update the payment method (or resume the subscription) in the Stripe portal with Update payment in Stripe, and the plan comes back. Checkout isn't available meanwhile: fix the existing subscription in the portal, or cancel it there first.
DiffCost sends no email about payments or plan changes; check the Billing page.
Google Cloud Marketplace#
You can also buy DiffCost through Google Cloud Marketplace and pay on your Google Cloud bill:
- Subscribe from the DiffCost listing in Google Cloud Marketplace. Google sends you to DiffCost.
- Sign in with GitHub as an admin of the organization to link. The page shows which organization the Marketplace account will be linked to.
- Click Link to {organization}. The dashboard confirms "Your Google Cloud Marketplace subscription is linked to this organization."
- The plan applies when Google activates the subscription. If the page says Google didn't accept the approval yet, click the button again a minute later.
Change or cancel a Marketplace subscription in the Google Cloud console. An organization pays either through Stripe or through Marketplace, not both:
- to move from Stripe to Marketplace, cancel the Stripe subscription first;
- to move from Marketplace to Stripe, cancel the Marketplace subscription first.
What changes when your plan changes#
Downgrading deletes nothing: thresholds, API keys and history are kept, and features come back when you upgrade.
Team → Starter:
- per-repository dashboard thresholds stop applying (they show "Inactive: needs Team"). The org-wide threshold (scope
*) applies instead. If there is none, each repository's.diffcost.ymlapplies; - Cost by author is replaced by an upgrade prompt;
- seats drop from 20 to 5, and the dashboard shows 12 months of history.
Starter or Team → Free (including a trial that ends):
- no thresholds are evaluated (dashboard or
.diffcost.yml), and the commit status reports success: "Merge blocking is off on the Free plan"; - Slack alerts stop, and the trends chart is hidden;
- new thresholds can't be created; existing ones are kept;
- the dashboard shows 30 days of history, and seats drop to 5;
- API keys keep working, so PR comments and dashboard history continue.
Seats#
- Seats count the people who have signed in to the dashboard for your organization. API keys and CI runs don't use seats.
- Seats go to members in the order they joined. Admins count toward the limit, and always keep access, even beyond it. For example, on Starter (5 seats), if 3 owners joined first, the next 2 members to join get seats.
- When an organization has more members than its plan's seats (for example 8 members after the trial lapses to Free, or after buying Starter), the members beyond the limit see an "over the seat limit" page until the organization upgrades or an admin removes members on the Team page. PR comments and merge checks keep working for everyone meanwhile.
- New members can't join while the organization is full. GitHub organization owners can always join, because they're admins.
- Removing a member on the Team page frees their seat at once. Leaving the GitHub organization doesn't: an admin still has to remove them. See Members and seats.
Who can manage billing#
Only DiffCost admins (your GitHub organization owners) can subscribe, open the Stripe portal or link Marketplace. Members see "Ask an org admin to upgrade."
For other billing questions, email support@diffcost.dev.
Something missing or wrong? Email support@diffcost.dev.