Skip to content
UGP v1.0 is a public comment draft. Comments close November 23, 2026. The A–D defect counts are provisional.Public comment draft · until November 23, 2026Comment on this draftComment →
UGPUniversal Grading Protocol
Build

CSV and price sheets

PDF

Suggested columns for UGP grades in CSV exports, feeds and wholesale price sheets, with the rules a sheet has to follow.

Rules for any sheet or export

  • Codes are fine; the name is reachable. A sheet can show NS, OB, A, B, C or D alone, with the full names in a legend or a header. §11.4
  • The version is on the sheet. Put "Graded to UGP v1.0" in the header, or a ugp_version column. §14.6
  • Disclosures are per line. A carrier lock, non-genuine parts and a partial kit are shown on the line they apply to. §11.4
  • Statuses never go in the grade column. Repair or Parts stock goes on its own sheet or in a status column, with the grade column empty. §11.1
  • Supplier-mapped grades are labelled. A grade transcribed from a supplier's scale shows the supplier's scale and grade on its line, and its core code ends ~src:supplier. §13.6
  • No "+" or "−". Premium is its own column or flag, on Like New only. §10.3

Suggested columns

UGP does not fix a CSV layout. These column names follow the record schema, so a sheet can be read back into a record. Annex B

ColumnExampleNotes
ugp_version1.0The version graded under
ugp_statusREADYREADY, or the status
ugp_gradeBNS, OB, A–D; empty unless READY
ugp_nameVery GoodIn the sheet's language
ugp_premiumfalsetrue only on A
ugp_core_codeU1-PHN-CB-FF-B80D-LC-RU-DW-PU-KHThe full record in one string
mapped_from_scaleMobileSentrixSupplier-mapped grades only: the supplier's scale (axes.cosmetic.mapped_from.scale)
mapped_from_valueGrade BSupplier-mapped grades only: the supplier's own grade
battery_health_pct80With its basis
battery_basisdeclaredmeasured or declared
operator_lockLU, L, V or N
carrierRogersWhen locked
partsUG, D, M, U or N
non_genuine_partsdisplayEach non-genuine part
kitHF, P or H
kit_missingcharging cableWhen partial
record_scopeunitunit or lot

A small example

csv
ugp_version,model,storage,ugp_grade,ugp_name,ugp_premium,battery_health_pct,battery_basis,operator_lock,carrier,non_genuine_parts,kit,ugp_core_code
1.0,iPhone 15,128GB,A,Like New,true,93,measured,U,,,F,U1-PHN-CA0-FF-B93M-LC-RU-DV-PG-KF
1.0,iPhone 15,128GB,B,Very Good,false,80,declared,U,,,H,U1-PHN-CB-FF-B80D-LC-RU-DW-PU-KH
1.0,iPhone 14,256GB,D,Acceptable,false,84,measured,L,Rogers,display,F,U1-PHN-CD-FF-B84M-LC-RL-DV-PM-KF

Lots

A line that sells a lot carries record_scope: lot and either one declared grade or a grade distribution, backed by an ISO 2859-1 sampling plan at general inspection level II. The default AQLs are 2.5 for cosmetic, 1.0 for functional and 0 for identity and encumbrance, and a declared distribution holds to ±5 percentage points per grade. §14.5