Skip to main content
Un contacto (Contact) representa al deudor: la persona o entidad a quien le cobras. Centraliza sus datos (nombre, email, teléfonos) para que puedas reutilizarlo en cobros futuros sin repetir la información. Cuándo crearlo explícitamente: cuando quieres mantener un padrón de deudores o reutilizar al mismo en varios cobros. Si solo cobras una vez, alcanza con crearlo en línea al crear la deuda.

Llave natural: externalClientId

El externalClientId es la llave natural del contacto y es única por organización. Es el valor con el que referencias al deudor en deudas y suscripciones. El contactId (con prefijo con_) es el identificador que asigna TapiPay.

Crear un contacto

externalClientId, name y email son obligatorios.
Crear un contacto con un externalClientId que ya existe devuelve 409 RESOURCE_CONFLICT. Los campos no declarados en el body se ignoran.

Teléfonos

Cada teléfono tiene number y type obligatorios, y primary y description opcionales. Si no envías description, toma el valor de type (por ejemplo, "MOBILE"). El type debe ser uno de: MAIN, MOBILE, WORK, RELATIVE, OTHER. Un type fuera de esa lista devuelve 400 INVALID_REQUEST.

Usar el contacto en un cobro

En una deuda o suscripción identificas al deudor de una de estas dos formas (exactamente una):

Por referencia

Envías externalClientId de un contacto existente. Si no existe, devuelve 422 BUSINESS_RULE_VIOLATION.

En línea

Envías contactData con los datos completos. Si el externalClientId no existe, se crea; si ya existe, se actualiza.
En la respuesta del cobro, el contacto viene embebido con tres campos:
createdInline es true si el contacto se creó en esa petición, y false si ya existía (se reutilizó o se actualizó).

Buscar contactos

GET /contacts acepta estos filtros, combinables entre sí: La paginación usa page (default 1) y limit (default 50, máximo 500). Ver Convenciones de la API.

Actualizar

PATCH /contacts/{id} actualiza name, email o phones. Reglas:
  • Envía al menos uno de name, email o phones: un body vacío devuelve 400 INVALID_REQUEST.
  • El externalClientId no es modificable: enviarlo, o cualquier otro campo no listado, devuelve 400.
  • El email no se puede borrar: "email": null devuelve 400.
  • phones reemplaza la lista completa. Una lista vacía ("phones": []) devuelve 400; si quieres conservar los teléfonos actuales, omite el campo.
  • El companyCode del body se toma como contexto de la company, no como un campo a modificar.
El contacto no tiene metadata ni operación de borrado (DELETE) en v1. Gestiona su ciclo de vida con PATCH.

Errores

Además de los errores de validación (400) y de autenticación (ver Autenticación), los endpoints de contactos pueden responder:

Endpoints

Pruébalo en el API Reference

Explora cada endpoint con su playground interactivo.