DEV Community

life
life

Posted on

A certificate of conformity is seven fields and one eFile hook

Every post about this topic reads like a checklist. This one is a data model, because the underlying rule, 16 CFR part 1110, is written like a schema: it names fields, it names the party that owns each record, and it attaches a clock to retrieval. The rule does not describe testing, and section 1110.1 says so in one sentence, which is why an implementation that stores a lab PDF and calls the job done has modeled the wrong object.

The record

1110.11(a) enumerates content. Mapped to columns, a finished product certificate looks like this. One product per certificate, from 1110.13(a), so the row is keyed by a product identifier and not by a shipment.

CREATE TABLE finished_product_certificate (
  id                     BIGSERIAL PRIMARY KEY,
  -- 1110.11(a)(1): one of gtin/model/rn/serial/sku/upc/alternate + description
  identifier_kind        TEXT NOT NULL,   -- enum below
  identifier_value       TEXT NOT NULL,
  product_description    TEXT NOT NULL,   -- must be sufficient to match goods to paper
  -- 1110.11(a)(2): every applicable rule stated separately, so this is a set, not a string
  cited_rules            TEXT[] NOT NULL CHECK (array_length(cited_rules,1) >= 1),
  -- 1110.11(a)(3): certifier contact block
  certifier_name         TEXT NOT NULL,
  certifier_street       TEXT NOT NULL,
  certifier_city         TEXT NOT NULL,
  certifier_region       TEXT,
  certifier_country      TEXT NOT NULL,
  certifier_email        TEXT NOT NULL,
  certifier_phone        TEXT NOT NULL,
  -- 1110.11(a)(4): record keeper, may be a position title if always staffed
  record_keeper          TEXT NOT NULL,
  record_keeper_contacts TEXT NOT NULL,
  -- 1110.11(a)(5): month and year minimum, plus manufacturer identity and place
  manufacture_yymm       DATE NOT NULL,   -- day component unused by the rule
  manufacture_place      TEXT NOT NULL,
  manufacturer_contacts  TEXT NOT NULL,
  -- 1110.11(a)(6): MOST RECENT test date and place, per body relied on
  last_test_date         DATE NOT NULL,
  test_bodies            JSONB NOT NULL,  -- [{name, address, email, phone}]
  -- 1110.11(a)(7): attestation text, fixed wording for paper and non-eFiled forms
  attestation            TEXT NOT NULL,
  records_url            TEXT,             -- 1110.11(b) optional electronic access
  testing_exclusion      TEXT              -- 1110.11(c) replaces test date/place per rule
);

CREATE UNIQUE INDEX one_product_per_certificate
  ON finished_product_certificate (identifier_kind, identifier_value);
Enter fullscreen mode Exit fullscreen mode

The identifier set is closed in the rule, and the enum should mirror it rather than drifting.

CREATE TYPE certificate_identifier_kind AS ENUM (
  'gtin','model','registered_number','serial','sku','upc','alternate'
);
Enter fullscreen mode Exit fullscreen mode

Two constraints in the prose are easy to lose in a schema. First, cited_rules is an array because 1110.11(a)(2) requires each applicable rule, ban, standard or regulation to be identified separately. A concatenated string passes a text search and fails the requirement. Second, last_test_date is singular by design: 1110.11(a)(6) asks for the most recent date and place of testing per body relied upon, which is a "latest per lab" query, not a test log. Keep the log elsewhere and expose the derived field.

Who owns the row

The ownership rule is one sentence in 1110.7(a) and it is a join condition, not a policy. For product manufactured outside the United States, the importer as defined in the part is the certifier, and the definition in 1110.3 resolves that term to the importer of record, the party whose bond supports the entry. For domestic product, 1110.7(b) assigns the manufacturer, then reassigns to the private labeler when the goods are privately labeled unless the manufacturer already issued the certificate.

ALTER TABLE finished_product_certificate
  ADD COLUMN certifying_party_role TEXT NOT NULL
    CHECK (certifying_party_role IN ('importer_of_record','manufacturer','private_labeler'));

-- Gate query: a shipment may not reach entry filing with no certifier resolved.
-- It has to return zero rows before the entry is transmitted.
SELECT s.id
  FROM shipment s
  JOIN product p ON p.id = s.product_id
 WHERE NOT EXISTS (
         SELECT 1 FROM finished_product_certificate c
          WHERE c.identifier_kind = p.identifier_kind
            AND c.identifier_value = p.identifier_value
            AND c.certifying_party_role IS NOT NULL
       );
Enter fullscreen mode Exit fullscreen mode

Enforcement is where the model stops being documentation. Section 1110.13(a)(1) requires the data elements of 1110.11 to be eFiled in ACE at the time of filing the entry, or when the entry is transmitted, or when entry and summary go in together, using the Commission's PGA Message Set guide. Goods leaving a zone for consumption or storage sit inside that sentence, as do low value parcels entering under the de minimis statute at 19 U.S.C. 1321(a)(2)(C). Mail imports go into the Product Registry before arrival. The practical consequence for a pipeline design is that the certificate is a synchronous dependency of the entry, not a background job.

before:  manifest -> entry_filing(ace, pga=CPSC) -> customs_release
after:   manifest -> certificate_row.ensure_ready() -> entry_filing(...) -> release
                     ^ fails closed when identifier, cited_rules or attestation is null
Enter fullscreen mode Exit fullscreen mode

Retrieval has a stated latency. Section 1110.13(c) is what turns a missing row into a finding, because the certificate has to be in front of the Commission or CBP the moment either asks, and the rule reads that as within 24 hours. Section 1110.13(b) puts a second duty on the certifier, which is to furnish the certificate to each distributor or retailer. A store of record with a 48 hour export process is out of spec even when the data is complete.

Delegation is allowed and responsibility is not transferable. Section 1110.15 lets a certifier rely on another party to test, to certify components, or to enter data into the registry on their behalf, and then leaves those audit attributes with the party named in 1110.7 rather than with the delegate. In an audit trail that means the acting party is an attribute of the event while the accountable party is a column on the record.

Our fulfillment team runs three sites in China, 13,000 square meters at Suzhou, 8,000 at Dongguan and 3,000 at Shenzhen, and the receiving scan is where a missing identifier shows up as an unmatched row rather than as a claim. We hold no opinion on rates or transit promises, and the fields above come from 16 CFR 1110 rather than from a service level. FulfillNexa by SBT (fulfillnexa.com) operates the inbound and outbound handling for sellers shipping from these facilities.

Top comments (0)