Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.invopop.com/llms.txt

Use this file to discover all available pages before exploring further.

https://assets.invopop.com/flags/pl.svg

Poland

View implementation guide ›
DeveloperInvopop
CategoryGovernment
ScopeB2B
CountryPoland
KSeF (Krajowy System e-Faktur) 2.0 is Poland’s mandatory national e-invoicing system operated by the Ministry of Finance. The system uses the FA(3) XML schema format for structured invoice data and provides real-time clearance for all B2B invoices.Electronic invoicing in Poland operates on a clearance model whereby every invoice must be validated against the FA(3) schema and business rules in real-time. Validated invoices receive a unique KSeF ID and official timestamp. The platform provides secure archiving for issued and received e-invoices.Invoices are encoded in FA(3), a strict XML format published and maintained by Polish tax authorities. The schema enforces standardized fields for both domestic and cross-border transactions, including buyer/seller data, VAT details, and item lines.Key Features
  • Party Registration: Register suppliers in the KSeF system with their Polish Tax ID (NIP).
  • API Certificate Upload: Upload KSeF certificates, private keys, and passwords programmatically via API for automated integration.
  • Workflow Automation: Automated workflows for registering parties, issuing invoices, and importing received invoices through the KSeF 2.0 system.
  • Real-Time Validation: Every invoice is validated in real-time against the FA(3) schema and business rules, ensuring compliance with Polish e-invoicing regulations.
  • Invoice Import & Sync: Automatically poll KSeF for received invoices and import them into Invopop in GOBL format.
  • Legally Compliant PDF Invoices: Invoices are generated with all mandatory fields and FA(3) QR codes linked to the KSeF portal.
  • FA(3) XML Generation: Compliant XML generation is supported for the KSeF FA(3) schema.
  • QR Code: Generates the FA(3) QR code according to KSeF specifications.
  • KSeF 2.0 Integration: Direct integration with KSeF 2.0, Poland’s official national platform for electronic invoicing.
KSeF 2.0 Environment SupportInvopop supports KSeF 2.0 in sandbox (test and demo modes) and production environments. In sandbox, you can choose between test mode (with automatically generated certificates) or demo mode (simulating the real production flow). In production, all suppliers are registered directly with the KSeF production system.
Make sure to check out our Poland Guide for instructions on how to register suppliers, issue invoices, and set up your workflows.

FAQ

Invoicing questions
International (cross-border) invoices are handled just like domestic invoices in KSeF:
  • The invoice is created in GOBL with the foreign recipient’s details
  • It’s converted to FA(3) XML format and submitted to KSeF
  • KSeF validates and clears the invoice, assigning a unique KSeF ID
  • The invoice is registered in the KSeF system
However, since foreign recipients cannot access KSeF, you must deliver the invoice through other channels (email, EDI, etc.). Include the KSeF QR code in the delivery for verification purposes.
Test mode (sandbox only): Uses self-signed certificates generated automatically by Invopop. Perfect for quick testing without accessing the KSeF portal. Invoices are not sent to real KSeF servers.Demo mode (sandbox only): Connects to the official KSeF Demo Portal. Requires manual certificate generation, simulating the full production flow in a safe test environment.Production mode (live workspace): Connects to the live KSeF Portal. Requires valid company credentials and certificates. All invoices are submitted to the official KSeF system.
Use test mode for initial integration testing, then switch to demo mode when you’re ready to simulate the real certificate flow before going live.
Official KSeF applications:For testing:
Install the KSeF Poland app, register your supplier (Test, Demo, or Production environment), and run invoices through the Send Invoice workflow. Each environment requires its own NIP and certificate setup.
This error means the uploaded KSeF certificate does not have the required permissions to issue invoices. This typically happens when the certificate was uploaded by someone who is not the company administrator and only has limited permissions granted by the main company account.The KSeF certificate uploaded to Invopop must belong to either:
  • The company account directly logged into KSeF, or
  • An entity that has both InvoiceRead and InvoiceWrite permissions (managed within KSeF)
