Mapping Your Data to Metro 2®
Introduction
One of the most challenging aspects of credit reporting is mapping your existing data fields to the Metro 2® format. This guide will help you understand how to transform your internal data structures into the standardized Metro 2® format required by consumer reporting agencies.
Note: This guide assumes you have a basic understanding of the Metro 2® format and its segments. If you're new to Metro 2®, we recommend first reviewing the API Reference and the Metro 2® Credit Reporting Resource Guide® (CRRG®).
Understanding Your Source Data
Before mapping to Metro 2®, it's important to identify and categorize your source data:
- Account Information: Details about the credit account itself (balances, dates, status)
- Consumer Information: Details about the primary account holder
- Associated Consumers: Details about any joint account holders or authorized users
- Special Conditions: Any special circumstances like bankruptcy, disputes, etc.
Core Mapping Strategy
Follow these steps to create an effective mapping strategy:
1. Create a Field Mapping Document
Document each field in your system and its corresponding Metro 2® field. This should include:
- Your internal field name
- Metro 2® field name and location (segment/field number)
- Data type and format requirements
- Any transformation logic needed
- Default values (if applicable)
Internal Field | Metro 2® Field | Transform Logic |
---|---|---|
AccountNumber | consumer_account_number (Base/7) | Truncate to 30 characters |
AccountType | account_type (Base/9) | Map internal types to Metro 2® codes |
DateOpened | date_opened (Base/10) | Convert to MMDDYYYY format |
2. Map Portfolio and Account Types
The Portfolio Type (Base/8) and Account Type (Base/9) fields are critical for proper reporting:
Portfolio Type | Description | Common Account Types |
---|---|---|
C | Line of Credit | 09 (HELOC), 19 (Other Line of Credit) |
I | Installment | 04 (Auto Loan), 05 (Student Loan) |
M | Mortgage | 26 (Conventional RE Mortgage), 27 (FHA) |
O | Open | 07 (Utility), 13 (Rent) |
R | Revolving | 18 (Credit Card), 30 (Charge Account) |
3. Map Account Status Codes
Account Status (Base/17A) is another critical field that requires careful mapping:
Common Internal Status | Metro 2® Status Code | Description |
---|---|---|
Current / Paid as Agreed | 11 | Account in good standing |
30 Days Late | 71 | 30-59 days past due |
60 Days Late | 78 | 60-89 days past due |
90+ Days Late | 80 | 90-119 days past due |
Charged Off | 97 | Charged off to profit and loss |
Paid in Full | 13 | Paid or closed account/zero balance |
Pro Tip: For a complete list of Account Status codes and their proper usage, refer to Exhibit 4 in the Metro 2® CRRG®.
4. Handle Date Formats
Metro 2® requires all dates in MMDDYYYY format. Create conversion functions for any date fields:
// Example JavaScript date conversion function
function formatDateForMetro2(dateObj) {
if (!dateObj) return '00000000'; // Default for optional dates
const month = String(dateObj.getMonth() + 1).padStart(2, '0');
const day = String(dateObj.getDate()).padStart(2, '0');
const year = String(dateObj.getFullYear());
return month + day + year;
}
5. Map Address Information
Consumer address information must be properly formatted:
- Convert all text to uppercase
- Remove special characters (except hyphens, periods, apostrophes, and spaces)
- Abbreviate as needed (ST for STREET, APT for APARTMENT)
- Split between street_address1 and street_address2 appropriately
// Example address formatting function
function formatAddressForMetro2(address) {
// Convert to uppercase
let formattedAddress = address.toUpperCase();
// Replace common words with abbreviations
formattedAddress = formattedAddress
.replace('STREET', 'ST')
.replace('AVENUE', 'AVE')
.replace('APARTMENT', 'APT')
.replace('BOULEVARD', 'BLVD');
// Truncate if needed
return formattedAddress.substring(0, 32);
}
Special Segment Mapping
Associated Consumers (J1/J2 Segments)
If your accounts can have joint holders or authorized users, map these to J1 or J2 segments:
- J1 Segment: Use when the associated consumer has the same address as primary
- J2 Segment: Use when the associated consumer has a different address
Original Creditor (K1 Segment)
For collection agencies and debt buyers, include K1 segment:
// Example K1 segment mapping
if (accountType === 'collection' || accountType === 'purchased_debt') {
k1Segment = {
segment_identifier: 'K1',
original_creditor_name: originalCreditorName.toUpperCase(),
creditor_classification: mapCreditorType(originalCreditorType)
};
}
Payment History Profile (Base/18)
The Payment History Profile requires special attention:
- Contains up to 24 months of payment history (most recent to oldest)
- Each position represents one month using single-character codes
- Common values: 0 (current), 1 (30 days), 2 (60 days), 3 (90 days), etc.
// Example Payment History Profile generation
function generatePaymentHistoryProfile(monthlyStatuses) {
// Ensure array is sorted most recent first
const sortedStatuses = [...monthlyStatuses].slice(0, 24);
// Map internal status codes to Metro 2 codes
const mappedStatuses = sortedStatuses.map(status => {
switch(status) {
case 'CURRENT': return '0';
case '30_DAYS_LATE': return '1';
case '60_DAYS_LATE': return '2';
case '90_DAYS_LATE': return '3';
// Add other mappings as needed
default: return '0';
}
});
// Pad with zeros if less than 24 months
while (mappedStatuses.length < 24) {
mappedStatuses.push('0');
}
return mappedStatuses.join('');
}
Validation and Testing
After mapping your fields, test your implementation:
- Use sample data to generate Metro 2® JSON
- Validate against our API schema
- Use our sandbox environment to test submissions
- Review validation results and make adjustments
Common Mapping Challenges
Handling Missing Required Fields
For some required fields, you may need fallback strategies:
- Social Security Number: If unavailable, consider using a valid fill value (e.g., nine nines)
- Date of Birth: Required if SSN is missing; make sure to collect this
- Date of First Delinquency: Critical for delinquent accounts; ensure your systems track this properly
Special Condition Mapping
Some conditions require special handling:
- Bankruptcies: Use Consumer Information Indicator codes (Base/38) for bankruptcy status
- Disputes: Use Compliance Condition Code XB (Base/20) for accounts under dispute
- Fraud/Identity Theft: Use Special Comment Code XF (Base/19)
Conclusion
Mapping your data to Metro 2® format is a critical step in credit reporting. By following this guide and referring to the Metro 2® CRRG®, you can ensure your data is properly formatted for successful reporting through our API.
Next Steps
Now that you understand how to map your data, learn how to implement proper pre-validation strategies to reduce submission errors.