<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Brian Fu</title>
    <description>The latest articles on DEV Community by Brian Fu (@korouter).</description>
    <link>https://dev.to/korouter</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4176318%2F97afa6d6-5216-4752-9f88-eb29099fd269.png</url>
      <title>DEV Community: Brian Fu</title>
      <link>https://dev.to/korouter</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/korouter"/>
    <language>en</language>
    <item>
      <title>How some "discount" LLM gateways advertise 50% off and deliver 28%</title>
      <dc:creator>Brian Fu</dc:creator>
      <pubDate>Tue, 13 Oct 2026 13:00:00 +0000</pubDate>
      <link>https://dev.to/korouter/how-some-discount-llm-gateways-advertise-50-off-and-deliver-28-4bhf</link>
      <guid>https://dev.to/korouter/how-some-discount-llm-gateways-advertise-50-off-and-deliver-28-4bhf</guid>
      <description>&lt;p&gt;Every LLM gateway that undercuts the official APIs puts a number on the badge: 50% off, up to 80% off. The number is real. It just isn't the number on your bill, because the badge is computed on the two prices you look at — input and output — and a real coding session spends most of its money somewhere else.&lt;/p&gt;

&lt;p&gt;This is a look at where the money actually goes, how a badge gets inflated, and a three-minute way to check any provider, including us.&lt;/p&gt;

&lt;h2&gt;
  
  
  What a real session looks like
&lt;/h2&gt;

&lt;p&gt;Take a focused two-hour Claude Code session on a mid-size repository: a few dozen requests, the usual context reuse. Agentic coding tools re-send the system prompt, the project context and the conversation history on every request; the provider caches that prefix and bills the re-reads at a much lower "cache read" rate. A representative mix:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Component&lt;/th&gt;
&lt;th&gt;Tokens&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Cache reads&lt;/td&gt;
&lt;td&gt;5,000,000&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Fresh input&lt;/td&gt;
&lt;td&gt;250,000&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Output&lt;/td&gt;
&lt;td&gt;100,000&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cache writes&lt;/td&gt;
&lt;td&gt;350,000&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Cache reads are 88% of the tokens. Your mix will differ — a long session pushes that share past 95% — but the shape holds for any agentic tool.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where the money goes
&lt;/h2&gt;

&lt;p&gt;Priced at Anthropic's published rates for Claude Fable 5 ($10 input, $50 output, $1 cache read, $12.50 cache write per million tokens), the session costs &lt;strong&gt;$16.88&lt;/strong&gt;:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Line&lt;/th&gt;
&lt;th&gt;Cost&lt;/th&gt;
&lt;th&gt;Share of bill&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Cache reads&lt;/td&gt;
&lt;td&gt;$5.00&lt;/td&gt;
&lt;td&gt;29.6%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cache writes&lt;/td&gt;
&lt;td&gt;$4.38&lt;/td&gt;
&lt;td&gt;25.9%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Fresh input&lt;/td&gt;
&lt;td&gt;$2.50&lt;/td&gt;
&lt;td&gt;14.8%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Output&lt;/td&gt;
&lt;td&gt;$5.00&lt;/td&gt;
&lt;td&gt;29.6%&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Cache reads are 88% of the tokens but only about 30% of the money — cache reads are cheap per token. Add cache writes and &lt;strong&gt;cache pricing is 56% of the bill&lt;/strong&gt;. Input and output together, the two numbers every badge is built on, are the remaining 44%.&lt;/p&gt;

&lt;p&gt;So a discount that only touches input and output is discounting less than half of what you pay.&lt;/p&gt;

&lt;h2&gt;
  
  
  Four ways a badge gets bigger than the bill
&lt;/h2&gt;

