Certrow

Validate / CPSC eFiling CSV Template V3 errors, and the fix for each

CPSC eFiling CSV Template V3 errors, and the fix for each

The Product Registry checks a bulk upload row by row. These are the rules a row has to meet, quoted from CPSC's guide, and the fix for each.

Check a file Look up a code

CPSC does not publish the exact wording of the Registry's error messages, so this page is organised by cause. Quotations are from the CPSC User Guide for CSV Upload V3 (December 2025) unless marked.

ProblemThe ruleFix
A required column header is missing or renamedThe guide lists twelve columns that must be present: Product Update, New Version ID, Primary Product ID, Primary Product ID Type, Certificate Type, Product Name (Model), Manufacturer GLN or Manufacturer Alternate ID, Manufacture Date, Lab 1 Type, Lab 1 Citation Codes, Last Test Date and Point of Contact (POC) for Test Result Records. "If any of these column headers are missing, the upload attempt will fail."Copy the header row from Template V3 unchanged. The validator shows the header it found beside the one it expected.
The example rows are still in the fileCPSC's template ships with three example products (a coffee table, a dresser and a toy). The guide says they "should be fully deleted before attempting to upload any data".Delete rows 2 to 4 of the template before adding your own.
A value contains a commaA CSV file separates columns with commas, so "Example Company, LLC" splits into two columns and shifts the rest of the row. The guide: "users must remove all commas from their certificate data".Remove the comma. The validator does this for you and lists each change.
A value contains a double quoteA quote mark inside a value, as in 12" ruler, forces a CSV writer to wrap the value in quotes. CPSC's guide does not say that the Registry reads quoted values.Write the value without the quote mark, for example 12 in ruler. The validator writes a quote mark that follows a number as in, removes any other, and lists the change.
A row has more values than the header has columnsA comma inside a value that is not wrapped in quotes splits the value in two and pushes everything after it one column to the right, so a date lands under Point of Contact and so on.Remove the comma from the value. The validator names the row and counts its values against the header before it reports anything else.
Several rows collapse into one long valueA double quote that is opened and never closed makes a CSV reader take everything up to the next quote mark as one value, line breaks included, so the rows in between vanish.Remove the stray quote mark. The validator says near which row it starts and does not count the swallowed rows as checked.
Accented letters turned into question marks or boxesExcel on Windows saves "CSV (Comma delimited)" in the Windows-1252 encoding. Read as UTF-8, every accented letter is lost.Save as "CSV UTF-8 (Comma delimited)". The validator reads UTF-8; a file that is not UTF-8 is read as Windows-1252, and every value with an accented letter or sign is then shown on its row for you to confirm.
The file was saved in another encoding, such as GBK, Big5 or Mac RomanA CSV file does not say which encoding wrote it. Read as Windows-1252, Chinese text comes out as runs of accented letters and Mac text swaps accented letters for signs. Neither can be put right by guessing.Save as "CSV UTF-8 (Comma delimited)" or drop the .xlsx. The validator marks such values as row errors and leaves those rows out of every download.
Letters show as é or ’Text written in UTF-8, opened in a program that read it as Windows-1252 and saved again keeps the damage: é becomes é and an apostrophe becomes ’. The original letters are no longer in the file.Go back to the original file, or retype the values, and save as "CSV UTF-8 (Comma delimited)". The validator marks such values as row errors.
The first row is a title or a note, not the column namesThe validator reads the first row that is not empty as the header row. A title line above the column names leaves nothing it can match.Delete every line above the column names. A line that reads sep=, or sep=; (a hint some programs write for Excel) is recognised and skipped.
A long number became 8.85011E+11Microsoft: "the General format does use exponential notation for large numbers (12 or more digits)". A UPC or GTIN typed into a General cell is saved to CSV that way and its last digits are gone. Excel also keeps only 15 digits of any number and writes zeros for the rest.Format the identifier columns as Text, retype the full number, and save again. The validator refuses a value in scientific notation and asks you to check a long number that ends in zeros.
Text that is not in English16 CFR 1110.9(a): "An eFiled finished product certificate must be in the English language."Write names and descriptions in English. Accented Latin letters in a company name are not flagged.
A date is in the wrong formatManufacture Date must be MM/CCYY (06/2026). Last Test Date and the production dates must be MM/DD/CCYY (06/20/2026). Excel silently turns these into its own date type and saves something else, such as 2026-06-20 or Jun-26.Format the date columns as Text before typing. The validator rewrites ISO dates and month names and pads 7/4/2026 to 07/04/2026; it will not guess at 03/08/26 or 14-07-2026, and it refuses a year outside 1900 to 2100.
A date is day-first14/07/2026 has no month 14. Factory paperwork is often day-first; CPSC wants the month first.Swap day and month: 07/14/2026.
Citation codes are separated by commas or spaces"If providing more than one code, values must be separated by a semi-colon."Write 1215; 1216; 1217. The validator turns commas into semi-colons and lists the change. Codes with only a space between them are a row error: 4.1 0 could be 4.1 or 4.10, and it will not pick one.
Two test reports share one cell, separated by a comma"If providing information for more than one test report in these fields, separate the different report details with a semi-colon." This covers Lab {#} Test Report ID, Test URL and Test Report Access Key.Write R-1; R-2. The validator turns the comma into a semi-colon and lists the change.
An exclusion code without the rule it excludes16 CFR 1110.11(c): the certificate names the exclusion "in addition to listing all applicable rules". The validator flags an exclusion code whose citation code is nowhere on the row as something to check.If a lab tested the product to that rule, add the citation code to that lab.
Lab 3 is filled in but Lab 2 is empty"Each unique lab provided for a certificate must be numbered, starting at 1."Move the lab into the first free lab number.
A citation code is not in CPSC's listThe code must match CPSC's citation code list exactly, special characters included: 1500.86(a)(5), 1278a, 4.3.5.1(2).Look the code up in the citation code list. The validator suggests the closest codes.
4.20, 4.30 or 4.40 turned into 4.2, 4.3 or 4.4ASTM F963 section numbers look like decimals to Excel, which drops the trailing zero. 4.3 and 4.4 are not codes at all; 4.1 is a different code from 4.10.Type the code into a Text cell. See why 4.10 becomes 4.1.
A testing exclusion code sits beside citation codesExclusion codes go in a lab entry of their own. The guide tells users to include a laboratory of type NOL and to give the exclusion codes in the Citation Codes column of that lab.Add Lab 2 Type = NOL and move the exclusion code into Lab 2 Citation Codes.
Lab type is ITL but the CPSC-ID is blank or wrongITL marks a CPSC-accepted laboratory, and "Lab {#} CPSC-ID" is required for it. The API specification calls it "a valid, 4-digit CPSC-ID".Take the 4-digit ID from the lab's entry on CPSC's list. Look up a lab ID.
The CPSC lab ID is not on the accepted-laboratory listAPI Specifications V4 lists error 2027, "Lab <#> was not found", for a lab ID the Registry does not know. The validator checks each ID against its copy of CPSC's list and treats a miss as a row error.Check the ID on the test report and on CPSC's live lab search. Labs are added and removed; the live list wins.
The test report ID is N/A, TBD, a dash or one or two charactersCPSC's CSV guide treats Lab {#} Test Report ID as optional. The validator requires it for every lab of type ITL or LAB, and it does not accept a stand-in for a report number.Enter the report number printed on the lab's test report.
"Lab {#} Is Component?" holds Y, 1 or another wordThe guide lists four accepted values for this column: True, False, Yes and No.Write Yes or No. The validator writes Y as Yes and N as No and lists the change; 1, 0 and anything else are row errors.
Lab type is LAB with no Alternate ID or GLNFor a lab of type LAB, which is one that is not on CPSC's accepted list, the guide requires one of two fields: Lab {#} Alternate ID or Lab {#} GLN.Give the lab any Alternate ID you like, and set Lab {#} Is New? to Y with its name, address and contact details the first time.
"Is New?" is Y but the name, address or contact details are blankFor a new manufacturer, lab or point of contact the guide requires all mandatory identifying information, including name, full address and contact information.Fill in the party's columns on the first row that mentions it, or set Is New? to N if it already exists in your Product Collection.
The same new trade party is created on several rowsThe guide says later references to a trade party in the same CSV must use the GLN or Alternate ID set when it was created, with its Is New? field set to N or left blank.Keep Y on the first row only.
Neither Manufacturer GLN nor Manufacturer Alternate ID is given"One of these two pieces of information must be provided for each product entry being uploaded."Enter one of them on every row.
Product Update is Y without a Current Version IDThe guide requires Current Version ID when the Product Update value is Y.Enter the Version ID of the certificate you are changing. It may equal New Version ID.
A value is too longVersion IDs and the Primary Product ID stop at 19 characters, product name and description at 250, names and address lines at 100, most other fields at 50, lot number at 20, apartment/suite and postal code at 10.Shorten the value. Long SKUs are the usual cause: 19 characters is tight.
Primary Product ID Type is not one of the sevenAccepted values: GTIN, UPC, SKU, Model Number, Serial Number, Registered Number, Alternate Identifier.Use the exact wording. The API calls the same types "Model #" and "Alternate ID"; the CSV does not.
Point of Contact is not one of the fiveAccepted values: Importer, Manufacturer, Laboratory, Broker, Other.For anyone else choose Other and fill in the POC columns.
Lot Number without Lot Number Assigned ByAPI Specifications V4: "These fields are optional; however, if one is provided, the other becomes mandatory."Add Seller or Manufacturer, or clear the lot number.
Last Test Date is blank on an exclusion-only certificateAPI Specifications V4 notes that the Registry "currently requires a date be provided in this field, so the date of upload can be used instead".Enter the upload date.
The file is .xlsx"The Product Registry only accepts CSV files for uploads."Save as CSV just before uploading, or drop the .xlsx on the validator and download the built CSV.

Where the errors show up

After you choose Import in a Product Collection and pick the file, the Registry shows an import review screen with the errors it found. From there you can cancel and fix the file, or import only the rows that passed. Checking the file first saves that round trip.