Compliance & recordsv4.1.0

Packora

A per-SKU packaging register for US state EPR reports, with exact maths and each state's report pack.

For producers reporting packaging to US state EPR programs. Often replaces Packgine.

Single license $79 · Extended license $159 · paid once, yours for good

Try the live demoNo sign-up. The demo resets itself, so click anything.

What it does

Per-SKU packaging register

Each product's packaging by component, material and weight, stored as exact integer milligrams.

Sales in, not typed in

Upload Shopify, WooCommerce or Amazon order exports. Each order line counts once; canceled orders are reported, not counted.

Report pack per state

A material-totals CSV, a SKU-level detail CSV and a printable summary for each state and year.

Your PRO's format, filled

Set each state's template layout once, then download any year in it.

Filed years stay filed

Record a new weight from the year it changes. Every year you already reported keeps the weight it was filed with.

Fee estimates from your rates

Your rates times your tonnage, with your schedule's recyclable and non-recyclable adjustments. Always labeled an estimate, never a quote.

What each state costs you

Each state's estimated fee per unit sold, side by side, so you can weigh fees against sales.

Deadlines that reach people

Stepped reminders of each state's deadline go to the people who file, through your own SMTP.

Registration on file

Where you are registered, the number and the renewal date, with the gaps on the dashboard.

Data-completeness warnings

SKUs with no packaging, and units rows that match no SKU, are flagged and excluded, never silently dropped.

Recyclability by weight

The recyclable and recycled-content shares of your packaging, by weight, per SKU and per state.

Also: state names read as people type them, and weights that look like kilograms flagged.

Is it right for you?

What Packora deliberately doesn’t do.

  • US-state scope; no EU/Canada program logic and no PRO API integration.
  • Fee figures are estimates from the rates and eco-modulation adjustments you entered — no minimums or mid-year schedule changes.
  • You maintain the reference data (materials, deadlines, rates); verify with your PRO each cycle.
  • One company per installation; your team shares it with roles.
  • Annual granularity, matching the annual-report cadence.
  • Reminders reach people, not portals: Packora never files, submits or logs in for you.

Release history

Own It 4.1Client installations and your other toolsOct 4, 2026

For Packora, 4.1 makes two changes that every app gets. What’s new in 4.1 →

Own It 4.0It updates and backs itself upSep 29, 2026

For Packora, 4.0 means updates from inside the app: the Updates page checks for a new release with your license key, verifies Ownware's signature, takes a backup and… What’s new in 4.0 →

Own It 3.3What each state costs per unitSep 27, 2026

Packora 3.3 divides each state's estimated fee by the units you sold there and sets every state side by side, highest first, so you can weigh a state's fees against… What’s new in 3.3 →

Own It 3.2Filed years stay filedSep 26, 2026

The 3.2 wave gave Packora weights that change from a given year while every year already filed keeps its weight, units sold read from your Shopify, WooCommerce or…

Own It 3.1It writes to the people you serveAug 20, 2026

The 3.1 wave gave the catalog a way to reach the other side of the transaction: counterparty email through your own SMTP server, calendar feeds your own calendar…

Own It 3.0Works for your AI, not just for youAug 9, 2026

Over MCP an agent can read your register, pull a state tonnage report, list data gaps and register a SKU — with the same validation as the API, so an unknown material…

Own It 2.0API, 2FA, backups, dark modeAug 6, 2026

Packora 2.0 adds the 2.0 owner layer.

What’s in the zip

The tree as the zip ships it — the working leftovers the packager deletes are not listed

  • .htaccess
  • API.md
  • Dockerfile
  • LICENSE.txt
  • QUICKSTART.txt
  • README.md
  • assets/
  • bin/
  • config.sample.php
  • controllers/
  • deploy/
  • index.php
  • install/
  • manifest.json
  • offline.html
  • router.php
  • src/
  • sw.js
  • tests/
  • views/
src/Importer.php: a real module, the first 24 of 502 lines

Chosen as the largest module in src/ that is not one of the shared cores — this product's own logic, not a file every product carries.

