Developer CenterGuidesCRA Responses

    Processing CRA Response Files

    After you submit records to a credit bureau, they send back a response (acknowledgment) file indicating which records were accepted and which were rejected. This guide covers how to upload, parse, and act on these response files.

    1. What Are CRA Response Files

    Credit Reporting Agencies (CRAs) — Equifax, Experian, and TransUnion — return acknowledgment files after processing your Metro 2 submissions. These files tell you the outcome for every record you submitted.

    Accepted

    The record passed all validation checks and was applied to the consumer's credit file.

    Rejected

    The record failed one or more validation rules and was not applied. A rejection reason code is provided.

    Warning

    The record was accepted but flagged with warnings about potential data quality issues that should be reviewed.

    2. Uploading Response Files

    Upload CRA response files to Metro 2 for automatic parsing and record matching. The API accepts files in the standard Metro 2 response format from all three bureaus:

    // Upload a CRA response file
    POST /api/v1/cra-responses/upload
    Content-Type: multipart/form-data
    Authorization: Bearer your_api_key
    
    --boundary
    Content-Disposition: form-data; name="file"; filename="equifax-response-202503.dat"
    Content-Type: application/octet-stream
    
    [binary file content]
    --boundary
    Content-Disposition: form-data; name="bureau"
    
    equifax
    --boundary--
    // Response
    {
      "responseFileId": "cra_resp_abc123",
      "bureau": "equifax",
      "uploadedAt": "2025-03-20T14:30:00Z",
      "status": "processing",
      "fileName": "equifax-response-202503.dat",
      "fileSize": 245760
    }
    
    // Check processing status
    GET /api/v1/cra-responses/cra_resp_abc123
    
    {
      "responseFileId": "cra_resp_abc123",
      "status": "completed",
      "summary": {
        "totalRecords": 12450,
        "accepted": 12380,
        "rejected": 58,
        "warnings": 12
      },
      "processedAt": "2025-03-20T14:31:15Z"
    }

    3. Automatic Parsing and Record Matching

    When you upload a response file, Metro 2 automatically:

    Parses the Response Format

    Each bureau has slightly different response formats. Metro 2 handles Equifax, Experian, and TransUnion response files and normalizes the data into a consistent structure.

    Matches Records to Your Submission

    Each response record is matched back to the original record in your submission using the account number and consumer identifiers. Matched records are updated with their acceptance or rejection status.

    Flags Rejected Records

    Rejected records are flagged in the dashboard with the bureau's rejection reason code and a human-readable explanation. You can filter your records by rejection status.

    4. Understanding Rejection Reason Codes

    Each rejected record includes one or more reason codes. These are the most common codes you will encounter:

    CodeDescriptionCommon Fix
    01Invalid SSNVerify SSN format (9 digits, no dashes)
    02Invalid date formatUse MMDDYYYY for all date fields
    03Missing required fieldCheck all required fields are populated
    04Invalid Account Status codeUse valid 2-char status code (e.g., 11, 13, 64)
    05Duplicate recordRecord was already submitted this cycle
    06Invalid ECOA codeUse valid ECOA code (1, 2, 3, 5, 7, T, W, X, Z)
    07Payment History Profile invalidEnsure 24-char profile with valid codes (0-6, B, D, E)
    08Consumer name mismatchName does not match SSN on file at the bureau

    5. Handling Rejected Records

    When records are rejected, follow this workflow to correct and resubmit them:

    // Step 1: Get rejected records from a response file
    GET /api/v1/cra-responses/cra_resp_abc123/rejections
    
    {
      "rejections": [
        {
          "recordId": "rec_001",
          "accountNumber": "ACCT-5678",
          "reasonCode": "01",
          "reasonDescription": "Invalid SSN",
          "fieldName": "ssn",
          "submittedValue": "12345678",
          "suggestion": "SSN must be exactly 9 digits"
        },
        {
          "recordId": "rec_002",
          "accountNumber": "ACCT-9012",
          "reasonCode": "03",
          "reasonDescription": "Missing required field",
          "fieldName": "dateOpened",
          "submittedValue": null,
          "suggestion": "dateOpened is required for Account Status 11"
        }
      ]
    }
    
    // Step 2: Fix the records
    PATCH /api/v1/records/rec_001
    {
      "consumer": {
        "ssn": "123456789"
      }
    }
    
    PATCH /api/v1/records/rec_002
    {
      "dateOpened": "2023-06-15"
    }
    
    // Step 3: Resubmit corrected records
    POST /api/v1/submissions
    {
      "type": "correction",
      "recordIds": ["rec_001", "rec_002"],
      "bureaus": ["equifax"]
    }

    6. Tracking Acceptance Rates Over Time

    The dashboard provides monthly acceptance rate trends so you can identify and fix systemic issues. You can also retrieve this data via the API:

    // Get acceptance rate history
    GET /api/v1/analytics/acceptance-rates?months=6
    
    {
      "rates": [
        { "month": "2024-10", "total": 11200, "accepted": 11150, "rate": 99.55 },
        { "month": "2024-11", "total": 11350, "accepted": 11280, "rate": 99.38 },
        { "month": "2024-12", "total": 11500, "accepted": 11430, "rate": 99.39 },
        { "month": "2025-01", "total": 11800, "accepted": 11740, "rate": 99.49 },
        { "month": "2025-02", "total": 12100, "accepted": 12050, "rate": 99.59 },
        { "month": "2025-03", "total": 12450, "accepted": 12380, "rate": 99.44 }
      ],
      "topRejectionReasons": [
        { "code": "01", "description": "Invalid SSN", "count": 34 },
        { "code": "03", "description": "Missing required field", "count": 28 },
        { "code": "07", "description": "Payment History Profile invalid", "count": 15 }
      ]
    }

    Recommended Targets

    • 99%+ acceptance rate — Healthy portfolio with good data quality
    • 95–99% acceptance rate — Review top rejection reasons and fix systemic issues
    • Below 95% — Indicates a significant data quality problem that needs immediate attention

    Warning

    Process response files promptly—rejection patterns often indicate systematic data issues that affect multiple records. A single field mapping error can cause hundreds of rejections each month if left unaddressed.

    Related Resources

    API Reference

    • • POST /api/v1/cra-responses/upload — Upload response file
    • • GET /api/v1/cra-responses/:id — Check processing status
    • • GET /api/v1/cra-responses/:id/rejections — List rejections
    • • GET /api/v1/analytics/acceptance-rates — Rate trends