Factura de anticipo: cómo emitirla paso a paso
4 de abril de 2026
La factura de anticipo es probablemente el flujo más confuso de toda la facturación electrónica en México. No porque el concepto sea difícil, sino porque involucra emitir hasta cuatro documentos distintos para una sola operación. Un CFDI de anticipo, luego el CFDI definitivo, después una nota de crédito para cancelar el anticipo, y posiblemente un complemento de pago si fue PPD. He visto equipos de desarrollo perder semanas tratando de implementar este flujo correctamente.
La buena noticia es que una vez que entiendes la secuencia, el patrón se repite igual siempre.
Qué es una factura de anticipo
Una factura de anticipo es un CFDI que ampara un pago parcial recibido antes de entregar un bien o prestar un servicio. El SAT necesita saber que recibiste dinero, pero como todavía no hay una operación completa que facturar, emites un comprobante específico de anticipo.
El concepto clave en el catálogo del SAT es 84111506 (Servicios de facturación). Este es el código ClaveProdServ que usas para el concepto del anticipo. No uses el código del producto o servicio final, porque todavía no lo has entregado.
No confundas anticipo con pago parcial. Si ya entregaste el producto o servicio y el cliente te paga en parcialidades, eso no es anticipo. Eso es método PPD con complemento de pago. El anticipo aplica cuando el dinero llega antes de la entrega.
Cuándo necesitas emitir factura de anticipo
Estos son los escenarios donde aplica:
- Un cliente te deposita dinero a cuenta de un proyecto que aún no inicias
- Recibes un enganche antes de entregar mercancía
- Te pagan por adelantado un porcentaje de un servicio futuro
- Un contrato establece pagos anticipados previo a la prestación
Si el dinero llega y todavía no puedes emitir la factura del bien o servicio porque no ha ocurrido la operación, necesitas factura de anticipo.
Si recibes un anticipo y solo emites la factura definitiva cuando entregas, tienes un desfase fiscal. El SAT puede detectar ingresos no facturados durante el periodo entre el depósito y la factura final. La factura de anticipo resuelve esto.
El flujo completo de anticipo
Este es el flujo que debes implementar de principio a fin:
Recibir el anticipo y emitir CFDI de Ingreso#
Cuando recibes el dinero, emites un CFDI de tipo Ingreso con la clave 84111506. El método de pago es PUE si el anticipo se pagó completo en una exhibición, o PPD si se pagará después (en cuyo caso necesitarás complemento de pago).
La forma de pago corresponde a como efectivamente recibiste el dinero: 03 (Transferencia electrónica), 01 (Efectivo), etc. El uso de CFDI del receptor es S01 (Sin obligación fiscal) o G03 (Gastos en general) dependiendo del acuerdo.
Entregar el bien o servicio y emitir CFDI definitivo#
Cuando finalmente entregas el producto o prestas el servicio, emites el CFDI definitivo con el importe total de la operación. Este CFDI usa la ClaveProdServ real del bien o servicio, no la de anticipo.
El importe es por el total de la operación, no por el remanente. Si el servicio vale $20,000 y el anticipo fue $5,000, la factura definitiva es por $20,000.
Emitir nota de crédito por el anticipo#
Para evitar una doble facturación, emites un CFDI de tipo Egreso (nota de crédito) por el monto del anticipo original. Este egreso se relaciona con el CFDI de anticipo usando el UUID del documento original y el tipo de relación 07 (CFDI por aplicación de anticipo).
Esto es lo que balancea las cuentas ante el SAT: facturaste $5,000 de anticipo + $20,000 definitivo = $25,000, pero con la nota de crédito de $5,000, el ingreso neto queda en $20,000.
El CFDI definitivo debe tener relación tipo 07 con el CFDI de anticipo. La nota de crédito también se relaciona con el anticipo usando tipo 07. Sin estas relaciones, el SAT no puede reconstruir el flujo y podrías tener discrepancias.
Anticipo vs factura normal
ClaveProdServ: 84111506 (Servicios de facturación)
Tipo CFDI: Ingreso
Cuándo: Recibes dinero antes de entregar
Documentos involucrados: Hasta 4 (anticipo, definitivo, nota de crédito, complemento de pago si PPD)
Régimen fiscal del emisor: El que tenga registrado en SAT
Observación: El anticipo genera ingreso acumulable en el mes que lo recibes, no cuando entregas el servicio
Errores comunes con facturas de anticipo
Usar la ClaveProdServ del producto final en el anticipo. El anticipo SIEMPRE usa 84111506. Si usas la clave del producto real, el SAT interpreta que ya entregaste el bien, y cuando emitas la factura definitiva tendrás duplicación de ingresos.
Olvidar la nota de crédito. Sin la nota de crédito, tu ingreso ante el SAT es anticipo + definitivo. Si el anticipo fue de $5,000 y el servicio de $20,000, el SAT ve $25,000 de ingreso cuando debería ver $20,000. La nota de crédito es obligatoria.
Emitir el anticipo como PPD cuando fue PUE. Si el cliente te depositó el anticipo completo, el método es PUE y la forma de pago es la real (transferencia, efectivo, etc.). PPD solo aplica si el anticipo mismo se va a pagar en parcialidades, lo cual es raro pero posible.
No relacionar los documentos con tipo 07. La relación 07 (CFDI por aplicación de anticipo) es la que le dice al SAT que estos documentos son parte del mismo flujo. Sin ella, son documentos independientes y las cifras no cuadran.
Cómo emitir factura de anticipo con Fiscalapi
El SDK de Fiscalapi maneja las relaciones entre documentos automáticamente. Aquí está el flujo completo:
// Paso 1: Emitir CFDI de anticipo
var anticipo = new Invoice
{
VersionCode = "4.0",
InvoiceTypeCode = "I",
PaymentMethod = "PUE",
PaymentFormCode = "03",
Currency = "MXN",
Issuer = new Issuer
{
Rfc = "EMP010101AAA",
TaxRegimeCode = "601",
Name = "Empresa Ejemplo SA de CV"
},
Recipient = new Recipient
{
Rfc = "CLI920501BBB",
CfdiUseCode = "S01",
TaxRegimeCode = "612",
Name = "Cliente SA de CV"
},
Items = new List<InvoiceItem>
{
new InvoiceItem
{
ProductServiceCode = "84111506",
Description = "Anticipo de proyecto desarrollo de software",
Quantity = 1,
UnitPrice = 5000.00m,
UnitCode = "E48",
TaxObject = "02"
}
}
};
var anticipoResult = await fiscalapi.Invoices.CreateAsync(anticipo);
// Paso 2: Emitir nota de crédito cuando se aplica el anticipo
var notaCredito = new Invoice
{
VersionCode = "4.0",
InvoiceTypeCode = "E", // Egreso
PaymentMethod = "PUE",
PaymentFormCode = "30", // Aplicacion de anticipo
Currency = "MXN",
RelatedInvoices = new List<RelatedInvoice>
{
new RelatedInvoice
{
Uuid = anticipoResult.Data.Uuid,
RelationshipType = "07"
}
},
Items = new List<InvoiceItem>
{
new InvoiceItem
{
ProductServiceCode = "84111506",
Description = "Aplicacion de anticipo",
Quantity = 1,
UnitPrice = 5000.00m,
UnitCode = "E48",
TaxObject = "02"
}
}
};
var ncResult = await fiscalapi.Invoices.CreateAsync(notaCredito);
Preguntas frecuentes sobre factura de anticipo
El flujo de anticipos no es intuitivo la primera vez. Cuatro documentos para una sola operación comercial parece excesivo, pero cada uno tiene un propósito fiscal específico. La clave es automatizar la cadena completa para que tu sistema emita los documentos en secuencia sin intervención manual. Puedes revisar la documentación de Fiscalapi para ver los campos exactos de cada tipo de CFDI involucrado.