Update Credit Data

Credit reporting integrations in EPC must use a custom transaction result action to populate the Encompass loan with liabilities, credit scores, and FACTA data. To do so, patch the transaction with a response result object that specifies the UPDATE_CREDIT_DATA action.

Prerequisites

Credit technology provider IDs for Fannie Mae (CreditCompanyCode) and Freddie Mac (CreditProviderCode and CreditAffiliateCode) must be registered with the product. Fannie Mae and Freddie Mac assign these IDs to credit reporting agencies, and the IDs are used in underwriting submissions to support credit reissue requests.

The codes used in the sample below are for illustration purposes only and show the variations in code length that Fannie Mae and Freddie Mac assign:

{
    "additionalInfo": [
        {
            "key": "DUCreditProvider",
            "metadata": {
                "code": "999"
            }
        },
        {
            "key": "LPACreditProvider",
            "metadata": {
                "code": "9"
            }
        },
        {
            "key": "LPACreditAffiliate",
            "metadata": {
                "code": "999"
            }
        }
    ]
}

The product must be entitled to the UPDATE_CREDIT_DATA action to use it in a transaction PATCH. To entitle a product, add the UPDATE_CREDIT_DATA action to the response.results array of the relevant request type within $.entitlements.data.transaction:

{
  "action": "UPDATE_CREDIT_DATA",
  "formats": [
    "application/vnd.credit-data-update-1.0.0.json"
  ]
}

Loan data that is not included in the UPDATE_CREDIT_DATA action can still be entitled at the product level and patched normally by including the loan payload in the transaction update call.

{
   "status": "processing",
   "loanFormat": "application/vnd.plm-2.0.0+json",
   "loan": {
      ... // Additional loan data, sent as part of standard transaction loan update
   },
   "result": {
      "format": "application/vnd.credit-data-update-1.0.0.json",
      "action": "UPDATE_CREDIT_DATA",
      "details": {
         ... // Update credit data action details
      }
   },
   "partnerStatus": "partner status"
}

format and action

The Encompass Partner Connect (EPC) Platform uses $.result.format and $.result.action to determine how to process the action details provided in the transaction PATCH payload. Make sure you use the following values:

"format": "application/vnd.credit-data-update-1.0.0.json"
"action": "UPDATE_CREDIT_DATA"

The details object in the result is required. It controls how key credit data is processed when it is sourced from the referenced credit response file. The fields are defined below:

Fields

Additional Information

$.result.details.resource.id

Required. SkyDrive file ID of the raw credit response file uploaded by the partner.

$.result.details.resource.type

Required. MISMO credit XML format of the resource. MISMO 3.4 will be supported in a future release.
Sample: urn:ice:epc:partner:credit:report:version:V2.3.1

$.result.details.importOptions.creditReportType

Required. Normalized credit report type used to update fields [4750] and [5006] and to drive AUS underwriting flows.

Allowed values: Merge, Prequal, PreApproval.

$.result.details.importOptions.creditReportTypeDesc

Optional. User-friendly description of the credit order, displayed to the user in the AUS flow.

$.result.details.importOptions.liabilityDetails.importLiabilities

Required. If true, liabilities from the included raw response file are imported to the loan application associated with the order.

$.result.details.importOptions.liabilityDetails.deleteLiabilityRecords

Required. Applies only when importLiabilities is true.

If true, all liabilities on the loan application associated with the order are deleted before the import runs.

Note: importing liabilities does not update existing liability records in this release. A request with importLiabilities = true and deleteLiabilityRecords = false adds liability records to the application and does not remove duplicates.

$.result.details.importOptions.liabilityDetails.excludeZeroBalanceLiabilities

Required. Applies only when importLiabilities is true.

If true, liabilities with zero balances are skipped during the import.

