Developer CenterGuidesMapping Your Data to Metro 2®

    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 FieldMetro 2® FieldTransform Logic
    AccountNumberconsumer_account_number (Base/7)Truncate to 30 characters
    AccountTypeaccount_type (Base/9)Map internal types to Metro 2® codes
    DateOpeneddate_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 TypeDescriptionCommon Account Types
    CLine of Credit09 (HELOC), 19 (Other Line of Credit)
    IInstallment04 (Auto Loan), 05 (Student Loan)
    MMortgage26 (Conventional RE Mortgage), 27 (FHA)
    OOpen07 (Utility), 13 (Rent)
    RRevolving18 (Credit Card), 30 (Charge Account)

    3. Map Account Status Codes

    Account Status (Base/17A) is another critical field that requires careful mapping:

    Common Internal StatusMetro 2® Status CodeDescription
    Current / Paid as Agreed11Account in good standing
    30 Days Late7130-59 days past due
    60 Days Late7860-89 days past due
    90+ Days Late8090-119 days past due
    Charged Off97Charged off to profit and loss
    Paid in Full13Paid 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:

    1. Use sample data to generate Metro 2® JSON
    2. Validate against our API schema
    3. Use our sandbox environment to test submissions
    4. 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.

    Back to Guides
    Next: Pre-Validation Strategies