Skip to content

Charge-offs and recoveries

View as MarkdownOpen in Claude(opens in a new tab)Open in ChatGPT(opens in a new tab)

A charge-off is the amount of a loan the lender writes off as uncollectible. A recovery is money collected later on a loan that was already charged off. The difference between the two, the net charge-off, is the loss. Every credit-loss figure in Vintage is built from net charge-offs: the loss curve, the expected lifetime loss, and the credit-loss line in Pricing.

Below: where you see charge-offs in Vintage, which fields carry them, and how Vintage handles the situations real loan exports produce. How net charge-offs become the loss curve is on Credit loss measurement.

  • Upload Review. Before you finalize an upload, the credit-loss card says how many loans are ready for credit loss and, beside that count, what the data says about charge-offs. When a column of your own proves a charge-off per loan (an amount or a date), the card counts them over the same loans: “8 of 60 loans recorded a charge-off.” When charge-offs come only from a classified flag, a status value, or a typed ledger, it names that source instead: “Charge-offs come from your Charge-Off Flag values, not a per-loan amount or date.” When nothing carries them, it says “Nothing in this data reports charge-offs yet.” See Reviewing before you finalize.
  • Portfolio screen. The summary band carries the same three statements for the whole book (for example “120 recorded a charge-off”), and each loan’s Status column reads Charged off when that is how Vintage resolved its ending. See The Portfolio screen.
  • Modeling screen. The credit-loss section plots the cumulative loss curve and the expected lifetime loss. See Reading the credit-loss section.
  • Pricing. The expected credit loss component of the required rate is projected from the measured net loss rate of the cohort (the loans your segment selects). Vintage applies no assumed loss severity or loss-given-default figure: a book that reports only gross charge-offs has net equal to gross. See Loan pricing.

How you provide charge-offs and recoveries

Section titled “How you provide charge-offs and recoveries”

Charge-offs can arrive on snapshot files, on a transaction file, or both. Map whichever columns your core exports:

FieldFile group (kind of file)What it gives Vintage
Net Charge-Off AmountSnapshot, TransactionThe loss directly (Method A)
Charge-Off AmountSnapshot, TransactionThe gross loss (Method B)
Recovery AmountSnapshot, TransactionRecoveries, netted against Method B
Charge-Off FlagSnapshot, TransactionThat a charge-off happened, and when (Method C)
Loan Status or Closure ReasonSnapshotA value you classify as Charged off works like the flag
Transaction Type with Transaction AmountTransactionA typed ledger: each row’s amount is read by the kind you classified its code as
Charge-Off DateSnapshotThe exact date of the charge-off
Transaction DateTransactionWhen each ledger event happened
Original Loan AmountOrigination, SnapshotThe per-original-dollar denominator for loans that were already seasoned when your data begins

The three credit-loss methods, in plain words:

  • Method A: direct net loss. You report the net charge-off. Vintage books it.
  • Method B: gross charge-off. You report the gross charge-off, ideally with recoveries. Vintage subtracts the recoveries and books the result at the month of the charge-off. With recoveries reported, A and B are equally accurate, so Vintage never suggests switching between them.
  • Method C: explicit event. You report only that a charge-off happened (a flag, or a status value classified Charged off). This names the event and dates it, but carries no loss amount.

A flag or status value means a charge-off only because you said so. At Column Mapping you classify each value (CO, Y, 1, or whatever your core uses) as marking the event or not; Vintage never guesses, and an unclassified value counts for nothing. See Classifying values. The full method table is on Modeling methods.

Each loan books one net loss, never negative:

Li=max⁡(0, ∑tCOi,t−∑tRECi,t)L_i = \max\Big(0,\ \sum_t \mathrm{CO}_{i,t} - \sum_t \mathrm{REC}_{i,t}\Big)

CO is the loan’s gross charge-offs and REC its recoveries, summed over every month t of its history. When you report a Net Charge-Off Amount, the sum of the loan’s net figures takes the place of the difference, under the same floor at zero. The loss books at the loan’s charge-off month, which is decided by the rules on How a loan’s ending is decided. The principal the charge-off removes from the loan’s balance, the figure behind the default rate that runs the balance off in the projected tail on Credit loss measurement, is that booked loss, floored at zero and capped at the balance the loan carried at the start of the charge-off month.

