PackGapby Atesen Software

For brands selling packaged goods in California, Colorado and Oregon

Packaging EPR data audit

Extended Producer Responsibility (EPR) laws ask producers to report packaging weight and material by state. PackGap checks your SKU file for missing weights, unit errors, conflicting materials, invalid categories and state gaps before you report.

  • Your file stays in your browser. It is never uploaded.
  • First 25 SKUs free. You do not need to sign up or talk to anyone.
  • Every check names its source and date. It finds data gaps and is not a compliance guarantee.

Audit a file

Your component file (CSV)

One row per SKU and component: weight, unit, material, category.

The audit runs as soon as you pick a file.

Sales by state (CSV, optional)

SKU, state, units. Adds the state coverage check.

No file ready? Download the component template, the sales template or the sample file. Field definitions are on the template page.

What you get back

A list of every problem at once, each with the SKU, the component, the row in your file and what to do about it. It matters because CAA's schedules charge per pound by reporting category, so a wrong weight or category changes the number a fee is based on.

TypeWhereProblemFoundWhat to do
MissingSAMPLE-002LBL-FILM-90A required value is blank or a placeholderComponent weight · CA, CO, ORblankWeigh one finished unit, component by component, or ask the supplier.
ConflictSAMPLE-005BTL-500-CLRThe same part looks typed in two unitsComponent weight32 g on row 2, 14.5 kg on row 16Looks like grams and pounds mixed up. Check the unit on both rows.
ConflictSAMPLE-016Component weights do not add up to the packaging weightTotal packaging weightcomponents add up to 192.5 g, the total says 150 gCheck quantities and units, or update the total.
ConflictSAMPLE-010CAP-28-PPOne component code, different materialsMajority materialPP on row 3, HDPE on row 35One specification for one part. Correct the wrong row, or give the second material its own component code.
ConflictSAMPLE-013BTL-500-CLRCategory and material disagreeReporting category: OR · ORPET in "HDPE (#2) - Bottles, Jugs and Jars (Clear/Natural)"This category is for HDPE.
MissingSAMPLE-014CAP-28-PPSold in a state, no category for that stateReporting category: CA · CAblankPick a category from the CA list for this component.

Real output from PackGap, run on our made-up sample file when this page was built. Press "Try the sample file" above to get the full 41 findings.

Every check, with its source

Six groups, 37 checks, all fixed rules: the same file always gives the same result, and it stays in your browser. Sources were opened on November 7, 2026.

Required fields

MissingA column named as required is not in the file

Compares your columns with the Required rows of the SPDC table for the states you sell into.

MissingA required value is blank or a placeholder

Blank cells and stand-ins such as TBD, N/A or ? in a required field. A field that only applies to some components is only checked on those: dimensions on 3D parts, resin code on plastic, coatings on paper, parent component on non-removable parts.

MissingA value is not one of the options

Packaging level must be primary, secondary or tertiary. Plastic form must be rigid, flexible or expanded foam. Yes/no fields must say yes or no. Material class must be a known class.

Units and numbers

MissingA weight is not a number

The cell holds text that cannot be read as a weight.

MissingA weight has no unit

No unit in the unit column, in the value or in the column heading. A number with no unit cannot be converted to the pounds CAA schedules price in.

MissingA weight unit is not a weight

Accepted: mg, g, kg, oz, lb and common spellings. Anything else, for example ml or each, is flagged.

To checkThe unit is typed into the weight cell

A cell such as 12g is read as 12 grams and pointed out, because many systems reject it on upload.

MissingA weight is zero or negative

Weight of the component alone must be above zero.

ConflictThe same part looks typed in two units

Same component code, and the two weights differ by close to a unit conversion (1000, 453.6, 28.35, 16 or 2.2, within 3%).

To checkA weight looks out of range

One component above 25 kg or below 0.01 g. These limits are ours, for spotting a wrong unit. They are not official.

