How these figures are built

Every number on this site is counted from a public federal record. This page says which record, how the counting works, what we exclude and why, and where the data cannot answer the question you are asking. Nothing here is a summary of our intentions — it describes what the code does.

Where the data comes from

Five federal systems, each on its own refresh cycle. The date shown on any page is the date of the oldest system that page draws on, so a lagging job ages the stamp rather than hiding behind a fresher one.

Two smaller inputs are ours rather than a federal system's, and are labeled as such wherever they appear: the in-lieu fee rate schedules we transcribe by hand, and the documented purchases we obtain through public-records requests.

How often it refreshes

The site is a set of static files rebuilt on a schedule. There is no live database behind it. On weekday nights we re-read the federal sources, rebuild every derived figure from scratch and republish. A sale keyed into RIBITS this afternoon appears here tomorrow.

Two things move on their own clocks. Watershed links — which basins each bank's service area reaches — are refreshed monthly, because service areas and watershed boundaries change on the order of years rather than days. In-lieu fee schedules are updated when a program republishes one, which is not on any cycle we control.

A page's date is when we read the registry, not when the Corps wrote the record. Those are different, and the gap is usually a few days: transactions are keyed in after they happen.

How the figures are counted

Available credits

RIBITS does not publish a balance. It publishes a dated ledger of transactions, and we recompute it: everything ever released, minus everything ever withdrawn. That is the Corps' own formula, not an estimate of ours — but it is arithmetic we run, so a transaction recorded after our last read is not in it.

Fractional balances are shown as they compute. A bank holding 0.002 credits is not rounded to zero, because a whole-number formatter would render a real balance as sold out. Negative balances are published as they stand rather than clamped to zero: clamping would put us in disagreement with the federal record, and where the record is strange we would rather show the strangeness than hide it.

Credit sales, and why they are counts

What we call a credit sale is a credit withdrawal — the entry RIBITS records when mitigation credits are committed to a permit. We count those entries over the last 10 complete calendar years, with the year in progress shown separately because it is not comparable to a full one. The figures count ledger transactions, not distinct purchases: one purchase may produce several withdrawals — the ledger sometimes splits a single purchase across entries by credit classification — and the public record carries no contracts or invoices that could tell the difference. We also avoid calling withdrawals “debits”: in the federal mitigation rule a debit is the impact-side unit, a different thing.

We count transactions rather than summing credits, everywhere, and this is the single most important thing to understand about the numbers here. Credit classes are different units. A wetland credit, a linear foot of stream and a species credit are not quantities of the same thing, so a combined total would not mean anything. Only counts survive being added up.

Who is excluded, and why

Single-client banks are excluded from supply figures. These are banks approved to offset their own owner's projects — a state transport department's bank, for example — and they cannot sell to anyone else. Counting them would overstate what is actually for sale. This is why our headline bank counts run below the registry's own totals.

In-lieu fee sites are excluded from watershed sales measures. A program is a single counterparty however many sites it holds, and one large program's internal bookkeeping would otherwise outrank whole states on a measure that counts transactions.

Watersheds

A mitigation credit can only be used where the Corps says it may be, and that permission — a bank's service area — is drawn on watersheds rather than political lines. We group at the HUC-6 level: a HUC-8 is sub-regional and usually too small, while a HUC-4 is large enough to average away the local dynamics that decide whether credits are available where you need them. The links come from each bank's service area intersected with the USGS Watershed Boundary Dataset — the authorities perform the geometry and we store only the resulting links.

Two different measures are computed for each basin and are never blended. Sales in reach of a basin count a sale toward every basin the selling bank's service area covers, which answers "how much trade happens within reach of here" — and does not add up across basins, because one sale is counted in each. Sales generated in a basin count it toward the one basin the seller's own site sits in, which does add up exactly. A watershed makes the ranked board only if it scores highly on both.

Runway

Available credits divided by the average annual sales pace over five complete years, per class. It is an arithmetic ratio, not a forecast: it assumes today's pace continues and that no new bank opens, neither of which it can know.

Approval timelines

Two clocks, measured from the Corps' own milestone dates in ORM. The full clock runs from the first public notice of the sponsor's prospectus to the final decision, and includes the applicant's own preparation time. The regulator clock runs from the date a complete draft instrument was received to that same decision — the part the Corps controls. They answer different questions and are never combined.

