Documéntalo
Planifícalo

Cobros

Registrar y gestionar cobros de ventas en Coordinalo

Cobros

Los cobros representan los pagos recibidos de clientes por las ventas de servicios. Coordinalo soporta múltiples métodos de pago incluyendo integración con MercadoPago.

Modelo de datos

interface Cobro {
  id: string;
  ventaId: string;
  amount: number;
  paymentMethod: 'efectivo' | 'transferencia' | 'mercadopago' | 'tarjeta';
  status: 'pendiente' | 'aprobado' | 'rechazado';
  mercadopagoId?: string;
  reference?: string;
  paidAt?: string;
  createdAt: string;
  updatedAt: string;
}

Estados de cobro

EstadoCódigoDescripción
PendientependienteCobro registrado, esperando confirmación
AprobadoaprobadoPago confirmado y acreditado
RechazadorechazadoPago rechazado o fallido

Listar cobros

GET /api/v1/cobros

Parámetros de query

ParámetroTipoDescripción
fromstringFecha inicio (ISO 8601)
tostringFecha fin (ISO 8601)
ventaIdstringFiltrar por venta
clientIdstringFiltrar por cliente
statusstringEstado: pendiente, aprobado, rechazado
paymentMethodstringMétodo de pago
pagenumberPágina (default: 1)
limitnumberResultados por página (default: 20)

Ejemplo de respuesta

{
  "data": [
    {
      "id": "cob_abc123",
      "ventaId": "sale_xyz789",
      "amount": 100000,
      "paymentMethod": "mercadopago",
      "status": "aprobado",
      "mercadopagoId": "mp_12345678",
      "paidAt": "2026-01-15T14:30:00Z",
      "createdAt": "2026-01-15T14:25:00Z",
      "venta": {
        "id": "sale_xyz789",
        "totalPrice": 200000
      },
      "client": {
        "id": "cli_789ghi",
        "name": "Juan Pérez"
      }
    }
  ],
  "pagination": {
    "total": 89,
    "page": 1,
    "limit": 20,
    "totalPages": 5
  }
}

Registrar cobro

POST /api/v1/cobros

Body

{
  "ventaId": "sale_xyz789",
  "amount": 100000,
  "paymentMethod": "transferencia",
  "reference": "Transferencia Banco Estado #12345"
}

Respuesta exitosa (201)

{
  "id": "cob_new456",
  "ventaId": "sale_xyz789",
  "amount": 100000,
  "paymentMethod": "transferencia",
  "status": "pendiente",
  "reference": "Transferencia Banco Estado #12345",
  "createdAt": "2026-01-20T10:00:00Z"
}

Los cobros manuales (efectivo, transferencia) se crean en estado pendiente. Use el endpoint de aprobación para confirmarlos.

Obtener detalle de cobro

GET /api/v1/cobros/:id

Respuesta

{
  "id": "cob_abc123",
  "ventaId": "sale_xyz789",
  "amount": 100000,
  "paymentMethod": "mercadopago",
  "status": "aprobado",
  "mercadopagoId": "mp_12345678",
  "reference": null,
  "paidAt": "2026-01-15T14:30:00Z",
  "createdAt": "2026-01-15T14:25:00Z",
  "updatedAt": "2026-01-15T14:30:00Z",
  "venta": {
    "id": "sale_xyz789",
    "clientId": "cli_789ghi",
    "totalPrice": 200000,
    "status": "agendado"
  },
  "client": {
    "id": "cli_789ghi",
    "name": "Juan Pérez",
    "email": "[email protected]"
  },
  "receipt": {
    "id": "rec_abc123",
    "number": "001-00234",
    "url": "https://receipts.coordinalo.com/rec_abc123.pdf"
  }
}

Aprobar cobro

Para cobros manuales (efectivo, transferencia), use este endpoint para confirmar la recepción del pago.

POST /api/v1/cobros/:id/approve

Body (opcional)

