Sample dataset · CC0

Loan applications, decided and followed up.

A year of personal loan applications from 2024: who applied, for how much and why, whether they were approved, at what rate, and how each approved loan was doing on 30 June 2026. The monthly payment on every approved row is the number Excel's PMT function gives.

15 columns · 100 or 1,000 rows as a file · up to 1,000,000 rows generated here · CSV, JSON, JSONL, Excel, Parquet

Download the loan applications data

The 1,000-row file has 680 approvals, 35 charge-offs and 13 late loans, which is enough to watch risk climb as credit scores fall. The 100-row file has 67 approvals. It is better for checking a PMT formula than for measuring a default rate.

More applications

Credit work wants volume. At 100,000 rows there are about 67,900 approved loans and 3,840 charge-offs to learn from, and the approval curve by credit score is smooth enough to plot without any binning.

The first eight rows

The first eight rows of the 1,000-row file, all from the first days of January 2024. LN-000007 was denied, so its rate, payment and status are blank.

application_idapplication_dateageannual_incomeemployment_yearshome_ownershippurposeloan_amountterm_monthscredit_scoredti_pctdecisioninterest_ratemonthly_paymentloan_status
LN-0000012024-01-0141880001RentCredit card payoff25003668326.9Approved12.0483.08Current
LN-0000022024-01-01648550011OwnCredit card payoff50003661327.0Approved20.16186.23Current
LN-0000032024-01-0133845004MortgageSmall business115003670434.4Approved13.47390.09Fully paid
LN-0000042024-01-01561210002MortgageDebt consolidation85003668633.2Approved12.28283.46Current
LN-0000052024-01-02601390000MortgageCredit card payoff25006069525.5Approved12.8956.74Current
LN-0000062024-01-0258590001MortgageCredit card payoff170003670115.7Approved11.89563.75Current
LN-0000072024-01-0236365006MortgageWedding90003663632.5Denied
LN-0000082024-01-0364575002MortgageMedical50003669320.8Approved12.29166.76Current

Fifteen columns, and what each one holds

Column Type What it holds Example
application_id text LN-000001 upward, in application order. LN-000001
application_date date Day the application came in, 2024-01-01 to 2024-12-31, ascending through the file. Quieter at weekends. 2024-01-01
age integer Applicant age, 21 to 70. The decision never looks at it. 41
annual_income integer Stated gross annual income in USD, rounded to 500. 88000
employment_years integer Years with the current employer. 0 means under a year. 1
home_ownership text Rent, Mortgage or Own. Rent
purpose text What the money is for, one of seven. Credit card payoff
loan_amount integer Amount requested in USD, a multiple of 500. 2500
term_months integer 36 or 60. Bigger loans lean toward 60. 36
credit_score integer Score at application, 500 to 850. 683
dti_pct decimal Existing monthly debt payments as a percent of monthly income, before this loan. 26.9
decision text Approved or Denied. Approved
interest_rate decimal Annual rate in percent, set mostly by credit score and term. Blank when denied. 12.04
monthly_payment decimal Amortized payment in USD, the same number =PMT(rate/1200, term, -amount) gives. Blank when denied. 83.08
loan_status text Where an approved loan stood on 2026-06-30: Current, Fully paid, Late or Charged off. Blank when denied. Current

Practice questions to try

  1. What share of applications is approved, and how does it change with credit score? In the 1,000-row file: 68.0%. Below 600 it is 2 of 66; from 600 to 639 it is 24.3%; at 760 and above, 98.3%.
  2. Check the payment on the first row with Excel's PMT function. =PMT(12.04/1200, 36, -2500) returns 83.08, which is exactly what monthly_payment says.
  3. Which loan purpose has the highest charge-off rate among approved loans? Small business: 6 of 49, or 12.2%. Home improvement is lowest, 1 of 73.
  4. How much money was lent, and how much of it was charged off? $6,606,000 across 680 loans, of which $386,500, or 5.9%, was charged off.
  5. How does the charge-off rate compare for scores below 680 and for 720 and above? 11.8% (16 of 136) against 1.8% (6 of 341).
  6. Does debt-to-income matter? Compare applicants with a DTI above 35% against those at 20% or below. 53.4% approved against 85.3%.
  7. Are younger applicants approved less often, and is age the reason? 54.5% under 30 against 78.4% at 60 and over. The decision never reads age, so look at employment_years and annual_income instead.

