# Retrieve a Loan Product

`GET /lokta-lms/api/v1/loanproducts/{productId}`

Retrieves a Loan Product

Example Requests:

loanproducts/1


loanproducts/1?template=true


loanproducts/1?fields=name,description,numberOfRepayments

## Parameters
- `productId` (path, integer, required): productId

## Responses
- `200`: OK

## Response fields
- `accountingMappings` (GetLoanAccountingMappings)
- `accountingRule` (GetLoanProductsAccountingRule)
- `allowApprovedDisbursedAmountsOverApplied` (boolean)
- `allowFullTermForTranche` (boolean): Allow full term length for each tranche disbursement. Only available for PROGRESSIVE schedule type with multi-disbursement enabled.
- `allowPartialPeriodInterestCalculation` (boolean)
- `allowVariableInstallments` (boolean)
- `amortizationType` (GetLoanProductsAmortizationType)
- `annualInterestRate` (number)
- `buyDownFeeCalculationType` (StringEnumOptionData)
- `buyDownFeeCalculationTypeOptions` (array of StringEnumOptionData)
- `buyDownFeeIncomeType` (StringEnumOptionData)
- `buyDownFeeIncomeTypeOptions` (array of StringEnumOptionData)
- `buyDownFeeStrategy` (StringEnumOptionData)
- `buyDownFeeStrategyOptions` (array of StringEnumOptionData)
- `buydownFeeClassificationOptions` (array of GetCodeValuesDataResponse)
- `buydownFeeClassificationToIncomeAccountMappings` (array of GetClassificationToIncomeAccountMappings)
- `canDefineInstallmentAmount` (boolean)
- `canUseForTopup` (boolean)
- `capitalizedIncomeCalculationType` (StringEnumOptionData)
- `capitalizedIncomeCalculationTypeOptions` (array of StringEnumOptionData)
- `capitalizedIncomeClassificationOptions` (array of GetCodeValuesDataResponse)
- `capitalizedIncomeClassificationToIncomeAccountMappings` (array of GetClassificationToIncomeAccountMappings)
- `capitalizedIncomeStrategy` (StringEnumOptionData)
- `capitalizedIncomeStrategyOptions` (array of StringEnumOptionData)
- `capitalizedIncomeType` (StringEnumOptionData)
- `capitalizedIncomeTypeOptions` (array of StringEnumOptionData)
- `chargeOffBehaviour` (StringEnumOptionData)
- `chargeOffReasonOptions` (array of GetLoanProductsChargeOffReasonOptions)
- `chargeOffReasonToExpenseAccountMappings` (array of GetChargeOffReasonToExpenseAccountMappings)
- `charges` (array of LoanProductChargeData)
- `creditAllocation` (array of CreditAllocationData)
- `currency` (GetLoanProductsCurrency)
- `daysInMonthType` (GetLoanProductsDaysInMonthType)
- `daysInYearCustomStrategy` (StringEnumOptionData)
- `daysInYearType` (GetLoanProductsDaysInYearType)
- `delinquencyBucket` (DelinquencyBucketData)
- `delinquencyBucketOptions` (array of DelinquencyBucketData)
- `description` (string)
- `disallowExpectedDisbursements` (boolean)
- `disbursedAmountPercentageForDownPayment` (number)
- `dueDaysForRepaymentEvent` (integer)
- `enableAccrualActivityPosting` (boolean)
- `enableAutoRepaymentForDownPayment` (boolean)
- `enableBuyDownFee` (boolean)
- `enableDownPayment` (boolean)
- `enableIncomeCapitalization` (boolean)
- `enableInstallmentLevelDelinquency` (boolean)
- `feeToIncomeAccountMappings` (array of GetLoanFeeToIncomeAccountMappings)
- `fixedLength` (integer)
- `fixedPrincipalPercentagePerInstallment` (number)
- `id` (integer)
- `inArrearsTolerance` (integer)
- `includeInBorrowerCycle` (boolean)
- `interestCalculationPeriodType` (GetLoansProductsInterestCalculationPeriodType)
- `interestRateFrequencyType` (GetLoanProductsInterestRateFrequencyType)
- `interestRatePerPeriod` (number)
- `interestRateVariationsForBorrowerCycle` (array)
- `interestRecalculationData` (GetLoanProductsInterestRecalculationData)
- `interestRecognitionOnDisbursementDate` (boolean)
- `interestType` (GetLoanProductsInterestTemplateType)
- `isFloatingInterestRateCalculationAllowed` (boolean)
- `isInterestRecalculationEnabled` (boolean)
- `isLinkedToFloatingInterestRates` (boolean)
- `isRatesEnabled` (boolean)
- `loanScheduleProcessingType` (EnumOptionData)
- `loanScheduleType` (EnumOptionData)
- `maxInterestRatePerPeriod` (number)
- `maxNumberOfRepayments` (integer)
- `maxPrincipal` (number)
- `maxTrancheCount` (integer)
- `maximumGap` (integer)
- `merchantBuyDownFee` (boolean)
- `minInterestRatePerPeriod` (number)
- `minNumberOfRepayments` (integer)
- `minPrincipal` (number)
- `minimumGap` (integer)
- `multiDisburseLoan` (boolean)
- `name` (string)
- `numberOfRepaymentVariationsForBorrowerCycle` (array)
- `numberOfRepayments` (integer)
- `outstandingLoanBalance` (number)
- `overAppliedCalculationType` (string)
- `overDueDaysForRepaymentEvent` (integer)
- `overdueDaysForNPA` (integer)
- `paymentAllocation` (array of AdvancedPaymentData)
- `paymentChannelToFundSourceMappings` (array of GetLoanPaymentChannelToFundSourceMappings)
- `principal` (number)
- `principalThresholdForLastInstalment` (integer)
- `productsPrincipalVariationsForBorrowerCycle` (array of GetLoanProductsPrincipalVariationsForBorrowerCycle)
- `repaymentEvery` (integer)
- `repaymentFrequencyType` (GetLoanProductsRepaymentFrequencyType)
- `repaymentStartDateType` (GetLoanProductsRepaymentStartDateType)
- `shortName` (string)
- `status` (string)
- `supportedInterestRefundTypes` (array of StringEnumOptionData)
- `transactionProcessingStrategyCode` (string)
- `transactionProcessingStrategyName` (string)
- `useBorrowerCycle` (boolean)
- `writeOffReasonOptions` (array of GetLoanProductsWriteOffReasonOptions)
- `writeOffReasonsToExpenseMappings` (array of GetChargeOffReasonToExpenseAccountMappings)

## Example request (cURL)
```bash
curl -X GET \
  'http://localhost:8080/lokta-lms/api/v1/loanproducts/{productId}' \
  -u '{username}:{password}' \
  -H 'Tenant-Identifier: default'
```

## Example response
```json
{
  "accountingMappings": {
    "buyDownExpenseAccount": {},
    "chargeOffExpenseAccount": {},
    "chargeOffFraudExpenseAccount": {},
    "deferredIncomeLiabilityAccount": {}
  },
  "accountingRule": {
    "code": "accountingRuleType.cash",
    "description": "CASH BASED",
    "id": 2
  },
  "allowApprovedDisbursedAmountsOverApplied": true,
  "allowFullTermForTranche": false
}
```

Interactive: https://developer.lokta.ai/reference.html#operation/retrieveOneLoanProduct
