updateApplicantEligibility
Update debts on an existing underwriting document. Used to overwrite auto generated underwriting results and update debts by either removing, adding or editing them. Underwriting is run against the updated input.
When to Use This Mutation
Use updateApplicantEligibility when you need to:
- ✅ Modify fields on existing debts (balance, creditor, selection status, etc.)
- ✅ Add new manual debts that weren’t on the credit report
- ✅ Remove manual debts (⚠ Only MANUAL debts can be removed)
- ✅ Update applicant contact information
- ✅ Update payment plan or budget details
- ✅ Add exceptions to override underwriting rules for specific debts
- ✅ Re-run underwriting with updated information
Mutation Signature
mutation { updateApplicantEligibility(applicationType: ApplicationTypeInput!, updatedUWFields: UwResultUpdateInput!): EligibilityResponse!}Critical Debt Management Rules
Understanding Debt Sources
Every debt in the underwriting document has a source field that determines what operations are allowed:
| Source | Origin | Can Update? | Can Remove? |
|---|---|---|---|
CREDIT_REPORT | Pulled from credit bureau | ✅ Yes | ❌ No |
MANUAL | Added manually via API | ✅ Yes | ✅ Yes |
How Debt Updates Work
The API handles debts differently based on their source:
Credit Report Debts (source: "CREDIT_REPORT"):
- ✅ Not included in update: Debt remains unchanged - no action needed
- ✅ Included with updates: Only the specified fields are updated
- ✅ Included without changes: You can include unchanged credit report debts - they will simply remain as-is
- ✅ You only need to include credit report debts you want to modify (but including unchanged ones is fine)
- ❌ Cannot be removed from the underwriting result
Manual Debts (source: "MANUAL"):
- ⚠ Not included in update: Debt is REMOVED from the underwriting result
- ✅ Included in update: Debt is retained with any updated fields
- ✅ Included without changes: You can include unchanged manual debts to retain them
- ✅ You must include manual debts you want to keep
- ✅ Can be removed by simply not including them in the update
Summary Table:
| Debt Source | Included in Update | Not Included in Update |
|---|---|---|
CREDIT_REPORT | ✅ Fields updated | ✅ No change (remains as-is) |
MANUAL | ✅ Fields updated & retained | ⚠ REMOVED from document |
Example Requests
mutation UpdateApplicantEligibility($applicationType: ApplicationTypeInput!, $updatedUWFields: UwResultUpdateInput!) { updateApplicantEligibility(applicationType: $applicationType, updatedUWFields: $updatedUWFields) { # Add fields you want to retrieve }}Example 1: Update Credit Report Debt and Selection
Scenario: Modify debt fields and selection status for existing credit report debts. Only need to include debts you want to change.
Variables:
{ "applicationType": "SINGLE", "updatedUWFields": { "id": "<your-uw-result-id>", "revision": 1, "updatedBy": "agent-123", "leadId": "lead-456", "applicantContactInfo": { "applicantState": "CA", "firstName": "John", "lastName": "Doe", "email": "john.doe@example.com", "phone": "5551234567", "ssn": "123456789", "dob": "1985-06-15" }, "applicantUwResult": { "debts": [ { "id": "debt-abc-123", "isSelected": true, "currentBalance": 5800, "creditorName": "Capital One Updated" }, { "id": "debt-xyz-789", "isSelected": false } ] } }}What Happens:
- debt-abc-123: Updated balance and creditor name
- Use
isSelected: trueto include a debt in the program (even if it’s not eligible) - Use
isSelected: falseto exclude a debt from the program (even if it’s eligible) - All other credit report debts remain unchanged
- ⚠️ All manual debts NOT included will be REMOVED
Response:
{ "data": { "updateApplicantEligibility": { "data": { "id": "<your-uw-result-id>", "revision": 2, "applicationUwResult": { "applicantPrequalified": true, "totalDebt": 5800, "totalEligibleDebt": 5800 }, "applicantUwResult": { "debts": [ { "id": "debt-abc-123", "source": "CREDIT_REPORT", "isSelected": true, "eligibilityStatus": "INELIGIBLE", "creditorName": "Capital One Updated", "currentBalance": 5800 }, { "id": "debt-xyz-789", "source": "CREDIT_REPORT", "isSelected": false, "eligibilityStatus": "ELIGIBLE", "creditorName": "Chase Bank", "currentBalance": 12500 } ] } }, "errors": null } }}Example 2: Add a New Manual Debt
Scenario: Add a manual debt that wasn’t on the credit report. Remember to include any existing manual debts you want to keep.
Variables:
{ "applicationType": "SINGLE", "updatedUWFields": { "id": "<your-uw-result-id>", "revision": 2, "updatedBy": "agent-123", "applicantContactInfo": { "applicantState": "CA", "firstName": "John", "lastName": "Doe", "email": "john.doe@example.com", "phone": "5551234567", "ssn": "123456789", "dob": "1985-06-15" }, "applicantUwResult": { "debts": [ { "creditorName": "Medical Collections LLC", "creditorId": "creditor-med-001", "accountNumber": "MED123456", "currentBalance": 2500, "originalBalance": 2500, "accountType": "MEDICAL_BILL", "creditorType": "COLLECTION_AGENCY", "portfolioType": "INSTALLMENT", "notes": [ "Manually added medical debt" ] }, { "id": "existing-manual-debt-id" } ] } }}What Happens:
- New manual debt is created with source: MANUAL
- existing-manual-debt-id is retained
- All credit report debts remain unchanged
- ⚠️ Any other manual debts NOT included will be removed
Response:
{ "data": { "updateApplicantEligibility": { "data": { "id": "<your-uw-result-id>", "revision": 3, "applicantUwResult": { "debts": [ { "id": "new-manual-debt-id", "source": "MANUAL", "isSelected": true, "eligibilityStatus": "ELIGIBLE", "accountType": "MEDICAL_BILL", "accountNumber": "MED123456", "creditorName": "Medical Collections LLC", "creditorType": "COLLECTION_AGENCY", "currentBalance": 2500, "originalBalance": 2500, "portfolioType": "INSTALLMENT", "notes": [ "Manually added medical debt" ] }, { "id": "existing-manual-debt-id", "source": "MANUAL", "isSelected": true, "eligibilityStatus": "ELIGIBLE" } ] } }, "errors": null } }}Example 3: Remove a Manual Debt
Scenario: Remove a manual debt by simply not including it in the update. Keep other manual debts by including them.
Variables:
{ "applicationType": "SINGLE", "updatedUWFields": { "id": "<your-uw-result-id>", "revision": 3, "updatedBy": "agent-123", "applicantContactInfo": { "applicantState": "CA", "firstName": "John", "lastName": "Doe", "email": "john.doe@example.com", "phone": "5551234567", "ssn": "123456789", "dob": "1985-06-15" }, "applicantUwResult": { "debts": [ { "id": "manual-debt-to-keep", "isSelected": true } ] } }}What Happens:
- manual-debt-to-keep is retained
- The omitted manual debt is removed from the document
- All credit report debts remain unchanged
Response:
{ "data": { "updateApplicantEligibility": { "data": { "id": "<your-uw-result-id>", "revision": 4, "applicantUwResult": { "debts": [ { "id": "manual-debt-to-keep", "source": "MANUAL", "isSelected": true } ] } }, "errors": null } }}Example 4: Update Only Applicant Information
Scenario: Update applicant contact info without modifying any debts. ⚠️ Important: If you have manual debts, you must include them to keep them.
Variables:
{ "applicationType": "SINGLE", "updatedUWFields": { "id": "<your-uw-result-id>", "revision": 4, "updatedBy": "agent-123", "applicantContactInfo": { "applicantState": "TX", "firstName": "John", "lastName": "Doe", "email": "john.new@example.com", "phone": "5559999999", "ssn": "123456789", "dob": "1985-06-15", "homeAddress": "456 New Street, Austin, TX 78701", "hardship": "Loss of employment" }, "budget": { "totalMonthlyIncome": 5000, "totalMonthlyExpense": 3500 } }}What Happens:
- Applicant state changed to TX
- Email and phone updated
- Address and hardship added
- Budget information added
- All credit report debts remain unchanged
- ⚠️ All manual debts will be REMOVED (not included in update)
Response:
{ "data": { "updateApplicantEligibility": { "data": { "id": "<your-uw-result-id>", "revision": 5, "applicantUwResult": { "applicantInfo": { "applicantContactInfo": { "applicantState": "TX", "email": "john.new@example.com", "phone": "5559999999", "homeAddress": "456 New Street, Austin, TX 78701", "hardship": "Loss of employment" }, "budget": { "totalMonthlyIncome": 5000, "totalMonthlyExpense": 3500 } } } }, "errors": null } }}Example 5: JOINT Application Update
Scenario: Update a joint application with debts from both applicants and joint debts.
Variables:
{ "applicationType": "JOINT", "updatedUWFields": { "id": "<your-uw-result-id>", "revision": 1, "updatedBy": "agent-456", "leadId": "joint-lead-789", "applicantContactInfo": { "applicantState": "NY", "firstName": "Alice", "lastName": "Johnson", "email": "alice.j@example.com", "phone": "5551112222", "ssn": "111223333", "dob": "1988-07-10", "isMarriedToCoApplicant": true }, "coApplicantContactInfo": { "applicantState": "NY", "firstName": "Bob", "lastName": "Johnson", "email": "bob.j@example.com", "phone": "5553334444", "ssn": "444556666", "dob": "1986-09-25" }, "applicantUwResult": { "debts": [ { "id": "debt-alice-001", "isSelected": true } ] }, "coApplicantUwResult": { "debts": [ { "id": "debt-bob-001", "isSelected": true } ] }, "jointUwResult": { "debts": [ { "id": "debt-joint-001", "isSelected": true, "coApplicantIsSelected": true } ] }, "budget": { "totalMonthlyIncome": 8500, "totalMonthlyExpense": 4200 }, "plan": { "frequency": "BIWEEKLY", "firstPaymentAmount": 450, "secondPaymentAmount": 450, "programTerm": 48, "feePercentage": 27 } }}What Happens:
- Both
applicantContactInfoandcoApplicantContactInfoare required for JOINT applications coApplicantIsSelected(for joint debts only): Whentrue, the co-applicant has also selected this debt for the program. BothisSelectedandcoApplicantIsSelectedmust betruefor the joint debt to be enrolled- Debt Placement: Always place debts in the same section as returned by
checkApplicantEligibility: -
applicantUwResult.debts→ Debts belonging only to the primary applicant
-
coApplicantUwResult.debts→ Debts belonging only to the co-applicant
-
jointUwResult.debts→ Debts shared between both applicants
- ⚠️ Warning: If you place a joint debt under
applicantUwResultinstead ofjointUwResult, it will be treated as the primary applicant’s individual debt, resulting in incorrect eligibility status
Response:
{ "data": { "updateApplicantEligibility": { "data": { "id": "<your-uw-result-id>", "revision": 2, "applicationUwResult": { "applicantPrequalified": true, "applicationType": "JOINT", "totalDebt": 35000, "totalEligibleDebt": 35000 }, "applicantUwResult": { "debts": [ { "id": "debt-alice-001", "source": "CREDIT_REPORT", "isSelected": true, "eligibilityStatus": "ELIGIBLE" } ] }, "coApplicantUwResult": { "debts": [ { "id": "debt-bob-001", "source": "CREDIT_REPORT", "isSelected": true, "eligibilityStatus": "ELIGIBLE" } ] }, "jointUwResult": { "debts": [ { "id": "debt-joint-001", "isSelected": true, "coApplicantIsSelected": true, "eligibilityStatus": "ELIGIBLE" } ] }, "maxTerm": 48 }, "errors": null } }}Example 6: Add Exception Override
Scenario: Override underwriting rules for a specific debt. Note: The exceptions field is for documentation and does not affect the underwriting result.
Variables:
{ "applicationType": "SINGLE", "updatedUWFields": { "id": "<your-uw-result-id>", "revision": 5, "updatedBy": "agent-123", "applicantContactInfo": { "applicantState": "CA", "firstName": "John", "lastName": "Doe", "email": "john.doe@example.com", "phone": "5551234567", "ssn": "123456789", "dob": "1985-06-15" }, "applicantUwResult": { "debts": [ { "id": "debt-ineligible-001", "isSelected": true, "exceptions": [ "Manager approved: Customer provided hardship documentation", "Special circumstances: Payment plan verified" ] } ] } }}What Happens:
- Debt marked with exception reasons
- isOverridden flag indicates debt is being overridden. For example, if a debt is not eligible but you want to include it in the program, you can set isSelected to be true to override the selection status.
- exceptions field documents the reason (for audit trail)
Response:
{ "data": { "updateApplicantEligibility": { "data": { "id": "<your-uw-result-id>", "revision": 6, "applicantUwResult": { "debts": [ { "id": "debt-ineligible-001", "isSelected": true, "eligibilityStatus": "ELIGIBLE", "isOverridden": true, "exceptions": [ "Manager approved: Customer provided hardship documentation", "Special circumstances: Payment plan verified" ] } ] } }, "errors": null } }}Open in Apollo Studio Explorer →
Click the link above to open this mutation in Apollo Studio Explorer with the query pre-filled. You’ll need to authenticate with your sandbox credentials.
Arguments
| Argument | Type | Description |
|---|---|---|
applicationType | ApplicationTypeInput! | Application type for underwriting |
updatedUWFields | UwResultUpdateInput! | Input for updating an existing underwriting result. Contains the UW result ID, revision, and fields to update. |
Input Types
ApplicationTypeInput
Application type for underwriting
| Value | Description |
|---|---|
JOINT | Joint application with primary applicant and co-applicant |
SINGLE | Single applicant application |
UwResultUpdateInput
Input for updating an existing underwriting result. Contains the UW result ID, revision, and fields to update.
Required Fields:
| Field | Type | Description |
|---|---|---|
id | ID! | Underwriting document ID that is being updated |
revision | Int! | Revision number that is being updated. Revision is used to track the changes made to the underwriting document. Can be used to start a new revision based any previous revision. |
updatedBy | ID! | Agent userId set by the integrating CRM to identify the agent in its system. |
applicantContactInfo | ApplicantContactInfoUpdateInput! | Applicant contact information |
Optional Fields:
| Field | Type | Description |
|---|---|---|
leadId | String | Lead ID set by the integrating CRM to identify the lead in its system. |
applicantUwResult | UwResultUpdateFieldsInput | Applicant debts (tradelines). Used to add/remove manual debts for the applicant. Used to update credit report debts for the applicant. |
coApplicantUwResult | UwResultUpdateFieldsInput | Co-applicant debts (tradelines). Used to add/remove manual debts for the co-applicant. Used to update credit report debts for the co-applicant. |
jointUwResult | JointUwResultUpdateFieldsInput | Joint debts (tradelines). Used to add/remove manual joint debts. Used to update credit report joint debts. |
coApplicantContactInfo | ApplicantContactInfoUpdateInput | Co-applicant contact information. Required for JOINT application. |
agentAssigned | String | Agent userId set by the integrating CRM to identify the agent in its system. |
plan | PlanInput | Enrollment payment plan |
budget | BudgetInput | Budget |
additionalInfo | AdditionalInfoInput | Additional info |
UwResultUpdateFieldsInput
Input for updating SINGLE or JOINT_APPLICANT underwriting
Optional Fields:
| Field | Type | Description |
|---|---|---|
debts | [UwResultDebtUpdateInput] | Application debts |
UwResultDebtUpdateInput
Input for updating underwriting individual debts.
Minimum required field:
- id
Optional fields:
- all fields are optional. Provide the entire debt object or just the changed fields.
Optional Fields:
| Field | Type | Description |
|---|---|---|
id | ID | Debt ID. Required for updating existing debts. Leave empty when adding new manual debts. |
creditorId | String | ForthPay creditor ID. |
isSelected | Boolean | True/False flag to identify if this debt is selected for program enrollment |
coApplicantIsSelected | Boolean | Identify if this debt is selected by the co-applicant for program enrollment. Only applicable to JOINT debt. Values: - true - false |
exceptions | [String] | Optional field to add reasons why debt was selected for program enrollment even after failing the underwriting checks. IMPORTANT: This field does not affect the underwriting result. |
externalDebtId | String | This is replaced by accountNumber @deprecated Use accountNumber instead |
accountNumber | String | Debt account number |
externalCrmId | String | Optional field set by the integrating CRM to identify the debt in its system. IMPORTANT: This field does not affect the underwriting result. |
creditorName | String | ForthPay creditor name |
originalCreditorName | String | Original creditor name from credit report. |
creditorType | String | Creditor Type Values: - LEASE_/_RENT - MEDICAL_COLLECTION_AGENCY - FED_STUDENT_LOAN - ORIGINATOR_LEGAL - UTILITY - PAY_DAY_LOAN - DEPARTMENT_STORE - STUDENT_LOAN - DECEASED_COLLECTIONS - CREDIT_UNI… |
ecoaCode | String | ECOA Code Values: - “I” (Individual) - “M” (Maker) - “C” (Comaker) - “J” (Joint) - “A” (AuthorizedUser) - “S” (OnBehalfOf) - “P” (JointParticipating) - “U” (Undesignated) - “T” (Terminated) - “X” (… |
accountType | String | Account type Values: - AUTO_LOAN - CHARGE_ACCOUNT - COLLECTIONS - CREDIT_CARD - FLEXIBLE_SPENDING_CREDIT_CARD - INSTALLMENT - INSTALLMENT_SALES_CONTRACT - LEASE - LINE_OF_CREDIT - MEDICAL_BILL - MO… |
portfolioType | String | Portfolio type Values: - OPEN - REVOLVING - CREDIT_LINE - INSTALLMENT |
debtType | String | Debt type IMPORTANT: This field does not affect the underwriting result. |
openDate | String | Debt open date in YYYY-MM-DD format IMPORTANT: This field does not affect the underwriting result. |
lastPaymentDate | String | Date of last payment in YYYY-MM-DD format |
currentBalance | Float | Current balance |
originalBalance | Float | Original balance as of the date the credit report was originally pulled |
hasLastPayment | Boolean | Identify if this debts most recent payment was made. Values: - true - false |
narrativeCodes | [String] | Narrative codes that might include bankcruptcy codes. These values come from the credit report and are different from vendor to vendor. |
bankruptcyDateFiled | String | Bankruptcy Record Date in YYYY-MM-DD format |
remarks | [String] | Remarks IMPORTANT: This field does not affect the underwriting result. |
nawSignedDate | Date | The date when the non-applicant waiver has been signed in YYYY-MM-DD format. Only applicable to JOINT debt. IMPORTANT: This field does not affect the underwriting result. |
nawUrl | String | URL to the non-applicant waiver document’s file Only applicable to JOINT debt. IMPORTANT: This field does not affect the underwriting result. |
hasProofOfLiability | Boolean | Identify if proof of liability has been provided for the debt. Values: - true - false IMPORTANT: This field does not affect the underwriting result. |
isCollection | Boolean | Identify if the debt is in collection. Values: - true - false |
delinquency | String | account rating /delinquency value IMPORTANT: This field does not affect the underwriting result. |
monthlyPayment | Float | Monthly payment |
notes | [String] | Notes IMPORTANT: This field does not affect the underwriting result. |
UwResultUpdateFieldsInput
Input for updating SINGLE or JOINT_APPLICANT underwriting
Optional Fields:
| Field | Type | Description |
|---|---|---|
debts | [UwResultDebtUpdateInput] | Application debts |
UwResultDebtUpdateInput
Input for updating underwriting individual debts.
Minimum required field:
- id
Optional fields:
- all fields are optional. Provide the entire debt object or just the changed fields.
Optional Fields:
| Field | Type | Description |
|---|---|---|
id | ID | Debt ID. Required for updating existing debts. Leave empty when adding new manual debts. |
creditorId | String | ForthPay creditor ID. |
isSelected | Boolean | True/False flag to identify if this debt is selected for program enrollment |
coApplicantIsSelected | Boolean | Identify if this debt is selected by the co-applicant for program enrollment. Only applicable to JOINT debt. Values: - true - false |
exceptions | [String] | Optional field to add reasons why debt was selected for program enrollment even after failing the underwriting checks. IMPORTANT: This field does not affect the underwriting result. |
externalDebtId | String | This is replaced by accountNumber @deprecated Use accountNumber instead |
accountNumber | String | Debt account number |
externalCrmId | String | Optional field set by the integrating CRM to identify the debt in its system. IMPORTANT: This field does not affect the underwriting result. |
creditorName | String | ForthPay creditor name |
originalCreditorName | String | Original creditor name from credit report. |
creditorType | String | Creditor Type Values: - LEASE_/_RENT - MEDICAL_COLLECTION_AGENCY - FED_STUDENT_LOAN - ORIGINATOR_LEGAL - UTILITY - PAY_DAY_LOAN - DEPARTMENT_STORE - STUDENT_LOAN - DECEASED_COLLECTIONS - CREDIT_UNI… |
ecoaCode | String | ECOA Code Values: - “I” (Individual) - “M” (Maker) - “C” (Comaker) - “J” (Joint) - “A” (AuthorizedUser) - “S” (OnBehalfOf) - “P” (JointParticipating) - “U” (Undesignated) - “T” (Terminated) - “X” (… |
accountType | String | Account type Values: - AUTO_LOAN - CHARGE_ACCOUNT - COLLECTIONS - CREDIT_CARD - FLEXIBLE_SPENDING_CREDIT_CARD - INSTALLMENT - INSTALLMENT_SALES_CONTRACT - LEASE - LINE_OF_CREDIT - MEDICAL_BILL - MO… |
portfolioType | String | Portfolio type Values: - OPEN - REVOLVING - CREDIT_LINE - INSTALLMENT |
debtType | String | Debt type IMPORTANT: This field does not affect the underwriting result. |
openDate | String | Debt open date in YYYY-MM-DD format IMPORTANT: This field does not affect the underwriting result. |
lastPaymentDate | String | Date of last payment in YYYY-MM-DD format |
currentBalance | Float | Current balance |
originalBalance | Float | Original balance as of the date the credit report was originally pulled |
hasLastPayment | Boolean | Identify if this debts most recent payment was made. Values: - true - false |
narrativeCodes | [String] | Narrative codes that might include bankcruptcy codes. These values come from the credit report and are different from vendor to vendor. |
bankruptcyDateFiled | String | Bankruptcy Record Date in YYYY-MM-DD format |
remarks | [String] | Remarks IMPORTANT: This field does not affect the underwriting result. |
nawSignedDate | Date | The date when the non-applicant waiver has been signed in YYYY-MM-DD format. Only applicable to JOINT debt. IMPORTANT: This field does not affect the underwriting result. |
nawUrl | String | URL to the non-applicant waiver document’s file Only applicable to JOINT debt. IMPORTANT: This field does not affect the underwriting result. |
hasProofOfLiability | Boolean | Identify if proof of liability has been provided for the debt. Values: - true - false IMPORTANT: This field does not affect the underwriting result. |
isCollection | Boolean | Identify if the debt is in collection. Values: - true - false |
delinquency | String | account rating /delinquency value IMPORTANT: This field does not affect the underwriting result. |
monthlyPayment | Float | Monthly payment |
notes | [String] | Notes IMPORTANT: This field does not affect the underwriting result. |
JointUwResultUpdateFieldsInput
Input for updating JOINT underwriting
Optional Fields:
| Field | Type | Description |
|---|---|---|
debts | [UwResultDebtUpdateInput] | Application debts |
UwResultDebtUpdateInput
Input for updating underwriting individual debts.
Minimum required field:
- id
Optional fields:
- all fields are optional. Provide the entire debt object or just the changed fields.
Optional Fields:
| Field | Type | Description |
|---|---|---|
id | ID | Debt ID. Required for updating existing debts. Leave empty when adding new manual debts. |
creditorId | String | ForthPay creditor ID. |
isSelected | Boolean | True/False flag to identify if this debt is selected for program enrollment |
coApplicantIsSelected | Boolean | Identify if this debt is selected by the co-applicant for program enrollment. Only applicable to JOINT debt. Values: - true - false |
exceptions | [String] | Optional field to add reasons why debt was selected for program enrollment even after failing the underwriting checks. IMPORTANT: This field does not affect the underwriting result. |
externalDebtId | String | This is replaced by accountNumber @deprecated Use accountNumber instead |
accountNumber | String | Debt account number |
externalCrmId | String | Optional field set by the integrating CRM to identify the debt in its system. IMPORTANT: This field does not affect the underwriting result. |
creditorName | String | ForthPay creditor name |
originalCreditorName | String | Original creditor name from credit report. |
creditorType | String | Creditor Type Values: - LEASE_/_RENT - MEDICAL_COLLECTION_AGENCY - FED_STUDENT_LOAN - ORIGINATOR_LEGAL - UTILITY - PAY_DAY_LOAN - DEPARTMENT_STORE - STUDENT_LOAN - DECEASED_COLLECTIONS - CREDIT_UNI… |
ecoaCode | String | ECOA Code Values: - “I” (Individual) - “M” (Maker) - “C” (Comaker) - “J” (Joint) - “A” (AuthorizedUser) - “S” (OnBehalfOf) - “P” (JointParticipating) - “U” (Undesignated) - “T” (Terminated) - “X” (… |
accountType | String | Account type Values: - AUTO_LOAN - CHARGE_ACCOUNT - COLLECTIONS - CREDIT_CARD - FLEXIBLE_SPENDING_CREDIT_CARD - INSTALLMENT - INSTALLMENT_SALES_CONTRACT - LEASE - LINE_OF_CREDIT - MEDICAL_BILL - MO… |
portfolioType | String | Portfolio type Values: - OPEN - REVOLVING - CREDIT_LINE - INSTALLMENT |
debtType | String | Debt type IMPORTANT: This field does not affect the underwriting result. |
openDate | String | Debt open date in YYYY-MM-DD format IMPORTANT: This field does not affect the underwriting result. |
lastPaymentDate | String | Date of last payment in YYYY-MM-DD format |
currentBalance | Float | Current balance |
originalBalance | Float | Original balance as of the date the credit report was originally pulled |
hasLastPayment | Boolean | Identify if this debts most recent payment was made. Values: - true - false |
narrativeCodes | [String] | Narrative codes that might include bankcruptcy codes. These values come from the credit report and are different from vendor to vendor. |
bankruptcyDateFiled | String | Bankruptcy Record Date in YYYY-MM-DD format |
remarks | [String] | Remarks IMPORTANT: This field does not affect the underwriting result. |
nawSignedDate | Date | The date when the non-applicant waiver has been signed in YYYY-MM-DD format. Only applicable to JOINT debt. IMPORTANT: This field does not affect the underwriting result. |
nawUrl | String | URL to the non-applicant waiver document’s file Only applicable to JOINT debt. IMPORTANT: This field does not affect the underwriting result. |
hasProofOfLiability | Boolean | Identify if proof of liability has been provided for the debt. Values: - true - false IMPORTANT: This field does not affect the underwriting result. |
isCollection | Boolean | Identify if the debt is in collection. Values: - true - false |
delinquency | String | account rating /delinquency value IMPORTANT: This field does not affect the underwriting result. |
monthlyPayment | Float | Monthly payment |
notes | [String] | Notes IMPORTANT: This field does not affect the underwriting result. |
ApplicantContactInfoUpdateInput
Applicant contact and personal information for eligibility update
Required Fields:
| Field | Type | Description |
|---|---|---|
applicantState | String! | Applicant state. Must be a valid U.S. state. Sample Values: - AL - AK - AZ - AR - CA - CO |
Optional Fields:
| Field | Type | Description |
|---|---|---|
employerName | String | Employer name |
isMarriedToCoApplicant | Boolean | Identify if the applicant is married to the co-applicant. Values: - true - false |
homeAddress | String | Applicant home address |
ssn | String | Applicant SSN must be 9 digits long. |
dob | String | Applicant date of birth must be in the format YYYY-MM-DD. |
phone | String | Applicant phone number must be U.S. phone number in E.164 format. |
cellPhone | String | Applicant cell phone number must be U.S. phone number in E.164 format. |
firstName | String | Applicant first name must be 2-20 characters long. |
lastName | String | Applicant last name must be 2-20 characters long. |
jobTitle | String | Applicant job title must be 2-20 characters long. |
email | String | Applicant email must be a valid email address. |
hardship | String | Applicant hardship reason. Sample Values: - Significant decrease in income. - Loss of employment. - Significant medical expenses. |
filedBankruptcy | String | Has the applicant filed bankruptcy. Values: - YES - NO |
routingNumber | String | Applicant routing number. |
bankName | String | Applicant bank name. |
bankAccountNumber | String | Applicant bank account number. |
bankAccountHolderName | String | Applicant bank account holder name |
bankAccountType | String | Applicant bank account type |
eligibilityReqMilitary | String | An answer must be provided for Question: Are you in the military, work in law enforcement, work for a Financial institution or have security clearance? Values: - YES - NO |
eligibilityReqCreditCounselling | String | An answer must be provided for Question: Are you currently enrolled in a credit counseling program? Values: - YES - NO |
eligibilityReqBankruptcy | String | An answer must be provided for Question: Are you currently involved in a Bankruptcy proceeding? Values: - YES - NO |
eligibilityReqFederalGovDebt | String | An answer must be provided for Question: Are any of the accounts being submitted for enrollment backed by the U.S. Federal government? Values: - YES - NO |
eligibilityReqSecuredDebt | String | An answer must be provided for Question: Are any of the accounts being submitted for enrollment secured by any type of collateral? Values: - YES - NO |
belongsToCompanyId | String | The Forth Pay company ID that the applicant belongs to. |
ApplicantContactInfoUpdateInput
Applicant contact and personal information for eligibility update
Required Fields:
| Field | Type | Description |
|---|---|---|
applicantState | String! | Applicant state. Must be a valid U.S. state. Sample Values: - AL - AK - AZ - AR - CA - CO |
Optional Fields:
| Field | Type | Description |
|---|---|---|
employerName | String | Employer name |
isMarriedToCoApplicant | Boolean | Identify if the applicant is married to the co-applicant. Values: - true - false |
homeAddress | String | Applicant home address |
ssn | String | Applicant SSN must be 9 digits long. |
dob | String | Applicant date of birth must be in the format YYYY-MM-DD. |
phone | String | Applicant phone number must be U.S. phone number in E.164 format. |
cellPhone | String | Applicant cell phone number must be U.S. phone number in E.164 format. |
firstName | String | Applicant first name must be 2-20 characters long. |
lastName | String | Applicant last name must be 2-20 characters long. |
jobTitle | String | Applicant job title must be 2-20 characters long. |
email | String | Applicant email must be a valid email address. |
hardship | String | Applicant hardship reason. Sample Values: - Significant decrease in income. - Loss of employment. - Significant medical expenses. |
filedBankruptcy | String | Has the applicant filed bankruptcy. Values: - YES - NO |
routingNumber | String | Applicant routing number. |
bankName | String | Applicant bank name. |
bankAccountNumber | String | Applicant bank account number. |
bankAccountHolderName | String | Applicant bank account holder name |
bankAccountType | String | Applicant bank account type |
eligibilityReqMilitary | String | An answer must be provided for Question: Are you in the military, work in law enforcement, work for a Financial institution or have security clearance? Values: - YES - NO |
eligibilityReqCreditCounselling | String | An answer must be provided for Question: Are you currently enrolled in a credit counseling program? Values: - YES - NO |
eligibilityReqBankruptcy | String | An answer must be provided for Question: Are you currently involved in a Bankruptcy proceeding? Values: - YES - NO |
eligibilityReqFederalGovDebt | String | An answer must be provided for Question: Are any of the accounts being submitted for enrollment backed by the U.S. Federal government? Values: - YES - NO |
eligibilityReqSecuredDebt | String | An answer must be provided for Question: Are any of the accounts being submitted for enrollment secured by any type of collateral? Values: - YES - NO |
belongsToCompanyId | String | The Forth Pay company ID that the applicant belongs to. |
PlanInput
Enrollment payment plan configuration
Optional Fields:
| Field | Type | Description |
|---|---|---|
frequency | String | Payment frequency. Ex: Monthly, Bi-Weekly |
firstPaymentAmount | Float | First payment amount. Ex: 100, 123.45, |
secondPaymentAmount | Float | Second payment amount. Ex: 100, 123.45, |
firstPaymentDate | String | First payment date. |
firstDraftException | String | First draft exception. |
programTerm | Int | Program term. |
feePercentage | Float | Fee percentage. Ex: 27 |
epfReduction | String | EPF reduction. Ex: YES, NO |
secondPaymentDate | String | Second payment date. |
planId | String | Enrollment plan ID. |
BudgetInput
Applicant budget information for affordability calculations
Optional Fields:
| Field | Type | Description |
|---|---|---|
totalMonthlyIncome | Float | Total monthly income. |
totalMonthlyExpense | Float | Total monthly expenses. |
AdditionalInfoInput
Additional underwriting configuration options and exceptions
Optional Fields:
| Field | Type | Description |
|---|---|---|
debtAmountException | String | Debt amount exception |
includeUnacceptableCreditor | Boolean | Include unacceptable creditor |
termExtensionException | Float | Term extension exception value |
standaloneDebtsException | Boolean | Standalone debts exception |
eomFirstDraftDateException | Boolean | EOM first draft date exception |
Response Type
Returns: EligibilityResponse!
EligibilityResponse
Response from eligibility check or update operations
| Field | Type | Description |
|---|---|---|
data | UwEligibilityResult | The underwriting eligibility result data |
errors | [EligibilityResponseError] | List of errors or warnings from underwriting checks |
UwEligibilityResult
| Field | Type | Description |
|---|---|---|
id | ID! | Underwriting document ID |
revision | Int! | Revision number of this underwriting document. Each time the document is edited the revision number is incremented |
applicationUwResult | ApplicationUwResult | Underwriting result for the application as a whole. |
applicantUwResult | UwResult | Applicant’s debts (tradeline) specific underwriting results |
coApplicantUwResult | UwResult | Co-applicant’s debts (tradeline) specific underwriting results. Only applicable to JOINT application. |
jointUwResult | JointUwResult | Joint debts (tradeline) specific underwriting results. Only applicable to JOINT application. |
tradelineMetadata | TradelineMetadata | Additional metadata about UW application |
maxTerm | Int | Maximum term (in months) calculated for this underwriting application |
createdAt | Date | Date and time this underwriting document revision was created |
ApplicationUwResult
| Field | Type | Description |
|---|---|---|
applicantPrequalified | Boolean! | True/False flag to identify if this application passed all underwriting criteria |
applicationType | String | Type of application can be SINGLE or JOINT |
rootFilters | ApplicationRootFilters! | Application level filters |
totalDebt | Float | Total selected debts balance |
totalEligibleDebt | Float | Total eligible and selected debts balance |
tradelineMetadata | TradelineMetadata | Additional metadata about UW application |
ApplicationRootFilters
| Field | Type | Description |
|---|---|---|
totalDebtValueCheck | Boolean | True/False flag to identify if this underwriting check passed |
tenPercentRuleCheck | Boolean | True/False flag to identify if this underwriting check passed |
agentAssignedCheck | Boolean | True/False flag to identify if this underwriting check passed |
creditReport30DaysCheck | Boolean | True/False flag to identify if this underwriting check passed |
psStateServiceCheck | Boolean | True/False flag to identify if this underwriting check passed |
uniqueEmailPhoneCheck | Boolean | True/False flag to identify if this underwriting check passed |
programTermCheck | Boolean | True/False flag to identify if this underwriting check passed |
budgetHardshipCheck | Boolean | True/False flag to identify if this underwriting check passed |
TradelineMetadata
| Field | Type | Description |
|---|---|---|
enrolledUpstartDebtAccountNumbers | [String] | List of externalDebtsId’s that belong to selected Upstart debts, if empty then none |
enrolledCapitalOneDebtAccountNumbers | [String] | List of externalDebtsId’s that belong to selected Catipal One debts, if empty then none |
enrolledDiscoverDebtAccountNumbers | [String] | List of externalDebtsId’s that belong to selected Discover debts, if empty then none |
UwResult
| Field | Type | Description |
|---|---|---|
id | ID! | Underwriting document ID |
uwOrgId | String | The organization underwriting rules used for this application. Values: - ALV - GLG |
reqOrgId | String | Requesting organization ID. Based on the credentials of the system making the request. |
revision | Int! | Document revision number. Each time the document is edited the revision number is incremented |
reqOrgContactId | String | Requesting organization contact ID |
creditReportId | String | Applicant normalized credit report ID from the credit report service |
coCreditReportId | String | Co-Applicant normalized credit report ID from the credit report service |
leadId | String | Applicant leadId set by the integrating CRM to identify the lead in its system. |
applicationType | String | Type of application can be SINGLE or JOINT |
applicantInfo | ApplicantInfo! | Applicant information. |
rootFilters | ApplicantRootFilters! | Root level filters (All underwriting filters that are not specific to a debt) |
debts | [UwResultDebt]! | List of debts. Each debt will have additional underwriting pass/fail information |
creditReportSource | String! | Credit report source Values: - SPINWHEEL - CRS_TRANSUNION - CRS_EQUIFAX |
rootHistory | [UwResultHistory] | Audit history of edits applied to the top level fields of this application |
createdAt | Date | Date and time this underwriting document revision was created |
ApplicantInfo
| Field | Type | Description |
|---|---|---|
publicRecords | [PublicRecord] | Public records from the credit report. |
applicantContactInfo | ApplicantContactInfo | Applicant’s contact information |
coApplicantContactInfo | ApplicantContactInfo | Co-applicant’s contact information |
agentAssigned | String | Agent userId set by the integrating CRM to identify the agent in its system. |
plan | Plan | Enrollment plan. |
budget | Budget | Budget. |
additionalInfo | AdditionalInfo | Additional info |
PublicRecord
Public Record
| Field | Type | Description |
|---|---|---|
bankruptcyCode | String! | Bankcrupty code |
bankruptcyDateFiled | String | Bankcrupty date filed |
bankruptcyDispositionType | String | Bankcrupty disposition type |
ApplicantContactInfo
| Field | Type | Description |
|---|---|---|
employerName | String | Applicant employer name |
isMarriedToCoApplicant | Boolean | True/False flag to identify if the applicant is married to the co-applicant |
homeAddress | String | Applicant home address. |
applicantState | String! | Applicant state. |
ssn | String | Applicant SSN. |
dob | String | Applicant date of birth. |
phone | String | Applicant phone number. |
cellPhone | String | Applicant cell phone number. |
firstName | String | Applicant first name. |
lastName | String | Applicant last name. |
jobTitle | String | Applicant job title. |
email | String | Applicant email. |
hardship | String | Applicant hardship reason. |
filedBankruptcy | String | Has the applicant filed bankruptcy. |
routingNumber | String | Applicant routing number. |
bankName | String | Applicant bank name. |
bankAccountNumber | String | Applicant bank account number. |
bankAccountHolderName | String | Applicant bank account holder name. |
bankAccountType | String | Applicant bank account type. |
eligibilityReqMilitary | String | Applicant eligibility requirement for military. |
eligibilityReqCreditCounselling | String | Applicant eligibility requirement for credit counselling. |
eligibilityReqBankruptcy | String | Applicant eligibility requirement for bankruptcy. |
eligibilityReqFederalGovDebt | String | Applicant eligibility requirement for federal government debt. |
eligibilityReqSecuredDebt | String | Applicant eligibility requirement for secured debt. |
belongsToCompanyId | String | The Forth Pay company ID that the applicant belongs to. |
ApplicantContactInfo
| Field | Type | Description |
|---|---|---|
employerName | String | Applicant employer name |
isMarriedToCoApplicant | Boolean | True/False flag to identify if the applicant is married to the co-applicant |
homeAddress | String | Applicant home address. |
applicantState | String! | Applicant state. |
ssn | String | Applicant SSN. |
dob | String | Applicant date of birth. |
phone | String | Applicant phone number. |
cellPhone | String | Applicant cell phone number. |
firstName | String | Applicant first name. |
lastName | String | Applicant last name. |
jobTitle | String | Applicant job title. |
email | String | Applicant email. |
hardship | String | Applicant hardship reason. |
filedBankruptcy | String | Has the applicant filed bankruptcy. |
routingNumber | String | Applicant routing number. |
bankName | String | Applicant bank name. |
bankAccountNumber | String | Applicant bank account number. |
bankAccountHolderName | String | Applicant bank account holder name. |
bankAccountType | String | Applicant bank account type. |
eligibilityReqMilitary | String | Applicant eligibility requirement for military. |
eligibilityReqCreditCounselling | String | Applicant eligibility requirement for credit counselling. |
eligibilityReqBankruptcy | String | Applicant eligibility requirement for bankruptcy. |
eligibilityReqFederalGovDebt | String | Applicant eligibility requirement for federal government debt. |
eligibilityReqSecuredDebt | String | Applicant eligibility requirement for secured debt. |
belongsToCompanyId | String | The Forth Pay company ID that the applicant belongs to. |
Plan
| Field | Type | Description |
|---|---|---|
frequency | String | Frequency of the enrollment plan. Ex: Monthly, Bi-Weekly |
firstPaymentAmount | Float | First payment amount. Ex: 100, 123.45, |
secondPaymentAmount | Float | Second payment amount. Ex: 100, 123.45, |
firstPaymentDate | String | First payment date. |
secondPaymentDate | String | Second payment date. |
firstDraftException | String | First draft exception. |
programTerm | Int | Program term. |
feePercentage | Float | Fee percentage. |
epfReduction | String | EPF reduction. Ex: YES, NO |
planId | String | Enrollment plan ID. |
Budget
| Field | Type | Description |
|---|---|---|
totalMonthlyIncome | Float | Total monthly income. |
totalMonthlyExpense | Float | Total monthly expenses. |
AdditionalInfo
| Field | Type | Description |
|---|---|---|
debtAmountException | String | Debt amount exception |
includeUnacceptableCreditor | Boolean | Include unacceptable creditor |
termExtensionException | Float | Term extension exception value |
standaloneDebtsException | Boolean | Standalone debts exception |
eomFirstDraftDateException | Boolean | EOM first draft date exception |
ApplicantRootFilters
| Field | Type | Description |
|---|---|---|
stateServiceCheck | Boolean | True/False flag to identify if this underwriting check passed |
bankruptcyCheck | Boolean | True/False flag to identify if this underwriting check passed |
ssnCheck | Boolean | True/False flag to identify if this underwriting check passed |
dobCheck | Boolean | True/False flag to identify if this underwriting check passed |
phoneCheck | Boolean | True/False flag to identify if this underwriting check passed |
firstNameCheck | Boolean | True/False flag to identify if this underwriting check passed |
lastNameCheck | Boolean | True/False flag to identify if this underwriting check passed |
applicantEmployerCheck | Boolean | True/False flag to identify if this underwriting check passed |
jobTitleCheck | Boolean | True/False flag to identify if this underwriting check passed |
addressCheck | Boolean | True/False flag to identify if this underwriting check passed |
emailCheck | Boolean | True/False flag to identify if this underwriting check passed |
coApplicantFirstNameCheck | Boolean | True/False flag to identify if this underwriting check passed |
coApplicantLastNameCheck | Boolean | True/False flag to identify if this underwriting check passed |
coApplicantEmployerCheck | Boolean | True/False flag to identify if this underwriting check passed |
coApplicantJobTitleCheck | Boolean | True/False flag to identify if this underwriting check passed |
coApplicantSsnCheck | Boolean | True/False flag to identify if this underwriting check passed |
coApplicantDobCheck | Boolean | True/False flag to identify if this underwriting check passed |
coApplicantPhoneCheck | Boolean | True/False flag to identify if this underwriting check passed |
coApplicantCellPhoneCheck | Boolean | True/False flag to identify if this underwriting check passed |
hardshipCheck | Boolean | True/False flag to identify if this underwriting check passed |
duplicateSsnCheck | Boolean | True/False flag to identify if this underwriting check passed |
duplicateCoApplicantSsnCheck | Boolean | True/False flag to identify if this underwriting check passed |
routingNumberCheck | Boolean | True/False flag to identify if this underwriting check passed |
bankNameCheck | Boolean | True/False flag to identify if this underwriting check passed |
bankAccountNumberCheck | Boolean | True/False flag to identify if this underwriting check passed |
bankAccountHolderNameCheck | Boolean | True/False flag to identify if this underwriting check passed |
bankAccountTypeCheck | Boolean | True/False flag to identify if this underwriting check passed |
debtsBackedByUsFedGovCheck | Boolean | True/False flag to identify if this underwriting check passed |
eligibilityReqMilitaryCheck | Boolean | True/False flag to identify if this underwriting check passed |
eligibilityReqCreditCounsellingCheck | Boolean | True/False flag to identify if this underwriting check passed |
eligibilityReqBankruptcyCheck | Boolean | True/False flag to identify if this underwriting check passed |
eligibilityReqFederalGovDebtCheck | Boolean | True/False flag to identify if this underwriting check passed |
eligibilityReqSecuredDebtCheck | Boolean | True/False flag to identify if this underwriting check passed |
frequencyMinimumPaymentCheck | Boolean | True/False flag to identify if this underwriting check passed |
budgetAffordabilityCheck | Boolean | True/False flag to identify if this underwriting check passed |
firstDraftDateCheck | Boolean | True/False flag to identify if this underwriting check passed |
feeValidationCheck | Boolean | True/False flag to identify if this underwriting check passed |
secondDraftDateCheck | Boolean | True/False flag to identify if this underwriting check passed |
companyIsAuthorizedCheck | Boolean | True/False flag to identify if this underwriting check passed |
enrollmentPlanCheck | Boolean | True/False flag to identify if this underwriting check passed |
termExtensionExceptionCheck | Boolean | True/False flag to identify if this underwriting check passed |
caStateFileCheck | Boolean | True/False flag to identify if the co-applicant has ssn when state is CA and application type is JOINT |
UwResultDebt
Debt information with underwriting check results
| Field | Type | Description |
|---|---|---|
id | ID! | Unique identifier for the debt |
applicantId | String | Primary applicant ID |
coApplicantId | String | Secondary applicant ID, if applicable (For JOINT application only) |
externalDebtId | ID | This is replaced by accountNumber @deprecated Use accountNumber instead |
accountNumber | String | Debt account number |
externalCrmId | String | Optional field to identify the debt in the requesting CRM |
isSelected | Boolean! | True/False flag to identify if this debt is selected for program enrollment |
coApplicantIsSelected | Boolean | Only applicable to JOINT debt. True/False flag to identify if this debt is selected by the co-applicant |
eligibilityStatus | EligibilityStatus! | Identify the eligibility status |
isOverridden | Boolean | True/False flag to identify if the eligiblity status is being overriden |
exceptions | [String] | List of reasons the eligibility status is being overridden |
history | [UwResultDebtHistory] | History of all the updates made to this debt |
source | String! | Source of the debt entry can be MANUAL or CREDIT_REPORT |
creditorName | String | creditor name |
parentCreditorName | String | Parent creditor name |
parentCreditorId | String | Parent creditor ID |
originalCreditorName | String | Original creditor name |
creditorId | ID | Creditor ID from Forth |
creditorType | String | creditor type |
ecoaCode | String | ECOA Code |
accountType | String | Account type |
portfolioType | String | Portfolio type |
debtType | String | Debt type |
openDate | String | Date debt was opened |
lastPaymentDate | String | Date of the last payment |
hasLastPayment | Boolean | True/False flag to identify if last payment was amde |
narrativeCodes | [String] | Narrative codes that might include bankcruptcy codes |
bankruptcyDateFiled | String | Bankruptcy Record Date. This come from the credit report and does not need to be updated. |
currentBalance | Float | Current debt balance |
originalBalance | Float | Original debt balance |
nawSignedDate | Date | Only applicable to JOINT debt. The date when the non-applicant waiver has been signed. |
nawUrl | String | Only applicable to JOINT debt. The url to the non-applicant waiver document’s file |
hasProofOfLiability | Boolean | Has provided proof of liability |
forthDebtTypeId | String | Forth Debt Type ID |
remarks | [String] | Remarks |
isCollection | Boolean | Flag to show if the debt is in collection |
approvedAccountTypeCheck | Boolean | True/False flag to identify if this underwriting check passed |
unacceptableCreditorCheck | Boolean | True/False flag to identify if this underwriting check passed |
creditUnionAndStateCheck | Boolean | True/False flag to identify if this underwriting check passed |
debtOwnershipCheck | Boolean | True/False flag to identify if this underwriting check passed |
minimumDebtValueCheck | Boolean | True/False flag to identify if this underwriting check passed |
duplicateDebtsCheck | Boolean | True/False flag to identify if this debt is selected and a duplicate debt |
multipleCreditUnionCheck | Boolean | True/False flag to identify if this underwriting check passed |
paymentHistoryCheck | Boolean | True/False flag to identify if this underwriting check passed |
unsecuredDebtCheck | Boolean | True/False flag to identify if this underwriting check passed |
bankruptcyCheck | Boolean | True/False flag to identify if this underwriting check passed |
employerIsCreditorCheck | Boolean | True/False flag to identify if the creditor is the same as employer |
standaloneDebtsCheck | Boolean | True/False flag to identify if the creditor is a standalone debt |
coApplicantCheck | Boolean | Only applicable to JOINT debt. True/False flag to identify if this underwriting check passed |
currAndOgBalanceCheck | Boolean | Current and original balance check |
proofOfLiabilityCheck | Boolean | Proof of liability |
delinquency | String | account rating /delinquency value |
monthlyPayment | Float | Monthly payment |
notes | [String] | Debt Notes |
UwResultDebtHistory
Historical record of changes made to a debt
| Field | Type | Description |
|---|---|---|
isSelected | Boolean | Whether the debt was selected for enrollment at this revision |
coApplicantIsSelected | Boolean | Whether the co-applicant had selected this debt at this revision |
exceptions | [String] | Exceptions applied to the debt at this revision |
source | String | Source of the debt (MANUAL or CREDIT_REPORT) |
creditorName | String | Creditor name at this revision |
originalCreditorName | String | Original creditor name at this revision |
creditorType | String | Creditor type at this revision |
ecoaCode | String | ECOA code at this revision |
accountType | String | Account type at this revision |
portfolioType | String | Portfolio type at this revision |
debtType | String | Debt type at this revision |
openDate | String | Open date at this revision |
lastPaymentDate | String | Last payment date at this revision |
hasLastPayment | Boolean | Whether last payment was made at this revision |
currentBalance | Float | Current balance at this revision |
originalBalance | Float | Original balance at this revision |
narrativeCodes | [String] | Narrative codes at this revision |
bankruptcyDateFiled | String | Bankruptcy date filed at this revision |
nawSignedDate | Date | Non-applicant waiver signed date at this revision |
nawUrl | String | Non-applicant waiver URL at this revision |
hasProofOfLiability | Boolean | Whether proof of liability was provided at this revision |
isCollection | Boolean | Whether the debt was in collection at this revision |
remarks | [String] | Remarks at this revision |
monthlyPayment | Float | Monthly payment at this revision |
updatedBy | ID | User ID who made this update |
fromRevision | Int | The revision number this history entry was created from |
UwResultHistory
Historical record of changes made to the underwriting result
| Field | Type | Description |
|---|---|---|
applicantInfo | ApplicantInfo | Applicant information at this revision |
leadId | String | Lead ID at this revision |
updatedBy | ID | User ID who made this update |
fromRevision | Int | The revision number this history entry was created from |
ApplicantInfo
| Field | Type | Description |
|---|---|---|
publicRecords | [PublicRecord] | Public records from the credit report. |
applicantContactInfo | ApplicantContactInfo | Applicant’s contact information |
coApplicantContactInfo | ApplicantContactInfo | Co-applicant’s contact information |
agentAssigned | String | Agent userId set by the integrating CRM to identify the agent in its system. |
plan | Plan | Enrollment plan. |
budget | Budget | Budget. |
additionalInfo | AdditionalInfo | Additional info |
PublicRecord
Public Record
| Field | Type | Description |
|---|---|---|
bankruptcyCode | String! | Bankcrupty code |
bankruptcyDateFiled | String | Bankcrupty date filed |
bankruptcyDispositionType | String | Bankcrupty disposition type |
ApplicantContactInfo
| Field | Type | Description |
|---|---|---|
employerName | String | Applicant employer name |
isMarriedToCoApplicant | Boolean | True/False flag to identify if the applicant is married to the co-applicant |
homeAddress | String | Applicant home address. |
applicantState | String! | Applicant state. |
ssn | String | Applicant SSN. |
dob | String | Applicant date of birth. |
phone | String | Applicant phone number. |
cellPhone | String | Applicant cell phone number. |
firstName | String | Applicant first name. |
lastName | String | Applicant last name. |
jobTitle | String | Applicant job title. |
email | String | Applicant email. |
hardship | String | Applicant hardship reason. |
filedBankruptcy | String | Has the applicant filed bankruptcy. |
routingNumber | String | Applicant routing number. |
bankName | String | Applicant bank name. |
bankAccountNumber | String | Applicant bank account number. |
bankAccountHolderName | String | Applicant bank account holder name. |
bankAccountType | String | Applicant bank account type. |
eligibilityReqMilitary | String | Applicant eligibility requirement for military. |
eligibilityReqCreditCounselling | String | Applicant eligibility requirement for credit counselling. |
eligibilityReqBankruptcy | String | Applicant eligibility requirement for bankruptcy. |
eligibilityReqFederalGovDebt | String | Applicant eligibility requirement for federal government debt. |
eligibilityReqSecuredDebt | String | Applicant eligibility requirement for secured debt. |
belongsToCompanyId | String | The Forth Pay company ID that the applicant belongs to. |
ApplicantContactInfo
| Field | Type | Description |
|---|---|---|
employerName | String | Applicant employer name |
isMarriedToCoApplicant | Boolean | True/False flag to identify if the applicant is married to the co-applicant |
homeAddress | String | Applicant home address. |
applicantState | String! | Applicant state. |
ssn | String | Applicant SSN. |
dob | String | Applicant date of birth. |
phone | String | Applicant phone number. |
cellPhone | String | Applicant cell phone number. |
firstName | String | Applicant first name. |
lastName | String | Applicant last name. |
jobTitle | String | Applicant job title. |
email | String | Applicant email. |
hardship | String | Applicant hardship reason. |
filedBankruptcy | String | Has the applicant filed bankruptcy. |
routingNumber | String | Applicant routing number. |
bankName | String | Applicant bank name. |
bankAccountNumber | String | Applicant bank account number. |
bankAccountHolderName | String | Applicant bank account holder name. |
bankAccountType | String | Applicant bank account type. |
eligibilityReqMilitary | String | Applicant eligibility requirement for military. |
eligibilityReqCreditCounselling | String | Applicant eligibility requirement for credit counselling. |
eligibilityReqBankruptcy | String | Applicant eligibility requirement for bankruptcy. |
eligibilityReqFederalGovDebt | String | Applicant eligibility requirement for federal government debt. |
eligibilityReqSecuredDebt | String | Applicant eligibility requirement for secured debt. |
belongsToCompanyId | String | The Forth Pay company ID that the applicant belongs to. |
Plan
| Field | Type | Description |
|---|---|---|
frequency | String | Frequency of the enrollment plan. Ex: Monthly, Bi-Weekly |
firstPaymentAmount | Float | First payment amount. Ex: 100, 123.45, |
secondPaymentAmount | Float | Second payment amount. Ex: 100, 123.45, |
firstPaymentDate | String | First payment date. |
secondPaymentDate | String | Second payment date. |
firstDraftException | String | First draft exception. |
programTerm | Int | Program term. |
feePercentage | Float | Fee percentage. |
epfReduction | String | EPF reduction. Ex: YES, NO |
planId | String | Enrollment plan ID. |
Budget
| Field | Type | Description |
|---|---|---|
totalMonthlyIncome | Float | Total monthly income. |
totalMonthlyExpense | Float | Total monthly expenses. |
AdditionalInfo
| Field | Type | Description |
|---|---|---|
debtAmountException | String | Debt amount exception |
includeUnacceptableCreditor | Boolean | Include unacceptable creditor |
termExtensionException | Float | Term extension exception value |
standaloneDebtsException | Boolean | Standalone debts exception |
eomFirstDraftDateException | Boolean | EOM first draft date exception |
UwResult
| Field | Type | Description |
|---|---|---|
id | ID! | Underwriting document ID |
uwOrgId | String | The organization underwriting rules used for this application. Values: - ALV - GLG |
reqOrgId | String | Requesting organization ID. Based on the credentials of the system making the request. |
revision | Int! | Document revision number. Each time the document is edited the revision number is incremented |
reqOrgContactId | String | Requesting organization contact ID |
creditReportId | String | Applicant normalized credit report ID from the credit report service |
coCreditReportId | String | Co-Applicant normalized credit report ID from the credit report service |
leadId | String | Applicant leadId set by the integrating CRM to identify the lead in its system. |
applicationType | String | Type of application can be SINGLE or JOINT |
applicantInfo | ApplicantInfo! | Applicant information. |
rootFilters | ApplicantRootFilters! | Root level filters (All underwriting filters that are not specific to a debt) |
debts | [UwResultDebt]! | List of debts. Each debt will have additional underwriting pass/fail information |
creditReportSource | String! | Credit report source Values: - SPINWHEEL - CRS_TRANSUNION - CRS_EQUIFAX |
rootHistory | [UwResultHistory] | Audit history of edits applied to the top level fields of this application |
createdAt | Date | Date and time this underwriting document revision was created |
ApplicantInfo
| Field | Type | Description |
|---|---|---|
publicRecords | [PublicRecord] | Public records from the credit report. |
applicantContactInfo | ApplicantContactInfo | Applicant’s contact information |
coApplicantContactInfo | ApplicantContactInfo | Co-applicant’s contact information |
agentAssigned | String | Agent userId set by the integrating CRM to identify the agent in its system. |
plan | Plan | Enrollment plan. |
budget | Budget | Budget. |
additionalInfo | AdditionalInfo | Additional info |
PublicRecord
Public Record
| Field | Type | Description |
|---|---|---|
bankruptcyCode | String! | Bankcrupty code |
bankruptcyDateFiled | String | Bankcrupty date filed |
bankruptcyDispositionType | String | Bankcrupty disposition type |
ApplicantContactInfo
| Field | Type | Description |
|---|---|---|
employerName | String | Applicant employer name |
isMarriedToCoApplicant | Boolean | True/False flag to identify if the applicant is married to the co-applicant |
homeAddress | String | Applicant home address. |
applicantState | String! | Applicant state. |
ssn | String | Applicant SSN. |
dob | String | Applicant date of birth. |
phone | String | Applicant phone number. |
cellPhone | String | Applicant cell phone number. |
firstName | String | Applicant first name. |
lastName | String | Applicant last name. |
jobTitle | String | Applicant job title. |
email | String | Applicant email. |
hardship | String | Applicant hardship reason. |
filedBankruptcy | String | Has the applicant filed bankruptcy. |
routingNumber | String | Applicant routing number. |
bankName | String | Applicant bank name. |
bankAccountNumber | String | Applicant bank account number. |
bankAccountHolderName | String | Applicant bank account holder name. |
bankAccountType | String | Applicant bank account type. |
eligibilityReqMilitary | String | Applicant eligibility requirement for military. |
eligibilityReqCreditCounselling | String | Applicant eligibility requirement for credit counselling. |
eligibilityReqBankruptcy | String | Applicant eligibility requirement for bankruptcy. |
eligibilityReqFederalGovDebt | String | Applicant eligibility requirement for federal government debt. |
eligibilityReqSecuredDebt | String | Applicant eligibility requirement for secured debt. |
belongsToCompanyId | String | The Forth Pay company ID that the applicant belongs to. |
ApplicantContactInfo
| Field | Type | Description |
|---|---|---|
employerName | String | Applicant employer name |
isMarriedToCoApplicant | Boolean | True/False flag to identify if the applicant is married to the co-applicant |
homeAddress | String | Applicant home address. |
applicantState | String! | Applicant state. |
ssn | String | Applicant SSN. |
dob | String | Applicant date of birth. |
phone | String | Applicant phone number. |
cellPhone | String | Applicant cell phone number. |
firstName | String | Applicant first name. |
lastName | String | Applicant last name. |
jobTitle | String | Applicant job title. |
email | String | Applicant email. |
hardship | String | Applicant hardship reason. |
filedBankruptcy | String | Has the applicant filed bankruptcy. |
routingNumber | String | Applicant routing number. |
bankName | String | Applicant bank name. |
bankAccountNumber | String | Applicant bank account number. |
bankAccountHolderName | String | Applicant bank account holder name. |
bankAccountType | String | Applicant bank account type. |
eligibilityReqMilitary | String | Applicant eligibility requirement for military. |
eligibilityReqCreditCounselling | String | Applicant eligibility requirement for credit counselling. |
eligibilityReqBankruptcy | String | Applicant eligibility requirement for bankruptcy. |
eligibilityReqFederalGovDebt | String | Applicant eligibility requirement for federal government debt. |
eligibilityReqSecuredDebt | String | Applicant eligibility requirement for secured debt. |
belongsToCompanyId | String | The Forth Pay company ID that the applicant belongs to. |
Plan
| Field | Type | Description |
|---|---|---|
frequency | String | Frequency of the enrollment plan. Ex: Monthly, Bi-Weekly |
firstPaymentAmount | Float | First payment amount. Ex: 100, 123.45, |
secondPaymentAmount | Float | Second payment amount. Ex: 100, 123.45, |
firstPaymentDate | String | First payment date. |
secondPaymentDate | String | Second payment date. |
firstDraftException | String | First draft exception. |
programTerm | Int | Program term. |
feePercentage | Float | Fee percentage. |
epfReduction | String | EPF reduction. Ex: YES, NO |
planId | String | Enrollment plan ID. |
Budget
| Field | Type | Description |
|---|---|---|
totalMonthlyIncome | Float | Total monthly income. |
totalMonthlyExpense | Float | Total monthly expenses. |
AdditionalInfo
| Field | Type | Description |
|---|---|---|
debtAmountException | String | Debt amount exception |
includeUnacceptableCreditor | Boolean | Include unacceptable creditor |
termExtensionException | Float | Term extension exception value |
standaloneDebtsException | Boolean | Standalone debts exception |
eomFirstDraftDateException | Boolean | EOM first draft date exception |
ApplicantRootFilters
| Field | Type | Description |
|---|---|---|
stateServiceCheck | Boolean | True/False flag to identify if this underwriting check passed |
bankruptcyCheck | Boolean | True/False flag to identify if this underwriting check passed |
ssnCheck | Boolean | True/False flag to identify if this underwriting check passed |
dobCheck | Boolean | True/False flag to identify if this underwriting check passed |
phoneCheck | Boolean | True/False flag to identify if this underwriting check passed |
firstNameCheck | Boolean | True/False flag to identify if this underwriting check passed |
lastNameCheck | Boolean | True/False flag to identify if this underwriting check passed |
applicantEmployerCheck | Boolean | True/False flag to identify if this underwriting check passed |
jobTitleCheck | Boolean | True/False flag to identify if this underwriting check passed |
addressCheck | Boolean | True/False flag to identify if this underwriting check passed |
emailCheck | Boolean | True/False flag to identify if this underwriting check passed |
coApplicantFirstNameCheck | Boolean | True/False flag to identify if this underwriting check passed |
coApplicantLastNameCheck | Boolean | True/False flag to identify if this underwriting check passed |
coApplicantEmployerCheck | Boolean | True/False flag to identify if this underwriting check passed |
coApplicantJobTitleCheck | Boolean | True/False flag to identify if this underwriting check passed |
coApplicantSsnCheck | Boolean | True/False flag to identify if this underwriting check passed |
coApplicantDobCheck | Boolean | True/False flag to identify if this underwriting check passed |
coApplicantPhoneCheck | Boolean | True/False flag to identify if this underwriting check passed |
coApplicantCellPhoneCheck | Boolean | True/False flag to identify if this underwriting check passed |
hardshipCheck | Boolean | True/False flag to identify if this underwriting check passed |
duplicateSsnCheck | Boolean | True/False flag to identify if this underwriting check passed |
duplicateCoApplicantSsnCheck | Boolean | True/False flag to identify if this underwriting check passed |
routingNumberCheck | Boolean | True/False flag to identify if this underwriting check passed |
bankNameCheck | Boolean | True/False flag to identify if this underwriting check passed |
bankAccountNumberCheck | Boolean | True/False flag to identify if this underwriting check passed |
bankAccountHolderNameCheck | Boolean | True/False flag to identify if this underwriting check passed |
bankAccountTypeCheck | Boolean | True/False flag to identify if this underwriting check passed |
debtsBackedByUsFedGovCheck | Boolean | True/False flag to identify if this underwriting check passed |
eligibilityReqMilitaryCheck | Boolean | True/False flag to identify if this underwriting check passed |
eligibilityReqCreditCounsellingCheck | Boolean | True/False flag to identify if this underwriting check passed |
eligibilityReqBankruptcyCheck | Boolean | True/False flag to identify if this underwriting check passed |
eligibilityReqFederalGovDebtCheck | Boolean | True/False flag to identify if this underwriting check passed |
eligibilityReqSecuredDebtCheck | Boolean | True/False flag to identify if this underwriting check passed |
frequencyMinimumPaymentCheck | Boolean | True/False flag to identify if this underwriting check passed |
budgetAffordabilityCheck | Boolean | True/False flag to identify if this underwriting check passed |
firstDraftDateCheck | Boolean | True/False flag to identify if this underwriting check passed |
feeValidationCheck | Boolean | True/False flag to identify if this underwriting check passed |
secondDraftDateCheck | Boolean | True/False flag to identify if this underwriting check passed |
companyIsAuthorizedCheck | Boolean | True/False flag to identify if this underwriting check passed |
enrollmentPlanCheck | Boolean | True/False flag to identify if this underwriting check passed |
termExtensionExceptionCheck | Boolean | True/False flag to identify if this underwriting check passed |
caStateFileCheck | Boolean | True/False flag to identify if the co-applicant has ssn when state is CA and application type is JOINT |
UwResultDebt
Debt information with underwriting check results
| Field | Type | Description |
|---|---|---|
id | ID! | Unique identifier for the debt |
applicantId | String | Primary applicant ID |
coApplicantId | String | Secondary applicant ID, if applicable (For JOINT application only) |
externalDebtId | ID | This is replaced by accountNumber @deprecated Use accountNumber instead |
accountNumber | String | Debt account number |
externalCrmId | String | Optional field to identify the debt in the requesting CRM |
isSelected | Boolean! | True/False flag to identify if this debt is selected for program enrollment |
coApplicantIsSelected | Boolean | Only applicable to JOINT debt. True/False flag to identify if this debt is selected by the co-applicant |
eligibilityStatus | EligibilityStatus! | Identify the eligibility status |
isOverridden | Boolean | True/False flag to identify if the eligiblity status is being overriden |
exceptions | [String] | List of reasons the eligibility status is being overridden |
history | [UwResultDebtHistory] | History of all the updates made to this debt |
source | String! | Source of the debt entry can be MANUAL or CREDIT_REPORT |
creditorName | String | creditor name |
parentCreditorName | String | Parent creditor name |
parentCreditorId | String | Parent creditor ID |
originalCreditorName | String | Original creditor name |
creditorId | ID | Creditor ID from Forth |
creditorType | String | creditor type |
ecoaCode | String | ECOA Code |
accountType | String | Account type |
portfolioType | String | Portfolio type |
debtType | String | Debt type |
openDate | String | Date debt was opened |
lastPaymentDate | String | Date of the last payment |
hasLastPayment | Boolean | True/False flag to identify if last payment was amde |
narrativeCodes | [String] | Narrative codes that might include bankcruptcy codes |
bankruptcyDateFiled | String | Bankruptcy Record Date. This come from the credit report and does not need to be updated. |
currentBalance | Float | Current debt balance |
originalBalance | Float | Original debt balance |
nawSignedDate | Date | Only applicable to JOINT debt. The date when the non-applicant waiver has been signed. |
nawUrl | String | Only applicable to JOINT debt. The url to the non-applicant waiver document’s file |
hasProofOfLiability | Boolean | Has provided proof of liability |
forthDebtTypeId | String | Forth Debt Type ID |
remarks | [String] | Remarks |
isCollection | Boolean | Flag to show if the debt is in collection |
approvedAccountTypeCheck | Boolean | True/False flag to identify if this underwriting check passed |
unacceptableCreditorCheck | Boolean | True/False flag to identify if this underwriting check passed |
creditUnionAndStateCheck | Boolean | True/False flag to identify if this underwriting check passed |
debtOwnershipCheck | Boolean | True/False flag to identify if this underwriting check passed |
minimumDebtValueCheck | Boolean | True/False flag to identify if this underwriting check passed |
duplicateDebtsCheck | Boolean | True/False flag to identify if this debt is selected and a duplicate debt |
multipleCreditUnionCheck | Boolean | True/False flag to identify if this underwriting check passed |
paymentHistoryCheck | Boolean | True/False flag to identify if this underwriting check passed |
unsecuredDebtCheck | Boolean | True/False flag to identify if this underwriting check passed |
bankruptcyCheck | Boolean | True/False flag to identify if this underwriting check passed |
employerIsCreditorCheck | Boolean | True/False flag to identify if the creditor is the same as employer |
standaloneDebtsCheck | Boolean | True/False flag to identify if the creditor is a standalone debt |
coApplicantCheck | Boolean | Only applicable to JOINT debt. True/False flag to identify if this underwriting check passed |
currAndOgBalanceCheck | Boolean | Current and original balance check |
proofOfLiabilityCheck | Boolean | Proof of liability |
delinquency | String | account rating /delinquency value |
monthlyPayment | Float | Monthly payment |
notes | [String] | Debt Notes |
UwResultDebtHistory
Historical record of changes made to a debt
| Field | Type | Description |
|---|---|---|
isSelected | Boolean | Whether the debt was selected for enrollment at this revision |
coApplicantIsSelected | Boolean | Whether the co-applicant had selected this debt at this revision |
exceptions | [String] | Exceptions applied to the debt at this revision |
source | String | Source of the debt (MANUAL or CREDIT_REPORT) |
creditorName | String | Creditor name at this revision |
originalCreditorName | String | Original creditor name at this revision |
creditorType | String | Creditor type at this revision |
ecoaCode | String | ECOA code at this revision |
accountType | String | Account type at this revision |
portfolioType | String | Portfolio type at this revision |
debtType | String | Debt type at this revision |
openDate | String | Open date at this revision |
lastPaymentDate | String | Last payment date at this revision |
hasLastPayment | Boolean | Whether last payment was made at this revision |
currentBalance | Float | Current balance at this revision |
originalBalance | Float | Original balance at this revision |
narrativeCodes | [String] | Narrative codes at this revision |
bankruptcyDateFiled | String | Bankruptcy date filed at this revision |
nawSignedDate | Date | Non-applicant waiver signed date at this revision |
nawUrl | String | Non-applicant waiver URL at this revision |
hasProofOfLiability | Boolean | Whether proof of liability was provided at this revision |
isCollection | Boolean | Whether the debt was in collection at this revision |
remarks | [String] | Remarks at this revision |
monthlyPayment | Float | Monthly payment at this revision |
updatedBy | ID | User ID who made this update |
fromRevision | Int | The revision number this history entry was created from |
UwResultHistory
Historical record of changes made to the underwriting result
| Field | Type | Description |
|---|---|---|
applicantInfo | ApplicantInfo | Applicant information at this revision |
leadId | String | Lead ID at this revision |
updatedBy | ID | User ID who made this update |
fromRevision | Int | The revision number this history entry was created from |
ApplicantInfo
| Field | Type | Description |
|---|---|---|
publicRecords | [PublicRecord] | Public records from the credit report. |
applicantContactInfo | ApplicantContactInfo | Applicant’s contact information |
coApplicantContactInfo | ApplicantContactInfo | Co-applicant’s contact information |
agentAssigned | String | Agent userId set by the integrating CRM to identify the agent in its system. |
plan | Plan | Enrollment plan. |
budget | Budget | Budget. |
additionalInfo | AdditionalInfo | Additional info |
PublicRecord
Public Record
| Field | Type | Description |
|---|---|---|
bankruptcyCode | String! | Bankcrupty code |
bankruptcyDateFiled | String | Bankcrupty date filed |
bankruptcyDispositionType | String | Bankcrupty disposition type |
ApplicantContactInfo
| Field | Type | Description |
|---|---|---|
employerName | String | Applicant employer name |
isMarriedToCoApplicant | Boolean | True/False flag to identify if the applicant is married to the co-applicant |
homeAddress | String | Applicant home address. |
applicantState | String! | Applicant state. |
ssn | String | Applicant SSN. |
dob | String | Applicant date of birth. |
phone | String | Applicant phone number. |
cellPhone | String | Applicant cell phone number. |
firstName | String | Applicant first name. |
lastName | String | Applicant last name. |
jobTitle | String | Applicant job title. |
email | String | Applicant email. |
hardship | String | Applicant hardship reason. |
filedBankruptcy | String | Has the applicant filed bankruptcy. |
routingNumber | String | Applicant routing number. |
bankName | String | Applicant bank name. |
bankAccountNumber | String | Applicant bank account number. |
bankAccountHolderName | String | Applicant bank account holder name. |
bankAccountType | String | Applicant bank account type. |
eligibilityReqMilitary | String | Applicant eligibility requirement for military. |
eligibilityReqCreditCounselling | String | Applicant eligibility requirement for credit counselling. |
eligibilityReqBankruptcy | String | Applicant eligibility requirement for bankruptcy. |
eligibilityReqFederalGovDebt | String | Applicant eligibility requirement for federal government debt. |
eligibilityReqSecuredDebt | String | Applicant eligibility requirement for secured debt. |
belongsToCompanyId | String | The Forth Pay company ID that the applicant belongs to. |
ApplicantContactInfo
| Field | Type | Description |
|---|---|---|
employerName | String | Applicant employer name |
isMarriedToCoApplicant | Boolean | True/False flag to identify if the applicant is married to the co-applicant |
homeAddress | String | Applicant home address. |
applicantState | String! | Applicant state. |
ssn | String | Applicant SSN. |
dob | String | Applicant date of birth. |
phone | String | Applicant phone number. |
cellPhone | String | Applicant cell phone number. |
firstName | String | Applicant first name. |
lastName | String | Applicant last name. |
jobTitle | String | Applicant job title. |
email | String | Applicant email. |
hardship | String | Applicant hardship reason. |
filedBankruptcy | String | Has the applicant filed bankruptcy. |
routingNumber | String | Applicant routing number. |
bankName | String | Applicant bank name. |
bankAccountNumber | String | Applicant bank account number. |
bankAccountHolderName | String | Applicant bank account holder name. |
bankAccountType | String | Applicant bank account type. |
eligibilityReqMilitary | String | Applicant eligibility requirement for military. |
eligibilityReqCreditCounselling | String | Applicant eligibility requirement for credit counselling. |
eligibilityReqBankruptcy | String | Applicant eligibility requirement for bankruptcy. |
eligibilityReqFederalGovDebt | String | Applicant eligibility requirement for federal government debt. |
eligibilityReqSecuredDebt | String | Applicant eligibility requirement for secured debt. |
belongsToCompanyId | String | The Forth Pay company ID that the applicant belongs to. |
Plan
| Field | Type | Description |
|---|---|---|
frequency | String | Frequency of the enrollment plan. Ex: Monthly, Bi-Weekly |
firstPaymentAmount | Float | First payment amount. Ex: 100, 123.45, |
secondPaymentAmount | Float | Second payment amount. Ex: 100, 123.45, |
firstPaymentDate | String | First payment date. |
secondPaymentDate | String | Second payment date. |
firstDraftException | String | First draft exception. |
programTerm | Int | Program term. |
feePercentage | Float | Fee percentage. |
epfReduction | String | EPF reduction. Ex: YES, NO |
planId | String | Enrollment plan ID. |
Budget
| Field | Type | Description |
|---|---|---|
totalMonthlyIncome | Float | Total monthly income. |
totalMonthlyExpense | Float | Total monthly expenses. |
AdditionalInfo
| Field | Type | Description |
|---|---|---|
debtAmountException | String | Debt amount exception |
includeUnacceptableCreditor | Boolean | Include unacceptable creditor |
termExtensionException | Float | Term extension exception value |
standaloneDebtsException | Boolean | Standalone debts exception |
eomFirstDraftDateException | Boolean | EOM first draft date exception |
JointUwResult
Joint underwriting result containing shared debts between applicants
| Field | Type | Description |
|---|---|---|
id | ID! | Unique identifier for the joint underwriting result |
primaryApplicantUwResult | ApplicantUwResultInfo | Primary applicant uw result id |
coApplicantUwResult | ApplicantUwResultInfo | Co-applicant uw result id |
uwOrgId | String | The organization underwriting rules used for this application. For example alv or glg |
reqOrgId | String | Requesting organization ID |
revision | Int! | Document revision number. Each time the document is edited the revision number is incremented |
leadId | String | Sigma lead ID |
creditReportId | String | Primary applicant credit report ID |
coCreditReportId | String | Secondary applicant credit report ID, if applicable (For JOINT application only) |
applicantInfo | JointUwApplicantInfo! | Applicant information needed for the root filters |
debts | [UwResultDebt]! | List of debts. Each debt will have additional underwriting pass/fail information |
creditReportSource | String! | Source can be SPINWHEEL, CRS_TRANSUNION, or CRS_EQUIFAX |
rootHistory | [JointUwResultHistory] | History of edits applied to the top level fields of this application |
createdAt | Date | Date and time this joint underwriting result was created |
ApplicantUwResultInfo
Reference information for an applicant’s underwriting result
| Field | Type | Description |
|---|---|---|
id | ID | Underwriting result ID |
revision | Int | Current revision number of the underwriting result |
ApplicantUwResultInfo
Reference information for an applicant’s underwriting result
| Field | Type | Description |
|---|---|---|
id | ID | Underwriting result ID |
revision | Int | Current revision number of the underwriting result |
JointUwApplicantInfo
| Field | Type | Description |
|---|---|---|
applicantContactInfo | ApplicantContactInfo | Applicant’s contact information |
coApplicantContactInfo | ApplicantContactInfo | Co-applicant’s contact information |
ApplicantContactInfo
| Field | Type | Description |
|---|---|---|
employerName | String | Applicant employer name |
isMarriedToCoApplicant | Boolean | True/False flag to identify if the applicant is married to the co-applicant |
homeAddress | String | Applicant home address. |
applicantState | String! | Applicant state. |
ssn | String | Applicant SSN. |
dob | String | Applicant date of birth. |
phone | String | Applicant phone number. |
cellPhone | String | Applicant cell phone number. |
firstName | String | Applicant first name. |
lastName | String | Applicant last name. |
jobTitle | String | Applicant job title. |
email | String | Applicant email. |
hardship | String | Applicant hardship reason. |
filedBankruptcy | String | Has the applicant filed bankruptcy. |
routingNumber | String | Applicant routing number. |
bankName | String | Applicant bank name. |
bankAccountNumber | String | Applicant bank account number. |
bankAccountHolderName | String | Applicant bank account holder name. |
bankAccountType | String | Applicant bank account type. |
eligibilityReqMilitary | String | Applicant eligibility requirement for military. |
eligibilityReqCreditCounselling | String | Applicant eligibility requirement for credit counselling. |
eligibilityReqBankruptcy | String | Applicant eligibility requirement for bankruptcy. |
eligibilityReqFederalGovDebt | String | Applicant eligibility requirement for federal government debt. |
eligibilityReqSecuredDebt | String | Applicant eligibility requirement for secured debt. |
belongsToCompanyId | String | The Forth Pay company ID that the applicant belongs to. |
ApplicantContactInfo
| Field | Type | Description |
|---|---|---|
employerName | String | Applicant employer name |
isMarriedToCoApplicant | Boolean | True/False flag to identify if the applicant is married to the co-applicant |
homeAddress | String | Applicant home address. |
applicantState | String! | Applicant state. |
ssn | String | Applicant SSN. |
dob | String | Applicant date of birth. |
phone | String | Applicant phone number. |
cellPhone | String | Applicant cell phone number. |
firstName | String | Applicant first name. |
lastName | String | Applicant last name. |
jobTitle | String | Applicant job title. |
email | String | Applicant email. |
hardship | String | Applicant hardship reason. |
filedBankruptcy | String | Has the applicant filed bankruptcy. |
routingNumber | String | Applicant routing number. |
bankName | String | Applicant bank name. |
bankAccountNumber | String | Applicant bank account number. |
bankAccountHolderName | String | Applicant bank account holder name. |
bankAccountType | String | Applicant bank account type. |
eligibilityReqMilitary | String | Applicant eligibility requirement for military. |
eligibilityReqCreditCounselling | String | Applicant eligibility requirement for credit counselling. |
eligibilityReqBankruptcy | String | Applicant eligibility requirement for bankruptcy. |
eligibilityReqFederalGovDebt | String | Applicant eligibility requirement for federal government debt. |
eligibilityReqSecuredDebt | String | Applicant eligibility requirement for secured debt. |
belongsToCompanyId | String | The Forth Pay company ID that the applicant belongs to. |
UwResultDebt
Debt information with underwriting check results
| Field | Type | Description |
|---|---|---|
id | ID! | Unique identifier for the debt |
applicantId | String | Primary applicant ID |
coApplicantId | String | Secondary applicant ID, if applicable (For JOINT application only) |
externalDebtId | ID | This is replaced by accountNumber @deprecated Use accountNumber instead |
accountNumber | String | Debt account number |
externalCrmId | String | Optional field to identify the debt in the requesting CRM |
isSelected | Boolean! | True/False flag to identify if this debt is selected for program enrollment |
coApplicantIsSelected | Boolean | Only applicable to JOINT debt. True/False flag to identify if this debt is selected by the co-applicant |
eligibilityStatus | EligibilityStatus! | Identify the eligibility status |
isOverridden | Boolean | True/False flag to identify if the eligiblity status is being overriden |
exceptions | [String] | List of reasons the eligibility status is being overridden |
history | [UwResultDebtHistory] | History of all the updates made to this debt |
source | String! | Source of the debt entry can be MANUAL or CREDIT_REPORT |
creditorName | String | creditor name |
parentCreditorName | String | Parent creditor name |
parentCreditorId | String | Parent creditor ID |
originalCreditorName | String | Original creditor name |
creditorId | ID | Creditor ID from Forth |
creditorType | String | creditor type |
ecoaCode | String | ECOA Code |
accountType | String | Account type |
portfolioType | String | Portfolio type |
debtType | String | Debt type |
openDate | String | Date debt was opened |
lastPaymentDate | String | Date of the last payment |
hasLastPayment | Boolean | True/False flag to identify if last payment was amde |
narrativeCodes | [String] | Narrative codes that might include bankcruptcy codes |
bankruptcyDateFiled | String | Bankruptcy Record Date. This come from the credit report and does not need to be updated. |
currentBalance | Float | Current debt balance |
originalBalance | Float | Original debt balance |
nawSignedDate | Date | Only applicable to JOINT debt. The date when the non-applicant waiver has been signed. |
nawUrl | String | Only applicable to JOINT debt. The url to the non-applicant waiver document’s file |
hasProofOfLiability | Boolean | Has provided proof of liability |
forthDebtTypeId | String | Forth Debt Type ID |
remarks | [String] | Remarks |
isCollection | Boolean | Flag to show if the debt is in collection |
approvedAccountTypeCheck | Boolean | True/False flag to identify if this underwriting check passed |
unacceptableCreditorCheck | Boolean | True/False flag to identify if this underwriting check passed |
creditUnionAndStateCheck | Boolean | True/False flag to identify if this underwriting check passed |
debtOwnershipCheck | Boolean | True/False flag to identify if this underwriting check passed |
minimumDebtValueCheck | Boolean | True/False flag to identify if this underwriting check passed |
duplicateDebtsCheck | Boolean | True/False flag to identify if this debt is selected and a duplicate debt |
multipleCreditUnionCheck | Boolean | True/False flag to identify if this underwriting check passed |
paymentHistoryCheck | Boolean | True/False flag to identify if this underwriting check passed |
unsecuredDebtCheck | Boolean | True/False flag to identify if this underwriting check passed |
bankruptcyCheck | Boolean | True/False flag to identify if this underwriting check passed |
employerIsCreditorCheck | Boolean | True/False flag to identify if the creditor is the same as employer |
standaloneDebtsCheck | Boolean | True/False flag to identify if the creditor is a standalone debt |
coApplicantCheck | Boolean | Only applicable to JOINT debt. True/False flag to identify if this underwriting check passed |
currAndOgBalanceCheck | Boolean | Current and original balance check |
proofOfLiabilityCheck | Boolean | Proof of liability |
delinquency | String | account rating /delinquency value |
monthlyPayment | Float | Monthly payment |
notes | [String] | Debt Notes |
UwResultDebtHistory
Historical record of changes made to a debt
| Field | Type | Description |
|---|---|---|
isSelected | Boolean | Whether the debt was selected for enrollment at this revision |
coApplicantIsSelected | Boolean | Whether the co-applicant had selected this debt at this revision |
exceptions | [String] | Exceptions applied to the debt at this revision |
source | String | Source of the debt (MANUAL or CREDIT_REPORT) |
creditorName | String | Creditor name at this revision |
originalCreditorName | String | Original creditor name at this revision |
creditorType | String | Creditor type at this revision |
ecoaCode | String | ECOA code at this revision |
accountType | String | Account type at this revision |
portfolioType | String | Portfolio type at this revision |
debtType | String | Debt type at this revision |
openDate | String | Open date at this revision |
lastPaymentDate | String | Last payment date at this revision |
hasLastPayment | Boolean | Whether last payment was made at this revision |
currentBalance | Float | Current balance at this revision |
originalBalance | Float | Original balance at this revision |
narrativeCodes | [String] | Narrative codes at this revision |
bankruptcyDateFiled | String | Bankruptcy date filed at this revision |
nawSignedDate | Date | Non-applicant waiver signed date at this revision |
nawUrl | String | Non-applicant waiver URL at this revision |
hasProofOfLiability | Boolean | Whether proof of liability was provided at this revision |
isCollection | Boolean | Whether the debt was in collection at this revision |
remarks | [String] | Remarks at this revision |
monthlyPayment | Float | Monthly payment at this revision |
updatedBy | ID | User ID who made this update |
fromRevision | Int | The revision number this history entry was created from |
JointUwResultHistory
Historical record of changes made to a joint underwriting result
| Field | Type | Description |
|---|---|---|
applicantInfo | JointUwApplicantInfo | Applicant information at this revision |
leadId | String | Lead ID at this revision |
updatedBy | ID | User ID who made this update |
fromRevision | Int | The revision number this history entry was created from |
JointUwApplicantInfo
| Field | Type | Description |
|---|---|---|
applicantContactInfo | ApplicantContactInfo | Applicant’s contact information |
coApplicantContactInfo | ApplicantContactInfo | Co-applicant’s contact information |
ApplicantContactInfo
| Field | Type | Description |
|---|---|---|
employerName | String | Applicant employer name |
isMarriedToCoApplicant | Boolean | True/False flag to identify if the applicant is married to the co-applicant |
homeAddress | String | Applicant home address. |
applicantState | String! | Applicant state. |
ssn | String | Applicant SSN. |
dob | String | Applicant date of birth. |
phone | String | Applicant phone number. |
cellPhone | String | Applicant cell phone number. |
firstName | String | Applicant first name. |
lastName | String | Applicant last name. |
jobTitle | String | Applicant job title. |
email | String | Applicant email. |
hardship | String | Applicant hardship reason. |
filedBankruptcy | String | Has the applicant filed bankruptcy. |
routingNumber | String | Applicant routing number. |
bankName | String | Applicant bank name. |
bankAccountNumber | String | Applicant bank account number. |
bankAccountHolderName | String | Applicant bank account holder name. |
bankAccountType | String | Applicant bank account type. |
eligibilityReqMilitary | String | Applicant eligibility requirement for military. |
eligibilityReqCreditCounselling | String | Applicant eligibility requirement for credit counselling. |
eligibilityReqBankruptcy | String | Applicant eligibility requirement for bankruptcy. |
eligibilityReqFederalGovDebt | String | Applicant eligibility requirement for federal government debt. |
eligibilityReqSecuredDebt | String | Applicant eligibility requirement for secured debt. |
belongsToCompanyId | String | The Forth Pay company ID that the applicant belongs to. |
ApplicantContactInfo
| Field | Type | Description |
|---|---|---|
employerName | String | Applicant employer name |
isMarriedToCoApplicant | Boolean | True/False flag to identify if the applicant is married to the co-applicant |
homeAddress | String | Applicant home address. |
applicantState | String! | Applicant state. |
ssn | String | Applicant SSN. |
dob | String | Applicant date of birth. |
phone | String | Applicant phone number. |
cellPhone | String | Applicant cell phone number. |
firstName | String | Applicant first name. |
lastName | String | Applicant last name. |
jobTitle | String | Applicant job title. |
email | String | Applicant email. |
hardship | String | Applicant hardship reason. |
filedBankruptcy | String | Has the applicant filed bankruptcy. |
routingNumber | String | Applicant routing number. |
bankName | String | Applicant bank name. |
bankAccountNumber | String | Applicant bank account number. |
bankAccountHolderName | String | Applicant bank account holder name. |
bankAccountType | String | Applicant bank account type. |
eligibilityReqMilitary | String | Applicant eligibility requirement for military. |
eligibilityReqCreditCounselling | String | Applicant eligibility requirement for credit counselling. |
eligibilityReqBankruptcy | String | Applicant eligibility requirement for bankruptcy. |
eligibilityReqFederalGovDebt | String | Applicant eligibility requirement for federal government debt. |
eligibilityReqSecuredDebt | String | Applicant eligibility requirement for secured debt. |
belongsToCompanyId | String | The Forth Pay company ID that the applicant belongs to. |
TradelineMetadata
| Field | Type | Description |
|---|---|---|
enrolledUpstartDebtAccountNumbers | [String] | List of externalDebtsId’s that belong to selected Upstart debts, if empty then none |
enrolledCapitalOneDebtAccountNumbers | [String] | List of externalDebtsId’s that belong to selected Catipal One debts, if empty then none |
enrolledDiscoverDebtAccountNumbers | [String] | List of externalDebtsId’s that belong to selected Discover debts, if empty then none |
EligibilityResponseError
Includes a list of reasons why the underwriting did not pass
Possible reason are Ineligible, Condition, and Update Needed.
If an error does not include a debtId then it is an application level error.
| Field | Type | Description |
|---|---|---|
debtId | String | The debtId of the debt that caused the error. |
filterName | String | The name of the underwriting check that caused the error. |
message | [String] | The list of reasons why the underwriting check did not pass. |
Additional Enums
EligibilityStatus
Eligibility status for a debt
| Value | Description |
|---|---|
ELIGIBLE | Debt meets all underwriting criteria and can be enrolled |
INELIGIBLE | Debt does not meet underwriting criteria and cannot be enrolled |
CONDITIONAL | Debt requires additional conditions to be met before enrollment |
UPDATE_NEEDED | Debt requires additional information to determine eligibility |
UNABLE_TO_PROCESS | Unable to process the debt eligibility check |
Error Types
The response may include the following error types:
EligibilityResponseError
Includes a list of reasons why the underwriting did not pass
Possible reason are Ineligible, Condition, and Update Needed.
If an error does not include a debtId then it is an application level error.
| Field | Type | Description |
|---|---|---|
debtId | String | The debtId of the debt that caused the error. |
filterName | String | The name of the underwriting check that caused the error. |
message | [String] | The list of reasons why the underwriting check did not pass. |
Common Errors
| Error Code | Description | Resolution |
|---|---|---|
VALIDATION_ERROR | Input validation failed | Check required fields and formats |
UNAUTHORIZED | Invalid or expired token | Re-authenticate and retry |
NOT_FOUND | Resource not found | Verify the ID or reference |
Common Error Scenarios and Troubleshooting
1. Validation Errors
Error: INVALID_SSN, INVALID_DOB, INVALID_PHONE, INVALID_EMAIL, INVALID_CELL_PHONE
Cause: Input data doesn’t meet format requirements
Solution:
- SSN: Exactly 9 digits (e.g.,
"123456789") - DOB: YYYY-MM-DD format (e.g.,
"1985-06-15") - Phone/CellPhone: Valid US phone - 10 digits (e.g.,
"5551234567") - Email: Valid email format
2. Document Not Found (404)
Error: 404 Not Found
Cause: - UW Result ID or the revision doesn’t exist
- Using credentials that don’t own the uw result
Solution:
- Verify UW Result ID and the revision are correct
- Ensure you’re using credentials that own the uw result
3. Missing Co-Applicant State for JOINT
Error: CO_APPLICANT_INVALID_STATE
Cause: JOINT application missing applicantState in coApplicantContactInfo
Solution:
Always include applicantState in both applicantContactInfo and coApplicantContactInfo for JOINT applications
4. Accidental Manual Debt Removal
Error: Manual debts disappeared after update
Cause: Manual debts were not included in the update payload
Solution:
Always include manual debts you want to keep.
Prevention Pattern:
async function safeUpdate(documentId, updates) { // Fetch current debts first const current = await getUwResult(documentId);
// Get existing manual debts to retain const manualDebtsToKeep = current.applicantUwResult.debts .filter(d => d.source === 'MANUAL') .filter(d => !updates.debtsToRemove?.includes(d.id)) .map(d => ({ id: d.id, isSelected: d.isSelected }));
// Combine with your updates const allDebts = [ ...manualDebtsToKeep, ...updates.creditReportDebtsToModify, ...updates.newManualDebts ];
return await updateApplicantEligibility({ ...updates, applicantUwResult: { debts: allDebts } });}5. Zero Balance Debts Filtered
Error: New debts with currentBalance: 0 are automatically excluded
Cause: System filters out zero-balance debts automatically
Solution:
Ensure new manual debts have a positive balance
6. Underwriting Check Failures
Error: Various filter failures
Cause: Debts or application don’t meet underwriting requirements
Solution:
Understanding Error Response:
debtId: null→ Application-level errordebtId: "xxx"→ Debt-specific errorfilterName→ Which rule failedmessage→ Why it failed
Common Failures:
7. Incorrect Debt Placement in JOINT Applications
Error: Debts showing incorrect eligibility status or not being processed correctly
Cause: Debts placed in the wrong section (applicantUwResult, coApplicantUwResult, or jointUwResult) for JOINT application type
Solution:
Use the checkApplicantEligibility response as a reference to determine which section each debt belongs to:
applicantUwResult.debts→ Debts that belong to the primary applicant onlycoApplicantUwResult.debts→ Debts that belong to the co-applicant onlyjointUwResult.debts→ Debts that are shared between both applicants
Important: When calling updateApplicantEligibility with applicationType: JOINT, ensure each debt is placed in the same section as it appears in the checkApplicantEligibility response. Placing a debt in the wrong section may lead to:
- Incorrect eligibility status calculations
- Unexpected underwriting filter failures
- Incorrect total debt calculations
When to intentionally move a debt to a different section:
- Only move a debt to a different section if it is intentional, such as when the ECOA code has been updated
- Example: A debt originally in
applicantUwResultmay need to be moved tojointUwResultif the ECOA code changed to indicate joint ownership
Best Practice: Always reference the original checkApplicantEligibility response to verify debt placement before submitting updates.
Best Practices
1. Understand the Debt Removal Rule
CREDIT_REPORT debts: Not included = No change (safe)MANUAL debts: Not included = REMOVED (be careful!)2. Always Fetch Before Updating
If you have manual debts and want to keep them:
// Fetch current state firstconst current = await getUwResult(documentId);const manualDebts = current.applicantUwResult.debts .filter(d => d.source === 'MANUAL');// Include these in your update