API para CFDi

Emisión y Timbrado de CFDi

A continuación encontrará la documentación completa de todos los elementos que componen la petición de generación y timbrado de un comprobante fiscal digital (CFDi).

Servicios en los que aplica:

  • CFDi

Última actualización:

  • 1 de Octubre de 2013 (v5.0)

Requisitos:

  • Es necesario contar con la Modalidad API activa en su cuenta.
  • Contar con su token de autenticación.
  • Importante agregar Series de Folios para la modalidad API en el módulo de Datos Fiscales.

Información General

Este servicio (webservice) permite generar y timbrar un comprobante fiscal digital en el esquema CFDi. Dado que la petición se compone de varias secciones, para lograr mayor claridad se explica a detalle cada una. Algunos de los elementos son opcionales y permiten una mayor personalización del CFDi.

<CFDi> Encabezado del Comprobante

En esta sección se especifica la información general del comprobante fiscal digital que se habrá de emitir y timbrar, así como los parámetros del API necesarios.

<modo> Es la modalidad del API en la que se va a generar el comprobante fiscal digital, siendo las opciones posibles: 'debug' o 'produccion'.

  • Cuando nos encontramos realizando la implementación inicial del API es muy útil poder realizar pruebas de generación de comprobantes "sin efectos fiscales" para asegurarnos de que todo funciona correctamente.
  • Al utilizar el valor 'debug' se generan comprobantes de prueba ("sin valor fiscal") permitiendo verificar que todos los demás elementos del comprobante sean correctos - como si fuese uno real (diseño del comprobante, envío de correo, configuración de impuestos, etc).
Tipo de Dato Ocurrencia Valores Posibles Valor Predeterminado Ejemplo
Predeterminado Opcional debug
produccion
produccion debug

<versionEF> Versión de API que se utilizará. Para esta versión del API se debe utilizar '5.0'.

Tipo de Dato Ocurrencia Valor Requerido
Predeterminado Requerido 5.0

<serie> Es la serie de folios que se asignará al comprobante fiscal digital para poder identificarlo de una manera sencilla. Se utiliza únicamente para control interno (no es un dato fiscal).

Tipo de Dato Ocurrencia Ejemplo
String Requerido FA

<folioInterno> Folio interno que se utiliza para identificar el comprobante fiscal digital generado. Se utiliza únicamente para control interno (no es un dato fiscal).

  • El folio interno junto con la serie asignada se utilizan como método de control para evitar timbrar un mismo comprobante más de una vez.
  • Si por error se llega a enviar la petición de timbrado de un mismo folio y serie en varias ocasiones, nuestro API no la timbra otra vez, simplemente se envía la información del timbrado original.
Tipo de Dato Ocurrencia Ejemplo
Entero Requerido 1245

<fechaEmision> Fecha de emisión del comprobante fiscal digital. El tiempo máximo que se tiene entre la fecha de emisión y la petición de timbrado es de 72 horas por disposición oficial.

Tipo de Dato Ocurrencia Formato Ejemplo
dateTime (ISO-8601) Requerido AAAA-MM-DDTHH:MM:SS 2013-09-20T09:30:47

<subtotal> Cantidad con hasta seis decimales para indicar la suma de los importes antes de descuentos e impuestos.

Tipo de Dato Ocurrencia Ejemplo
Decimal Requerido 1500.00

<descuentos> Cantidad con hasta seis decimales para indicar la suma de los descuentos aplicables antes de impuestos.

Tipo de Dato Ocurrencia Ejemplo
Decimal Opcional 50.00

<total> Cantidad con hasta seis decimales para indicar la suma del subtotal, menos los descuentos aplicables, más los impuestos trasladados, menos los impuestos retenidos.

Tipo de Dato Ocurrencia Ejemplo
Decimal Requerido 1605.10

<numeroDecimales> Número de decimales a utilizar en el comprobante fiscal digital. El SAT permite utilizar un mínimo de 2 y un máximo de 6 decimales para expresar los importes.

  • Todos los importes en el comprobante fiscal tendrán el mismo número de decimales, en el caso que algún importe se envíe con menos decimales se le agregarán ceros.
  • Por ejemplo, si se señala que se utilizarán 4 decimales y se envía como importe 135.56, en el comprobante fiscal aparecerá 132.5600.
  • Por el contrario, si se indica que el número de decimales será 2 y se envía una cantidad con 4 decimales: 135.5678, en el comprobante fiscal aparecerá la cantidad redondeada al número decimales indicado: 135.57
Tipo de Dato Ocurrencia Valores Posibles Ejemplo
Decimal Opcional 2
3
4
5
6
2

<tipoMoneda> Moneda en la que se emite el comprobante fiscal digital.

Tipo de Dato Ocurrencia Valores Posibles Valor Predeterminado Ejemplo
Predeterminado Opcional MXN (Peso Mexicano)
USD (Dólar Americano)
EUR (Euro)
GBP (Libra Esterlina)
CAD (Dólar Canadiense)
MXN USD

