eCommerceCost Playbook14 min readPublished August 21, 2026

Up to 384 tokens per image · no vision surcharge · one catalogue, priced three ways

What a 384-Token Image Budget Buys in Catalogue QA

DeepSeek’s new vision model bills every image at up to 384 tokens and charges nothing extra for vision. That turns a catalogue image QA pass into arithmetic: on the assumptions stated below, roughly $4.51 to look at 20,000 SKUs off-peak, $9.01 at peak. This post shows the formula, borrows the checklist from Google Merchant Center and Shopify’s own rulebooks, and is honest about what an 800×800 pixel budget cannot resolve.

DA
Digital Applied Team
Senior strategists · Published Aug 21, 2026
PublishedAug 21, 2026
Read time14 min
Sources9 primary docs
Image token ceiling
384
tokens per image, default path
DeepSeek Vision guide
Off-peak input rate
$0.22/M
cache-miss input, per 1M tokens
$0.44 at peak
20,000 SKUs, 1 image each
≈$4.51off-peak
our arithmetic, assumptions stated
≈$9.01 at peak
Concurrency limit
2,500
concurrent requests, published
no throughput claim

Vision-model product catalogue QA became a budgeting exercise on August 21, 2026, when DeepSeek released DeepSeek-V4-Flash-Vision-Exp and published the one number that matters for bulk image work: every image costs up to 384 tokens, billed at the same per-token rate as text. No vision surcharge, no separate image tier. Put a price on 384 tokens and you have put a price on looking at a product photo.

That matters because catalogue image QA has always been a job that nobody finishes. A 20,000-SKU store has tens of thousands of hero shots, alternates and lifestyle images, and the rules they must meet are published in detail by Google Merchant Center and Shopify. The rules are not the problem. Reading every image against them is. At a fraction of a cent per image, the reading part stops being the bottleneck, and the checklist and the human sample become the work.

This is a build post from published numbers. Every figure is either a rate DeepSeek printed, a limit Google or Shopify printed, or arithmetic we show on assumptions we state. It covers what the 384-token ceiling actually is, a cost table at three catalogue sizes, a QA checklist derived from the two platforms’ own disapproval rules, a reasoned account of what an 800×800 pixel budget cannot resolve, and a pipeline shape that batches at off-peak with idempotent job keys and a human sample. For the launch itself, read our V4-Flash-Vision-Exp launch and pricing post; this one does not repeat that story.

Key takeaways
  1. 01
    The ceiling is a resize rule, not a discount.DeepSeek’s Vision guide scales larger images down to roughly an 800×800 pixel budget before tokenizing, which is why a 2000×2000 and a 5000×5000 image cost the same 384 tokens. The cap is documented; what the model can detect at that resolution is not.
  2. 02
    One image per SKU across 20,000 SKUs is roughly $4.51 off-peak.Formula: (384 image + 220 prompt tokens) × $0.22 per million, plus 140 output tokens × $0.66 per million, equals about $0.000225 per image. Peak doubles every rate, so $9.01. The 220 and 140 are our assumptions and are shown as such.
  3. 03
    The checklist already exists; the platforms wrote it.Google Merchant Center’s image requirements and text-on-image policy, plus Shopify’s photography and file-upload pages, define frame fill, background, overlays, placeholders and file limits. The model’s job is to answer those questions at scale. Accuracy on any specific check is unmeasured here.
  4. 04
    Some checks belong in code, not in the model.Because the model sees an 800×800-equivalent image, it cannot tell you the source file’s pixel dimensions, megapixels or byte size. Read those from the file header before the call. Reserve the vision model for questions that need eyes.
  5. 05
    Batch off-peak, key every job, sample the output.Peak hours are 01:00–04:00 and 06:00–10:00 UTC; every other hour bills at half. Use a deterministic job key per SKU-image pair so reruns are free of double work, and route a fixed human sample per run because DeepSeek has published no detection-accuracy number for this model, and we ran no evaluation.

01The Budget384 tokens is a resize rule, and it is published.

