Skip to content

Special Circumstances

Special Comment Codes

Overview

Special Comment Codes provide additional context about an account's status. Peach automatically applies some codes and allows manual override of others.

Automatically Applied Codes

CodeDescriptionWhen Applied
ACPaying Under Partial Payment AgreementActive payment plan with amount less than scheduled payment
AIRecalled to Active Military DutyActive military duty case exists
APCredit Line SuspendedLine of credit is frozen
AUAccount Paid in Full for Less Than Full BalanceCharged-off or paid-off loan with zero balance and at least one service credit of type settlementOfDebt, settlementOfDebtNoLoss, or badDebt
AWAffected by Natural or Declared DisasterActive FEMA case exists
CIAccount Closed Due to InactivityLine of credit closed for inactivity

Override Codes (Manually Applied)

These codes can be set via API:

CodeDescription
BAccount Payments Managed by Financial Counseling Program
CNLoan Modified Under Federal Government Plan
COLoan Modified
MAccount Closed at Grantor's Request
OAccount Transferred to Another Company/Servicer

Special Comment Determination Logic

FUNCTION determine_special_comment(loan, snapshot, reporting_status):
  
  # Priority 1: Manual override
  override = get_one_time_field_value(SpecialComment)
  IF override IS NOT NULL:
    RETURN override
  
  # Priority 2: Settlement/Bad Debt detection
  IF snapshot.loan_status IN ('ChargedOff', 'PaidOff') AND balance = 0:
    settlement_credits = find_service_credits(
      types=['settlementOfDebt', 'settlementOfDebtNoLoss', 'badDebt'],
      status='Succeeded'
    )
    IF count(settlement_credits) > 0:
      RETURN 'AU'  # Paid for Less Than Full Balance
  
  # Priority 3: Active payment plan (less than regular payment)
  IF snapshot.loan_status = 'Active':
    IF active_payment_plan_amount < scheduled_payment_amount:
      RETURN 'AC'  # Paying Under Partial Payment Agreement
  
  # Priority 4: Frozen line of credit
  IF is_open_ended AND snapshot.loan_status = 'Frozen':
    RETURN 'AP'  # Credit Line Suspended
  
  # Priority 5: Inactivity closure (LOC)
  IF is_open_ended AND loan.is_closed AND close_reason = 'inactivity':
    RETURN 'CI'  # Closed Due to Inactivity
  
  # Priority 6: FEMA disaster case
  IF active_fema_case_exists():
    RETURN 'AW'  # Affected by Disaster
  
  # Priority 7: Military duty
  IF active_military_duty_case_exists():
    RETURN 'AI'  # Active Military Duty
  
  RETURN ''  # No special comment

Compliance Condition Codes

Overview

Compliance Condition Codes indicate specific regulatory circumstances, primarily related to disputes.

Code Reference

CodeDescription
XAAccount Closed at Consumer's Request
XBAccount Information Disputed Under FCRA
XCFCRA Dispute Investigation Completed - Consumer Disagrees
XDAccount Closed at Consumer's Request + Disputed Under FCRA
XEAccount Closed at Consumer's Request + Investigation Completed - Consumer Disagrees
XFAccount in Dispute Under FCBA
XGFCBA Dispute Investigation Completed - Consumer Disagrees
XHAccount Previously in Dispute
XJAccount Closed at Consumer's Request + Disputed Under FCBA
XRRemove Previously Reported Code

Automatic Application