To resolve this, you have two options:
  1. Grant permissions in KSeF: The company admin (or whoever has direct access to the KSeF company account) grants InvoiceRead and InvoiceWrite permissions to the user who uploaded the certificate to Invopop. This can be done from the KSeF application portal and requires no further action in Invopop (no need to unregister/register).
  2. Re-register with a new certificate: Unregister the supplier in Invopop and register it again using a certificate generated from the main KSeF company account (or another account with the required permissions).
See the Poland tax regime in GOBL for tax categories and NIP rules. The pl-favat-v3 addon documents the FA(3) schema fields required for KSeF.
Receiving questions
Invopop automatically imports received invoices through a polling service:
  1. Configure polling interval during party registration (hourly, daily, weekly, or monthly)
  2. Set up the sync workflow to query KSeF for new invoices
  3. Configure the import workflow to convert FA(3) XML to GOBL format
  4. Link the workflows in the Poland app configuration
The system automatically checks KSeF at your chosen interval and imports any new invoices to your configured folder.For manual import, use the API to trigger import jobs with specific KSeF numbers or date ranges. See the Import Received Invoices section in the guide.
Yes. You can manually trigger a sync workflow to import invoices from a specific date range using the Create a Job endpoint.Pass the from and upto date parameters to sync all invoices received within that period:
{
  "workflow_id": "YOUR_SYNC_WORKFLOW_ID",
  "entry_id": "YOUR_PARTY_ENTRY_ID",
  "args": {
    "from": "2026-01-01T00:00:00Z",
    "upto": "2026-01-31T23:59:59Z"
  }
}
This is useful for backfilling invoices after a polling outage or importing historical data before enabling automatic polling.
Check these indicators:
  1. Polling configuration: Verify the polling interval is set in your party registration workflow configuration
  2. App configuration: Confirm the Poland app has your sync workflow configured
  3. Recent imports: Check the “Invoices · Expenses” folder for newly imported invoices
  4. Job logs: Review job logs in the Console for sync and import workflow executions
  5. Error notifications: Set up email or Slack notifications in your workflow error handling to alert you of failures
Test the import by manually triggering the sync workflow with a date range that includes known received invoices.
FA(3) XML conforming to the Ministry of Finance schema. Each invoice carries a unique KSeF reference (numer KSeF) plus the issuer’s signature and a QR code linking to the public verification page.
Inbound FA(3) XMLs are parsed via gobl.favat. Tax rates, line items, and parties map onto GOBL fields; the original signed XML is preserved as a silo entry attachment.
Registering supplier questions
Common reasons for registration failures:
  • Certificate and private key mismatch: Ensure you uploaded both files from the same certificate generation
  • Incorrect password: Verify the password matches what you set during certificate generation
  • Future start date: Certificate start date must be today or in the past
  • Wrong portal environment: Demo certificates won’t work with production, and vice versa
  • File encoding issues: For API uploads, ensure files are properly base64-encoded
  • Expired certificate: Check that the certificate is still valid
  • Invalid NIP: Verify the Polish Tax ID is correct and has access to KSeF
Check the workflow error logs in the Invopop Console for detailed error messages that can help diagnose the specific issue.
For sandbox testing:
  • Test mode: Generate fake NIPs at http://generatory.it/. These work immediately with self-signed certificates.
  • Demo mode: You need a real NIP with access to the KSeF Demo Portal.
Choose an environment (Test, Demo, or Production). Generate a KSeF certificate from the relevant portal (or use a self-signed cert in Test mode), upload it to Invopop with the matching password, and register the supplier through the KSeF Register Supplier workflow.
A KSeF certificate exported as PKCS#12 (.p12) with password, generated through the KSeF Application Portal (or auto-generated by Invopop in Test mode). The certificate must have InvoiceRead + InvoiceWrite permissions.
The KSeF certificate (PKCS#12 .p12 with password) is stored encrypted at rest. Invopop uses it to authenticate session creation with KSeF on the supplier’s behalf; the password is never returned in API responses.
More answers in our Poland FAQ section

Participate in our community

Ask and answer questions about Poland App →