1. Build monitoring around correlation, not transport
Treat KSeF 2.0 as asynchronous: successful transport starts or advances work but does not prove that an invoice was successfully processed or assigned a KSeF number. Connect each local business event to its remote result. Preserve the local ERP invoice or job identifier, session reference, every invoice reference, request and response timestamps, and the latest returned status and KSeF number where present. Keep one-to-many relationships explicit because an export job can contain many invoices, each needing its own outcome. Structured logs may show safe correlation data such as ERP job, references and observation time, but never invoice payloads, credentials, private keys or tokens. Common mistakes are overwriting a reference during recovery, confusing session and invoice identifiers, or treating an HTTP success as acceptance. Use the current OpenAPI specification and official documentation as runtime truth because endpoints, response fields and statuses may evolve.