Start in the dashboard view for the approval questions. The PMT check belongs in Excel, because the point is to see your formula and the column agree.

What one row is

One row per application, dated from 1 January to 31 December 2024 and ascending through the file. Weekends are quieter, January is busiest and December quietest. The first eleven columns describe the applicant and the request: age, income, years in the current job, whether they rent or own, what the money is for, how much and over how long, a credit score and a debt-to-income ratio.

decision is Approved or Denied. Only approved rows carry the last three columns: the interest rate, the monthly payment, and the loan's status on 30 June 2026, somewhere between eighteen and thirty months after the money went out. A denied application has no rate and no outcome, so those three cells are blank rather than zero.

dti_pct is the applicant's existing monthly debt payments as a percentage of monthly income, before this loan. That is how most lenders quote it, and it is why a high DTI on an application for a small loan can still be denied.

How decisions and prices were made

The decision follows rules a real lender would recognise. A credit score below 580 is almost always declined, and so is a DTI above 45%. Between those walls the odds of approval rise with the score and fall with DTI, and they drop for a loan larger than 35% of annual income, for less than a year in the current job, and for small business loans. There is chance in it, as there is in any underwriting, so two similar applicants can get different answers.

The rate is set by credit score band, from about 7.4% at 760 and above to about 24.6% below 600, then raised 1.1 points for a 60-month term, 0.8 for small business, and a little for every point of DTI over 20. monthly_payment is the standard amortized payment on that rate, rounded to the cent. On every approved row, =PMT(interest_rate/1200, term_months, -loan_amount) gives the same number.

Loan status depends on the same risk. Charge-offs run from about 1.5% of loans at the top score band to about 24% at the bottom, and higher for small business, for a DTI over 35% and for people new in their job. Better borrowers are more likely to have paid off early.

An age question worth asking

The decision rule never looks at age. Yet in the 1,000-row file, 54.5% of applicants under 30 are approved against 78.4% of those 60 and over. The gap is real, and its cause is in the other columns: the under-30s have been in their jobs for 1.2 years on average against 8.0 years, and earn about $68,500 against $86,500.

That is how a rule that never mentions a protected characteristic can still treat groups differently, through columns that move with it. It is the most useful thing in the file for anyone learning about fairness in credit models, and you can show it with nothing more than a pivot table.

What people use it for

  • Credit risk classes: approval models, default models and the gap between them.
  • Excel finance practice, starting with PMT and building up to an amortization schedule.
  • Fairness exercises: an outcome that differs by age even though age is never used.
  • Dashboards for a lending team: approval rate by score band, charge-offs by purpose.
  • Handling blanks that mean something, in the three columns that only approved loans fill.

License, and the people in it

This dataset is dedicated to the public domain under CC0 1.0. Put it in a course, a paid product, a test suite, a bug report, a screenshot, a conference talk or a book. There is nothing to ask for, nothing to sign and no attribution required. A link back is welcome and is not a condition.

Nothing in this file describes a real person or a real loan. There are no names, addresses, account numbers or social security numbers, and the lender is invented. You can show it in a classroom, a published notebook or a vendor demo without anyone's financial details in it.

Questions people ask about this file

Is this real lending data?

No. It is generated by a seeded program and describes no real borrower or lender. Its shape is close to the public peer-to-peer lending exports that credit courses often use, so the skills carry over, but it is small, clean where it should be, and CC0.

How is monthly_payment calculated?

With the standard amortization formula: the loan amount times the monthly rate, divided by one minus one plus the monthly rate raised to minus the term. The monthly rate is interest_rate divided by 1,200. In Excel that is =PMT(interest_rate/1200, term_months, -loan_amount), and the result matches the column to the cent.

Why are interest_rate, monthly_payment and loan_status blank on some rows?

Those applications were denied. A denied loan has no rate, no payment and no outcome, so the cells are empty rather than zero. If you average interest_rate, make sure your tool skips blanks, or filter to approved loans first.

Can I build a default prediction model with it?

Yes, with two cautions that apply to real lending data too. Only approved loans have an outcome, so a model trained on them learns nothing about the people who were turned away. And most loans are still Current, which means unfinished rather than safe. Use the 100,000-row file if you want enough charge-offs to learn from.

Does the approval decision use age?

No. Age is in the file, and the rule that decides approval never reads it. Approval rates still differ by age, because younger applicants have shorter job histories and lower incomes, and the rule does read those. The section on age above walks through it.