Saltar al contenido

Facturas directas ​

Una conexion API puede emitir facturas directamente cuando su propietario completa en Factulit el asistente Activar facturacion con VeriFactu. Crear la conexion tecnica o sincronizar pedidos no habilita este endpoint.

POST /api/v1/invoice es una operacion de emision, no de borrador. Una peticion correcta asigna atomicamente la serie API-* vigente de la conexion y su numero, crea el registro VeriFactu de ALTA y lo deja pendiente de remision a la AEAT. Las facturas emitidas no se pueden actualizar mediante PUT.

Idempotencia ​

Elige un external_id estable en tu sistema:

  • La primera peticion responde HTTP 201.
  • El mismo external_id con el mismo payload normalizado devuelve el resultado existente con HTTP 200 y replayed: true.
  • El mismo external_id con un payload diferente responde HTTP 409 y error_code: idempotency_conflict.

Ejemplo ​

bash
curl -X POST https://api.factulit.es/api/v1/invoice \
  -H "X-API-KEY: factulit_example_key" \
  -H "Content-Type: application/json" \
  -H "X-Request-Id: 019ffae4-example" \
  -d '{
    "external_id": "invoice-2026-0001",
    "invoice_type": "F1",
    "description": "Venta online",
    "currency": "EUR",
    "recipient": {
      "company": "Ejemplo SL",
      "vat_number": "B00000000",
      "country": "ES",
      "address1": "Calle Mayor 1",
      "postcode": "28001",
      "city": "Madrid"
    },
    "lines": [{
      "description": "Producto",
      "quantity": 1,
      "price_unit": 100,
      "tax_rate": 21,
      "regime": "01",
      "qualification": "S1",
      "type_tax": "01"
    }]
  }'

Usa GET /api/v1/invoice/{external_id} para recuperar el resultado. Una peticion en moneda distinta de EUR debe incluir exchange_rate y exchange_rate_date.

El régimen documental (art6_full o art7_simplified) es independiente del código AEAT. Los cruces excepcionales exigen la marca estructurada correspondiente: qualified_simplified_art_7_2_3 para F1 simplificada cualificada o no_recipient_article_6_1_d para F2 completa sin identificación. El umbral automático general de la simplificada es 400 EUR. Para solicitar art7_simplified por encima de 400 EUR debes aportar simplified_attestation con base legal, rol del comprador y acreditación exacta de todas las líneas mediante su line_id. La base article_4_2 conserva el techo de 3.000 EUR; aeat_authorisation exige además un número y límite que coincidan con la autorización vigente configurada en Factulit. Si falta o hay una línea ambigua, profesional o no elegible, la API devuelve un error fiscal accionable; nunca presume la ampliación.

Antes del consentimiento se pueden sincronizar clientes, estados y pedidos; sus efectos fiscales quedan diferidos y la factura directa responde 409 invoicing_not_enabled.

Documentacion publica de la API de Factulit.