The figure that makes this post possible is not a marketing claim. It comes from the Token Usage section of DeepSeek’s Vision guide, which describes what happens to an image before the model ever sees it. Images with a total pixel count below roughly 384×384 are scaled up, aspect ratio preserved. Larger images are scaled down, aspect ratio preserved, so that the pixel count after resizing is roughly that of an 800×800 image. The consequence is the ceiling: no image costs more than 384 tokens, however large the original.

Two details in the same guide shape everything downstream. Multiple images in one request are each counted independently under the same rule, so there is no multi-image discount or penalty. And a detail parameter exists on image_url inputs: low downscales to 512×512 before inference and is documented as faster and cheaper, while high, original and auto keep the image at its original size ahead of the resize step. The docs do not state how low interacts with the 384-token ceiling, so every number in this post uses the default path. If you try low, measure the token count yourself.

"There is an upper bound of 384 tokens per image: for example, a 2000×2000 image and a 5000×5000 image consume the same number of tokens after resizing."— DeepSeek API Docs, Vision guide, Token Usage section

The rates those tokens are billed at sit on DeepSeek’s pricing page, and a footnote there makes the second structural point: image tokens are ordinary input tokens. There is no vision surcharge. The vision model carries the same table as the text-only V4-Flash: off-peak cache-miss input at $0.22 per million tokens, cache-hit input at $0.007, output at $0.66, with peak exactly double on every line ($0.44, $0.014 and $1.32). Peak hours are 01:00–04:00 and 06:00–10:00 UTC; all other hours bill at half. Seven peak hours a day leaves seventeen at half price, which is the whole scheduling argument for a catalogue job.

Image ceiling
Per image, default path
384tokens

Set by the resize step, not by file size. A 2000×2000 and a 5000×5000 image cost the same. Scoped here to the default (no detail parameter) path the Token Usage section describes.

Vision guide · Token Usage
Off-peak input
Cache-miss input tokens
$0.22/M

Peak is $0.44. Cache-hit input is $0.007 off-peak and $0.014 at peak. Output is $0.66 off-peak, $1.32 at peak. Every line doubles; nothing else changes.

Pricing page · Aug 21, 2026
Concurrency
Published concurrent-request limit
2,500requests

An explicit column on the pricing table, shared with the text-only V4-Flash. It is a ceiling on parallelism, not a throughput figure, and we do not convert it into one.

Pricing page · Aug 21, 2026

One framing note before the arithmetic. DeepSeek describes the model as matching DeepSeek-V4-Flash on text capabilities, which is the vendor’s own characterization and is not something a catalogue QA pass depends on. What the pass depends on is the ceiling, the rate table and the limits, all of which are documented. We cite no benchmark in this post because none is needed to price the job.

02The ArithmeticCost per image, per catalogue, formula shown.

Three inputs go into the per-image figure. The first is DeepSeek’s: 384 image tokens, the published ceiling, used as the conservative case because a pipeline cannot assume every image resizes to fewer. The other two are ours and we state them plainly. A compact QA instruction enumerating the checks in Section 03 plus minimal per-SKU context, which we set at 220 input tokens. And a structured JSON answer, a handful of boolean and enum fields plus a short notes string, which we set at 140 output tokens. Change either and the table moves; the formula does not.

The formula is (384 + 220) × input rate + 140 × output rate, applied at cache-miss input rates with no caching credited. Every cell below follows from it.

Cost of one vision-model QA call per product image and per catalogue at three sizes, off-peak versus peak, computed by Digital Applied from DeepSeek’s published August 21, 2026 rates using 384 image tokens, an assumed 220-token prompt and an assumed 140-token JSON answer, one image reviewed per SKU.
Line itemTokensOff-peakPeak
Per image · cache-miss input, no caching credited
Image tokens × input rate384384 × $0.22/M = $0.0000845384 × $0.44/M = $0.0001690
Prompt tokens × input rate (assumed)220220 × $0.22/M = $0.0000484220 × $0.44/M = $0.0000968
Output tokens × output rate (assumed)140140 × $0.66/M = $0.0000924140 × $1.32/M = $0.0001848
Total per image604 in · 140 out≈ $0.000225≈ $0.000451
Per catalogue · one image reviewed per SKU
1,000 SKUs604,000 in · 140,000 out$0.23$0.45
20,000 SKUs12.08M in · 2.8M out$4.51$9.01
100,000 SKUs60.4M in · 14M out$22.53$45.06