A worked example used through the rest of this page: a $20,000 auto loan originated in January 2022 is charged off in September 2023, at age 20, with a $12,000 charge-off. Its net loss is $12,000, booked at age 20, unless something below changes it.

A loan charged off before your data begins

Section titled “A loan charged off before your data begins”

If a loan’s charge-off is already on the very first row Vintage ever sees for it, and the loan was originated before your data begins, it arrived already ended. Vintage never saw it at risk, so it has no age at which to place the loss. Dating the write-down to the month you started exporting would record a real loss at an invented age, against a denominator that never existed.

Such a loan books no event and no loss and is held out of the curves. It is counted, and the Portfolio screen shows its ending (Charged off) with a faint “Closed before data begins” beneath it. A snapshot from before the loan closed is what would bring it in.

Recoveries net against the charge-off at the loan level, whenever they arrive. In the example, if a $3,000 recovery is reported in March 2024, six months after the charge-off, the loan’s net loss becomes $9,000, still booked at age 20, the age of the charge-off. A recovery reported months later is never dropped, and it never moves the loss to a later age.

A recovery reduces the loss to zero and no further. If recoveries on the example loan totaled $15,000, its booked loss would be $0, not −$3,000. A negative loss would subtract from the cohort’s cumulative curve and its expected lifetime loss, which recoveries on one loan must never do.

When the data establishes a charge-off (a classified flag or status, or a Charge-Off Date) but the loan’s amounts net to zero or below, for instance a net column that shows only the recoveries of a write-down the file never contains, the loan still counts as charged off and books a loss of zero.

A recovery reported as a negative charge-off

Section titled “A recovery reported as a negative charge-off”

Some cores report a recovery as a negative figure in the charge-off column in a month after the charge-off. Vintage reads that exactly as it reads a separate Recovery Amount: it nets against the loan’s loss, down to zero and no further.

A charge-off column that is a running total

Section titled “A charge-off column that is a running total”

Many cores export amount columns as a life-to-date running total (or a year-to-date total that resets each January) rather than each month’s own activity. Read as monthly activity, a running total would count the same charge-off once for every month it stays in the file. So the reporting basis of every amount column is a fact you declare at Column Mapping, and Vintage converts a running or year-to-date column into monthly increments before any math. When a column’s values only ever climb, Vintage cannot tell the two apart, so it asks, and the upload cannot be finalized until you answer. See Declaring formats.

In the example, a charge-off column declared as a running total that reads 12,000 in September, October, and November books $12,000 once.

A loan that predates your data. When a running-total column’s history began before your data does, its first reported value is a total brought forward from months Vintage could not see. That first value seeds a baseline and books nothing; every later increase still books its true increment. Booking the brought-forward total as an event in the first month Vintage happens to observe would record a real loss at an invented age.

The same charge-off figure repeated after the charge-off

Section titled “The same charge-off figure repeated after the charge-off”

A column you have not declared as a running total can still keep showing the charge-off figure in the months after it. Vintage reads each later amount against the figure already standing:

After the charge-off, the column readsVintage books
The same figure, unchanged (12,000 again)Nothing. It is the same figure re-exported.
A higher figure (12,500)The increase (500), once, as a true-up
A different, smaller figure (400)The 400 in full. By falling, the column has shown it reports each month’s own activity.

Recoveries keep netting throughout. A book that re-exports the same charge-off every month cannot inflate its own losses, and a book that reports a genuine later write-down still has it counted.

A charge-off reported after the loan has already ended

Section titled “A charge-off reported after the loan has already ended”

A loss or recovery amount reported after a loan’s ending books at the loan’s terminal age, the age of its ending, not at the age it was reported. The loan’s timeline ends where its ending is, and later true-ups are folded back onto it. In the example, a $500 true-up reported in June 2024 books at age 20. The months after the ending are otherwise left out of the curves. See How a loan’s ending is decided.

A snapshot and a transaction file reporting the same charge-off

Section titled “A snapshot and a transaction file reporting the same charge-off”