<?php
/**
 * Importer.php — CSV import for SKUs and annual units-by-state.
 *
 * Treats every upload as adversarial input:
 *   - Columns are mapped BY HEADER NAME (never by position) with common aliases.
 *   - Every string is clipped to its VARCHAR width, every integer clamped to ±2e9 —
 *     a 9000-char SKU or 15-digit unit count lands truncated, never as a MySQL strict-mode 500.
 *   - Malformed rows are skipped with a per-line reason; the caller shows "imported N,
 *     skipped M" with the first reasons.
 *   - Sales rows for SKU codes that don't exist yet are IMPORTED AND FLAGGED (per-line
 *     warning + dashboard completeness warning) — never silently dropped. They join the
 *     register automatically the moment the SKU is created.
 * Own It 2.0: every importer takes $dryRun. In dry-run mode each row is parsed, validated and
 * classified EXACTLY as on a real import — including the lookup of the SKU and material a
 * component row refers to — but nothing is written. importComponents() is new in 2.0: entering
 * per-material packaging weights by hand is the single biggest chore in an EPR register, and it
 * is the one thing the 1.x importer could not do.
 *
 *   - Hard caps: MAX_BYTES on the upload, MAX_ROWS on parsed lines (stream-parsed with
 *     fgetcsv — a huge file never loads into memory).
 */
declare(strict_types=1);

Runs on: Web installer takes about two minutes; PHP 8.1+ with MySQL or SQLite, standard shared hosting compatible. Tested on PHP 8.3. Or run it in Docker: the Dockerfile is in the zip.

Technical owners can install it with one line and their license key: curl -fsSL https://ownware.io/install.sh | sh -s -- packora <your license key>

Nothing is obfuscated or encoded; what you read is what runs. Manual · API · the test run

Which license do I need?

It comes down to how many installations you need. Running your own business on one site is the Single license. A second domain of your own, or sites you build or run for other people, is the Extended license.

Single license$79
One (1) domain or subdomain · One business, running it on one site.
  • Install it on one domain or subdomain you own or operate
  • Change the source however you like for that installation
  • Run your own business on it commercially, client work included
  • Re-download the current build any time from your buyer portal
  • A second site, or an installation you hand to a client as theirs, needs the Extended license
  • No reselling, redistributing or sublicensing the source
  • Not for offering it to other people as a hosted service
Buy the Single license, $79
Extended license$159
Unlimited sites you own or operate, plus up to 10 client installations (white-label included) · Agencies, and anyone running it on more than one site.
  • Everything the Single license grants
  • Install it on as many domains as you own or operate — no cap on the number
  • Up to ten client installations, one per client project, handed over or hosted for each client; for more, buy another Extended license
  • White-label: remove or replace the product name and logo in the screens of client installations
  • Still no reselling or redistributing the source itself
  • Running it as a multi-tenant service others sign up for needs a SaaS agreement
Buy the Extended license, $159

Every download carries the full terms as LICENSE.txt. The complete wording is on the terms page.

After you buy

Updates

The app’s Updates page installs a new release with your license key, with the release’s signature checked and a backup taken first. Your download link always serves the current build. Download again any time from your order page or the buyer portal; there is no renewal fee.

Help

Email support for installation and for defects in the code as delivered: a person reads and answers every message. It does not cover custom development or server administration. What support covers

If it isn’t right

Refunds are handled by Lemon Squeezy as merchant of record, case by case. EU consumers keep the statutory 14-day right until delivery starts. Refund terms

If we disappear

It keeps running: your server, the full PHP source, no license check that can fail. If no stable release is published for 365 days, the domain limit lifts; after three such years your copy becomes MIT-licensed. The terms have the exact wording: continuity.

Questions

