# rent_payment.overdue

> El evento rent_payment.overdue (Cuota en mora) de ByDomu: cuándo se emite, cómo suscribirse, sus campos y el payload que llega por webhook.


Cuota en mora

Objeto · rent_payment Incluye · contact Incluye · property Programado

## Cuándo se emite

Una cuota pasó su fecha sin pagarse del todo. Sale una vez al día mientras siga en mora.

Lo emite un barrido programado de ByDomu, no una acción de alguien: `actor.kind` dice quién fue: USER, NOA, SYSTEM, API, AUTOMATION o INTEGRATION.

## Suscríbete con

- `rent_payment.overdue` Solo este evento
- `rent_payment.*` Todos los de Cuota de arriendo
- `*` Todo el catálogo

## Campos que trae

rutas para filtrar y plantillas

`rentPayment.id` Identificador de la cuota

`rentPayment.period` Periodo

`rentPayment.status` Estado de la cuota

`rentPayment.totalAmount` Valor total

`rentPayment.paidAmount` Valor pagado

`rentPayment.currency` Moneda

`rentPayment.dueDate` Fecha de pago

`rentPayment.daysOverdue` Días de mora

`rentPayment.leaseId` Contrato

`rentPayment.tenantId` Arrendatario

`rentPayment.propertyId` Inmueble

`contact.id` Identificador del contacto

`contact.code` Código del contacto

`contact.firstName` Nombre

`contact.lastName` Apellido

`contact.email` Correo

`contact.phone` Teléfono

`contact.source` Origen

`contact.status` Estado

`contact.type` Tipo de contacto

`contact.score` Puntaje

`contact.ownerId` Responsable

`contact.preferredCity` Ciudad de interés

`contact.preferredType` Tipo de inmueble que busca

`contact.budget` Presupuesto

`contact.tags` Etiquetas

`property.id` Identificador del inmueble

`property.code` Código del inmueble

`property.title` Título del inmueble

`property.type` Tipo de inmueble

`property.transactionType` Operación

`property.status` Estado del inmueble

`property.price` Precio de venta

`property.rentPrice` Canon de arriendo

`property.currency` Moneda

`property.city` Ciudad

`property.neighborhood` Barrio

`property.bedrooms` Habitaciones

`property.bathrooms` Baños

`property.area` Área

`property.agentId` Asesor

`property.previousPrice` Precio anterior

`property.previousStatus` Estado anterior

Hasta 5 intentos (0 s, 5 s, 30 s, 2 min y 10 min) ante error de red, 429 o 5xx. Responde 2xx en menos de 10 s.

Payload:

```
{
  "event": "rent_payment.overdue",
  "id": "5f3a0c1e-7d2b-4f7e-9a51-0b6c1d2e3f40",
  "type": "rent_payment.overdue",
  "timestamp": "2026-09-22T14:30:00.000Z",
  "organizationId": "clx1org001",
  "actor": {
    "kind": "SYSTEM",
    "userId": null
  },
  "data": {
    "rentPayment": {
      "id": "clx1rpy002",
      "period": "2026-10",
      "status": "OVERDUE",
      "totalAmount": 3580000,
      "paidAmount": null,
      "currency": "COP",
      "dueDate": "2026-10-05T00:00:00.000Z",
      "paidAt": null,
      "daysOverdue": 3,
      "leaseId": "clx1lea001",
      "tenantId": "clx1con002",
      "propertyId": "clx1prop002"
    },
    "lease": {
      "id": "clx1lea001",
      "code": "A-0007",
      "status": "ACTIVE",
      "startDate": "2025-11-01T00:00:00.000Z",
      "endDate": "2026-10-31T00:00:00.000Z",
      "daysToEnd": 23,
      "monthlyRent": 3200000,
      "adminFee": 380000,
      "currency": "COP",
      "paymentDayOfMonth": 5,
      "propertyId": "clx1prop002",
      "tenantId": "clx1con002",
      "ownerId": "clx1con003",
      "managerId": "clx1usr001",
      "createdAt": "2025-10-28T19:00:00.000Z"
    },
    "contact": {
      "id": "clx1con002",
      "code": "C-0043",
      "firstName": "Camilo",
      "lastName": "Duarte",
      "fullName": "Camilo Duarte",
      "email": "camilo.duarte@example.com",
      "phone": "+573000000002",
      "source": "REFERRAL",
      "status": "WON",
      "type": "CLIENT",
      "score": 90,
      "ownerId": "clx1usr001",
      "preferredCity": "Medellín",
      "preferredType": "APARTMENT",
      "budget": 3200000,
      "currency": "COP",
      "tags": [
        "Arrendatario"
      ],
      "createdAt": "2025-11-02T13:00:00.000Z"
    },
    "property": {
      "id": "clx1prop002",
      "code": "P-0057",
      "title": "Apartamento en El Poblado cerca a la estación",
      "type": "APARTMENT",
      "transactionType": "RENT",
      "status": "RENTED",
      "price": null,
      "rentPrice": 3200000,
      "currency": "COP",
      "city": "Medellín",
      "neighborhood": "El Poblado",
      "address": "Cl 10 #43-20",
      "bedrooms": 2,
      "bathrooms": 2,
      "area": 68,
      "agentId": "clx1usr001",
      "createdAt": "2025-10-20T14:00:00.000Z"
    },
    "daysOverdue": 3
  }
}
```

Encabezados:

```
X-Domu-Event: rent_payment.overdue
X-Domu-Signature: t=1790610130,v1=9c1e…
User-Agent: Domu-Webhooks/2
```

Verificar firma:

```
import { createHmac, timingSafeEqual } from "node:crypto";

// header = X-Domu-Signature: t=<timestamp>,v1=<hmac>
function verifyWebhook(rawBody, header, secret, toleranceSec = 300) {
  const parts = Object.fromEntries(header.split(",").map((p) => p.split("=")));
  const timestamp = Number(parts.t);
  if (!timestamp || !parts.v1) return false;
  if (Math.abs(Date.now() / 1000 - timestamp) > toleranceSec) return false;
  const expected = createHmac("sha256", secret)
    .update(`${timestamp}.${rawBody}`)
    .digest("hex");
  const a = Buffer.from(expected);
  const b = Buffer.from(parts.v1);
  return a.length === b.length && timingSafeEqual(a, b);
}
```

**Pídelo con tus datos de prueba** GET /v1/webhooks/sample/rent_payment.overdue

[Probar](https://developers.bydomu.com/referencia/get-webhook-sample?probar=1&type=rent_payment.overdue)