&lt;p&gt;None of these are lies. All of them are true statements about the wrong number.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;The discount applies to input and output only.&lt;/strong&gt; Cache reads are billed at the provider's list price, or at a much smaller discount. The badge says 50%; the cache row says 0–20%.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cache writes aren't mentioned at all.&lt;/strong&gt; Anthropic bills a five-minute cache write at 1.25× the input price; OpenAI does the same from GPT-5.6 on. A gateway that passes that through at list price is charging full rate on a quarter of your session.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;"Up to X% off" is measured on the cheapest line.&lt;/strong&gt; Output for one model, a promotional tier for another. The rest of the catalog sits well below the badge.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cache pricing isn't on the pricing page.&lt;/strong&gt; You find it on the invoice. If a provider's price table has two columns, ask where the other two are.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;We briefly made a version of mistake number three ourselves: our "up to" badge compared a long-context tier against the base list price. We fixed it the same day we noticed, and the checklist below is now something we run on our own catalog.&lt;/p&gt;

&lt;h2&gt;
  
  
  The worked example
&lt;/h2&gt;

&lt;p&gt;Same session, three hypothetical providers:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Provider&lt;/th&gt;
&lt;th&gt;Input / output&lt;/th&gt;
&lt;th&gt;Cache read&lt;/th&gt;
&lt;th&gt;Cache write&lt;/th&gt;
&lt;th&gt;Session cost&lt;/th&gt;
&lt;th&gt;Real discount&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Official API&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;$16.88&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;"50% off", cache read 20% off, cache write at list&lt;/td&gt;
&lt;td&gt;50%&lt;/td&gt;
&lt;td&gt;20%&lt;/td&gt;
&lt;td&gt;0%&lt;/td&gt;
&lt;td&gt;$12.13&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;28%&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;"50% off", both cache lines 20% off&lt;/td&gt;
&lt;td&gt;50%&lt;/td&gt;
&lt;td&gt;20%&lt;/td&gt;
&lt;td&gt;20%&lt;/td&gt;
&lt;td&gt;$11.25&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;33%&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Flat 35% on all four prices&lt;/td&gt;
&lt;td&gt;35%&lt;/td&gt;
&lt;td&gt;35%&lt;/td&gt;
&lt;td&gt;35%&lt;/td&gt;
&lt;td&gt;$10.97&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;35%&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;A flat 35% beats a "50%" badge on this session — not because 35 is bigger than 50, but because it applies to the 56% of the bill the badge ignores.&lt;/p&gt;

&lt;p&gt;To be fair to the badge: if a provider discounts both cache lines by at least 23%, its "50%" would match the flat 35% on this mix. Which is exactly the point — the cache rows decide the outcome, and the badge doesn't tell you what they are.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to check any provider in three minutes
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Collect four unit prices&lt;/strong&gt; for the model you actually use: cache read, input, output, cache write. If one is missing from the pricing page, ask support; if support doesn't know, that's your answer.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Write down your mix.&lt;/strong&gt; Claude Code prints it under &lt;code&gt;/usage&lt;/code&gt; (input, output, cache read, cache write); other tools log it too. If you have nothing, use the table above.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Multiply and add.&lt;/strong&gt; Four multiplications, one sum, per provider. Compare totals, not badges.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Four questions worth asking before you top up anywhere:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Is the discount the same on cache reads as on output?&lt;/li&gt;
&lt;li&gt;What do you charge for cache writes?&lt;/li&gt;
&lt;li&gt;Is the "up to" number the best case or the typical case?&lt;/li&gt;
&lt;li&gt;Can I see the official price next to yours?&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Disclosure
&lt;/h2&gt;

&lt;p&gt;I run &lt;a href="https://korouter.ai/?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=cache-pricing" rel="noopener noreferrer"&gt;KoRouter&lt;/a&gt;, a gateway with one key for Claude, GPT, DeepSeek, GLM and Kimi models. One multiplier per model applies to all four prices — cache reads and writes included — and every model shows the provider's official price next to ours, so the method above works on us too. If you run the numbers and find a cheaper session somewhere, use it; the point of this post is the method, not the badge.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>llm</category>
      <category>claudecode</category>
      <category>programming</category>
    </item>
  </channel>
</rss>
