Your REC inventory is a ledger, not a spreadsheet

REC management breaks in Excel because a REC carries attributes, timing, and status that a spreadsheet can't control. Here's the minimum data model and the monthly reconciliation routine.

Share
Independence: ETRM Insider is vendor-independent. This article names no preferred products, and no vendor sponsored, paid for, or reviewed it. Our standards →

Most REC programs start the same way. Someone in compliance or structuring builds a workbook: one tab for contracts, one for certificates, one for retirements. It works for a year or two. Then the portfolio grows, a second registry shows up, an auditor asks how a number was derived, and the workbook's author changes jobs.

The problem isn't Excel. The problem is treating REC inventory as a list when it's a ledger. Every certificate has an origin, a set of attributes that decide where it can be used, a status that changes over time, and a cost that has to land somewhere. If you can't show every movement of every certificate, you don't have an inventory. You have a guess with formatting.

Why spreadsheets break

Attributes multiply. A REC isn't just a megawatt-hour. In California's RPS, 1 REC equals 1 MWh, but whether it counts, and how, depends on the facility's certification, the vintage, the contract it came from, and the portfolio content category it's claimed under. Other programs add their own eligibility rules. A spreadsheet stores those as columns. Nothing stops someone from typing the wrong one.

Registry timing and your timing don't match. You think about generation by month and contracts by delivery period. Certificates show up in the registry later, after meter data is reported and certificates are created. Transfers between counterparties happen on their own schedule. At any point, your books and the registry disagree for legitimate reasons. If you can't separate "timing" from "error," every difference looks like a problem, or none of them do.

Transfers aren't retirements. Moving certificates to a counterparty, into a different account, or into a retirement account are different events with different consequences. Retirement for compliance is the one that matters most and is the hardest to undo. California's process shows why. The CEC's WREGIS Reporting Guidance requires e-Tag matching to be done before RECs are retired, and says e-Tags can't be unmatched once the RECs are retired. The CEC's RPS Eligibility Guidebook, Tenth Edition limits un-retiring to one year after the retirement date or before the final eligibility determination, whichever comes first, and refers to a 36-month REC retirement rule. Get the sequence wrong in a spreadsheet and you find out during verification.

Cost has to follow the certificate. Bundled RECs come out of a PPA price. Unbundled RECs have their own price. Some get sold, some get retired, and finance wants the cost of what was retired for each program. If cost isn't attached to the certificate block, allocation becomes a month-end argument.

The minimum data model

Whatever you use, a vendor system, an in-house build, or a disciplined spreadsheet, it needs to hold at least these records and keep a history of changes to them.

  • Generator: facility name, registry ID, state program certifications and their effective dates, fuel type, location, and interconnection.
  • Contract: counterparty, start and end dates, original term (term length matters for compliance in some programs), bundled or unbundled, price, and expected volumes.
  • Certificate block: registry serial number range, quantity, generator, vintage month, and the contract it was bought under.
  • Eligibility: which programs and categories the block can be claimed under, and on what evidence. In California, that includes the PCC claim and the long-term or short-term contract flag.
  • Status: expected, issued, held, transferred, retired, or sold, with the account, date, and reason for every change.
  • Cost: the price per certificate and the cost basis that follows the block through to retirement or sale.

The rule that holds it together: a status change is a transaction, not an edit. You never overwrite "held" with "retired." You record a retirement event, with a date, an account, a quantity, and a user. That's what makes it a ledger.

The monthly reconciliation routine

Do this every month, not at the compliance deadline.

  1. Pull registry balances by account and certificate block as of month-end. Export the raw data and keep it.
  2. Pull your internal positions as of the same date, by the same keys.
  3. Match on serial number range, not just quantity. Matching on quantities alone hides offsetting errors.
  4. Classify every difference as one of four things: timing (expected certificates not yet issued, transfers in flight), data (wrong vintage, wrong generator, wrong contract), status (registry shows retired, you show held, or the reverse), or unknown.
  5. Age the breaks. Timing differences should clear by themselves. Anything older than a month or two should be treated as an error until proven otherwise.
  6. Check upcoming retirements against eligibility and timing rules before you submit them. Retirements are the hardest event to reverse.
  7. Sign off with a short note: balances, open breaks, and what's planned for retirement next month. That note is what an auditor wants to see.

If this routine takes a full week every month, the problem is usually upstream: contracts set up without the right attributes, or certificates loaded without serial ranges.

A vendor-neutral checklist

Use this to evaluate any REC tool, including the spreadsheet you have now.

  • Stores certificate blocks by serial range, not just quantities.
  • Tracks status as dated events with an audit trail, and doesn't allow silent overwrites.
  • Links every block to a generator and a contract.
  • Holds program eligibility and category as data, with the evidence attached.
  • Imports registry data directly, or from standard exports, without re-keying.
  • Reconciles registry against internal positions by serial range and classifies the breaks.
  • Carries cost per block through to retirement and sale.
  • Warns before retirements that break eligibility or timing rules.
  • Produces the reports your compliance filings need from the same data, not from a copy.
  • Can be restored from a backup, and someone other than its author can run it.

One more thing to watch if you operate in the West. The CEC's RPS program page notes that WREGIS's agreement with its current software provider ends on December 31, 2027, and won't be extended. Whatever you run, make sure your registry imports and exports aren't tied to screens and file formats that may change.

Use it this week

Pick one registry account. Reconcile last month-end by serial range, not quantity, and classify every difference into the four buckets above. If more than a handful land in "unknown," you've found where to spend the next month.


Drafted with AI assistance from my research notes and outline; reviewed, edited, and fact-checked by me. The opinions are mine.