Update a Loan Product (V2)
/lokta-lms/api/v2/loanproducts/{productId}Updates a Loan Product through the V2 contract. Preserves V1 partial-update semantics: omitted fields (including loanScheduleType) leave the existing configuration unchanged.
Temporary integration tolerance: unknown JSON request-body fields are ignored — they are not validated, persisted, returned or audited, cause no data change on their own, and must not be relied upon. Known fields remain strictly validated. A future release may restore unsupported-parameter rejection.
Path parameters
productIdpath · integer · int64 · requiredproductId
Request body application/json
accountMovesOutOfNPAOnlyOnArrearsCompletionboolean · optionalaccountingRuleinteger · int32 · optionalallowApprovedDisbursedAmountsOverAppliedboolean · optionalallowAttributeOverridesAllowAttributeOverrides · optionalallowCompoundingOnEodboolean · optionalallowFullTermForTrancheboolean · optionalAllow full term length for each tranche disbursement. Only available for PROGRESSIVE schedule type with multi-disbursement enabled.
allowPartialPeriodInterestCalculationboolean · optionalallowVariableInstallmentsboolean · optionalamortizationTypeinteger · int32 · optionalbuyDownExpenseAccountIdinteger · int64 · optionalbuyDownFeeCalculationTypestring · optionalFLATbuyDownFeeIncomeTypestring · optionalFEE, INTERESTbuyDownFeeStrategystring · optionalEQUAL_AMORTIZATIONbuydownfeeClassificationToIncomeAccountMappingsarray of PostClassificationToIncomeAccountMappings · optionalcanDefineInstallmentAmountboolean · optionalcanUseForTopupboolean · optionalcapitalizedIncomeCalculationTypestring · optionalFLATcapitalizedIncomeClassificationToIncomeAccountMappingsarray of PostClassificationToIncomeAccountMappings · optionalcapitalizedIncomeStrategystring · optionalEQUAL_AMORTIZATIONcapitalizedIncomeTypestring · optionalFEE, INTERESTchargeOffBehaviourstring · optionalchargeOffExpenseAccountIdinteger · int64 · optionalchargeOffFraudExpenseAccountIdinteger · int64 · optionalchargeOffReasonToExpenseAccountMappingsarray of PostChargeOffReasonToExpenseAccountMappings · optionalchargesarray of LoanProductV2ChargeEntry · optionalReplace-all charge entries; omitting the array preserves associations AND flags; flags omitted on surviving entries are preserved, on new entries default false.
closeDatestring · optionalcreditAllocationarray of CreditAllocationData · optionalcurrencyCodestring · optionaldateFormatstring · optionaldaysInMonthTypeinteger · int64 · optionaldaysInYearCustomStrategystring · optionaldaysInYearTypeinteger · int64 · optionaldeferredFeeIncomeAccountIdinteger · int64 · optionaldeferredIncomeLiabilityAccountIdinteger · int64 · optionaldelinquencyBucketIdinteger · int64 · optionaldescriptionstring · optionaldigitsAfterDecimalinteger · int32 · optionaldisallowExpectedDisbursementsboolean · optionaldisallowInterestCalculationOnPastDueboolean · optionaldisbursedAmountPercentageForDownPaymentnumber · optionaldueDaysForRepaymentEventinteger · int32 · optionalenableAccrualActivityPostingboolean · optionalenableAutoRepaymentForDownPaymentboolean · optionalenableBuyDownFeeboolean · optionalenableDownPaymentboolean · optionalenableIncomeCapitalizationboolean · optionalenableInstallmentLevelDelinquencyboolean · optionalfeeToIncomeAccountMappingsarray of LoanProductChargeToGLAccountMapper · optionalfixedLengthinteger · int32 · optionalfixedPrincipalPercentagePerInstallmentnumber · optionalfundIdinteger · int64 · optionalfundSourceAccountIdinteger · int64 · optionalgoodwillCreditAccountIdinteger · int64 · optionalgraceOnArrearsAgeinginteger · int32 · optionalgraceOnInterestPaymentinteger · int32 · optionalgraceOnPrincipalPaymentinteger · int32 · optionalholdGuaranteeFundsboolean · optionalinArrearsToleranceinteger · int32 · optionalinMultiplesOfinteger · int32 · optionalincludeInBorrowerCycleboolean · optionalincomeFromBuyDownAccountIdinteger · int64 · optionalincomeFromCapitalizationAccountIdinteger · int64 · optionalincomeFromChargeOffFeesAccountIdinteger · int64 · optionalincomeFromChargeOffInterestAccountIdinteger · int64 · optionalincomeFromChargeOffPenaltyAccountIdinteger · int64 · optionalincomeFromFeeAccountIdinteger · int64 · optionalincomeFromGoodwillCreditFeesAccountIdinteger · int64 · optionalincomeFromGoodwillCreditInterestAccountIdinteger · int64 · optionalincomeFromGoodwillCreditPenaltyAccountIdinteger · int64 · optionalincomeFromPenaltyAccountIdinteger · int64 · optionalincomeFromRecoveryAccountIdinteger · int64 · optionalinstallmentAmountInMultiplesOfinteger · int32 · optionalinterestCalculationPeriodTypeinteger · int32 · optionalinterestOnLoanAccountIdinteger · int64 · optionalinterestRateFrequencyTypeinteger · int32 · optionalinterestRatePerPeriodnumber · double · optionalinterestRateVariationsForBorrowerCyclearray · optionalinterestRecalculationCompoundingMethodinteger · int32 · optionalinterestRecognitionOnDisbursementDateboolean · optionalinterestTypeinteger · int32 · optionalisArrearsBasedOnOriginalScheduleboolean · optionalisCompoundingToBePostedAsTransactionboolean · optionalisEqualAmortizationboolean · optionalisInterestRecalculationEnabledboolean · optionalisLinkedToFloatingInterestRatesboolean · optionalloanPortfolioAccountIdinteger · int64 · optionalloanScheduleProcessingTypestring · optionalloanScheduleTypestring · optionallocalestring · optionalmaxInterestRatePerPeriodnumber · double · optionalmaxNumberOfRepaymentsinteger · int32 · optionalmaxPrincipalnumber · double · optionalmaxTrancheCountinteger · int32 · optionalmerchantBuyDownFeeboolean · optionalminInterestRatePerPeriodnumber · double · optionalminNumberOfRepaymentsinteger · int32 · optionalminPrincipalnumber · double · optionalminimumDaysBetweenDisbursalAndFirstRepaymentinteger · int32 · optionalmultiDisburseLoanboolean · optionalnamestring · optionalnumberOfRepaymentVariationsForBorrowerCyclearray · optionalnumberOfRepaymentsinteger · int32 · optionaloutstandingLoanBalancenumber · double · optionaloverAppliedCalculationTypestring · optionaloverAppliedNumberinteger · int32 · optionaloverDueDaysForRepaymentEventinteger · int32 · optionaloverdueDaysForNPAinteger · int32 · optionaloverpaymentLiabilityAccountIdinteger · int64 · optionalpaymentAllocationarray of AdvancedPaymentData · optionalpaymentChannelToFundSourceMappingsarray of GetLoanPaymentChannelToFundSourceMappings · optionalpenaltyToIncomeAccountMappingsarray of LoanProductChargeToGLAccountMapper · optionalpreClosureInterestCalculationStrategyinteger · int32 · optionalprincipalnumber · double · optionalprincipalThresholdForLastInstallmentinteger · int32 · optionalprincipalVariationsForBorrowerCyclearray · optionalratesarray of RateData · optionalrecalculationCompoundingFrequencyIntervalinteger · int32 · optionalrecalculationCompoundingFrequencyOnDayTypeinteger · int32 · optionalrecalculationCompoundingFrequencyTypeinteger · int32 · optionalrecalculationRestFrequencyIntervalinteger · int32 · optionalrecalculationRestFrequencyTypeinteger · int32 · optionalreceivableFeeAccountIdinteger · int64 · optionalreceivableInterestAccountIdinteger · int64 · optionalreceivablePenaltyAccountIdinteger · int64 · optionalrepaymentEveryinteger · int32 · optionalrepaymentFrequencyTypeinteger · int32 · optionalrepaymentStartDateTypeinteger · int32 · optionalrescheduleStrategyMethodinteger · int32 · optionalshortNamestring · optionalstartDatestring · optionalsupportedInterestRefundTypesarray · optionaltransactionProcessingStrategyCodestring · optionaltransfersInSuspenseAccountIdinteger · int64 · optionaluseBorrowerCycleboolean · optionalwriteOffAccountIdinteger · int64 · optionalwriteOffReasonsToExpenseMappingsarray of PostWriteOffReasonToExpenseAccountMappings · optionalbeneficiaryTypestring · optionalSystem-defined disbursement payee category; null clears.
BORROWER, MERCHANT, DEALER, BUILDER, PRIOR_LENDERbpiMethodstring · optionalBPI treatment; explicit null clears; omitted preserves. Refused for a schedule type that prices no broken period.
EMI_PLUS_BPI, PRE_EMI_INTEREST, BPI_WITHIN_EMI, CAPITALIZE_BPIbrokenPeriodDayCountstring · optionalbroken-period day-count convention — same choices as dayCountConvention (parity). Explicit null clears; omitted preserves. Declarative product configuration: stored as sent; the broken-period interest engine consumes it in a later phase.
ACT_365, ACT_360, D30_360_US, D30E_360, ACT_ACTcoLendingEligibleboolean · optionalCo-lending eligibility flag.
collectBpiAtDisbursementboolean · optionalBPI-at-disbursement flag. Omitted preserves; explicit null is rejected — send false to disable. Refused for a schedule type that prices no broken period, and not yet consumed: no transaction or journal entry nets it from the proceeds.
computeAprForKfsboolean · optionalAPR-for-KFS flag. Omitted preserves; explicit null is rejected — send false to disable. Declarative: stored as sent; the APR/KFS engine consumes it in a later phase.
dayCountConventionstring · optionalstable day-count convention name. Supplying it re-derives and updates the raw axes; explicit null clears ONLY the stored convention (axes untouched); omitted preserves. Updating either raw axis WITHOUT a convention in the same request clears the stored convention (drift prevention). Supplying both requires consistency.
ACT_365, ACT_360, D30_360_US, D30E_360, ACT_ACTdefaultRoundingModestring · optionalproduct-level java.math.RoundingMode NAME (never an ordinal or any internal identifier). Null inherits tenant rounding. Declarative: persisted via the shared rounding profile; engine wiring consumes it in a later phase.
UP, DOWN, CEILING, FLOOR, HALF_UP, HALF_DOWN, HALF_EVENinterestRateStepnumber · optionalfixed nominal rate increment in percentage points per annum. Fixed-rate products only — must be null/omitted for floating products. Null = continuous.
maximumDaysBetweenDisbursalAndFirstRepaymentinteger · int32 · optionalfirst-repayment ceiling in days. Explicit null clears; omitted preserves; the combined final state must keep ceiling >= floor.
pmtTypestring · optionalpayment-formula variant. Omitted preserves; explicit null is rejected — send STANDARD_PMT to reset. PRECISE_PMT is stored as declarative configuration; the precise-PMT engine consumes it in a later phase.
STANDARD_PMT, PRECISE_PMTprincipalStepnumber · optionalprincipal increment anchored at minimumPrincipal. Explicit null clears the step (band returns to CONTINUOUS); omitted preserves. Requires the complete principal band when supplied; the default principal must sit on the grid.
productCategoryTagsarray · optionalReplace-all list of stable category-tag codes (code group LoanProductCategory).
productTypestring · optionalStable product-type code (code group LoanProductType); null clears.
repayOnDayarray · optionalreplacement pinned-day set (monthly products only; exactly one day active). Explicit null clears the recurrence; omitted preserves. Changing repayment frequency away from monthly requires clearing repayOnDay in the same request.
residualEnabledboolean · optionalresidual (balloon) schedule eligibility flag. Declarative: stored as sent; the residual schedule engine consumes it in a later phase.
scheduleSolverstring · optionaldeclarative input-mode selection (D-27). Omitted preserves; explicit null CLEARS the value back to "not configured" (nullable, no default). All five values are storable and none changes backend behaviour; changing the solver changes no other product field. The backend never derives Loan terms from scheduleSolver.
SOLVE_EMI, TARGET_EMI, MERCHANT_DISCOUNT, FLAT_RATE, TOTAL_INTEREST_PCTtenorStepinteger · int32 · optionalincrement in NUMBER OF INSTALLMENTS over the repayment-count band (never a calendar duration). Explicit null clears; omitted preserves.
Responses
200OKResponse fields
changesPutLoanChanges · optionalresourceIdinteger · int64 · optionalEvery request authenticates with HTTP Basic and carries a Tenant-Identifier header. See the conventions for dates, commands, pagination and errors.
Open this operation in the interactive explorer, or read it as Markdown.