Upnify Documentación API
CRM · /analitica/relaciones-financieras

Analítica

Relaciones financieras

GET/analitica/relaciones-financieras

Una fila por enlace existente entre ventas, cobros, facturas, aplicaciones, CXC y bancos. Exige CRM y venta autorizada; las fuentes ERP requieren habilitación de empresa y permiso ERP del usuario. Todas las razones sociales y cuentas bancarias de la empresa tienen el mismo alcance. PF no se usa como permiso de lectura.

Parámetros

NombreTipoValidaciónDescripción
paramsvarchar
paginavarcharRequeridoEntero entre 1 y 2147483647. Página de resultados; no admite descarga ilimitada.
cantidadRegistrosvarcharRequeridoEntero de 1 a 200. Cantidad máxima de filas de la página.
tkContactosvarcharHasta 100 tokens separados por coma, máximo 128 caracteres cada uno y 8192 en total. Los duplicados no multiplican resultados.
fechaIniciovarcharInicio incluido, ISO 8601 con offset; requiere fechaFin. Se requiere un intervalo de hasta 366 días o tkContactos.
fechaFinvarcharFin excluido, ISO 8601 con offset, posterior al inicio y hasta 366 días después. Requiere fechaInicio.
fechaBasevarcharRequeridorelacion. Excluye vínculos sin instante acreditado cuando se solicita un intervalo.
ordenvarcharRequeridoascendente o descendente por creación, con desempate estable por identidad.
tkOportunidadvarcharToken de oportunidad concreta autorizada; inexistente o sin permiso devuelve 404.
tkVentavarcharToken de venta concreta autorizada; inexistente o sin permiso devuelve 404.
fuentevarcharRequeridotodas, cobros, facturacion, cuentasPorCobrar o bancos.
tipoRelacionvarcharventaCobro, ventaFactura, facturaCobro, ventaCuentaPorCobrar, facturaCuentaPorCobrar, movimientoCuentaPorCobrar, movimientoFactura, facturaRelacionada, aplicacionFactura, facturaSatCuentaPorCobrar o facturaSatFactura.
permitirParcialesvarcharRequeridotrue o false. Con fuente=todas permite omitir ERP no habilitado en la empresa. No omite falta de permiso individual (403).

Respuesta

NombreTipoDescripción
idRelacionStringIdentidad estable del enlace. En vínculos bancarios sin clave propia identifica el par de entidades y colapsa pares repetidos indistinguibles.
fuenteStringtodas, cobros, facturacion, cuentasPorCobrar o bancos.
idRegistroFuenteStringIdentidad opaca del registro fuente.
tipoRelacionStringventaCobro, ventaFactura, facturaCobro, ventaCuentaPorCobrar, facturaCuentaPorCobrar, movimientoCuentaPorCobrar, movimientoFactura, facturaRelacionada, aplicacionFactura, facturaSatCuentaPorCobrar o facturaSatFactura.
origenObjectEntidad de origen: tipo, tk, idRegistroFuente, importe, moneda y estadoFuente. importe describe la entidad completa; no es el monto del enlace. Movimiento bancario usa abono menos cargo. Un complemento sin token público conserva tk=null.
destinoObjectEntidad destino con el mismo contrato que origen. No sumar sus importes por número de vínculos.
ventasRelacionadasArray<Object>Ventas autorizadas asociadas, con tkVenta, tkOportunidad y tkProspecto, sin importes duplicados.
importeAplicadoNumberMonto demostrado de la aplicación: cobro pagado vinculado a su venta o importe propio del documento de pago. null para enlaces sin monto asignado. Una cancelación conserva el importe fuente y su estado; no es ingreso vigente implícito.
monedaAplicacionStringMoneda del importe aplicado; null cuando no hay importe acreditado. En documentos de pago corresponde a la factura receptora.
parcialidadIntegerNúmero de parcialidad guardado; null si el enlace no lo conserva.
fechaRelacionStringInstante acreditado del vínculo/aplicación. null para vínculos sin fecha y movimientos con sólo día.
fechaOriginalStringFecha original del evento, incluso cuando no se puede convertir; puede ser null.
baseTemporalStringHecho de la fecha original: registroVinculo, fechaAplicacion, sinFechaVinculo, fechaMovimientoSinHora o desconocido.
coberturaObjectEstado, fuentes consultadas, capacidadesFaltantes e integridadHistorica.
advertenciasArray<Object>Lista de objetos con codigo, mensaje y fuente que explican límites de cobertura.
consistenciaStringSiempre sinInstantanea; los cambios concurrentes pueden alterar la navegación.
fechaGeneracionStringInstante de generación de la respuesta, con zona explícita.
Row-CountIntegerTotal del conjunto autorizado y filtrado, antes de paginar.

Solicitud

Relaciones financieras de un contacto

curl --request GET --url 'https://api.upnify.com/v4/analitica/relaciones-financieras?tkContactos=P-EJEMPLO&cantidadRegistros=3' --header 'token: 00000000-0000-4000-8000-000000000001'

Respuesta

