En esta sección se muestran numerosos ejemplos de llamadas y peticiones a la API Verifactu. Empezamos con la emisión de facturas simplificadas en las que no se identifica al destinatario ya que son las más sencillas.
Después, discutimos en detalle las facturas normales, es decir, aquellas en que se identifica al destinatario. Mostramos ejemplos en los que el destinatario es un ciudadano o empresa española censada en la AEAT. También incluimos ejemplos en que el destinatario es una empresa de un país miembro identificada mediante un IVA del censo VIES.
Después, pasamos a discutir los diferentes tipos de facturas rectificativas incluyendo varios ejemplos de facturas rectificativas de diferencia y de sustitución, así como facturas de canje, en las que convierte una factura simplificada en una normal.
Por último, se muestran ejemplos de anulación de facturas y subsanación.
La factura simplificada es posible en determinados casos como, por ejemplo, cuando los importes son pequeños. Este tipo de factura conlleva unos requisitos de información menores a la factura normal, no siendo obligatorio por ejemplo incluir información fiscal sobre el destinatario. A ojos de la administración tributaria, los "tickets" por importes pequeños son facturas simplificadas.
Este tipo de factura se genera haciendo una llamada al endpoint /verifactu/create utilizando el campo tipo_factura igual a F2.
{ "serie": "Ejemplos", "numero": "1", "fecha_expedicion": "24-02-2025", "tipo_factura": "F2", "descripcion": "Factura simplificada", "lineas": [ { "base_imponible": "200", "tipo_impositivo": "21", "cuota_repercutida": "42" }, { "base_imponible": "100", "tipo_impositivo": "10", "cuota_repercutida": "10" } ], "importe_total": "352" }
Nuestra API validará que el importe sea inferior a 3.000€ y rechazará la factura si no lo es.
La factura normal conlleva obligaciones de información superiores a las de la factura simplificada, siendo obligatorio especificar datos fiscales del receptor de la misma. Este tipo de factura se genera utilizando el campo tipo_factura igual a F1.
Cuando el destinatario es un ciudadano o empresa española, podemos identificarlo mediante los campos nif y nombre. El campo nif debe ser un DNI, NIE o CIF válido. El campo nombre corresponde al nombre y apellidos para ciudadanos y la razón social para empresas. A continuación se muestra un ejemplo de dicha factura.
{ "serie": "Ejemplos", "numero": "1", "fecha_expedicion": "24-02-2025", "tipo_factura": "F1", "descripcion": "Factura normal", "nif": "A15022510", "nombre": "Nombre cliente", "lineas": [ { "base_imponible": "200", "tipo_impositivo": "21", "cuota_repercutida": "42" } ], "importe_total": "242" }
Cuando el destinatario corresponde a una empresa, es suficiente con que el NIF sea correcto. Sin embargo, cuando el destinatario corresponde a una persona física, también es necesario que el nombre coincida con el que aparece en el DNI o NIE.
Nuestra API realiza esta validación de forma automática y rechaza la factura si no lo está. Esto previene que se genere un registro de facturación que la AEAT rechazará. En la API de gestión de NIFs disponemos de un endpoint específico para consultar el censo de la AEAT.
En algunos casos, las facturas pueden contener múltiples IVAs. En este caso, el campo lineas debe contener un array con los tipos impositivos correspondientes.
A continuación se muestra un ejemplo de dicha factura.
{ "serie": "Ejemplos", "numero": "1", "fecha_expedicion": "24-02-2025", "tipo_factura": "F1", "descripcion": "Factura con multiples IVAs", "nif": "A15022510", "nombre": "Nombre cliente", "lineas": [ { "base_imponible": "200", "tipo_impositivo": "21", "cuota_repercutida": "42" }, { "base_imponible": "100", "tipo_impositivo": "10", "cuota_repercutida": "10" } ], "importe_total": "352" }
Cuando el destinatario no es un ciudadano o empresa española, tenemos la posibilidad de identificarlo usando los campos id_otro y nombre. El campo id_otro contiene información del país del destinatario, el tipo de documento identificador y el indentificador mismo. Los detalles sobre las diferentes opciones que ofrece el campo id_otro se pueden encontrar en la documentación de la API aquí.
A continuación se muestra un ejemplo de factura emitida a un ciudadano alemán identificado mediante el número de pasaporte.
{ "serie": "Ejemplos", "numero": "1", "fecha_expedicion": "24-02-2025", "tipo_factura": "F1", "descripcion": "Factura normal pasaporte", "id_otro": { "codigo_pais": "DE", "id_type": "03", "id": "F8624KW3J6" }, "nombre": "Nombre cliente", "lineas": [ { "base_imponible": "200", "tipo_impositivo": "21", "cuota_repercutida": "42" } ], "importe_total": "242" }
Para emitir una factura a una empresa de un estado miembro identificada mediante un IVA intracomunitario se puede usar, de nuevo, el campo id_otro indicando que el tipo de documento es 02.
{ "serie": "Ejemplos", "numero": "1", "fecha_expedicion": "24-02-2025", "tipo_factura": "F1", "descripcion": "Factura a empresa VIES", "id_otro": { "codigo_pais": "BE", "id_type": "02", "id": "BE0404621642" }, "nombre": "Nombre cliente", "lineas": [ { "base_imponible": "200", "tipo_impositivo": "21", "cuota_repercutida": "42" } ], "importe_total": "242" }
La AEAT rechazará el registro de facturación si el IVA proporcionado no está censado en el VIES. Por ello, nuestra API comprueba que lo está antes de generar el registro de facturación y enviarlo a la AEAT. En caso de que no lo esté, se rechazará por nuestro lado para evitar generar registros de facturación que serán rechazados por la AEAT.
Una factura exenta de IVA es aquella en la que no se aplica este impuesto porque la ley lo permite en ciertos casos, como servicios médicos, educativos, sociales, seguros o el alquiler de viviendas. En estas facturas no se añade IVA al precio, pero sí debe incluirse una nota que indique la exención según el artículo Ley del IVA (BOE-A-1992-28740) que corresponda.
Para emitir una factura exenta de IVA usando nuestra API se debe usar el campo operacion_exenta para indicar la exención de IVA. Un ejemplo es el siguiente:
{ "serie": "Ejemplos", "numero": "1", "fecha_expedicion": "24-02-2025", "tipo_factura": "F1", "descripcion": "Operación exenta", "nif": "A15022510", "nombre": "Nombre cliente", "lineas": [ { "base_imponible": "200", "operacion_exenta": "E1" } ], "importe_total": "200" }
Los valores posibles de operacion_exenta se encuentran en nuestra documentación, aquí.
El IGIC es el impuesto que grava el consumo de bienes y servicios en las Islas Canarias, similar al IVA en la península. Se aplica a todas las actividades empresariales y profesionales realizadas en Canarias. Los tipos impositivos varían según el tipo de bien o servicio, con un tipo general del 7% y tipos reducidos para productos esenciales como alimentos, medicamentos o transporte. La ley que regula el IGIC es la Ley 4/2012, de 25 de Junio, de Medidas Administrativas y Fiscales de Canarias(BOE-A-2012-9282).
Para emitir una factura con IGIC usando nuestra API se debe indicar usando el campo impuesto igual a 03. Un ejemplo es el siguiente:
{ "serie": "Ejemplos", "numero": "1", "fecha_expedicion": "24-02-2025", "tipo_factura": "F1", "descripcion": "Operacion con IGIC", "nif": "A15022510", "nombre": "Nombre cliente", "lineas": [ { "impuesto": "03", "base_imponible": "200", "tipo_impositivo": "7", "cuota_repercutida": "14" } ], "importe_total": "214" }
Además de marcar el impuesto, hemos indicado el tipo impositivo igual al 7%, que es el régimen general. Sin embargo, se pueden otros valores dependiendo del caso concreto.
Los valores posibles de impuesto se encuentran en nuestra documentación, aquí.
El IPSI es el impuesto que grava el consumo de bienes y servicios en las ciudades autónomas de Ceuta y Melilla, similar al IVA en la península. Se aplica a todas las actividades empresariales y profesionales realizadas en estas ciudades. Los tipos impositivos varían según el tipo de bien o servicio, con tipos que van desde el 0,5% hasta el 10%. La ley que regula el IPSI es la Ley 8/1991, de 25 de Marzo (BOE-A-1991-7645).
Para emitir una factura con IPSI usando nuestra API se debe indicar usando el campo impuesto igual a 02. Un ejemplo es el siguiente:
{ "serie": "Ejemplos", "numero": "1", "fecha_expedicion": "24-02-2025", "tipo_factura": "F1", "descripcion": "Operacion con IPSI", "nif": "A15022510", "nombre": "Nombre cliente", "lineas": [ { "impuesto": "02", "base_imponible": "200", "tipo_impositivo": "4", "cuota_repercutida": "8" } ], "importe_total": "208" }
Además de marcar el impuesto, hemos indicado el tipo impositivo igual al 5% pero se pueden usar otros valores dependiendo del caso concreto.
Los valores posibles de impuesto se encuentran en nuestra documentación, aquí.
Una factura con retención de IRPF es aquella en la que se aplica una reducción porcentual sobre la base imponible, según lo establecido por la normativa fiscal. Esta retención se descuenta directamente del importe a cobrar y debe ser ingresada por el cliente en Hacienda en nombre del autónomo.
Una pregunta habitual es cómo se indica la retención de IRPF en una factura en el sistema Verifactu. La respuesta de la AEAT es clara: la retención no de debe indicarse en absoluto.
Los gastos suplidos representan una categoría específica de gastos en el ámbito de la facturación y contabilidad. Son aquellos que un profesional o empresa paga en nombre de su cliente y posteriormente reclama a este. De la misma forma, los suplidos no debes indicarse en el registro de facturación en el sistema Verifactu.
Esto se puede leer en las preguntas frecuentes de la AEAT, aquí.
Una factura no sujeta a IVA es aquella en la que no se aplica este impuesto porque la operación no está incluida en el ámbito de aplicación del IVA según la Ley del IVA (BOE-A-1992-28740). Esto significa que, por su naturaleza, la operación no constituye un hecho imponible para el impuesto. Por ejemplo, cuando un inquilino paga una vivienda de alquiler o cuando un vehículo se vende entre particulares.
Es importante destacar que una operación no sujeta a IVA no es lo mismo que una operación exenta de IVA. Mientras que en una operación exenta el impuesto se aplica pero la ley permite no cobrarlo en ciertos casos, en una operación no sujeta el impuesto no se aplica desde el principio.
Para emitir una factura no sujeta usando nuestra API se debe usar el campo calificacion_operacion para indicar el motivo por el cual la operación no está sujeta a IVA. Un ejemplo es el siguiente:
{ "serie": "Ejemplos", "numero": "1", "fecha_expedicion": "24-02-2025", "tipo_factura": "F1", "descripcion": "Operación no sujeta", "nif": "A15022510", "nombre": "Nombre cliente", "lineas": [ { "base_imponible": "200", "calificacion_operacion": "N1" } ], "importe_total": "200" }
Los valores posibles de calificacion_operacion se encuentran en nuestra documentación, aquí.
{ "serie": "Ejemplos", "numero": "1", "fecha_expedicion": "24-02-2025", "tipo_factura": "F1", "descripcion": "Factura de abono", "nif": "A15022510", "nombre": "Nombre cliente", "lineas": [ { "base_imponible": "-200", "tipo_impositivo": "21", "cuota_repercutida": "-42" } ], "importe_total": "-242" }
Una operación frecuente consiste en transformar una factura simplificada en una factura normal, lo que se conoce como factura de canje.
Supongamos que hemos enviado un registro de facturación correspondiente a una factura simplificada, es decir, una con tipo_factura igual a F2 en la que no se identifica al destinatario.
{ "serie": "SIMPLE", "numero": "1", "fecha_expedicion": "10-03-2025", "tipo_factura": "F2", "descripcion": "Descripcion de la operacion", "lineas": [ { "base_imponible": "200", "tipo_impositivo": "21", "cuota_repercutida": "42" } ], "importe_total": "242" }
Si, una vez emitida esta factura, nos surge la necesidad de identificar al destinatario tenemos dos opciones dentro del sistema Verifactu, que mostramos a continuación.
La primera opción requiere el envío de dos registros de facturación adicionales, uno correspondiente a una factura de abono (importe total negativo) y otro para emitir la factura ordinaria.
{ "serie": "SIMPLE", "numero": "2", "fecha_expedicion": "11-03-2025", "tipo_factura": "F2", "descripcion": "Factura de abono", "lineas": [ { "base_imponible": "-200", "tipo_impositivo": "21", "cuota_repercutida": "-42" } ], "importe_total": "-242" }
A continuación se procede a emitir una factura ordinaria con tipo_factura igual a F1.
{ "serie": "EJEMPLO", "numero": "1", "fecha_expedicion": "11-03-2025", "tipo_factura": "F1", "descripcion": "Descripcion de la operacion: factura normal", "nif": "A15022510", "nombre": "Nombre cliente", "lineas": [ { "base_imponible": "200", "tipo_impositivo": "21", "cuota_repercutida": "42" } ], "importe_total": "242" }
Aunque este procedimiento requiere el envío de dos registros de facturación adicionales, tiene la ventaja de ser muy fácil de trabajar con él ya que fácilmente se ve que la suma total de los tres registros de facturación suman a lo que debería.
Una manera alternativa de realizar la misma operación es hacerlo en un único paso creando un resgistro de facturación con tipo_factura igual a F3 (sustitutiva de factura simple). A continuación se muestra un ejemplo del JSON que se debería enviar.
Como se puede ver, la serie y el número de la factura sustitutiva son diferentes a la de la factura simplificada original. Usando el campo facturas_sustituidas se indican las facturas que se sustituyen. En general, este campo es de tipo array ya que se puede hacer referencia a varias facturas.
{ "serie": "SUSTITUTIVA", "numero": "1", "fecha_expedicion": "19-12-2024", "tipo_factura": "F3", "descripcion": "Descripcion de la operacion", "nif": "A15022510", "nombre": "Nombre cliente", "lineas": [ { "base_imponible": "200", "tipo_impositivo": "21", "cuota_repercutida": "42" } ], "facturas_sustituidas": [ { "serie": "SIMPLE", "numero": "1", "fecha_expedicion": "19-12-2024" } ], "importe_total": "242" }
Las facturas rectificativas son documentos esenciales para corregir errores o modificar datos de facturas previas. En la API Verifactu, la creación de una factura rectificativa requiere indicar el tipo de factura rectificativa mediante el campo tipo_factura. Existen cinco opciones, cada una basada en artículos específicos de la Ley del IVA (Ley 37/1992) y sus regulaciones.
Cuando se haya producido un error fundado de derecho o alguna de las causas del art. 80.Uno, Dos y Seis LIVA (devoluciones de mercancías, descuentos o alteraciones en el precio posteriores a la realización de la operación, resolución de operaciones, importe de la contraprestación provisional) deberá emitirse una factura rectificativa con serie específica cuya información se registrará con el tipo de factura R1.
En el caso de la devolución de mercancías o de envases y embalajes que se realicen con ocasión de un posterior suministro al mismo destinatario y tipo impositivo no será necesario la expedición de una factura rectificativa, sino que se restará el importe de las mercancías o de los envases y embalajes devueltos del importe de dicha operación posterior, pudiendo ser el resultado positivo o negativo.
Se incluirá como fecha de operación la fecha en que se realizó la entrega o prestó el servicio, indicada en la factura inicial. En el caso de rectificar varias facturas con una única factura rectificativa se indicará la fecha más reciente.
Cuando se haya producido una modificación de la base imponible del IVA por encontrarse el cliente en concurso de acreedores (art. 80.Tres LIVA) deberá emitirse una factura rectificativa con serie específica cuya información se registrará con el tipo de factura R2.
Asimismo, se deberá identificar el tipo de factura rectificativa con las claves "S- por sustitución" o "I- por diferencias" según la forma en que el empresario desee llevar a cabo la rectificación.
Se incluirá como fecha de operación la fecha en que se realizó la entrega o presto el servicio, indicada en la factura inicial. En el caso de rectificar varias facturas con una única factura rectificativa se indicará la fecha más reciente.
La identificación de las facturas rectificadas será opcional. En el caso de que se identifiquen se deberá informar el número y la fecha de expedición.
Cuando se haya producido una modificación de la base imponible del IVA por incobro del cliente (art. 80.Cuatro LIVA) deberá emitirse una factura rectificativa con serie específica cuya información se registrará con el tipo de factura R3.
Asimismo, se deberá identificar el tipo de factura rectificativa con las claves "S- por sustitución" o "I- por diferencias" según la forma en que el empresario desee llevar a cabo la rectificación.
Se incluirá como fecha de operación la fecha en que se realizó la entrega o presto el servicio, indicada en la factura inicial. En el caso de rectificar varias facturas con una única factura rectificativa se indicará la fecha más reciente.
La identificación de las facturas rectificadas será opcional. En el caso de que se identifiquen se deberá informar el número y la fecha de expedición.
Se indicará tipo de factura R4 en estas situaciones:
La rectificación de una factura simplificada se registrará con la clave R5 cualquiera que sea el motivo de la misma.
Al igual que ocurre en el caso de la factura de canje, tenemos la opción de realizar la rectificación de dos manera diferentes: en dos pasos, o en un paso.
Podría parecer que es más conveniente hacer la rectificación en un solo paso ya que te ahorras un registro de facturación. Sin embargo, la ventaja de hacer la rectificación en dos pasos es que la suma del campo importe_total de todos los registros de facturación da como resultado el balance total final. Con la rectificación en un solo paso, es necesario tener en cuenta el valor de los campos base_rectificada y cuota_rectificada para obtener el balance total, lo que puede complicar la implementación. En cualquier caso, ambos métodos son posibles e igualmente válidos de cara a la AEAT.
A continuación mostramos varios ejemplos de facturas rectificativas por sustitución. En todos ellos daremos los JSON correspondientes a la rectificación usando los dos métodos descritos anteriormente: la rectificación en dos pasos y en un solo paso.
Supongamos que se emite una factura normal con base imponible igual a 1.000€ y tipo impositivo del 21%, con fecha de operación 01-04-2025 y fecha de expedición 07-04-2025. Es decir, usando la API de Verifactu, se registra la factura con el siguiente JSON:
{ "serie": "A", "numero": "1", "fecha_expedicion": "07-04-2025", "fecha_operacion": "01-04-2025", "tipo_factura": "F1", "descripcion": "Factura original", "nif": "A15022510", "nombre": "Nombre cliente", "lineas": [ { "base_imponible": "1000", "tipo_impositivo": "21", "cuota_repercutida": "210" } ], "importe_total": "1210" }
Después de emitir esta factura, se quiere rectificar siendo la rectificación una disminución de la base imponible de 200 euros. A continuación mostramos los JSONs necesarios para realizar la sustitución usando las dos opciones: rectificación en dos pasos y rectificación en un paso.
Usando la opción de rectificación en dos pasos, se emiten dos registros de facturación adicionales para realizar la rectificación. En el primero se emite una factura en negativo con base imponible igual a -1.000€:
{ "serie": "A", "numero": "2", "fecha_expedicion": "10-04-2025", "tipo_factura": "F1", "descripcion": "Factura en negativo", "nif": "A15022510", "nombre": "Nombre cliente", "lineas": [ { "base_imponible": "-1000", "tipo_impositivo": "21", "cuota_repercutida": "-210" } ], "importe_total": "-1210" }
En el segundo registro de facturación se emite una rectificativa con base imponible igual a 800€. Nótese que los campos base_rectificada y cuota_rectificada valen cero.
{ "serie": "RECTIFICATIVA", "numero": "1", "fecha_expedicion": "10-04-2025", "fecha_operacion": "01-04-2025", "tipo_factura": "Rx", "tipo_rectificativa": "S", "descripcion": "Rectificacion por sustitucion en dos pasos", "nif": "A15022510", "nombre": "Nombre cliente", "lineas": [ { "base_imponible": "800", "tipo_impositivo": "21", "cuota_repercutida": "168" } ], "importe_total": "968", "importe_rectificativa": { "base_rectificada": "0", "cuota_rectificada": "0" }, "facturas_rectificadas": [ { "serie": "A", "numero": "1", "fecha_expedicion": "07-04-2025" } ] }
Como se puede observar, la suma de los tres registros de facturación es 1210 + (-1210) + 968 = 968, que corresponde al importe total deseado. Esta es la ventaja de hacer la rectificativa en dos pasos, su interpretación es muy clara.
Supongamos que, en vez de emitir una factura en negativo seguida de la rectificativa, quisieramos hacer la rectificativa con un único registro de facturación. Esto se puede hacer simplemente emitiendo una rectificativa con base imponible igual a 800€ y con los campos base_rectificada y cuota_rectificada igual al valor de la factura que se quiere rectificar.
{ "serie": "RECTIFICATIVA", "numero": "2", "fecha_expedicion": "10-04-2025", "fecha_operacion": "01-04-2025", "tipo_factura": "Rx", "tipo_rectificativa": "S", "descripcion": "Rectificacion por sustitucion en un paso", "nif": "A15022510", "nombre": "Nombre cliente", "lineas": [ { "base_imponible": "800", "tipo_impositivo": "21", "cuota_repercutida": "168" } ], "importe_total": "968", "importe_rectificativa": { "base_rectificada": "1000", "cuota_rectificada": "210" }, "facturas_rectificadas": [ { "serie": "A", "numero": "1", "fecha_expedicion": "07-04-2025" } ] }
En este caso, como se puede observar, es necesario tener en cuenta los campos base_rectificada y cuota_rectificada para calcular el balance final de la operación.
Supongamos que se emite una factura normal con base imponible igual a 1.000€ y tipo impositivo del 21%, con fecha de operación 01-04-2025 y fecha de expedición 07-04-2025. Es decir, usando la API de Verifactu, se registra la factura con el siguiente JSON:
{ "serie": "A", "numero": "1", "fecha_expedicion": "07-04-2025", "fecha_operacion": "01-04-2025", "tipo_factura": "F1", "descripcion": "Factura original", "nif": "A15022510", "nombre": "Nombre cliente", "lineas": [ { "base_imponible": "1000", "tipo_impositivo": "21", "cuota_repercutida": "210" } ], "importe_total": "1210" }
Después de emitir esta factura, va a ser objecto de rectificación por impago, eliminando la totalidad de la cuota repercutida. A continuación mostramos los JSONs necesarios para realizar la sustitución usando las dos opciones: rectificación en dos pasos y rectificación en un paso.
Usando la opción de rectificación en dos pasos, se emiten dos registros de facturación adicionales para realizar la rectificación. En el primero se emite una factura en negativo con base imponible igual a -1.000€ y tipo impositivo del 21%:
{ "serie": "A", "numero": "2", "fecha_expedicion": "10-04-2025", "tipo_factura": "F1", "descripcion": "Factura en negativo", "nif": "A15022510", "nombre": "Nombre cliente", "lineas": [ { "base_imponible": "-1000", "tipo_impositivo": "21", "cuota_repercutida": "-210" } ], "importe_total": "-1210" }
En el segundo registro de facturación se emite una rectificativa con base imponible igual a 1.000€. Nótese que los campos base_rectificada y cuota_rectificada valen cero.
{ "serie": "RECTIFICATIVA", "numero": "3", "fecha_expedicion": "10-04-2025", "fecha_operacion": "01-04-2025", "tipo_factura": "Rx", "tipo_rectificativa": "S", "descripcion": "Rectificacion por sustitucion en dos pasos", "nif": "A15022510", "nombre": "Nombre cliente", "lineas": [ { "base_imponible": "1000", "tipo_impositivo": "0", "cuota_repercutida": "0" } ], "importe_total": "1000", "importe_rectificativa": { "base_rectificada": "0", "cuota_rectificada": "0" }, "facturas_rectificadas": [ { "serie": "A", "numero": "1", "fecha_expedicion": "07-04-2025" } ] }
Supongamos que, en vez de emitir una factura en negativo seguida de la rectificativa, quisieramos hacer la rectificativa con un único registro de facturación. Esto se puede hacer simplemente emitiendo una rectificativa con base imponible igual a 1.000€, cuota repercutida igual a cero y con los campos base_rectificada y cuota_rectificada igual al valor de la factura que se quiere rectificar.
{ "serie": "RECTIFICATIVA", "numero": "4", "fecha_expedicion": "10-04-2025", "fecha_operacion": "01-04-2025", "tipo_factura": "Rx", "tipo_rectificativa": "S", "descripcion": "Rectificacion por sustitucion en un paso", "nif": "A15022510", "nombre": "Nombre cliente", "lineas": [ { "base_imponible": "1000", "tipo_impositivo": "0", "cuota_repercutida": "0" } ], "importe_total": "1000", "importe_rectificativa": { "base_rectificada": "1000", "cuota_rectificada": "210" }, "facturas_rectificadas": [ { "serie": "A", "numero": "1", "fecha_expedicion": "07-04-2025" } ] }
La factura rectificativa por diferencias corrige errores en una factura original, ajustando el importe mediante una suma o resta. Puede ser positiva (si se cobró de menos) o negativa (si se cobró de más). Se usa principalmente para errores en el IVA o en la base imponible. Según el tipo de error (por impago o no), puede optarse por una factura rectificativa por diferencias o sustitutiva, siguiendo procedimientos distintos.
A diferencia de las facturas rectificativas por sustitución, las rectificativas por diferencias se hacen siempre en un solo paso y se deberá informar directamente del importe de la rectificación.
A continuación mostramos varios ejemplos de las facturas rectificativas por diferencias.
Supongamos que se emite una factura normal con base imponible igual a 1.000€ y tipo impositivo del 21%, con fecha de operación 01-04-2025 y fecha de expedición 07-04-2025. Es decir, usando la API de Verifactu, se registra la factura con el siguiente JSON:
{ "serie": "A", "numero": "1", "fecha_expedicion": "07-04-2025", "fecha_operacion": "01-04-2025", "tipo_factura": "F1", "descripcion": "Factura original", "nif": "A15022510", "nombre": "Nombre cliente", "lineas": [ { "base_imponible": "1000", "tipo_impositivo": "21", "cuota_repercutida": "210" } ], "importe_total": "1210" }
Después de emitir esta factura, se quiere rectificar siendo la rectificación una disminución de la base imponible de 500€. La modificación por diferencias supondría emitir una única factura adicional con base imponible de -500€.
{ "serie": "RECTIFICATIVA", "numero": "5", "fecha_expedicion": "25-02-2025", "tipo_factura": "Rx", "tipo_rectificativa": "I", "descripcion": "Descripcion de la operacion: rectificacion por diferencias", "nif": "A15022510", "nombre": "Nombre cliente", "lineas": [ { "base_imponible": "-500", "tipo_impositivo": "21", "cuota_repercutida": "-105" } ], "importe_total": "-605", "facturas_rectificadas": [ { "serie": "A", "numero": "1", "fecha_expedicion": "07-04-2025" } ] }
Supongamos que se emite una factura normal con base imponible igual a 1.000€ y tipo impositivo del 21%, con fecha de operación 01-04-2025 y fecha de expedición 07-04-2025. Es decir, usando la API de Verifactu, se registra la factura con el siguiente JSON:
{ "serie": "A", "numero": "1", "fecha_expedicion": "07-04-2025", "fecha_operacion": "01-04-2025", "tipo_factura": "F1", "descripcion": "Factura original", "nif": "A15022510", "nombre": "Nombre cliente", "lineas": [ { "base_imponible": "1000", "tipo_impositivo": "21", "cuota_repercutida": "210" } ], "importe_total": "1210" }
Después de emitir esta factura, se quiere rectificar siendo la rectificación por impago, eliminando la totalidad de la cuota repercutida. La modificación por diferencias supondría emitir una única factura adicional con base imponible de 0€ y cuota repercutida de -210€.
{ "serie": "RECTIFICATIVA", "numero": "6", "fecha_expedicion": "25-02-2025", "tipo_factura": "Rx", "tipo_rectificativa": "I", "descripcion": "Descripcion de la operacion: rectificacion por diferencias impago", "nif": "A15022510", "nombre": "Nombre cliente", "lineas": [ { "base_imponible": "0", "tipo_impositivo": "21", "cuota_repercutida": "-210" } ], "importe_total": "-210", "facturas_rectificadas": [ { "serie": "A", "numero": "1", "fecha_expedicion": "07-04-2025" } ] }
El recargo de equivalencia es un régimen especial de IVA para minoristas que venden productos sin transformación. Consiste en pagar un recargo adicional a los proveedores, según el tipo de IVA del producto.
Este recargo debe incluirse en la factura, que sirve como prueba de que la operación se ha realizado conforme a la ley. Para ello, el minorista debe informar al proveedor de que tributa bajo este régimen. En la API de Verifacti, esto se hace marcando el campo clave_regimen=18 de la línea, como muestra nuestra documentación.
Los recargos aplicables se informan en el campo tipo_recargo_equivalencia de cada línea y son:
Un ejemplo de JSON es:
{ "serie": "RECARGO", "numero": "1", "fecha_expedicion": "23-04-2025", "tipo_factura": "F1", "descripcion": "Descripcion de la operacion", "nif": "A15022510", "nombre": "Nombre cliente", "lineas": [ { "base_imponible": "200", "tipo_impositivo": "21", "cuota_repercutida": "42", "clave_regimen": "18", "tipo_recargo_equivalencia": "5.2", "cuota_recargo_equivalencia": "10.4" } ], "importe_total": "252.4" }
Una factura emitida por terceros es aquella factura que, aunque los servicios o productos los presta una empresa o profesional, el documento lo expide una tercera persona autorizada. La empresa sigue siendo responsable legalmente, y sus datos deben aparecer en la factura.
Para emitir una factura emitida por terceros usando nuestra API se debe usar el campo emitida_por_tercero_o_destinatario con valor igual a T así como el nombre y nif del tercero.
Supongamos que una empresa con NIF B12345678 presta un servicio a un cliente con NIF A15022510 pero es el NIF B86561412 el que emite la factura. En ese caso, el JSON correcto sería el siguiente:
{ "serie": "Ejemplos", "numero": "1", "fecha_expedicion": "24-02-2025", "tipo_factura": "F1", "descripcion": "Factura emitida por terceros", "nif": "A15022510", "nombre": "Nombre cliente", "lineas": [ { "base_imponible": "200", "tipo_impositivo": "21", "cuota_repercutida": "42" } ], "especial": { "emitida_por_tercero_o_destinatario": "T", "nombre_tercero": "Nombre tercero", "nif_tercero": "B86561412" }, "importe_total": "242" }
En el JSON no aparece el NIF de la empresa que realiza los servicios porque esto ya viene determinado por la API key que se ha usado para realizar la petición.
Es una factura que no la genera el proveedor, sino el propio cliente (destinatario del servicio o producto). Aunque la expida el cliente, la responsabilidad legal sigue siendo del proveedor, cuyos datos deben aparecer en la factura.
Para emitir una factura emitida por el destinatario usando nuestra API se debe usar el campo emitida_por_tercero_o_destinatario con valor igual a D. Por ejemplo, se puede usar este JSON:
{ "serie": "Ejemplos", "numero": "1", "fecha_expedicion": "24-02-2025", "tipo_factura": "F1", "descripcion": "Factura emitida por destinatario", "nif": "A15022510", "nombre": "Nombre cliente", "lineas": [ { "base_imponible": "200", "tipo_impositivo": "21", "cuota_repercutida": "42" } ], "especial": { "emitida_por_tercero_o_destinatario": "D" }, "importe_total": "242" }
Un registro de alta enviado previamente y que no procede se dará de baja mediante un registro de facturación de anulación identificando el número de la factura original. Esto se puede hacer usando el endpoint /verifactu/cancel.
Es importante entender que la anulación no debe usarse para cancelar facturas emitidas con errores, si no para facturas emitidas por error. En el caso de haber emitido una factura con algún error que deba ser corregido, se debe emitir una nueva factura rectificativa que haga referencia a la factura original.
Si se ha emitido una factura for error, se puede anular usando un JSON como el que mostramos a continuación.
{ "serie": "A", "numero": "1", "fecha_expedicion": "25-02-2025" }
En el caso de que proceda emitir una nueva factura correcta se deberá registrar con un alta y con un número de factura o fecha de expedición diferente.
La API de Verifacti contiene el endpoint /verifactu/modify que se corresponde con la operación que la administración llama "subsanación" de registro de facturación.
Los casos en los que se puede usar este endpoint son muy limitados por lo que debe considerarse una operación extraordinaria. Es muy poco frecuente verse en la situación de tener (o poder) realizar esta operación. A pesar de lo que el nombre pueda sugerir, esto no tiene nada que ver con las facturas rectificativas.
Este endpoint solo puede usarse para subsanar registros de facturación en aquellos casos en los que la subsanación no tiene ninguna repercusión fiscal, lo que limita mucho su uso.
A continuación incluimos los tres ejemplos en los que sí se puede usar este endpoint, controlados por el campo rechazo_previo, y que dejan claro que no es algo que se vaya a hacer de forma habitual.
Supongamos que enviamos el siguiente registro de facturación, al que llamaremos Registro A, que ha sido aceptado correctamente por la Agencia Tributaria:
{ "serie": "Ejemplos", "numero": "1", "fecha_expedicion": "24-02-2025", "tipo_factura": "F1", "nif": "A15022510", "nombre": "Nombre cliente", "descripcion": "Descripcion inicial", "lineas": [ { "base_imponible": "200", "tipo_impositivo": "21", "cuota_repercutida": "42" } ], "importe_total": "242" }
Si ahora quisieramos modificar, por ejemplo, el importe, deberíamos emitir una rectificativa, como explicamos en otros ejemplos. Sin embargo, si quisieramos cambiar el campo descripcion de la factura, entonces se puede enviar un nuevo registro de facturación al endpoint /verifactu/modify marcando el campo rechazo_previo=N ya que el registro de facturación inicial no fue rechazado. Por lo tanto, el JSON para el registro de subsanación, que llamaremos Registro B, sería el siguiente:
{ "rechazo_previo": "N", "serie": "Ejemplos", "numero": "1", "fecha_expedicion": "24-02-2025", "tipo_factura": "F1", "nif": "A15022510", "nombre": "Nombre cliente", "descripcion": "Descripcion modificada", "lineas": [ { "base_imponible": "200", "tipo_impositivo": "21", "cuota_repercutida": "42" } ], "importe_total": "242" }
Supongamos ahora que la factura inicial del párrafo anterior (Registro A) hubiera causado rechazo en la AEAT porque el certificado usado para enviarla no estaba vigente. En ese caso, el registro de facturación sería rechazado y habría que generar un nuevo registro de subsanación marchando el campo rechazo_previo=X.
{ "rechazo_previo": "X", "serie": "Ejemplos", "numero": "1", "fecha_expedicion": "24-02-2025", "tipo_factura": "F1", "nif": "A15022510", "nombre": "Nombre cliente", "descripcion": "Descripcion inicial", "lineas": [ { "base_imponible": "200", "tipo_impositivo": "21", "cuota_repercutida": "42" } ], "importe_total": "242" }
Supongamos ahora que la factura inicial del párrafo anterior (Registro A) hubiera sido aceptada correctamente y, en cambio, hubiera sido rechazado el registro de subsanación siguiente (Registro B). En ese caso, deberíamos generar y enviar un nuevo registro de subsanación, marcando el campo rechazo_previo=S.
{ "rechazo_previo": "S", "serie": "Ejemplos", "numero": "1", "fecha_expedicion": "24-02-2025", "tipo_factura": "F1", "nif": "A15022510", "nombre": "Nombre cliente", "descripcion": "Descripcion modificada", "lineas": [ { "base_imponible": "200", "tipo_impositivo": "21", "cuota_repercutida": "42" } ], "importe_total": "242" }
Como se puede ver, debido a la limitación de que las modificaciones no tengan impacto fiscal, el endpoint de subsanación /verifactu/modify tiene muy pocos casos de uso.