Ir al contenido

Verifactu Direct API · anular y subsanar ​

Dos operaciones excepcionales: rara vez forman parte del flujo del día a día. Datos de ejemplo ficticios.

Anular ​

Operación poco habitual

Anular es solo para una factura emitida por error —una que nunca debió existir—, no para corregir una factura con errores: para eso se emite una rectificativa (un alta R1–R5). No forma parte de ningún flujo del día a día.

Registro independiente: identificas la factura por (serie, numero, fecha_expedicion). No necesitas haber registrado el alta en Bilteo.

bash
curl -X POST https://api.test.bilteo.com/api/v1/external-invoices/cancel \
  -H "Authorization: Bearer bk_live_xxx" -H "Content-Type: application/json" \
  -d '{ "serie": "FV", "numero": "1042", "fecha_expedicion": "2026-02-10" }'
# → 201, { "state": "pending", "verifactu_record_id": "VF…" }

Si la factura anulada no consta en AEAT (se emitió/registró en otro sitio), añade "sin_registro_previo": "S".

Subsanar un rechazo ​

Operación extraordinaria

La subsanación es muy poco frecuente y fuera del flujo normal: solo cuando la AEAT rechazó un registro por un error de remisión (normalmente un bug de integración). No es una rectificativa ni corrige el contenido fiscal de una factura entregada. Solo procede cuando no se exige una factura rectificativa (ni otro mecanismo del Reglamento de Facturación). Si la factura no quedó rejected, esto no es lo que buscas.

Si una factura quedó rejected, reenvíala corregida al mismo POST /external-invoices con "rechazo_previo": "X" (la misma serie/numero): Bilteo la registra como subsanación (Subsanacion="S") reusando la factura, sin duplicarla.

json
{ "serie": "FV", "numero": "1042", "fecha_expedicion": "2026-02-10",
  "tipo_factura": "F1", "descripcion": "Mantenimiento mensual",
  "rechazo_previo": "X",
  "nif": "B72648193", "nombre": "Talleres Marverde SL",
  "lineas": [ { "base_imponible": "350", "tipo_impositivo": "21", "cuota_repercutida": "73.50" } ],
  "importe_total": "423.50" }

Valores de rechazo_previo: N (había un registro aceptado), X (no consta en AEAT), S (una subsanación previa fue rechazada).

Bilteo · Documentación