API Search endpoints…⌘K Get API credentialsGet access

Update a loan product (draft workflow)

PUT/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 · required

productId

Request body application/json

accountMovesOutOfNPAOnlyOnArrearsCompletionboolean · optional
accountingRuleinteger · int32 · optional
allowApprovedDisbursedAmountsOverAppliedboolean · optional
allowAttributeOverridesAllowAttributeOverrides · optional
allowCompoundingOnEodboolean · optional
allowFullTermForTrancheboolean · optional

Allow full term length for each tranche disbursement. Only available for PROGRESSIVE schedule type with multi-disbursement enabled.

allowPartialPeriodInterestCalculationboolean · optional
allowVariableInstallmentsboolean · optional
amortizationTypeinteger · int32 · optional
buyDownExpenseAccountIdinteger · int64 · optional
buyDownFeeCalculationTypestring · optional
One of: FLAT
buyDownFeeIncomeTypestring · optional
One of: FEE, INTEREST
buyDownFeeStrategystring · optional
One of: EQUAL_AMORTIZATION
buydownfeeClassificationToIncomeAccountMappingsarray of PostClassificationToIncomeAccountMappings · optional
canDefineInstallmentAmountboolean · optional
canUseForTopupboolean · optional
capitalizedIncomeCalculationTypestring · optional
One of: FLAT
capitalizedIncomeClassificationToIncomeAccountMappingsarray of PostClassificationToIncomeAccountMappings · optional
capitalizedIncomeStrategystring · optional
One of: EQUAL_AMORTIZATION
capitalizedIncomeTypestring · optional
One of: FEE, INTEREST
chargeOffBehaviourstring · optional
chargeOffExpenseAccountIdinteger · int64 · optional
chargeOffFraudExpenseAccountIdinteger · int64 · optional
chargeOffReasonToExpenseAccountMappingsarray of PostChargeOffReasonToExpenseAccountMappings · optional
chargesarray of LoanProductV2ChargeEntry · optional

Replace-all charge entries; omitting the array preserves associations AND flags; flags omitted on surviving entries are preserved, on new entries default false.

closeDatestring · optional
creditAllocationarray of CreditAllocationData · optional
currencyCodestring · optional
dateFormatstring · optional
daysInMonthTypeinteger · int64 · optional
daysInYearCustomStrategystring · optional
daysInYearTypeinteger · int64 · optional
deferredFeeIncomeAccountIdinteger · int64 · optional
deferredIncomeLiabilityAccountIdinteger · int64 · optional
delinquencyBucketIdinteger · int64 · optional
descriptionstring · optional
digitsAfterDecimalinteger · int32 · optional
disallowExpectedDisbursementsboolean · optional
disallowInterestCalculationOnPastDueboolean · optional
disbursedAmountPercentageForDownPaymentnumber · optional
dueDaysForRepaymentEventinteger · int32 · optional
enableAccrualActivityPostingboolean · optional
enableAutoRepaymentForDownPaymentboolean · optional
enableBuyDownFeeboolean · optional
enableDownPaymentboolean · optional
enableIncomeCapitalizationboolean · optional
enableInstallmentLevelDelinquencyboolean · optional
feeToIncomeAccountMappingsarray of LoanProductChargeToGLAccountMapper · optional
fixedLengthinteger · int32 · optional
fixedPrincipalPercentagePerInstallmentnumber · optional
fundIdinteger · int64 · optional
fundSourceAccountIdinteger · int64 · optional
goodwillCreditAccountIdinteger · int64 · optional
graceOnArrearsAgeinginteger · int32 · optional
graceOnInterestPaymentinteger · int32 · optional
graceOnPrincipalPaymentinteger · int32 · optional
holdGuaranteeFundsboolean · optional
inArrearsToleranceinteger · int32 · optional
inMultiplesOfinteger · int32 · optional
includeInBorrowerCycleboolean · optional
incomeFromBuyDownAccountIdinteger · int64 · optional
incomeFromCapitalizationAccountIdinteger · int64 · optional
incomeFromChargeOffFeesAccountIdinteger · int64 · optional
incomeFromChargeOffInterestAccountIdinteger · int64 · optional
incomeFromChargeOffPenaltyAccountIdinteger · int64 · optional
incomeFromFeeAccountIdinteger · int64 · optional
incomeFromGoodwillCreditFeesAccountIdinteger · int64 · optional
incomeFromGoodwillCreditInterestAccountIdinteger · int64 · optional
incomeFromGoodwillCreditPenaltyAccountIdinteger · int64 · optional
incomeFromPenaltyAccountIdinteger · int64 · optional
incomeFromRecoveryAccountIdinteger · int64 · optional
installmentAmountInMultiplesOfinteger · int32 · optional
interestCalculationPeriodTypeinteger · int32 · optional
interestOnLoanAccountIdinteger · int64 · optional
interestRateFrequencyTypeinteger · int32 · optional
interestRatePerPeriodnumber · double · optional
interestRateVariationsForBorrowerCyclearray · optional
interestRecalculationCompoundingMethodinteger · int32 · optional
interestRecognitionOnDisbursementDateboolean · optional
interestTypeinteger · int32 · optional
isArrearsBasedOnOriginalScheduleboolean · optional
isCompoundingToBePostedAsTransactionboolean · optional
isEqualAmortizationboolean · optional
isInterestRecalculationEnabledboolean · optional
isLinkedToFloatingInterestRatesboolean · optional
loanPortfolioAccountIdinteger · int64 · optional
loanScheduleProcessingTypestring · optional
loanScheduleTypestring · optional
localestring · optional
maxInterestRatePerPeriodnumber · double · optional
maxNumberOfRepaymentsinteger · int32 · optional
maxPrincipalnumber · double · optional
maxTrancheCountinteger · int32 · optional
merchantBuyDownFeeboolean · optional
minInterestRatePerPeriodnumber · double · optional
minNumberOfRepaymentsinteger · int32 · optional
minPrincipalnumber · double · optional
minimumDaysBetweenDisbursalAndFirstRepaymentinteger · int32 · optional
multiDisburseLoanboolean · optional
namestring · optional
numberOfRepaymentVariationsForBorrowerCyclearray · optional
numberOfRepaymentsinteger · int32 · optional
outstandingLoanBalancenumber · double · optional
overAppliedCalculationTypestring · optional
overAppliedNumberinteger · int32 · optional
overDueDaysForRepaymentEventinteger · int32 · optional
overdueDaysForNPAinteger · int32 · optional
overpaymentLiabilityAccountIdinteger · int64 · optional
paymentAllocationarray of AdvancedPaymentData · optional
paymentChannelToFundSourceMappingsarray of GetLoanPaymentChannelToFundSourceMappings · optional
penaltyToIncomeAccountMappingsarray of LoanProductChargeToGLAccountMapper · optional
preClosureInterestCalculationStrategyinteger · int32 · optional
principalnumber · double · optional
principalThresholdForLastInstallmentinteger · int32 · optional
principalVariationsForBorrowerCyclearray · optional
ratesarray of RateData · optional
recalculationCompoundingFrequencyIntervalinteger · int32 · optional
recalculationCompoundingFrequencyOnDayTypeinteger · int32 · optional
recalculationCompoundingFrequencyTypeinteger · int32 · optional
recalculationRestFrequencyIntervalinteger · int32 · optional
recalculationRestFrequencyTypeinteger · int32 · optional
receivableFeeAccountIdinteger · int64 · optional
receivableInterestAccountIdinteger · int64 · optional
receivablePenaltyAccountIdinteger · int64 · optional
repaymentEveryinteger · int32 · optional
repaymentFrequencyTypeinteger · int32 · optional
repaymentStartDateTypeinteger · int32 · optional
rescheduleStrategyMethodinteger · int32 · optional
shortNamestring · optional
startDatestring · optional
supportedInterestRefundTypesarray · optional
transactionProcessingStrategyCodestring · optional
transfersInSuspenseAccountIdinteger · int64 · optional
useBorrowerCycleboolean · optional
writeOffAccountIdinteger · int64 · optional
writeOffReasonsToExpenseMappingsarray of PostWriteOffReasonToExpenseAccountMappings · optional
adjustedInstallmentRoundingstring · optional

