Skip to main content

Approve Loan Account

Overview

Approves a loan application allowing it to proceed to disbursement.

Endpoint

POST /api/bpm/cmd

Request Headers

HeaderTypeRequiredDescription
AuthorizationstringYesBearer token for authentication
Content-TypestringYesMust be application/json
X-Tenant-IdstringYesTenant identifier

Request Body

{
"cmd": "ApproveLoanCommand",
"data": {
"accountEncodedKey": "LN-2024-001234",
"comment": "Approved - All documentation verified"
}
}

Parameters

ParameterTypeRequiredDescription
cmdstringYesMust be "ApproveLoanCommand"
dataobjectYesApproval data
↳ accountEncodedKeystringYesLoan account identifier (EncodedKey or AccountNumber)
↳ commentstringNoApproval comments or notes

Response

Success Response (200 OK)

{
"success": true,
"message": "Loan approved successfully",
"data": {
"loanId": "LA-2024-00001",
"status": "Approved",
"approvalDate": "2024-01-15T14:00:00Z",
"approvedBy": "manager@bank.com",
"approvalComments": "Approved - All documentation complete",
"readyForDisbursement": true
}
}

Status Codes

CodeDescription
200Loan approved successfully
400Invalid request or loan not eligible for approval
401Unauthorized
403Insufficient approval authority
404Loan not found
409Loan already approved or in wrong status
500Internal server error

Business Rules

  • Loan must be in PendingApproval status
  • Approver must have sufficient authority for loan amount
  • All required documentation must be complete
  • Credit checks must pass
  • Approval logged in audit trail

Code Examples

C# Example

public async Task<ApprovalResponse> ApproveLoanAsync(long loanAccountId, string comments = null)
{
var commandRequest = new
{
cmd = "ApproveLoanCommand",
data = new { loanAccountId, comments }
};

var json = JsonSerializer.Serialize(commandRequest);
var content = new StringContent(json, Encoding.UTF8, "application/json");

var response = await _httpClient.PostAsync("/api/bpm/cmd", content);
response.EnsureSuccessStatusCode();

var result = await response.Content.ReadAsStringAsync();
return JsonSerializer.Deserialize<ApprovalResponse>(result);
}

TypeScript/JavaScript Example

async function approveLoan(loanAccountId: number, comments?: string): Promise<any> {
const commandRequest = {
cmd: 'ApproveLoanCommand',
data: { loanAccountId, comments }
};

const response = await fetch('/api/bpm/cmd', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${accessToken}`,
'X-Tenant-Id': tenantId
},
body: JSON.stringify({ loanId, approvalComments: comments })
});

const result = await response.json();
return result.data;
}

Notes

  • Approval may trigger multiple approval levels
  • System validates approver authority automatically
  • Notifications sent to relevant parties
  • Loan becomes eligible for disbursement
  • Repayment schedule generated automatically