<tipoCambio> Tipo de cambio conforme a la moneda usada - <tipoMoneda> - con respecto al peso mexicano. Se pueden incluír hasta 6 decimales.

Tipo de Dato Ocurrencia Ejemplo
Decimal Opcional 13.00

<nombreDiseno> Nombre del diseño que se utilizará para generar el PDF del comprobante fiscal.

  • El diseño a utilizar y el nombre asignado se pueden consultar en el portal web de Enlace Fiscal.
  • En caso de no especificarse se utilizará el diseño predeterminado (marcado con la estrella amarilla) del portal web de su cuenta de Enlace Fiscal.
Tipo de Dato Ocurrencia Valor Predeterminado Ejemplo
String Opcional El diseño predeterminado de la cuenta miDiseño

<rfc> Registro Federal de Contribuyentes correspondiente al emisor del comprobante fiscal digital. No debe contener guiones ni espacios.

Tipo de Dato Ocurrencia Longitud Ejemplo
String Requerido 12 caracteres - Persona Moral
13 caracteres - Persona Física
AAA010101BBB
REQUERIDO

<?xml version="1.0" encoding="utf-8"?>
<CFDi
	xsi:schemaLocation="https://esquemas.enlacefiscal.com/EF/ https://esquemas.enlacefiscal.com/EF/EFv5_0.xsd"
	xmlns="https://esquemas.enlacefiscal.com/EF/EFv5_0.xsd"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
	<modo>debug</modo>
	<versionEF>5.0</versionEF>
	<serie>FA</serie>
	<folioInterno>1245</folioInterno>
	<fechaEmision>2013-09-20T09:30:47</fechaEmision>
	<subTotal>1500.00</subTotal>
	<descuentos>50.00</descuentos>
	<total>1605.10</total>
	<numeroDecimales>2</numeroDecimales>
	<tipoMoneda>USD</tipoMoneda>
	<tipoCambio>13.00</tipoCambio>
	<nombreDisenio>miDiseño</nombreDisenio>
	<rfc>AAA010101BBB</rfc>
	<!--Comentario-->
…
						

<DatosDePago> Datos de Pago

En esta sección se incluye toda la información sobre el pago del comprobante fiscal digital emitido. Esta sección es requerida en la petición.

<metodoDePago> Dato para expresar el método de pago utilizado por el receptor del comprobante fiscal digital para el pago de los bienes o servicios.

  • En caso de que no se tenga esta información al momento de la generación del comprobante, se debe utilizar la leyenda 'No identificado'.
  • Es recomendable utilizar los valores posibles sugeridos del listado que aparece a continuación. Sin embargo, es posible utilizar sus propias variaciones para definir el método de pago utilizado.
Tipo de Dato Ocurrencia Valores Posibles Ejemplo
String Requerido No identificado
Efectivo
Transferencia Electrónica
Cheque
Tarjeta de Crédito
Tarjeta de Débito
Tarjeta de Servicios
Transferencia Electrónica

<numeroCuentaPago> Dato condicional para incorporar al menos los cuatro últimos dígitos del número de cuenta con la que se realizó el pago.

  • IMPORTANTE: Se refiere al número de cuenta del receptor del comprobante que utilizó para el pago del mismo.
  • En caso de haber utilizado un valor en el nodo <metodoDePago> que no requiera especificar un dato numérico (ejemplo: 'Efectivo') es posible omitir este nodo por completo.
  • En caso de haber utilizado un valor en el nodo <metodoDePago> que requiera especificar un dato numérico de cuenta (ejemplo: 'Transferencia Electrónica') es requisito incorporar este nodo con el valor correcto.
Tipo de Dato Ocurrencia Formato Ejemplo
String Condicional XXXX
Longitud Mínima: 4 Dígitos
Longitud Máxima: 20 Dígitos
5478

<formaDePago> Elemento para especificar la forma en la que se llevo a cabo el pago del comprobante fiscal digital. Por "forma" se refiere al número de exhibiciones requeridas para el pago. Puede ser 'Pago en una sola exhibición' o 'Parcialidad XX de XY'.

  • IMPORTANTE: Se refiere al número de cuenta del receptor del comprobante que utilizó para el pago del mismo.
  • En caso de haber utilizado un valor en el nodo <metodoDePago> que no requiera especificar un dato numérico (ejemplo: 'Efectivo') es posible omitir este nodo por completo.
  • En caso de haber utilizado un valor en el nodo <metodoDePago> que requiera especificar un dato numérico de cuenta (ejemplo: 'Transferencia Electrónica') es requisito incorporar este nodo con el valor correcto.
Tipo de Dato Ocurrencia Formato Ejemplo
String Requerido Pago en una sola exhibición
Parcialidad XX de YY
Parcialidad 1 de 2
REQUERIDO