To checkThe file mixes weight units

Allowed, and read correctly here, but a common source of errors when someone adds a column up by hand.

MissingComponent quantity cannot be used

Quantity per unit must be a number above zero. Fractions are accepted for shared packaging, such as one case across 12 units.

MissingA dimension is not a number

Length, width and height must be numbers. They are what decides small format.

MissingRecycled content is not 0 to 100

PCR is a percentage of the component.

Weight totals

ConflictComponent weights do not add up to the packaging weight

For each SKU: component weight times quantity, added up, against the total you give. Flagged above 2% or 1 g, whichever is larger. Skipped when a weight is missing, and the missing weight is reported instead.

ConflictEvery component carries the full packaging weight

A SKU with several components where each one shows the SKU total. Usually one figure pasted down a column.

ConflictOne SKU has two different packaging totals

The total differs between rows of the same SKU.

ConflictPlastic weighs more than the whole component

Plastic material weight is part of the component, so it cannot exceed it.

Material codes

ConflictThe same component is listed twice for a SKU

Same SKU, same component code, same state. Counted twice if nobody catches it. Use the quantity column for repeats.

ConflictOne component code, different materials

The same component code carries different materials across rows, after spellings such as PETE, PET and #1 are treated as one.

ConflictOne component code, different weights

The same component code weighs more than 2% differently across rows and the gap is not a unit conversion.

ConflictOne component code, different categories

The same component code is mapped to different reporting categories within one state.

To checkSame-looking parts, different materials

Two component codes with the same description and type but different materials.

ConflictMaterial class and material disagree

For example class Paper with material PET.

ConflictResin code and material disagree

For example resin code 2 on a PET part.

Reporting categories

MissingNot a category on the state list

The text is matched against the category names on the 2027 CAA schedule for that state, ignoring case and punctuation. California also accepts the code alone. The closest name is suggested. Your report year may use another version of the list, so CAA's portal has the final word.

ConflictCategory and material disagree

A glass part in a paper category, or a PET part in an HDPE category. Mixed, laminate, small-format and compostable categories are not limited to one resin, so those are not flagged.

ConflictCategory and plastic form disagree

A flexible part in a rigid category, or the other way round.

ConflictCalifornia plastic flag and plastic weight disagree

California names say with or without a plastic component. Flagged when a without category has plastic weight, or a with category has a plastic weight of zero.

To checkDimensions and small format disagree

California and Oregon define small format as two or more sides of 2 inches or less. Flagged when the dimensions and the category point opposite ways. Colorado is not checked, because its definitions are not public.

State coverage

MissingThe file does not say where anything was sold

No sales file and no state column. Without it nobody can tell which state each SKU counts in. Required fields are then checked against California, Colorado and Oregon together.

MissingSold in a state, no category for that state

The sales file shows the SKU in California, Colorado or Oregon and a component has no reporting category for it.

ConflictA sales SKU has no packaging record

A SKU appears in the sales file but not in the component file, so its packaging counts as nothing.

To checkA SKU has packaging but no sales

May be a discontinued product. May also be a code that differs between the two files.

MissingNot a US state

Accepted: two-letter codes and full names of the 50 states and DC.

MissingUnits sold cannot be used

Blank, negative or not a number.

To checkSold in a state whose list is not checked here

Minnesota, Maryland, Washington and Maine have packaging laws too. PackGap accepts those state codes but holds no category list for them, so it does not check categories there.

Free for 25 SKUs, one payment for the whole file

Founding offer: 40% off until November 30, 2026. The code FOUNDING40 is applied for you at checkout.

Free preview

$0
  • Every check on your whole file, with totals
  • Details for the first 25 SKUs on screen
  • No sign-up

30-day audit pass

$149$89.40 one time
  • 30 days of access to your complete audit
  • Details for every SKU
  • Download all findings as a CSV
  • Download your supplier request list
  • Run it as often as you like. It does not renew.