Two things in that table are worth reading twice. First, the answer costs more than the picture. At off-peak rates the 140 output tokens come to $0.0000924 per image against $0.0000845 for the 384 image tokens, which means output is about 41% of the per-image cost and the image itself about 38%. Every extra sentence you let the model write is worth more than the photo it is describing. Keep the schema tight, forbid prose, and the table holds.

Second, coverage depth is your choice, not a platform requirement. Shopify’s photography guidance recommends multiple angles but states no fixed count, and Merchant Center’s image rules are per-image. If a pass reviews three images per SKU (a hero, one alternate angle, one lifestyle shot), multiply the per-catalogue rows by three: 60,000 images at 20,000 SKUs comes to $13.52 off-peak and $27.03 at peak from the unrounded per-image figure rather than from the rounded $4.51 in the row above. The multiplier is linear because each image is counted independently under the same resize rule.

Plausible, not credited
The headline cells assume every request’s instruction text is a full cache miss. DeepSeek’s context-caching guide describes automatic disk caching as enabled by default for all users, with repeated request prefixes registering as cache hits. That guide does not name the vision model specifically, so we treat applicability as an inference, not a documented feature. If the 220-token prompt prefix did register as a hit at $0.007 per million, the per-image figure would fall to about $0.000178 off-peak and the 20,000-SKU total to about $3.57. Check prompt_cache_hit_tokens in your first few responses before you bank it.

03The ChecklistThe platforms already wrote the questions.

We did not invent a definition of a “good” product image. Google Merchant Center publishes image link requirements and a separate text-on-image policy whose stated disapproval reasons are the checklist. Shopify publishes photography guidance on one page and file-level limits on another; the two should not be conflated, and we cite each for what it says. Merchant Center’s text-on-image page states the principle in one sentence: “All products on ads and free listings require an image with an unobstructed view of the product.” Products that fail it are disapproved until the image is updated, and the page notes diagnostics can take 24 to 72 hours to reflect a fix.

The table below maps each rule to the question a QA prompt would ask. It is a list of what a pass would ask for. DeepSeek publishes no evaluation of this model on any of these checks, and we ran none. Accuracy on every row is unmeasured here.

Catalogue image QA checklist derived from Google Merchant Center and Shopify help documentation, mapping each published rule to the question a vision-model QA prompt would ask, with the checks that belong in code rather than the model separated out. Detection accuracy is unmeasured.
CheckPublished ruleSourceWhat the prompt asks
Frame and subject · vision-model questions
Whole product, filling the frameImages must accurately display the entire product; the product should occupy roughly 75–90% of the frame.Merchant Center · image requirementsIs the entire product visible with nothing cropped? Estimate frame fill as a percentage band.
BackgroundSolid white or transparent, or a genuine lifestyle image that clearly shows the product; no ambiguous or busy backgrounds. Shopify recommends a pure white background.Merchant Center · image requirements; Shopify · photographyClassify the background: white, transparent, lifestyle, or busy. Flag busy.
StagingMinimal or no product staging.Merchant Center · image requirementsDo props or scenery dominate the product? Yes or no, with a one-line reason.
Placeholder or not-the-productNo placeholders, generic graphics or illustrations, logos or icons instead of the product, or single-colour squares (category exceptions apply).Merchant Center · image requirementsIs this a photograph of a physical product, or a placeholder, graphic, logo or colour swatch?
Overlays and content · vision-model questions
Overlays and text on imageNo promotional elements or content covering the product: watermarks, brand logos, barcodes, calls-to-action, price information or any overlay not inherent to the product. Borders discouraged.Merchant Center · image requirements; text-on-image policyIs any text, logo, badge, watermark or border laid over the image? Name what you see.
Angle coverageShopify recommends shooting from multiple angles (eye level, high, low, bird’s-eye); no fixed count is prescribed.Shopify · photographyWhich single angle is this? Tag per image so coverage can be counted per SKU in code.
File level · read the header, do not ask the model
Resolution and sizeMerchant Center: at least 500×500 px, 1500×1500 px or larger recommended, cap 64 megapixels and 16 MB. Shopify: max 20 MB, max 20 megapixels, aspect ratio between 100:1 and 1:100.Merchant Center · image requirements; Shopify · file uploadsNothing. The model sees an 800×800-equivalent image and cannot report source dimensions. Read width, height and bytes from the file.
FormatShopify accepts JPEG, PNG, WEBP, HEIC and GIF. DeepSeek accepts JPEG, PNG, GIF and WebP, detected from file content.Shopify · file uploads; DeepSeek · Vision guideNothing. Transcode HEIC before the call; it is on Shopify’s list and not on DeepSeek’s.

