Payment History Profiles in Metro 2®
The Payment History Profile is one of the most important fields in Metro 2® reporting. It provides a month-by-month record of payment behavior that directly influences credit scores.
1. Structure Overview
The Payment History Profile (Field 21) is a 24-character string representing 24 months of payment data. Position 1 is the most recent reporting month; position 24 is the oldest.
Payment History Profile: "000000000000000000000000"
^^^^^^^^^^^^^^^^^^^^^^^^
Position: 1 1 2 2
1234567890123456789012345
Position 1 = Current reporting month (most recent)
Position 2 = Previous month
Position 3 = Two months ago
...
Position 24 = 23 months ago (oldest)
Direction: reads LEFT to RIGHT, newest to oldestInfo
Payment history must be updated every month, even if the account status has not changed. Each month, shift all values one position to the right and insert the new month's status at position 1.
2. Status Codes
Each position in the Payment History Profile uses one of these single-character codes:
Current / Positive
0Current (0-29 days past due date). This is the most common value for accounts in good standing.Delinquent
130-59 days past due260-89 days past due390-119 days past due4120+ days past dueSpecial Markers
DDeferred payment / forbearance / bankruptcy stayECollection accountGCollection (government)LCharge-offBNo payment history available (before account open) (space) No payment history for this position3. Monthly Increment Rules
Every reporting month, you must shift existing history one position to the right and insert the new status at position 1. The oldest value (position 24) drops off.
// Monthly update algorithm
function updatePaymentHistory(currentProfile, newMonthStatus) {
// Shift right: drop position 24, insert new status at position 1
const updated = newMonthStatus + currentProfile.substring(0, 23);
return updated;
}
// Example: Account is current this month
const before = "100000000000000000000000";
// ^ Position 1 was "1" (30 days late last month)
const after = updatePaymentHistory(before, "0");
// Result: "010000000000000000000000"
// ^ Position 1 is now "0" (current this month)
// ^ Position 2 is now "1" (last month's 30-day late shifted right)
// Example: Account goes from current to 30 days late
const before2 = "000000000000000000000000";
const after2 = updatePaymentHistory(before2, "1");
// Result: "100000000000000000000000"4. Special Markers in Detail
D — Deferred / Forbearance
Use "D" when payments are temporarily suspended due to a forbearance agreement, natural disaster relief, or bankruptcy automatic stay.
// Account enters forbearance for 3 months
Month 1: "D00000000000000000000000" // Forbearance starts
Month 2: "DD0000000000000000000000" // Still in forbearance
Month 3: "DDD000000000000000000000" // Last month of forbearance
Month 4: "0DDD00000000000000000000" // Back to current paymentsE — Collection
Use "E" when the account has been placed in collection. Continue reporting "E" each month until the collection is resolved or the account is closed.
L — Charge-Off
Use "L" starting the month the account is charged off. Continue reporting "L" each month until the balance reaches zero or the account is sold.
// Account progresses to charge-off
// Months 1-6: progressive delinquency
"432100000000000000000000" // Before charge-off (showing 4 months of escalation)
// Month 7: charged off
"L43210000000000000000000" // Position 1 = L (charge-off)
// Month 8: still charged off, no payment
"LL4321000000000000000000" // L continues monthly5. New Account Handling
For accounts with fewer than 24 months of history, fill unused positions (right side) with spaces or "B" to indicate no history exists for those months.
// Account opened 3 months ago (current every month)
"000 "
^^^
|||______________________ Positions 4-24: spaces (no history)
||_______________________ Position 3: current (first month)
|________________________ Position 2: current (second month)
_________________________ Position 1: current (third month)
// Account opened 1 month ago
"0 "
^
|________________________ Position 1: current (only month)
Positions 2-24: spaces
// After 24 months, the profile is fully populated
"000000000000000000000000" // 24 months of current paymentsImportant Notes
- • The number of populated positions should match the account age in months
- • Never pre-fill future months with "0" — only report actual history
- • Position 1 must always correspond to the current reporting period
6. Example Scenarios
These examples show how a Payment History Profile evolves over time for common scenarios.
// Scenario A: Account goes delinquent and recovers
// ──────────────────────────────────────────────
// Month 1 (Jan): Account current
"0 "
// Month 2 (Feb): Still current
"00 "
// Month 3 (Mar): Misses payment — 30 days late
"100 "
// Month 4 (Apr): Still hasn't paid — 60 days late
"2100 "
// Month 5 (May): Pays everything, back to current
"02100 "
// Month 6 (Jun): Stays current
"002100 "
// Scenario B: Account enters forbearance
// ──────────────────────────────────────
// Before forbearance (6 months of current)
"000000 "
// Enters forbearance for 3 months
"D00000 "
"DD0000 "
"DDD000 "
// Exits forbearance, resumes payments
"0DDD00 "
// Scenario C: Progressive delinquency to charge-off
// ─────────────────────────────────────────────────
"000000000000000000000000" // 24 months current
"100000000000000000000000" // 30 days late
"210000000000000000000000" // 60 days late
"321000000000000000000000" // 90 days late
"432100000000000000000000" // 120 days late
"L43210000000000000000000" // Charged off