XA (Account Closed at Consumer's Request): Applied automatically when:

  • Portfolio type is open-ended (C, R, O)
  • Loan is closed
  • Close reason is requestedByBorrower

Manual Override

Compliance Condition Codes can be set via API:

PUT /people/{personId}/loans/{loanId}/credit-reporting
{
  "metro2": {
    "complianceConditionCode": "XB"
  }
}

Consumer Information Indicators

Overview

Consumer Information Indicators report bankruptcy status. These are automatically determined based on bankruptcy case data.

Important: Bankruptcy cases must be in Processing or Completed status to be reported in Metro2. Cases in Initiated or Canceled status are NOT reported. Lenders must manually change the case status to Processing after reviewing case details.

Bankruptcy Status Codes

CodeDescription
APetition for Chapter 7 Bankruptcy
BPetition for Chapter 11 Bankruptcy
CPetition for Chapter 12 Bankruptcy
DPetition for Chapter 13 Bankruptcy
EDischarged Through Chapter 7 Bankruptcy
FDischarged Through Chapter 11 Bankruptcy
GDischarged Through Chapter 12 Bankruptcy
HDischarged Through Chapter 13 Bankruptcy
QRemove Previously Reported Bankruptcy
ZBankruptcy - Undesignated Chapter
1APersonal Receivership

Note: Codes I-P (Dismissed/Withdrawn by chapter) are defined in Metro 2 but Peach uses code Q for all dismissed, withdrawn, or closed cases per CRRG guidance.

Consumer Information Indicator Algorithm

Step-by-step logic:

  1. Fetch bankruptcy cases where:

    • case.type = 'bankruptcy'
    • case.status IN ('Processing', 'Completed')
    • Date filter applies (see below)
  2. Apply date filter — case must be active during reported month:

    (reported_month >= case.courtCaseFiledDate::month/year 
     AND reported_month <= coalesce(case.courtCaseClosedDate::month/year,
                                     case.courtCaseDebtorDispositionDate::month/year))
    OR
    (reported_month >= case.courtCaseFiledDate::month/year 
     AND case.courtCaseClosedDate == empty 
     AND case.courtCaseDebtorDispositionDate == empty)
  3. Determine bkCaseInPetition flag:

    • If coalesce(courtCaseClosedDate, courtCaseDebtorDispositionDate) is within reported month → bkCaseInPetition = false
    • Otherwise → bkCaseInPetition = true
  4. Return code based on bkCaseInPetition + chapter:

bkCaseInPetitioncourtCaseChapterDispositionLoan Associated?Code
truechapter7A
truechapter11B
truechapter12C
truechapter13D
falsechapter7dischargedYesE
falsechapter11dischargedYesF
falsechapter12dischargedYesG
falsechapter13dischargedYesH
falseanydischargedNoQ
falseanydismissed/closedQ

Full Algorithm:

FUNCTION determine_consumer_information_indicator(loan, reported_month):
  
  # Step 1: Fetch qualifying bankruptcy cases
  # Filter by: type, status, and date range
  case = find_case(
    type = 'bankruptcy',
    status IN ('Processing', 'Completed'),
    date_filter: (
      (reported_month >= case.courtCaseFiledDate::month/year 
       AND reported_month <= coalesce(case.courtCaseClosedDate::month/year,
                                       case.courtCaseDebtorDispositionDate::month/year))
      OR
      (reported_month >= case.courtCaseFiledDate::month/year 
       AND case.courtCaseClosedDate == empty 
       AND case.courtCaseDebtorDispositionDate == empty)
    )
  )
  
  # If multiple cases exist, select the most recent based on case.createdAt
  
  IF case IS NULL:
    RETURN ''  # Blank - no applicable bankruptcy
  
  # Step 2: Determine if case is still in petition (active)
  bkCaseInPetition = True
  
  final_date = coalesce(case.courtCaseClosedDate, case.courtCaseDebtorDispositionDate)
  IF final_date IS NOT NULL AND final_date IS WITHIN reported_month:
    bkCaseInPetition = False  # Case was finalized in the reported month
  
  # Step 3: Return petition codes if bkCaseInPetition = true
  IF bkCaseInPetition = True:
    IF case.courtCaseChapter = 'chapter7':  RETURN 'A'
    IF case.courtCaseChapter = 'chapter11': RETURN 'B'
    IF case.courtCaseChapter = 'chapter12': RETURN 'C'
    IF case.courtCaseChapter = 'chapter13': RETURN 'D'
  
  # Step 4: Handle discharged cases (bkCaseInPetition = false)
  IF bkCaseInPetition = False AND case.courtCaseDebtorDisposition = 'discharged':
    # CRITICAL: Discharge codes E/F/G/H only apply when loan IS associated with case
    IF loan_is_associated_with_case(loan, case):
      IF case.courtCaseChapter = 'chapter7':  RETURN 'E'
      IF case.courtCaseChapter = 'chapter11': RETURN 'F'
      IF case.courtCaseChapter = 'chapter12': RETURN 'G'
      IF case.courtCaseChapter = 'chapter13': RETURN 'H'
    ELSE:
      # Loan is NOT associated with the discharged case
      RETURN 'Q'  # Remove previously reported bankruptcy
  
  # Step 5: Handle dismissed/closed cases (bkCaseInPetition = false)
  IF bkCaseInPetition = False:
    IF case.courtCaseDebtorDisposition = 'dismissed' OR
       case.courtCaseLastStatus IN ('dismissed', 'closedFiledInError', 
                                     'closedTransferredOut', 'closedDischargeNA',
                                     'closedUndeterminedReason'):
      RETURN 'Q'  # Remove previously reported bankruptcy
  
  RETURN ''  # Blank

Code Q Usage

Code Q (Remove Previously Reported Bankruptcy) is reported when:

  • A bankruptcy case is dismissed, withdrawn, or closed without discharge
  • A bankruptcy case is discharged but the loan was not associated with the case
  • The closure/disposition occurred in the current reporting month
  • This tells bureaus to remove the bankruptcy indicator from subsequent reports

Military Protections (SCRA/MLA)

Overview

The Servicemembers Civil Relief Act (SCRA) and Military Lending Act (MLA) provide protections for active-duty military members.

Credit Reporting Impact

When a borrower has active military duty status:

ImpactDescription
Special CommentCode AI (Recalled to Active Military Duty) is applied
Account StatusMay report as current (11) during protected period
DelinquencyProtected servicemembers may not be reported as delinquent

Military Case Requirements

For military protection to apply in credit reporting:

  • A Military Duty case must exist in Peach
  • Case status must be Processing or Completed with Approved outcome
  • duty_start_date must be on or before the reporting date
  • duty_end_date must be null or on/after the reporting date

Bankruptcy Reporting

Date of First Delinquency in Bankruptcy

For bankruptcy cases where the account is current:

  • DOFD is set to the court_case_filed_date
  • This applies when Consumer Information Indicator is a bankruptcy code
  • Account Status is current (11)

Consumer Disputes

FCRA Disputes

When a consumer disputes information under FCRA:

StageCompliance Condition Code
Dispute receivedXB
Investigation completed, consumer disagreesXC
Dispute resolvedXR (remove) or clear

FCBA Disputes

For billing disputes under FCBA (credit cards, revolving accounts):

StageCompliance Condition Code
Dispute in processXF
Investigation completed, consumer disagreesXG
Dispute resolvedXR or clear

Combined Scenarios

When a consumer closes an account AND disputes:

  • XD: Closed + FCRA dispute pending
  • XE: Closed + FCRA investigation complete, disagrees
  • XJ: Closed + FCBA dispute pending