Skip to content

Operate Endpoint

A single endpoint that handles all client and loan operations. The status field determines which operation is performed, and the data field contains the operation-specific payload.

Each request is processed asynchronously - the endpoint returns immediately with a tracking_id that can be used to poll for the result.

Endpoint

POST /fineract/operate

Headers

KeyValue
Content-Typeapplication/json
X-Internal-TokenYour internal orchestration token

Payload Structure

json
{
    "status": "<OPERATION_STATUS>",
    "data": { ... }
}

Supported Operations

StatusOperationDescription
CLIENT_CREATECreate ClientCreates a new client in Fineract
CLIENT_UPDATEUpdate ClientUpdates an existing client by LOS ID
LOAN_CREATECreate LoanCreates a new loan in Fineract
LOAN_UPDATEUpdate LoanUpdates an existing loan by LOS ID
LOAN_APPROVEApprove LoanApproves a loan by LOS loan ID
LOAN_DISBURSEDisburse LoanDisburses a loan by LOS loan ID
LOAN_DELETEDelete LoanDeletes a loan by LOS loan ID

CLIENT_CREATE

Creates a new client in Fineract.

json
{
  "status": "CLIENT_CREATE",
  "data": {
    "firstname": "Jayesh",
    "lastname": "Badgujar",
    "externalId": "INC-1001",
    "mobileNo": "9966999999",
    "emailAddress": "jayesh@example.com",
    "activationDate": "01 January 2026"
  }
}
FieldTypeRequiredDescription
firstnamestringYesClient first name
lastnamestringYesClient last name
externalIdstringYesUnique LOS client ID
mobileNostringNoMobile number
emailAddressstringNoEmail address
activationDatestringYesFormat: dd MMMM yyyy

CLIENT_UPDATE

Updates an existing client by their LOS external ID.

json
{
  "status": "CLIENT_UPDATE",
  "data": {
    "externalId": "INC-1001",
    "activationDate": "10 January 2026",
    "firstname": "Jayesh",
    "lastname": "Badgu",
    "mobileNo": "9966999999",
    "emailAddress": "jayesh@ex.com"
  }
}
FieldTypeRequiredDescription
externalIdstringYesLOS client ID to update
activationDatestringNoUpdated activation date
firstnamestringNoUpdated first name
lastnamestringNoUpdated last name
mobileNostringNoUpdated mobile number
emailAddressstringNoUpdated email address

LOAN_CREATE

Creates a new loan in Fineract, linked to an existing client.

json
{
  "status": "LOAN_CREATE",
  "data": {
    "lenderConfig": "UGRO",
    "externalId": "LOAN-123",
    "principal": 100000,
    "submittedOnDate": "11 January 2026",
    "loanTermFrequency": 12,
    "loanTermFrequencyType": "months",
    "numberOfRepayments": 12,
    "interestRatePerPeriod": 8,
    "clientId": "INC-1001"
  }
}
FieldTypeRequiredDescription
lenderConfigstringYesLoan product name (e.g., UGRO, DMI, ARTHMATE)
externalIdstringYesLOS loan ID
principalfloatYesLoan amount
submittedOnDatestringYesSubmission date (dd MMMM yyyy)
loanTermFrequencyintYesLoan term length
loanTermFrequencyTypestringNodays, weeks, months (default), or years
numberOfRepaymentsintYesNumber of EMI installments
interestRatePerPeriodfloatYesInterest rate per period
clientIdstringYesLOS client ID (from CLIENT_CREATE)

Supported Lender Configs

ValueLender
LIQUILOANSLiquiloans
UGROUgro Capital
DMIDMI Finance
ARTHMATEArthmate
SHIVALIKShivalik Small Finance Bank
VIVRITIVivriti Capital
GBGromor / Growth Bharat
IKFIKF Finance
LENDINGKARTLendingkart

LOAN_UPDATE

Updates an existing loan (only before approval).

json
{
  "status": "LOAN_UPDATE",
  "data": {
    "externalId": "LOAN-123",
    "principal": 200000,
    "submittedOnDate": "11 January 2026",
    "loanTermFrequency": 24,
    "loanTermFrequencyType": "months",
    "numberOfRepayments": 24,
    "interestRatePerPeriod": 8.3
  }
}
FieldTypeRequiredDescription
externalIdstringYesLOS loan ID to update
principalfloatNoUpdated loan amount
submittedOnDatestringNoUpdated submission date
loanTermFrequencyintNoUpdated loan term
loanTermFrequencyTypestringNodays, weeks, months, or years
numberOfRepaymentsintNoUpdated repayment count
interestRatePerPeriodfloatNoUpdated interest rate

LOAN_APPROVE

Approves a loan by its LOS loan ID.

json
{
  "status": "LOAN_APPROVE",
  "data": {
    "external_loan_id": "LOAN-123",
    "approvedOnDate": "11 January 2026"
  }
}
FieldTypeRequiredDescription
external_loan_idstringYesLOS loan ID to approve
approvedOnDatestringYesApproval date (dd MMMM yyyy)

LOAN_DISBURSE

Disburses a loan by its LOS loan ID.

json
{
  "status": "LOAN_DISBURSE",
  "data": {
    "external_loan_id": "LOAN-123",
    "actualDisbursementDate": "11 January 2026",
    "transactionAmount": 200000,
    "utr_payment_id": "UTR-20260111-001",
    "note": "Disbursement for LOAN-123"
  }
}
FieldTypeRequiredDescription
external_loan_idstringYesLOS loan ID to disburse
actualDisbursementDatestringYesDisbursement date (dd MMMM yyyy)
transactionAmountfloatNoAmount to disburse (defaults to full principal)
utr_payment_idstringNoUTR/payment ID for tracking
notestringNoDisbursement note

LOAN_DELETE

Deletes a loan by its LOS loan ID.

json
{
  "status": "LOAN_DELETE",
  "data": {
    "external_loan_id": "LOAN-123"
  }
}
FieldTypeRequiredDescription
external_loan_idstringYesLOS loan ID to delete

WARNING

Only loans in "Submitted and awaiting approval" status can be deleted. Approved or disbursed loans cannot be deleted.


To process a full loan lifecycle, call /fineract/operate sequentially, polling the tracking endpoint between each step:

  1. CLIENT_CREATE → poll until status != "processing" → confirm "success"
  2. LOAN_CREATE → poll → confirm
  3. LOAN_APPROVE → poll → confirm
  4. LOAN_DISBURSE → poll → confirm

To delete a loan (only if not yet approved):

  1. LOAN_DELETE → poll → confirm

Turno Fineract LMS Documentation