<?xml version="1.0" encoding="utf-8"?>
…
<DatosDePago>
	<metodoDePago>Transferencia Electronica</metodoDePago>
	<numeroCuentaPago>5478</numeroCuentaPago>
	<formaDePago>Parcialidad 1 de 2</formaDePago>
</DatosDePago>
…
						

<PagoEnParcialidades> Pago en Parcialidades

Esta sección contiene los datos correspondientes a comprobantes fiscales emitidos en parcialidades que requieren hacer referencia al folio global al que pertenecen.

<folioFiscalOriginal> Dato para señalar el folio fiscal del comprobante fiscal que se hubiese expedido por el valor total del comprobante fiscal, tratándose del pago en parcialidades.

  • En caso de que el comprobante original haya sido emitido bajo el esquema CFDi: Se refiere al folio fiscal UUID asignado por el SAT al comprobante fiscal digital que ampara el total.
  • En caso de que el comprobante original haya sido emitido bajo el esquema CFD o CBB: Se refiere al número de folio fiscal del comprobante.
Tipo de Dato Ocurrencia Formato Ejemplo
String Opcional Original en CFDi:
XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXXXX
Original en CFD/CBB: XXXX
45

<serieFolioFiscalOriginal> Es la serie del comprobante que se hubiese expedido por el valor total del comprobante fiscal, tratándose del pago en parcialidades.

  • Este campo solo aplica cuando el comprobante original se emitió en modalidad CBB o CFD ya que en CFDi ya no hay una serie fiscal.
Tipo de Dato Ocurrencia Ejemplo
String Condicional FA

<fechaFolioFiscalOriginal> Es la fecha fiscal del comprobante que se hubiese expedido por el valor total del comprobante fiscal, tratándose del pago en parcialidades.

  • En caso de que el comprobante original haya sido emitido bajo el esquema CFDi: Se refiere a la fecha del timbrado asignado por el SAT al comprobante fiscal digital que ampara el total.
  • En caso de que el comprobante original haya sido emitido bajo el esquema CFD o CBB: Se refiere a la fecha de emisión del comprobante que ampara el total.
Tipo de Dato Ocurrencia Formato Ejemplo
dateTime (ISO-8601) Opcional AAAA-MM-DDTHH:MM:SS 2013-05-13T09:30:15

<montoFolioFiscalOriginal> Es total del comprobante que se hubiese expedido por el valor total del comprobante fiscal, tratándose del pago en parcialidades.

Tipo de Dato Ocurrencia Ejemplo
Decimal Opcional 5000.00
CONDICIONAL

<?xml version="1.0" encoding="utf-8"?>
…
<PagoEnParcialidades>
	<folioFiscalOriginal>45</folioFiscalOriginal>
	<serieFolioFiscalOriginal>FA</serieFolioFiscalOriginal>
	<fechaFolioFiscalOriginal>2013-05-13T09:30:15</fechaFolioFiscalOriginal>
	<montoFolioFiscalOriginal>5000.00</montoFolioFiscalOriginal>
</PagoEnParcialidades>
…
						

<Receptor> Receptor (Cliente)

Esta sección contiene los datos correspondientes al receptor del comprobante fiscal (cliente).

<rfc> Registro Federal de Contribuyentes correspondiente al receptor del comprobante. Sin guiones ni espacios.

Tipo de Dato Ocurrencia Longitud Ejemplo
String Requerido 12 caracteres - Persona Moral
13 caracteres - Persona Física
ABC010203ABC

<nombre> Es el nombre fiscal del receptor (cliente) del comprobante.

  • En el caso de personas físicas se requiere el nombre completo sin abreviaturas tal y como lo tuviesen registrado ante el SAT.
  • En el caso de personas morales se requiere la denominación o razón social de la misma.
Tipo de Dato Ocurrencia Longitud Ejemplo
String Requerido Longitud Mínima: 1 Caracter
Longitud Máxima: 255 Caracteres
Mi Cliente, S.A. de C.V.

<IdentificadorCliente> Bloque opcional para agregar un identificador personalizado del receptor. La información del identificador únicamente aparece en la versión PDF del comprobante fiscal en la sección de datos del receptor.

  • Por ejemplo, la Escuela ABC emite facturas a sus alumnos por el pago de colegiatura, la escuela identifica a sus alumnos por número de matrícula y desea que este dato se muestre en la versión impresa del comprobante fiscal.

<nombreCampo> Elemento que especifica el nombre del identificador que se usará.

Tipo de Dato Ocurrencia Ejemplo
String Requerido No. Matrícula

<valorCampo> Elemento que contiene el valor del identificador del receptor.

Tipo de Dato Ocurrencia Ejemplo
String Requerido A010203