{
  "reference": "Comprobante de transferencia adjunto",
  "paidAt": "2026-01-20T09:00:00Z"
}

Respuesta exitosa (200)

{
  "id": "cob_new456",
  "status": "aprobado",
  "paidAt": "2026-01-20T09:00:00Z",
  "updatedAt": "2026-01-20T10:15:00Z"
}

Rechazar cobro

POST /api/v1/cobros/:id/reject

Body

{
  "reason": "Transferencia no encontrada"
}

Respuesta exitosa (200)

{
  "id": "cob_new456",
  "status": "rechazado",
  "rejectedAt": "2026-01-20T10:30:00Z",
  "rejectionReason": "Transferencia no encontrada"
}

Integración con MercadoPago

Los cobros vía MercadoPago se procesan automáticamente a través de webhooks.

Crear preferencia de pago

POST /api/v1/cobros/mercadopago/preference

Body

{
  "ventaId": "sale_xyz789",
  "amount": 100000,
  "description": "Pago parcial - Sesiones de kinesiología"
}

Respuesta

{
  "preferenceId": "pref_12345",
  "initPoint": "https://www.mercadopago.cl/checkout/v1/redirect?pref_id=pref_12345",
  "sandboxInitPoint": "https://sandbox.mercadopago.cl/checkout/v1/redirect?pref_id=pref_12345"
}

Webhook de MercadoPago

Cuando MercadoPago notifica un pago aprobado, Coordinalo:

  1. Crea automáticamente un registro de cobro
  2. Lo marca como aprobado
  3. Actualiza el balance de la venta
  4. Genera el recibo electrónico
{
  "event": "payment.approved",
  "data": {
    "cobroId": "cob_auto123",
    "ventaId": "sale_xyz789",
    "amount": 100000,
    "mercadopagoId": "mp_12345678",
    "approvedAt": "2026-01-15T14:30:00Z"
  }
}

Ver la guía de integración con MercadoPago para configuración detallada.

Recibos

Coordinalo genera recibos automáticamente para cobros aprobados.

Obtener recibo

GET /api/v1/cobros/:id/receipt

Respuesta

{
  "id": "rec_abc123",
  "cobroId": "cob_abc123",
  "number": "001-00234",
  "amount": 100000,
  "issuedAt": "2026-01-15T14:30:00Z",
  "downloadUrl": "https://receipts.coordinalo.com/rec_abc123.pdf",
  "client": {
    "name": "Juan Pérez",
    "email": "[email protected]"
  }
}

Reenviar recibo por email

POST /api/v1/cobros/:id/receipt/send

Body (opcional)

{
  "email": "[email protected]"
}

Resumen de cobros

Por cliente

GET /api/v1/clients/:clientId/cobros/summary
{
  "clientId": "cli_789ghi",
  "totalPaid": 350000,
  "totalPending": 50000,
  "cobrosCount": 4,
  "lastPaymentAt": "2026-01-15T14:30:00Z"
}

Por período

GET /api/v1/cobros/summary?from=2026-01-01&to=2026-01-31
{
  "period": {
    "from": "2026-01-01",
    "to": "2026-01-31"
  },
  "total": 2500000,
  "byMethod": {
    "mercadopago": 1500000,
    "transferencia": 800000,
    "efectivo": 200000
  },
  "cobrosCount": 45
}

Webhooks

EventoDescripción
cobro.createdNuevo cobro registrado
cobro.approvedCobro aprobado/confirmado
cobro.rejectedCobro rechazado

Ejemplo de webhook

{
  "event": "cobro.approved",
  "data": {
    "cobroId": "cob_abc123",
    "ventaId": "sale_xyz789",
    "clientId": "cli_789ghi",
    "amount": 100000,
    "paymentMethod": "mercadopago",
    "approvedAt": "2026-01-15T14:30:00Z"
  },
  "timestamp": "2026-01-15T14:30:01Z"
}

On this page