The split in that table is the most useful thing in it. Two of the rows need no vision model at all. Pixel dimensions, byte size, aspect ratio and container format are header reads, and running them in code first means the model is only ever asked questions that require eyes. It also means a file that already fails the 500×500 floor never spends its 384 tokens.

One more line from the Merchant Center page is worth a place in the pipeline even though it is not a detection check: Google asks merchants to ensure AI-generated product images carry IPTC metadata identifying them as algorithmically created. That is the catalogue-side mirror of this post. The same rulebook that defines what a QA pass looks for is starting to anticipate images that were themselves generated, and a metadata read belongs beside the header read.

04Reasoned, Not ClaimedWhat 384 tokens cannot see.

DeepSeek publishes the resize arithmetic and nothing about detection. So the honest way to talk about limits is to keep the causal chain explicit and label each link. The published fact: a larger image is scaled down so its total pixel count is roughly that of an 800×800 image, about 640,000 pixels. Our arithmetic: a 1500×1500 source, the size Merchant Center recommends as a floor for good listings, keeps about 28% of its pixels; a 3000×3000 source keeps about 7%; a 5000×5000 source keeps under 3%. Our inference: whatever is only visible in the discarded pixels is not available to the model.

Share of source pixels that survive the resize step

Our arithmetic: 640,000 ÷ source pixel count, from the ‘roughly 800×800’ resize budget in DeepSeek’s Vision guide. The guide says ‘roughly’; treat these as approximate.
800×800 source640,000 px · at the budget
100%
1500×1500 source2.25 MP · Merchant Center’s recommended minimum
28%
2000×2000 source4 MP · DeepSeek’s own worked example
16%
3000×3000 source9 MP · illustrative, between DeepSeek’s two examples
7%
5000×5000 source25 MP · DeepSeek’s other worked example
2.6%
Plausibly within budget
Coarse, whole-frame questions
inference · unmeasured

Background class, frame fill band, whether props dominate, whether a large logo or price badge sits over the product, whether the image is a photo or a placeholder, which angle it shows. These are decided by large regions, which survive a resize to 800×800.

Ask the model
Marginal
Small, thin or low-contrast detail
inference · unmeasured

Small watermarks in a corner, thin borders, faint text, a barcode in the background. These may or may not survive the resize depending on the source size and where they sit. Treat a clean verdict as weaker than a flagged one and sample these rows harder.

Ask, then verify
Plausibly beyond budget
Fine print and subtle colour
inference · unmeasured

Care-label text, hallmark stamps, hairline scratches, and whether two variant images are the same shade. At 7% of a 3000×3000 source, these are resolution-bounded by construction. Route them to a full-resolution crop, a different tool, or a human.

Do not ask

None of those three tiers is a DeepSeek statement. They are our reading of what a coarse pixel budget can and cannot carry, grounded in the one thing DeepSeek does publish. The practical move that follows is cheap: for any row in the marginal or beyond-budget tiers, crop the region of interest at source resolution and send the crop as its own image. A crop is its own 384-token line item, so the arithmetic in Section 02 still holds; you are buying a second look, not a bigger one.

05Pipeline ShapeBatch off-peak, key every job, sample the output.