<DomicilioFiscal> Bloque opcional para agregar el domicilio fiscal del receptor.

  • A pesar de que el estándar del SAT permite no incluír el domicilio fiscal del receptor en el comprobante fiscal CFDi, Enlace Fiscal le recomienda incluírlo para evitar rechazos por parte de receptores.
  • Es ¡mportante capturar el domicilio fiscal tal y como el receptor lo tiene registrado ante el SAT. Cada dato debe ser proporcionado en su campo específico.

<calle> Elemento que indica el nombre de la vialidad del domicilio fiscal del receptor.

Tipo de Dato Ocurrencia Ejemplo
String Requerido Real Acueducto

<noExterior> Elemento que contiene el valor del número exterior del domicilio fiscal del receptor.

Tipo de Dato Ocurrencia Ejemplo
String Opcional 240

<noInterior> Elemento que contiene el valor del número interior del domicilio fiscal del receptor.

Tipo de Dato Ocurrencia Ejemplo
String Opcional Piso 7

<colonia> Elemento que contiene el nombre de la colonia o asentamiento del domicilio fiscal del receptor.

Tipo de Dato Ocurrencia Ejemplo
String Opcional Puerta de Hierro

<localidad> Elemento que contiene el nombre de la localidad (poblado o ciudad) del domicilio fiscal del receptor.

  • NOTA: Es posible que en algunos casos el dato de <localidad> y <municipio> sea exactamente el mismo (común en algunas ciudades).
  • En el caso de un domicilio dentro del Distrito Federal, el dato correcto para este campo es "Ciudad de México".
Tipo de Dato Ocurrencia Ejemplo
String Opcional Guadalajara

<municipio> Elemento que contiene el nombre del municipio o delegación (en el caso del Distrito Federal) del domicilio fiscal del receptor.

  • NOTA: Es posible que en algunos casos el dato de <localidad> y <municipio> sea exactamente el mismo (común en algunas ciudades).
Tipo de Dato Ocurrencia Ejemplo
String Opcional Guadalajara

<estado> Elemento que indica el estado (o equivalente en caso de extranjeros) del domicilio fiscal del receptor.

  • En el caso de un domicilio en el DF el dato correcto de este campo es "Distrito Federal".
Tipo de Dato Ocurrencia Ejemplo
String Requerido Jalisco

<pais> Elemento que indica el país del domicilio fiscal del receptor.

Tipo de Dato Ocurrencia Ejemplo
String Requerido México

<cp> Elemento que indica el código postal (o equivalente en caso de extranjeros) del domicilio fiscal del receptor.

  • En el caso de un domicilio mexicano el campo debe ser de exactamente 5 dígitos.
Tipo de Dato Ocurrencia Ejemplo
String Opcional 45116
REQUERIDO

<?xml version="1.0" encoding="utf-8"?>
…
<Receptor>
	<rfc>ABC010203ABC</rfc>
	<nombre>Mi Cliente, S.A. de C.V.</nombre>
	<IdentificadorCliente>
		<nombreCampo>No. Matrícula</nombreCampo>
		<valorCampo>A010203</valorCampo>
	</IdentificadorCliente>
	<DomicilioFiscal>
		<calle>Real Acueducto</calle>
		<noExterior>240</noExterior>
		<noInterior>Piso 7</noInterior>
		<colonia>Puerta de Hierro</colonia>
		<localidad>Guadalajara</localidad>
		<municipio>Guadalajara</municipio>
		<estado>Jalisco</estado>
		<pais>México</pais>
		<cp>45116</cp>
	</DomicilioFiscal>
</Receptor>
…
						

<Partidas> Partidas del Comprobante

Es el bloque requerido que agrupa a todas las partidas del comprobante fiscal digital CFDi.

<Partida> Bloque requerido que agrupa los datos de una partida individual.

  • Debe aparecer al menos una partida por comprobante.
  • Se pueden agregar hasta 200 partidas en un mismo comprobante.

<cantidad> Es la cantidad de bienes, servicios o artículos de la partida.

  • No se permiten valores negativos.
  • No se permite valor "0" (cero).
  • Se permite una precisión de hasta 6 decimales.
Tipo de Dato Ocurrencia Rango de Valores Ejemplo
Decimal Requerido Mínimo: 0.000001
Máximo: 9,223,372,036,854
10

<unidad> Es la unidad de medición para la cantidad expresada en la partida.

  • Si bien el SAT definió un catálogo limitado de unidades de medida válidas durante la Resolución Miscelanea Fiscal para 2012, posteriormente se arrepintió y en una Resolución posterior permitió el uso de cualquier unidad de medida adecuada de acuerdo a las necesidades comerciales de cada contribuyente.
  • Usted puede consultar el catálogo "sugerido" del SAT visitando la guía de ayuda sobre Unidades de Medida en CFDi.
  • Para servicios (y en realidad para cualquier caso) se puede utilizar "No aplica".
