How much does it cost to send a PDF to ChatGPT?
How LLM API billing works for PDFs, a worked cost example for a batch job, and why token estimates go wrong.
Someone on your team wants to run 500 contracts through an LLM to pull out renewal dates. Sounds simple. Then finance asks the obvious question: what is this going to cost?
The answer is more predictable than most people expect, once you understand how the billing works.
You pay per token, both ways
LLM APIs charge for input tokens (what you send) and output tokens (what the model writes back), usually at different rates. Output is almost always more expensive per token than input.
For a PDF task, the input is usually the big number. A 20-page contract might be 12 000 tokens of input, while the answer you want back (a few dates) might be 100 tokens of output.
A worked example
The figures below use GPT-6 Sol rates published on OpenAI's pricing page in late September 2026: $2 per million input tokens, $10 per million output. Rates move often, so treat the method as the durable part and the numbers as a snapshot.
Say each contract is 20 pages and averages 12 000 tokens:
- One contract: 12 000 tokens, about $0.02 of input
- 500 contracts: 6 000 000 tokens, about $12 of input
- Output at 100 tokens each: 50 000 tokens, about $0.50
So the whole batch lands around $12.50. Not the scary number finance was bracing for. But the arithmetic only works if you actually know your token count, which is where estimates go wrong.
Where cost estimates break down
People guess token counts from page counts, and PDFs make that guess unreliable. A contract full of defined terms and tables can be twice the tokens of a plain-prose page of the same size. Scanned documents run through OCR can balloon further with noise and duplicated lines.
The difference matters at scale. If your real token count is 40% higher than your guess, that $12.50 job passes $17. Across a monthly pipeline, the gap compounds.
Cheaper models change the math
Not every task needs the flagship model. Every provider ships a small tier, and it costs a fraction of its larger siblings. For extraction tasks (pull a date, find a name, classify a clause) a smaller model is often enough.
The same 500-contract batch on GPT-6 Luna, at $0.10 per million input (a twentieth of Sol's rate), costs about $0.60 for input. The tradeoff is accuracy on harder reasoning, which extraction usually does not need.
Check the number before you commit
Prices change more often than articles get updated, this one included. Before you budget a batch job, run a representative file through the Token Cost Calculator. It counts the real tokens and lets you edit the rate per model, so the estimate reflects today's pricing rather than the day this was written.
For a fuller picture of what is driving the count, the Token Counter breaks it down per page. Both run in your browser, so you can price out sensitive documents without uploading them anywhere.