Registro de cambios
Cambios relevantes del contrato API para integradores ERP.
Entradas breves orientadas a quien ya tenía una integración antigua. Para el diccionario actual: Envío de facturas.
2026-07 — sistemaInformatico opcional (SIF de plataforma)
- Cambio: en el camino feliz no envíes
sistemaInformatico. La API lo inyecta (Simple*Factu = SIF). - Certificado +
nifemisor = siguen siendo del obligado tributario. - Modo excepcional: admin puede activar
clientSifEnableden el tenant → entonces el cliente debe enviar el bloque. - Guías actualizadas: Inicio rápido, Envío, Anulación, Conceptos.
2026-07 — Documentación ERP: recorrido completo y consistencia
Guías nuevas / reordenadas
- Entornos — QA vs prod, prefijo
/v1, NIFs reales. - Verificar NIF, Registros AEAT, Webhooks, Plan y uso.
- Lista de comprobación para producción y soporte en índice (
soporte@simplefactu.com).
Clarificaciones de contrato (sin cambio de runtime API)
- Consulta de estado: estados terminales =
SUCCEEDED|DEAD(FAILEDreintenta). - Permisos (scopes):
GET /invoices/lookup→invoices:read;POST /verify-nif→nif:read. - No existe
POST /me/upgradeen el API; cobro en la app (Lemon Squeezy). - HTTP 422 documentado (
tenant_certificate_required,allowed_nif_mismatch,cert_nif_mismatch, códigos de subida de PFX). - Scalar no lista
/adminni configuración de webhooks; ver guías + INTEGRATION.md.
Aplicación web alineada con el contrato
- Panel de gestoría: ejemplo curl con API key del autónomo (no la de gestoría) y body real de
send-invoice. - App: trabajos en
FAILEDsiguen en consulta periódica / “reintento automático”; soloDEADes fallo definitivo. - Sitemap y enlaces profundos de Scalar para NIF, registros, plan y jobs.
2026-07 — Contrato OpenAPI alineado + flags SIF en XML
Documentación (Scalar / guías)
detalles: OpenAPI deja claro que solobaseesrequiredincondicional; el texto lista las reglas runtime (claveIVA/IGIC, XORcalif/causaExencion, S1/S2/N1/exenta).- Campos opt-in (
cupon, tercero,macrodato, …): documentados como “omitir en el caso normal”. - Triada huella: omitir las tres o enviar las tres (parcial → 400), en cada property.
sistemaInformatico: significado de OT,idSistemaInformatico(2 chars) y diferencia MultiOT vs indicador.
Comportamiento
- Los flags
tipoUsoPosibleSoloVerifactu,tipoUsoPosibleMultiOTeindicadorMultiplesOTdel body se emiten en el XML AEAT (antes el XML fijabaS/S/Signorando el body). Valores típicos autónomo:S/N/N.
2026-07 — Huella automática e idempotencia
Qué puedes omitir ahora
huella,tipoHuellayfechaHoraHusoGenRegistro: si omites los tres, el servidor los genera (cadena canónica AEAT + SHA-256). Si envías uno, envía los tres.primerRegistroyencadenamiento: opcionales; el servidor infiere el estado desdechain_registry.sistemaInformatico: omitir en el camino feliz; la API inyecta el SIF de plataforma (ver entrada 2026-07 arriba). Solo obligatorio conclientSifEnabled.
Camino feliz: Inicio rápido.
Qué es obligatorio (y no lo inventa el servidor)
- Cabecera
x-idempotency-key: UUID (u otro string ≤ 128) que generas tú una vez por factura o anulación lógica. Reutilízala solo al reintentar el mismo body tras un fallo de red.
Detalle: Autenticación → Idempotencia.
Referencia
- Cuerpo de alta: Envío de facturas
- Cuerpo de anulación: Anulación de facturas
- OpenAPI: Referencia API — POST /send-invoice