Tipo de Dato Ocurrencia Longitud Ejemplo
String Requerido Mínima: 1 Caracter
Máxima: 150 Caracteres
Pieza

<noIdentificacion> Es el código o clave de identificación de los bienes o servicios de la partida.

  • Este dato también se conoce como "SKU".
Tipo de Dato Ocurrencia Longitud Ejemplo
String Opcional Mínima: 1 Caracter
Máxima: 20 Caracteres
S01

<descripcion> Es la descripción del bien o servicio de la partida.

  • En este campo se puede incluír cualquier tipo de información o texto que detalle de lo que se trata la partida.
Tipo de Dato Ocurrencia Longitud Ejemplo
String Requerido Mínima: 1 Caracter
Máxima: 2,000 Caracteres
Lámpara roja con apagador de piso

<valorUnitario> Es el valor o precio unitario de los bienes o servicios de la partida.

  • Es posible utilizar valores negativos (útil por ejemplo en el caso de anticipos en la factura final).
  • Se permite una precisión de hasta 6 decimales.
Tipo de Dato Ocurrencia Rango de Valores Ejemplo
Decimal Requerido Mínimo: 0.000001
Máximo: 9,223,372,036,854
100.00

<importe> Es el importe total de los bienes o servicios descritos en la partida.

  • Debe de ser el equivalente al resultado de multiplicar la cantidad por el valor unitario de la partida sin considerar descuentos.
  • Es posible utilizar valores negativos (útil por ejemplo en el caso de anticipos en la factura final).
  • Se permite una precisión de hasta 6 decimales.
Tipo de Dato Ocurrencia Rango de Valores Ejemplo
Decimal Requerido Mínimo: 0.000001
Máximo: 9,223,372,036,854
1050.00

<Descuento> Bloque opcional que agrupa la información del descuento de la partida.

<porcentajeDescuento> Es el valor porcentual del descuento aplicado al importe los bienes o servicios descritos en la partida.

  • No se permiten valores decimales, es un dato exclusivamente entero.
  • No es posible utilizar valores negativos.
Tipo de Dato Ocurrencia Rango de Valores Ejemplo
Entero Requerido Mínimo: 0
Máximo: 100
5

<montoDescuento> Es el importe que comprende el descuento aplicado a los bienes o servicios de la partida.

  • Debe de ser el equivalente al valor absoluto (no negativo) resultado de multiplicar el porcentaje del descuento al importe de la partida.
  • Se permite una precisión de hasta 6 decimales.
Tipo de Dato Ocurrencia Rango de Valores Ejemplo
Decimal Requerido Mínimo: 0.000001
Máximo: 9,223,372,036,854
52.50

<importeConDescuento> Es el importe total de los bienes o servicios descritos en la partida considerando el descuento aplicado.

  • Debe de ser el equivalente al resultado de restar el monto del descuento de la partida al importe de la misma.
  • Es posible utilizar valores negativos (útil por ejemplo en el caso de anticipos en la factura final).
  • Se permite una precisión de hasta 6 decimales.
  • Este es el valor que aparece en la versión PDF del CFDi como total de la partida.
Tipo de Dato Ocurrencia Rango de Valores Ejemplo
Decimal Requerido Mínimo: 0.000001
Máximo: 9,223,372,036,854
997.50

<InformacionAduanera> Bloque condicional que agrupa la información aduanera de la partida. Solo es requerida cuando el bien considerado en la misma fue importado vendido de primera mano.

<numeroPedimento> Es el número de documento aduanero que ampara la importación del bien descrito en la partida.

Tipo de Dato Ocurrencia Rango de Valores Ejemplo
Entero Requerido 15 dígitos 564100545478711

<fecha> Fecha de expedición del documento aduanero que ampara la importación del bien de la partida del comprobante fiscal digital.

Tipo de Dato Ocurrencia Formato Ejemplo
Date Requerido AAAA-MM-DD 2013-08-15

<aduana> Es el nombre de la aduana donde se realizó la importación del bien o producto.

  • Es importante consultar el dato exacto del nombre de la aduana que se aparece en el sitio web del SAT.
Tipo de Dato Ocurrencia Longitud Ejemplo
String Requerido Mínima: 1 Caracter
Máxima: 150 Caracteres
Tijuana
REQUERIDO

<?xml version="1.0" encoding="utf-8"?>
…
<Partidas>
	<Partida>
		<cantidad>10.50</cantidad>
		<unidad>Pieza</unidad>
		<noIdentificacion>S01</noIdentificacion>
		<descripcion>Lámpara roja con apagador de piso</descripcion>
		<valorUnitario>100.00</valorUnitario>
		<importe>1050.00</importe>
		<Descuento>
			<porcentajeDescuento>5</porcentajeDescuento>
			<montoDescuento>52.50</montoDescuento>
			<importeConDescuento>997.50</importeConDescuento>
		</Descuento>
		<InformacionAduanera>
			<numeroPedimento>564100545478711</numeroPedimento>
			<fecha>2013-08-15</fecha>
			<aduana>Tijuana</aduana>
		</InformacionAduanera>
	</Partida>
	<Partida>
		<cantidad>1</cantidad>
		<unidad>cuota</unidad>
		<descripcion>Asesoría Comercio Exterior</descripcion>
		<valorUnitario>500.00</valorUnitario>
		<importe>500.00</importe>
	</Partida>
