Update a loan product (draft workflow)
/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 · optionaladjustedInstallmentRoundingstring · optionalHow the final instalment is rounded when it differs from the others. Absent means the currency's own precision.
beneficiaryTypestring · 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 (CONTRACTUAL, monthly products only). Explicit null clears the recurrence; omitted preserves. Changing repayment frequency away from monthly requires clearing repayOnDay in the same request.
repayOnWeekdaystring · optionalThe weekday a contractual product collects on (MO..SU). Mutually exclusive with repayOnDay. On a monthly product it needs repayOnWeekdayOccurrence alongside it; on a weekly product every occurrence of the weekday is a collection.
repayOnWeekdayOccurrenceinteger · int32 · optionalWhich occurrence of repayOnWeekday in the month a monthly product collects on: 1 to 4 counting from the start of the month, or -1 for the last. Refused on a weekly product.
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.
This is the API reference for Lokta, the agentic loan servicing platform. Go to lokta.ai