All work

E-commerce football pad maker, supplier to the NFL

Website sales into their accounting system, without retyping a thing

Their accounting system couldn't connect to their website, so every online sale was rebuilt by hand. Now import-ready files land every night at midnight.

The problem

Where the time was going.

This team makes football pads, supplies the NFL, and sells direct online through WooCommerce. Their accounting has run on Sage 50, an older desktop system, for years. All of that history lives there, so moving to a newer service wasn't worth what they would lose.

Sage 50 has no way to connect to the website. Each of the 4,500 to 5,000 online orders a year was re-keyed by hand as a sales order, an invoice, and a payment. Mistakes crept in: missed orders, the wrong SKU, the wrong tax, and refunds handled differently each time.

Custom shoulder pads were the hardest part. Customers build them from options like size, arch, and cup, so one product on the website stands for hundreds of physical inventory items, and the choices only live inside each order.

What we built

The fix.

A WordPress plugin that reads each day's WooCommerce orders and never changes them. It reads the builder choices on every custom pad and assembles the exact inventory SKU, out of 360 possible combinations. Add-ons like backplates and rib guards become their own rows, with their price moved off the pad so revenue is never counted twice.

Coupons, refunds, shipping, and state sales tax are all netted out. Refunds land on the refund date, and partial refunds are split fairly between a pad and its add-ons.

At midnight it builds two files, an inventory export and a journal entry, in the exact layout Sage 50 expects, and emails them to the accounting team. A monthly sales summary by state goes out on the 1st.

It never invents a balancing entry. If a day's debits and credits don't match, it stops, names the exact order behind the problem, and emails a plain-language note on what to do next. The controller handles day-to-day exceptions, like a new tax state or an unmapped product, from the admin pages without calling a developer.

Results

What changed.

80 to 90%less time spent on reporting
4,500+orders a year no longer re-keyed by hand
360possible SKUs behind one custom pad, worked out automatically

They kept the accounting system they trust, and the team's daily work is now checking numbers instead of typing them. It has run every night since February 2026, and every problem so far was caught by its own safety checks before bad numbers reached the books.

How it works

Stack and approach, in plain language.

  • WordPress plugin
  • PHP
  • WooCommerce
  • PhpSpreadsheet
  • WP-Cron
  • Sage 50 import
  1. The plugin only reads orders. It never changes anything in WooCommerce.
  2. A dictionary maps option labels to SKUs and add-ons. Coupons become negative rows, refunds mirror the original items on the refund date, and sales tax is credited per state.
  3. At midnight Eastern the scheduler builds both Excel files and emails them. A 4 AM check re-runs any day that didn't succeed, and every run is logged with its result.
  4. Both files are built from the same set of orders, so they always agree. Unmapped products and unbalanced days show up as warnings in the email instead of being quietly guessed at.

Next step

Got a similar problem?

Thirty minutes, no cost, no pitch deck. Tell us what is eating your time and we will tell you what we would build.

Book a free discovery call