</Partidas>
…
						

<Impuestos> Impuestos

Esta sección requerida contiene la información relacionada con los impuestos federales retenidos y trasladados del CFDi.

<totalImpuestosRetenidos> Es el monto total de los impuestos retenidos. Es necesario incluír el elemento en caso de que el comprobante tenga al menos un impuesto retenido.

  • No se permiten valores negativos en este campo.
Tipo de Dato Ocurrencia Rango de Valores Ejemplo
Decimal Condicional Mínimo: 0.000001
Máximo: 9,223,372,036,854
95.00

<totalImpuestosTrasladados> Es el monto total de los impuestos trasladados. Es necesario incluír el elemento en caso de que el comprobante tenga al menos un impuesto trasladado.

  • No se permiten valores negativos en este campo.
Tipo de Dato Ocurrencia Rango de Valores Ejemplo
Decimal Condicional Mínimo: 0.000001
Máximo: 9,223,372,036,854
232.00

<Retenciones> Bloque condicional que contendrá todos los impuestos retenidos aplicables. Es requerido cuando el comprobante tenga al menos un tipo de impuesto retenido.

<Retencion> Bloque que contendrá los valores para cada impuesto de retención aplicable.

  • Se requiere un bloque por cada impuesto retenido, por lo que puede presentarse más de una vez en un comprobante.
  • Es importante no combinar un mismo tipo de impuesto si se presenta con más de una tasa. Cada impuesto con su tasa debe aparecer en un bloque propio.

<impuesto> Valor que indica el tipo de impuesto federal retenido.

Tipo de Dato Ocurrencia Valores Posibles Ejemplo
Predeterminado Requerido IVA
ISR
ISR

<tasa> Valor que indica la tasa del impuesto federal retenido.

Tipo de Dato Ocurrencia Ejemplo
Decimal Requerido 10.00

<importe> Es el monto total retenido de este impuesto federal a la tasa indicada.

  • No se permiten valores negativos en este campo.
Tipo de Dato Ocurrencia Rango de Valores Ejemplo
Decimal Requerido Mínimo: 0.000001
Máximo: 9,223,372,036,854
95.00

<Traslados> Bloque condicional que contendrá todos los impuestos trasladados aplicables. Es requerido cuando el comprobante tenga al menos un tipo de impuesto trasladado.

<Traslado> Bloque que contendrá los valores para cada impuesto de traslado aplicable.

  • Se requiere un bloque por cada impuesto trasladado, por lo que puede presentarse más de una vez en un comprobante.
  • Es importante no combinar un mismo tipo de impuesto si se presenta con más de una tasa. Cada impuesto con su tasa debe aparecer en un bloque propio.

<impuesto> Valor que indica el tipo de impuesto federal trasladado.

Tipo de Dato Ocurrencia Valores Posibles Ejemplo
Predeterminado Requerido IVA
IEPS
IVA

<tasa> Valor que indica la tasa del impuesto federal trasladado.

  • Para el caso del IVA exento el valor será "NULL".
Tipo de Dato Ocurrencia Ejemplo
Decimal / String (NULL) Requerido 16.00

<importe> Es el monto total trasladado de este impuesto federal a la tasa indicada.

  • No se permiten valores negativos en este campo.
Tipo de Dato Ocurrencia Rango de Valores Ejemplo
Decimal Requerido Mínimo: 0.000001
Máximo: 9,223,372,036,854
232.00
REQUERIDO

<?xml version="1.0" encoding="utf-8"?>
…
<Impuestos>
	<totalImpuestosRetenidos>95.00</totalImpuestosRetenidos>
	<totalImpuestosTrasladados>232.00</totalImpuestosTrasladados>
	<Retenciones>
		<Retencion>
			<impuesto>ISR</impuesto>
			<tasa>10.00</tasa>
			<importe>95.00</importe>
		</Retencion>
	</Retenciones>
	<Traslados>
		<Traslado>
			<impuesto>IVA</impuesto>
			<tasa>16.00</tasa>
			<importe>232.00</importe>
		</Traslado>
	</Traslados>
</Impuestos>
…
						

<ImpuestosLocales> Impuestos Locales

Este bloque condicional contiene los impuestos de tipo "local" que aplican en el comprobante. Es un bloque requerido únicamente cuando se cuenta al menos un impuesto local. De lo contrario se puede evitar agregar el bloque completo.

