# Limits

Vintage has few hard limits, and it states each one at the moment it applies, with what to do next. They are collected here so you can plan around them: what each limit is, where you meet it, and how to work with it. Each links to the page that explains the rule in full.

## Uploading files

| Limit | Value | What happens, and what to do |
|---|---|---|
| Accepted file types | CSV and Excel `.xlsx` | Anything else, including older Excel `.xls`, is refused when you choose it. Save as `.xlsx` or export to CSV. |
| One Excel file | 50 MB | Refused, with guidance to export to CSV. |
| Excel files in one upload | 5 | Refused, with guidance to export to CSV or split into separate uploads. |
| Excel across one upload | 100 MB | Refused, with the same guidance. |
| One CSV file | About 2 GB | Refused while it is being added, with a message saying so. CSV has no other size limit. |
| Sheets read from a workbook | The first sheet only | The sheet read and the number left out are named. Export the sheet you want on its own. |
| Columns within one file group (Snapshot, Origination, or Transaction files) | Identical column names, in any order, for every file in the group | A mismatched file blocks **Continue** until you remove or fix it. |
| Column headings | Distinct and non-blank | A file with a duplicated or blank heading cannot continue. Rename the column in your export. |
| Rows | Same number of cells as the heading row | A mismatched row is skipped and counted. Quote values that contain commas, or fix the export. |
| Required Standard fields | Loan ID only | A file with no included column mapped to Loan ID cannot continue. |
| Distinct values in a status, flag, or Transaction Type column | 50 | A column with more than 50 is flagged as likely mapped to the wrong field, instead of showing an unusable list. Check that it is really a status, flag, or type column, or map it elsewhere. |
| Numeric values | Up to 14 digits before the decimal point; six decimal places | A value with 15 or more digits before the decimal point is treated as no value and counted. Values needing more than six decimal places are rounded. |
| Drafts | No expiry | A draft stays resumable from Upload History until you finalize or delete it. |

See [File requirements and parsing rules](/reference/file-requirements-and-parsing-rules/) and [Choosing files](/uploading/choosing-files/).

## The Review verdict

| Limit | Value | What happens |
|---|---|---|
| **Ready with gaps** threshold | Any modeled output under 50% of loans ready | The verdict turns amber. You can still finalize. |
| **Blocked** | No usable data, beyond identifiers, tied to a Loan ID | The upload cannot be finalized. |

See [Reviewing before you finalize](/uploading/reviewing-before-you-finalize/).

## Modeling a segment

### The segment size maximum

The Modeling screen analyzes a **segment**, the slice of your portfolio you define with the Segment Builder, up to a maximum number of loans. That maximum **belongs to your organization**; it is not one number shared by every customer.

What sets it is how many months of history your data spans: a deeper history gets a lower loan maximum, and your maximum moves only when your own history gets deeper. Past it, the screen shows **Segment is too large**, states your segment's loan count and your organization's maximum, and asks you to narrow the segment. See [The Modeling screen](/modeling/the-modeling-screen/).

### Other modeling thresholds

| Limit | Value | What happens |
|---|---|---|
| Thin history (credit loss) | Five or fewer loans backing the deepest age the loss curve draws as observed, or a cohort (the loans in your segment) on the WARM (weighted-average remaining maturity) fallback | The lifetime-loss headline carries **thin history, directional only**. The figure is still shown. |
| Thin history (prepayment) | Fewer than 10 loans measured at the last age the speed chart draws as observed | The headline speed carries **thin history, directional only**. The figure is still shown. |
| Prepayment speed | Two consecutive monthly snapshots | A cohort seen in only one month has no speed yet and shows a dash instead of a figure. A snapshot for the next month resolves it. |
| Inferred payoff buffer | The final three months of a loan's term | A loan that disappears from your file within its last three months is treated as matured on schedule, not as a prepayment. |
| A segment count that takes too long | No fixed value | Vintage retries once quietly, then says the count took too long and asks you to narrow the segment. |
| Selecting every value of a very large checklist | No fixed value | When the full set is too large to apply safely, Vintage asks you to narrow your search rather than applying a shortened list. |

## Pricing inputs

These inputs are clamped. A figure typed past a limit changes to the limit, and a short line under the field names it, such as "Capped at 50%, the maximum." The box and every result always show the same number.

| Input | Limit |
|---|---|
| Proposed rate | 0% to 50% |
| Origination cost, annual servicing cost, upfront fees, annual recurring fees | At most 100% of the loan amount when entered as a percentage |
| Loan amount | Cannot be negative |
| Term | 1 to 600 months, in whole months |
| Target ROA | 0% to 20% |
| Capital allocation, target ROE | 0% to 100% |
| Funding (FTP) curve (funds-transfer pricing: your cost of funds by term) | Required before any pricing result appears. Months past the curve's longest term are funded at its longest rate, held flat, and the screen says so. |

See [Pricing a loan](/modeling/pricing-a-loan/).

## Codes, links, and sessions

| Limit | Value |
|---|---|
| Email verification code | 6 digits. Expires after a short window; wrong attempts are limited. |
| **Resend code** | Available again 30 seconds after each send |
| Password reset link | Expires after one hour |
| Session | 60 days, extended by any use |
| New-address code when changing your email | Cannot be resent on its own; start the change over |

See [Signing in and sessions](/account/signing-in-and-sessions/).

## Retention after a delete

| Limit | Value |
|---|---|
| Cell values of deleted uploads | Purged 90 days after deletion |

**Tip:** A very large backfill (years of history loaded at once) can take a while to process, and you do not need to wait for it. Once the files have uploaded you can leave: Vintage emails the person who started the upload when the files are ready for Column Mapping, and again when a finalized upload has finished being folded into the portfolio.

## Related

- [File requirements and parsing rules](/reference/file-requirements-and-parsing-rules/)
- [The Modeling screen](/modeling/the-modeling-screen/)
- [Pricing a loan](/modeling/pricing-a-loan/)
- [Security and data protection](/reference/security-and-data-protection/)
- [Emails Vintage sends](/reference/emails-vintage-sends/)