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. This is done by patching a transaction with a response result object with the action UPDATE_CREDIT_DATA.

📘

Prerequisites

Credit technology provider IDs for Fannie (CreditCompanyCode) and Freddie (CreditProviderCode and CreditAffiliateCode) have to be registered on the product. These values are assigned to CRAs by Freddie Mac and Fannie Mae, and are used in underwriting submissions to support inclusion of credit reissue requests. The codes shown in the sample below are for illustration purposes, and will support variances in length of codes as assigned by Freddie Mac and Fannie Mae.

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

The Product has to be entitled to UPDATE_CREDIT_DATA action in order to use it via transaction patch.

Products can be entitled to UPDATE_CREDIT_DATA action by adding it in the response.results array of the specific request type within $.entitlements.data.transaction.

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

Loan data not included in the UPDATE_CREDIT_DATA action can be entitled on the product and patched as normal 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": {
        "action": "UPDATE_CREDIT_DATA",
        "format": "application/vnd.credit-data-update-1.0.0.json",
        "details": {
            ... // update credit data action details
        }
    },
    "partnerStatus": "partner status"
}

📘

format and action

The Encompass Partner Connect Platform (EPC) uses $.result.format and $.result.action to properly handle the action details sent in the transaction PATCH payload. Make sure you use:

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

The "details" object in the result is required to control the processing of key credit data that is sourced from the referenced credit response file. These fields are defined below.

FieldsAdditional Information
$.result.details.resource.idSkyDrive file Id uploaded by partner for raw response.
$.result.details.resource.typeMISMO Credit XML format. Note MISMO 3.4 will be supported in a future release.
Sample: urn:ice:epc:partner:credit:report:version:V2.3.1.
$.result.details.importOptions.creditReportTypeNormalized credit report type used to update [4750] and [5006] and drive AUS underwriting flows.

Enumerated: (Merge | Prequal | PreApproval).
$.result.details.importOptions.creditReportTypeDescUser friendly description of the credit order; displayed to user in AUS flow.
$.result.details.importOptions.liabilityDetails.importLiabilitiesIf true, liabilities from the included raw response file will be imported to the loan application associated with the order.
$.result.details.importOptions.liabilityDetails.deleteLiabilityRecordsRequired if importLiabilities = true

If true, all liabilities on the loan application associated with the order will be deleted before the import is executed.

Note: importing liabilities does not support updates to existing liability records in this release; a request with importLiabilities = true and deleteLiabilityRecords = false will add liability records to the application and will not remove duplicates.
$.result.details.importOptions.liabilityDetails.excludeZeroBalanceLiabilitiesRequired if importLiabilities = true

If true, all liabilities with zero balances will be skipped during the import.

The complete list of supported fields in the update credit data action details is captured in the JSON-schema object definition below. You can use online resources such as JSON Schema Validator to manually validate result details objects content.

{
  "$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"
        }
      }
    }
  }
}

Sample update credit data request payload with most of the fields supported:

{
    "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
                }
            }
        }
    }
}