CGC submission prep: a hobbyist's guide from declared value to form.
Slabwright's guide to walking your first CGC submission through the form without missing a column, overstating a declared value, or hitting a re-grade row that drops the cert number. We cover the four CGC tiers, the $500 walkthrough-tier declared-value rule, raw vs. re-grade on the 0.5-10 scale, and the twelve schema columns that map onto the form.
CGC tiers
CGC's four grading tiers: standard, express, walkthrough, bulk.
CGC runs four grading tiers on the intake form — standard, express, walkthrough, and bulk — and which tier you pick is the single biggest driver of price per card on the order. The tier also determines which columns of your manifest CGC will validate during pre-flight: a tier like walkthrough that requires a declared value on every row will reject the batch on arrival if a single value is blank.
Slabwright encodes the tier list verbatim from the schema:
- tier: standardDV optional (unless > $500)
- tier: expressDV optional (unless > $500)
- tier: walkthroughdeclared-value required
- tier: bulkDV optional (unless > $500)
Currency USD. Threshold $500 per single card. The walkthrough tier alone triggers the declared-value column on every row of the batch.
Pick the tier before you fill the form out — it controls which of the column set is required. Walkthrough is the only tier that hard-requires the field for the entire batch; the rest only require it when a single card is over the $500 threshold.
Declared value
Declared value + tier selection: the $500 walkthrough-tier rule.
CGC has two declared-value triggers, and they combine: tier and per-card value. On the walkthrough tier every row must carry a declared value regardless of what that value is. On the other three tiers (standard, express, bulk), declared value is optional — unless a single card crosses the $500 threshold.
Slabwright encodes that combined rule in the schema at fee_schedule.declared_value_required_above_usd: 500, with the same threshold appearing on declared-value required_for_tiers of ["walkthrough"] as a separate route:
- tier: standardDV optional (unless > $500)
- tier: expressDV optional (unless > $500)
- tier: walkthroughdeclared-value required (every row)
- tier: bulkDV optional (unless > $500)
Currency USD. Threshold $500 per single card. Above the threshold, CGC rejects any row missing the declared-value column regardless of tier. Same trigger pattern as PSA's per-row declared math — the only difference is the trigger tier.
Slabwright's mapper reads the canonical declared-value column and flags every blank row that crosses the threshold — it also walks the walkthrough-tier batch for blank rows regardless of value, so a single missing declared value on walkthrough will not pass the pre-flight.
Sub-grade vs raw
Raw vs. re-grade on CGC: the 0.5-10 scale and the cert-number crossover.
CGC's published scale runs 0.5 to 10 in half-step increments, with 10 reserved for a visually flawless card. Unlike BGS, CGC does not split that scale into sub-grades — one number, no Centering / Corners / Edges / Surface breakdown on the label slab. Hobbyists used to Beckett's four-axis label need to read CGC labels as a single composite score.
CGC does, however, distinguish raw from re-grade / crossover— and that's where the schema's grade and cert-number columns earn their place. Slabwright carries the required-when-resubmit rule on grade in the schema, so a re-submit row that pulls in an existing CGC cert also pulls in the existing grade:
- condition: raw (first submission)grade blank, cert blank
- condition: re-grade / crossovergrade + cert-number required
Acceptable CGC grades run on a closed enum of half-steps from 0.5 to 10. The grade column carries the closed-enum rule, but Slabwright only emits a grade value on re-submits — raw first submissions leave it blank.
That means a CGC batch through Slabwright cannot accidentally carry a stray first-grade grade from your inventory — only rows pulled in from an existing cert carry it, and those come with the cert-number too. The schema preview tab on the upload page reflects that same rule, so the error flagging panel catches any crossover row missing the cert number before you print.
Slabwright → CGC form
How Slabwright's CGC schema export columns map to CGC's submission form.
The set of columns Slabwright writes to a CSV for CGC comes straight from schemas/cgc.json, which is the same authoritative column set the schema preview tab and the upload island already consume via /api/psa-schema?grader=cgc. Pick CGC in the upload dropdown and Slabwright validates your file against those exact columns.
The walkthrough, in the order the columns land on the CGC form:
- year, brand, set-name— the three required identifiers. CGC's year regex in the schema pins a four-digit year between 1860 and the current year plus one, so 2025 releases pass on year: 2025 but a two-digit 25 gets rejected by the pre-flight.
- card-number, variant — optional print-run shape: #247 or Refractor. Variant is a closed enum of parallels; leave blank for the base card.
- grade, title — the first CGC quirk worth internalizing. CGC uses title where PSA / BGS use Player. For TCG cards it's the card name (e.g. Charizard); for signed cards it's the autograph subject. The grade column is blank on first submissions and populated to one of the half-step values in the closed enum on re-submits (see the raw vs. re-grade section above).
- declared-value — owner-declared USD value. Required on the walkthrough tier or when a single card is over the $500 threshold (see the declared-value section above).
- cert-number, pedigree, notes — cert-number blanks on first submissions and follows an 8-to-9 digit regex; pedigree is a free-text authentication line; notes is a free-text per-row special-instructions field.
- ordering— auto-generated. The mapper writes the 1-based row order; never map it from your CSV header or you'll collide with the mapper-written one.
The full column set lives at the CGC mapper — pick the CGC pill on the upload page and the schema preview tab renders the same twelve columns from schemas/cgc.json.
Ready to build your first CGC batch?
From CSV to CGC-ready manifest in under a minute.
Slabwright turns a CGC-keyed CSV into a clean, validated manifest with the tier, declared-value, and cert-number rules enforced before export. Pair this guide with the BGS sub-grade pillar, the PSA bulk pillar, and the PSA fee tier guide if you split batches across graders.