Metro 2 data mapping
How LoanPro data fits into our Metro 2 files for credit reporting.
Below, you’ll find detailed tables that outline the LoanPro field values, how they map to each segment of the Metro 2 file, and the logic applied to each value. These tables, organized by Metro 2 segment, will help you understand the data structure and help to ensure accurate credit reporting. For definitions of each Metro 2 field, please refer to CDIA Credit Reporting Resource Guide.
Before diving into the Metro 2 file fields, ensure you create and add the following Custom Fields to the CSV in the specified order for optimal use of ID5 file and existing logic.
For documentation on how to create a Metro 2 file, refer to Metro 2 file creation and credit reporting.
Recommended custom fields
Compliance Condition Code:
- XA - Account closed at consumer's request
- XB - Account information disputed by consumer under the Fair Credit Reporting Act
- XC - Completed investigation of FCRA dispute - consumer disagrees
- XD - Account closed at consumer's request and in dispute under FCRA
- XE - Account closed at consumer's request and dispute investigation completed
- XF - Account in dispute under Fair Credit Billing Act
- XG - FCBA Dispute resolved -- consumer disagrees
- XH - Account previously in dispute -- now resolved
- XJ - Account closed at consumer's request and in dispute under FCBA
- XR - Removes the most recently reported Compliance Condition Code
Special Comment Codes:
- AB - Debt being paid through insurance
- AC - Paying under a partial payment agreement
- AH - Purchased by another company
- AI - Recalled to active military duty
- AL - Student loan assigned to government
- AM - Account payments assured by wage garnishment
- AN - Account acquired by FDIC/NCUA
- AO - Voluntarily surrendered - then redeemed
- AP - Credit Line suspended
- AS - Account closed due to refinance
- AT - Account closed due to transfer
- AU - Account paid in full for less than the full balance
- AV - First payment never received
- AW - affected by natural or declared disaster
- AX - Account paid from collateral
- AZ - Redeemed repossession
- B - Account Payments managed by financial counseling program
- BA - Transferred to Recovery
- BB - Full termination/status pending
- BC - Full termination/obligation satisfied
- BD - Full termination/balance owing
- BE - Early termination/status pending
- BF - Early termination/obligation satisfied
- BG - Early termination/balance owing
- BH - Early termination/insurance loss
- BI - Involuntary repossession
- BJ - Involuntary repossession/obligation satisfied
- BK - Involuntary repossession/balance owing
- BL - Credit card lost or stolen
- BN - Paid by company which originally sold the merchandise
- BO - Foreclosure proceedings started
- BP - Paid through insurance
- BS - Prepaid Lease
- BT - Principal deferred/Interest payment only
- C - Paid by Co-maker or Guarantor
- CH - Guaranteed/Insured
- CI - Account due to inactivity
- CJ - Credit Line NO Longer Available - In Repayment Phase
- CK - Credit Line Reduced due to Collateral Depreciation
- CL - Credit Line Suspended due to Collateral Depreciation
- CM - Collateral Released by Creditor / Balance Owing
- CN - Loan Modified under a Federal Government Plan
- CO - Loan Modified
- CP - Account in forbearance
- CS - Used by Child Support Agencies only when reporting delinquent or collection accounts
- H - Loan assumed by another party
- I - Election of remedy
- M - Account closed at credit grantor's request
- O - Account transferred to another lender
- S - Special handling
- V - Adjustment pending
Payment Rating:
Expected LoanPro value | Definition |
0 | 0 = Current account (0–29 days past the due date) |
1 | 1 = 30-59 days past the due date |
2 | 2 = 60-89 days past the due date |
3 | 3 = 90-119 days past the due date |
4 | 4 = 120-149 days past the due date |
5 | 5 = 150-179 days past the due date |
6 | 6 = 180 or more days past the due date |
G | G = Collection |
L | L = Charge-off |
Consumer Information Indicator
- A - petition-for-chapter-7-bankruptcy
- B - petition-for-chapter-11-bankruptcy
- C - petition-for-chapter-12-bankruptcy
- D - petition-for-chapter-13-bankruptcy
- E - discharged-through-bankruptcy-chapter-7
- F - discharged-through-bankruptcy-chapter-11
- G - discharged-through-bankruptcy-chapter-12
- H - discharged-completed-through-bankruptcy-chapter-13
- 1A - personal-receivership
- Q - removes-previously-reported-bankruptcy-indicator-a-through-h-or-personal-receivership-indicator-1a-also-used-to-report-bankruptcies-that-have-been-closed-terminated-dismissed-or-withdrawn-without-being-discharged
- R - chapter-7-reaffirmation-of-debt
- V - chapter-7-reaffirmation-of-debt-rescinded
- 2A - lease-assumption
- S - removes-previously-reported-affirmation-of-debt-reaffirmation-of-debt-rescinded-and-lease-assumption-indicators-r-v-2a-and-obsolete-values-w-x-y
- T - credit-grantor-cannot-locate-consumer
- U - consumer-now-located-removes-previously-reported-t-indicator
Metro 2 fields by segment
Header segment
Metro 2 field | LoanPro field value | Logic |
BDW | calculated value | 426 |
Record Identifier | Hardcoded HEADER | |
Cycle Identifier | blank two spaces | |
Program Identifiers Innovis | input_value | |
Program identifiers Equifax | input_value | |
Program Identifiers Transunion | input_value | |
Program Identifiers Experian | input_value | |
Current Date | Automatically Generated | now.strftime(%M%D%Y) |
Activity Date | current_date | now.strftime(%M%D%Y) |
Date Created | current_date | now.strftime(%M%D%Y) |
Program Date | Hardcoded SEPTEMBER 1 2023 | Fixed string “09012024” |
Program Revision Date | Hardcoded LATEST VERSION DATE | Fixed string “07012024” |
Reporter name | input_value | Takes the first 40 characters of the input_value. Pads the input_value if less than 40 characters long. |
Reporter address | input_value | Takes the first 96 characters of the input_value. Pads the input_value if less than 96 characters long. |
Reporter phone | input_value | Takes the first 10 characters of the input_value. Pads the input_value if less than 10 characters long. |
Program creator | Hardcoded LoanPro Software, LLC | Appends a fixed string with spaces to the right ensuring it is 40 characters long. |
Program version | Hardcoded LATEST VERSION | Appends a fixed string with spaces to the right ensuring it is 160 characters long. |
Base segment
Metro 2 field | LoanPro value | Logic |
BDW | calculated value | 426 |
Processing Indicator | Hardcoded 1 | |
Timestamp | Automatically Generated based on reporting period | now.strftime(%M%D%Y%H%M%S) |
Identification number | input_value defaults to reporter_name 1 | |
Cycle identifier | blank | |
Consumer account number | loan_id or loc_id | |
Portfolio type | portfolio_type | |
Account type | credit_bureau | |
Date opened | contract_date | Formatting adjustment to MMDDYYYY |
Credit limit | credit_limit | Take as int ignore decimals places. |
Highest credit or original loan | Original_loan_amount or Highest_Credit | Take as int ignore decimals places. Pad to 9 characters long. |
Terms duration | term or input_value | Input Value: Installment = Term, Revolving = Rev, Line of Credit = LOC |
Terms frequency | payment_frequency | Table Value based on payment frequency: Monthly = M, Semi Monthly = E, Weekly = W, Bi-Weekly = B, Annually = Y, Semi-Annually = S, Quarterly = Q, Single = P |
Scheduled monthly payment amount | payment_amount | Take as int ignore decimals places. Credit Status = 13, 61, 62, 63, 64, 65, 97. Set as 000000000 |
Actual monthly payment amount | last_payment_amount | |
Account status | credit_status | |
Payment rating | payment_rating | Takes the first character in payment_rating and adds padding if necessary to ensure it is 1 character long. |
Payment history profile | payment_history_profile | Mapped as Payment History Profile which provides a prefix of "YYYYMM:", Logic to remove that prefix |
Special comment | special_comment | Table Value based on Custom Field: Expect to have code-description. Table maps description back to code. |
Compliance condition code | compliance_condition_code | Table Value based on Custom Field: Expect to have code-description. Table maps description back to code. |
Current balance | balance | If credit_status is “97” use charge_off balance. If origional_charge_off_balance is missing if entity_type is “Entity.Loan” either use payoff or remaining_principal_balance or remaining_principle_balance. Else use payoff or outstanding_balance. If origional_charge_off_balance is equal to “charge_off” set balance to “0.00” Else set balance to charge-off. |
Amount past due | amount_past_due_30 | If credit_status is “93” or “97” amount_past_due is set to charge_off or value else amount_past_due is set to amount_30+_days_past_due. |
Original charge-off amount | charge_off | original charge off balance unless there is no value then use current charge off take abs of amount. |
Billing date / date of account information | reported as date or closed date | If closed_date is empty. Use the File generation date minus one day instead formatted as “MMDDYYYY”. |
Date of first delinquency | Date of First Delinquency | |
Date closed | account_closed_date | |
Date of last payment | last_payment_date | |
Surname | last_name | Remove all special char and make all char UPPERCASE |
First name | first_name | Remove all special char and make all char UPPERCASE |
Middle name | middle_name | Remove all special char and make all char UPPERCASE |
Generation code | generation_code | From a map supporting generation codes "j" → "J" "jr" → "J" "s" → "S" "sr" → "S" "ii" → "2" "iii" → "3" "iv" → "4" "v" → "5" "vi" → "6" "vii" → "7" "viii" → "8" "ix" → "9" Either convert to lowercase and match given generation code with metro2 supported value or fill the generation_code field with a singular blank space. |
Social Security Number | social_security_number | |
Date of birth | date_of_birth | Change formatting to MMDDYYYY |
Telephone number | primary_phone | |
ECOA Code | credit_ecoa | |
Consumer information indicator | blank | Needs Mapping added Based on the following map: "petition for chapter 7 bankruptcy" => "A", "petition for chapter 11 bankruptcy" => "B", "petition for chapter 12 bankruptcy" => "C", "petition for chapter 13 bankruptcy" => "D", "discharged through bankruptcy chapter 7" => "E", "discharged through bankruptcy chapter 11" => "F", "discharged through bankruptcy chapter 12" => "G", "discharged/completed through bankruptcy chapter 13" => "H", "personal receivership" => "1A", "removes previously reported bankruptcy indicator (a through h) or personal receivership indicator(1a). also used to report bankruptcies that have been closed, terminated, dismissed or withdrawn, without being discharged." => "Q", "chapter 7 reaffirmation of debt" => "R", "chapter 7 reaffirmation of debt rescinded" => "V", "lease assumption" => "2A", "removes previously reported affirmation of debt, reaffirmation of debt. rescinded and lease assumption indicators (r, v, 2a, and obsolete values w, x, y)" => "S", "credit grantor cannot locate consumer" => "T", "consumer now located (removes previously reported t indicator)" => "U" Format matching code to exactly two characters. |
Country code | US or CA | |
First line of address | address | Removes any characters from the address string that are not letters (A-Z, a-z), digits (0-9), spaces, slashes ("/"), hyphens ("-"), or periods ("."). This ensures only these allowed characters remain in the string. Converts to all uppercase and pads the string to make sure it is at least 32 characters long. |
Second line of address | Removes any characters from the address string that are not letters (A-Z, a-z), digits (0-9), spaces, slashes ("/"), hyphens ("-"), or periods ("."). This ensures only these allowed characters remain in the string. Converts to all uppercase and pads the string to make sure it is at least 32 characters long. | |
City | city | Remove all special char and set all char to UPPERCASE. |
State | state | |
Postal/zip code | zip_code | |
Address indicator and residence code | blank |
J1 segment
Metro 2 field | LoanPro field value | Logic |
Segment identifier | Hardcoded J1 | |
Reserved | ||
Surname | co-buyer_last_name | Remove all special char and make all char UPPERCASE |
First name | co-buyer_first_name | Remove all special char and make all char UPPERCASE |
Middle name | co-buyer_middle_name | Remove all special char and make all char UPPERCASE |
Generation code | co-buyer_generation_code | From a map supporting generation codes "j" → "J" "jr" → "J" "s" → "S" "sr" → "S" "ii" → "2" "iii" → "3" "iv" → "4" "v" → "5" "vi" → "6" "vii" → "7" "viii" → "8" "ix" → "9" Either convert to lowercase and match given generation code with metro2 supported value or fill the generation_code field with a singular blank space. |
SSN | co-buyer_ssn | |
Date of birth | co-buyer_dob | Change formatting to MMDDYYYY |
Telephone number | co-buyer_primary_phone | |
ECOA code | co-buyers_ecoa | |
Consumer information indicator | blank |
J2 segment
Metro 2 field | LoanPro field value | Logic |
Segment identifier | Hardcoded J2 | |
Reserved | ||
Surname | co-buyer_last_name | Remove all special char and make all char UPPERCASE |
First name | co-buyer_first_name | Remove all special char and make all char UPPERCASE |
Middle name | co-buyer_middle_name | Remove all special char and make all char UPPERCASE |
Generation code | co-buyer_generation_code | From a map supporting generation codes "j" → "J" "jr" → "J" "s" → "S" "sr" → "S" "ii" → "2" "iii" → "3" "iv" → "4" "v" → "5" "vi" → "6" "vii" → "7" "viii" → "8" "ix" → "9" Either convert to lowercase and match given generation code with metro2 supported value or fill the generation_code field with a singular blank space. |
SSN | co-buyer_ssn | |
Date of birth | co-buyer_dob | Change formatting to MMDDYYYY |
Telephone number | co-buyer_primary_phone | |
ECOA code | co-buyers_ecoa | |
Consumer information indicator | blank | |
Country code | co-buyer_country | US or CA |
First line of address | co-buyer_address | Removes any characters from the address string that are not letters (A-Z, a-z), digits (0-9), spaces, slashes ("/"), hyphens ("-"), or periods ("."). This ensures only these allowed characters remain in the string. Converts to all uppercase and pads the string to make sure it is at least 32 characters long. |
Second line of address | co-buyer_address2 | Removes any characters from the address string that are not letters (A-Z, a-z), digits (0-9), spaces, slashes ("/"), hyphens ("-"), or periods ("."). This ensures only these allowed characters remain in the string. Converts to all uppercase and pads the string to make sure it is at least 32 characters long. |
City | co-buyer_city | Remove all special char and set all char to UPPERCASE. |
State | co-buyer_state | |
Postal/ zip code | co-buyer_zip_code | |
Address indicator | blank | |
Residence code | blank | |
Reserved |
Trailer segment
Metro 2 field | LoanPro field value | Logic |
BDW | calculated | |
Record identifier | hardcoded trailer | Static trailer string |
Total base records | calculated | Totale base records |
Blank separator | calculated | *9 |
Total status code DF | calculated | Total status code DF |
Total consumer segments JA | calculated | Total consumer segments JA |
Total consumer segments J2 | calculated | Total consumer segments J2 |
Block count | calculated | Block count |
Other status codes | calculated | Other status codes |
Total ECOA code Z | calculated | Total ECOA code Z |
Total employment segments | calculated | Total employment segments |
Total original creditor segments | calculated | Total original creditor segments |
Total purchased from / sold to segments | calculated | Total purchased from / sold to segments |
Total mortgage information segments | calculated | Total mortgage information segments |
Total payment information segments | calculated | Total payment information segments |
Total change segments | calculated | Total change segments |
Total social security numbers | calculated | Total social security numbers |
Total SSN base segment | calculated | Total SSN base segment |
Total SSN J1 segment | calculated | Total SSN J1 segment |
Total SSN J2 segment | calculated | Total SSN J2 segment |
Total dates of birth | calculated | Total dates of birth |
Total DOB base segment | calculated | Total DOB base segment |
Total DOB J1 segment | calculated | Total DOB J1 segment |
Total DOB J2 segment | calculated | Total DOB J2 segment |
Total phone numbers | calculated | Total phone numbers |
Was this article helpful?