Can't I just use a spreadsheet?
You can — until the second state, the second year, or the first re-audit. Packora keeps one clean register: weights entered once per SKU, changed from the year the packaging changes, and every filed year reproducible, with exact integer maths and exports anyone can re-verify. When you file, record the filing: the pack is kept exactly as it stood, with a fingerprint, so a re-audit sees what you submitted even after your packaging changes.
Does this make me EPR-compliant?
No tool can claim that. Packora implements the record-keeping and report-preparation mechanics the duty assumes; your producer status, program registration, and filings are between you and your PRO.
Where do the fee numbers come from?
From you. Packora multiplies your material tonnage by rates you enter from your PRO's current fee schedule, labels the result an estimate, and refuses to fake a $0 for materials you haven't rated.
Will this run on shared hosting?
Yes. PHP 8.1+ with pdo — present on virtually all cPanel/Plesk hosts. MySQL and SQLite are both supported, and installation takes about two minutes through the web installer.
Are these state laws even in effect?
The programs are real and phasing in on different schedules — which is exactly why Packora doesn't hard-code any dates. Verify your obligations and deadlines with your PRO and the state programs directly.
Is there an annual subscription?
No. Packora is bought once, with no renewal.
Does it come with the fee schedules and deadlines built in?
No, and it is the first thing the manual says. Packora ships no fee schedules, no thresholds and no statutory deadlines. You enter the rates from your producer responsibility organization's current schedule and the dates that apply to you; the product does the arithmetic and labels every result an estimate.
What does it show for a material I have not entered a rate for?
The gap, not a zero. Packora refuses to print a fee it cannot compute, and reports the incomplete rows instead of quietly treating them as costing nothing.
Does it file my report for me?
No, and it is not advice. Packora produces the tonnage a report asks for from the data you supplied. Filing it, and confirming what you actually owe, stays with you and your adviser.
Will it remind us before a deadline?
Yes — a reminder ladder (60, 30 and 7 days by default) emails the people responsible as each filing deadline approaches, through your own SMTP, each step exactly once. Packora checks it on every dashboard visit and, once you add the daily cron line shown in Settings, on days nobody opens it. What it deliberately never does is file for you: the reminder reaches a person, not a portal.
Better together
Compliance Suite: Privara, Confida, Complia, Packora and Cyresora
Five registers that record GDPR requests, whistleblowing reports, NIS2 and CRA reporting deadlines, complaints and packaging data, on your own server.
5 tools for$299
$435 separatelySave $136

Covered in these guides

More about Packora

Self-hosted per-SKU packaging register for state EPR reporting — exact math, one-time price.

The problem it solves

US states are rolling out extended producer responsibility (EPR) laws for packaging, with Oregon, Colorado, and California leading a wave that includes Maine, Minnesota, and Washington. These programs put a recurring annual duty on producers: report the packaging you supply into each state, by material category and weight, to a producer responsibility organization — and pay fees calculated on it.

  • Every report assumes you can answer one question: per SKU, what packaging do you ship, and how many units went into each state
  • Most small and mid-size producers have that scattered across spreadsheets, or nowhere
  • The duty repeats every year