HTTP 200; Row-Count: 13

JSON
[
  [
    {
      "idRelacion": "registro:20",
      "fuente": "facturacion",
      "idRegistroFuente": "registro:20",
      "tipoRelacion": "aplicacionFactura",
      "origen": {
        "tipo": "complementoPago",
        "tk": null,
        "idRegistroFuente": "registro:21",
        "importe": 150,
        "moneda": "MXN",
        "estadoFuente": {
          "estado": 2
        }
      },
      "destino": {
        "tipo": "factura",
        "tk": "TK-EJEMPLO-22",
        "idRegistroFuente": "registro:23",
        "importe": 300,
        "moneda": "MXN",
        "estadoFuente": {
          "estado": 1,
          "tipoComprobante": "I",
          "pagado": 0.5
        }
      },
      "ventasRelacionadas": [
        {
          "tkVenta": "TK-EJEMPLO-12",
          "tkOportunidad": "TK-EJEMPLO-8",
          "tkProspecto": "TK-EJEMPLO-2"
        }
      ],
      "importeAplicado": 150,
      "monedaAplicacion": "MXN",
      "parcialidad": 2,
      "fechaRelacion": "2026-09-13T16:00:00Z",
      "fechaOriginal": "2026-09-13T10:00:00",
      "baseTemporal": "fechaAplicacion"
    },
    {
      "idRelacion": "registro:24",
      "fuente": "facturacion",
      "idRegistroFuente": "registro:24",
      "tipoRelacion": "ventaFactura",
      "origen": {
        "tipo": "venta",
        "tk": "TK-EJEMPLO-12",
        "idRegistroFuente": "registro:13",
        "importe": 300,
        "moneda": "MXN",
        "estadoFuente": null
      },
      "destino": {
        "tipo": "factura",
        "tk": "TK-EJEMPLO-25",
        "idRegistroFuente": "registro:26",
        "importe": 300,
        "moneda": "MXN",
        "estadoFuente": {
          "estado": 2,
          "tipoComprobante": "I",
          "pagado": 0
        }
      },
      "ventasRelacionadas": [
        {
          "tkVenta": "TK-EJEMPLO-12",
          "tkOportunidad": "TK-EJEMPLO-8",
          "tkProspecto": "TK-EJEMPLO-2"
        }
      ],
      "importeAplicado": null,
      "monedaAplicacion": null,
      "parcialidad": null,
      "fechaRelacion": "2026-09-12T19:00:00Z",
      "fechaOriginal": "2026-09-12T13:00:00",
      "baseTemporal": "registroVinculo"
    },
    {
      "idRelacion": "registro:27",
      "fuente": "facturacion",
      "idRegistroFuente": "registro:27",
      "tipoRelacion": "ventaFactura",
      "origen": {
        "tipo": "venta",
        "tk": "TK-EJEMPLO-12",
        "idRegistroFuente": "registro:13",
        "importe": 300,
        "moneda": "MXN",
        "estadoFuente": null
      },
      "destino": {
        "tipo": "factura",
        "tk": "TK-EJEMPLO-22",
        "idRegistroFuente": "registro:23",
        "importe": 300,
        "moneda": "MXN",
        "estadoFuente": {
          "estado": 1,
          "tipoComprobante": "I",
          "pagado": 0.5
        }
      },
      "ventasRelacionadas": [
        {
          "tkVenta": "TK-EJEMPLO-12",
          "tkOportunidad": "TK-EJEMPLO-8",
          "tkProspecto": "TK-EJEMPLO-2"
        }
      ],
      "importeAplicado": null,
      "monedaAplicacion": null,
      "parcialidad": null,
      "fechaRelacion": "2026-09-12T18:00:00Z",
      "fechaOriginal": "2026-09-12T12:00:00",
      "baseTemporal": "registroVinculo"
    }
  ],
  [
    {
      "cobertura": {
        "estado": "parcial",
        "fuentes": [
          "cobros",
          "facturacion",
          "cuentasPorCobrar",
          "bancos"
        ],
        "capacidadesFaltantes": [
          "importesDeEnlacesSinAplicacion",
          "instanteVinculosSinFecha",
          "horaMovimientosBancarios",
          "identidadIndividualEnlacesBancariosDuplicados",
          "historialEliminaciones"
        ],
        "integridadHistorica": "desconocida"
      },
      "advertencias": [
        {
          "codigo": "GRANOS_FINANCIEROS",
          "mensaje": "Los importes de origen y destino describen entidades, no aplicaciones acumulables. Solo pagos realizados ligados a su venta y aplicaciones documentadas tienen importeAplicado.",
          "fuente": "finanzas"
        },
        {
          "codigo": "FECHAS_PARCIALES",
          "mensaje": "Un vencimiento no es la fecha del vinculo. Enlaces sin fecha y movimientos con solo dia quedan fuera de filtros de instantes.",
          "fuente": "finanzas"
        }
      ],
      "consistencia": "sinInstantanea",
      "fechaGeneracion": "2026-09-21T18:00:00Z"
    }
  ]
]