API de Consulta Laboral y Financiera
Este documento describe la especificación técnica de la API para consulta de información laboral y financiera. La API proporciona dos módulos independientes:
- Visor Laboral: Consulta de información laboral de las plataformas IMSS e ISSSTE
- Visor Financiero: Consulta de información fiscal y financiera de la plataforma SAT
Endpoint: Create Request
Descripción
Permite crear una nueva solicitud de consulta en el sistema. Este endpoint acepta solicitudes para las plataformas IMSS, ISSSTE y SAT, requiriendo información del cliente y del sistema origen que genera la solicitud.
Procesamiento Asíncrono: Las consultas se procesan de forma asíncrona. Al crear una solicitud, el sistema retorna inmediatamente un
requestIdy el estado"in_progress". El procesamiento de la consulta se ejecuta en segundo plano. Una vez recibida la notificación mediante webhook, debe consultar el estado y resultados de la solicitud utilizando el método GET con elrequestIdproporcionado.
Endpoint Unificado: El endpoint POST es único para ambos módulos (laboral y financiero). La consulta de resultados se realiza mediante endpoints GET específicos según el tipo de plataforma y el tipo de información solicitada.
Método: POST
URL: /api/v1/requests
Headers:
Content-Type: application/json
Authorization: Bearer {token}
Request Body
Estructura
{
"platform": "imss",
"requestType": "external",
"externalId": "SYS-2026-ABC123",
"customer": {
"personType": "individual",
"fullName": "Juan Pérez García",
"businessName": null,
"rfc": "PERG800101HDF",
"curp": "PERG800101HDFRZN01",
"contact": {
"email": "usuario@ejemplo.com",
"phone": "+525512345678"
}
},
"sourceSystem": {
"system": "MiSistema",
"folio": "FOL-2026-001",
"product": "ProductoX"
}
}
Campos del Request
Nivel Raíz
| Campo | Tipo | Requerido | Descripción |
|---|---|---|---|
platform |
string | Sí | Plataforma destino de la solicitud. Valores permitidos: "imss", "issste", "sat" |
requestType |
string | Sí | Tipo de solicitud. Valor fijo: "external" |
externalId |
string | Sí | Identificador externo único proporcionado por el sistema origen para rastrear la solicitud |
customer |
object | Sí | Información del cliente o solicitante |
sourceSystem |
object | Sí | Información del sistema origen que genera la solicitud |
Objeto customer
| Campo | Tipo | Requerido | Descripción |
|---|---|---|---|
personType |
string | Sí | Tipo de persona. Valores permitidos: "individual" (persona física), "organization" (persona moral) |
fullName |
string | Condicional† | Nombre completo de la persona física. Requerido únicamente si personType es "individual" |
businessName |
string | Condicional† | Razón social de la organización. Requerido únicamente si personType es "organization". Ejemplo: "Mi Empresa SA de CV" |
rfc |
string | Condicional‡ | Registro Federal de Contribuyentes (RFC). Ver reglas por plataforma y tipo de persona en las notas |
curp |
string | Condicional§ | Clave Única de Registro de Población (CURP). Ver reglas por plataforma y tipo de persona en las notas |
contact |
object | Sí | Información de contacto del cliente |
Notas sobre campos:
- †
fullNameybusinessNameson mutuamente excluyentes según elpersonType- ‡ RFC:
- Persona física: Opcional para IMSS e ISSSTE, obligatorio para SAT
- Persona moral: Obligatorio para SAT (no aplica para IMSS/ISSSTE)
- § CURP:
- Persona física: Obligatorio para IMSS e ISSSTE, opcional para SAT
- Persona moral: No se requiere para SAT (no aplica para IMSS/ISSSTE)
Restricción de plataforma: Las personas morales (
personType: "organization") únicamente pueden consultar la plataforma SAT. No es posible realizar consultas en IMSS ni ISSSTE para personas morales.
Objeto customer.contact
| Campo | Tipo | Requerido | Descripción |
|---|---|---|---|
email |
string | Sí | Correo electrónico de contacto del cliente |
phone |
string | Sí | Número de teléfono con código de país. Formato requerido: +525512345678 |
Objeto sourceSystem
| Campo | Tipo | Requerido | Descripción |
|---|---|---|---|
system |
string | Sí | Identificador del sistema origen que genera la solicitud |
folio |
string | Sí | Folio único de la solicitud en el sistema origen |
product |
string | Sí | Producto o servicio asociado a la solicitud en el sistema origen |
Response
Respuesta Exitosa (200 OK)
{
"result": {
"status": "in_progress",
"requestId": "123e4567-e89b-12d3-a456-426614174000",
"platform": "imss"
},
"correlationId": "123e4567-e89b-12d3-a456-426614174002"
}
Campos de Respuesta Exitosa
| Campo | Tipo | Descripción |
|---|---|---|
result |
object | Objeto que contiene el resultado de la operación |
result.status |
string | Estado de la solicitud. Valores posibles: "in_progress" (procesamiento asíncrono en curso), "completed", "pending" |
result.requestId |
string (UUID) | Identificador único de la solicitud generado por el sistema. Este identificador debe utilizarse para consultar el estado y resultados mediante el método GET una vez recibida la notificación mediante webhook |
result.platform |
string | Plataforma destino confirmada |
correlationId |
string (UUID) | Identificador de correlación para seguimiento y trazabilidad de la solicitud a través de los sistemas |
El estado
"in_progress"indica que la solicitud fue creada exitosamente y se encuentra en proceso de forma asíncrona. Una vez recibida la notificación mediante webhook, utilice elrequestIdpara consultar el estado y resultados mediante el método GET.
Respuesta de Error (400 Bad Request / 500 Internal Server Error)
{
"result": {
"status": "error",
"error": "Mensaje de error descriptivo",
"platform": "imss"
},
"correlationId": "123e4567-e89b-12d3-a456-426614174003"
}
Campos de Respuesta de Error
| Campo | Tipo | Descripción |
|---|---|---|
result |
object | Objeto que contiene el resultado de la operación |
result.status |
string | Estado de error. Valor: "error" |
result.error |
string | Mensaje descriptivo del error ocurrido |
result.platform |
string | Plataforma destino (si fue posible determinarla) |
correlationId |
string (UUID) | Identificador de correlación para seguimiento del error a través de los sistemas |
Códigos de Estado HTTP
| Código | Descripción |
|---|---|
200 |
Solicitud creada exitosamente |
400 |
Error en la validación de los datos enviados en el cuerpo de la solicitud |
401 |
No autorizado (token de autenticación inválido o faltante) |
500 |
Error interno del servidor |
Visor Laboral
Endpoint: Get Request Status - Laboral
Descripción
Permite consultar el estado y los resultados de una solicitud laboral previamente creada mediante el requestId obtenido en la creación de la solicitud.
La estructura de la respuesta varía según la plataforma consultada (IMSS o ISSSTE). Cada plataforma retorna información específica relacionada con su dominio laboral.
Método: GET
URL: /api/v1/labor/{requestId}
Headers:
Authorization: Bearer {token}
Parámetros de URL
| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
requestId |
string (UUID) | Sí | Identificador único de la solicitud obtenido en la creación |
Response - IMSS
Respuesta Exitosa (200 OK)
La respuesta para consultas IMSS contiene información laboral del participante, incluyendo detalles de empleadores, movimientos históricos y resumen de seguridad social.
Estructura de Respuesta IMSS
{
"date": "2019-01-05T00:00:00",
"quoteStatus": "Empleado",
"participantDetails": [...],
"participantMovements": [...],
"participantSocialSecuritySummary": {...}
}
Campos de Respuesta IMSS
| Campo | Tipo | Descripción |
|---|---|---|
date |
string (ISO 8601) | Fecha de consulta de la información |
quoteStatus |
string | Estado de la cotización del participante. Valores posibles: "Empleado", "Desempleado", entre otros |
participantDetails |
array | Lista de detalles del participante con información de empleadores |
participantMovements |
array | Lista de movimientos históricos del participante (ingresos, bajas, modificaciones salariales) |
participantSocialSecuritySummary |
object | Resumen de semanas de seguridad social del participante |
Objeto participantDetails[]
| Campo | Tipo | Descripción |
|---|---|---|
id |
string (UUID) | Identificador único del registro de empleador |
employeeStatus |
string | Estado del empleado. Valores posibles: "ACTIVO", "BAJA" |
employer |
string | Nombre del empleador |
employerId |
string | Identificador del empleador. Puede estar vacío ("") en algunas respuestas de ISSSTE |
state |
string | Estado de la república mexicana donde está registrado el empleador. Puede estar vacío ("") en algunas respuestas de ISSSTE |
registeredWeeks |
number | Número de semanas registradas con este empleador |
monthlySalary |
number | Salario mensual registrado |
startDate |
string (ISO 8601) | Fecha de inicio de la relación laboral |
endDate |
string (ISO 8601) | null | Fecha de fin de la relación laboral. Valor null si el empleado se encuentra activo |
baseSalary |
number | Salario base diario |
Objeto participantMovements[]
| Campo | Tipo | Descripción |
|---|---|---|
id |
string (UUID) | Identificador único del movimiento |
eventType |
string | Tipo de evento. Para IMSS: "Ingreso", "Baja", "Modificación salarial". Para ISSSTE: "DYE_CERTIFICATE", "NORMAL", "BDUTA_CERTIFICATE" |
eventDate |
string (ISO 8601) | Fecha en la que ocurrió el evento |
baseSalary |
number | Salario base diario al momento del evento |
employer |
string | Nombre del empleador asociado al movimiento |
Objeto participantSocialSecuritySummary
| Campo | Tipo | Descripción |
|---|---|---|
weeksRedeemed |
number | Número de semanas redimidas |
weeksReinstated |
number | Número de semanas reinstaladas |
weeksContributed |
number | Total de semanas cotizadas |
Respuesta de Error (400 Bad Request / 404 Not Found / 500 Internal Server Error)
{
"error": "Mensaje de error descriptivo",
"requestId": "123e4567-e89b-12d3-a456-426614174000"
}
Response - ISSSTE
Respuesta Exitosa (200 OK)
La respuesta para consultas ISSSTE mantiene la misma estructura que IMSS. Incluye información laboral del participante, detalles de empleadores, movimientos históricos y resumen de seguridad social.
Estructura de Respuesta ISSSTE
La estructura de respuesta es idéntica a la de IMSS:
{
"date": "2014-11-16T00:00:00",
"quoteStatus": "Empleado",
"participantDetails": [...],
"participantMovements": [...],
"participantSocialSecuritySummary": {...}
}
Campos de Respuesta ISSSTE
Los campos son los mismos que en IMSS. Ver sección Response - IMSS para la documentación completa de campos.
Diferencias con IMSS
Tipos de eventos en
participantMovements: Los valores deeventTypepueden ser diferentes:"DYE_CERTIFICATE"- Certificado de defunción y estado"NORMAL"- Movimiento normal"BDUTA_CERTIFICATE"- Certificado de baja definitiva y temporal- Nota: En IMSS se utilizan los valores
"Ingreso","Baja","Modificación salarial"
Campos opcionales: Los campos
employerIdystateenparticipantDetailspueden estar vacíos ("") en algunas respuestas de ISSSTE.
Respuesta de Error (400 Bad Request / 404 Not Found / 500 Internal Server Error)
{
"error": "Mensaje de error descriptivo",
"requestId": "123e4567-e89b-12d3-a456-426614174000"
}
Visor Financiero
El Visor Financiero proporciona múltiples endpoints para consultar información fiscal y financiera del SAT. Una vez creada una solicitud mediante el endpoint POST /api/v1/requests con platform: "sat", los resultados pueden consultarse utilizando los siguientes endpoints especializados.
Endpoint: Get Tax Status Information
Descripción
Permite obtener la información del estado fiscal (constancia de situación fiscal) en formato JSON. Retorna los datos estructurados del estado fiscal sin incluir el documento PDF.
Método: GET
URL: /api/v1/financial/status/info/{requestId}
Headers:
Authorization: Bearer {token}
Parámetros de URL
| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
requestId |
string (UUID) | Sí | Identificador único de la solicitud obtenido en la creación |
Respuesta Exitosa (200 OK)
Retorna un objeto TaxStatus con la información del estado fiscal:
Estructura de Respuesta
{
"id": "string",
"createdAt": "string | null",
"idCif": "string",
"address": {...},
"regimes": [...],
"obligations": [...],
"collectedAt": "string | null",
"digitalStamp": "string",
"officialName": "string",
"additionalData": {...},
"economicActivity": [...],
"digitalStampChain": "string",
"legalRepresentatives": {...},
"taxPayerInformation": {...},
"placeAndDateOfIssuance": "string"
}
Objeto TaxStatus
| Campo | Tipo | Descripción |
|---|---|---|
id |
string | Identificador único del registro |
createdAt |
string (ISO 8601) | null | Fecha de creación del registro |
idCif |
string | Identificador CIF (Clave de Identificación Fiscal) |
address |
Address | null | Dirección fiscal del contribuyente |
regimes |
array<Regime> | null | Lista de regímenes fiscales aplicables |
obligations |
array<Obligation> | null | Lista de obligaciones fiscales |
collectedAt |
string (ISO 8601) | null | Fecha de recolección de los datos |
digitalStamp |
string | Sello digital de la constancia |
officialName |
string | Nombre oficial del contribuyente |
additionalData |
object | Datos adicionales relacionados con la constancia |
economicActivity |
array<EconomicActivity> | null | Lista de actividades económicas registradas |
digitalStampChain |
string | Cadena del sello digital para verificación |
legalRepresentatives |
object | Información de representantes legales |
taxPayerInformation |
TaxPayerInformation | null | Información detallada del contribuyente |
placeAndDateOfIssuance |
string | Lugar y fecha de emisión de la constancia |
Objeto Address
| Campo | Tipo | Descripción |
|---|---|---|
state |
string | Estado |
street |
string | Calle |
suburb |
string | Colonia |
locality |
string | Localidad |
stateCode |
string | Código del estado |
postalCode |
string | Código postal |
streetType |
string | Tipo de vía |
fullAddress |
string | Dirección completa |
municipality |
string | Municipio |
betweenStreet |
array<string> | null | Entre calles |
exteriorNumber |
string | Número exterior |
interiorNumber |
string | Número interior |
municipalityCode |
string | Código del municipio |
Objeto Regime
| Campo | Tipo | Descripción |
|---|---|---|
regimen |
string | Código del régimen fiscal |
endDate |
string (ISO 8601) | null | Fecha de fin del régimen |
initialDate |
string (ISO 8601) | null | Fecha de inicio del régimen |
Objeto Obligation
| Campo | Tipo | Descripción |
|---|---|---|
endDate |
string (ISO 8601) | null | Fecha de fin de la obligación |
expiration |
string | Fecha de expiración |
obligationDetail |
string | Detalle de la obligación |
initialDate |
string (ISO 8601) | null | Fecha de inicio de la obligación |
Objeto EconomicActivity
| Campo | Tipo | Descripción |
|---|---|---|
order |
string | Orden de la actividad |
endDate |
string (ISO 8601) | null | Fecha de fin |
percentage |
number | Porcentaje de la actividad |
initialDate |
string (ISO 8601) | null | Fecha de inicio |
economicActivityDetail |
string | Detalle de la actividad económica |
Objeto TaxPayerInformation
| Campo | Tipo | Descripción |
|---|---|---|
rfc |
string | RFC del contribuyente |
curp |
string | CURP |
name |
string | Nombre |
email |
string | Correo electrónico |
phone |
string | Teléfono |
socialName |
string | Razón social |
statusPadron |
string | Estado en el padrón |
commercialName |
string | Nombre comercial |
firstLastName |
string | Primer apellido |
secondLastName |
string | Segundo apellido |
startOperationsDate |
string (ISO 8601) | null | Fecha de inicio de operaciones |
lastStatusChangeDate |
string (ISO 8601) | null | Fecha del último cambio de estado |
Respuesta de Error (400 Bad Request / 404 Not Found / 500 Internal Server Error)
{
"error": "Mensaje de error descriptivo",
"requestId": "123e4567-e89b-12d3-a456-426614174000"
}
Endpoint: Get Tax Status PDF
Descripción
Permite obtener el documento PDF de la constancia de situación fiscal correspondiente a la solicitud.
Método: GET
URL: /api/v1/financial/status/pdf/{requestId}
Headers:
Authorization: Bearer {token}
Parámetros de URL
| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
requestId |
string (UUID) | Sí | Identificador único de la solicitud (mismo que para obtener el JSON) |
Respuesta Exitosa (200 OK)
- Content-Type:
application/pdf - Content-Disposition:
attachment; filename=constancia-situacion-fiscal-{requestId}.pdf - Body: Contenido binario del archivo PDF
Respuesta de Error (400 Bad Request / 404 Not Found / 500 Internal Server Error)
{
"error": "Mensaje de error descriptivo",
"requestId": "123e4567-e89b-12d3-a456-426614174000"
}
Endpoint: Get Compliance Opinion Information
Descripción
Permite obtener la información de la opinión de cumplimiento fiscal en formato JSON. Retorna los datos estructurados de la opinión de cumplimiento sin incluir el documento PDF.
Método: GET
URL: /api/v1/financial/compliance/info/{requestId}
Headers:
Authorization: Bearer {token}
Parámetros de URL
| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
requestId |
string (UUID) | Sí | Identificador único de la solicitud obtenido en la creación |
Respuesta Exitosa (200 OK)
Retorna un objeto TaxCompliance con la información de la opinión de cumplimiento fiscal:
Estructura de Respuesta
{
"id": "string",
"createdAt": "string",
"rfc": "string",
"outcome": "string",
"outcomeValue": "string",
"collectedAt": "string | null",
"additionalData": {...},
"internalIdentification": "string"
}
Objeto TaxCompliance
| Campo | Tipo | Descripción |
|---|---|---|
id |
string | Identificador único del registro |
createdAt |
string (ISO 8601) | Fecha de creación del registro |
rfc |
string | RFC del contribuyente |
outcome |
string | Resultado del cumplimiento fiscal. Valores posibles: "POSITIVE", "NEGATIVE" |
outcomeValue |
string | Valor traducido del resultado. Valores posibles: "POSITIVO", "NEGATIVO", "DESCONOCIDO" |
collectedAt |
string (ISO 8601) | null | Fecha de recolección de los datos |
additionalData |
object | Datos adicionales relacionados con la opinión |
internalIdentification |
string | Identificación interna del registro |
Mapeo de Valores de Outcome
outcome |
outcomeValue |
|---|---|
POSITIVE |
POSITIVO |
NEGATIVE |
NEGATIVO |
| Cualquier otro valor | DESCONOCIDO |
Respuesta de Error (400 Bad Request / 404 Not Found / 500 Internal Server Error)
{
"error": "Mensaje de error descriptivo",
"requestId": "123e4567-e89b-12d3-a456-426614174000"
}
Endpoint: Get Compliance Opinion PDF
Descripción
Permite obtener el documento PDF de la opinión de cumplimiento fiscal correspondiente a la solicitud.
Método: GET
URL: /api/v1/financial/compliance/pdf/{requestId}
Headers:
Authorization: Bearer {token}
Parámetros de URL
| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
requestId |
string (UUID) | Sí | Identificador único de la solicitud (mismo que para obtener el JSON) |
Respuesta Exitosa (200 OK)
- Content-Type:
application/pdf - Content-Disposition:
attachment; filename=opinion-cumplimiento-fiscal-{requestId}.pdf - Body: Contenido binario del archivo PDF
Respuesta de Error (400 Bad Request / 404 Not Found / 500 Internal Server Error)
{
"error": "Mensaje de error descriptivo",
"requestId": "123e4567-e89b-12d3-a456-426614174000"
}
Endpoint: Get Invoices
Descripción
Permite obtener las facturas fiscales (CFDI) del contribuyente asociadas a una solicitud. Incluye facturas emitidas y recibidas: montos, impuestos, emisores, receptores y datos de pago. Los datos se retornan en el objeto pagedFinancialResult con paginación.
Método: GET
URL: /api/v1/financial/invoices/{requestId}/{pageNumber}/{pageSize}
Headers:
Authorization: Bearer {token}
Parámetros de URL
| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
requestId |
string (UUID) | Sí | Identificador único de la solicitud obtenido en la creación |
pageNumber |
int | Sí | Número de página (entero ≥ 1) |
pageSize |
int | Sí | Cantidad de facturas por página. Máximo: 1,000 |
Límite: El número máximo de elementos por página (
pageSize) es 1,000. Para calcular el total de páginas:totalPages = Math.Ceiling(totalItems / pageSize).
Respuesta Exitosa (200 OK)
Retorna el objeto pagedFinancialResult con el total de facturas disponibles y el array de facturas de la página solicitada.
Estructura de Respuesta
{
"pagedFinancialResult": {
"id": "123e4567-e89b-12d3-a456-426614174000",
"totalItems": 1250,
"invoices": [
{
"id": "string",
"link": "string",
"createdAt": "string",
"type": "I",
"year": 2024,
"serie": "A",
"folio": "12345",
"month": 1,
"total": 1000.00,
"usage": "G03",
"status": "Vigente",
"version": "4.0",
"currency": "MXN",
"subtotal": 862.07,
"discounts": 0,
"invoiceId": "string",
"issueDate": "2024-01-15T00:00:00Z",
"exportType": null,
"issuerName": "string",
"periodicity": null,
"paymentForm": "03",
"exchangeRate": 1,
"issuerTaxId": "string",
"receiverName": "string",
"originalTotal": 1000.00,
"paymentMethod": "PUE",
"receiverTaxId": "string",
"taxRetainedVat": 0,
"cancellationDate": null,
"issuerTaxRegime": "string",
"originalSubtotal": 862.07,
"certificationDate": "string",
"originalDiscounts": 0,
"taxRetainedTotal": 0,
"receiverTaxRegime": "string",
"taxRetainedIncome": 0,
"verificationStatus": "string",
"receiverPostalCode": "string",
"relatedDocumentType": null,
"taxTransferredLocal": 0,
"taxTransferredTotal": 137.93,
"internalIdentification": "uuid-cfdi",
"stampValidationStatus": "string",
"adjustedSubtotalForeign": null,
"customsDeclarationNumber": null,
"adjustedSubtotalVatExempt": null,
"employerRegistrationNumber": null,
"relatedDocumentInternalIds": [],
"adjustedSubtotalVat0Percent": null,
"adjustedSubtotalVat8Percent": null,
"adjustedSubtotalVat16Percent": 862.07,
"originalCurrency": "MXN",
"adjustedSubtotalBase": 862.07,
"taxTransferredVat": 137.93,
"taxTransferredExcise": 0,
"originalAdjustedSubtotalVat16Percent": null,
"senderTaxFraudStatus": null,
"receiverTaxFraudStatus": null
}
]
}
}
pagedFinancialResult.totalItems: total de facturas disponibles (en todas las páginas).pagedFinancialResult.invoices: array de facturas de la página actual (hastapageSizeelementos).
Objeto pagedFinancialResult
| Campo | Tipo | Descripción |
|---|---|---|
id |
string | null | Identificador de la petición |
totalItems |
int | null | Total de facturas disponibles (para paginación) |
invoices |
array | Lista de facturas de la página solicitada |
Campos del elemento Invoice
| Campo | Tipo | Descripción |
|---|---|---|
id |
string | null | Identificador único del registro |
link |
string | null | Identificador del link de Belvo |
createdAt |
string | null | Fecha de creación del registro |
type |
string | null | Tipo de factura (I = emitida, E = recibida) |
year |
int | null | Año de la factura |
serie |
string | null | Serie de la factura |
folio |
string | null | Folio de la factura |
month |
int | null | Mes de la factura |
total |
float | null | Total de la factura |
usage |
string | null | Uso del CFDI |
status |
string | null | Estado de la factura |
version |
string | null | Versión del CFDI |
currency |
string | null | Moneda original |
subtotal |
float | null | Subtotal |
discounts |
float | null | Descuentos |
invoiceId |
string | null | Identificador interno de la factura |
issueDate |
string | null | Fecha de emisión |
exportType |
string | null | Tipo de exportación |
issuerName |
string | null | Nombre del emisor |
periodicity |
string | null | Periodicidad |
paymentForm |
string | null | Forma de pago |
exchangeRate |
float | null | Tipo de cambio |
issuerTaxId |
string | null | RFC del emisor |
receiverName |
string | null | Nombre del receptor |
originalTotal |
float | null | Total original |
paymentMethod |
string | null | Método de pago |
receiverTaxId |
string | null | RFC del receptor |
taxRetainedVat |
float | null | IVA retenido |
cancellationDate |
string | null | Fecha de cancelación |
issuerTaxRegime |
string | null | Régimen fiscal del emisor |
originalSubtotal |
float | null | Subtotal original |
certificationDate |
string | null | Fecha de certificación |
originalDiscounts |
float | null | Descuentos originales |
taxRetainedTotal |
float | null | Total de impuestos retenidos |
receiverTaxRegime |
string | null | Régimen fiscal del receptor |
taxRetainedIncome |
float | null | ISR retenido |
verificationStatus |
string | null | Estado de verificación SAT |
receiverPostalCode |
string | null | Código postal del receptor |
relatedDocumentType |
string | null | Tipo de documento relacionado |
taxTransferredLocal |
float | null | Impuestos locales trasladados |
taxTransferredTotal |
float | null | Total de impuestos trasladados |
internalIdentification |
string | null | Identificación interna (UUID del CFDI) |
stampValidationStatus |
string | null | Estado de validación del sello |
adjustedSubtotalForeign |
float | null | Subtotal ajustado extranjero |
customsDeclarationNumber |
string | null | Número de pedimento |
adjustedSubtotalVatExempt |
float | null | Subtotal ajustado exento de IVA |
employerRegistrationNumber |
string | null | Registro patronal |
relatedDocumentInternalIds |
string[] | null | IDs internos de documentos relacionados |
adjustedSubtotalVat0Percent |
float | null | Subtotal ajustado IVA 0% |
adjustedSubtotalVat8Percent |
float | null | Subtotal ajustado IVA 8% |
adjustedSubtotalVat16Percent |
float | null | Subtotal ajustado IVA 16% |
originalCurrency |
string | null | Moneda original |
adjustedSubtotalBase |
float | null | Subtotal ajustado base |
taxTransferredVat |
float | null | IVA trasladado |
taxTransferredExcise |
float | null | IEPS trasladado |
originalAdjustedSubtotalVat16Percent |
float | null | Subtotal ajustado IVA 16% original |
senderTaxFraudStatus |
string | null | Estado de fraude fiscal del emisor |
receiverTaxFraudStatus |
string | null | Estado de fraude fiscal del receptor |
Respuesta de Error (400 Bad Request / 404 Not Found / 500 Internal Server Error)
{
"error": "Mensaje de error descriptivo",
"requestId": "123e4567-e89b-12d3-a456-426614174000"
}
Endpoint: Get Income Statement
Descripción
Permite obtener los estados de resultados (pérdidas y ganancias) del contribuyente por año asociados a una solicitud. Incluye ingresos, costos, gastos, EBITDA, utilidad neta, etc. Los datos se retornan en el objeto pagedFinancialResult con paginación.
Método: GET
URL: /api/v1/financial/statement/{requestId}/{pageNumber}/{pageSize}
Headers:
Authorization: Bearer {token}
Parámetros de URL
| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
requestId |
string (UUID) | Sí | Identificador único de la solicitud obtenido en la creación |
pageNumber |
int | Sí | Número de página (entero ≥ 1) |
pageSize |
int | Sí | Cantidad de estados de resultados por página. Máximo: 1,000 |
Límite: El número máximo de elementos por página (
pageSize) es 1,000. Para calcular el total de páginas:totalPages = Math.Ceiling(totalItems / pageSize).
Respuesta Exitosa (200 OK)
Retorna el objeto pagedFinancialResult con el total de años con estados de resultados disponibles y el array de la página solicitada.
Estructura de Respuesta
{
"pagedFinancialResult": {
"id": "123e4567-e89b-12d3-a456-426614174000",
"totalItems": 5,
"incomeStatement": [
{
"year": 2024,
"netSales": 1000000.00,
"totalRevenue": 1050000.00,
"costOfSalesOrService": 400000.00,
"directLabor": 80000.00,
"contractManufacturingCosts": null,
"indirectManufacturingExpenses": 50000.00,
"totalCosts": 530000.00,
"grossMargin": 520000.00,
"otherOperatingExpenses": 120000.00,
"totalExpenses": 120000.00,
"ebitda": 400000.00,
"financialIncome": 5000.00,
"financialExpenses": 15000.00,
"totalComprehensiveFinancingResult": -10000.00,
"otherExpenses": null,
"otherIncome": null,
"shareOfProfitOfAssociatesAndSubsidiaries": null,
"discontinuedAndExtraordinaryItems": null,
"totalOtherExpensesAndIncome": null,
"depreciationAndAmortization": 60000.00,
"earningsBeforeTax": 330000.00,
"workerProfitSharing": 33000.00,
"incomeTaxExpense": 99000.00,
"netIncome": 198000.00
}
]
}
}
pagedFinancialResult.totalItems: total de años con estados de resultados disponibles (en todas las páginas).pagedFinancialResult.incomeStatement: array de estados de resultados de la página actual (hastapageSizeelementos).
Objeto pagedFinancialResult
| Campo | Tipo | Descripción |
|---|---|---|
id |
string | null | Identificador de la petición |
totalItems |
int | null | Total de años con estados de resultados disponibles (para paginación) |
incomeStatement |
array | Lista de estados de resultados de la página solicitada |
Campos del elemento IncomeStatement
| Campo | Tipo | Descripción |
|---|---|---|
year |
int | Año del estado de resultados |
netSales |
float | null | Ventas netas |
totalRevenue |
float | null | Ingresos totales |
costOfSalesOrService |
float | null | Costo de ventas o servicios |
directLabor |
float | null | Mano de obra directa |
contractManufacturingCosts |
float | null | Costos de manufactura por contrato |
indirectManufacturingExpenses |
float | null | Gastos indirectos de manufactura |
totalCosts |
float | null | Costos totales |
grossMargin |
float | null | Margen bruto |
otherOperatingExpenses |
float | null | Otros gastos operativos |
totalExpenses |
float | null | Gastos totales |
ebitda |
float | null | EBITDA (ganancias antes de intereses, impuestos, depreciación y amortización) |
financialIncome |
float | null | Ingresos financieros |
financialExpenses |
float | null | Gastos financieros |
totalComprehensiveFinancingResult |
float | null | Resultado integral de financiamiento |
otherExpenses |
float | null | Otros gastos |
otherIncome |
float | null | Otros ingresos |
shareOfProfitOfAssociatesAndSubsidiaries |
float | null | Participación en utilidades de asociadas y subsidiarias |
discontinuedAndExtraordinaryItems |
float | null | Operaciones discontinuadas y partidas extraordinarias |
totalOtherExpensesAndIncome |
float | null | Total de otros gastos e ingresos |
depreciationAndAmortization |
float | null | Depreciación y amortización |
earningsBeforeTax |
float | null | Utilidad antes de impuestos |
workerProfitSharing |
float | null | Participación de los trabajadores en las utilidades (PTU) |
incomeTaxExpense |
float | null | Impuesto sobre la renta |
netIncome |
float | null | Utilidad neta |
Respuesta de Error (400 Bad Request / 404 Not Found / 500 Internal Server Error)
{
"error": "Mensaje de error descriptivo",
"requestId": "123e4567-e89b-12d3-a456-426614174000"
}
Endpoint: Get Balance Sheet
Descripción
Permite obtener los balances generales del contribuyente por año asociados a una solicitud. Incluye activos, pasivos y capital (efectivo, cuentas por cobrar, inventarios, proveedores, deuda, capital, etc.). Los datos se retornan en el objeto pagedFinancialResult con paginación.
Método: GET
URL: /api/v1/financial/balance/{requestId}/{pageNumber}/{pageSize}
Headers:
Authorization: Bearer {token}
Parámetros de URL
| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
requestId |
string (UUID) | Sí | Identificador único de la solicitud obtenido en la creación |
pageNumber |
int | Sí | Número de página (entero ≥ 1) |
pageSize |
int | Sí | Cantidad de balances por página. Máximo: 1,000 |
Límite: El número máximo de elementos por página (
pageSize) es 1,000. Para calcular el total de páginas:totalPages = Math.Ceiling(totalItems / pageSize).
Respuesta Exitosa (200 OK)
Retorna el objeto pagedFinancialResult con el total de años con balances disponibles y el array de la página solicitada.
Estructura de Respuesta
{
"pagedFinancialResult": {
"id": "123e4567-e89b-12d3-a456-426614174000",
"totalItems": 5,
"balanceSheet": [
{
"year": 2024,
"cashAndCashEquivalents": 150000.00,
"investments": null,
"accountsReceivable": 200000.00,
"accountsReceivableRelatedParties": null,
"inventory": 180000.00,
"creditableTaxes": 25000.00,
"prepaidExpenses": 15000.00,
"securityDeposits": null,
"otherCurrentAssets": 30000.00,
"totalCurrentAssets": 600000.00,
"fixedAssets": 400000.00,
"accumulatedDepreciation": -120000.00,
"permanentInvestmentsInShares": null,
"otherIntangibleAssets": null,
"totalNonCurrentAssets": 280000.00,
"totalAssets": 880000.00,
"suppliers": 95000.00,
"shortTermMiscellaneousCreditors": null,
"bankLoansAndInterest": 80000.00,
"otherCurrentLiabilities": 25000.00,
"otherAccountsPayableAndRelatedInterest": null,
"customerAdvances": 20000.00,
"taxesPayable": 35000.00,
"provisions": 10000.00,
"totalCurrentLiabilities": 265000.00,
"longTermOtherAccountsPayable": null,
"longTermOtherAccountsPayableAndRelatedInterest": 50000.00,
"deferredTaxes": null,
"totalNonCurrentLiabilities": 50000.00,
"otherLiabilities": null,
"totalLiabilities": 315000.00,
"capitalContributions": 300000.00,
"capitalization": null,
"restatement": null,
"reserves": 50000.00,
"netIncomeForThePeriod": 198000.00,
"retainedEarningsPreviousPeriods": 117000.00,
"otherEquity": null,
"totalEquity": 565000.00
}
]
}
}
pagedFinancialResult.totalItems: total de años con balances disponibles (en todas las páginas).pagedFinancialResult.balanceSheet: array de balances de la página actual (hastapageSizeelementos).
Objeto pagedFinancialResult
| Campo | Tipo | Descripción |
|---|---|---|
id |
string | null | Identificador de la petición |
totalItems |
int | null | Total de años con balances disponibles (para paginación) |
balanceSheet |
array | Lista de balances de la página solicitada |
Campos del elemento BalanceSheet
| Campo | Tipo | Descripción |
|---|---|---|
year |
int | Año del balance |
cashAndCashEquivalents |
float | null | Efectivo y equivalentes de efectivo |
investments |
float | null | Inversiones |
accountsReceivable |
float | null | Cuentas por cobrar |
accountsReceivableRelatedParties |
float | null | Cuentas por cobrar a partes relacionadas |
inventory |
float | null | Inventarios |
creditableTaxes |
float | null | Impuestos acreditables |
prepaidExpenses |
float | null | Gastos pagados por anticipado |
securityDeposits |
float | null | Depósitos en garantía |
otherCurrentAssets |
float | null | Otros activos circulantes |
totalCurrentAssets |
float | null | Total de activos circulantes |
fixedAssets |
float | null | Activos fijos |
accumulatedDepreciation |
float | null | Depreciación acumulada |
permanentInvestmentsInShares |
float | null | Inversiones permanentes en acciones |
otherIntangibleAssets |
float | null | Otros activos intangibles |
totalNonCurrentAssets |
float | null | Total de activos no circulantes |
totalAssets |
float | null | Total de activos |
suppliers |
float | null | Proveedores |
shortTermMiscellaneousCreditors |
float | null | Acreedores diversos a corto plazo |
bankLoansAndInterest |
float | null | Préstamos bancarios e intereses |
otherCurrentLiabilities |
float | null | Otros pasivos circulantes |
otherAccountsPayableAndRelatedInterest |
float | null | Otras cuentas por pagar e intereses relacionados |
customerAdvances |
float | null | Anticipo de clientes |
taxesPayable |
float | null | Impuestos por pagar |
provisions |
float | null | Provisiones |
totalCurrentLiabilities |
float | null | Total de pasivos circulantes |
longTermOtherAccountsPayable |
float | null | Otras cuentas por pagar a largo plazo |
longTermOtherAccountsPayableAndRelatedInterest |
float | null | Otras cuentas por pagar a largo plazo e intereses relacionados |
deferredTaxes |
float | null | Impuestos diferidos |
totalNonCurrentLiabilities |
float | null | Total de pasivos no circulantes |
otherLiabilities |
float | null | Otros pasivos |
totalLiabilities |
float | null | Total de pasivos |
capitalContributions |
float | null | Aportaciones de capital |
capitalization |
float | null | Capitalización |
restatement |
float | null | Reexpresión |
reserves |
float | null | Reservas |
netIncomeForThePeriod |
float | null | Utilidad neta del período |
retainedEarningsPreviousPeriods |
float | null | Utilidades retenidas de períodos anteriores |
otherEquity |
float | null | Otro capital |
totalEquity |
float | null | Total de capital |
Respuesta de Error (400 Bad Request / 404 Not Found / 500 Internal Server Error)
{
"error": "Mensaje de error descriptivo",
"requestId": "123e4567-e89b-12d3-a456-426614174000"
}
Endpoint: Get Cash Flow
Descripción
Permite obtener los estados de flujo de efectivo del contribuyente por año asociados a una solicitud. Incluye actividades operativas, de inversión y financiamiento (orígenes y usos de efectivo). Los datos se retornan en el objeto pagedFinancialResult con paginación.
Método: GET
URL: /api/v1/financial/cashflow/{requestId}/{pageNumber}/{pageSize}
Headers:
Authorization: Bearer {token}
Parámetros de URL
| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
requestId |
string (UUID) | Sí | Identificador único de la solicitud obtenido en la creación |
pageNumber |
int | Sí | Número de página (entero ≥ 1) |
pageSize |
int | Sí | Cantidad de estados de flujo por página. Máximo: 1,000 |
Límite: El número máximo de elementos por página (
pageSize) es 1,000. Para calcular el total de páginas:totalPages = Math.Ceiling(totalItems / pageSize).
Respuesta Exitosa (200 OK)
Retorna el objeto pagedFinancialResult con el total de años con estados de flujo de efectivo disponibles y el array de la página solicitada.
Estructura de Respuesta
{
"pagedFinancialResult": {
"id": "123e4567-e89b-12d3-a456-426614174000",
"totalItems": 5,
"cashFlow": [
{
"year": 2024,
"netIncome": 198000.00,
"priorYearNetIncomeAdjustment": null,
"depreciationAndAmortization": 60000.00,
"totalGrossGeneration": 258000.00,
"suppliers": 20000.00,
"taxesPayable": -15000.00,
"otherAccountsPayableRelatedInterest": null,
"customerAdvances": 5000.00,
"provisions": 3000.00,
"totalOperatingSources": 271000.00,
"accountsReceivable": -25000.00,
"inventory": -18000.00,
"creditableTaxes": -5000.00,
"accountsReceivableRelatedParties": null,
"prepaidExpenses": -2000.00,
"totalOperatingUses": -50000.00,
"shortTermMiscellaneousCreditors": null,
"bankLoansAndInterest": 30000.00,
"otherLiabilityAccounts": null,
"deferredTaxes": null,
"longTermOtherAccountsPayable": null,
"longTermOtherAccountsPayableRelatedInterest": -5000.00,
"restatement": null,
"capitalization": null,
"capitalContributions": null,
"reserves": null,
"otherEquityAccounts": null,
"totalNonOperatingSources": 25000.00,
"securityDeposits": null,
"investments": -10000.00,
"otherAssetAccounts": null,
"fixedAssets": -80000.00,
"permanentInvestmentsInShares": null,
"otherIntangibleAssets": null,
"totalNonOperatingUses": -90000.00,
"cashAtBeginningOfPeriod": 120000.00,
"cashAtEndOfPeriod": 176000.00,
"totalChangeInCash": 56000.00
}
]
}
}
pagedFinancialResult.totalItems: total de años con estados de flujo de efectivo disponibles (en todas las páginas).pagedFinancialResult.cashFlow: array de estados de flujo de efectivo de la página actual (hastapageSizeelementos).
Objeto pagedFinancialResult
| Campo | Tipo | Descripción |
|---|---|---|
id |
string | null | Identificador de la petición |
totalItems |
int | null | Total de años con estados de flujo disponibles (para paginación) |
cashFlow |
array | Lista de estados de flujo de efectivo de la página solicitada |
Campos del elemento CashFlow
| Campo | Tipo | Descripción |
|---|---|---|
year |
int | Año del estado de flujo de efectivo |
netIncome |
float | null | Utilidad neta |
priorYearNetIncomeAdjustment |
float | null | Ajuste de utilidad neta del año anterior |
depreciationAndAmortization |
float | null | Depreciación y amortización |
totalGrossGeneration |
float | null | Generación bruta total |
suppliers |
float | null | Proveedores |
taxesPayable |
float | null | Impuestos por pagar |
otherAccountsPayableRelatedInterest |
float | null | Otras cuentas por pagar e intereses relacionados |
customerAdvances |
float | null | Anticipo de clientes |
provisions |
float | null | Provisiones |
totalOperatingSources |
float | null | Total de fuentes operativas |
accountsReceivable |
float | null | Cuentas por cobrar |
inventory |
float | null | Inventarios |
creditableTaxes |
float | null | Impuestos acreditables |
accountsReceivableRelatedParties |
float | null | Cuentas por cobrar a partes relacionadas |
prepaidExpenses |
float | null | Gastos pagados por anticipado |
totalOperatingUses |
float | null | Total de usos operativos |
shortTermMiscellaneousCreditors |
float | null | Acreedores diversos a corto plazo |
bankLoansAndInterest |
float | null | Préstamos bancarios e intereses |
otherLiabilityAccounts |
float | null | Otras cuentas de pasivo |
deferredTaxes |
float | null | Impuestos diferidos |
longTermOtherAccountsPayable |
float | null | Otras cuentas por pagar a largo plazo |
longTermOtherAccountsPayableRelatedInterest |
float | null | Otras cuentas por pagar a largo plazo e intereses relacionados |
restatement |
float | null | Reexpresión |
capitalization |
float | null | Capitalización |
capitalContributions |
float | null | Aportaciones de capital |
reserves |
float | null | Reservas |
otherEquityAccounts |
float | null | Otras cuentas de capital |
totalNonOperatingSources |
float | null | Total de fuentes no operativas |
securityDeposits |
float | null | Depósitos en garantía |
investments |
float | null | Inversiones |
otherAssetAccounts |
float | null | Otras cuentas de activo |
fixedAssets |
float | null | Activos fijos |
permanentInvestmentsInShares |
float | null | Inversiones permanentes en acciones |
otherIntangibleAssets |
float | null | Otros activos intangibles |
totalNonOperatingUses |
float | null | Total de usos no operativos |
cashAtBeginningOfPeriod |
float | null | Efectivo al inicio del período |
cashAtEndOfPeriod |
float | null | Efectivo al final del período |
totalChangeInCash |
float | null | Cambio total en efectivo |
Respuesta de Error (400 Bad Request / 404 Not Found / 500 Internal Server Error)
{
"error": "Mensaje de error descriptivo",
"requestId": "123e4567-e89b-12d3-a456-426614174000"
}
Endpoint: Get Financial Metrics
Descripción
Permite obtener las métricas financieras del contribuyente por año asociadas a una solicitud. Incluye ratios de liquidez, rentabilidad, eficiencia y apalancamiento (current ratio, ROE, ROA, margen operativo, etc.). Los datos se retornan en el objeto pagedFinancialResult con paginación.
Método: GET
URL: /api/v1/financial/metrics/{requestId}/{pageNumber}/{pageSize}
Headers:
Authorization: Bearer {token}
Parámetros de URL
| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
requestId |
string (UUID) | Sí | Identificador único de la solicitud obtenido en la creación |
pageNumber |
int | Sí | Número de página (entero ≥ 1) |
pageSize |
int | Sí | Cantidad de métricas por página. Máximo: 1,000 |
Límite: El número máximo de elementos por página (
pageSize) es 1,000. Para calcular el total de páginas:totalPages = Math.Ceiling(totalItems / pageSize).
Respuesta Exitosa (200 OK)
Retorna el objeto pagedFinancialResult con el total de años con métricas disponibles y el array de la página solicitada.
Estructura de Respuesta
{
"pagedFinancialResult": {
"id": "123e4567-e89b-12d3-a456-426614174000",
"totalItems": 5,
"financialMetrics": [
{
"year": 2024,
"leverage": 0.56,
"interestCoverageRatio": 26.5,
"operatingMargin": 38.1,
"currentRatio": 2.26,
"salesGrowth": 12.3,
"quickRatio": 1.85,
"workingCapital": 335000.00,
"bookValue": 565000.00,
"daysSalesOutstanding": 45.2,
"daysPayablesOutstanding": 38.0,
"operatingCycle": 83.2,
"ebitda": 400000.00,
"grossMarginPercentage": 49.4,
"netProfitMargin": 18.9,
"debtToEquityRatio": 0.56,
"returnOnAssets": 22.5,
"returnOnEquity": 35.0
}
]
}
}
pagedFinancialResult.totalItems: total de años con métricas disponibles (en todas las páginas).pagedFinancialResult.financialMetrics: array de métricas financieras de la página actual (hastapageSizeelementos).
Objeto pagedFinancialResult
| Campo | Tipo | Descripción |
|---|---|---|
id |
string | null | Identificador de la petición |
totalItems |
int | null | Total de años con métricas disponibles (para paginación) |
financialMetrics |
array | Lista de métricas financieras de la página solicitada |
Campos del elemento FinancialMetrics
| Campo | Tipo | Descripción |
|---|---|---|
year |
int | Año de las métricas |
leverage |
float | null | Apalancamiento |
interestCoverageRatio |
float | null | Ratio de cobertura de intereses |
operatingMargin |
float | null | Margen operativo (%) |
currentRatio |
float | null | Ratio de liquidez corriente |
salesGrowth |
float | null | Crecimiento de ventas (%) |
quickRatio |
float | null | Ratio de liquidez rápida (prueba ácida) |
workingCapital |
float | null | Capital de trabajo |
bookValue |
float | null | Valor en libros |
daysSalesOutstanding |
float | null | Días de ventas pendientes de cobro |
daysPayablesOutstanding |
float | null | Días de cuentas por pagar pendientes |
operatingCycle |
float | null | Ciclo operativo (días) |
ebitda |
float | null | EBITDA |
grossMarginPercentage |
float | null | Porcentaje de margen bruto (%) |
netProfitMargin |
float | null | Margen de utilidad neta (%) |
debtToEquityRatio |
float | null | Ratio de deuda a capital |
returnOnAssets |
float | null | Retorno sobre activos (ROA) (%) |
returnOnEquity |
float | null | Retorno sobre capital (ROE) (%) |
Respuesta de Error (400 Bad Request / 404 Not Found / 500 Internal Server Error)
{
"error": "Mensaje de error descriptivo",
"requestId": "123e4567-e89b-12d3-a456-426614174000"
}
Endpoint: Get Monthly Sales
Descripción
Permite obtener las ventas mensuales del contribuyente asociadas a una solicitud. Incluye totales y subtotales de ingresos y egresos por mes (formato YYYY-MM). Los datos se retornan en el objeto pagedFinancialResult con paginación.
Método: GET
URL: /api/v1/financial/monthly-sales/{requestId}/{pageNumber}/{pageSize}
Headers:
Authorization: Bearer {token}
Parámetros de URL
| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
requestId |
string (UUID) | Sí | Identificador único de la solicitud obtenido en la creación |
pageNumber |
int | Sí | Número de página (entero ≥ 1) |
pageSize |
int | Sí | Cantidad de meses por página. Máximo: 1,000 |
Límite: El número máximo de elementos por página (
pageSize) es 1,000. Para calcular el total de páginas:totalPages = Math.Ceiling(totalItems / pageSize).
Respuesta Exitosa (200 OK)
Retorna el objeto pagedFinancialResult con el total de meses con datos disponibles y el array de la página solicitada.
Estructura de Respuesta
{
"pagedFinancialResult": {
"id": "123e4567-e89b-12d3-a456-426614174000",
"totalItems": 24,
"monthlySales": [
{
"month": "2024-01",
"subtotalAdjusted": 850000.00,
"subtotalIngreso": 920000.00,
"subtotalEgreso": 72000.00,
"totalAdjusted": 848000.00,
"totalIngreso": 920000.00,
"totalEgreso": 72000.00
}
]
}
}
pagedFinancialResult.totalItems: total de meses con datos disponibles (en todas las páginas).pagedFinancialResult.monthlySales: array de ventas mensuales de la página actual (hastapageSizeelementos).
Objeto pagedFinancialResult
| Campo | Tipo | Descripción |
|---|---|---|
id |
string | null | Identificador de la petición |
totalItems |
int | null | Total de meses con datos disponibles (para paginación) |
monthlySales |
array | Lista de ventas mensuales de la página solicitada |
Campos del elemento MonthlySales
| Campo | Tipo | Descripción |
|---|---|---|
month |
string | Mes del reporte (formato: YYYY-MM) |
subtotalAdjusted |
float | null | Subtotal ajustado |
subtotalIngreso |
float | null | Subtotal de ingresos |
subtotalEgreso |
float | null | Subtotal de egresos |
totalAdjusted |
float | null | Total ajustado |
totalIngreso |
float | null | Total de ingresos |
totalEgreso |
float | null | Total de egresos |
Respuesta de Error (400 Bad Request / 404 Not Found / 500 Internal Server Error)
{
"error": "Mensaje de error descriptivo",
"requestId": "123e4567-e89b-12d3-a456-426614174000"
}
Endpoint: Get Clients
Descripción
Permite obtener los clientes del contribuyente asociados a una solicitud. Incluye facturación, pagos y métricas de pago por cliente (RFC, razón social, promedios y percentiles de días de pago, facturación por año). Los datos se retornan en el objeto pagedFinancialResult con paginación.
Método: GET
URL: /api/v1/financial/clients/{requestId}/{pageNumber}/{pageSize}
Headers:
Authorization: Bearer {token}
Parámetros de URL
| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
requestId |
string (UUID) | Sí | Identificador único de la solicitud obtenido en la creación |
pageNumber |
int | Sí | Número de página (entero ≥ 1) |
pageSize |
int | Sí | Cantidad de clientes por página. Máximo: 1,000 |
Límite: El número máximo de elementos por página (
pageSize) es 1,000. Para calcular el total de páginas:totalPages = Math.Ceiling(totalItems / pageSize).
Orden: La lista viene ordenada por año (descendente) y porcentaje del total (descendente) usando el primer elemento de
yearlyInvoicedData.
Respuesta Exitosa (200 OK)
Retorna el objeto pagedFinancialResult con el total de clientes disponibles y el array de la página solicitada.
Estructura de Respuesta
{
"pagedFinancialResult": {
"id": "123e4567-e89b-12d3-a456-426614174000",
"totalItems": 150,
"clients": [
{
"businessName": "ACME S.A. de C.V.",
"taxId": "ACM850101XXX",
"lastInvoiceDate": "2024-11-15",
"lastPaymentReceivedDate": "2024-12-01",
"paymentDaysAverage": 28.5,
"paymentDaysP10Percentile": 15.0,
"paymentDaysP90Percentile": 45.0,
"yearlyInvoicedData": [
{ "year": 2024, "amountInvoicedPreTax": 1200000.00, "percentageOfTotal": 35.2 },
{ "year": 2023, "amountInvoicedPreTax": 980000.00, "percentageOfTotal": 32.1 }
]
}
]
}
}
pagedFinancialResult.totalItems: total de clientes disponibles (en todas las páginas).pagedFinancialResult.clients: array de clientes de la página actual (hastapageSizeelementos).
Objeto pagedFinancialResult
| Campo | Tipo | Descripción |
|---|---|---|
id |
string | null | Identificador de la petición |
totalItems |
int | null | Total de clientes disponibles (para paginación) |
clients |
array | Lista de clientes de la página solicitada |
Campos del elemento Client
| Campo | Tipo | Descripción |
|---|---|---|
businessName |
string | null | Razón social del cliente |
taxId |
string | null | RFC del cliente |
lastInvoiceDate |
string | null | Fecha de la última factura |
lastPaymentReceivedDate |
string | null | Fecha del último pago recibido |
paymentDaysAverage |
float | null | Promedio de días de pago |
paymentDaysP10Percentile |
float | null | Percentil 10 de días de pago |
paymentDaysP90Percentile |
float | null | Percentil 90 de días de pago |
yearlyInvoicedData |
array | Datos de facturación por año (ver YearlyInvoicedData) |
Objeto YearlyInvoicedData
| Campo | Tipo | Descripción |
|---|---|---|
year |
int | Año |
amountInvoicedPreTax |
float | null | Monto facturado antes de impuestos |
percentageOfTotal |
float | null | Porcentaje del total (%) |
Respuesta de Error (400 Bad Request / 404 Not Found / 500 Internal Server Error)
{
"error": "Mensaje de error descriptivo",
"requestId": "123e4567-e89b-12d3-a456-426614174000"
}
Endpoint: Get Suppliers
Descripción
Permite obtener los proveedores del contribuyente asociados a una solicitud. Incluye compras, pagos y métricas de pago por proveedor (RFC, razón social, promedios y percentiles de días de pago, datos por año). Los datos se retornan en el objeto pagedFinancialResult con paginación.
Método: GET
URL: /api/v1/financial/suppliers/{requestId}/{pageNumber}/{pageSize}
Headers:
Authorization: Bearer {token}
Parámetros de URL
| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
requestId |
string (UUID) | Sí | Identificador único de la solicitud obtenido en la creación |
pageNumber |
int | Sí | Número de página (entero ≥ 1) |
pageSize |
int | Sí | Cantidad de proveedores por página. Máximo: 1,000 |
Límite: El número máximo de elementos por página (
pageSize) es 1,000. Para calcular el total de páginas:totalPages = Math.Ceiling(totalItems / pageSize).
Orden: La lista viene ordenada por año (descendente) y porcentaje del total (descendente) según el primer elemento de
yearlyInvoicedData.
Respuesta Exitosa (200 OK)
Retorna el objeto pagedFinancialResult con el total de proveedores disponibles y el array de la página solicitada.
Estructura de Respuesta
{
"pagedFinancialResult": {
"id": "123e4567-e89b-12d3-a456-426614174000",
"totalItems": 85,
"suppliers": [
{
"businessName": "Suministros Industriales S.A. de C.V.",
"taxId": "SIN800101XXX",
"lastInvoiceDate": "2024-11-20",
"lastPaymentReceivedDate": "2024-12-05",
"paymentDaysMetricsAverage": 32.0,
"paymentDaysMetricsP10Percentile": 18.0,
"paymentDaysMetricsP90Percentile": 50.0,
"yearlyInvoicedData": [
{ "year": 2024, "amountInvoicedPreTax": 450000.00, "percentageOfTotal": 22.5 },
{ "year": 2023, "amountInvoicedPreTax": 380000.00, "percentageOfTotal": 20.1 }
]
}
]
}
}
pagedFinancialResult.totalItems: total de proveedores disponibles (en todas las páginas).pagedFinancialResult.suppliers: array de proveedores de la página actual (hastapageSizeelementos).
Objeto pagedFinancialResult
| Campo | Tipo | Descripción |
|---|---|---|
id |
string | null | Identificador de la petición |
totalItems |
int | null | Total de proveedores disponibles (para paginación) |
suppliers |
array | Lista de proveedores de la página solicitada |
Campos del elemento Supplier
| Campo | Tipo | Descripción |
|---|---|---|
businessName |
string | null | Razón social del proveedor |
taxId |
string | null | RFC del proveedor |
lastInvoiceDate |
string | null | Fecha de la última factura recibida |
lastPaymentReceivedDate |
string | null | Fecha del último pago realizado |
paymentDaysMetricsAverage |
float | null | Promedio de días de pago |
paymentDaysMetricsP10Percentile |
float | null | Percentil 10 de días de pago |
paymentDaysMetricsP90Percentile |
float | null | Percentil 90 de días de pago |
yearlyInvoicedData |
array | Datos de compras por año (ver YearlyInvoicedData) |
Objeto YearlyInvoicedData (proveedores)
| Campo | Tipo | Descripción |
|---|---|---|
year |
int | Año |
amountInvoicedPreTax |
float | null | Monto facturado antes de impuestos |
percentageOfTotal |
float | null | Porcentaje del total (%) |
Respuesta de Error (400 Bad Request / 404 Not Found / 500 Internal Server Error)
{
"error": "Mensaje de error descriptivo",
"requestId": "123e4567-e89b-12d3-a456-426614174000"
}
Endpoint: Get Payroll Employers
Descripción
Permite obtener la nómina desde la perspectiva del empleador por mes asociada a una solicitud. Incluye totales de nómina, salarios, otros pagos, ISR, seguridad social, otras deducciones y número de empleados (totales, nuevos, bajas). Los datos se retornan en el objeto pagedFinancialResult con paginación.
Método: GET
URL: /api/v1/financial/payroll-employers/{requestId}/{pageNumber}/{pageSize}
Headers:
Authorization: Bearer {token}
Parámetros de URL
| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
requestId |
string (UUID) | Sí | Identificador único de la solicitud obtenido en la creación |
pageNumber |
int | Sí | Número de página (entero ≥ 1) |
pageSize |
int | Sí | Cantidad de meses por página. Máximo: 1,000 |
Límite: El número máximo de elementos por página (
pageSize) es 1,000. Para calcular el total de páginas:totalPages = Math.Ceiling(totalItems / pageSize).
Respuesta Exitosa (200 OK)
Retorna el objeto pagedFinancialResult con el total de meses con datos disponibles y el array de la página solicitada.
Estructura de Respuesta
{
"pagedFinancialResult": {
"id": "123e4567-e89b-12d3-a456-426614174000",
"totalItems": 24,
"payrollEmployers": [
{
"month": "2024-11",
"total": 450000.00,
"salaryPayments": 380000.00,
"otherPayments": 25000.00,
"incomeTax": 42000.00,
"socialSecurityContributions": 35000.00,
"otherDeductions": 8000.00,
"employeesTotal": 42,
"employeesNew": 2,
"employeesLost": 1
}
]
}
}
pagedFinancialResult.totalItems: total de meses con datos disponibles (en todas las páginas).pagedFinancialResult.payrollEmployers: array de registros de nómina empleador de la página actual (hastapageSizeelementos).
Objeto pagedFinancialResult
| Campo | Tipo | Descripción |
|---|---|---|
id |
string | null | Identificador de la petición |
totalItems |
int | null | Total de meses con datos disponibles (para paginación) |
payrollEmployers |
array | Lista de nómina empleador de la página solicitada |
Campos del elemento PayrollEmployer
| Campo | Tipo | Descripción |
|---|---|---|
month |
string | Mes del reporte (formato: YYYY-MM) |
total |
float | null | Total de nómina |
salaryPayments |
float | null | Pagos de salarios |
otherPayments |
float | null | Otros pagos |
incomeTax |
float | null | Impuesto sobre la renta (ISR) |
socialSecurityContributions |
float | null | Contribuciones de seguridad social |
otherDeductions |
float | null | Otras deducciones |
employeesTotal |
int | null | Total de empleados |
employeesNew |
int | null | Empleados nuevos en el mes |
employeesLost |
int | null | Empleados dados de baja |
Respuesta de Error (400 Bad Request / 404 Not Found / 500 Internal Server Error)
{
"error": "Mensaje de error descriptivo",
"requestId": "123e4567-e89b-12d3-a456-426614174000"
}
Endpoint: Get Payroll Employees
Descripción
Permite obtener la nómina desde la perspectiva del empleado por mes asociada a una solicitud. Incluye totales, salario, otros pagos, ISR, seguridad social y otras deducciones. Los datos se retornan en el objeto pagedFinancialResult con paginación.
Método: GET
URL: /api/v1/financial/payroll-employees/{requestId}/{pageNumber}/{pageSize}
Headers:
Authorization: Bearer {token}
Parámetros de URL
| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
requestId |
string (UUID) | Sí | Identificador único de la solicitud obtenido en la creación |
pageNumber |
int | Sí | Número de página (entero ≥ 1) |
pageSize |
int | Sí | Cantidad de meses por página. Máximo: 1,000 |
Límite: El número máximo de elementos por página (
pageSize) es 1,000. Para calcular el total de páginas:totalPages = Math.Ceiling(totalItems / pageSize).
Respuesta Exitosa (200 OK)
Retorna el objeto pagedFinancialResult con el total de meses con datos disponibles y el array de la página solicitada.
Estructura de Respuesta
{
"pagedFinancialResult": {
"id": "123e4567-e89b-12d3-a456-426614174000",
"totalItems": 24,
"payrollEmployees": [
{
"month": "2024-11",
"total": 10714.29,
"salary": 9000.00,
"otherPayments": 500.00,
"incomeTax": 1000.00,
"socialSecurityContributions": 833.33,
"otherDeductions": 52.96
}
]
}
}
pagedFinancialResult.totalItems: total de meses con datos disponibles (en todas las páginas).pagedFinancialResult.payrollEmployees: array de registros de nómina empleado de la página actual (hastapageSizeelementos).
Objeto pagedFinancialResult
| Campo | Tipo | Descripción |
|---|---|---|
id |
string | null | Identificador de la petición |
totalItems |
int | null | Total de meses con datos disponibles (para paginación) |
payrollEmployees |
array | Lista de nómina empleado de la página solicitada |
Campos del elemento PayrollEmployee
| Campo | Tipo | Descripción |
|---|---|---|
month |
string | Mes del reporte (formato: YYYY-MM) |
total |
float | null | Total de nómina |
salary |
float | null | Salario |
otherPayments |
float | null | Otros pagos |
incomeTax |
float | null | Impuesto sobre la renta (ISR) |
socialSecurityContributions |
float | null | Contribuciones de seguridad social |
otherDeductions |
float | null | Otras deducciones |
Respuesta de Error (400 Bad Request / 404 Not Found / 500 Internal Server Error)
{
"error": "Mensaje de error descriptivo",
"requestId": "123e4567-e89b-12d3-a456-426614174000"
}
Endpoint: Get Product Sales
Descripción
Permite obtener las ventas por producto del contribuyente asociadas a una solicitud. Incluye clave, descripción, categoría, subcategoría y totales de ventas por año. Los datos se retornan en el objeto pagedFinancialResult con paginación.
Método: GET
URL: /api/v1/financial/product-sales/{requestId}/{pageNumber}/{pageSize}
Headers:
Authorization: Bearer {token}
Parámetros de URL
| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
requestId |
string (UUID) | Sí | Identificador único de la solicitud obtenido en la creación |
pageNumber |
int | Sí | Número de página (entero ≥ 1) |
pageSize |
int | Sí | Cantidad de productos por página. Máximo: 1,000 |
Límite: El número máximo de elementos por página (
pageSize) es 1,000. Para calcular el total de páginas:totalPages = Math.Ceiling(totalItems / pageSize).
Respuesta Exitosa (200 OK)
Retorna el objeto pagedFinancialResult con el total de productos disponibles y el array de la página solicitada.
Estructura de Respuesta
{
"pagedFinancialResult": {
"id": "123e4567-e89b-12d3-a456-426614174000",
"totalItems": 120,
"productSales": [
{
"productKey": "PROD-001",
"productDescription": "Producto ejemplo",
"productCategory": "Electrónica",
"productSubcategory": "Componentes",
"yearlySalesTotal": [
{ "year": 2024, "amount": 250000.00 },
{ "year": 2023, "amount": 180000.00 }
]
}
]
}
}
pagedFinancialResult.totalItems: total de productos disponibles (en todas las páginas).pagedFinancialResult.productSales: array de ventas por producto de la página actual (hastapageSizeelementos).
Objeto pagedFinancialResult
| Campo | Tipo | Descripción |
|---|---|---|
id |
string | null | Identificador de la petición |
totalItems |
int | null | Total de productos disponibles (para paginación) |
productSales |
array | Lista de ventas por producto de la página solicitada |
Campos del elemento ProductSale
| Campo | Tipo | Descripción |
|---|---|---|
productKey |
string | Clave del producto |
productDescription |
string | Descripción del producto |
productCategory |
string | Categoría del producto |
productSubcategory |
string | Subcategoría del producto |
yearlySalesTotal |
array | Total de ventas por año (ver YearlySalesTotal) |
Objeto YearlySalesTotal
| Campo | Tipo | Descripción |
|---|---|---|
year |
int | Año |
amount |
float | null | Monto de ventas |
Respuesta de Error (400 Bad Request / 404 Not Found / 500 Internal Server Error)
{
"error": "Mensaje de error descriptivo",
"requestId": "123e4567-e89b-12d3-a456-426614174000"
}
Endpoint: Get Product Costs
Descripción
Permite obtener los costos por producto del contribuyente asociados a una solicitud. Incluye clave, descripción, categoría, subcategoría y totales de costos por año. Los datos se retornan en el objeto pagedFinancialResult con paginación.
Método: GET
URL: /api/v1/financial/product-costs/{requestId}/{pageNumber}/{pageSize}
Headers:
Authorization: Bearer {token}
Parámetros de URL
| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
requestId |
string (UUID) | Sí | Identificador único de la solicitud obtenido en la creación |
pageNumber |
int | Sí | Número de página (entero ≥ 1) |
pageSize |
int | Sí | Cantidad de productos por página. Máximo: 1,000 |
Límite: El número máximo de elementos por página (
pageSize) es 1,000. Para calcular el total de páginas:totalPages = Math.Ceiling(totalItems / pageSize).
Respuesta Exitosa (200 OK)
Retorna el objeto pagedFinancialResult con el total de productos disponibles y el array de la página solicitada.
Estructura de Respuesta
{
"pagedFinancialResult": {
"id": "123e4567-e89b-12d3-a456-426614174000",
"totalItems": 95,
"productCosts": [
{
"productKey": "PROD-001",
"productDescription": "Producto ejemplo",
"productCategory": "Electrónica",
"productSubcategory": "Componentes",
"yearlyCostsTotal": [
{ "year": 2024, "amount": 120000.00 },
{ "year": 2023, "amount": 95000.00 }
]
}
]
}
}
pagedFinancialResult.totalItems: total de productos disponibles (en todas las páginas).pagedFinancialResult.productCosts: array de costos por producto de la página actual (hastapageSizeelementos).
Objeto pagedFinancialResult
| Campo | Tipo | Descripción |
|---|---|---|
id |
string | null | Identificador de la petición |
totalItems |
int | null | Total de productos disponibles (para paginación) |
productCosts |
array | Lista de costos por producto de la página solicitada |
Campos del elemento ProductCost
| Campo | Tipo | Descripción |
|---|---|---|
productKey |
string | Clave del producto |
productDescription |
string | Descripción del producto |
productCategory |
string | Categoría del producto |
productSubcategory |
string | Subcategoría del producto |
yearlyCostsTotal |
array | Total de costos por año (ver YearlyCostsTotal) |
Objeto YearlyCostsTotal
| Campo | Tipo | Descripción |
|---|---|---|
year |
int | Año |
amount |
float | null | Monto de costos |
Respuesta de Error (400 Bad Request / 404 Not Found / 500 Internal Server Error)
{
"error": "Mensaje de error descriptivo",
"requestId": "123e4567-e89b-12d3-a456-426614174000"
}
Endpoint: Get Line Items
Descripción
Permite obtener los conceptos (partidas) detallados de las facturas del contribuyente asociados a una solicitud: línea por línea por factura (productos/servicios, cantidades, precios, impuestos, emisor/receptor). Los datos se retornan en el objeto pagedFinancialResult con paginación.
Método: GET
URL: /api/v1/financial/line-items/{requestId}/{pageNumber}/{pageSize}
Headers:
Authorization: Bearer {token}
Parámetros de URL
| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
requestId |
string (UUID) | Sí | Identificador único de la solicitud obtenido en la creación |
pageNumber |
int | Sí | Número de página (entero ≥ 1) |
pageSize |
int | Sí | Cantidad de conceptos por página. Máximo: 1,000 |
Límite: El número máximo de elementos por página (
pageSize) es 1,000. Para calcular el total de páginas:totalPages = Math.Ceiling(totalItems / pageSize).
Relación con facturas: Cuando hay line items, el sistema puede enriquecer con datos de facturas relacionadas mediante
invoiceInternalIdentification(UUID de la factura).
Respuesta Exitosa (200 OK)
Retorna el objeto pagedFinancialResult con el total de conceptos disponibles y el array de la página solicitada.
Estructura de Respuesta
{
"pagedFinancialResult": {
"id": "123e4567-e89b-12d3-a456-426614174000",
"totalItems": 3500,
"lineItems": [
{
"invoiceType": "I",
"senderId": "RFC123",
"senderName": "Emisor S.A.",
"receiverId": "RFC456",
"receiverName": "Receptor S.A.",
"serie": "A",
"folio": "12345",
"invoiceDate": "2024-11-15",
"invoiceInternalIdentification": "uuid-factura",
"description": "Concepto ejemplo",
"productServiceCode": "84111506",
"productServiceCodeDescription": "Servicios de cómputo",
"quantity": 1.0,
"unitCode": "E48",
"unitDescription": "Unidad de servicio",
"unitAmount": 10000.00,
"currencyOriginal": "MXN",
"unitPriceOriginal": 10000.00,
"unitPrice": 10000.00,
"amountBeforeTaxOriginal": 10000.00,
"amountBeforeTax": 10000.00,
"lastPaymentDate": "2024-12-01",
"discounts": 0,
"taxObject": "02",
"customsDeclarationNumber": null,
"taxRetainedIncome": null,
"taxRetainedVat": null,
"taxRetainedExcise": null,
"taxTransferredIncome": null,
"taxTransferredTotal": 1600.00,
"taxTransferredLocal": null,
"transferredIncomeTax": null,
"transferredVat": 1600.00,
"transferredSpecialTax": null,
"verificationStatus": "Vigente",
"paymentMethod": "PUE",
"originalTotal": 11600.00,
"subtotal": 10000.00,
"total": 11600.00,
"paymentCondition": "Contado",
"taxRetainedTotal": null,
"usage": "G03",
"category": null,
"paymentForm": "03",
"issuerTaxRegime": "601",
"issuerAddress": "Dirección fiscal",
"receiverTaxRegime": "601",
"receiverAddress": "Dirección fiscal",
"cancellationDate": null,
"exchangeRate": 1,
"version": "4.0",
"exportType": null,
"relatedDocumentType": null,
"relatedDocumentInternalIds": null
}
]
}
}
pagedFinancialResult.totalItems: total de conceptos disponibles (en todas las páginas).pagedFinancialResult.lineItems: array de partidas de la página actual (hastapageSizeelementos).
Objeto pagedFinancialResult
| Campo | Tipo | Descripción |
|---|---|---|
id |
string | null | Identificador de la petición |
totalItems |
int | null | Total de conceptos disponibles (para paginación) |
lineItems |
array | Lista de partidas de facturas de la página solicitada |
Campos del elemento LineItem
| Campo | Tipo | Descripción |
|---|---|---|
invoiceType |
string | null | Tipo de factura (I = emitida, E = recibida) |
senderId |
string | null | RFC del emisor |
senderName |
string | null | Nombre del emisor |
receiverId |
string | null | RFC del receptor |
receiverName |
string | null | Nombre del receptor |
serie |
string | null | Serie de la factura |
folio |
string | null | Folio de la factura |
invoiceDate |
string | null | Fecha de emisión de la factura |
invoiceInternalIdentification |
string | null | Identificación interna de la factura (UUID) |
description |
string | null | Descripción del concepto |
productServiceCode |
string | null | Clave de producto o servicio |
productServiceCodeDescription |
string | null | Descripción de la clave de producto o servicio |
quantity |
float | null | Cantidad |
unitCode |
string | null | Código de unidad |
unitDescription |
string | null | Descripción de la unidad |
unitAmount |
float | null | Importe unitario |
currencyOriginal |
string | null | Moneda original |
unitPriceOriginal |
float | null | Precio unitario original |
unitPrice |
float | null | Precio unitario en MXN |
amountBeforeTaxOriginal |
float | null | Importe antes de impuestos (original) |
amountBeforeTax |
float | null | Importe antes de impuestos (MXN) |
lastPaymentDate |
string | null | Fecha del último pago |
discounts |
float | null | Descuentos |
taxObject |
string | null | Objeto de impuesto |
customsDeclarationNumber |
string | null | Número de pedimento |
taxRetainedIncome |
float | null | ISR retenido |
taxRetainedVat |
float | null | IVA retenido |
taxRetainedExcise |
float | null | IEPS retenido |
taxTransferredIncome |
float | null | ISR trasladado |
taxTransferredTotal |
float | null | Total de impuestos trasladados |
taxTransferredLocal |
float | null | Impuestos locales trasladados |
transferredIncomeTax |
float | null | Impuesto sobre la renta trasladado |
transferredVat |
float | null | IVA trasladado |
transferredSpecialTax |
float | null | Impuesto especial trasladado |
verificationStatus |
string | null | Estado de verificación SAT |
paymentMethod |
string | null | Método de pago |
originalTotal |
float | null | Total original |
subtotal |
float | null | Subtotal |
total |
float | null | Total |
paymentCondition |
string | null | Condiciones de pago |
taxRetainedTotal |
float | null | Total de impuestos retenidos |
usage |
string | null | Uso del CFDI |
category |
string | null | Categoría |
paymentForm |
string | null | Forma de pago |
issuerTaxRegime |
string | null | Régimen fiscal del emisor |
issuerAddress |
string | null | Dirección fiscal del emisor |
receiverTaxRegime |
string | null | Régimen fiscal del receptor |
receiverAddress |
string | null | Dirección fiscal del receptor |
cancellationDate |
string | null | Fecha de cancelación |
exchangeRate |
float | null | Tipo de cambio |
version |
string | null | Versión del CFDI |
exportType |
string | null | Tipo de exportación |
relatedDocumentType |
string | null | Tipo de documento relacionado |
relatedDocumentInternalIds |
string | null | IDs internos de documentos relacionados |
Respuesta de Error (400 Bad Request / 404 Not Found / 500 Internal Server Error)
{
"error": "Mensaje de error descriptivo",
"requestId": "123e4567-e89b-12d3-a456-426614174000"
}
Endpoint: Get Tax Returns List
Descripción
Permite obtener el listado de declaraciones disponibles para una solicitud. Retorna únicamente el array taxReturnsInformation con los identificadores y datos básicos de cada declaración.
Flujo de uso: Este endpoint debe utilizarse primero para obtener el listado de declaraciones disponibles. Una vez obtenido el
taxReturnIdde cada declaración en el listado, puede utilizarse para consultar la información detallada o el PDF mediante los endpoints correspondientes.
Método: GET
URL: /api/v1/financial/tax-returns/list/{requestId}
Headers:
Authorization: Bearer {token}
Parámetros de URL
| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
requestId |
string (UUID) | Sí | Identificador único de la solicitud obtenido en la creación |
Respuesta Exitosa (200 OK)
Retorna un array de objetos TaxReturnsDetailSummary con la información básica de cada declaración:
Estructura de Respuesta
{
"taxReturnsInformation": [
{
"taxReturnId": "123e4567-e89b-12d3-a456-426614174000",
"period": "ANUAL 2023",
"declarationType": "Normal"
}
]
}
Objeto TaxReturnsDetailSummary
| Campo | Tipo | Descripción |
|---|---|---|
taxReturnId |
string (UUID) | Identificador único de la declaración. Este ID debe utilizarse para obtener el detalle completo o el PDF |
period |
string | null | Período de la declaración. Formato: "PERIODO AÑO" (ejemplo: "ANUAL 2023") |
declarationType |
string | null | Tipo de declaración (ejemplo: "Normal", "Complementaria") |
Respuesta de Error (400 Bad Request / 404 Not Found / 500 Internal Server Error)
{
"error": "Mensaje de error descriptivo",
"requestId": "123e4567-e89b-12d3-a456-426614174000"
}
Endpoint: Get Tax Return Information
Descripción
Permite obtener la información detallada de una declaración específica utilizando su taxReturnId. Retorna todos los datos estructurados de la declaración incluyendo ingresos, deducciones, determinación de impuestos y estados financieros.
Identificador requerido: El
taxReturnIdutilizado en este endpoint debe obtenerse previamente del campotaxReturnIddel listado retornado por el endpoint/api/v1/financial/tax-returns/list/{requestId}.
Método: GET
URL: /api/v1/financial/tax-returns/info/{taxReturnId}
Headers:
Authorization: Bearer {token}
Parámetros de URL
| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
taxReturnId |
string (UUID) | Sí | Identificador único de la declaración obtenido del campo taxReturnId del listado |
Respuesta Exitosa (200 OK)
Retorna un objeto TaxReturnsDetailInfo con la información completa de la declaración:
Estructura de Respuesta
{
"id": "string",
"createdAt": "string | null",
"type": "string",
"income": {...},
"collectedAt": "string | null",
"determination": {...},
"integrityKeys": [...],
"additionalData": {...},
"additionalStructuredData": {...},
"incomeStatement": {...},
"generalInformation": {...},
"fiscalYearClosingFigures": {...},
"authorizedDeductions": {...},
"financialPositionBalance": {...},
"r1IsrLegalEntitiesPaymentDetail": {...},
"distributedDividendsOrProfits": {...},
"incomeTaxDetermination": {...}
}
Objeto TaxReturnsDetailInfo
| Campo | Tipo | Descripción |
|---|---|---|
id |
string | null | Identificador único del registro |
createdAt |
string (ISO 8601) | null | Fecha de creación del registro |
type |
string | null | Tipo de declaración |
income |
Income | null | Información detallada de ingresos |
collectedAt |
string (ISO 8601) | null | Fecha de recolección de los datos |
determination |
Determination | null | Determinación del impuesto |
integrityKeys |
array<string> | null | Claves de integridad |
additionalData |
object | null | Datos adicionales |
additionalStructuredData |
AdditionalStructuredData | null | Datos adicionales estructurados |
incomeStatement |
IncomeStatement | null | Estado de resultados |
generalInformation |
GeneralInformation | null | Información general de la declaración |
fiscalYearClosingFigures |
FiscalYearClosingFigures | null | Cifras de cierre del ejercicio |
authorizedDeductions |
AuthorizedDeductions | null | Deducciones autorizadas |
financialPositionBalance |
FinancialPositionBalance | null | Estado de posición financiera (balance) |
r1IsrLegalEntitiesPaymentDetail |
R1IsrLegalEntitiesPaymentDetail | null | Detalle de pago R1 ISR personas morales |
distributedDividendsOrProfits |
object | null | Dividendos o utilidades distribuidos |
incomeTaxDetermination |
IncomeTaxDetermination | null | Determinación detallada del ISR |
Objeto Income
| Campo | Tipo | Descripción |
|---|---|---|
nominalIncome |
number | null | Ingresos nominales |
annualInflationAdjustment |
number | null | Ajuste anual por inflación |
detailedNominalIncome |
array<DetailedNominalIncome> | null | Detalle de ingresos nominales |
totalAccumulableIncome |
number | null | Total de ingresos acumulables |
exemptOrNonAccumulableIncome |
number | null | Ingresos exentos o no acumulables |
annualInflationAdjustmentDetails |
AnnualInflationAdjustmentDetails | null | Detalles del ajuste anual por inflación |
detailedNominalIncomeAmount |
number | null | Importe detallado de ingresos nominales |
nominalIncomeAmountToDetail |
number | null | Importe por detallar de ingresos nominales |
Objeto DetailedNominalIncome
| Campo | Tipo | Descripción |
|---|---|---|
amount |
number | null | Importe del ingreso |
incomeType |
string | null | Tipo de ingreso |
Objeto AnnualInflationAdjustmentDetails
| Campo | Tipo | Descripción |
|---|---|---|
annualAdjustmentFactor |
number | null | Factor de ajuste anual |
averageAnnualDebtBalance |
number | null | Saldo promedio anual de deudas |
averageAnnualCreditBalance |
number | null | Saldo promedio anual de créditos |
deductibleAnnualInflationAdjustment |
number | null | Ajuste anual por inflación deducible |
accumulableAnnualInflationAdjustment |
number | null | Ajuste anual por inflación acumulable |
differenceInAverageAnnualDebtBalances |
number | null | Diferencia en saldos promedio anual de deudas |
differenceInAverageAnnualCreditBalances |
number | null | Diferencia en saldos promedio anual de créditos |
determinationCorrespondsToFiscalYearLessThan12Months |
boolean | null | Determinación corresponde a ejercicio menor a 12 meses |
Objeto Determination
| Campo | Tipo | Descripción |
|---|---|---|
fiscalResult |
number | null | Resultado fiscal |
totalWithholdings |
number | null | Total de retenciones |
incomeTaxChargedToFiscalYear |
number | null | ISR a cargo del ejercicio |
incomeTaxInFavorOfFiscalYear |
number | null | ISR a favor del ejercicio |
profitSharingPaidInFiscalYear |
number | null | PTU pagada en el ejercicio |
fiscalLossBeforeProfitSharing |
number | null | Pérdida fiscal antes de PTU |
fiscalLossOfFiscalYear |
number | null | Pérdida fiscal del ejercicio |
fiscalProfitBeforeProfitSharing |
number | null | Utilidad fiscal antes de PTU |
incomeTaxWithheldFromTaxpayer |
number | null | ISR retenido al contribuyente |
totalAccumulableIncome |
number | null | Total de ingresos acumulables |
fiscalProfitOfFiscalYear |
number | null | Utilidad fiscal del ejercicio |
taxCausedByFiscalYear |
number | null | Impuesto causado del ejercicio |
provisionalPaymentsMade |
number | null | Pagos provisionales efectuados |
totalAuthorizedDeductions |
number | null | Total de deducciones autorizadas |
incomeTaxOfFiscalYear |
number | null | Impuesto sobre la renta del ejercicio |
fiscalLossesFromPreviousFiscalYears |
number | null | Pérdidas fiscales de ejercicios anteriores |
totalIncomeTaxWithheldOnlyPaidPeriods |
number | null | Total de ISR retenido solo períodos pagados |
creditableTaxPaidAbroad |
number | null | Impuesto acreditable pagado en el extranjero |
incomeTaxWithheldFromIncomeForStartOfOperations |
number | null | ISR retenido de ingresos por inicio de operaciones |
creditableTaxForDistributedDividendsOrProfits |
number | null | Impuesto acreditable por dividendos o utilidades distribuidas |
Objeto GeneralInformation
| Campo | Tipo | Descripción |
|---|---|---|
rfc |
string | null | RFC del contribuyente |
name |
string | null | Nombre del contribuyente |
fiscalYear |
number | null | Año del ejercicio fiscal |
operationNumber |
string | null | Número de operación |
declarationType |
string | null | Tipo de declaración |
declarationPeriod |
string | null | Período de la declaración |
complementaryType |
string | null | Tipo de declaración complementaria |
presentationDateTime |
string (ISO 8601) | null | Fecha y hora de presentación |
businessName |
string | null | Denominación o razón social |
Objetos adicionales: La respuesta incluye objetos adicionales como
AdditionalStructuredData,IncomeStatement,FiscalYearClosingFigures,AuthorizedDeductions,FinancialPositionBalance,R1IsrLegalEntitiesPaymentDetail, yIncomeTaxDeterminationque contienen información detallada específica de cada tipo de declaración. La estructura completa puede variar según el tipo de declaración.
Respuesta de Error (400 Bad Request / 404 Not Found / 500 Internal Server Error)
{
"error": "Mensaje de error descriptivo",
"taxReturnId": "123e4567-e89b-12d3-a456-426614174000"
}
Endpoint: Get Tax Return PDF
Descripción
Permite obtener el documento PDF de una declaración específica utilizando su taxReturnId.
Identificador requerido: El
taxReturnIdutilizado en este endpoint debe obtenerse previamente del campotaxReturnIddel listado retornado por el endpoint/api/v1/financial/tax-returns/list/{requestId}.
Método: GET
URL: /api/v1/financial/tax-returns/pdf/{taxReturnId}
Headers:
Authorization: Bearer {token}
Parámetros de URL
| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
taxReturnId |
string (UUID) | Sí | Identificador único de la declaración (mismo taxReturnId utilizado para obtener la información) |
Respuesta Exitosa (200 OK)
- Content-Type:
application/pdf - Content-Disposition:
attachment; filename=declaracion-{taxReturnId}.pdf - Body: Contenido binario del archivo PDF
Respuesta de Error (400 Bad Request / 404 Not Found / 500 Internal Server Error)
{
"error": "Mensaje de error descriptivo",
"taxReturnId": "123e4567-e89b-12d3-a456-426614174000"
}
Códigos de Estado HTTP - GET Financiero
| Código | Descripción |
|---|---|
200 |
Solicitud encontrada y resultados disponibles |
400 |
Error en la validación del requestId o parámetros inválidos |
401 |
No autorizado (token de autenticación inválido o faltante) |
404 |
Solicitud no encontrada con el requestId proporcionado |
500 |
Error interno del servidor |
Códigos de Estado HTTP - GET Laboral
| Código | Descripción |
|---|---|
200 |
Solicitud encontrada y resultados disponibles |
400 |
Error en la validación del requestId |
401 |
No autorizado (token de autenticación inválido o faltante) |
404 |
Solicitud no encontrada con el requestId proporcionado |
500 |
Error interno del servidor |
Ejemplo de Uso - GET Laboral
Consultar Estado de Solicitud IMSS
Request:
GET /api/v1/labor/123e4567-e89b-12d3-a456-426614174000
Authorization: Bearer {token}
Response (200 OK):
{
"date": "2019-01-05T00:00:00",
"quoteStatus": "Empleado",
"participantDetails": [
{
"id": "8248a852-2712-4205-8fb3-4f5bfc99bb5a",
"employeeStatus": "ACTIVO",
"employer": "PROVEEDORA DE ABARROTES RIVERA",
"employerId": "E066313010",
"state": "PUEBLA",
"registeredWeeks": 370,
"monthlySalary": 23518.17,
"startDate": "2019-01-05T00:00:00",
"endDate": null,
"baseSalary": 773.2
}
],
"participantMovements": [
{
"id": "3691c203-0f3a-46b8-b81c-b35521b5142b",
"eventType": "Modificación salarial",
"eventDate": "2026-01-01T00:00:00",
"baseSalary": 773.2,
"employer": "PROVEEDORA DE ABARROTES RIVERA"
}
],
"participantSocialSecuritySummary": {
"weeksRedeemed": 0,
"weeksReinstated": 0,
"weeksContributed": 393
}
}
Consultar Estado de Solicitud ISSSTE
Request:
GET /api/v1/labor/123e4567-e89b-12d3-a456-426614174001
Authorization: Bearer {token}
Response (200 OK):
{
"date": "2014-11-16T00:00:00",
"quoteStatus": "Empleado",
"participantDetails": [
{
"id": "c3f1545d-1438-4822-9206-2e0715d59c88",
"employeeStatus": "ACTIVO",
"employer": "PODER JUDICIAL DE LA FEDERACION (PJF) ; PJF. CONSEJO DE LA JUDICATURA FEDERAL, PACHUCA, HGO.",
"employerId": "",
"state": "",
"registeredWeeks": 98,
"monthlySalary": 34413.42,
"startDate": "2024-02-01T00:00:00",
"endDate": null,
"baseSalary": 1131.4
}
],
"participantMovements": [
{
"id": "64cd0260-be34-4239-a26d-4aa435b2afb0",
"eventType": "DYE_CERTIFICATE",
"eventDate": "2025-09-01T00:00:00",
"baseSalary": 1131.4,
"employer": "PJF. ORGANO DE ADMINISTRACION JUDICIAL, PACHUCA, HGO."
},
{
"id": "cdfcfc56-bb57-4ce1-9cbe-5cf1b62e220b",
"eventType": "NORMAL",
"eventDate": "2019-02-01T00:00:00",
"baseSalary": 844.9,
"employer": "PJF. CONSEJO DE LA JUDICATURA FEDERAL, PACHUCA, HGO."
}
],
"participantSocialSecuritySummary": {
"weeksRedeemed": 0,
"weeksReinstated": 0,
"weeksContributed": 0
}
}
Ejemplos de Uso
Ejemplos de Uso - Laboral
Ejemplo 1: Persona Física - IMSS
Request:
POST /api/v1/requests
Authorization: Bearer {token}
Content-Type: application/json
{
"platform": "imss",
"requestType": "external",
"externalId": "REQ-2026-XYZ789",
"customer": {
"personType": "individual",
"fullName": "Juan Pérez García",
"businessName": null,
"rfc": "PERG800101HDF",
"curp": "PERG800101HDFRZN01",
"contact": {
"email": "juan.perez@ejemplo.com",
"phone": "+525512345678"
}
},
"sourceSystem": {
"system": "SistemaCredito",
"folio": "CRED-2026-001",
"product": "Evaluación Crediticia"
}
}
Response:
{
"result": {
"status": "in_progress",
"requestId": "123e4567-e89b-12d3-a456-426614174000",
"platform": "imss"
},
"correlationId": "123e4567-e89b-12d3-a456-426614174002"
}
Ejemplo 2: Persona Física - ISSSTE
Request:
POST /api/v1/requests
Authorization: Bearer {token}
Content-Type: application/json
{
"platform": "issste",
"requestType": "external",
"externalId": "REQ-2026-ISS001",
"customer": {
"personType": "individual",
"fullName": "María González López",
"businessName": null,
"rfc": "GOLM850315ABC",
"curp": "GOLM850315MDFRZN02",
"contact": {
"email": "maria.gonzalez@ejemplo.com",
"phone": "+525555555555"
}
},
"sourceSystem": {
"system": "SistemaCredito",
"folio": "CRED-2026-002",
"product": "Evaluación Crediticia"
}
}
Ejemplo 3: Error de Validación - Visor Laboral
Request (con datos inválidos para demostración de validación):
POST /api/v1/requests
Authorization: Bearer {token}
Content-Type: application/json
{
"platform": "issste",
"requestType": "external",
"externalId": "ERR-2026-TEST001",
"customer": {
"personType": "individual",
"fullName": null,
"businessName": null,
"rfc": "INVALID",
"contact": {
"email": "email-invalido",
"phone": "123"
}
},
"sourceSystem": {
"system": "MiSistema",
"folio": "FOL-2026-001",
"product": "ProductoX"
}
}
Response:
{
"result": {
"status": "error",
"error": "RFC inválido. El campo 'fullName' es requerido para personType 'individual'",
"platform": "issste"
},
"correlationId": "123e4567-e89b-12d3-a456-426614174003"
}
Ejemplos de Uso - Financiero
Ejemplo 1: Persona Física - SAT
Request:
POST /api/v1/requests
Authorization: Bearer {token}
Content-Type: application/json
{
"platform": "sat",
"requestType": "external",
"externalId": "REQ-2026-SAT001",
"customer": {
"personType": "individual",
"fullName": "María González López",
"businessName": null,
"rfc": "GOLM850315ABC",
"curp": null,
"contact": {
"email": "maria.gonzalez@ejemplo.com",
"phone": "+525555555555"
}
},
"sourceSystem": {
"system": "SistemaFiscal",
"folio": "FISC-2026-050",
"product": "Verificación Fiscal"
}
}
Response:
{
"result": {
"status": "in_progress",
"requestId": "123e4567-e89b-12d3-a456-426614174010",
"platform": "sat"
},
"correlationId": "123e4567-e89b-12d3-a456-426614174011"
}
Ejemplo 2: Persona Moral - SAT
Request:
POST /api/v1/requests
Authorization: Bearer {token}
Content-Type: application/json
{
"platform": "sat",
"requestType": "external",
"externalId": "TRX-2026-DEF456",
"customer": {
"personType": "organization",
"fullName": null,
"businessName": "Mi Empresa SA de CV",
"rfc": "MEM850101ABC",
"curp": null,
"contact": {
"email": "contacto@miempresa.com",
"phone": "+525598765432"
}
},
"sourceSystem": {
"system": "SistemaFiscal",
"folio": "FISC-2026-042",
"product": "Verificación Fiscal"
}
}
Response:
{
"result": {
"status": "in_progress",
"requestId": "123e4567-e89b-12d3-a456-426614174020",
"platform": "sat"
},
"correlationId": "123e4567-e89b-12d3-a456-426614174021"
}
Ejemplo 3: Consultar Estado Fiscal - Información Estructurada
Request:
GET /api/v1/financial/status/info/123e4567-e89b-12d3-a456-426614174010
Authorization: Bearer {token}
Response (200 OK):
{
"id": "abc123-def456-ghi789",
"createdAt": "2026-02-17T10:30:00Z",
"idCif": "CIF123456",
"officialName": "EMPRESA EJEMPLO SA DE CV",
"digitalStamp": "sello-digital-123",
"digitalStampChain": "cadena-sello-digital",
"placeAndDateOfIssuance": "Ciudad de México, 17 de febrero de 2026",
"address": {
"state": "Ciudad de México",
"street": "Av. Ejemplo",
"suburb": "Colonia Ejemplo",
"postalCode": "01234",
"fullAddress": "Av. Ejemplo 123, Colonia Ejemplo, Ciudad de México, 01234"
},
"taxPayerInformation": {
"rfc": "EEM850101ABC",
"name": "EMPRESA EJEMPLO SA DE CV",
"socialName": "EMPRESA EJEMPLO SA DE CV",
"statusPadron": "Activo"
},
"regimes": [
{
"regimen": "601",
"initialDate": "2020-01-01T00:00:00Z",
"endDate": null
}
],
"obligations": [],
"economicActivity": []
}
Ejemplo 4: Obtener Documento PDF de Constancia Fiscal
Request:
GET /api/v1/financial/status/pdf/123e4567-e89b-12d3-a456-426614174010
Authorization: Bearer {token}
Response (200 OK):
- Content-Type:
application/pdf - Content-Disposition:
attachment; filename=constancia-situacion-fiscal-123e4567-e89b-12d3-a456-426614174010.pdf - Body: Contenido binario del archivo PDF
Ejemplo 5: Consultar Opinión de Cumplimiento Fiscal - Información Estructurada
Request:
GET /api/v1/financial/compliance/info/123e4567-e89b-12d3-a456-426614174030
Authorization: Bearer {token}
Response (200 OK):
{
"id": "xyz789-abc123-def456",
"createdAt": "2026-02-17T14:20:00Z",
"rfc": "EEM850101ABC",
"outcome": "POSITIVE",
"outcomeValue": "POSITIVO",
"collectedAt": "2026-02-17T14:15:00Z",
"additionalData": {},
"internalIdentification": "INT-2026-001"
}
Ejemplo 6: Obtener Documento PDF de Opinión de Cumplimiento Fiscal
Request:
GET /api/v1/financial/compliance/pdf/123e4567-e89b-12d3-a456-426614174030
Authorization: Bearer {token}
Response (200 OK):
- Content-Type:
application/pdf - Content-Disposition:
attachment; filename=opinion-cumplimiento-fiscal-123e4567-e89b-12d3-a456-426614174030.pdf - Body: Contenido binario del archivo PDF
Ejemplo 7: Obtener Listado de Declaraciones
Request:
GET /api/v1/financial/tax-returns/list/123e4567-e89b-12d3-a456-426614174010
Authorization: Bearer {token}
Response (200 OK):
{
"taxReturnsInformation": [
{
"taxReturnId": "abc123-def456-ghi789",
"period": "ANUAL 2023",
"declarationType": "Normal"
},
{
"taxReturnId": "xyz789-abc123-def456",
"period": "ANUAL 2022",
"declarationType": "Complementaria"
}
]
}
Ejemplo 8: Consultar Información Detallada de Declaración
Request:
GET /api/v1/financial/tax-returns/info/abc123-def456-ghi789
Authorization: Bearer {token}
Response (200 OK):
{
"id": "abc123-def456-ghi789",
"type": "Normal",
"generalInformation": {
"rfc": "EEM850101ABC",
"name": "EMPRESA EJEMPLO SA DE CV",
"fiscalYear": 2023,
"declarationType": "Normal",
"declarationPeriod": "ANUAL 2023",
"presentationDateTime": "2024-04-15T10:30:00Z"
},
"income": {
"nominalIncome": 5000000.00,
"totalAccumulableIncome": 4800000.00,
"exemptOrNonAccumulableIncome": 200000.00
},
"determination": {
"fiscalProfitOfFiscalYear": 1200000.00,
"incomeTaxOfFiscalYear": 360000.00,
"provisionalPaymentsMade": 300000.00,
"incomeTaxChargedToFiscalYear": 60000.00
}
}
Ejemplo 9: Obtener Documento PDF de Declaración
Request:
GET /api/v1/financial/tax-returns/pdf/abc123-def456-ghi789
Authorization: Bearer {token}
Response (200 OK):
- Content-Type:
application/pdf - Content-Disposition:
attachment; filename=declaracion-abc123-def456-ghi789.pdf - Body: Contenido binario del archivo PDF
Ejemplo 10: Error de Validación - Visor Financiero
Request (con datos inválidos para demostración de validación):
POST /api/v1/requests
Authorization: Bearer {token}
Content-Type: application/json
{
"platform": "sat",
"requestType": "external",
"externalId": "ERR-2026-FIN001",
"customer": {
"personType": "organization",
"fullName": null,
"businessName": null,
"rfc": "INVALID",
"curp": null,
"contact": {
"email": "email-invalido",
"phone": "123"
}
},
"sourceSystem": {
"system": "MiSistema",
"folio": "FOL-2026-001",
"product": "ProductoX"
}
}
Response:
{
"result": {
"status": "error",
"error": "RFC inválido. El campo 'businessName' es requerido para personType 'organization'",
"platform": "sat"
},
"correlationId": "123e4567-e89b-12d3-a456-426614174030"
}
Validaciones
Validaciones de Campos
- platform: Debe ser uno de los valores permitidos:
"imss","issste","sat"- Si
personTypees"organization", únicamente se permite"sat"
- Si
- requestType: Debe ser
"external" - externalId: Debe ser un identificador único proporcionado por el sistema origen. No puede estar vacío
- personType: Debe ser
"individual"o"organization" - RFC:
- Debe cumplir con el formato válido de RFC mexicano
- Persona física: Opcional para IMSS e ISSSTE, obligatorio para SAT
- Persona moral: Obligatorio para SAT (no aplica para IMSS/ISSSTE)
- CURP:
- Si se proporciona, debe cumplir con el formato válido de CURP mexicano
- Persona física: Obligatorio para IMSS e ISSSTE, opcional para SAT
- Persona moral: No se requiere para SAT (no aplica para IMSS/ISSSTE)
- email: Debe cumplir con el formato válido de correo electrónico
- phone: Debe incluir código de país y cumplir con el formato válido
- fullName: Requerido si
personTypees"individual", debe sernullsi es"organization" - businessName: Requerido si
personTypees"organization", debe sernullsi es"individual"
Notas de Implementación
Procesamiento Asíncrono
Las consultas se procesan de forma asíncrona. Al crear una solicitud, el sistema retorna inmediatamente un requestId y el estado "in_progress". El procesamiento de la consulta se ejecuta en segundo plano.
Identificadores
- El
requestIdgenerado es un UUID v4 único por solicitud y debe utilizarse para consultar el estado y resultados mediante el método GET una vez recibida la notificación mediante webhook. - El
correlationIdpermite rastrear la solicitud a través de diferentes sistemas y registros de logs.
Endpoints de Consulta Diferenciados
Según la plataforma consultada, deben utilizarse diferentes endpoints GET:
- Plataformas laborales (IMSS, ISSSTE):
/api/v1/labor/{requestId} - Plataforma financiera (SAT):
- Estado fiscal (Constancia de situación fiscal):
- Información estructurada:
/api/v1/financial/status/info/{requestId} - Documento PDF de constancia:
/api/v1/financial/status/pdf/{requestId}
- Información estructurada:
- Opinión de cumplimiento fiscal:
- Información estructurada:
/api/v1/financial/compliance/info/{requestId} - Documento PDF de opinión:
/api/v1/financial/compliance/pdf/{requestId}
- Información estructurada:
- Facturas (CFDI):
- Listado paginado:
/api/v1/financial/invoices/{requestId}/{pageNumber}/{pageSize}(máximo 1,000 elementos por página)
- Listado paginado:
- Estado de resultados:
- Listado paginado:
/api/v1/financial/statement/{requestId}/{pageNumber}/{pageSize}(máximo 1,000 elementos por página)
- Listado paginado:
- Balance general:
- Listado paginado:
/api/v1/financial/balance/{requestId}/{pageNumber}/{pageSize}(máximo 1,000 elementos por página)
- Listado paginado:
- Flujo de efectivo:
- Listado paginado:
/api/v1/financial/cashflow/{requestId}/{pageNumber}/{pageSize}(máximo 1,000 elementos por página)
- Listado paginado:
- Métricas financieras:
- Listado paginado:
/api/v1/financial/metrics/{requestId}/{pageNumber}/{pageSize}(máximo 1,000 elementos por página)
- Listado paginado:
- Ventas mensuales:
- Listado paginado:
/api/v1/financial/monthly-sales/{requestId}/{pageNumber}/{pageSize}(máximo 1,000 elementos por página)
- Listado paginado:
- Clientes:
- Listado paginado:
/api/v1/financial/clients/{requestId}/{pageNumber}/{pageSize}(máximo 1,000 elementos por página)
- Listado paginado:
- Proveedores:
- Listado paginado:
/api/v1/financial/suppliers/{requestId}/{pageNumber}/{pageSize}(máximo 1,000 elementos por página)
- Listado paginado:
- Nómina (empleador):
- Listado paginado:
/api/v1/financial/payroll-employers/{requestId}/{pageNumber}/{pageSize}(máximo 1,000 elementos por página)
- Listado paginado:
- Nómina (empleado):
- Listado paginado:
/api/v1/financial/payroll-employees/{requestId}/{pageNumber}/{pageSize}(máximo 1,000 elementos por página)
- Listado paginado:
- Ventas por producto:
- Listado paginado:
/api/v1/financial/product-sales/{requestId}/{pageNumber}/{pageSize}(máximo 1,000 elementos por página)
- Listado paginado:
- Costos por producto:
- Listado paginado:
/api/v1/financial/product-costs/{requestId}/{pageNumber}/{pageSize}(máximo 1,000 elementos por página)
- Listado paginado:
- Partidas de facturas (line items):
- Listado paginado:
/api/v1/financial/line-items/{requestId}/{pageNumber}/{pageSize}(máximo 1,000 elementos por página)
- Listado paginado:
- Declaraciones:
- Listado de declaraciones:
/api/v1/financial/tax-returns/list/{requestId} - Información detallada:
/api/v1/financial/tax-returns/info/{taxReturnId}(requieretaxReturnIddel listado) - Documento PDF de declaración:
/api/v1/financial/tax-returns/pdf/{taxReturnId}(requieretaxReturnIddel listado)
- Listado de declaraciones:
- Estado fiscal (Constancia de situación fiscal):
Una vez recibida la notificación mediante webhook, debe realizarse una solicitud GET utilizando el requestId en el endpoint correspondiente según la plataforma y el tipo de consulta para obtener los resultados.
Formato de Datos
- El estado inicial de una solicitud creada exitosamente es
"in_progress"debido al procesamiento asíncrono. - Todas las fechas y timestamps se encuentran en formato ISO 8601 (UTC).