# What is a cost floor? > A cost floor is the lowest defensible figure for a call, recorded when part of the input is absent and flagged rather than estimated into completeness. URL: https://getculpa.com/what-is-cost-floor Last reviewed: 2026-08-02 ## Answer A cost floor is the lowest defensible figure for a call, recorded when something needed to price it fully never arrived, and flagged as incomplete rather than estimated into looking finished. Culpa, a local-first LLM cost, margin, and forecast ledger, counts a floor as a floor, so a total you can act on stays separate from a total that quietly filled its own gaps. ## Why this happens Every cost tool meets calls it can't fully price, and the choice it makes there decides whether its totals mean anything. There are two ways to arrive at one. The token counts can be incomplete, which happens when a response carries an input count and no output count or neither. Or the counts can be perfect and no rate exists for the model that served the call. Either way the honest move is the same: record what's known, price what can be priced, and mark the row so the shortfall is visible instead of averaged away. ## What this usually looks like - Your totals reconcile against the invoice for some models and never for others. - Nobody has separated rows that were fully priced from rows that weren't. - A cost figure has never once looked incomplete, which is unlikely rather than reassuring. - A model appeared in production before any rate existed for it and nothing flagged that. ## Common mistakes - Filling a missing token count with an average. Why it hurts: The total then looks complete and nothing marks which rows were invented, so nobody rechecks them. Do instead: Record the gap. A number that admits what it missed is the only one you can improve later. - Reading a headline total without checking how much of it was floored. Why it hurts: A floor sits below the truth by construction, so a mixed total understates by an unknown amount. Do instead: Split every total into fully-priced and floored before quoting it to anyone. - Discarding calls that can't be priced. Why it hurts: The token counts go with them, so the spend can never be recovered once a rate exists. Do instead: Keep the call and its counts. Adding the rate later reprices history rather than rebuilding it. ## Self-check - Split last month into fully-priced rows and floored rows, and count both. - For the floored rows, check which of the two causes applies: missing counts or missing rate. - For missing counts, look at whether those calls streamed. - For missing rates, list the model ids and check each against your price book. - Quote the fully-priced total and the floored count together, never the sum alone. ## A month with two kinds of gap in it (illustrative) 5 million calls on GPT-5.4 at real rates of $0.0025 per 1k input and $0.015 output, each sending 3,000 input tokens and returning 500 where the counts arrived. The mix of gaps below is modelled. Fully priced, 4.2M calls: 4,200,000 x $0.015 = $63,000 500,000 streamed calls arrived with no token counts, so each prices to $0.00 and flags 300,000 calls ran on a model with no rate, so each prices to $0.00 and flags Reported total = $63,000, with 800,000 rows carrying a floor 16% of calls contribute nothing to a total that will be read as if it were the whole bill The $63,000 is correct and it isn't the answer. The number that changes what you do next is the 800,000 flagged rows, because that's the part of the month nobody has priced yet. ## Cost figures Every figure carries its confidence and its source. No figure on this site is provider-reported. - $63,000 — modelled monthly spend from fully priced calls, excluding every floored row [calculated] Source: 4,200,000 calls x $0.015, using real GPT-5.4 rates per 1k from the price book, effective 2026-07-02. Call volume and the mix of gaps are modelled. - 16% — modelled share of calls contributing nothing to a total that reads as complete [calculated] Source: 800,000 floored rows divided by 5,000,000 calls, from the teardown arithmetic. ## FAQ Q: What makes a call's cost incomplete? A: Either the token counts didn't fully arrive, which needs both an input and an output count to be considered complete, or no rate exists for the model that served it. The first happens most often on streamed responses and the second on models newer than your price data. Q: Why record a zero instead of estimating? A: Because a visible zero gets questioned and a plausible estimate gets trusted. An estimate also destroys the evidence, since nothing afterwards marks which rows were invented, and the total looks finished while being wrong by an unknown amount. Q: Can a floored call be priced later? A: Yes, as long as the token counts were kept. Adding the missing rate reprices the stored history rather than requiring the traffic to be captured again, which is the practical reason to record and flag rather than to drop. ## Sources - OpenAI API pricing: https://developers.openai.com/api/docs/pricing Run the free Cost Leak Scan: https://app.getculpa.com/scan?source=pseo&slug=what-is-cost-floor&cluster=metric Machine-readable index of every guide: https://getculpa.com/api/pages Human-readable index of every guide: https://getculpa.com/guides Site overview: https://app.getculpa.com/llms.txt Privacy: Culpa runs on your infrastructure. Your prompts and responses never leave it. Culpa counts calls to run your plan, and it fails open, so if it ever breaks your app keeps running.