<totalImpuestosLocalesRetenidos> Es el monto total de los impuestos locales retenidos. Es requerido si el comprobante contiene al menos un impuesto local retenido.

Tipo de Dato Ocurrencia Valor Mínimo Valor Máximo Ejemplo
Decimal Condicional 0 9,223,372,036,854.775807 1089.0002

<totalImpuestosLocalesTrasladados> Es el monto total de los impuestos locales trasladados. Es requerido si el comprobante contiene al menos un impuesto local trasladado.

Tipo de Dato Ocurrencia Valor Mínimo Valor Máximo Ejemplo
Decimal Condicional 0 9,223,372,036,854.775807 9.50

<RetencionesLocales> Es un bloque condicional que contendrá todos los impuestos locales retenidos aplicables. Es requerido cuando el comprobante contenga al menos un impuesto local retenido.

<RetencionLocal> Bloque que contendrá los valores para cada impuesto local de retención aplicable.

  • Se requiere un bloque por cada impuesto local retenido, por lo que puede presentarse más de una vez en un comprobante.
  • Es importante no combinar un mismo tipo de impuesto si se presenta con más de una tasa. Cada impuesto con su tasa debe aparecer en un bloque propio.

<impuesto> Valor que indica el tipo de impuesto local retenido.

Tipo de Dato Ocurrencia Valores Posibles Ejemplo
Predeterminado Requerido ISH
5 al millar
2 al millar
etc.
2 al millar

<tasa> Valor que indica la tasa del impuesto local retenido.

Tipo de Dato Ocurrencia Ejemplo
Decimal Requerido 0.20

<importe> Es el monto total retenido de este impuesto local a la tasa indicada.

  • No se permiten valores negativos en este campo.
Tipo de Dato Ocurrencia Rango de Valores Ejemplo
Decimal Requerido Mínimo: 0.000001
Máximo: 9,223,372,036,854
1.90

<TrasladosLocales> Es un bloque condicional que contendrá todos los impuestos locales trasladados aplicables. Es requerido cuando el comprobante contenga al menos un impuesto local retenido.

<TrasladoLocal> Bloque que contendrá los valores para cada impuesto local de traslado aplicable.

  • Se requiere un bloque por cada impuesto local trasladado, por lo que puede presentarse más de una vez en un comprobante.
  • Es importante no combinar un mismo tipo de impuesto si se presenta con más de una tasa. Cada impuesto con su tasa debe aparecer en un bloque propio.

<impuesto> Valor que indica el tipo de impuesto local trasladado.

Tipo de Dato Ocurrencia Valores Posibles Ejemplo
Predeterminado Requerido ISH
5 al millar
2 al millar
etc.
ISH

<tasa> Valor que indica la tasa del impuesto local trasladado.

Tipo de Dato Ocurrencia Ejemplo
Decimal Requerido 4.00

<importe> Es el monto total trasladado de este impuesto local a la tasa indicada.

  • No se permiten valores negativos en este campo.
Tipo de Dato Ocurrencia Rango de Valores Ejemplo
Decimal Requerido Mínimo: 0.000001
Máximo: 9,223,372,036,854
20.00
CONDICIONAL

<?xml version="1.0" encoding="utf-8"?>
…
<ImpuestosLocales>
	<totalImpuestosLocalesRetenidos>1089.0002</totalImpuestosLocalesRetenidos>
	<totalImpuestosLocalesTrasladados>9.50</totalImpuestosLocalesTrasladados>
	<RetencionesLocales>
		<RetencionLocal>
			<impuesto>2 al Millar</impuesto>
			<tasa>0.20</tasa>
			<importe>1.90</importe>
		</RetencionLocal>
	</RetencionesLocales>
	<TrasladosLocales>
		<TrasladoLocal>
			<impuesto>ISH</impuesto>
			<tasa>4.00</tasa>
			<importe>20.00</importe>
		</TrasladoLocal>
	</TrasladosLocales>
</ImpuestosLocales>
…
						

<BloquesInfoAdicional> Bloques de Información Adicional

Esta sección permite agregar a la versión PDF del comprobante bloques de información no fiscal. Dado que se trata de información no fiscal los campos pueden contener cualquier texto libre siempre y cuando no cause confusión ni contradiga la información fiscal que contiene el resto del comprobante.

<BloqueSuperior> Nodo que contiene la información del bloque superior de información adicional (no fiscal) que aparecerá por encima de las partidas del comprobante en la versión PDF.

<BloqueInferior> Nodo que contiene la información del bloque inferior de información adicional (no fiscal) que aparecerá por debajo de los totales del comprobante en la versión PDF.

  • Se permite solamente un bloque superior y un bloque inferior.
  • Pueden aparecer ambos bloques o solamente uno de los bloques.
  • Existen dos opciones para el texto del bloque: un solo bloque de texto libre (<texto>) o renglones definidos (<TextoRenglones>+<renglon>).

