# Pruebas del régimen de España

Prueba la verificación de NIF, las validaciones de factura y todos los resultados públicos de VERI*FACTU.

Usa estos valores solo con una cuenta Test española. FiscalRail ejecuta el flujo normal de facturas y eventos, pero sustituye las llamadas a la AEAT por respuestas simuladas deterministas.

## NIF españoles

Estos valores `es_nif` de cliente separan la validación local del formato de la verificación asíncrona en el censo de la AEAT:

| NIF | Solicitud del cliente | Resultado de la verificación |
| --- | --- | --- |
| `B00000026` | Aceptada | `completed`, `valid: true` |
| `B00000000` | Aceptada | `completed`, `valid: false` (`NO IDENTIFICADO`) |
| `B00000001` | Rechazada con `422 invalid_customer` | No se crea ninguna verificación porque el carácter de control no es válido |

Para `eu_vat`, usa `ESB00000026`, `ESB00000000` y `ESB00000001` para obtener los resultados equivalentes: válido, no válido en el registro y formato no válido.

Los dos resultados registrales completados emiten `tax_id.verification.completed`; consulta `data.object.verification.valid` para distinguirlos. La [guía general de pruebas](/es/testing) contiene los valores para el resto de jurisdicciones de IVA intracomunitario.

## Rechazo síncrono de una factura

Para probar una factura que FiscalRail rechaza antes de numerarla, omite `customer` y crea una línea de IVA general con `unit_price: "400.00"`. Su total con IVA es 484,00 €, por encima del límite de 400 € para facturas simplificadas.

La API devuelve `422 invalid_invoice` con el detalle `simplified_invoice_total_exceeded` en `totals.total_with_tax`. No se crea ninguna factura, registro VERI*FACTU ni webhook de factura. Es un error de validación de la API, no un resultado de la AEAT.

También puedes probar las demás reglas españolas documentadas: una `issue_date` futura, una cantidad o precio unitario no positivo, una línea que no contenga exactamente una clasificación de IVA o una factura ordinaria cuyo cliente no tenga una dirección completa.

## Resultados VERI*FACTU

Crea un cliente con dirección completa y uno de estos valores `es_nif`, y después emite una factura para ese cliente:

| NIF del cliente | Estado final del registro | Evento final |
| --- | --- | --- |
| `B00000026` | `accepted` | `invoice.verifactu_registration.accepted` |
| `B00000000` | `accepted_with_errors` con un error simulado de destinatario no censado | `invoice.verifactu_registration.accepted_with_errors` |
| `B00000034` | `rejected` con el código de error simulado `9999` | `invoice.verifactu_registration.rejected` |
| `B00000018` | El primer intento recibe HTTP 503 y un reintento pasa a `accepted` | `invoice.verifactu_registration.accepted` después del reintento |

La emisión sigue devolviendo `201` y una factura inmutable con un registro `pending`. El envío VERI*FACTU es asíncrono: un rechazo de la AEAT no puede convertir la solicitud original de factura en un error de la API. Recupera la factura y consulta `tax_regime.es.verifactu.registrations`, o procesa el evento final. El código `9999` es un valor determinista del simulador, no un supuesto código real de la AEAT.

Los registros que usan valores especiales se envían por separado para que un fallo de transporte simulado no afecte a otras facturas del mismo lote. Los QR de Test siguen apuntando a la página de verificación de FiscalRail, identificada claramente como prueba.

Continúa con la [guía de VERI*FACTU](/es/tax-regimes/spain/verifactu) para conocer el flujo de producción y la estructura pública del registro.