The complete list of supported fields in the UPDATE_CREDIT_DATA action details object is defined in the JSON schema below. You can use online tools such as JSON Schema Validator to manually validate the contents of a details object.

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "description": "Schema for credit import options",
  "validationMessage": {
    "invalid-string": "a valid String. Please provide a valid string."
  },
  "additionalProperties": false,
  "required": [
    "resource",
    "importOptions"
  ],
  "properties": {
    "resource": {
      "$ref": "#/definitions/resource"
    },
    "importOptions": {
      "$ref": "#/definitions/importOptions"
    }
  },
  "definitions": {
    "non-empty-string": {
      "type": "string",
      "pattern": "^(?!\\s*$).+",
      "validationMessage": {
        "$ref": "#/validationMessage/invalid-string"
      }
    },
    "resource": {
      "type": "object",
      "description": "Details about the resource being imported",
      "additionalProperties": false,
      "required": [
        "id",
        "type"
      ],
      "properties": {
        "id": {
          "type": "string",
          "description": "Unique identifier for the resource",
          "$ref": "#/definitions/non-empty-string"
        },
        "type": {
          "type": "string",
          "description": "Type of the resource, following a specific URN format",
          "$ref": "#/definitions/non-empty-string"
        }
      }
    },
    "importOptions": {
      "type": "object",
      "description": "Options for importing credit data",
      "additionalProperties": false,
      "required": [
        "creditReportType",
        "liabilityDetails"
      ],
      "properties": {
        "creditReportType": {
          "type": "string",
          "enum": [
            "Merge",
            "Prequal",
            "PreApproval"
          ],
          "description": "Type of credit report to import"
        },
        "creditReportTypeDesc": {
          "type": "string",
          "description": "Description of the credit report type"
        },
        "liabilityDetails": {
          "$ref": "#/definitions/liabilityDetails"
        }
      }
    },
    "liabilityDetails": {
      "type": "object",
      "description": "Details about liabilities to be imported",
      "additionalProperties": false,
      "required": [
        "importLiabilities",
        "deleteLiabilityRecords",
        "excludeZeroBalanceLiabilities"
      ],
      "properties": {
        "importLiabilities": {
          "type": "boolean",
          "description": "Flag to indicate if liabilities should be imported"
        },
        "deleteLiabilityRecords": {
          "type": "boolean",
          "description": "Flag to indicate if existing liability records should be deleted"
        },
        "excludeZeroBalanceLiabilities": {
          "type": "boolean",
          "description": "Flag to exclude liabilities with zero balance"
        }
      }
    }
  }
}

Below is a sample update credit data request payload with all of the supported fields:

{
    "status": "completed",
    "loanFormat": "application/vnd.plm-2.0.0+json",
    "retry": {
        "interval": "1",
        "duration": 10
    },
    "loan": {
        "fees": [
            {
                "feeType": "CreditReportFee",
                "paidToName": "test provider",
                "borPaidAmount": "50.00"
            }
        ]
    },
    "resources": [
        {
            "id": "B2.be11172646KS*515ed6d5-3ec8-40f5-82fa-5a1f8894ac1cKS*liability-_borrower1-725217050482315.xml",
            "name": "liability-_borrower1-725217050482315.xml",
            "mimeType": "application/xml"
        }
    ],
    "result": {
        "format": "application/vnd.credit-data-update-1.0.0.json",
        "action": "UPDATE_CREDIT_DATA",
        "details": {
            "resource": {
                "id": "B2.be11172646KS*515ed6d5-3ec8-40f5-82fa-5a1f8894ac1cKS*liability-_borrower1-725217050482315.xml",
                "type": "urn:ice:epc:partner:credit:report:version:V2.3.1"
            },
            "importOptions": {
                "creditReportType": "Merge",
                "creditReportTypeDesc": "Hard pull",
                "liabilityDetails": {
                    "importLiabilities": true,
                    "deleteLiabilityRecords": true,
                    "excludeZeroBalanceLiabilities": true
                }
            }
        }
    }
}