The pipeline is a special case of two patterns we have already written up. The scheduling half is the off-peak LLM pricing playbook: DeepSeek’s windows are UTC-denominated and exact, and a catalogue job has no latency requirement, so there is no reason for any of it to run inside the seven peak hours. The engineering half is the million-row LLM job post: a deterministic job key per unit of work, a results store you can resume from, and a QA sample that is sized and drawn before the run starts. Here the unit of work is one SKU-image pair and the key is a hash of the SKU identifier, the image’s content hash and the prompt version. Rerun after a crash, a prompt tweak or a model update and only the changed keys spend tokens.

The limits that bound request shape are on the Vision guide, not the pricing page, with upload quotas on the separate Files API guide. A request may carry up to 600 images. Each side of an image may be up to 8,192 pixels, dropping to 4,096 once a request contains 15 or more images. Total image payload is 64 MiB without Files API references and up to 200 MiB with them. Images are accepted only in user messages; placing one in a system or assistant message returns an HTTP 400. For idempotency we still prefer one image per request, because one request then maps to one job key, one result row and one retry, and the 2,500 concurrency limit is the parallelism ceiling you scale into. We make no throughput or wall-clock estimate; DeepSeek publishes a concurrency limit, not a rate.

Base64 data URL
Inline, simplest

Encode the bytes into the request. Counts toward the 64 MiB per-request payload limit. Best for one-image-per-request pipelines pulling from object storage you already control; no upload step, no URL lifetime to manage.

Pick for one-image requests
External URL
Point at your CDN

URL up to 8,192 characters, image up to 32 MiB, fetched within a 60-second download window. Best when catalogue images are already public and the QA job should not re-upload them; watch signed-URL expiry against the download window.

Pick for public CDNs
Files API file_id
Upload once, reference many

Up to 64 MiB per upload, 25 GiB storage and 10,000 stored files per user, retention configurable from one hour to 30 days or permanent. Lifts the per-request payload ceiling to 200 MiB. DeepSeek’s launch note describes it as available at no cost; the Files API guide itself does not restate pricing.

Pick for multi-pass reviews
Human sample
Fixed per run, drawn first

Because no detection-accuracy figure is published for this model, every run routes a fixed sample of verdicts, weighted toward the marginal tier in Section 04, to a person. Size it to your tolerance, draw it before the run, and log disagreements as the only accuracy number you own.

Always
Two traps on the way in
Formats are detected from file content, not the filename or declared MIME type, and DeepSeek’s accepted list is JPEG, PNG, GIF and WebP. Shopify’s upload list also includes HEIC, so a store that takes iPhone uploads will have images the QA call rejects unless they are transcoded first. And only the deepseek-v4-flash-vision-exp model accepts images at all; pointing the same request at the text-only V4-Flash returns a 400. Pin the model ID explicitly in the job config rather than inheriting a default.

06Where It FitsThe image-side counterpart to catalogue data agents.

Most of the agentic catalogue work we have covered lives on the text side. Our agentic PIM post is about attribute enrichment and feed quality; the cross-channel feed matrix is about titles, GTINs and attribute rules per channel. Image QA is the column those posts leave blank, and it was blank for a reason: until an image cost about the same as a short paragraph, reading every one was not a job you would schedule nightly. Google’s own Merchant Center AI performance insights pilot is adjacent but distinct: it is a Google-side reporting feature, not a merchant-run check, and it does not tell you which image failed before Google saw it.

The interpretive point is about what becomes scarce. When the marginal cost of looking at an image drops to a fraction of a cent, the constraint moves to the three things the model cannot supply: a checklist grounded in the platforms’ actual disapproval rules, a human sample that produces the only accuracy number you will ever have, and an engineering discipline that keeps a 20,000-SKU rerun from spending twice. Teams that already run text-side feed agents have the second and third. The first is in the rulebooks linked above.

Looking forward, we expect the QA prompt to stop being a separate job and become an ingest step, run on every new or changed image the moment it lands in the PIM, with the nightly batch reserved for prompt-version migrations. The “-Exp” suffix is a reason to build that way rather than a reason to wait: DeepSeek has used the suffix before for models under evaluation ahead of a stable name, which is a reported pattern rather than a formal definition, and the defensive reading is that the model ID, the token ceiling and the rates can all change. Keying jobs on prompt version and model ID, and re-drawing the human sample on every model change, is what makes that a non-event. If you want help scoping that into a catalogue operation, our ecommerce engagements start from exactly this arithmetic.

