Hook outbound KSeF: registrar facturas en el KSeF polaco

Configurar el hook outbound KSeF para el registro automático de facturas en el sistema de facturación electrónica polaco.

El hook outbound KSeF automatiza el registro de facturas salientes en el Krajowy System e-Faktur (KSeF), el sistema nacional de facturación electrónica polaco. Las facturas se transforman del formato Peppol BIS Billing 3.0 al formato polaco FA(3) y se registran como lote. Tras el procesamiento correcto, el hook devuelve el UPO (Urzędowe Poswiadczenie Odbioru, el acuse de recibo oficial) y una prueba en PDF a través de la plataforma PSB.

El hook admite tanto un flujo en línea (registro directo) como un flujo fuera de línea (cuando KSeF no está disponible temporalmente, por ejemplo, durante el corte diario). En el flujo fuera de línea se genera un PDF fuera de línea basado en el certificado fuera de línea.

Requisitos previos
  • Un certificado en línea válido para KSeF
  • Un certificado fuera de línea válido para KSeF
  • Las contraseñas correspondientes de ambos certificados
  • El hook debe estar activado en la configuración
Flujo de trabajo

Tras recibir una notificación de factura, el hook pasa por siete pasos:

PasoAcciónDescripción1UploadSube el paquete de facturas como lote a KSeF (POST /v2/sessions/batch)2StatusConsulta el estado del lote hasta que el procesamiento se complete (GET /v2/sessions/{referenceNumber}/status)3RetrieveInvoicesRecupera los resultados de las facturas procesadas por página4RetrieveUpoRecupera el documento UPO de la sesión5PrintGenera un PDF por documento basado en los datos del UPO y el enlace de verificación, y lo registra como adjunto6DispatchEnvía todos los eventos almacenados en buffer como lote al Ingestor7FinalizeLimpia el estado y cierra la sesión

Cuando KSeF no está disponible (corte diario o avería), el flujo fuera de línea se inicia automáticamente: se genera un PDF fuera de línea mediante el certificado fuera de línea, tras lo cual la factura se envía por el canal regular.

Configuración

Registre el hook a través de la API de Hooks:

{
  "id": "ksef-sender",
  "action": "ksef",
  "name": "KSeF Hook Sender",
  "topics": [
    "ClearInvoiceBatched"
  ],
  "output": [
    {
      "when": "200",
      "topic": "SendInvoice"
    },
    {
      "when": "410",
      "topic": "SendInvoice"
    }
  ],
  "init": {
    "onlineCertificate": "{{ruta-al-certificado-en-linea}}",
    "onlineCertificatePassword": "{{contraseña}}",
    "offlineCertificate": "{{ruta-al-certificado-fuera-de-linea}}",
    "offlineCertificatePassword": "{{contraseña}}"
  },
  "isActive": true
}
Parámetros
ParámetroDescripciónonlineCertificateRuta al archivo de certificado en línea para la autenticación con KSeF durante el flujo en líneaonlineCertificatePasswordLa contraseña del certificado en líneaofflineCertificateRuta al archivo de certificado fuera de línea, utilizado para generar códigos QR en el PDF de salidaofflineCertificatePasswordLa contraseña del certificado fuera de líneatopicsLos topics en los que escucha el hook. Utilice ClearInvoiceBatched para facturas salientesoutputDefine qué topic se envía para un código de estado determinadoisActiveDebe estar en true para activar el hook

Importante: Los cuatro campos de certificado son obligatorios. El certificado en línea es necesario para la autenticación durante el flujo en línea. El certificado fuera de línea es necesario para la generación de códigos QR en el PDF, tanto en el procesamiento en línea como fuera de línea.

Códigos de estado
CódigoDescripciónTopic de salida200Factura registrada correctamente en KSeF (en línea)SendInvoice201Factura registrada correctamente tras procesamiento fuera de líneaInvoiceCleared410KSeF está fuera de línea; se inicia el flujo fuera de líneaSendInvoice429Temporalmente no disponible; se programa un reintento automáticoInvoiceClearedRetry500Error interno del servidorInvoiceClearedError

Con el código de estado 410, la PSB inicia automáticamente el flujo fuera de línea. La factura se procesa entonces localmente con el certificado fuera de línea y se envía cuando KSeF vuelve a estar disponible. Con 429, la PSB programa un reintento automático.

Flujo en línea vs. fuera de línea

KSeF tiene un periodo de corte diario durante el cual el sistema no está disponible para el registro en lotes. La PSB lo detecta automáticamente (código de estado 410) y cambia al flujo fuera de línea:

  • En línea: la factura se registra directamente en KSeF, se recupera el UPO y se genera un PDF con códigos QR
  • Fuera de línea: la factura se procesa localmente, se genera un PDF fuera de línea con códigos QR mediante el certificado fuera de línea, y la factura se envía por el canal regular

Tras el regreso de KSeF, las facturas procesadas fuera de línea se registran igualmente y la factura recibe el código de estado 201 (InvoiceCleared).

Preguntas frecuentes
¿Por qué se requieren tanto un certificado en línea como uno fuera de línea en la configuración init?

La PSB utiliza el certificado en línea para autenticarse en KSeF durante el flujo de registro en línea. El certificado fuera de línea es necesario para los códigos QR en la salida PDF, tanto en el procesamiento en línea como fuera de línea. Los cuatro campos (ambas rutas de certificado y contraseñas) deben estar completos.

¿Qué hace la PSB con el código de estado 410 o 429 de KSeF?

Con 410, KSeF está fuera de línea (por ejemplo, durante el periodo de corte); la PSB inicia el flujo fuera de línea con un PDF fuera de línea y luego envía por el canal regular. Con 429, no hay capacidad temporalmente; la PSB programa automáticamente un reintento en InvoiceClearedRetry.

¿Qué topic debo configurar en el hook para facturas salientes hacia KSeF?

Utilice ClearInvoiceBatched en topics para que el hook escuche las notificaciones batch correctas. El objeto output asocia códigos de estado HTTP a topics de seguimiento como SendInvoice o InvoiceCleared, dependiendo del resultado del registro.


¿Desea saber más sobre la facturación electrónica en Polonia? Consulte la página del país sobre la obligación KSeF polaca.

Ver la documentación de la API