When a snapshot and a transaction file both report the same quantity (a charge-off, a recovery) for the same loan in the same month, they are almost always describing one event. Adding them would double the loss. The snapshot wins and the ledger figure is set aside: per loan, per month, per quantity, never summed. Because the rule is per quantity, a loan can take its charge-offs from one feed and its recoveries from the other when each is reported in only one.

Vintage does not claim the snapshot is the better source. A book whose ledger is more accurate is a real shape, and only you can say which feed is right for yours.

If your book reports Charge-Off Amount and there is no Recovery Amount column anywhere in your data, the whole gross charge-off books as the loss, which overstates it. This is the one case where Review suggests a field to improve accuracy: it asks for Recovery Amount, the cheaper addition, and names Net Charge-Off Amount as the equally accurate alternative.

In a book that does report recoveries, a charged-off loan with no recovery value recovered nothing. That is a measured zero, and it never triggers the suggestion.

A charge-off amount is a loss, never a prepayment

Section titled “A charge-off amount is a loss, never a prepayment”

Unless partial charge-offs are active (below), a charge-off reported as an amount ends the loan as a loss whether or not a flag accompanies it, and the charged-off principal is kept out of the prepayment measure. Writing off a balance is not the borrower paying it early. Charge-off and recovery amounts from a transaction file feed the same loss measure as snapshot columns.

Loans that keep reporting after a charge-off

Section titled “Loans that keep reporting after a charge-off”

Whether a charge-off ends a loan is a fact about your exports, and Vintage never guesses it. Most cores drop a loan from the file once it is charged off, so by default a loan’s first charge-off is its ending and any months reported after it are excluded from the curves.

Some books carry partial charge-offs: a loan is written down in part and keeps performing. Partial-charge-off handling activates only where your own facts say so:

  • your status vocabulary can actually answer the question: it has a value classified Charged off and at least one value classified Open (still active), so whether a loan is still alive is decidable month by month; or
  • you have declared that charged-off loans can survive a partial write-down.

A vocabulary that names charge-offs but never names a live loan decides nothing, and your declaration governs instead.

Where you answer it. When an upload contains loans that keep reporting a balance after they were charged off, Review shows a Portfolio semantics card saying how many, and asks whether a charged-off loan leaves your exports or can survive a partial write-down. It is never blocking, it is prefilled with the suggested default (it leaves), and the answer applies to the whole portfolio. The card does not appear when your classified status values already decide the question. You can change it at any time on the Fields screen’s Portfolio semantics section, which also says when your classified status values already decide the question. See Fields.

What changes when it is active. A charge-off amount reported in a month whose status you classified as active books as a loss in its own month, and the loan stays in the at-risk and prepayment denominators until a real ending: a Charged off status or flag month, a payoff, an exit, or the end of its reporting. A month with no status is not treated as alive; the absence of a status never proves life. Recoveries still net at the loan level, and the loan’s lifetime loss is identical to what it would book under the default. Only the timing moves. Charge-off amounts from a transaction ledger keep the default treatment.

A clean book versus a book with no charge-off data

Section titled “A clean book versus a book with no charge-off data”

These two look alike as a flat line and mean opposite things, so Vintage keeps them apart:

  • No charge-off data at all. No accepted upload carries a charge-off amount, neither a Net Charge-Off Amount or Charge-Off Amount column nor a typed ledger with a code classified as a charge-off. A flag or status alone does not count, since it carries no amount. The credit-loss section says there is no charge-off data, the lifetime loss shows a dash, and Pricing leaves the credit-loss line out of the required rate entirely, with a notice that a real loan would need to earn more than the rate shown. An absent loss feed is never shown as a loss-free book.
  • Charge-off data exists, and the cohort lost nothing. That is a measured zero, and the headline says so: “No charge-off dollars measured in this cohort.” Pricing carries the equivalent line. A zero curve is drawn on a full 0% to 100% axis so it reads as zero.

The measured-zero statement is withheld when some loans in the cohort carry a charge-off marker with no amount, or when some loans in it arrived already ended. There the zero is neither measured nor missing but partly unknowable, so Vintage claims neither. On Review, a book where nothing has charged off is stated as a positive classification: the loans are modeled as performing, which is a measured zero, not missing data, so they still count in the loss curves.