TIMBRA TU COMPROBANTE
Para crear un Comprobante Fiscal Digital (CFDI) válido, el Servicio de Administración Tributaria (SAT) tiene que timbrar el comprobante. El siguiente diagrama representa el proceso de timbrado que realiza nuestra API Comercial en cuestión de segundos.
Timbrado en el entorno de producción
Al recibir una solicitud de Timbrado de CFDI en el entorno de producción, nuestra API realiza las siguientes acciones:
- Validación de los datos para asegurar que el comprobante cumpla con las leyes fiscales vigentes.
- Sellado del comprobante con el Certificado de Sello Digital (CSD) del emisor.
- Envío del comprobante al SAT. La conexión con el SAT se realiza mediante Proveedores Autorizados de Certificación (PAC).
El SAT timbra y regresa el comprobante con su sello digital. - Generación del CFDI timbrado en los siguientes formatos:
- Un archivo XML
- Un archivo PDF
- Envío del comprobante a tu sistema o aplicación.
Dentro de la respuesta de la API se encuentra toda la información del timbrado así como las ligas para descargar el CFDI en formatos XML y PDF.
Timbrado en el entorno de prueba
Una solicitud de timbrado en el entorno de prueba genera un CFDI en formatos XML y PDF y emula sellos digitales en el archivo PDF. El CFDI generado en el entorno de prueba no tiene valor fiscal y no es enviado al SAT.
La API Comercial te permite timbrar CFDI en versión 3.3. Enlace Fiscal está trabajando para actualizar la API Comercial y permitir el timbrado de CFDI versión 4.0.
Contenido de la página
En esta página encontrarás el siguiente contenido:
Requisitos
Este tutorial asume que ya tienes los siguientes elementos:
- Una cuenta configurada con la modalidad de API activada. Si aún no tienes tu cuenta configurada, consulta la Guía de Inicio Rápido.
- Tus credenciales para consumir la API. Para más información sobre cómo obtener y utilizar tus credenciales en el encabezado de tu petición, consulta la sección de Autenticación.
Puedes realizar una petición de timbrado en los siguientes casos:
- Si tienes una cuenta gratis: Puedes emitir hasta 5 CFDI con validez fiscal dentro de los 30 días después de la creación de la cuenta gratis y antes de pasar al esquema de prepago. Además, puedes generar una cantidad ilimitada de CFDI sin validez fiscal para probar la integración de la API con el entorno de prueba.
- Si tienes saldo en tu cuenta: Puedes emitir la cantidad de comprobantes fiscales que requieras mientras tengas saldo en tu cuenta, tanto en el entorno de prueba como en el entorno de producción. Para consultar tu saldo disponible, puedes realizar una petición al endpoint
POST https://api.enlacefiscal.com/v6/obtenerSaldo.
Petición POST generarCfdi
En este tutorial se muestra cómo hacer una petición API de timbrado de una factura electrónica con IVA de 16% en versión CFDI 3.3 en el entorno de producción. Si quieres generar un comprobante en el entorno de prueba, solo necesitas cambiar el valor del parámetro modo a debug.
Endpoint
POST https://api.enlacefiscal.com/v6/generarCfdi
Elementos de la petición
En esta sección se describen los elementos que contiene la petición.
- Información General del Comprobante
Se refiere a los datos que envías a Enlace Fiscal para especificar qué versión y modo se usan. También incluye datos generales de la factura (Serie, Folio, Fecha Emisión, etc). Los datos incluyen:modo(opcional)versionEFseriefolioInternofechaEmisionsubTotalTotalrfcDatosDePagoformaDePago
- Impuestos y Totales
En estas etiquetas se manda la información de los impuestos totales de la factura (la sumatoria de impuestos por tipo de impuesto y Tasa). También incluye la suma de los totales desglosando impuestos y descuentos.Para obtener información detallada de cómo calcular los impuestos, consulta la guía para calcular impuestos.TotalestrasladosImpuestosTipoclaveImpuestotipoFactortasaOCuotaimporte": "3.20"
Como desarrollador, sólo necesitas enviarnos la petición hecha con datos planos en formato JSON.
Ejemplo de petición
El siguiente es un código de ejemplo de la petición de timbrado para una factura con IVA 16% en formato JSON:
curl "https://api.enlacefiscal.com/v6/probarConexion"
--request "POST"
--header "Content-Type:application/json"
--header "x-api-key:<X-API-KEY>"
--user "<USUARIO>:<TOKEN>"
--data '{
"CFDi": {
"modo": "produccion",
"versionEF": "6.0",
"serie": "FAA",
"folioInterno": "1",
"fechaEmision": "2021-12-01 11:03:43",
"subTotal": "20.00",
"total": "23.20",
"rfc": "AAA010101AAA",
"DatosDePago": {
"formaDePago": "03"
},
"Receptor": {
"rfc": "XAXX010101000",
"nombre": "Empresa Demo's",
"usoCfdi": "adquisicion_mercancias"
},
"Partidas": [
{
"cantidad": "1",
"claveUnidad": "KGM",
"claveProdServ": "42171606",
"descripcion": "1 Kg de arroz",
"valorUnitario": "20.00",
"importe": "20.00",
"Impuestos": [
{
"tipo": "traslado",
"claveImpuesto": "IVA",
"tipoFactor": "tasa",
"tasaOCuota": "0.16",
"baseImpuesto": "20.00",
"importe": "3.20"
}
]
}
],
"Impuestos": {
"Totales": {
"traslados": "3.20"
},
"Impuestos": [
{
"tipo": "traslado",
"claveImpuesto": "IVA",
"tipoFactor": "tasa",
"tasaOCuota": "0.16",
"importe": "3.20"
}
]
}
}
}
Respuesta
La respuesta que recibes de nuestra API está en formato JSON. Dentro de la respuesta encuentras las URL para descargar los archivos XML y PDF de tus comprobantes.
Elementos de la respuesta
Los elementos que componen la respuesta son:
| Elemento | Descripción | Tipo |
|---|---|---|
AckEnlaceFiscal |
Se refiere al nombre del objeto. | Object |
numeroReferencia |
Muestra el número de referencia de la petición. Sirve para distinguir cada petición y poder identificarla en caso de error. | Number |
estatusDocumento |
Devuelve información de si la petición fue aceptada o no. Los dos valores posibles son: “aceptado” o “rechazado”. | String |
fechaMensaje |
Muestra información acerca de la fecha del mensaje. | String |
version |
Muestra la versión del formato de respuesta de la API. | String |
folioInterno |
Es el número de folio del comprobante. Se muestra en la respuesta sólo como referencia ya que es el mismo dato que está en la petición | String |
folioFiscalUUID |
Devuelve el Folio Fiscal que asigna el SAT al comprobante que se acaba de timbrar. | String |
serie |
Es la serie del comprobante. Se muestra en la respuesta sólo como referencia ya que es el mismo dato que está en la petición. | String |
noSerieCertificado |
Es el número de serie del Certificado de Sello Digital (CSD) del contribuyente. Se utiliza como “sello” del contribuyente para el comprobante. | String |
noSerieCertificadoSAT |
Es el número de serie del certificado de sello digital (CSD) del SAT. Se utiliza como “sello” del SAT para el comprobante. | String |
selloCFDi |
Sello Digital que asigna el SAT al comprobante, sirve como firma electrónica del contribuyente. | String |
selloSAT |
Sello Digital del SAT, sirve como firma electrónica del SAT. | String |
cadenaTFD |
Cadena Original del comprobante en específico. Es la que “firma” electrónicamente el SAT. | String |
fechaGeneracionCFD |
Es la fecha de generación. Se muestra en la respuesta sólo como referencia ya que es el mismo dato que está en la petición. | String |
fechaTFD |
Fecha en la que el SAT creó el Timbre Fiscal Digital (Fecha de timbrado del comprobante). | String |
estadoCFDi |
Muestra si el comprobante está vigente o si fue cancelado. | String |
descargaArchivoQR |
URL donde se puede descargar el archivo QR del comprobante. Este archivo te sirve en caso de que desees hacer tu propio diseño de comprobantes en formato PDF. | String |
descargaArchivoPDF |
URL donde se puede descargar la versión PDF del comprobante. Puedes personalizar el diseño de este archivo dentro del portal de Enlace Fiscal. | String |
xmlCFDi |
Devuelve la Versión XML del comprobante codificado en BASE 64. | String |
descargaXmlCFDi |
URL donde se puede descargar la versión XML del comprobante. | String |
Ejemplo de respuesta
El siguiente es un código de ejemplo de la respuesta a la petición de timbrado para una factura con IVA 16% en formato JSON:
{
"AckEnlaceFiscal": {
"numeroReferencia": "123",
"estatusDocumento": "aceptado",
"fechaMensaje": "2017-07-20 11:22:02",
"version": "1.0",
"folioInterno": "1",
"folioFiscalUUID": "4E80053F-74B9-4004-B7B6-09B30781B4F6",
"serie": "FA",
"noSerieCertificado": "20001000000200001111",
"noSerieCertificadoSAT": "20001000000100001111",
"selloCFDi": "...",
"selloSAT": "...",
"cadenaTFD": "...",
"fechaGeneracionCFDi": "2017-03-27 17:03:09",
"fechaTFD": "2017-03-27T18:55:05",
"estadoCFDi": "vigente",
"descargaArchivoQR": "https://descarga.enlacefiscal.com/QR/?i=QUFBMDEwMTAxQUFBLS0yMDE3XzE4XzRldsTNmLTc0YjktNDAwNC1iN2I2LTA5YjMwNzgxYjRmNi0tMS0tMTg=&b=0",
"descargaArchivoPDF": "https://descarga.enlacefiscal.com/PDF/?i=YjMwNzgxYjRmNi0tMS0tMTg=&b=0",
"xmlCFDi": "...",
"descargaXmlCFDi": "https://descarga.enlacefiscal.com/CFDI/?i=QUFBMDEwMTAxQUFBLS0yMDE3XzE4XzRlODAwNTNmLTc0dssjktNDAwNC1iN2I2LTA5YjMwNzgxYjRmNi0tMS0tMTg=&b=0"
}
}
Verificación de la validez fiscal del comprobante
Puedes verificar la validez fiscal del comprobante generado en el entorno de producción directamente en el portal del SAT ingresando los siguientes datos:
- Folio fiscal del CFDI. Puedes encontrar esta información en la respuesta de la API bajo la etiqueta
folioFiscalUUID. - RFC del emisor
- RFC del receptor
Alternativamente, puedes escanear el archivo QR de la respuesta a la petición y así acceder al portal del SAT con esos mismos datos prellenados.
¿Tienes preguntas?
Consulta nuestros artículos con preguntas frecuentes sobre facturación electrónica o contáctanos por correo.