What AI really costs a company: 79% of what we paid Gemini was invisible thinking

1,955 thinking tokens for every 505 useful ones: that is how we paid for AI. Our real cloud bill month by month, the causes and 5 leaks to check tomorrow.

Carlos Betancur Gálvez

By Carlos Betancur Gálvez

AI, digital marketing and medical marketing consultant · btodigital

In one of our applications, for every 505-token useful answer, Gemini billed 1,955 thinking tokens nobody ever saw: 79% of the output tokens we were paying for. One line of configuration cut the cost of that call by 82% with no loss of quality. On the invoice, the application went from USD 93.83 in August to USD 6.57 in September.

I am publishing that figure, and the real month-by-month cloud bill of btodigital, the agency I founded in Medellín, Colombia, because almost everything written about AI costs talks about price per million tokens. Hardly anyone shows what happens once you wire it into real products: the bill does not grow with what you use, it grows with what you cannot see.

This piece is for you if you are a manager or technical lead and your company pays for AI in the cloud, even a little. You get our numbers, the verified cause of every jump, and five leaks you can check tomorrow, with instructions on how to spot them.

How much do we really spend on the cloud?

This is the agency’s Google Cloud billing account, with 22 projects: our own products, internal tools and builds for clients. The figures come from the billing console, not from estimates.

Month (2026)Spend (USD)Biggest driver
March163.47
April152.08
May396.90
June292.51
July826.96A software product hosted in the account, running on Gemini 3 Pro: USD 540
August351.74Invisible thinking in one application and always-on servers
September501.58AI video generation for a client (≈ USD 138.6) and a lost cache

Two quick readings. July was mostly one product: it ran on Gemini 3 Pro, the most expensive model in the family, and spent USD 540; once it was brought under control, its spend fell 97%, to USD 14.87 the following month. And September without the videos would have landed close to August: 501.58 minus 138.6 is about 363 dollars.

In a separate account, the database behind the agency’s website went from roughly COP 6,900 in July to COP 23,900 in August and COP 98,100 in September. Small money in absolute terms, but fourteen times more in two months. I explain why below.

Why does invisible thinking cost so much?

Since version 2.5, Gemini reasons before answering, and it does so by default. Those reasoning tokens are billed as output tokens, the expensive kind (USD 2.50 per million on Gemini 2.5 Flash when we measured it). If your code calls the model without configuring reasoning, that cost never appears in the response. It only appears on the invoice.

We measured it with the application’s real prompt: two back-to-back calls to Vertex AI, reading the field that reports thinking tokens.

ConfigurationUseful outputThinkingBilled tokens
Default5051,9552,460
Reasoning off (thinkingBudget: 0)4550455

−82% cost on that call, and quality held. The task was generating text under strict character limits (50 to 60 and 140 to 160), and it met them with correct Spanish accents.

There is an aggravating factor worth knowing: the prompt said something like “count each character carefully before responding”. That kind of instruction triggers reasoning. For formatting or structured-generation tasks, more thinking does not improve the output; it only makes it more expensive.

And it is not only about money. Reasoning also eats the output limit: we have seen JSON arrive truncated or empty because the model spent its budget thinking. I covered it in detail in the piece on the Gemini 2.5 retirement, along with what changes in Gemini 3, where control moves to levels and there is no exact zero.

What else was going down the drain?

A blog re-read every five minutes. The agency website kept about 482 documents in memory, including the full blog (around 25 MB), and re-read them from the database every five minutes on every server instance. That alone was about 7.2 GB a day of database traffic. Now each instance checks a version marker every five minutes and only reloads when something changed, with a full fallback reload every hour.

A token cache lost by putting the time in the prompt. Our WhatsApp agent product processed 163.6 million input tokens in September with 0% cache hits, and paid USD 49.09 for them. The cause: the prompt included the current time (hour and minute) about 470 tokens from the start. Gemini’s implicit cache reuses identical prompt openings, with a 1,024-token minimum; if the time changes every minute, the opening never repeats. Another project that only included the date reached about 47%. We moved the date, time and contact name to the end of the prompt. Across eight consecutive calls per brand we measured 20%, 36% and 45% cached tokens: better than zero, but implicit caching is best-effort and does not always hit.

Servers running for nobody. In July, a Cloud Run service configured for one to three instances was running six, fixed, around the clock. Five old revisions carried a tag, and each inherited the one-instance minimum even with no traffic. Around 80% of that compute was waste. In August, eight services with a minimum of one always-on instance added up to USD 48.33 in 23 days; one of them received not a single request in that time.

A database bill pushed up by a sync job. A process that syncs documents every hour took 6 to 10 minutes per run, and on 1 October it timed out on 12 of 24 runs. It added 2.5 to 3 GB a day from mid-September. On top of that, the community module rewrote images without checking whether they had changed, and the database charges the same for a write that changes nothing. The sync now has a time cap, reads only the fields it needs (240 KB instead of 3.1 MB), and images are written only when they change.

