# PPP charge-offs by originating lender

Every lender that made a Paycheck Protection Program loan, with the number and share of its loans that SBA lists as charged off in its loan-level release of September 30, 2024: 4,689 lenders, 11,468,206 loans, 643,039 of them charged off.

Published at https://pandemicdarlings.com/data/ppp-charge-offs-by-lender/ . Compiled table; not part of release pandemic-darlings-data-v1-2026-07-10. Built 2026-09-23.

## Files

| file | rows | bytes | sha256 | what it is |
|---|---|---|---|---|
| `ppp-charge-offs-by-lender.csv` | 4689 | 562527 | `02e30555e754376c663106c0de9dfdd485e693fc30130f9b8d83401d9319a1a7` | one row per originating lender (the served table) |
| `ppp-charge-offs-by-approval-month.csv` | 23 | 1419 | `a9bfb9fafc6bf4e59c8cb88221ca8250b00caae87b21e6c86b25701a0de2baa1` | charge-off rate by approval month and draw |
| `ppp-charge-offs-by-size-and-borrower.csv` | 40 | 2293 | `9bc612c7813dc8d081cf61ccb9fa96d8f7afce7134b688d35cb54b2b56e15786` | charge-off rate by size band, borrower group and draw |

`dictionary.csv` describes every column of every file: measured type, blanks, distinct values, range, example and meaning. `code/` holds the programs that rebuild every number, and the independent second program that checks them. `SHA256SUMS` carries the SHA-256 of every file here.

## What this is

One row is one originating lender, under the name SBA records in the `OriginatingLender` field. The table covers 11,468,206 loans: every loan in the release except four whose undisbursed amount is at or above the approved amount.

`charged_off_loans` counts loans whose `LoanStatus` is "Charged Off". Each lender's loans are also split by draw, by size (up to $20,833.33 against the rest), and by borrower type (sole proprietors, self-employed individuals and independent contractors against everyone else), and compared with other lenders' loans of the same kind.

Two companion files give the charge-off rate by approval month and draw, and by loan size, borrower type and draw, for all loans.

## How it was built

SBA's 13 CSV files were read with Python's standard csv module, with undecodable bytes replaced, so all 11,468,210 rows are read. Amounts are summed in whole cents. Size bands cut at $5,000, $10,000, $20,833.33, $50,000, $150,000, $350,000 and $2,000,000, as in the site's small-loan tables.

`expected_charged_off_other_lenders` is how many of the lender's loans would have been charged off if each had the charge-off rate of all other lenders' loans in the same draw, size band, borrower group and approval month. The `_same_state` version adds the borrower's state to that comparison and is computed for the 220 lenders with 5,000 or more loans.

Every figure was computed twice, by two independently written programs, one with Python's csv module and one with pandas: 54 of 54 comparisons agree. Both programs are in `code/`.

## Read this before you use it

**Charged off is not fraud.** The status covers loans that defaulted and loans that were never forgiven, for whatever reason. No row here says a loan was fraudulent.

**Small lenders give noisy rates.** A lender with 40 loans and one charge-off shows 2.5%. Compare lenders with a few thousand loans or more; the `ge_20000_loans` and `ge_5000_loans` flags mark the two groups used on the Key Findings page.

**Names are SBA's and are not merged.** One bank can appear under two spellings: Fulton Bank, National Association appears with and without the comma. Merging names that differ only in case, punctuation or "&" against "and" adds one lender to the 20,000-loan group and moves neither end of the range.

**Originating is not servicing.** 914,887 loans (8.0%) list a servicing lender under a different name. Some are the same bank spelled differently; some moved: all but 207 of First Source Federal Credit Union's 30,864 loans list PNC Bank as the servicer. Counted by servicing lender instead, the 62 servicers with 20,000 or more loans run from 0.14% to 23.8%.

**"Exemption 4" is not an outcome.** 169,086 loans carry a status that names a Freedom of Information Act exemption instead of Paid in Full or Charged Off. They are counted in `exemption4_loans` and in `loans`, not in `charged_off_loans`.

## What it does not measure

**It does not measure losses.** `charged_off_usd` is the approved amount of the charged-off loans, not what SBA paid lenders or recovered.

**It does not say why.** Whether a loan is charged off depends on the borrower, the lender, the servicer's handling of forgiveness and SBA's own review. The release records the outcome, not the cause.

**The as-of date is SBA's.** Statuses are those in the release dated September 30, 2024. A loan's status can change after that date.

## Rebuild it

`python3 code/reproduce_chargeoffs.py <folder with SBA's 13 CSV files> <work folder>` reads the release (about 5 minutes for two passes) and writes the three CSVs and `numbers.json`, which holds every figure quoted on the Key Findings page.

`python3 code/check_chargeoffs.py <folder with SBA's 13 CSV files> <work folder>/out/numbers.json` recomputes the figures with pandas, without the first program's code, and prints one PASS or FAIL line per figure. On 2026-09-23 it printed 54 PASS, 0 FAIL.

The 13 input files are the ones listed with their SHA-256 on the site's page for SBA's PPP release of September 30, 2024; all 13 matched on 2026-09-23.

## Citation

PPP charge-offs by originating lender, compiled from the SBA PPP loan-level release dated September 30, 2024.
