FLEXBridge Loan Service API
This document provides comprehensive technical documentation for the FlexBridge Loan Processing Service API, a RESTful API designed for creating and funding new loans within the Flex system (www.flexcutech.com). This API is essential for financial institutions needing to programmatically manage a variety of loan products.
1. Introduction to FlexBridge Loan Processing Service API
The Loan Processing Service API is the portion of the FLEXBridge system that contains processes for creating and funding new loans. It covers all available objects and attributes needed for funding diverse loan products.
- Currently Not Supported: Refinancing or loan add-ons.
- Available FLEX Releases: 8.05 and up
2. General API Information
- RESTful API: Follows RESTful principles for communication.
- Authentication: Requires built-in authentication via HTTPS request headers. Refer to the FLEX Core System documentation for details on adding authentication to HTTPS request headers.
3. Loan Funding Options
The Loan Processing Service API offers the following loan funding options:
- Retrieval of the Next Available Loan Suffix: Used before loan funding to query for the next available Loan Type Suffix number for a Credit Union member.
- Create Loan: Writes loan data into the Credit Union’s Loan Processing database as a pending (or in-process) loan. This option requires the Credit Union to finish funding within the FLEX system. It allows for loan entry process, data collection, or loan form printing in the FLEX system before a loan is fully funded to a member’s account.
- Post Loan: Writes a loan directly into the Credit Union’s database, fully funding the loan into the FLEX database.
4. API Endpoints and Methods
4.1. Retrieve the Next Available Loan Suffix Number
Retrieves the next available suffix for loan funding or documentation of a new loan.
- GET Method:
- URL: https://{URL_ADDRESS}/api/loans/suffix/{ACCOUNT_NUMBER}/{LOAN_TYPE}
- Parameters:
- {ACCOUNT_NUMBER} (Required, Numeric): Individual Account Number to query for the next suffix. Max 9 chars.
- {LOAN_TYPE} (Required, String): Credit Union defined Loan Type value. Max 2 chars (alphanumeric).
- Response Attribute (nextAvailableSuffix):
{
“nextAvailableSuffix”: 991 // Indicates the number for the next available suffix.
}
4.2. Loan Request Options – Create or Post Loan
- POST Method:
- Create Loan Endpoint: https://{URL_ADDRESS}/api/loans/createloan
- Purpose: Adds a loan to the FLEX Loan Processing section as pending.
- Post Loan Endpoint: https://{URL_ADDRESS}/api/loans/postloan
- Purpose: Funds a loan directly to a member’s account and performs specified disbursement options.
- Note: Both endpoints use the same JSON objects and attributes for funding a loan.
- Required JSON Body Objects (for all loan exports):
- loanInformation (Required, Object): Contains essential loan information.
- Optional/Conditional JSON Body Objects:
- checkDisbursementList (List): For check disbursements.
- glDisbursementList (List): For General Ledger disbursements.
- shareDisbursementList (List): For Share disbursements.
- loanDisbursementList (List): For loan payoffs to other loan suffixes.
- comakerInformationList (List): For Co-Borrower records.
- shareCollateralList (List): For Share Collateral records.
- realEstateCollateralList (List): For Real Estate Collateral records.
- vehicleCollateralList (List): For Vehicle Collateral records.
- miscellaneousCollateralList (List): For Miscellaneous Collateral records.
- automaticTransfersList (List): For Automatic Transfer distribution records (required if paymentMethod is T).
- achDistributionList (List): For ACH distribution records (required if paymentMethod is A).
- payrollInformationList (List): For Payroll distribution records (required if paymentMethod is P).
- variableRateExtension (Object): For variable rate loans (required if variableRateGroup is not F).
- creditCardLoan (Object): For Credit Card loans (required if loanGroup is V).
- creditCardCategoryList (List): For Credit Card loan categories (required if loanGroup is V).
- helocInformation (Object): For HELOC loans (required if loanGroup is H).
- creditScoreList (List): For creating credit score and grade entries.
- pointsPaid (Object): For adding mortgage points paid (used with R or M loan groups).
- loanTypeConversion (Object): For setting up future loan type conversions.
- amortizedFees (Object): For setting up amortized loan fees.
- temporaryModificationList (List): For creating temporary loan modifications.
- userDefinedFields (List): For populating Credit Union defined fields.
- Create Loan Endpoint: https://{URL_ADDRESS}/api/loans/createloan
- Response Attributes (for createloan or postloan):
{
“success”: true, // Indicates if the request was successful.
“postLoan Response”: {
“loanAccountNumber”: 30138, // Member account number the loan was funded to.
“loanSuffix”: 601, // Loan suffix value created.
“success”: true // Indicates loan post response was successful.
}
}
5. Object References (Detailed Attributes)
5.1. loanInformation Object
Required for all JSON exports and contains most of the essential loan information.
- Attributes: loanGroup, loanType, loanAccountNumber, loanSuffix, disbursementDate, firstPaymentDate, estimatedMaturityDate, dueDate, dateInterestCalculatedThrough, loanDescription, originalBalance, scheduledPaymentAmount, additionalPaymentAmount, interestRate, interestExemptAmount, openOrCloseEndedCode, paymentMethod, paymentFrequency, interestRebateCode, chargeLateFee, lateChargeCalculationMethod, lateChargeFixedAmount, activeMilitary, reporting1098, noteNumber, creditLimit, freezeCreditLimit, drawExpirationDate, loanSource, cosignerCode, suffixIncludedInBankruptcy, securityCode, purposeCode, loanDisbursementTeller, loanDisbursementDate, loanAmountToDisburse, branchCode, workStationId, numberOfPayments, paymentCoupons, delinquencyNoticeCode, creditGrade, creditScore, variableRateGroup, loanOfficerCode, collectionOfficer, escrowSuffix, escrowAmount, censusTract, balloonPaymentRolloverTerm, balloonPaymentDate, estimatedBalloonPaymentAmount, skipPaymentBeginDate, skipPaymentEndDate, skipPaymentBeginDay, skipPaymentBeginMonth, skipPaymentEndDay, skipPaymentEndMonth, insuranceEligible, insuranceSellingTeller, insuranceSourceSuffix, insuranceCertificateNumber, disabilityInsuranceType, disabilityInsurancePlanCode, creditDisabilityElectionDate, creditDisabilityEmployeeCode, creditDisabilityBalloonCoverageFlag, lifeInsuranceType, lifeInsurancePlanCode, creditLifeElectionDate, creditLifeEmployeeCode, creditLifeBalloonCoverageFlag, debtCancellationType, debtCancellationPlanCode, debtCancellationElectionDate, debtCancellationEmployeeCode, debtCancellationBalloonCoverageFlag, jointOwnerBirthdate, jointInsuredLastName, jointInsuredFirstName, jointInsuredMiddleName, applicationTeller, applicationDate, approvalTeller, approvalDate, reviewTeller, reviewDate, dealerKickBackRate, dealerKey, pool, accountCrossReference, finanacedPrePaidFinanceCharge, cashPrePaidFinanceCharge, financeFilingFee, cashFilingFee, prepaidInterest, regZFee, regZRate, currentDebtToIncomeRatio, newDebtToIncomeRatio, totalCredit, unsecuredCredit, availableCredit, frozenFlag, thirdPartyAppNumber.
5.2. shareCollateralList Object
Used to create a secured pledge amount against a member’s share suffix for loan liability.
- Attributes: shareAccountNumber, shareSuffix, originalPledgeAmount, currentPledgeAmount, dateCurrentPledgeCalculated, originalDateSecured, dateScheduledToBeReleased, dateActuallyReleased, description, percentage, loanBalanceDeduction, maximumPledgeAmount.
5.3. vehicleCollateralList Object
Used with vehicle loan requests.
- Attributes: originalValue, bookValue, currentValue, dateCurrentValueCalculated, dateOriginallySecured, dateScheduledToBeReleased, dateActuallyReleased, description, vehicleDescription, vehicleModel, vehicleYear, vehicleIdNumber, vehicleType, vehicleMake, licensePlateNumber, licensePlateState, color, odometer, vehicleCondition, bodyStyle, tradeInValue, retailValue, loanValue, valueDate, lienHolderPosition, deedHeld, doesCreditUnionHoldTitle, dateTitleReleased, doesCreditUnionHoldUcc, uccExpirationDate, registeredOwnerName1, registeredOwnerName2, firstInsuranceInformation, secondInsuranceInformation, gapCoverage, vsiCoverage, serviceContractCoverage, serviceContractPhone, titleInformation, titleHeldByName, titleHeldByAddressLine1, titleHeldByAddressLine2, titleHeldByCity, titleHeldByState, titleHeldByZip, titleHeldByZip4, titleHeldByOfficePhone, titleHeldByCellPhone, titleHeldByEmailAddress, repossessionCompanyName, repossessionOfficePhone, repossessionRequestDate, repossessionActualDate.
5.4. realEstateCollateralList Object
Used with loan requests for a Mortgage or Real Estate loan.
- Attributes: originalValue, currentValue, dateCurrentValueCalculated, dateOriginallySecured, dateScheduledToBeReleased, dateActuallyReleased, description, address1, address2, parcelNumber, legalDescription, censusTracker, deedHeld, lienHolderPosition, doesCreditUnionHoldTitle, titleInformation, registeredOwnerName1, registeredOwnerName2, firstInsuranceInformation, secondInsuranceInformation, serviceContractCoverage, serviceContractPhone, floodCoverage.
5.5. miscellaneousCollateralList Object
Used when a loan request has collateral not considered to be a Vehicle, Mortgage, or Real Estate (e.g., jewelry, boats, and trailers).
- Attributes: originalValue, currentPledgeAmount, dateCurrentPledgeCalculated, dateSecured, dateReleaseScheduled, dateActuallyReleased, description, address1, address2, doesCreditUnionHoldTitle, doesCreditUnionHaveUcc, uccExpirationDate, deedHeld, lienHolderPosition, registeredOwnerName1, registeredOwnerName2, firstInsuranceInformation, secondInsuranceInformation, titleInformation, gapCoverage, vsiCoverage, serviceContractCoverage, serviceContractPhone.
5.6. firstInsuranceInformation and secondInsuranceInformation Objects
Used to include loan insurance information with each loan request.
- Attributes: insuranceCompanyCode, agentName, agentAddress, agentOfficePhone, agentCellPhone, agentEmailAddress, policyNumber, creditUnionPurchased, financedIntoLoan, coverageDescription, cost, expirationDate.
5.7. agentAddress Object
- Attributes: line1, line2, city, state, zipCode, zipCode4.
5.8. gapCoverage, vsiCoverage, serviceContractCoverage, and floodCoverage Objects
These objects represent various types of insurance coverage.
- Attributes: insuranceHeld (Boolean), insuranceExpirationDate (Date), insurancePolicyNumber (String), insuranceCompanyName (String), insuranceAmount (Number).
5.9. titleInformation Object
Used with Vehicle, Real Estate, or Miscellaneous Collateral.
- Attributes: titleApplicationDate, titleApplicationState, titleNumber, titleReceivedDate, titleAddress, titleHomePhone, titleBusinessPhone.
5.10. titleAddress Object
- Attributes: line1, line2, city, state, zipCode, zipCode4.
5.11. comakerInformationList Object
Used for adding single or multiple Co-Borrowers to a loan.
- Attributes: currentLiabilityAmount, currentLiabilityLastUpdate, originalLiabilityAmount, originalSecuredDate, scheduledReleaseDate, description, liabilityPercentage, loanBalanceDeduction, liabilityMaximum, associationCode, delinquentNotice, spouse, relationshipToPrimary, reportToCreditBureau, consumerInformationIndicator, bankrupt, creditGrade, creditScore, entity, currentAddress.
5.12. currentAddress Object (for Co-Borrower)
Represents a Co-Borrower’s current physical mailing address.
- Attributes: line1, line2, city, state, zipCode, zipCode4, countryCode, certified.
5.13. entity Object (for Co-Borrower)
Indicates Co-Borrower Entity member information.
- Attributes: firstName, middleName, lastName, nameSuffix, name1, additionalMailingLine, businessName, taxName1, taxName2, taxId, taxIdFormatCode, taxIdCertified, stateTaxId, birthDate, gender, driversLicenseNumber, driversLicenseState, mothersMaidenName, securityQuestionCode, securityQuestionAnswer, proxyCode, proxyExpirationDate, deceased, deceasedDate, disabled, bankruptcy, foreignCitizen, livingInForeignCountry, causedLoss, insuranceEligible, activeMilitary, creditUnionEmployee, employerCode, lendingLimit, phones (List), addresses (List).
5.14. phones Object (for Co-Borrower Entity)
- Attributes: areaCode, phoneNumber, extension, countryCode, type, description.
5.15. addresses Object (for Co-Borrower Entity)
- Attributes: line1, line2, city, state, zipCode, zipCode4, countryCode, certified, badAddressDate.
5.16. checkDisbursementList Object
Allows for single or multiple check disbursements.
- Attributes: amount, accountName, addressLine1, addressLine2, addressLine3, financedFee.
5.17. shareDisbursementList Object
Allows for single or multiple share disbursements.
- Attributes: memberAccountNumber, memberSuffix, amount, description, financedFee.
5.18. loanDisbursementList Object
Allows for single or multiple loan disbursements.
- Attributes: memberAccountNumber, memberSuffix, amount, description, financedFee.
5.19. glDisbursementList Object
Allows for single or multiple general ledger disbursements.
- Attributes: glAccountNumber, amount, description, descriptionForForm, financedFee, partiallyCreditUnionRetained.
5.20. creditCardLoan Object
Contains various flag fields related to credit card loans.
- Attributes: cashAdvanceFeeFlag, overLimitFeeFlag, lateFeeFlag, annualFeeAmount, annualFeeMonth.
5.21. creditCardCategoryList Object
Allows for single or multiple credit card categories.
- Attributes: categoryCode, description, creditLimit, interestRate, dateOpened, cashBackBonusEligible, expirationDate, expirationAction, expirationToCategory, expirationToRate, maximumDaysDelinquent, delinquencyAction, delinquencyToCategory, delinquencyToRate, advanceFeeCode, advanceFeePercentage, advanceFeeAmount, advanceFeeMinimum, advanceFeeMaximum, variableRateGroup, originalRate, indexRateBasedUpon, primeChange, primeChangeAmount, maxLifeIncrease, maxLifeDecrease, maxIncrementalIncrease, maxIncrementalDecrease, maxIncreaseYear, maxDecreaseYear, rateFloor, rateCeiling, rateChangeFrequency, daysBeforeChangeToNotify, nextRateChangeDate, anniversaryDate, rateSentOnPreNotice, lastPreNoticeSentDate.
5.22. helocInformation Object
Contains various flag fields related to Home Equity Line of Credit.
- Attributes: cashAdvanceFeeFlag, overLimitFeeFlag.
5.23. loanTypeConversion Object
Used to set a loan conversion record (in the future) for a loan export.
- Attributes: newType, conversationDate, noticeDate, newTerm, recalculatePaymentFlag, resetLoanOpenDate, setOpenClosedEndCode.
5.24. automaticTransfersList Object
For setting up a loan payment occurring through automatic transfer.
- Attributes: takenFromAccountNumber, takenFromSuffix, givenToAccountNumber, givenToSuffix, nextRunDate, amountOfTransfer, frequency, descriptionForHistory, startDate, stopDate, partialTransferAmount, allowPartialTransfers, considerLoanDueDate, overrideAvailFunds, useLoanPaymentAmount, regDTransferFlag, userMaintainable, postingGroupNumber.
5.25. achDistributionList Object
For setting up a loan payment occurring through an ACH distribution.
- Attributes: achGroup, fromAccountNumber, fromSuffix, priority, toAccountNumber, toSuffix, achAmount, startDate, stopDate, iraCode, allowPartial, useLoanPaymentAmount, useLoanDueDate, dueDateGraceDays, transactionDescription, frequency, nextRunDate.
5.26. payrollInformationList Object
For setting up a loan payment occurring through Payroll distribution.
- Attributes: payrollId, keyField, creditAmount, startDate, stopDate, useLoanPaymentAmount, considerLoanDueDate.
5.27. variableRateExtension Object
Used to create a variable rate extension (rate adjustment record) when a loan export is not a fixed rate loan.
- Attributes: rateGroup, originalRate, rateChangeFrequency, changeOption, indexRateBasedUpon, primeChangePlusMinus, primeChangeAmount, daysBeforeChangeToNotify, nextRateChangeDate, anniversaryDate, maxLifeIncrease, maxLifeDecrease, maxIncrementalIncrease, maxIncrementalDecrease, maxIncreaseYear, maxDecreaseYear, rateFloor, rateCeiling, originalRateThisYear, lastPrenoticeSendDate, rateSentOnPreNotice, paymentSentOnPreNotice, prenoticeTerm, prenoticeDateToBePaid, prenoticeNewRemainingTerm, prenoticeOldRemainingTerm, preNoticeBalanceUsed.
5.28. amortizedFees Object
Allows the Credit Union to set up a Fee Group amortizing a loan fee over a period of time.
- Attributes: feeCode, amortizeType, startDate, lastDepreciationDate, originalAmount, remainingAmount, forcedAmount, term, frequencyMonthlyOrQuarterlyOnly, glPayableAccount, glExpenseAccount, glDepreciationAccount.
5.29. creditScoreList Object
Used to create a member credit score and grade from a credit report.
- Attributes: socialSecurityNumber, processorType, scoreType, scoreDate, score, grade.
5.30. pointsPaid Object
Used when Credit Union offers mortgage or discount points with a mortgage loan.
- Attributes: taxYearPointsApplied, pointsPaidOnPrincipalResidence, mortgageInsurancePremiums.
5.31. temporaryModificationList Object
Used to create a loan modification for a loan.
- Attributes: loanSequenceBeginDate, sequenceEndDate, loanSequenceNumber, operationType, annualSequence, originalReturnPaymentAmount, reducedPaymentAmount, numberOfGraceDays, includeInCounter, loanOfficerWhoKeyedSequence, entryDate, rateAtStartAndReturnRate, rateDuringSequence, justificationForSequence.
5.32. userDefinedFields Object (for Loan)
Used to populate values for Credit Union defined fields per member loan account suffix.
- Attributes: loanAccountNumber, loanSuffix, userDefined01 to userDefined17.
6. HTTPS Status Code 500 Error Includes FLEX Validation Checks
Flex provides additional information in 500 HTTP Status Code errors for troubleshooting. These errors typically indicate invalid attribute values or missing configurations in the Credit Union’s database.
- Common Error Messages (Examples):
- “Internal server error – Loan type na is not defined.”: Loan Type value not capitalized.
- “Internal server error – A loan in process for account: 898990 suffix: 824 already exists”: Suffix value already exists for the member account.
- “Internal server error – Loan Type RV not valid for requested suffix 990”: Loan Type value not assigned to the JSON data suffix value.
- “Internal server error – Loan Account Number 333555 is not valid”: Account number is invalid.
- “Internal server error – Loan Distributions do not match the loan amount”: Loan disbursement amount is zero or does not match total distribution amount.
- “Internal server error – The general ledger distribution for amount $250.00 does not contain a general ledger account number”: General ledger disbursement account number is missing or invalid.
- “Internal server error – Loan Account Number 29998 is dormant. Please change account dormancy status before posting”: Attempting to post a loan to a dormant member account.
- “Internal server error – Teller 78 is blocked from posting loans to account 10487”: Loan officer is blocked from funding to the account number.
- “Internal server error – Member on Do Not Allow list. Unable to open loan.”: Attempting to fund to a member Tax ID that is on the Credit Union Do Not Allow list.
- “Internal server error – No matching service found”: Loan Processing Service API not running on the Credit Union bridge server.
- “Caused by: com.ibm.as400.access.AS400JDBCSQLSyntaxErrorException: [SQL0204] SUFFIXJSON in *LIBL type *N not found.”: Missing data file within Credit Union database.
- Troubleshooting Tip: Provide the exact error message to your Credit Union’s Flex support for efficient troubleshooting. They are typically familiar with these messages and how to correct the underlying data.
7. Appendix
The document includes comprehensive appendices with various code lists for reference:
- Pre-Decision Information: Potential Member Pre-Decision information from Account Inquiry API.
- Type Groups: Loan Group Codes (e.g., C=Consumer, M=Mobile Home).
- Relationship to Primary Member Examples: Common relationship codes (e.g., AU=Aunt, WI=Wife).
- Charge Off Codes: Codes for account charge-offs.
- Loan Payment Frequencies: Codes for various loan payment schedules (e.g., W=Weekly, M=Monthly).
- Credit Bureau Reporting Codes: Codes for reporting account statuses to credit bureaus.