Qualified Mortgages - Response

Please see the Legend to understand the conventions used to document each object and field. Note that for responses, the XML objects are documented in the order that they appear in the response.

🟥 Data

Object TypeData Type
Parent-

This is the root object of the QM response, and is required. This contains child objects which specify the particulars of the already computed loan which is being examined to see if the data is QM compliant. The following fields and child objects of the Data object are as follows:

Fields: None

Objects: 🟥 Description, 🟦 XMLDetail[], 🟦 IsQm, 🟦 AprTrigger, 🟦 FeaturesTrigger, 🟦 PointsFeesTrigger 🟦 SmallCreditorBalloonTrigger


🟥 Description

Object TypeData TypeValues
DataText-

If the calculation was completed successfully, then this object will contain the value 'Valid Calculation'. Otherwise, this object will contain a description of the problem encountered during the attempted computation.

Fields: None

Objects: None


🟦 XMLDetail[]

Object TypeData TypeDefault
DataTextn/a

The XMLDetail objects are messages passed back to the calling application which detail the status of the XML request. If the SCEX issues any warnings regarding unrecognized objects or fields, then each warning message will be displayed in an XMLDetail object.

In our sample output above, no warnings are returned by the SCEX, and hence there are no XMLDetail objects returned.

Fields: None

Objects: None


🟥 IsQm

Object TypeData TypeValues
DataBooleantrue, false

Qualified mortgage designation is specified by the value of this object. For a legal description of qualified mortgages, refer to §1026.43(e).

true means the loan has been assessed as a qualified mortgage. false means one of the field triggers below has been violated.

Fields: 🔸Apr, 🔸Features, 🔸PointsFees, 🔹SmallCreditorBalloon

Objects: None

🔸 Apr

Data TypeValues
Booleantrue, false

The value of this required boolean field identifies whether or not the Apr - Apor spread has disqualified the loan from being considered a qualified mortgage.

True means the AprTrigger has been violated. False means the loan is not disqualified over a Spread violation.

🔸 Features

Data TypeValues
Booleantrue, false

The value of this required boolean field is true if the FeaturesTrigger has been violated, false otherwise.

🔸 PointsFees

Data TypeValues
Booleantrue, false

The value of this required boolean field is true if the PointsFeesTrigger has been violated, false otherwise.

🔹 SmallCreditorBalloon

Data TypeValues
Booleantrue, false

The value of this optional boolean field is true if the SmallCreditorBalloonTrigger has been violated, false otherwise.

Note that this field will not be present unless the request's QmType field is set to SmallCreditor, and the request contains the SmallCreditorBalloon object.


🟦 AprTrigger

Object TypeData Type
Empty-

This object itself contains no data. The fields of this object expose the determination of the Apr field value. AprTrigger contains the following fields:

See §1026.43(e)(2)(vi) for more.

Fields: 🔸Spread, 🔸SpreadCap, 🔸Enforced,

Objects: None

🔸 Spread

Data TypeValues
Decimalany

The value of this required decimal field represents the difference between the Apr and the Apor. This spread is a basis for determining whether or not a loan qualifies as a Qualified mortgage.

🔸 SpreadCap

Data TypeValues
Decimalany

The value of this required decimal field represents the Apr - Apor threshold beyond which a loan is disqualified from being considered a qualified mortgage.

🔸 Enforced

Data TypeValues
Booleantrue, false

The value of this required boolean field represents whether or not exceeding the SpreadCap can disqualifies a loan from being recognized as a qualified mortgage.

If the QmType is General, the Enforced field is true.

If the QmType is SmallCreditor, the Enforced field is false.


🟦 FeaturesTrigger

Object TypeData Type
Empty-

This object itself contains no data. The fields of this object expose the determination of the Features field. Any field being True violates conditions for a loan being a qualified mortgage. FeaturesTrigger contains the following fields:

Fields: 🔸Balloon, 🔸BalloonEnforced, 🔸DeferredPrincipal, 🔸LoanTermTooLong, 🔸NegativeAm

Objects: None

🔸 Balloon

Data TypeValues
Booleantrue, false

The value of this required boolean field represents whether or not the Balloon Trigger prohibition has been tripped. If the value this field is identical to the value of the HasBalloon input field.

See §1026.43(e)(2)(i)(C).

🔸 BalloonEnforced

Data TypeValues
Booleantrue, false

The value of this required field is false when the QmType field is SmallCreditor, HasBalloon is true, and object SmallCreditorBalloon exists; otherwise, the value is true. In other words, loans with balloons do not qualify as qualified mortgages except those specified as small creditor balloons.

See §1026.43(f).

🔸 DeferredPrincipal

Data TypeValues
Booleantrue, false

The value of this required field is identical to the request value of HasDeferredPrincipal. As with the other fields of the Features object, if the value of this field is true, the loan may not be considered a qualified mortgage.

See §1026.43(e)(2)(i)(B).

🔸 LoanTermTooLong

Data TypeValues
Booleantrue, false

If the value of the request field, TermInYears, is greater than 30, the value of this field is true; otherwise, the value is false.

See §1026.43(e)(2)(ii) for more information on this stipulation.

🔸 NegativeAm

Data TypeValues
Booleantrue, false

The value of this required field is identical to the request value of HasNegativeAm.

See §1026.43(e)(2)(i)(A) for more information on this stipulation.


🟦 PointsFeesTrigger

Object TypeData Type
Empty-

This object itself contains no data. The fields of this object expose the determination of the PointsFees field for the determination of whether or not a loan qualifes as a qualified mortgage. PointsFeesTrigger contains the following fields:

Fields: 🔸TotalPointsFees, 🔸MaxPointsFees

Objects: None

🔸 TotalPointsFees

Object TypeData TypeValues
DataDecimalCurrency > 0

This required decimal field holds the value of the TotalPointsFees from the request payload.

🔸 MaxPointsFees

Object TypeData TypeValues
DataDecimalCurrency > 0

This required decimal field holds the value of the maximum points and fees threshold as determined by the values listed in §1026.43(e)(3), adjusted for CPI.


🟦 SmallCreditorBalloonTrigger

Object TypeData Type
Empty-

This object itself contains no data. The fields of this object expose the determination of the SmallCreditorBalloon field for the determination of whether or not a loan qualifes as a qualified mortgage. SmallCreditorBalloon contains the following fields:

Fields: 🔸AmortLoanTermTooLong, 🔸HasRateIncrease, 🔸LoanTermTooShort,

Objects: None

🔸 AmortLoanTermTooLong

Data TypeValues
Booleantrue, false

If the value of the request field, AmortTermInYears, is greater than 30, the value of this field is true; otherwise, the value is false. See § 1026.43(f)(1)(iv)(A) for more information on this stipulation.

🔸 HasRateIncrease

Data TypeValues
Booleantrue, false

The value of this required field is identical to the request value of HasRateIncrease.

🔸 LoanTermTooShort

Data TypeValues
Booleantrue, false

If the value of the request field, TermInYears, is less than 5, the value of this field is true; otherwise, the value is false. See §1026.43(f)(1)(iv)(C) for more information on this stipulation.