AI video. About USD 138.6 in September and another 39 on 1 October, for a project of AI-generated videos. This is not a leak: it is client work. But my notes said around 133 dollars and the real cost was higher, because the API key was shared with other projects and you could not see who was spending what.

How much did we save?

FixBeforeAfterStatus
Reasoning switched off in one applicationUSD 93.83 (Aug)USD 6.57 (Sep)Measured on invoice
Product on Gemini 3 ProUSD 540 (Jul)USD 14.87 (Aug)Measured on invoice
WhatsApp agent cache0% cached20 to 45%Measured in tests; ~USD 13/month estimated
Website database (3 fixes on 2 Oct)COP 98,100 (Sep)PendingMeasured from 5 Oct
Accumulated container images30-day policy14-day policy~USD 8 to 9/month estimated

The database fixes shipped on 2 October and measurement starts on 5 October, once there are full days without the old behaviour. As I write this I do not have the result and I am not going to guess it: the expectation is that the account halves, but it is only an expectation. I will update this article with the full October figure.

What we learned

Savings estimates tend to be optimistic. We expected the WhatsApp cache fix to save 20 to 35 dollars a month. Measured, it is about 13. And the video cost was higher than what I had written down. If you justify a fix with a saving, measure it afterwards; the estimate is almost always generous.

An alert that fires every month stops being an alert. The account budget had been out of date since May, so the 150% alert became routine and caught nothing in time.

Measuring badly is easy. Google Cloud’s command-line tool does not return dollars: the reliable source is the billing console grouped by SKU. And a metric that looks obvious, instance count, inflates the result roughly a hundredfold if you average it, because it does not report the moments when it is zero. For Cloud Run costs, the right metric is allocated CPU and memory time.

Before optimising, check where the calls come from. On 29 September one project consumed 22.9 million tokens in a day, about USD 7. It looked like the WhatsApp bot. It was 3,417 calls from a script running on a laptop. Without checking where the calls came from, we would have “optimised” the wrong bot.

Which 5 cost leaks can you check tomorrow?

  1. Invisible thinking. How to spot it: make a test call and read usageMetadata.thoughtsTokenCount; in the billing console, group by SKU and compare output tokens with and without reasoning. If the task is formatting, extraction or classification, switch reasoning off or use the lowest level, and measure quality.
  2. Lost prompt cache. How to spot it: read usageMetadata.cachedContentTokenCount on consecutive calls with the same prompt. If it is zero, look for a date, time, user name or any variable data near the start of the prompt and move it to the end.
  3. Servers on with no traffic. How to spot them: in Cloud Monitoring, billable instance time per day; a flat line is reserved capacity, not traffic. Also check each service’s traffic tags: a tagged revision with 0% traffic and a minimum of one instance is a leak. For reference: one of our services handled 770,640 requests in 23 days for USD 2.02 with a minimum of zero.
  4. Repeated database reads. How to spot them: compare database reads and egress with your application’s real traffic. Caches that reload everything every few minutes and screens that poll every 15 seconds are the usual suspects. In one of our message inboxes, a single open, idle browser tab made 94,000 of the 102,000 reads in an hour.
  5. AI triggered by junk traffic. How to spot it: count model calls per route or per event. Our site called Gemini on every not-found page to suggest content: 1,688 calls in one day, almost all from automated scanners. With a route filter, the same day would have produced 53.

And one underlying rule: every AI expense must be traceable to a project or a client. A shared key hides who is spending, and what you cannot attribute you cannot discuss.

If you want to see how we turned this discipline into reports that build themselves, I wrote about it in the report that builds itself. And if you would rather review your AI bill together, this is how I work as an AI consultant.

Frequently asked questions

What are Gemini thinking tokens? They are the tokens the model generates while reasoning before it answers. They do not appear in the response, but they are billed as output tokens. In Gemini 2.5, reasoning is on by default.

Does switching reasoning off make answers worse? It depends on the task. In our test, generating text under character limits, quality held and cost fell 82%. On tasks that genuinely need reasoning, it can get worse. That is why you should measure on real cases before deciding.

How do I know how much I pay for invisible thinking? Read the thoughtsTokenCount field in the response of a test call, or group billing by SKU and compare output tokens with and without reasoning.

What is implicit caching and why were we losing it? It is an automatic discount when several prompts share the same opening of at least 1,024 tokens. We were losing it because we put the current time near the start of the prompt, so the opening was never identical.

How much should a company spend on cloud AI? There is no universal figure. Our account, with 22 projects, ranged between USD 152 and USD 827 a month from March to September 2026. More useful than the figure is knowing what explains each jump: in our case it was almost always a configuration, not usage.

When will you publish the database savings? Measurement starts on 5 October 2026. I will update this article once October is complete, with the figure measured on the invoice.

Share
Related posts