Seal the package
POST
/v1/loans/{ref}/seal
const url = 'http://localhost:8080/v1/loans/example/seal';const options = { method: 'POST', headers: {'Content-Type': 'application/json'}, body: '{"note":"example"}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url http://localhost:8080/v1/loans/example/seal \ --header 'Content-Type: application/json' \ --data '{ "note": "example" }'Verifies the chain, appends the terminal sealed event and moves the loan to sealed; the package is read-only from then on and counts as a closed loan for metering. Optional body { note }. Requires a signed-in admin or manager. 404 for an unknown loan, 409 unless the loan is boarded or funded, 422 when the evidence chain does not verify.
Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”ref
required
string
Request Body
Section titled “Request Body”Responses
Section titled “Responses”OK
Media typeapplication/json
object
id
required
string format: uuid
externalRef
required
string
packageVersion
required
integer | string format: int32
borrowerName
required
string
expectedPrincipal
required
null | string
state
required
string
hasExceptions
required
boolean
assigneeId
required
null | string format: uuid
createdBy
required
null | string format: uuid
createdAt
required
string format: date-time
updatedAt
required
string format: date-time
Examplegenerated
{ "id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "externalRef": "example", "packageVersion": 1, "borrowerName": "example", "expectedPrincipal": "example", "state": "example", "hasExceptions": true, "assigneeId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "createdBy": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "createdAt": "2026-04-15T12:00:00Z", "updatedAt": "2026-04-15T12:00:00Z"}