Skip to main content

Introduction

KSeF (Krajowy System e-Faktur) 2.0 is Poland’s mandatory national e-invoicing system operated by the Ministry of Finance. Because all B2B invoices are cleared through KSeF, the invoices your suppliers receive are also available in the system — and Invopop can import them into your workspace automatically. This guide walks you through configuring your workspace to periodically import received invoices from KSeF, and how to trigger imports manually when needed. Two companion guides cover the rest of the family: Poland: Supplier registration and Poland: Issuing invoices. The import process uses two apps working together:
  • Poland: Queries KSeF for received invoices and converts the FA(3) XML to GOBL format.
  • Cron: Schedules the sync workflow to run automatically at a regular interval (e.g., hourly or daily).

Prerequisites

To receive invoices from KSeF, you will need:
  • The Poland app connected and a registration workflow in place: covered in the KSeF supplier registration guide. Parties must be registered with the send & receive variant of the registration workflow described below.
  • The Cron app, connected as part of the setup in this guide.

How it works

Once everything is configured, imports run automatically:
  1. Cron scheduling: The Cron app creates a job for the sync workflow at each configured interval, passing the time window (from and upto) to process
  2. Sync workflow: The sync workflow queries KSeF for all invoices received within the time window
  3. Import jobs: For each invoice found, a job is created using your import workflow
  4. Import workflow: Each job downloads the FA(3) XML from KSeF, converts it to GOBL format, and stores it in your Invopop silo
  5. Organization: Imported invoices are automatically placed in the configured folder (typically “Invoices · Expenses”) with a Registered state

Setup

All of the following steps must be carried out from the Invopop Console.
The Poland app must already be connected — this is covered in the supplier registration guide.
1

Connect the Cron app

  1. Navigate to ConfigurationApps
  2. Find Cron in the app discovery list
  3. Click Connect to activate
No additional configuration is needed. The Cron app handles scheduling periodic workflow execution for importing received invoices.
2

Configure the invoice import workflow

This workflow imports an individual invoice from KSeF when it is received. It is automatically triggered by the sync workflow (configured in the next step) for each invoice found.

KSeF import invoice workflow

Add to my workspace →
3

Configure the invoice sync workflow

This workflow syncs all received invoices for a party within a specific time range. It creates an import job for each invoice found, using the import workflow you configured in the previous step.Configure the Sync received invoices from KSeF step to reference the import workflow created in the previous step.
Configure the workflow that all invoices will be sent to

KSeF sync received invoices workflow

Add to my workspace →
4

Configure the send & receive registration workflow

To receive invoices for a party, the party must be registered with the send & receive variant of the registration workflow. In addition to registering the party with KSeF, this variant subscribes the party to periodic invoice imports via the Cron app.

KSeF party registration workflow (receive)

Add to my workspace →
5

Configure the cron step to start syncing invoices to Invopop

After adding the send & receive workflow (regardless of how you created it), open the Subscribe to periodic KSeF sync step and configure the two fields below. This is what tells the Cron app which workflow to run and how often.
  1. Workflow — select the KSeF Sync Received Invoices workflow you created earlier in this setup. The Cron app will trigger this workflow on each tick.
  2. Interval — choose how often KSeF should be checked for new invoices (for example, every hour or every day). Pick a frequency that matches how quickly you need received invoices to appear in Invopop.
Once configured, the step should look like this:
Configured Subscribe to periodic KSeF sync step showing the selected sync workflow and interval

Running

Register a party for receiving

Register each party whose received invoices you want to import by running the send & receive registration workflow on their party entry. The registration steps — creating the party, running the workflow, and completing the certificate upload in demo or production — are identical to the ones described in the supplier registration guide; simply select the send & receive workflow instead of the send-only one.
Each party is subscribed to periodic imports during registration. To use a different interval for a specific party, adjust the Subscribe to periodic KSeF sync step settings in the registration workflow before running it.
If a party was already registered with the send-only workflow, run the send & receive workflow on the same party entry to subscribe it to periodic imports.

Automatic import

Once parties are registered with the send & receive workflow, the Cron app automatically triggers the sync workflow at the interval configured in the registration workflow’s Subscribe to periodic KSeF sync step, following the process described in How it works. Imported invoices appear in the configured folder (typically “Invoices · Expenses”) with a Registered state.

Manual import

If you need to import invoices outside of the automatic cron schedule, you can manually trigger imports from the Console or via the API. Import a single invoice To import a specific invoice from KSeF, you need:
  • KSeF Number: The unique invoice identifier (e.g., 1234567890-20260120-ABCD1234-EF)
  • Supplier NIP: The Polish Tax ID of the invoice issuer
  1. Navigate to Workflows and find your KSeF Import Invoice workflow
  2. Click Run from the workflow editor or the ... menu in the workflow list (see Running from the Console)
  3. Leave the document field empty — the import workflow will create a new silo entry automatically
  4. Fill in the Arguments:
  1. Click Run workflow
The invoice will be downloaded from KSeF, converted to GOBL, and stored in your silo. Import multiple invoices by date range To import all invoices received within a specific time period, you need:
  • The party silo entry for the supplier whose invoices you want to sync
  • The date range (from and upto) to process
  1. Navigate to Workflows and find your KSeF Sync Received Invoices workflow
  2. Click Run from the workflow editor or the ... menu in the workflow list
  3. In the Select a document field, search for and select the party (supplier) entry
  4. Fill in the Arguments:
  1. Click Run workflow
The sync workflow will query KSeF for all invoices received in that date range and create individual import jobs for each invoice found.
Use single invoice import to bring in a specific invoice immediately after receiving notification from a supplier. Use date range sync to backfill invoices or to import historical invoices from before the cron subscription was active.

Error handling and notifications

We strongly recommend adding notification steps to your workflows to alert you of import failures:
  • In the import workflow: Add email or Slack notifications to the error handling section
  • In the sync workflow: Add notifications for when the sync process encounters issues
This ensures you’re immediately aware if invoices fail to import, allowing you to take corrective action.
Common import issues include certificate expired or invalid, KSeF API temporarily unavailable, invoice format not supported by GOBL conversion, and network connectivity issues. Check your workflow error logs in the Console for detailed error messages.

FAQ

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 Manual import section in the receiving invoices 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:
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.ksef. Tax rates, line items, and parties map onto GOBL fields; the original signed XML is preserved as a silo entry attachment.
More available in our Poland FAQ section

Participate in our community

Ask and answer questions about invoicing in Poland →