# Retrieve a Loan Product (V2)

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

Retrieves a Loan Product

Example Requests:

v2/loanproducts/1


v2/loanproducts/1?template=true


v2/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 LoanProductV2ChargeEntry): Charge entries with per-association flags (explicit booleans; old associations read false/false).
- `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)
- `beneficiaryType` (LoanProductV2CodeOption): A code-backed value: `code` is the stable business identifier (supply THIS in write requests), `value` is the display label.
- `bpiMethod` (string): BPI treatment name; absent when unconfigured.
- `brokenPeriodDayCount` (string): Broken-period convention name; absent means regular-period behaviour.
- `coLendingEligible` (boolean)
- `collectBpiAtDisbursement` (boolean)
- `computeAprForKfs` (boolean)
- `dayCountConvention` (string): Stable convention name; absent when the product was configured through raw axes only (a convention is never inferred backwards — 30/360 would be ambiguous between D30_360_US and D30E_360).
- `defaultRoundingMode` (string): RoundingMode NAME; absent when the product inherits tenant rounding. Internal profile identifiers are never exposed.
- `interestRateStep` (number)
- `maximumDaysBetweenDisbursalAndFirstRepayment` (integer): First-repayment ceiling in days; absent when no ceiling is configured.
- `pmtType` (string)
- `principalStep` (number)
- `productCategoryTags` (array of LoanProductV2CodeOption)
- `productType` (LoanProductV2CodeOption): A code-backed value: `code` is the stable business identifier (supply THIS in write requests), `value` is the display label.
- `repayOnDay` (array): Pinned monthly repayment day(s), sorted ascending; absent when none are configured. The internal recurrence rule is never exposed.
- `residualEnabled` (boolean)
- `scheduleSolver` (string): Declarative solver selection — the canonical enum name when configured; ABSENT when not configured (nullable, no default: existing and V1-created products carry no value). Never an id, never a display label. Informational for the configurator/LOS only: no backend calculation reads it.
- `tenorStep` (integer)

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

## Example response
```json
{}
```

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