Token usage/billing way higher than what the API reports

Hey everyone!

I checked my token usage for a single day because the dashboard and billing activity looked much higher than I expected.

The dashboard shows token usage about 2–3× higher than what the Response API reports.

For example, on August 29th, I made only 3 requests to the batch API. The Response API shows this usage:

  • Input Tokens: 8,791 + 8,408 + 11,796 = 28,995

  • Output Tokens: 19,886 + 16,167 + 23,760 = 59,813

But for that same day, the dashboard and billing activity show:

  • Input Tokens: 69,786 (×2.4)

  • Output Tokens: 155,239 (×2.6)

I don’t understand where this difference is coming from. OpenAI support hasn’t been helpful, other than confirming the discrepancy.

Has anyone else experienced this kind of issue?

I received a more detailed response from OpenAI support.

They explained that for the Batch API, the token usage shown is not complete — only the dashboard should be trusted.

In my case, it seems that one token corresponds to about half a character.

Here’s the reason they gave for why the token counts in the response API differ from the dashboard:

Why the Totals May Differ:

The token counts in the Batch API output files represent the tokens processed for the successful completion of each job. However, the totals in the Usage Dashboard and API may include additional factors such as:

- Retries or Partial Processing: If any retries or partial processing occurred during the Batch API jobs, these would contribute to the overall token usage.

- Overhead Tokens: Certain system-level operations, such as validation or formatting, may result in additional token usage that is not reflected in the Batch API output files.

On my dashboard, it shows no retries or failed jobs.

So the billing seems to be based on “internal token usage,” which I have no visibility into.

For my use case, I switched to the Response API with background: true. It does not have this discrepancy.

I don’t get the discounted prices but since it does not consume hidden tokens, it’s cheaper.