LendEasy/DocsLMS + Servicing·v1
Start integrating
Recipes›Servicing›Record a promise-to-pay

Record a promise-to-pay

Turn Maya’s two-part commitment into a promise the platform checks against policy, then watch it settle itself from payments as they post — kept, partial, or broken.

Time
~5 min plus due dates
Surface
Servicing Workspace
Steps
3
Gate
Promise guardrail · posted payment facts
EndpointsGET /v1/servicing/cases/{caseId}POST /v1/servicing/cases/{caseId}/promisesGET /v1/servicing/cases/{caseId}/promises

A promise is the borrower telling you when the money will arrive. Recording it as a first-class object rather than a note is what lets the platform stop chasing them in the meantime — and settle the promise from posted payment facts instead of somebody’s memory of the call.

1

Read fresh case context

GET/v1/servicing/cases/1001
curl "$BASE/v1/servicing/cases/1001" \
  -H "Authorization: Bearer $TOKEN" \
  -H "LendEasy-Tenant: demo-lender"

Confirm the case is open, Harbor is still past due, no payment covering the promise is in flight, and no restriction blocks the proposed follow-up policy.

2

Create the commitment schedule

No money movement
POST/v1/servicing/cases/1001/promises
curl -X POST "$BASE/v1/servicing/cases/1001/promises" \
  -H "Authorization: Bearer $TOKEN" \
  -H "LendEasy-Tenant: demo-lender" \
  -H "Idempotency-Key: promise-1001-2027-05-01" \
  -H "Content-Type: application/json" \
  -d '{
    "loanRef": "7204",
    "commitments": [
      { "amount": { "amount": 260.00, "currency": "USD" }, "dueDate": "2027-05-08" },
      { "amount": { "amount": 257.14, "currency": "USD" }, "dueDate": "2027-05-22" }
    ],
    "sourceInteractionId": 3001,
    "borrowerConfirmedAt": "2027-05-01T10:18:42-07:00"
  }'
{
  "promiseId": 5001,
  "caseId": 1001,
  "status": "ACTIVE",
  "guardrailDecision": "WITHIN_POLICY",
  "commitments": [
    { "amount": { "amount": 260.00, "currency": "USD" }, "dueDate": "2027-05-08" },
    { "amount": { "amount": 257.14, "currency": "USD" }, "dueDate": "2027-05-22" }
  ],
  "version": 1
}

An out-of-policy horizon, amount, or installment count returns an explainable approval requirement. It never silently clips the borrower’s terms. Under policy, an active promise can suppress routine collection outreach while it stands.

3

Read the evaluated outcome

Posted facts only
GET/v1/servicing/cases/1001/promises

Evaluation is servicing-owned: authoritative payment events and scheduled jobs run it as facts post. Maya pays $517.14 through the portal on May 6 — covering both commitments early — and the posting event settles the promise:

curl "$BASE/v1/servicing/cases/1001/promises" \
  -H "Authorization: Bearer $TOKEN" \
  -H "LendEasy-Tenant: demo-lender"
{
  "items": [
    {
      "promiseId": 5001,
      "status": "KEPT",
      "qualifyingPaymentRefs": ["9014"],
      "evaluatedAt": "2027-05-06T18:00:04Z",
      "version": 1
    }
  ]
}

Submitted or merely settled payments are not assumed posted — only posted facts qualify. A covering partial records PARTIALLY_KEPT; a missed commitment records BROKEN and can wake a follow-up task. The original promise and every revision remain visible.

i
Promise is not payment. It may suppress outreach according to policy, but it never creates an ACH debit, card charge, ledger posting, or receipt.
Unified search across guides, recipes & the API referenceEsc