Customers
El objeto Customer
{ "id": "cust_qrs456tuv789", "external_id": "user_42", "last_seen_at": "2026-05-02T14:32:11+00:00", "last_seen_source": "payment", "last_seen_provider": "dinelco", "last_seen_name": "Juan", "last_seen_lastname": "Pérez", "last_seen_email": "juan@example.com", "last_seen_phone": "+595981234567", "last_seen_ruc": null, "created_at": "2026-04-15T10:00:00+00:00"}Campos
| Campo | Tipo | Notas |
|---|---|---|
id | string | cust_xxx. Es el public_id que mandamos a proveedores. |
external_id | string | El que vos pasaste como customer.customerId. |
last_seen_at | datetime? | Cuándo lo vimos por última vez en cualquier interacción. |
last_seen_source | enum? | payment | card_registration | card_charge. |
last_seen_provider | enum? | dinelco | bancard | transferencia. |
last_seen_* | string? | Último valor visto de cada campo (name, email, phone, ruc). |
created_at | datetime | Cuándo se creó (auto-create en el primer pago/card). |
Endpoints
Listar customers
GET /v1/customersQuery params:
| Param | Notas |
|---|---|
external_id | Filtro exacto por external_id. |
cursor, per_page | Paginación. |
Obtener un customer
GET /v1/customers/{id}{id} es el public_id (cust_xxx).
Cómo se actualizan los last_seen_*
Cada vez que pasás customer.customerId en POST /v1/payments o POST /v1/cards:
- Si el customer no existe, lo creamos con los campos que mandaste.
- Si existe, actualizamos los
last_seen_*siguiendo la regla lo último gana, no pisa con null:- Si tu request manda
name, lo actualizamos. - Si tu request no manda
name, dejamos el viejo intacto (no lo borramos con null).
- Si tu request manda
Esto te permite mandar payloads parciales (ej. solo customerId + email) sin perder datos viejos.
Lo que NO existe
| Endpoint | Por qué |
|---|---|
POST /v1/customers | Auto-create implícito. No querés un endpoint de creación explícito. |
PATCH /v1/customers/{id} | El customer es read-only desde la API. Si querés actualizar, hacelo en tu próximo POST /v1/payments con los nuevos datos. |
DELETE /v1/customers/{id} | No lo soportamos para mantener integridad referencial con pagos históricos. Si necesitás “borrar” un customer, dejá de mandarlo en pagos nuevos. |