07Honesty LedgerWhat this post does not claim.

A build post is only as good as its stated edges. Here are ours, in one place, so nothing above gets read as more than it is.

  • No conversion-lift or defect-rate figure. We looked for a dated primary source tying product image quality to conversion or disapproval rates on either platform and found none. Neither Google’s nor Shopify’s documentation states one. Rather than borrow a plausible-sounding percentage from a secondary blog, this post uses no such figure. The business case here is cost-side only: the pass is cheap enough to run; whether it pays is yours to measure.
  • No detection accuracy. DeepSeek publishes no evaluation of this model on watermarks, wrong-product images, missing angles or any row of the Section 03 table, and we ran none. Every check is what a QA pass would ask for; the human sample in Section 05 is how you find out how often the answer is right.
  • The 384 figure is scoped to the default path. The detail: low option is documented as a 512×512 downscale, but the docs do not say what it does to the token count. We do not assert a number for it.
  • Caching is inferred. The $3.57 cache-hit scenario rests on a guide that describes caching as default for all users but does not name this model. It is a plausible optimization, not a documented one.
  • “Free” Files API is vendor-stated. The launch note says it is available at no cost; the Files API guide does not restate pricing either way.
  • Throughput is not estimated. The published 2,500 figure is a concurrency limit. We do not turn it into images per hour, because DeepSeek does not.
What is solid
The rates, the 384-token ceiling, the resize rule, the request limits and the platform checklists are all published, on DeepSeek’s pricing page, Vision guide and Files API guide, and on Google’s and Shopify’s help pages, as of the August 21, 2026 launch. Everything derived from them is shown as arithmetic with its inputs visible. If an input changes, rerun the formula; do not reuse the table.

08ConclusionCheap enough to look at everything, not yet proven to see it.

The shape of catalogue QA, August 2026

The scarce resource is no longer the look. It is the checklist, the key and the sample.

A published 384-token ceiling, a published rate table with no vision surcharge, and a published set of platform image rules add up to something catalogue teams have not had before: a way to read every product image against the actual disapproval criteria for about $4.51 per 20,000 SKUs off-peak on stated assumptions. The formula is three token counts and two rates, and every one of them is on this page.

What the numbers do not buy is certainty. The resize rule that makes the price possible also bounds what the model can resolve, and DeepSeek has published no accuracy figure for any of the checks a merchant cares about. The defensible build is the one in Section 05: header checks in code, coarse questions to the model, crops for the fine ones, a deterministic key per image, off-peak scheduling, and a human sample that produces the only accuracy number you will own.

Run it that way and the “-Exp” in the model name stops being a risk and becomes a line in the job config. When the model, the ceiling or the rates change, you rerun the formula and re-draw the sample. The catalogue does not notice.

Catalogue QA as an engineered pipeline

Every product image, read against the rulebook, for a fraction of a cent.

We build catalogue and feed operations that run as agentic pipelines: image QA against the platforms’ real disapproval rules, text-side attribute agents, off-peak scheduling and the human sampling that keeps them honest.

Free consultationExpert guidanceTailored solutions
What we work on

Catalogue operations engagements

  • Image QA prompts grounded in Merchant Center and Shopify rules
  • Idempotent bulk jobs with resumable results stores
  • Off-peak scheduling and token-budget forecasting
  • Human-sample design and accuracy logging
  • Text-side PIM agents for attributes and feeds
FAQ · 384-token image budgets

The questions we get every week.

Because of a documented resize step, not a pricing promotion. DeepSeek’s Vision guide states that images with a pixel count below roughly 384×384 are scaled up, and larger images are scaled down so their total pixel count is roughly that of an 800×800 image, aspect ratio preserved in both cases. The result is an upper bound of 384 tokens per image; the guide’s own example is that a 2000×2000 image and a 5000×5000 image consume the same tokens after resizing. The figure is scoped to the default image path. A detail: low option exists that downscales to 512×512, but the docs do not say how it changes the token count, so this post does not assume a number for it.