v1

latestOpenAPI 3.1.02026-07-263644911022.4 KB
LoanApplications

Disburse loan application

Validates disbursement eligibility, dispatches the resolving jurisdictional disbursement pipeline inside the parent transaction, and moves an approved application to disbursed. Idempotent: the lib-commons middleware enforces replay detection via X-Idempotency.

post/api/v1/loan-applications/{id}/disburse

Path parameters

idstring uuid required

Loan application identifier.

Example:3fa85f64-5717-4562-b3fc-2c963f66afa6

Loan application identifier.

Headers

X-Idempotencystring required

Canonical idempotency request ID (lib-commons enforcer reads this).

Canonical idempotency request ID (lib-commons enforcer reads this).

Request body

currencystring

Optional ISO-4217 currency assertion (3 uppercase letters). When present it MUST equal the loan application's currency (a double-entry guard); a divergence is rejected with 422. When omitted, the loan's own currency is used.

disbursedAtstring required

Disbursement timestamp (RFC3339).

grossRequestedAmountstring required

Gross requested disbursement amount as a decimal string (e.g. "50000.00").

jurisdictionExtensionsobject

Opaque per-jurisdiction disbursement payload, validated at the use-case layer.

loanAccountIdstring required

Loan account identifier (UUID).

netDeliveredAmountstring required

Net delivered disbursement amount as a decimal string (e.g. "49500.00").

originationFeeAmountstring

Optional per-disbursement IF origination fee as a decimal string, net-of-IOF (e.g. "250.00"). Cost metadata persisted for accrual (AC0 = principal - fee); NOT a withholding and does not affect the Net = Gross - withholdings balance. Omitted or empty defaults to "0".

Example request

{
  "currency": "BRL",
  "disbursedAt": "2026-06-14T12:00:00Z",
  "grossRequestedAmount": "50000.00",
  "loanAccountId": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
  "netDeliveredAmount": "49500.00",
  "originationFeeAmount": "250.00"
}

Response

OK

assignedOfficerIdstring required

Authenticated officer who created the application (request subject).

borrowerIdstring required

Borrower identifier.

expectedDisbursementDatestring required

Expected disbursement date (RFC3339, UTC).

idstring required

Loan application identifier (UUID).

loanProductVersionIdstring required

Loan product version this application was created against (UUID).

previewJurisdictionCodestring required

ISO-2 jurisdiction code resolved at preview time.

previewProfileVersionstring required

Jurisdiction profile version resolved at preview time.

previewScheduleSnapshotIdstring required

Preview schedule snapshot this application was created from (UUID).

requestedInstallmentsinteger required

Number of installments requested.

requestedInterestRatestring required

Requested monthly interest rate as a decimal string, scale 8 (e.g. "0.00000100").

requestedPrincipalAmountstring required

Requested principal amount as a decimal string, minor-unit precision scale 2 (e.g. "50000.00").

statusstring required

Lifecycle status: one of pending_approval, approved, rejected, withdrawn, disbursed.

Example response

{
  "approvalDecision": {
    "approvedAmount": "48000.00",
    "decisionAt": "2026-06-14T12:00:00Z",
    "id": "9f1c2d3e-4b5a-6789-abcd-ef0123456789"
  },
  "disbursementEvent": {
    "disbursedAt": "2026-06-14T12:00:00Z",
    "grossRequestedAmount": "50000.00",
    "id": "c3d4e5f6-a7b8-4901-acde-f01234567890",
    "loanAccountId": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
    "netDeliveredAmount": "49500.00",
    "profileVersion": "1.0.0"
  },
  "expectedDisbursementDate": "2026-06-14T12:00:00Z",
  "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "loanProductVersionId": "550e8400-e29b-41d4-a716-446655440000",
  "previewJurisdictionCode": "BR",
  "previewProfileVersion": "1.0.0",
  "previewScheduleSnapshotId": "6ba7b810-9dad-11d1-80b4-00c04fd430c8",
  "rejectionDecision": {
    "decisionAt": "2026-06-14T12:00:00Z",
    "id": "b2c3d4e5-f6a7-4890-9bcd-ef0123456789"
  },
  "requestedInstallments": 24,
  "requestedInterestRate": "0.00000100",
  "requestedPrincipalAmount": "50000.00",
  "status": "pending_approval",
  "withdrawalDecision": {
    "decisionAt": "2026-06-14T12:00:00Z",
    "id": "b2c3d4e5-f6a7-4890-9bcd-ef0123456789"
  }
}