XSA - Manual del API
LEGALES La reproducción total o parcial de este documento sin el permiso escrito de Tralix México. se encuentra estrictamente prohibida. Este documento puede incluir marcas y nombres comerciales para referirse a las entidades que son propietarias de los mismos o a sus productos. Tralix México. Renuncia a cualquier interés sobre la propiedad de marcas y nombres comerciales que no sean los suyos. Tralix puede cambiar las especificaciones y capacidades del producto sin previo aviso. Observaciones. Copyright © 2024 Tralix México.
Portada
La reproducción total o parcial de este documento sin el permiso escrito de Tralix México. Se encuentra estrictamente prohibida. Este documento puede incluir marcas y nombres comerciales para referirse a las entidades que son propietarias de los mismos o a sus productos Tralix México renuncia a cualquier interés sobre la propiedad de marcas y nombres comerciales que no sean los suyos. Tralix puede cambiar las especificaciones y capacidades del producto sin previo aviso.
Observaciones.
Copyright © 2020 Tralix México.
Esta Documentación es de uso público para clientes de Misfacturas.net propiedad de Tralix México.
Introducción
El Consorcio World Wide Web (W3C) es una comunidad internacional donde las organizaciones Miembro desarrollan estándares Webs, y han definido los Web Services como sistemas de software creados para soportar una interacción interoperable equipo a equipo sobre una red.
Los Web Services suelen ser APIs Web que pueden ser accedidos dentro de una red (principalmente Internet) y son ejecutados en el sistema donde residen. El estilo de arquitectura que hemos utilizado es el REST (Representational State Transfer), de tal manera que los servicios web deben cumplir con los siguientes principios:
- Un protocolo cliente/servidor sin estado: cada mensaje HTTP contiene toda la información necesaria para comprender la petición. Por lo que ni el cliente ni el servidor necesitan recordar ningún estado de las comunicaciones entre mensajes. Sin embargo, en la práctica, muchas aplicaciones basadas en HTTP utilizan cookies y otros mecanismos para mantener el estado de la sesión (algunas de estas prácticas, como la reescritura de URLs, no son permitidas por REST).
- Un conjunto de operaciones bien definidas que se aplican a todos los recursos de información: HTTP en sí define un conjunto pequeño de operaciones, las más importantes son POST, GET, PUT y DELETE. Con frecuencia estas operaciones se equiparan a las operaciones CRUD en bases de datos (ABMC: Alta, Baja, Modificación y Consulta) que se requieren para la persistencia de datos, aunque POST no encaja exactamente en este esquema.
- Una sintaxis universal para identificar los recursos. En un sistema REST, cada recurso es direccionable únicamente a través de su URI.
- El uso de hipermedios, tanto para la información de la aplicación como para las transiciones de estado de la aplicación: la representación de este estado en un sistema REST son típicamente HTML o XML. Como resultado de esto, es posible navegar de un recurso REST a muchos otros, simplemente siguiendo enlaces sin requerir el uso de registros u otra infraestructura adicional.
Cliente/Servidor
Como servicios web, son cliente servidor y definen una interfaz de comunicación entre ellos, separando completamente las responsabilidades entre ambas partes.
Sin estado
Son servicios web que no mantienen estado asociado al cliente. Cada petición que se realiza a ellos es completamente independiente de la siguiente. Todas las llamadas al mismo servicio serán idénticas.
Caché
El contenido de los servicios web REST se puede cachear de tal forma que, una vez realizada la primera petición al servicio, el resto puedan apoyarse en el caché si fuera necesario.
Servicios Uniformes
Todos los servicios REST compartirán una forma de invocación y métodos uniforme utilizando los métodos GET, POST, PUT y DELETE.
Arquitectura en capas
Todos los servicios REST están orientados hacia la escalabilidad y un cliente REST no será capaz de distinguir entre si está realizando una petición directamente al servidor, o se lo está devolviendo un sistema de cachés intermedio; o, por ejemplo, existe un balanceador que se encarga de redirigirlo a otro servidor.
Información Ténica
Puerto asignado para los servicios: 9050
Consulta de tipos de CFDs
URL |
/<keyEmpresa>/tiposCfds |
Parámetros requeridos | El parámetro obligatorio es el keyEmpresa |
Parámetros/filtros opcionales | N/A |
Método http | GET |
Descripción detallada | Regresa el Id (encriptado), nombre, serie, idSucursal (encriptado), nómina (boleano) de todos los tipos de CFDs con los que cuenta la empresa en formato json. |
Notas |
N/A |
Códigos respuesta/errores |
200 - Ok 204 - No Content - No hay tipos de CFDs 401 - Not Found - No existe la keyEmpresa |
Ejemplo |
https://localhost:9050/985408d8-64ae-48e0-b46c-473b47176205/tiposCfds |
Ejemplo respuesta (código 200) |
[{"id":"d18bb0158356449c31e72cb69e642b31","nombre":"generacion","serie":null,"idSucursal":"6ac9a2c315480d5cc5534c7e58caee5a","nomina":false},{"id":"8e327ff08a2eec8c760a91fbf08f636e","nombre":"nomina","serie":"B","idSucursal":"6ac9a2c315480d5cc5534c7e58caee5a","nomina":false}] |
Consulta de sucursales
URL | /<keyEmpresa>/sucursales |
Parámetros requeridos | El parámetro obligatorio es el keyEmpresa |
Parámetros/filtros opcionales | N/A |
Método http | GET |
Descripción detallada | Regresa el idSucursal, Nombre y TipoSucursal en formato json de todas las sucursales de la empresa. |
Notas | El parámetro Id es el Id de la sucursal. |
Códigos respuesta/errores |
200 - Ok 204 - No Content - No hay sucursales 400 - Bad Request - Parámetros incorrectos 401 - Not Found - No existe la keyEmpresa | No existe el Id de la sucursal |
Ejemplo | https://localhost:9050/985408d8-64ae-48e0-b46c-473b47176205/sucursales |
Ejemplo respuesta (código 200) | [{"idSUCURSAL":"6ac9a2c315480d5cc5534c7e58caee5a","NOMBRE":"Actver Pruebas","TIPOSUCURSAL":"MATRIZ"}] |
Consulta de CFDI
URL | /<keyEmpresa>/cfdis |
Parámetros requeridos | Al menos uno de los filtros debe ser aplicado |
Parámetros/filtros opcionales |
idSucursal (Encriptado) serie |
Método http | GET |
Descripción detallada | Regresa: idSucursal (Encriptado), rfc (del receptor), razonSocial (del receptor), fecha (YYYY-MM-DD hh:mm:ss.s) , folio, status, UUID, monto (BigDecimal), idCfd (Encriptado), serie, subtotal (BigDecimal), descuento (BigDecimal), tipoMoneda, tipoCambio (BigDecimal), iva (BigDecimal), fechaCancelacion (YYYY-MM-DD hh:mm:ss.s), tienePDF (Boleano), pedimento, fechaPedimento (pueden venir varias fechas ), aduana, pdfAndXmlDownload (link para descargar XML y pdf), pdfDownload (link para descargar el pdf), xmlDownload (link para descargar el xml), cancellCfdi (link para cancelar el cfdi) en formato json de todas los CFDIs de la empresa (de no existir el filtros) excepto nóminas |
Notas |
El formato para escribir la fecha no acepta horas. El pageSize por defecto es 50 y como máximo puede ser 100. En los headers están los links de paginación de la siguiente serie de documentos si estos sobrepasan los 50 máximos. Es posible jugar con los parámetros para hacer filtrados más detallados. |
Códigos respuesta/errores |
200 - Ok 204 - No Content - No existen CFDI 401 - Not Found - No existe la keyEmpresa |
Ejemplo |
Ejemplo con UUID #1 https://localhost:9050/985408d8-64ae-48e0-b46c-473b47176205/cfdis?uuid=9d8b7b0f-2aa6-47d7-8b45-d3abf26f57d1,c23a6470-9be2-4241-8cfa-fef55525c80f Ejemplo con FECHA #2 https://localhost:9050/985408d8-64ae-48e0-b46c-473b47176205/cfdis?fecha=2014-06-30 |
Ejemplo respuesta (código 200) |
[{"66a673fbc55109153b7d684ed56b3b63","serie":"","subtotal":"99.090000","descuento":"9999.009000","tipoMoneda":"USD","tipoCambio":"12.5014","iva":"1000008.180000","fechaCancelacion":"","tienePDF":"true","pedimento":"","fechaPedimento":"","aduana":"","pdfAndXmlDownload":"/985408d8-64ae-48e0-b46c-473b47176205/descargasCfdi?idCfdi=66a673fbc55109153b7d684ed56b3b63&representacion=XML_PDF","pdfDownload":"/985408d8-64ae-48e0-b46c-473b47176205/descargasCfdi?idCfdi= 66a673fbc55109153b7d684ed56b3b63&representacion=PDF","xmlDownload":"/985408d8-64ae-48e0-b46c-473b47176205/descargasCfdi?idCfdi= 66a673fbc55109153b7d684ed56b3b63&representacion=XML"}] |
Consulta de CFDIs de nómina
URL |
/<keyEmpresa>/cfdisNomina |
Parámetros requeridos | Al menos debe estar aplicado uno de los parámetros disponibles |
Parámetros/filtros opcionales |
idSucursal (Encriptado) rfc (del receptor) razonSocial (del receptor) fecha (formato yyyy-MM-dd) fechaInicial (formato yyyy-MM-dd) fechaFinal (formato yyyy-MM-dd) folioEspecifico folioInicial folioFinal status nombreArchivo uuid (Si es una lista separado por coma cada UUID, ver ejemplo) monto (BigDecimal) montoInicial (BigDecimal) montoFinal (BigDecimal) pageSize pageNumber |
Método http | GET |
Descripción detallada | Regresa: idSucursal (Encriptado), rfc (del receptor), razonSocial (del receptor), fecha (YYYY-MM-DD hh:mm:ss.s) , folio, status, UUID, monto (BigDecimal), idCfd (Encriptado), serie, subtotal (BigDecimal), descuento (BigDecimal), tipoMoneda, tipoCambio (BigDecimal), iva (BigDecimal), fechaCancelacion (YYYY-MM-DD hh:mm:ss.s), tienePDF (Boleano), pedimento, fechaPedimento (pueden venir vairias fechas ), aduana, pdfAndXmlDownload (link para descargar XML y pdf), pdfDownload (link para descargar el pdf), xmlDownload (link para descargar el xml), cancellCfdi (link para cancelar el cfdi) en formato json de todas las nóminas de la empresa (de no existir el filtros) |
Notas |
El formato para escribir la fecha no acepta horas. El pageSize por defecto es 50 y como máximo puede ser 100. En los headers están los link de paginación de la siguiente serie de documentos si estos sobrepasan los 50 máximos. Es posible jugar con los parámetros para hacer filtrados más detallados. |
Códigos respuesta/errores |
200 - Ok 204 - No Content - No existen CFDI de nómina 401 - Not Found - No existe la keyEmpresa |
Ejemplo |
Ejemplo con UUID #1 https://localhost:9050/985408d8-64ae-48e0-b46c-473b47176205/cfdisNomina?uuid=97c05608-58aa-4087-886d-82a69a86bc98 Ejemplo con FECHA #2 https://localhost:9050/985408d8-64ae-48e0-b46c-473b47176205/cfdisNomina?fecha=2014-06-18 |
Ejemplo respuesta (código 200) |
[{"66a673fbc55109153b7d684ed56b3b63","serie":"","subtotal":"99.090000","descuento":"9999.009000","tipoMoneda":"USD","tipoCambio":"12.5014","iva":"1000008.180000","fechaCancelacion":"","tienePDF":"true","pedimento":"","fechaPedimento":"","aduana":"","pdfAndXmlDownload":"/985408d8-64ae-48e0-b46c-473b47176205/descargasCfdi?idCfdi=66a673fbc55109153b7d684ed56b3b63&representacion=XML_PDF","pdfDownload":"/985408d8-64ae-48e0-b46c-473b47176205/descargasCfdi?idCfdi= 66a673fbc55109153b7d684ed56b3b63&representacion=PDF","xmlDownload":"/985408d8-64ae-48e0-b46c-473b47176205/descargasCfdi?idCfdi= 66a673fbc55109153b7d684ed56b3b63&representacion=XML"}] |
Generación de CFDI
URL | /<keyEmpresa>/cfdis |
Parámetros requeridos |
idTipoCfd (Encriptado) idSucursal (Encriptado) nombre (nombre del archivo fuente opcional) archivoFuente (El parámetro es el texto contenido del archivo fuente) de acuerdo al conector/adaptador configurado |
Parámetros/filtros opcionales | N/A |
Método http | PUT |
Descripción detallada | Regresa: idSucursal (Encriptado), rfc (del receptor), razonSocial (del receptor), fecha (YYYY-MM-DD hh:mm:ss.s) , folio, status, UUID, monto (BigDecimal), idCfd (Encriptado), serie, subtotal (BigDecimal), descuento (BigDecimal), tipoMoneda, tipoCambio (BigDecimal), iva (BigDecimal), fechaCancelacion (YYYY-MM-DD hh:mm:ss.s), tienePDF (Boleano), pedimento, fechaPedimento (pueden venir vairias fechas ), aduana, pdfAndXmlDownload (link para descargar XML y pdf), pdfDownload (link para descargar el pdf), xmlDownload (link para descargar el xml), cancellCfdi (link para cancelar el cfdi) en formato json del CFDI generado. |
Notas |
De existir un problema en el proceso del CFDI se regresan los errores de generación que se tuvieron. ES IMPORTANTE MENCIONAR que el contenido del documento a emitir se colocar en el Request Payload en estructura JSON En los headers se debe poner: "Content-Type: application/json" Se debe incluir el salto de línea entre registros utilizando “\n” Ejemplo: |00|idcfd|FAC|\n |
Códigos respuesta/errores |
200 - Ok 400 - Bad Request - Parámetros incorrectos 401 - Not Found - No existe la keyEmpresa |
Ejemplo |
https://localhost:9050/985408d8-64ae-48e0-b46c-473b47176205/cfdis {"idTipoCfd":"d18bb0158356449c31e72cb69e642b31","idSucursal":"6ac9a2c315480d5cc5534c7e58caee5a","nombre":"prueba.txt","archivoFuente":"|00|idcfd|FAC|\n01|1|||20140630T00:00:00|99.09|9999.09|||9999.009||Noventa y nueve billones novecientos noventa y nueve mil novecientos noventa y nueve millones novecientos noventa y nueve mil novecientos noventa y nueve 90\/10000000|USD|12.5014|REFERENCIA XXXAAAXXX|Primera Observación|Segunda Observación|Tercera Observación|\n02|PAGO EN UNA SOLA EXHIBICIÓN|10% DE INTERÉS SI NO SE PAGA ANTES DEL 05-AGOSTO-2010|CHEQUE|2010-08-05|EFECTOS FISCALES AL PAGO|\n03|01|AAA010101AAA|PATITO, S.A. DE C.V.|MÉXICO|AVENIDA CALLE |S\/N|INT. 1|COL. COLONIA|MÉXICO|REFERENCIA FRENTE AL OXXO|CUAJIMALPA|ESTADO DE MÉXICO|06860|4424876399|\n05|405010|802011|3|BOMBA MOLOTOV|150.00|450.00|PZA|Categoría 5e|205010|\n05|405011|802012|1|DISFRAZ DE CORRECAMINOS|2368231872779.000009|884346835174.000009|PZA|Categoría 5e|205011|\n05|405012|802013|10|COMIDA DE CORRECAMINOS|39.00|390.00|KG|Categoría 5e|205010|\n05|405013|802014|1|LIGA DE HULE GIGANTE|378.00|378.00|PZA|Categoría 5e|205011|\n06|IVA|16.00|9.09|\n07|IVA|58.58|\n06|IVA|16.00|999999.09|\n07|IVA|58.58|\n08|405010|APTO INTL DE CIUDAD DE MEXICO|2010-06-29|548984124578124||\n08|405011|APTO INTL DE CIUDAD DE MEXICO|2010-06-29|654651456987452||\n99|15||"} |
Ejemplo respuesta (código 200) | "uuid": "3D5DAEF4-FE52-44A5-9C82-84B6B293EC7E", "fecha": "2020-05-23 17:09:00.0", "serie": "D01", "folio": "1000", "rfc": "OIAD8404189S3", "iva": "134.390000", "monto": "974.390000", "descuento": "0.000000", "subtotal": "840.000000", "tipoCambio": "1.0000", "tipoMoneda": "MXN", "idCfd": "60014b09e2d75d1ac1260b7c4e780c00", "idSucursal": "0dd6aebbea85662fd2fe2f76ce4258b3", "status": "ALMACENADO", "produccion": true, "fechaCancelacion": "", "tienePDF": "true", "pedimento": "", "fechaPedimento": "", "aduana": "", "pdfAndXmlDownload": "/03317bd7-c60d-434f-958d-65344238e75f/descargasCfdi?idCfdi=60014b09e2d75d1ac1260b7c4e780c00&produccion=true&representacion=XML_PDF", "pdfDownload": "/03317bd7-c60d-434f-958d-65344238e75f/descargasCfdi?idCfdi=60014b09e2d75d1ac1260b7c4e780c00&produccion=true&representacion=PDF", "xmlDownload": "/03317bd7-c60d-434f-958d-65344238e75f/descargasCfdi?idCfdi=60014b09e2d75d1ac1260b7c4e780c00&produccion=true&representacion=XML" } |
Descarga del CFDI
URL | /<keyEmpresa>/descargasCfdi |
Parámetros requeridos |
Al menos debe estar aplicado uno de los parámetros disponibles |
Parámetros/filtros opcionales |
rfc (del receptor) razonSocial (del receptor) fecha (formato yyyy-MM-dd) fechaInicial (formato yyyy-MM-dd) fechaFinal (formato yyyy-MM-dd) serie folioEspecifico folioInicial folioFinal idSucursal (Encriptado) nombreArchivo uuid (Si es una lista separado por comas cada UUID, ver ejemplo) status pageSize pageNumber representacion: este puede ser XML o PDF o XML_PDF o ACUSE o ACUSE_PDF. |
Método http | GET |
Descripción detallada |
1.- Si se solicita XML y PDF o varios documentos se devolverá un archivo tipo ZIP. 2.- Si se solicita solo un CFDI, dependiendo del parámetro de representación se devolverá UN archivo XML o PDF dentro de un ZIP. 3.- Si no se incluye el parámetro se devolverá XML y PDF dentro de un zip. |
Notas |
El pageSize por defecto es 50 y como máximo puede ser 100. Contemplar el tiempo de construcción del PDF (600 PDF x minuto). En los headers están los link de paginación de la siguiente serie de documentos si estos sobrepasan los 50 máximos. Es posible jugar con los parámetros para hacer filtrados más detallados. |
Códigos respuesta/errores |
200 - Ok 204 - No Content - No existen CFDI |
Ejemplo |
Ejemplo #1 https://10.0.0.183:9050/985408d8-64ae-48e0-b46c-473b47176205/descargasCfdi?representacion=XML&pageSize=1 Ejemplo #2 https://localhost:9050/985408d8-64ae-48e0-b46c-473b47176205/descargasCfdi?uuid=9d8b7b0f-2aa6-47d7-8b45-d3abf26f57d1,dabcea47-2e61-4cdb-b71e-e43c0d108ae3 |
Ejemplo respuesta (código 200) |
Ejemplo #1 (Se descarga el archivo de tipo XML (Este no puede ser de tipo Nómina)) Ejemplo #2 (Se descarga un documento de tipo ZIP, el cual contiene los archivos XML y PDF del CFDI correspondiente al UUID indicando en la URL) |
Descarga de nómina
URL |
/<keyEmpresa>/descargasCfdiNominas |
Parámetros requeridos | Al menos uno de los filtros, no puede ir vacío |
Parámetros/filtros opcionales |
rfc (del receptor) razonSocial (del receptor) fecha (formato yyyy-MM-dd) fechaInicial (formato yyyy-MM-dd) fechaFinal (formato yyyy-MM-dd) serie folioEspecifico folioInicial folioFinal idSucursal (Encriptado) nombreArchivo uuid (Si es una lista separado por comas cada UUID, ver ejemplo) status pageSize pageNumber representacion: este puede ser XML o PDF o XML_PDF. |
Método http | GET |
Descripción detallada |
1.- Si se solicita XML y PDF o varios documentos se devolverá un archivo tipo ZIP. 2.- Si se solicita solo un CFDI, dependiendo del parámetro de representación se devolverá UN archivo XML o PDF. 3.- Si no se incluye el parámetro se devolverá XML y PDF. |
Notas |
El pageSize por defecto es 50 y como máximo puede ser 100. Contemplar el tiempo de construcción del PDF (600 PDF x minuto). Si se desea solo descargar el PDF poner "xml=false" en los parámetros. Si se desea solo descargar el XML poner "pdf=false" en los parámetros. En los headers están los link de paginación de la siguiente serie de documentos si estos sobrepasan los 50 máximos. Es posible jugar con los parámetros para hacer filtrados más detallados. |
Códigos respuesta/errores |
200 - Ok 204 - No Content - No existen CFDI Nómina |
Ejemplo |
Ejemplo #1 https://10.0.0.183:9050/985408d8-64ae-48e0-b46c-473b47176205/descargasCfdiNominas?representacion=XML &pageSize=1 Ejemplo #2 https://localhost:9050/985408d8-64ae-48e0-b46c-473b47176205/descargasCfdiNominas?uuid=97c05608-58aa-4087-886d-82a69a86bc98 |
Ejemplo respuesta (Código 200) |
Ejemplo #1 Se descarga un documento de tipo XML (Este solo puede ser de tipo Nómina)) Ejemplo #2 (Se descarga un documento de tipo ZIP, el cual contiene los archivos de tipo XML y PDF del CFDI correspondiente al UUID indicado en la URL). |
Consulta del número de CFDIs generados
URL |
/<keyEmpresa>/cfdis/consumo/generacion |
Parámetros requeridos |
{fecha (yyyy-MM-dd)} {fechaInicial (yyyy-MM-dd), fechaFinal (yyyy-MM-dd)} |
Parámetros/filtros opcionales | N/A |
Método http | GET |
Descripción detallada | Regresa la cantidad de CFDIs generados en la fecha/s indicada/s |
Notas | Forzosamente debe de haber una fecha específica (fecha) o un rango de fechas (fechaInicial, fechaFinal). |
Códigos respuesta/errores |
200 - Ok 400 - Bad Request - Parámetros incorrectos 401 - Not Found - No existe la keyEmpresa |
Ejemplo | https://10.0.0.183:9050/985408d8-64ae-48e0-b46c-473b47176205/cfdis/consumo/generacion?fecha=2014-07-02 |
Ejemplo respuesta (código 200) | 3525 (la respuesta es numérica) |
Consulta del número de CFDIs cancelados
URL | /<keyEmpresa>/cfdis/consumo/cancelacion |
Parámetros requeridos |
{fecha (yyyy-MM-dd)} {fechaInicial (yyyy-MM-dd), fechaFinal (yyyy-MM-dd)} |
Parámetros/filtros opcionales | N/A |
Método http | GET |
Descripción detallada | Regresa la cantidad de CFDIs cancelados en la fecha/s indicada/s |
Notas | Forzosamente debe de haber una fecha específica (fecha) o un rango de fechas (fechaInicial, fechaFinal). |
Códigos respuesta/errores |
200 - Ok |
Ejemplo | https://10.0.0.183:9050/985408d8-64ae-48e0-b46c-473b47176205/cfdis/consumo/cancelacion?fechaInicial=2013-04-01&fechaFinal=2014-01-01 |
Ejemplo respuesta (código 200) | 0 (la respuesta es numérica) |
Cancelación de CFDI múltiple
URL | /<keyEmpresa>/cfdis/cancelar |
Parámetros requeridos | UUID (Lista de UUIDs en json, ver ejemplo) Solo aplica para cuando es motivo diferente a 01 |
Parámetros/filtros opcionales | N/A |
Método http | POST |
Descripción detallada | Regresa los UUIDs, status (Numero) y descripciones de cada cfdi cancelado en formato json. |
Notas | En los headers se debe poner: "Content-Type: application/json" |
Códigos respuesta/errores |
200 - Ok 500 - No se puede cancancelar los comprobantes con los siguientes UUID, verifique que sean válidos y que pertenezcan a la empresa. |
Ejemplo |
https://10.0.0.183:9050/985408d8-64ae-48e0-b46c-473b47176205/cfdis/cancelar? data para el motivo 01: { data para el motivo 02,03 y 04: { |
Ejemplo respuesta (código 200) | [{"uuid":"A07F61BD-4E1D-E504-9F3F-902DA4D622B3","status":"201","descripcion":"UUID Cancelado"}, {"uuid":"d5cdbe22-b117-4ca7-bfbb-ddef8e22b0f4","status":"201","descripcion":"UUID Cancelado"}] |
Cancelación de CFDI múltiple URL
URL | /<keyEmpresa>/cfdis/cancelarUrl |
Parámetros requeridos | UUID (Lista de UUIDs en json, ver ejemplo) Solo aplica para cuando es motivo diferente a 01 |
Parámetros/filtros opcionales | N/A |
Método http | POST |
Descripción detallada | Regresa los UUIDs, status (Numero) y descripciones de cada cfdi cancelado en formato json. |
Notas | En los headers se debe poner: "Content-Type: application/json" |
Códigos respuesta/errores |
200 - Ok 500 - No se puede cancancelar los comprobantes con los siguientes UUID, verifique que sean válidos y que pertenezcan a la empresa. |
Ejemplo |
https://10.0.0.183:9050/985408d8-64ae-48e0-b46c-473b47176205/cfdis/cancelar? data para el motivo 01: { data para el motivo 02,03 y 04: { |
Ejemplo respuesta (código 200) | [{ "uuid":"A07F61BD-4E1D-E504-9F3F-902DA4D622B3", "status":"201", "descripcion":"UUID Cancelado", "URLAcuse_XML":"/985408d8-64ae-48e0-b46c-473b47176205/descargasCfdi?idCfdi=66a673fbc55109153b7d684ed56b3b63&representacion=ACUSE", "URLAcuse_PDF":"/985408d8-64ae-48e0-b46c-473b47176205/descargasCfdi?idCfdi=66a673fbc55109153b7d684ed56b3b63&representacion=ACUSE_PDF" }] |
Motivo de Cancelación
Clave | Descripción |
01 | Comprobante emitido con errores con relación |
02 | Comprobante emitido con errores sin relación |
03 | No se llevó a cabo la operación |
04 | Operación nominativa relacionada en una factura global |
Códigos de Cancelación
Código | Descripción |
201 | Petición aceptada. |
202 |
Folio Fiscal Previamente Cancela |
203 | Folio Fiscal No Correspondiente al Emisor |
204 | Folio Fiscal No Aplicable a Cancelación |
205 | Folio Fiscal No Existente |
206 | UUID no corresponde a un CFDI del Sector Primario |
207 | No se especificó el motivo de cancelación o el motivo no es válido |
208 | Folio Sustitución inválido |
209 | Folio Sustitución no requerido |
210 |
La fecha de solicitud de cancelación es mayor a la fecha de declaración |
211 |
La fecha de solicitud de cancelación límite para factura global |
212 | Relación no válida o inexistente |
300 | Usuario No Válido |
301 | XML mal formado. |
302 | Sello mal formado o inválido. |
303 | Sello no corresponde a emisor o caduco. |
304 | Certificado revocado o caduco. |
305 | Certificado Inválido |
306 | El certificado no es de tipo CSD. |
307 | El CFDI contiene un timbre previo. |
308 | Certificado no expedido por el SAT. |
309 | Certificado Inválido |
310 | CSD Inválido |
402 | RFC del emisor no se encuentra en el régimen de contribuyentes. |
407 | Error en el servicio de cancelación del SAT. |
800 |
NO_ENCONTRADO |
801 | NO_CANCELA BLE |
802 | EN_PROCESO |
901 | El cliente con el CustomerKey proporcionado no es válido. |
902 | El RFC no está registrado como cliente. |
903 | El RFC se encuentra inactivo por el momento. |
904 | No cuenta con licencia para realizar peticiones. |
905 | El RFC no pertenece al cliente con el CustomerKey que proporcionó. |
906 | Ha expirado su periodo de pruebas. |
910 | No se puede determinar el cliente a partir del RFC. |
998 | Error en el cliente. |
999 | Error en el servidor. |
Consulta de cancelación
URL | /<keyEmpresa>/cfdis/consultaCancelacion |
Parámetros requeridos | El parámetro obligatorio es el UUID en este caso, en formato json. |
Parámetros/filtros opcionales | N/A |
Método http | POST |
Descripción detallada |
Regresa el UUID, status del CFDI. |
Notas | N/A |
Códigos respuesta/errores |
200 - Ok 400 - Bad Request - Parámetros incorrectos 401 - Not Found - No existe la keyEmpresa |
Ejemplo |
https://localhost:9050/6df9515e-6c7d-46fc-a2a8-86080ce9ba2f/cfdis/consultaCancelacion{"uuid":["3BC513EC-FD2A-4B66-AAB2-4C46BC976C7A"]} |
Ejemplo respuesta (código 200) | [{"uuid":"3BC513EC-FD2A-4B66-AAB2-4C46BC976C7A ","status":"CANCELABLE_SIN_ACEPTACION"}] |
Status que regresa el API |
VIGENTE |
Retenciones
Consulta tipos de retenciones
URL |
/<keyEmpresa>/tiposCfdsRetenciones |
Parámetros requeridos |
El parámetro obligatorio es el keyEmpresa |
Parámetros/filtros opcionales | pageSize (min = 1, max = 100, default = 50) pageNumber (min = 0, default = 0) |
Método http | GET |
Descripción detallada | Regresa el id del tipo de retención, el nombre de la retención y el id de la sucursal a la cual pertenece la retención. |
Notas |
N/A |
Códigos respuesta/errores |
200 - Ok |
Ejemplo |
https://10.0.0.183:9050/985408d8-64ae-48e0-b46c-473b47176205/tiposCfdsRetenciones |
Ejemplo respuesta (código 200) |
[{"idTipoCfdRetencion":"51bcbd36d5f0cbf971e3cbb0bea7567a","nombre":"Retencion","idSucursal":"2575797c4c7933f6f067e054240fc48b","produccion":true}] |
Consulta CFDI de retenciones
URL | /<keyEmpresa>/cfdisretencion |
Parámetros requeridos | Al menos uno de los filtros, no puede ir vacío |
Parámetros/filtros opcionales |
pageSize (min = 1, max = 100, default = 50) |
Método http | GET |
Descripción detallada | Regresa el id del cfdi de retención, el id de la sucursal de a retención, el RFC del receptor, la razón social del receptor, la fecha de emisión del documento, el status del documento, el uuid del documento, el monto, la fecha de cancelacion del documentos (si está cancelado), la liga de descarga del documento en sus versiones XML y PDF, liga de descarga del documento en formato XML, liga de descarga del documento en PDF, la liga con la que se podría cancelar el documento. |
Notas | Regresa el id del tipo de retención, el nombre de la retención y el id de la sucursal a la cual pertenece la retención |
Códigos respuesta/errores |
200 - Ok 204 - No Content - No existen CFDI de retención 401 - Not found - No existe la keyEmpresa |
Ejemplo | https://localhost:9050/6df9515e-6c7d-46fc-a2a8-86080ce9ba2f/ cfdisretencion?pageSize=50&pageNumber=1&rfcReceptor=MURR750516812 |
Ejemplo respuesta (código 200) |
[ |
Descarga CFDI de retención
URL | /<keyEmpresa>/cfdisretencion/descarga? descargasCfdi descargasCfdi descargasCfdipageSize=x&pageNumber=x |
Parámetros requeridos | Al menos uno de los filtros, no puede ir vacío |
Parámetros/filtros opcionales |
pageSize (min = 1, max = 100, default = 50) pageNumber (min = 0, default = 0) idSucursal (id de la sucursal, encriptado) rfcReceptor razonSocial (razón social del receptor) fecha (yyyy-mm-dd ó yyyy-MM-dd h:mm:ss) fechaInicial (yyyy-mm-dd ó yyyy-MM-dd h:mm:ss) fechaFinal (yyyy-mm-dd ó yyyy-MM-dd h:mm:ss) status ('ACTIVO','CANCELADO') uuid nombreArchivo (nombre archivo fuente) monto montoInicial montoFinal representación (XML o PDF, XML_PDF); si no se especifica se toma XML como default |
Método http | GET |
Descripción detallada | Regresa el archivo zip teniendo como contenido, los documentos resultantes de la consulta realizada. |
Notas | N/A |
Códigos respuesta/errores |
200 - Ok 401 - Not found - No existe la keyEmpresa |
Ejemplo | https://localhost:9050/6df9515e-6c7d-46fc-a2a8-86080ce9ba2f/ cfdisretencion/descarga?pageSize=50&pageNumber=1&rfcReceptor=AAA010101AAA |
Ejemplo respuesta (código 200) |
El ZIP Content-Type=application/zip Content-Disposition=attachment; lename="1441221373984.zip" |
Descarga CFDI retenciones XML
URL |
/<keyEmpresa>/cfdisretencion/descarga/xml |
Parámetros requeridos | El parámetro obligatorio es el keyEmpresa y el uuid (encriptado) |
Parámetros/filtros opcionales | N/A |
Método http | GET |
Descripción detallada | Regresa el archivo XML del cfdi solicitado |
Notas | N/A |
Códigos respuesta/errores |
200 - Ok 204 - No Content - No existen CFDI de retención 400 - Bad Request - Parámetros incorrectos 401 - Not found - No existe la keyEmpresa |
Ejemplo | https://localhost:9050/6df9515e-6c7d-46fc-a2a8-86080ce9ba2f/ cfdisretencion/descarga/xml?uuid=7e00413dcf1b605e189b9a91972 |
Ejemplo respuesta (código 200) |
El XML
Content-Type=application/xml Content-Disposition=attachment; lename="D095EF45-0465-4BBD-8F74-DE9576B909CA.xml" |
Descarga CFDI retenciones PDF
URL | /<keyEmpresa>/cfdisretencion/descarga/pdf |
Parámetros requeridos |
El parámetro obligatorio es el keyEmpresa y el uuid (encriptado) |
Parámetros/filtros opcionales | N/A |
Método http | GET |
Descripción detallada | Regresa el archivo PDF del cfdi solicitado |
Notas | N/A |
Códigos respuesta/errores |
200 - Ok 204 - No Content - No existen CFDI de retención 400 - Bad Request - Parámetros incorrectos 401 - Not found - No existe la keyEmpresa |
Ejemplo | https://localhost:9050/6df9515e-6c7d-46fc-a2a8-86080ce9ba2f/ cfdisretencion/descarga/pdf?uuid=7e00413dcf1b605e189b9a91972 |
Ejemplo respuesta (código 200) |
El PDF
Content-Type=application/pdf Content-Disposition=attachment; lename="D095EF45-0465-4BBD-8F74-DE9576B909CA.pdf" |
Generación de retenciones
URL | /<keyEmpresa>/cfdisretencion |
Parámetros requeridos | El parámetro obligatorio es el keyEmpresa, el id del tipo de retención, id de la sucursal a la que pertenece el tipo de retención y finalmente el contenido del archivo fuente de acuerdo al layout configurado. |
Parámetros/filtros opcionales | N/A |
Método http | POST |
Descripción detallada |
Generación exitosa Error |
Notas | Para separar las líneas del contenido del archivo fuente se deberá utilizar /n |
Códigos respuesta/errores |
200 - Ok 400 - Bad Request - Parámetros incorrectos 401 - Not found - No existe la keyEmpresa |
Ejemplo |
https://localhost:9050/6df9515e-6c7d-46fc-a2a8-86080ce9ba2f/cfdisretencion? data: {"idTipoCfdRetencion":"332c2994597401415717c9de2e21d207", "idSucursal":"6ac9a2c315480d5cc5534c7e58caee5a", "archivoFuente":"RET00|1.0|12345|2015-09-02T00:00:00-06:00|03|DescRetenc|\nRET01|BADD110313HCMLNS09|\nRET02|Nacional|\nRET020|MURR750516812|Razón Social Nacional|BADD110313HCMLNS09|\nRET03|1|1|2015|\nRET04|3252.5|0.00|0.00|0.00|\nRET040|0.00|01|0.00|Pago definitivo|\nRET99|" } |
Ejemplo respuesta (código 200) |
[ |
Cancelación de retenciones
URL | /<keyEmpresa>/cfdisretencion/cancelar |
Parámetros requeridos | keyEmpresa y los UUIDs de los documentos a cancelar |
Parámetros/filtros opcionales | N/A |
Método http | POST |
Descripción detallada | Por cada CFDI de retención cancelado, se devuelve el uuid, el status (código de estatus), el http code y en la descripción el XML del acuse de cancelación |
Notas | Hasta 500 documentos a cancelar |
Códigos respuesta/errores |
200 - Ok 401 - Not found - No existe la keyEmpresa 403 - Alguno de los UUIDs proporcionados no se encontró o no pertenece a la empresa |
Ejemplo |
https://localhost:9050/6df9515e-6c7d-46fc-a2a8-86080ce9ba2f/cfdisretencion/cancelar? { data para el motivo 02,03 y 04: { |
Ejemplo respuesta (código 200) |
[{ "uuid": "DAC5C869-3DC3-41A1-85F3-FE113E7046AF", "status": 1201, "httpCode": 200, "description": " <Acuse xmlns:xsd="http://www.w3.org/2001/XMLSchema"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Fecha="2021-12-15T23:28:06.4819808"RfcEmisor="B&M011127BQ0" WorkProcessId="8e5a0254-babc-4b55-aaa1-9232dc739db0"xmlns="http://www.sat.gob.mx/esquemas/retencionpago/1"><Folios><UUID>0AA0A514-6997-4C1B-8A36-89BB0CB1B265</UUID><EstatusUUID>1201</EstatusUUID><Motivo>01</Motivo><FolioSustitucion>01E53227-38EC-458D-B1D4-08F2B533F98B</FolioSustitucion></Folios><Signature Id="SelloSAT" xmlns="http://www.w3.org/2000/09/xmldsig#"><SignedInfo><CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/><SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#hmac-sha512"/><Reference URI=""><Transforms><Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"><XPath>not(ancestor-or-self::*[local-name()='Signature'])</XPath></Transform></Transforms><DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha512"/><DigestValue>fMuB/Ee3grx4cDFX+GRpnX3ME0l9dLTLdbiYXundyMPS+GOZ1AR2XMtepTSZiD08NzAwF2nFFHWkZOIEU3a4Dw==</DigestValue></Reference></SignedInfo><SignatureValue>D4rC8c5ZK2eXtbJWQ2C6xOTeW3dkPIf6u2+i6DbX1FTXqPkVW1dcm4i+I9GEetpJOfS6pSxGBa152QBPimJBNg==</SignatureValue><KeyInfo><KeyName>30001000000400001215</KeyName><KeyValue><RSAKeyValue><Modulus>nbtVtkPquCMLdpgeClMrTmxzCjyjn8P9YrBlW9jXC/FcXozIYHvzctK1pRxRxLTKlChc9fjluht9ffDfGOWim/4AlTrCiG6om7ItkHbLGMQrABp8qGY+SPmq1xtZ7qbbgoTFCtzP3pN9Z4uSDhdnrF2655sdmDzHJYE9MirNLM4SIdSFsabA31CCAMaWpB4TO6ZmExLp+wUiUyeIFWswc5G5KvmS/lU5tbXLK7zBDDUVjN0K1r/0iaZIZzPMxQcgfgYBrfLGZ3916MkmF28iBk5l1sfNTKS9S445QHKc+6oTP4UDDnjN/K14YWX449BAMxKcelEpjZlBQs1a1eNVcQ==</Modulus><Exponent>AQAB</Exponent></RSAKeyValue></KeyValue></KeyInfo></Signature></Acuse>" }] |
Motivo de Cancelación
Clave | Descripción |
01 | Comprobante emitido con errores con relación |
02 | Comprobante emitido con errores sin relación |
03 | No se llevó a cabo la operación |
04 | Operación nominativa relacionada en una factura global |
Consultar los CFDIs cancelados por rango de fechas
La consulta por fecha y rango de fecha solo aplica para los comprobantes cancelados posteriores a la versión 3.64, todo lo que se canceló con una versión anterior no podrá ser consultada.
URL | /<keyEmpresa>/cfdis/consultaCancelacion |
Parámetros requeridos | Al menos un parámetro, en formato json. |
Parámetros/filtros opcionales |
uuid fecha (yyyy-MM-dd) estados pageSize (min = 1, max = 500, default = 100) |
Método http | POST |
Descripción detallada |
Regresa el UUID, Estatus del CFDI. |
Notas | N/A |
Códigos respuesta/errores |
200 - Ok 204 - No content |
Ejemplo |
https://localhost:9050/6df9515e-6c7d-46fc-a2a8-86080ce9ba2f/cfdis/consultaCancelacion{"uuid":["3BC513EC-FD2A-4B66-AAB2-4C46BC976C7A"]} |
Ejemplo respuesta (código 200) | [{"uuid":"3BC513EC-FD2A-4B66-AAB2-4C46BC976C7A ","status":"CANCELABLE_SIN_ACEPTACION"}] |
Ejemplo respuesta (error) |
[{"uuid":"52CE170D-20DB-45B7-84EF-F886537163B1","status":"NO_TRALIX"}] |
Parámetros para la consulta de estados |
VIGENTE
Nota* para poder utilizar los estados estos deben de ir acompañados de fecha o o fechaInicial y fechaFinal |
Consultar los CFDIs cancelados indicando las fechas
URL | /<keyEmpresa>/cfdis/consultaCancelacionFecha |
Parámetros requeridos | Al menos un parámetro, en formato json. |
Parámetros/filtros opcionales |
uuid fecha (yyyy-MM-dd) estados pageSize (min = 1, max = 500, default = 100) |
Método http | POST |
Descripción detallada |
Regresa el UUID, Estatus del CFDI. Fecha de cancelación. |
Notas | N/A |
Códigos respuesta/errores |
200 - Ok 204 - No content |
Ejemplo |
https://localhost:9050/6df9515e-6c7d-46fc-a2a8-86080ce9ba2f/cfdis/consultaCancelacionFecha{"fecha":"2019-10-01","estados":["CANCELADO_SIN_ACEPTACION"]} |
Ejemplo respuesta (código 200) | [{"uuid":"3BC513EC-FD2A-4B66-AAB2-4C46BC976C7A ","status":"CANCELABLE_SIN_ACEPTACION","fecha":"2020-01-20"}] |
Ejemplo respuesta (error) |
[{"uuid":"52CE170D-20DB-45B7-84EF-F886537163B1","status":"NO_TRALIX", "fecha": "la fecha de hoy"}] |
Parámetros para la consulta de estados |
VIGENTE CANCELABLE_CON_ACEPTACION CANCELABLE_SIN_ACEPTACION NO_CANCELABLE NO_ENCONTRADO EN_PROCESO CANCELADO_PLAZO_VENCIDO CANCELADO_CON_ACEPTACIÓN CANCELADO_SIN_ACEPTACIÓN SOLICITUD_RECHAZADA
Nota* para poder utilizar los estados estos deben de ir acompañados de fecha o o fechaInicial y fechaFinal. |
Consultar los CFDI enviados
La consulta solo aplica para el servicio de Email Rastreable
URL | /<keyEmpresa>/emailRastreable/report |
Parámetros requeridos | Al menos un parámetro, en formato json. |
Parámetros/filtros opcionales |
fechaInicial (yyyy-MM-dd) tiposCfdi tipoReporte (OPEN, SEND) page |
Método http | POST |
Descripción detallada |
Regresa el UUID, Estatus del CFDI. |
Notas | N/A |
Códigos respuesta/errores |
200 - Ok 204 - No content |
Ejemplo |
{ |
Ejemplo respuesta |
{ "page": 1, "lastPage": true, "reports": [ { "uuid": "BCB0B52D-9A13-52AC-B432-DDDD29FF15EE", "serie": "", "folio": "", "rfcReceptor": "", "razonSocial": "", "monto": "", "fechaEmision": "", "tipoCfdi": "baseJhoanProd", "email": "jose.martinez@tralix.com", "fecha": "2020-10-23 22:15:52", "estatus": "OPEN" } } |
Parámetros para la consulta de estados |
fechaInicial: campo tipo fecha con formato es yyyy-MM-dd
Nota: page: indica el número de página |
API XML
Generación de CFDI
URL | /<keyEmpresa>/cfdisXml |
Parámetros requeridos |
idTipoCfd (Encriptado) idSucursal (Encriptado) nombre (nombre del archivo fuente opcional) archivoFuente (El parámetro es el texto contenido del archivo fuente) de acuerdo al conector/adaptador configurado |
Parámetros/filtros opcionales | N/A |
Método http | PUT |
Descripción detallada | Regresa: idSucursal (Encriptado), rfc (del receptor), razonSocial (del receptor), fecha (YYYY-MM-DD hh:mm:ss.s) , folio, status, UUID, monto (BigDecimal), idCfd (Encriptado), serie, subtotal (BigDecimal), descuento (BigDecimal), tipoMoneda, tipoCambio (BigDecimal), iva (BigDecimal), fechaCancelacion (YYYY-MM-DD hh:mm:ss.s), tienePDF (Boleano), pedimento, fechaPedimento (pueden venir vairias fechas ), aduana, pdfAndXmlDownload (link para descargar XML y pdf), pdfDownload (link para descargar el pdf), xmlDownload (link para descargar el xml), cancellCfdi (link para cancelar el cfdi) en formato json del CFDI generado. |
Notas |
De existir un problema en el proceso del CFDI se regresan los errores de generación que se tuvieron. ES IMPORTANTE MENCIONAR que el contenido del documento a emitir se colocar en el Request Payload en estructura JSON En los headers se debe poner: "Content-Type: application/json" Se debe incluir el salto de línea entre registros utilizando “\n” Ejemplo: |00|idcfd|FAC|\n |
Códigos respuesta/errores |
200 - Ok 400 - Bad Request - Parámetros incorrectos 401 - Not Found - No existe la keyEmpresa |
Ejemplo |
https://localhost:9050/985408d8-64ae-48e0-b46c-473b47176205/cfdisXml {"idTipoCfd":"d18bb0158356449c31e72cb69e642b31","idSucursal":"6ac9a2c315480d5cc5534c7e58caee5a","nombre":"prueba.txt","archivoFuente":"|00|idcfd|FAC|\n01|1|||20140630T00:00:00|99.09|9999.09|||9999.009||Noventa y nueve billones novecientos noventa y nueve mil novecientos noventa y nueve millones novecientos noventa y nueve mil novecientos noventa y nueve 90\/10000000|USD|12.5014|REFERENCIA XXXAAAXXX|Primera Observación|Segunda Observación|Tercera Observación|\n02|PAGO EN UNA SOLA EXHIBICIÓN|10% DE INTERÉS SI NO SE PAGA ANTES DEL 05-AGOSTO-2010|CHEQUE|2010-08-05|EFECTOS FISCALES AL PAGO|\n03|01|AAA010101AAA|PATITO, S.A. DE C.V.|MÉXICO|AVENIDA CALLE |S\/N|INT. 1|COL. COLONIA|MÉXICO|REFERENCIA FRENTE AL OXXO|CUAJIMALPA|ESTADO DE MÉXICO|06860|4424876399|\n05|405010|802011|3|BOMBA MOLOTOV|150.00|450.00|PZA|Categoría 5e|205010|\n05|405011|802012|1|DISFRAZ DE CORRECAMINOS|2368231872779.000009|884346835174.000009|PZA|Categoría 5e|205011|\n05|405012|802013|10|COMIDA DE CORRECAMINOS|39.00|390.00|KG|Categoría 5e|205010|\n05|405013|802014|1|LIGA DE HULE GIGANTE|378.00|378.00|PZA|Categoría 5e|205011|\n06|IVA|16.00|9.09|\n07|IVA|58.58|\n06|IVA|16.00|999999.09|\n07|IVA|58.58|\n08|405010|APTO INTL DE CIUDAD DE MEXICO|2010-06-29|548984124578124||\n08|405011|APTO INTL DE CIUDAD DE MEXICO|2010-06-29|654651456987452||\n99|15||"} |
Ejemplo respuesta (código 200) |
"uuid": "3D5DAEF4-FE52-44A5-9C82-84B6B293EC7E", "fecha": "2020-05-23 17:09:00.0", "serie": "D01", "folio": "1000", "rfc": "OIAD8404189S3", "iva": "134.390000", "monto": "974.390000", "descuento": "0.000000", "subtotal": "840.000000", "tipoCambio": "1.0000", "tipoMoneda": "MXN", "idCfd": "60014b09e2d75d1ac1260b7c4e780c00", "idSucursal": "0dd6aebbea85662fd2fe2f76ce4258b3", "status": "ALMACENADO", "produccion": true, "xmlDownload": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><cfdi:Comprobante xmlns:cfdi=\"http://www.sat.gob.mx/cfd/4\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" Version=\"4.0\" xsi:schemaLocation=\"http://www.sat.gob.mx/cfd/4 http://www.sat.gob.mx/sitio_internet/cfd/4/cfdv40.xsd\" Serie=\"EB_10000004141_10_2007\" Folio=\"000D3A57CECB1EDDBEE710EEE3689633\" Fecha=\"2023-07-25T18:32:55\" Sello=\"d3RuTTfff++LwM91IZPE6d8DX/Ww54Px61kgMR+q8xq1wFS9QD4rck9e8XIRlwzFdwsRM2P++VcaJCc7EEylRG0BTi90WGjitpt6h21ehPCHI0h6yjp2elW//0iQBa4pkW8CqNXT9TOyYidB6i9tkfIGwRPxzEuL70ZuQh7O1DpHF+q/lpJLs0bdJUhyFvdLcH9cefGtUVIwTT632SGTbSHT7ZVE5SFjJDN20JriC+F/tR3UAVAIsMfk1BkYXIlnG1lWtYxNnMd0GbxCe/I4gBrdGueGLTbJAnrtWDPZi7RsQUjK1VA4Z2kFa7bmM5PirV4xohjoFFO79f9zMvYI+A==\" FormaPago=\"03\" NoCertificado=\"30001000000500003434\" Certificado=\"MIIFtjCCA56gAwIBAgIUMzAwMDEwMDAwMDA1MDAwMDM0MzQwDQYJKoZIhvcNAQELBQAwggErMQ8wDQYDVQQDDAZBQyBVQVQxLjAsBgNVBAoMJVNFUlZJQ0lPIERFIEFETUlOSVNUUkFDSU9OIFRSSUJVVEFSSUExGjAYBgNVBAsMEVNBVC1JRVMgQXV0aG9yaXR5MSgwJgYJKoZIhvcNAQkBFhlvc2Nhci5tYXJ0aW5lekBzYXQuZ29iLm14MR0wGwYDVQQJDBQzcmEgY2VycmFkYSBkZSBjYWxpejEOMAwGA1UEEQwFMDYzNzAxCzAJBgNVBAYTAk1YMRkwFwYDVQQIDBBDSVVEQUQgREUgTUVYSUNPMREwDwYDVQQHDAhDT1lPQUNBTjERMA8GA1UELRMIMi41LjQuNDUxJTAjBgkqhkiG9w0BCQITFnJlc3BvbnNhYmxlOiBBQ0RNQS1TQVQwHhcNMjMwNTE4MTI0ODU3WhcNMjcwNTE4MTI0ODU3WjCB3TEpMCcGA1UEAxMgSU5OT1ZBQ0lPTiBWQUxPUiBZIERFU0FSUk9MTE8gU0ExKTAnBgNVBCkTIElOTk9WQUNJT04gVkFMT1IgWSBERVNBUlJPTExPIFNBMSkwJwYDVQQKEyBJTk5PVkFDSU9OIFZBTE9SIFkgREVTQVJST0xMTyBTQTElMCMGA1UELRMcSVZEOTIwODEwR1UyIC8gVkFEQTgwMDkyN0RKMzEeMBwGA1UEBRMVIC8gVkFEQTgwMDkyN0hTUlNSTDA1MRMwEQYDVQQLEwpTdWN1cnNhbCAxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAqsMyIHgj/WC4HQ2kbANTwbjJQho3H4emTqZLLrGybmuGOWh7tUcPi6cG3tyzp5aryS9aVIUDdLyryL2E6WeRwF9ifhmG9FQD8PG/B9VVlj9/u7ob97jPMI1hHV9tE4zmHSQGVMQjdUWhyywPOf+Ia9gL0i2XRzK/A243dYfiFWaiG4VeLn5iSo669PS9PRKNpw725+57bLfPCYlq+JnCQD5pfDWnKiI+JCwBNS+q4xpv/eO9ife/9LpIGlobAd3OHB3Mw7Keij7GCSl98jp0gGxDU7GXnS851H9R6r4kADq49aR4kScCPukU5n865BZog2JUS1C5TT/IWgsgCu8I0wIDAQABox0wGzAMBgNVHRMBAf8EAjAAMAsGA1UdDwQEAwIGwDANBgkqhkiG9w0BAQsFAAOCAgEAGeGwhK3QSs/tnvK/HXoPm7/R7SgVkhj/29wSjh8VtIYk3UMMyipOz/EwSFQN+QnNQ8BxNplEmgv8M8kDobbPlGaNiMEvqKLexZtUlpSolkkfiyvPMxWGn26bNmBGObshxHCAXlRyuRMpddunRNgOJ9mzgmkmuFY7fdGPcEUrkPgIkRX37a9HgQ5v+/IMYHvbwkjaK4vA45mDPxdRw8Mjr7MO2tMds9yz59ZargvO7TlF79XmfyfnsrkkSplVEXbae+uZ80YK+YHmkuwqBmXhcKa+YbiDZkIgM7l69NKKmK258jzEkmfnpbfekwH0Lc9CDv8wqA4mNNYFaeSJflR/jeiB0Rl50ZRyiaL8ncN15AA6lS9f7BeJfow/NNR4pv2Uk8C0Io6+PhSX8az5jhV6xrult2i/+7eoM0LRRvkg7Qyp/aDpha8DoHhtDIy/g3xU0n408PkWCJceoPk/IwWgN4QiunRddXeS2eNipJ3E2VbbOoxtH5xF2IsishbTWpxCYBg+w80WgewwODG18CTCldCo3g5QrgkfcvOHvtN+EL9XAJbS6iUAOyHumRgGh3TNMIEld8DUMM6nylVcv0DRi27BnJLhbr+pbXWh0a5eU4Uear0/TXsv9IR60fNrY/7juo+OsBV7q0vKxATR4CAbR2+2/eHczloUYEgpUyYiVK8=\" SubTotal=\"600.0\" Moneda=\"MXN\" Total=\"696.0\" TipoDeComprobante=\"I\" Exportacion=\"01\" MetodoPago=\"PUE\" LugarExpedicion=\"64040\"><cfdi:Emisor Rfc=\"IVD920810GU2\" Nombre=\"INNOVACION VALOR Y DESARROLLO\" RegimenFiscal=\"601\"/><cfdi:Receptor Rfc=\"XAXX010101000\" Nombre=\"Lee\" DomicilioFiscalReceptor=\"00040\" RegimenFiscalReceptor=\"616\" UsoCFDI=\"S01\"/><cfdi:Conceptos><cfdi:Concepto ClaveProdServ=\"84111506\" ObjetoImp=\"02\" Cantidad=\"1.0\" ClaveUnidad=\"E48\" Descripcion=\"Interest charged\" ValorUnitario=\"600.0\" Importe=\"600.0\"><cfdi:Impuestos><cfdi:Traslados><cfdi:Traslado Base=\"600.0\" Impuesto=\"002\" TipoFactor=\"Tasa\" TasaOCuota=\"0.160000\" Importe=\"96.0\"/></cfdi:Traslados></cfdi:Impuestos></cfdi:Concepto></cfdi:Conceptos><cfdi:Impuestos TotalImpuestosTrasladados=\"96.0\"><cfdi:Traslados><cfdi:Traslado Base=\"600.0\" Impuesto=\"002\" TipoFactor=\"Tasa\" TasaOCuota=\"0.160000\" Importe=\"96.0\"/></cfdi:Traslados></cfdi:Impuestos><cfdi:Complemento><tfd:TimbreFiscalDigital xmlns:tfd=\"http://www.sat.gob.mx/TimbreFiscalDigital\" FechaTimbrado=\"2023-07-27T10:51:29\" UUID=\"F3DA4809-5C29-41E5-89D9-96F742BCAE89\" NoCertificadoSAT=\"20001000000300022323\" SelloCFD=\"d3RuTTfff++LwM91IZPE6d8DX/Ww54Px61kgMR+q8xq1wFS9QD4rck9e8XIRlwzFdwsRM2P++VcaJCc7EEylRG0BTi90WGjitpt6h21ehPCHI0h6yjp2elW//0iQBa4pkW8CqNXT9TOyYidB6i9tkfIGwRPxzEuL70ZuQh7O1DpHF+q/lpJLs0bdJUhyFvdLcH9cefGtUVIwTT632SGTbSHT7ZVE5SFjJDN20JriC+F/tR3UAVAIsMfk1BkYXIlnG1lWtYxNnMd0GbxCe/I4gBrdGueGLTbJAnrtWDPZi7RsQUjK1VA4Z2kFa7bmM5PirV4xohjoFFO79f9zMvYI+A==\" SelloSAT=\"RSUuVZTITk35WY+qvukHX3CPl/C99JaqRVHLDU4MBwWyiJQ3BRPw2ZaiYlACskrp48KR/rxdVoOHPbgEpRvDm3Oj6RneetfmpiY8a9oGd7k4QwvX2yfNps1FrLxdawhsVTn7yyLVcta91u5wi2QbyqfEWuREAUg64UKZuksYgW+TMK51pWm3+UWcmIWr8GFngeA6bl6b+KfLxrq0VxF5aJxpezyLCjWCEgKBKHBuwoxlsLkoAcocS8uFO9xa06ayDv3WKpELqQVvhhweD0EzHMNNFD3c8Qxb0sjzTDpokueaOHOU5R3Kml4AzpefHM39hNkYylpD+TyoNZEM9GgOYA==\" Version=\"1.1\" RfcProvCertif=\"TLE011122SC2\" Leyenda=\"PRUEBA_LEYENDA_PRUEBA_LEYENDA\" xsi:schemaLocation=\"http://www.sat.gob.mx/TimbreFiscalDigital http://www.sat.gob.mx/sitio_internet/cfd/TimbreFiscalDigital/TimbreFiscalDigitalv11.xsd\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"/></cfdi:Complemento></cfdi:Comprobante>\n" } |
Ejemplo respuesta (código 400) |
{
"errors": [ "Error CFDI40108\nEl TipoDeComprobante es I,E o N, el importe registrado en el campo no es igual al redondeo de la suma de los importes de los conceptos registrados.. :\n Código de error: CFDI40108" ] } |
API Asincrona
Generación de CFDI Async
URL | /<keyEmpresa>/cfdisAsync |
Parámetros requeridos |
idTipoCfd (Encriptado) idSucursal (Encriptado) archivoFuente (El parámetro es el texto contenido del archivo fuente) de acuerdo al conector/adaptador configurado |
Parámetros/filtros opcionales | N/A |
Método http | PUT |
Notas |
De existir un problema en el proceso del CFDI se regresan los errores de generación que se tuvieron. ES IMPORTANTE MENCIONAR que el contenido del documento a emitir se colocar en el Request Payload en estructura JSON En los headers se debe poner: "Content-Type: application/json" Se debe incluir el salto de línea entre registros utilizando “\n” Ejemplo: |00|idcfd|FAC|\n |
Códigos respuesta/errores |
200 - Ok 400 - Bad Request - Parámetros incorrectos 401 - Not Found - No existe la keyEmpresa |
Ejemplo |
https://localhost:9050/985408d8-64ae-48e0-b46c-473b47176205/cfdisAsync FAC|\n01|1|||20140630T00:00:00|99.09|9999.09|||9999.009||Noventa y nueve billones novecientos noventa y nueve mil novecientos noventa y nueve millones novecientos noventa y nueve mil novecientos noventa y nueve 90\/10000000|USD|12.5014|REFERENCIA XXXAAAXXX|Primera Observación|Segunda Observación|Tercera Observación|\n02|PAGO EN UNA SOLA EXHIBICIÓN|10% DE INTERÉS SI NO SE PAGA ANTES DEL 05-AGOSTO-2010|CHEQUE|2010-08-05|EFECTOS FISCALES AL PAGO|\n03|01|AAA010101AAA|PATITO, S.A. DE C.V.|MÉXICO|AVENIDA CALLE |S\/N|INT. 1|COL. COLONIA|MÉXICO|REFERENCIA FRENTE AL OXXO|CUAJIMALPA|ESTADO DE MÉXICO|06860|4424876399|\n05|405010|802011|3|BOMBA MOLOTOV|150.00|450.00|PZA|Categoría 5e|205010|\n05|405011|802012|1|DISFRAZ DE CORRECAMINOS|2368231872779.000009|884346835174.000009|PZA|Categoría 5e|205011|\n05|405012|802013|10|COMIDA DE CORRECAMINOS|39.00|390.00|KG|Categoría 5e|205010|\n05|405013|802014|1|LIGA DE HULE GIGANTE|378.00|378.00|PZA|Categoría 5e|205011|\n06|IVA|16.00|9.09|\n07|IVA|58.58|\n06|IVA|16.00|999999.09|\n07|IVA|58.58|\n08|405010|APTO INTL DE CIUDAD DE MEXICO|2010-06-29|548984124578124||\n08|405011|APTO INTL DE CIUDAD DE MEXICO|2010-06-29|654651456987452||\n99|15||"} |
Ejemplo respuesta (código 200) |
{
"idPeticion": "5503643c66ee9496d7223ad9f61e6609"
}
|
Nota |
La información de este API solo esta vigente por 30 días.
|
Consulta de CFDI Async
URL | /<keyEmpresa>/cfdis/{idPeticion} |
Parámetros requeridos | N/A |
Método http | GET |
Notas |
De existir un problema en el proceso del CFDI se regresan los errores de generación que se tuvieron. ES IMPORTANTE MENCIONAR que el contenido del documento a emitir se colocar en el Request Payload en estructura JSON En los headers se debe poner: "Content-Type: application/json" Se debe incluir el salto de línea entre registros utilizando “\n” Ejemplo: |00|idcfd|FAC|\n |
Códigos respuesta/errores |
200 - Ok 202 - Operación en proceso 404 - Documento no encontrado |
Ejemplo | https://localhost:9050/985408d8-64ae-48e0-b46c-473b47176205/cfdis/5503643c66ee9496d7223ad9f61e6609 |
Ejemplo respuesta (código 200) |
{
"uuid": "8B12F89B-12BF-4C3B-8AB0-4073EB2950D9", "fecha": "2023-07-20 10:25:41.0", "serie": "TWCP", "folio": "12", "rfc": "XAXX010101000", "iva": "", "monto": "0.000000", "descuento": "0.000000", "subtotal": "0.000000", "tipoCambio": "1.0000", "tipoMoneda": "MXN", "idCfd": "7d360d82703c3de6d3d72347a1bfe2d0", "idSucursal": "648cf7222d3968a23049d570252a1994", "status": "ALMACENADO", "produccion": true, "fechaCancelacion": "", "tienePDF": "true", "pedimento": "", "fechaPedimento": "", "aduana": "", "pdfAndXmlDownload": "/20c42654-8961-11ea-ab3d-fa163e0e7f24descargasCfdiAsync?idCfdi=7d360d82703c3de6d3d72347a1bfe2d0&produccion=true&representacion=XML_PDF", "pdfDownload": "/20c42654-8961-11ea-ab3d-fa163e0e7f24/descargasCfdiAsync?idCfdi=7d360d82703c3de6d3d72347a1bfe2d0&produccion=true&representacion=PDF", "xmlDownload": "/20c42654-8961-11ea-ab3d-fa163e0e7f24/descargasCfdiAsync?idCfdi=7d360d82703c3de6d3d72347a1bfe2d0&produccion=true&representacion=XML" } |
Ejemplo respuesta (código 202) |
Cuando esta en proceso de timbrado regresa el siguiente estatus:
{
"status": "EN_PROCESO" } Cuando ya se genero el CFDI pero está esperando a que se genere el PDF regresa el siguiente estatus:
{
"status": "EN_PROCESO",
"uuid": "8B12F89B-12BF-4C3B-8AB0-4073EB2950D9"
} |
Ejemplo respuesta (código 400) |
{
"errors": [ "Error CFDI40108\nEl TipoDeComprobante es I,E o N, el importe registrado en el campo no es igual al redondeo de la suma de los importes de los conceptos registrados.. :\n Código de error: CFDI40108" ] } |
Ejemplo respuesta (código 404) |
{
"status": "DOCUMENTO_NO_ENCONTRADO" } |
Descarga del CFDI Async
URL |
/<keyEmpresa>/descargasCfdiAsync |
Parámetros requeridos |
Al menos debe estar aplicado uno de los parámetros disponibles |
Parámetros/filtros opcionales |
uuid representacion: este puede ser XML o PDF o XML_PDF |
Método http | GET |
Códigos respuesta/errores |
200 - Ok 204 - No Content - No existen CFDI |
Ejemplo |
Ejemplo #1 Ejemplo #2 |
Ejemplo respuesta (código 200) |
Ejemplo #1 Se descarga el archivo de tipo XML Ejemplo #2 (Se descarga un documento de tipo ZIP, el cual contiene los archivos XML y PDF del CFDI correspondiente al UUID indicando en la URL) |
Manual de API Empresa Drivers
Introducción
El Consorcio World Wide Web (W3C) es una comunidad internacional donde las organizaciones Miembro desarrollan estándares Webs, y han definido los Web Services como sistemas de software creados para soportar una interacción interoperable equipo a equipo sobre una red.
Los Web Services suelen ser APIs Web que pueden ser accedidos dentro de una red (principalmente Internet) y son ejecutados en el sistema donde residen.
El estilo de arquitectura que hemos utilizado es el REST (Representational State Transfer), de tal manera que los servicios web deben cumplir con los siguientes principios:
- Un protocolo cliente/servidor sin estado: cada mensaje HTTP contiene toda la información necesaria para comprender la petición. Por lo que ni el cliente ni el servidor necesitan recordar ningún estado de las comunicaciones entre mensajes. Sin embargo, en la práctica, muchas aplicaciones basadas en HTTP utilizan cookies y otros mecanismos para mantener el estado de la sesión (algunas de estas prácticas, como la reescritura de URLs, no son permitidas por REST).
- Un conjunto de operaciones bien definidas que se aplican a todos los recursos de información: HTTP en sí define un conjunto pequeño de operaciones, las más importantes son POST, GET, PUT y DELETE. Con frecuencia estas operaciones se equiparan a las operaciones CRUD en bases de datos (ABMC: Alta, Baja, Modificación y Consulta) que se requieren para la persistencia de datos, aunque POST no encaja exactamente en este esquema.
- Una sintaxis universal para identificar los recursos. En un sistema REST, cada recurso es direccionable únicamente a través de su URI.
- El uso de hipermedios, tanto para la información de la aplicación como para las transiciones de estado de la aplicación: la representación de este estado en un sistema REST son típicamente HTML o XML. Como resultado de esto, es posible navegar de un recurso REST a muchos otros, simplemente siguiendo enlaces sin requerir el uso de registros u otra infraestructura adicional.
A continuación, se ilustran estos fundamentos.
Cliente/Servidor |
Como servicios web, son cliente servidor y definen una interfaz de comunicación entre ellos, separando completamente las responsabilidades entre ambas partes.
|
Sin estado |
Son servicios web que no mantienen estado asociado al cliente. Cada petición que se realiza a ellos es completamente independiente de la siguiente. Todas las llamadas al mismo servicio serán idénticas.
|
Caché |
El contenido de los servicios web REST se puede cachear de tal forma que, una vez realizada la primera petición al servicio, el resto puedan apoyarse en el caché si fuera necesario.
|
Servicios Uniformes |
Todos los servicios REST compartirán una forma de invocación y métodos uniforme utilizando los métodos GET, POST, PUT y DELETE.
|
Arquitectura en capas |
Todos los servicios REST están orientados hacia la escalabilidad y un cliente REST no será capaz de distinguir entre si está realizando una petición directamente al servidor, o se lo está devolviendo un sistema de cachés intermedio; o, por ejemplo, existe un balanceador que se encarga de redirigirlo a otro servidor.
|
A continuación se indican los bloques de información que se consideran dentro de nuestra API.
Puerto asignado para los servicios: 9050
Alta de Empresas
URL | /empresas |
Parámetros |
Empresa rfc (Requerido) idDriver Domicilio de la empresa calle (Requerido) Sucursal nombre (Requerido) Domicilio de la empresa calle (Requerido) Certificado csdCer (Requerido) csdPass (Requerido) Tipos CFDI nombre (Requerido) Plantilla plantilla (Requerido) Logo nombre (Requerido) |
Método http |
POST |
Descripción detallada
|
Método para dar de alta una nueva empresa mediante el API de integración en formato json. |
Header |
keyServidor |
Códigos respuesta/errores |
200 - Ok |
Ejemplo |
https://localhost:9050/empresas "idDriver":"Driver-1235999", https://localhost:9050/empresas |
Ejemplo respuesta (código 200) |
{ "rfc": "rfc", "lugarExpedicion": "lugarExpedicion", "correo": "correo", "razonSocial": "razonSocial", "regimenFiscal": "regimenFiscal", "keyEmpresa": "keyEmpresa", "dominio": "dominio", "sucursales": [ { "idSucursal": "600076", "claveSucursal": "", "tipo": "MATRIZ" } ], "tipoCfd": [ { "idTipoCfd": "598255", "nombre": "Factura" }, { "idTipoCfd": "598256", "nombre": "Pagos" }, { "idTipoCfd": "598257", "nombre": "CartaPorteDemo" } ] } |
Modificación Empresa
URL | /empresas |
Parámetros |
Empresa nombre idDriver Domicilio de la empresa calle Certificado (Opcional) csdCer (Requerido) |
Método http | PUT |
Descripción detallada | Método para modificar una nueva empresa mediante el API de integración en formato json. |
Header | keyEmpresa |
Códigos respuesta/errores |
200 - Ok 401 - keyServidor not found |
Ejemplo |
https://localhost:9050/empresas "nombre": "Empresa prueba S de RL de CV", "idDriver":"Driver-1235999", |
Ejemplo respuesta (código 200) |
{ "rfc": "rfc", "lugarExpedicion": "lugarExpedicion", "correo": "correo", "razonSocial": "razonSocial", "regimenFiscal": "regimenFiscal", "keyEmpresa": "keyEmpresa", "dominio": "dominio", "sucursales": [ { "idSucursal": "600076", "claveSucursal": "", "tipo": "MATRIZ" } ], "tipoCfd": [ { "idTipoCfd": "598255", "nombre": "Factura" }, { "idTipoCfd": "598256", "nombre": "Pagos" }, { "idTipoCfd": "598257", "nombre": "CartaPorteDemo" } ] } |
Modificación de tipoCFDIS
URL | /tiposCfds/< IdtipoCFD > |
Tipos CFDI nombre Plantilla (Opcional) plantilla (Requerido) Logo nombre (Requerido) |
|
Método http | PUT |
Descripción detallada | Método para eliminar empresas mediante el API de integración en formato json. |
Header | keyEmpresa |
Códigos respuesta/errores |
200 - Ok 401 - Not Found - No existe la keyEmpresa |
Ejemplo |
https://localhost:9050/tiposCfds/2bbab7f32f54a817fffbb3965ec0fb20 { "nombre": "tipo cfd 1", "tipo": "I", "adaptador": "adaptadorb64", "conector": "conectorb64", "plantilla": { "plantilla": "plantillab64", "logo": [ { "nombre": "nombreImagen", "content": "b64" } ] } } |
Ejemplo respuesta (código 200) | N/A |
Alta de sucursales
URL | /empresas/sucursales |
Parámetros |
Sucursal nombre (Requerido) Domicilio de la sucursal calle (Requerido) |
Método http |
POST |
Descripción detallada | Metodo para dar de alta nuevas sucursales mediante el API de integración en formato json. |
Header | keyEmpresa |
Códigos respuesta/errores |
200 - Ok 401 - Not Found - No existe la keyEmpresa |
Ejemplo |
https://localhost:9050/empresas/sucursales { "nombre": "Nueva Sucursal", "claveSucursal": "346554", "lugarExp": "Mexico", "domicilio": { "calle": "empedrada", "municipio": "atita", "estado": "hidalgo", "pais": "mexico", "cp": "46555" } } |
Ejemplo respuesta (Código 200) | {"idSucursal":"518086312de4e2ee1fc0e9d195b9d355","claveSucursal":"346554","tipo":"SUCURSAL"} |
Modificación de sucursales
URL | /empresas/<Idsucursal> |
Parámetros |
Sucursal nombre Domicilio de la sucursal calle |
Método http | PUT |
Descripción detallada | Metodo para dar de alta nuevas sucursales mediante el API de integraión en formato json |
Header | keyEmpresa |
Códigos respuesta/errores |
200 - Ok 401 - Not Found - No existe la keyEmpresa |
Ejemplo |
https://localhost:9050/empresas/d7e860ee4a641b51ae422cc91d7868a4 { "nombre": "Nueva Sucursal 12" } |
Ejemplo respuesta (código 200) | N/A |