> For the complete documentation index, see [llms.txt](https://docs.moderncollections.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.moderncollections.io/webhooks/events/payment.commitment_made.md).

# payment.commitment\_made

Fired when a debtor agrees on a call to pay (immediately or on a future date) or commits to a payment plan. This is distinct from `payment.received` — a commitment is a promise to pay, not confirmation that funds have arrived.

## When this fires

* A voice call's classified outcome is `payment_agreed` or `plan_agreed`, and a `PaymentCommitment` row is created off the back of the call.

## Payload

```json
{
  "event": "payment.commitment_made",
  "timestamp": "2026-05-12T18:00:00+00:00",
  "placement_id": "550e8400-e29b-41d4-a716-446655440000",
  "commitment_id": "990e8400-e29b-41d4-a716-446655440000",
  "type": "full_payment",
  "amount": "7500.00",
  "expected_date": "2026-05-19"
}
```

## Fields

| Field           | Type              | Notes                                                                                                                                               |
| --------------- | ----------------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `event`         | string            | Always `"payment.commitment_made"`.                                                                                                                 |
| `timestamp`     | string (ISO-8601) | When the event was constructed.                                                                                                                     |
| `placement_id`  | string (UUID)     | The placement the commitment is against.                                                                                                            |
| `commitment_id` | string (UUID)     | The `PaymentCommitment` row id.                                                                                                                     |
| `type`          | string            | Commitment type: `full_payment` (outcome `payment_agreed`), `payment_plan` (outcome `plan_agreed` with plan details), or `partial` (anything else). |
| `amount`        | string            | Amount as a decimal string (NOT a number) for cross-currency precision. Parse to `Decimal` / `BigDecimal` on your side.                             |
| `expected_date` | string \| null    | ISO-8601 date the debtor said they would pay (or first installment date for a plan). May be null.                                                   |

## What integrators typically do on this event

* Surface the commitment in their AR system as a pending receivable with the expected date.
* Suppress their own dunning until either the commitment is honoured or it lapses.

## Detecting actual payments

A commitment is a promise, not money. There is no webhook for funds arriving. To detect payment receipts, key off either:

* [`placement.status_changed`](/webhooks/events/placement.status_changed.md) with `new_status: paid` (fires for recorded out-of-band full payments only), or
* polling the placement REST endpoint for `recovered_amount` increases, or the remittance ledger (`GET /v1/creditors/me/remittances`) — the reliable way to see portal card payments, which emit no webhook today.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.moderncollections.io/webhooks/events/payment.commitment_made.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