Prices are in US dollars and exclude VAT or sales tax, which Paddle adds at checkout where it applies. Full refund within 14 days of payment: see the refund policy.

Already have a licence key?

How this compares

If you want someone to map your obligations or sign off a filing, the services below have people who do that. PackGap only checks a file, right now, on your own computer. Prices as listed on November 7, 2026.

OptionPriceWhat it is
PackGap$0 for 25 SKUs, $149 for allAutomatic file check in your browser, without a call, a memo or a filing.
EPR Data Check pilot$499 for the first ten pilot brandsReadiness memo and SKU gap table for 25 to 500 SKUs, in 48 to 72 hours.
PackBOM EPR Data Audit$750 to $2,000 one timeObligation map, gap analysis, fee estimate and a 30-minute call, in 48 hours.
PackledgerFrom $1,188 a year, through ShopifyReports and filing help for Shopify stores. Its free Exposure Check estimates fees.
SPDC data requirementsFreeA document listing the fields. It does not read your file.
CAA reporting workbooksFree for registered producersOfficial, behind the producer portal. We have not seen them, so PackGap does not claim to match their layout.

What the state checks rely on

Opened on November 7, 2026. Programs change, so check the source before you rely on a line here.

StateWhat PackGap doesDated source
CaliforniaChecks against 95 category names and codesCAA 2027 schedule, October 1, 2026, which CAA calls preliminary and non-binding until the program plan is approved. CAA: SB 54 regulations finalized May 1, 2026. CalRecycle: plan received October 13, 2026; next category list by January 1, 2027.
ColoradoChecks against 61 category namesCAA 2027 dues schedule, October 1, 2026.
OregonChecks against 62 category names and the published small-format definitionCAA 2027 fee schedule, October 1, 2026. CAA category definitions, January 2025.
Minnesota, Maryland, WashingtonAccepts the state in your sales file and says it was not checked. No category check.CAA Producer Resource Center, which lists guidance for these states.
MaineAccepts the state and says it was not checked. No category check.Not on the CAA resource list on November 7, 2026.

What PackGap does not do

  • It does not tell you whether you are a producer, or whether a law applies to you.
  • It does not guarantee compliance or give legal advice. No findings means the checks found nothing, not that a report is right.
  • It does not file anything, and it does not connect to the CAA portal.
  • It does not estimate fees.
  • It cannot tell whether a weight is true. It can only tell you that it is missing, unusable or disagrees with another value.
Atesen Software logo

Who makes PackGap

PackGap is made by Atesen Software, a software company in Sakarya, Türkiye. We publish small, single-purpose tools: see our other apps, such as Unapprove for Xero. Orders are handled by Paddle, the merchant of record.

Questions before you pay, a file that does not read right, or a check you think is wrong: support@atesensoftware.com. Company details are on the support page.

Questions

Does my file leave my computer?

No. The file is read and checked inside this web page. It is not uploaded, stored or logged by us. The page sends an anonymous count of visits and audits (no file data), and, only if you buy or enter a key, the licence check and Paddle's payment window.

My columns have different names. Will it work?

Common names such as "UOM", "Part number" or "Weight (g)" are recognized. For anything else, open "Check the columns" under your file and choose the right one. Only the SKU, the component and the weight are needed to start.

Why does "required" sometimes not match what my report asks for?

CAA's own workbooks are only open to registered producers, so the required list comes from the Sustainable Packaging Data Council's public document, an industry group's reading of California, Colorado and Oregon. Where CAA tells you something else, follow CAA.

Which year's categories does it use?

The 2027 schedules CAA published on October 1, 2026. A report for another year may use another version of the list, so a name flagged here can still be valid there. The finding says which list it was checked against.

What about Excel files?

This version reads CSV. In Excel choose Save As, CSV.

What happens to the pass after 30 days?

The pass ends and nothing renews. You keep your downloads.