Record a promise-to-pay
Turn Maya's two-part commitment into a guardrail-checked promise, then watch event-driven evaluation settle it from posted payment facts — kept, partial, or broken.
Read fresh case context
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. The case read includes context freshness — refresh stale core facts before offering terms.
Create the commitment schedule
No money movementcurl -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.
Read the evaluated outcome
Posted facts onlyThere is nothing to trigger. 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.