<titulo> Elemento que contiene el título del bloque superior o inferior de información adicional.

Tipo de Dato Ocurrencia Ejemplo
String Requerido Servicio al Cliente

<texto> Elemento que contiene el texto que se incluirá en el cuerpo del bloque de información ya sea superior o inferior. En caso de que sea un texto largo, este tendrá saltos de línea naturales al final de cada renglon.

Tipo de Dato Ocurrencia Ejemplo
String Requerido Estamos a sus ordenes para cualquier duda o aclaración en el 01(800) 100-0000

<TextoRenglones> Nodo que contiene los renglones individuales que aparecerán en el cuerpo del bloque de información adicional ya sea superior o inferior. Se recomienda utilizar este en caso de que se requiera un control más exacto del texto y saltos de línea en en bloque de información.

<renglon> Elemento que contiene el texto especifico para un renglon del bloque de información adicional.

  • IMPORTANTE: Se permite un máximo de 10 renglones dentro de un bloque de información adicional.
Tipo de Dato Ocurrencia Ejemplo
String Requerido Le recordamos que para hacer válida su garantía es necesario:
OPCIONAL

<?xml version="1.0" encoding="utf-8"?>
…
<BloquesInfoAdicional>
	<BloqueSuperior>
		<titulo>Servicio al Cliente</titulo>
		<texto>Estamos a sus ordenes para cualquier duda o aclaración en el 01(800) 100-0000</texto>
	</BloqueSuperior>
	<BloqueInferior>
		<titulo>Garantía</titulo>
		<TextoRenglones>
			<renglon>Le recordamos que para hacer válida su garantía es necesario:</renglon>
			<renglon>- Presentar producto con empaque original</renglon>
			<renglon>- Factura de compra</renglon>
			<renglon>- Solicitar garantía antes de 60 días naturales</renglon>
		</TextoRenglones>
	</BloqueInferior>
</BloquesInfoAdicional>
…
						

<Personalizados> Campos Personalizados

Esta sección permite agregar a la versión PDF del comprobante campos de información no fiscal más cortos en comparación con los bloques de información adicional definidos anteriormente en el nodo <BloquesInfoAdicional>. Al igual que los bloques, puede contener cualquier texto que no cause confusión ni contradiga la información fiscal que contiene el resto del comprobante.

<Personalizado> Nodo que contiene la información de cada campo personalizado.

  • IMPORTANTE: Se permite un máximo de 6 campos personalizados en el comprobante.

<nombreCampo> Elemento que contiene el título del campo corto.

Tipo de Dato Ocurrencia Ejemplo
String Requerido Orden de Compra

<valor> Elemento que contiene el dato del campo personalizado.

Tipo de Dato Ocurrencia Ejemplo
String Requerido DOC-12345
OPCIONAL

<?xml version="1.0" encoding="utf-8"?>
…
<Personalizados>
	<Personalizado>
		<nombreCampo>Orden de Compra</nombreCampo>
		<valor>DOC-12345</valor>
	</Personalizado>
	<Personalizado>
		<nombreCampo>Vendedor</nombreCampo>
		<valor>Luis Pérez López</valor>
	</Personalizado>
	<Personalizado>
		<nombreCampo>Mensajería</nombreCampo>
		<valor>Estafeta</valor>
	</Personalizado>
	<Personalizado>
		<nombreCampo>Código Rastreo</nombreCampo>
		<valor>0123456789</valor>
	</Personalizado>
</Personalizados>
…
						

<EnviarCFDi> Envío por Correo

Esta sección contiene la información necesaria para enviar los comprobantes por correo electrónico a los receptores (clientes). Los correos electrónicos adoptan el diseño del comprobante (indicado anteriormente en el nodo <nombreDiseno>) e incluyen el logotipo en caso de que el diseño cuente con uno.

<correo> Elemento para especificar la dirección de correo electrónico a la cual se enviará el correo para descargar los archivos PDF y XML del comprobante.

  • IMPORTANTE: Es importante colocar únicamente un correo electrónico por nodo. Si se requieren correos adicionales simplemente se agregan múltiples ocurrencias del nodo.
Tipo de Dato Ocurrencia Formato Ejemplo
String Requerido usuario@dominio.com comprador@mail.com

<mensajeCorreo> Elemento para agregar un mensaje opcional que puede incluir el correo electrónico enviado para la descarga del comprobante.

Tipo de Dato Ocurrencia Ejemplo
String Opcional Esta es la factura por el pedido del día de ayer. Gracias por su compra.
OPCIONAL

<?xml version="1.0" encoding="utf-8"?>
…
<EnviarCFDi>
	<correo>cliente@mail.com</correo>
	<correo>comprador@mail.com</correo>
	<mensajeCorreo>Esta es la factura por el pedido del día de ayer. Gracias por su compra.</mensajeCorreo>
</EnviarCFDi>
…