Every feature

  • A deadline reminder ladder that reaches people. Approaching EPR deadlines are emailed to the people who actually file — stepped reminders through your own SMTP, each rung sent once, checked on every dashboard visit and by a daily cron line you add once. Packora still never logs into a portal or submits anything on your behalf.
  • Per-SKU packaging register. Record every product's packaging bill of materials by component, material category, and weight, stored as exact integer milligrams.
  • Units sold by state × year. Import units sold via header-mapped CSV or manual entry; re-imports update the register in place.
  • Per-state, per-year report pack. Generate a material-totals CSV, SKU-level detail CSV, and printable summary for each state and year, plus a global all-states CSV.
  • Fee estimator. An operator-editable rate table multiplies your tonnage by rates you enter, always labeled ESTIMATE, and never fakes a $0 for unrated materials.
  • Deadline tracker. Enter your own per-state reporting deadlines and see due-soon and overdue countdown badges on the dashboard.
  • Data-completeness warnings. SKUs with no packaging components, and units-sold rows that don't match your register, are flagged and excluded, never silently dropped.
  • Installable mobile app (PWA). Add it to a phone or tablet home screen straight from the browser — a full-screen app served from your own server, with no app store involved. Business data is not stored offline on the device; what you see is read live.
  • Filed years stay filed. When a carton gets lighter, record the new weight from the year it changes. Every year you have already reported regenerates with the weight it was filed with.
  • Sales in, not typed in. Upload your Shopify orders export, a WooCommerce order-export file or Amazon's All Orders report. Packora adds up units per SKU, ship-to state and year; each order line counts once, and canceled orders and states you have not added are reported, not counted.
  • Your PRO's format, filled. Set each state's template layout once; download any year in it.
  • Eco-modulation and recyclability. Fee estimates with your schedule's recyclable and non-recyclable adjustments, and the recyclable and recycled-content shares of your packaging by weight.
  • Registration on file. Where you are registered, the number and the renewal date, with the gaps on the dashboard.
  • What each state costs you per unit sold. The fee estimator divides a state's estimated fee by the units you sold there that year, and lists every state you sell into side by side, highest first, so you can weigh a state's fees against what you sell there. Worked out from your own rates: an estimate, not a quote.
  • Updates from inside the app. The Updates page installs a new release with your license key: Ownware's signature is checked, a backup is taken first, and the app puts the previous version back by itself if the update is interrupted or the database step or start-up check of the new version fails. It never checks by itself.
  • Backups by themselves. Automatic backups, an optional copy to S3-compatible storage you own, and a weekly check that the latest backup reads back. The Health page names anything that needs attention.
  • Own It 4.0.1 — fixes and an up-to-date manual. For Packora, 4.0.1 fixes an installer that had lost its styling, a rollback that a page opened during an update could stop and a command-line update that ended in an error after putting the previous version back. Its manual, FAQ and QUICKSTART now cover everything 4.0 added, including two Nginx rules that keep the data folder private. Your license covers it: press Check for updates on the Updates page, or download it from your order page.
  • Own It 4.0.2 — the installer opens on every host. For Packora, 4.0.2 fixes a fresh install on an Apache host: the one-page setup at /install/ looped back to itself and never opened, and now it opens. Your license covers it: press Check for updates on the Updates page, or download it from your order page.

Release notes in full

  • Own It 4.1: client installations and your other tools. For Packora, 4.1 makes two changes that every app gets. An Extended license bought from October 4, 2026 covers up to ten client installations, one per client project: hand each one over to the client or host it for them, with the client's logo and colors from the app's branding settings. The API reference now shows how to connect Packora to Zapier, Make or n8n, using its own webhooks and API key. Your license covers the update: press Check for updates on the Updates page, or download it from your order page.
  • Own It 4.0: it updates and backs itself up. For Packora, 4.0 means updates from inside the app: the Updates page checks for a new release with your license key, verifies Ownware's signature, takes a backup and puts the previous version back by itself if the update is interrupted or the database step or start-up check of the new version fails. A new install can start with a sample business and remove it in one click; backups run by themselves, with an optional offsite copy and a weekly check that the latest one reads back; and the Health page says whether the install is looking after itself.
  • Own It 3.3: what each state costs per unit. Packora 3.3 divides each state's estimated fee by the units you sold there and sets every state side by side, highest first, so you can weigh a state's fees against what you sell there. Worked out from your own rates: an estimate, not a quote.
  • Own It 3.2: filed years stay filed. The 3.2 wave gave Packora weights that change from a given year while every year already filed keeps its weight, units sold read from your Shopify, WooCommerce or Amazon order exports, and each state's report laid out in its PRO's own format. Fee estimates carry your schedule's recyclable and non-recyclable adjustments, the register shows recyclable and recycled content by weight, and each state's registration sits on file with its renewal date.
  • Own It 3.1: it writes to the people you serve. The 3.1 wave gave the catalog a way to reach the other side of the transaction: counterparty email through your own SMTP server, calendar feeds your own calendar subscribes to, attachments filed where the paperwork belongs, and export presets other people's software imports. Each outbound feature ships switched off and runs on your own credentials; a failed send is recorded, and the action that triggered it stands. What this app gained is listed at the top of this section.
  • Own It 3.0: works for your AI, not just for you. Over MCP an agent can read your register, pull a state tonnage report, list data gaps and register a SKU — with the same validation as the API, so an unknown material is refused rather than invented and tonnage never lands where a regulator cannot see it.
  • Own It 2.0: API, 2FA, backups, dark mode. Packora 2.0 adds the 2.0 owner layer. Upgrade by replacing the files — the database migrates itself, and it is still the same one-time purchase.

Browse self-hosted: Compliance software

Packora$79 once
Demo Buy