Promise To Pay Event

Whenever a resident's promise to pay is created, decided, fulfilled, or cancelled in EliseAI, we will post the event to your registered webhook. A promise to pay is a resident's commitment to pay a given amount within a given window. Use these events to keep an external system in sync with collections activity EliseAI drives.

Webhooks can be registered at the organization level or the property level. Please reach out to the EliseAI support team to register your webhooks.

Event Types:

  • promise_to_pay.created: Posted whenever a resident makes a new promise to pay
  • promise_to_pay.accepted: Posted whenever EliseAI accepts the promise
  • promise_to_pay.rejected: Posted whenever EliseAI rejects the promise (for example when it falls past the escalation date, or partial payments are not allowed)
  • promise_to_pay.fulfilled: Posted whenever payment fulfilling the promise is received
  • promise_to_pay.cancelled: Posted whenever the promise is closed without being fulfilled (cancelled, edited, merged, or denied by an operator)

Each delivery includes an X-Signature header: an HMAC SHA-256 hex digest of the JSON request body, signed with your registered webhook secret.

elise_property_id is the property_id used by the Leases API, and external_lease_id identifies the lease the promise belongs to: for AIP properties where EliseAI is the system of record it matches the lease id returned by GET /v2/leases/properties/{property_id}/leases; for PMS-synced leases it is the external/PMS lease id. resident_uuid matches the resident UUID returned by the Residents API.

Promise to pay events will include:

  • event_id: Unique identifier for the event. Use this for idempotency/deduplication.
  • event_type: The type of event that occurred. One of promise_to_pay.created, promise_to_pay.accepted, promise_to_pay.rejected, promise_to_pay.fulfilled, or promise_to_pay.cancelled.
  • event_date: Date and time of the event
  • elise_property_id: Elise identifier for the property
  • external_lease_id: Lease identifier the promise belongs to
  • external_account_id: External account identifier associated with the lease, when one exists
  • resident_uuid: Resident UUID from the residents API for the resident who made the promise
  • amount_promised: Amount the resident promised to pay
  • to_pay_by_start: Start of the window the resident promised to pay within
  • to_pay_by_end: End of the window the resident promised to pay within
  • promise_accepted: Whether EliseAI accepted the promise. False while the promise is rejected or awaiting an operator decision.
  • date_fulfilled: Date the promise was fulfilled by payment, if it has been fulfilled
  • cancellation_reason: Why the promise was closed without being fulfilled. Possible values: merged, edited, new_promise_made_while_active, canceled_through_crm, rejected, handoff, denied_by_operator, resident_payment, dismissed_by_operator, other.
  • payment_plan_id: Identifier of the payment plan this promise is an installment of. Null for a standalone promise to pay.
postWebhookpromise_to_pay_event

Payload

event_idstring required

Unique identifier for this webhook event. Use for idempotency and deduplication.

event_typestring required

Webhook event type. One of promise_to_pay.created, promise_to_pay.accepted, promise_to_pay.rejected, promise_to_pay.fulfilled, promise_to_pay.cancelled.

event_datestring date-time required

When EliseAI generated the event.

elise_property_idstring required

Elise property identifier. This is the property_id used by the Leases API.

external_lease_idstring required

Lease identifier the promise belongs to. For AIP leases this is the Elise lease id returned as id by GET /v2/leases/properties/{property_id}/leases; for PMS-synced leases this is the external/PMS lease id.

external_account_idstring

External account identifier associated with the lease, when one exists.

resident_uuidstring

Resident UUID of the resident who made the promise, as returned by the Residents API.

amount_promisednumber required

Amount the resident promised to pay, in the property's currency.

to_pay_by_startstring date-time required

Start of the window the resident promised to pay within.

to_pay_by_endstring date-time required

End of the window the resident promised to pay within.

promise_acceptedboolean

Whether EliseAI accepted the promise. False while a promise is rejected or awaiting an operator decision.

date_fulfilledstring date

Date the promise was fulfilled by payment, when it has been fulfilled.

cancellation_reasonstring

Why the promise was closed without being fulfilled. Possible values: merged, edited, new_promise_made_while_active, canceled_through_crm, rejected, handoff, denied_by_operator, resident_payment, dismissed_by_operator, other.

payment_plan_idinteger

Identifier of the payment plan this promise is an installment of. Null for a standalone promise to pay.

Example payload

{
  "event_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "event_type": "promise_to_pay.created",
  "event_date": "2026-06-30T12:00:00Z",
  "elise_property_id": "12345",
  "external_lease_id": "550e8400-e29b-41d4-a716-446655440000",
  "external_account_id": "A-1001",
  "resident_uuid": "7f1f0f6c-4c1a-4f4e-9a2e-9f4bbf6f1a11",
  "amount_promised": 750.25,
  "to_pay_by_start": "2026-07-01T00:00:00Z",
  "to_pay_by_end": "2026-07-05T23:59:59Z",
  "promise_accepted": true,
  "date_fulfilled": "2026-07-03",
  "cancellation_reason": "canceled_through_crm",
  "payment_plan_id": 98765
}

Response

Successful Response

unknown required

Changes

Webhooks have no change history: a webhook is keyed by its event name rather than a path and method, so no recorded change can name it.