How the final instalment is rounded when it differs from the others. Absent means the currency's own precision.

beneficiaryTypestring · optional

System-defined disbursement payee category; null clears.

One of: BORROWER, MERCHANT, DEALER, BUILDER, PRIOR_LENDER
bpiMethodstring · optional

BPI treatment; explicit null clears; omitted preserves. Refused for a schedule type that prices no broken period.

One of: EMI_PLUS_BPI, PRE_EMI_INTEREST, BPI_WITHIN_EMI, CAPITALIZE_BPI
brokenPeriodDayCountstring · optional

broken-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.

One of: ACT_365, ACT_360, D30_360_US, D30E_360, ACT_ACT
coLendingEligibleboolean · optional

Co-lending eligibility flag.

collectBpiAtDisbursementboolean · optional

BPI-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 · optional

APR-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 · optional

stable 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.

One of: ACT_365, ACT_360, D30_360_US, D30E_360, ACT_ACT
defaultRoundingModestring · optional

product-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.

One of: UP, DOWN, CEILING, FLOOR, HALF_UP, HALF_DOWN, HALF_EVEN
interestRateStepnumber · optional

fixed nominal rate increment in percentage points per annum. Fixed-rate products only; must be null/omitted for floating products. Null = continuous.

maximumDaysBetweenDisbursalAndFirstRepaymentinteger · int32 · optional

first-repayment ceiling in days. Explicit null clears; omitted preserves; the combined final state must keep ceiling >= floor.

pmtTypestring · optional

payment-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.

One of: STANDARD_PMT, PRECISE_PMT
principalStepnumber · optional

principal 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 · optional

Replace-all list of stable category-tag codes (code group LoanProductCategory).

productTypestring · optional

Stable product-type code (code group LoanProductType); null clears.

repayOnDayarray · optional

replacement 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 · optional

The 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 · optional

Which 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 · optional

residual (balloon) schedule eligibility flag. Declarative: stored as sent; the residual schedule engine consumes it in a later phase.

scheduleSolverstring · optional

declarative 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.

One of: SOLVE_EMI, TARGET_EMI, MERCHANT_DISCOUNT, FLAT_RATE, TOTAL_INTEREST_PCT
tenorStepinteger · int32 · optional

increment in NUMBER OF INSTALLMENTS over the repayment-count band (never a calendar duration). Explicit null clears; omitted preserves.

Responses

200OK

Response fields

changesPutLoanChanges · optional
resourceIdinteger · int64 · optional

Every 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