Two exclusions apply to every median. A district needs at least four banks carrying both milestone dates before we print a median at all; below that the page says there is not enough data rather than publishing a middle value drawn from three cases. And decisions stamped 14 January 2025 are excluded: when the ORM portal launched it published a backlog of already-old decisions all bearing that date, and measuring a duration against a publication date would invent a review that did not happen then. Those records are kept and shown — they are real banks with real milestones — but they do not enter the arithmetic. Applying that exclusion moved the national regulator clock from 299 days to 296 and nearly halved the sample, which is the honest part of the change.

In-lieu fee instruments are excluded from bank timelines throughout: an in-lieu fee program is a different instrument from a bank and is tracked separately.

Where we add judgment

Most of this site is federal record. A few things are ours, and they are labeled wherever they appear because you should be able to tell the difference.

Credit topic labels

RIBITS records two credit fields per ledger entry: a four-word credit type, and the bank's own classification name — of which there are many hundreds across the registry. Both are shown verbatim on every listing. The topic labels and section headings you see are ours: we group classification names so that banks selling the same thing under different names appear together. Five banks may record "Palustrine Forested", "PFO - Palustrine Forested", "Forested Wetland", "Forested Wetlands" or simply "Forested"; we gather all five under one label.

Species groupings

The same problem in a harder form: one species can appear under several classification names at different banks. Assigning those names to a species section is our editorial judgment, reviewed by hand, and a bank may hold species credits we have not placed in any section.

Operators

The federal registry records a sponsor for each bank and has no parent-company field, so there is no official list of who runs what. We identify operators by matching sponsor names and contact details across bank records, reviewed by hand, and we publish an operator only once it resolves to at least five banks. Where the signals conflict we leave a bank ungrouped rather than guess. This makes the operator directory a deliberately partial view: a company's absence is not evidence that it holds no banks.

Public-notice summaries

The Corps' own description of each public notice is archived verbatim and never truncated. The one-line label beside it is an AI generated summary, written to make a long table scannable. Where we have no summary, the Corps' own description is shown instead.

What we publish about price, and what we do not

We publish no price for a mitigation bank credit. Bank sales are private contracts. The federal ledger records what was sold, when, and to whom — never for how much. Any site quoting a single market rate for bank credits is modeling one, and we do not.

In-lieu fee rates are different, and they are the only dollar figures on this site. An in-lieu fee program publishes an administrative fee schedule: a regulated list price for meeting a permit obligation through the program rather than by buying bank credits. RIBITS publishes none of these, so each rate here was transcribed by hand from the program's own published document, which is linked beside it, and carries that document's effective date. Schedules change when a program files a new one, so a rate may be several years old and still be current. 22 of 110 registered programs publish a schedule we hold. These are list prices, not market rates, and should never be read as what a bank credit sells for.

Documented purchases ("comps") are real transactions obtained through public-records requests to state and federal agencies. A record enters the set only when both its price and the identity of the bank are backed by a primary source document with no inference — a scraped total with no supporting document is not enough. Where the transaction can be matched to a specific withdrawal in the RIBITS ledger, it is, and that match is recorded; some legitimately cannot be matched, because a purchase order may record a dollar figure without the detail needed to tie it to one ledger entry. We publish that a sale happened — the bank, the date, the credit type and the quantity — and never what it cost. If you need that, ask us.

What this data cannot tell you

Every one of these is a real limit rather than a caveat for form's sake, and each changes what you should conclude.

The checks we run

Every build recomputes every balance from the credit ledger and requires two independently written programs to agree, to the decimal, on every balance we publish. That catches a stale read, a broken rebuild and silent drift. It is an internal consistency check: both sides come from the same reading of RIBITS, so it cannot catch us faithfully mirroring something wrong.

The build also refuses to publish an incomplete read of the registry, and fails outright if any dollar figure appears anywhere in the built site that is not a published in-lieu fee rate.

If something looks wrong

Tell us. Every page carries a "Report an issue" link that opens an email already naming the page you were on. A figure that disagrees with RIBITS is a bug on our side and we want to know about it — that is the whole promise this site rests on.