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.
| Type | Where | Problem | Found | What to do |
|---|---|---|---|---|
| Missing | SAMPLE-002LBL-FILM-90 | A required value is blank or a placeholderComponent weight · CA, CO, OR | blank | Weigh one finished unit, component by component, or ask the supplier. |
| Conflict | SAMPLE-005BTL-500-CLR | The same part looks typed in two unitsComponent weight | 32 g on row 2, 14.5 kg on row 16 | Looks like grams and pounds mixed up. Check the unit on both rows. |
| Conflict | SAMPLE-016 | Component weights do not add up to the packaging weightTotal packaging weight | components add up to 192.5 g, the total says 150 g | Check quantities and units, or update the total. |
| Conflict | SAMPLE-010CAP-28-PP | One component code, different materialsMajority material | PP on row 3, HDPE on row 35 | One specification for one part. Correct the wrong row, or give the second material its own component code. |
| Conflict | SAMPLE-013BTL-500-CLR | Category and material disagreeReporting category: OR · OR | PET in "HDPE (#2) - Bottles, Jugs and Jars (Clear/Natural)" | This category is for HDPE. |
| Missing | SAMPLE-014CAP-28-PP | Sold in a state, no category for that stateReporting category: CA · CA | blank | Pick 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.
- Sustainable Packaging Data Council (industry group): US EPR Data Requirements for California, Colorado and Oregon, v2, January 6, 2026
- Circular Action Alliance: 2027 California Producer Fees Schedule (preliminary and non-binding until the program plan is approved), October 1, 2026
- Circular Action Alliance: 2027 Colorado Producer Dues Schedule, October 1, 2026
- Circular Action Alliance: 2027 Oregon Producer Fees Schedule, October 1, 2026
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.
- Circular Action Alliance: 2027 California Producer Fees Schedule (preliminary and non-binding until the program plan is approved), October 1, 2026
- Circular Action Alliance: 2027 Colorado Producer Dues Schedule, October 1, 2026
- Circular Action Alliance: 2027 Oregon Producer Fees Schedule, October 1, 2026
- CalRecycle: SB 54 Covered Material Categories List (the January 2026 list is the newest on the page), January 2026
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.
- Circular Action Alliance: 2027 California Producer Fees Schedule (preliminary and non-binding until the program plan is approved), October 1, 2026
- Circular Action Alliance: 2027 Colorado Producer Dues Schedule, October 1, 2026
- Circular Action Alliance: 2027 Oregon Producer Fees Schedule, October 1, 2026
ConflictCategory and plastic form disagree
A flexible part in a rigid category, or the other way round.
- Circular Action Alliance: 2027 California Producer Fees Schedule (preliminary and non-binding until the program plan is approved), October 1, 2026
- Circular Action Alliance: 2027 Colorado Producer Dues Schedule, October 1, 2026
- Circular Action Alliance: 2027 Oregon Producer Fees Schedule, October 1, 2026
- Sustainable Packaging Data Council (industry group): US EPR Data Requirements for California, Colorado and Oregon, v2, January 6, 2026
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.
- Circular Action Alliance: 2027 California Producer Fees Schedule (preliminary and non-binding until the program plan is approved), October 1, 2026
- Circular Action Alliance: Oregon Reporting Category Definitions, v1.0, January 2025
- Sustainable Packaging Data Council (industry group): US EPR Data Requirements for California, Colorado and Oregon, v2, January 6, 2026
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.
- Sustainable Packaging Data Council (industry group): US EPR Data Requirements for California, Colorado and Oregon, v2, January 6, 2026
- Circular Action Alliance: 2027 California Producer Fees Schedule (preliminary and non-binding until the program plan is approved), October 1, 2026
- Circular Action Alliance: 2027 Colorado Producer Dues Schedule, October 1, 2026
- Circular Action Alliance: 2027 Oregon Producer Fees Schedule, October 1, 2026
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
- Every check on your whole file, with totals
- Details for the first 25 SKUs on screen
- No sign-up
30-day audit pass
- 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.
It was made in this browser and is saved here. Write it down: it unlocks the audit on another device, and we cannot show it again.
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.
| Option | Price | What it is |
|---|---|---|
| PackGap | $0 for 25 SKUs, $149 for all | Automatic file check in your browser, without a call, a memo or a filing. |
| EPR Data Check pilot | $499 for the first ten pilot brands | Readiness memo and SKU gap table for 25 to 500 SKUs, in 48 to 72 hours. |
| PackBOM EPR Data Audit | $750 to $2,000 one time | Obligation map, gap analysis, fee estimate and a 30-minute call, in 48 hours. |
| Packledger | From $1,188 a year, through Shopify | Reports and filing help for Shopify stores. Its free Exposure Check estimates fees. |
| SPDC data requirements | Free | A document listing the fields. It does not read your file. |
| CAA reporting workbooks | Free for registered producers | Official, 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.
| State | What PackGap does | Dated source |
|---|---|---|
| California | Checks against 95 category names and codes | CAA 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. |
| Colorado | Checks against 61 category names | CAA 2027 dues schedule, October 1, 2026. |
| Oregon | Checks against 62 category names and the published small-format definition | CAA 2027 fee schedule, October 1, 2026. CAA category definitions, January 2025. |
| Minnesota, Maryland, Washington | Accepts 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. |
| Maine | Accepts 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.
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.