Selling worldwide
You bill customers in Poland, the EU and beyond — some businesses, some consumers. KSeF doesn't apply to all of them. This page explains which of your sales become KSeF invoices and which don't, and how to set up Stripe so we classify each one for you.
This is a plain-language guide, not tax advice. The VAT treatment of cross-border sales depends on your situation — confirm the specifics with your accountant or a tax advisor.
The one rule that decides everything
KSeF is a B2B / B2G system: it's for invoices to businesses and public bodies. Consumer (B2C) sales never go to KSeF. So the first question for every sale is: is the buyer a business with a tax ID?
We read the answer from two fields Stripe puts on the invoice — the buyer's country and their tax ID (NIP, EU VAT number, or a foreign business ID). Get those right and we classify the rest.
Your sales, by buyer
| Who you're billing | What we file | VAT treatment |
|---|---|---|
| Polish business (has a NIP) | KSeF invoice | Domestic B2B — standard PL VAT (23% / 8% / 5%) |
| EU business (has an EU VAT no.) | KSeF invoice | Cross-border B2B service — reverse charge (0% PL VAT, the buyer accounts for it) |
| Non-EU business (e.g. a US company) | KSeF invoice | Export of services — not subject to PL VAT |
| EU consumer (no business tax ID) | Not KSeF | EU B2C digital sale — settles through VAT-OSS, not KSeF |
| Polish or non-EU consumer (no tax ID) | Not KSeF | Out of KSeF scope — your usual receipt / VAT process |
When a sale isn't a KSeF invoice, we don't file it and we don't raise an alarm — the invoice carries an "Out of KSeF" note explaining what to do instead. Nothing is lost; it just isn't a KSeF document.
B2C sales and JPK_V7 (for your accountant)
From 1 February 2026, every sales line in JPK_V7 must carry either a KSeF number or a marker for a
document outside KSeF — for a consumer invoice that marker is BFK (Brak Faktury w KSeF, "no invoice
in KSeF"). We don't generate JPK and we don't file B2C invoices to KSeF; instead the CSV export (Audit
log → Export CSV) lists all your sales: filed invoices with their KSeF number, and B2C invoices
flagged BFK in the ksef_marker column. Your accountant imports that file and has everything JPK_V7
needs — without re-entering consumer sales by hand.
What you must set up in Stripe
So we can tell a business from a consumer (and which kind of business), make sure Stripe captures:
- A tax ID on every business customer. Enable tax-ID collection at checkout, or add the ID on the Customer. A Polish business → NIP; an EU business → its EU VAT number; a non-EU business → its local business ID. No tax ID means we treat the sale as a consumer sale — not a KSeF invoice.
- A billing country on every customer. It drives the whole classification; a missing country defaults to Poland and can misclassify the sale.
- Stripe Tax, if you want Stripe to compute the right VAT to charge. (See the next section — it's separate from KSeF.)
Stripe Tax vs KSeF — they do different jobs
- Stripe Tax decides how much VAT to charge the customer (the rate, reverse-charge exemptions, destination VAT for EU consumers).
- KSeF Kit produces and files the legal e-invoice document.
They're independent. Turning Stripe Tax on doesn't make a sale a KSeF document, and a sale still files correctly with Stripe Tax off — we read the amounts and the tax IDs either way. So don't assume "Stripe Tax is on, I'm covered for KSeF": KSeF is the separate filing this app handles.
Foreign-currency invoices
Selling in USD or EUR is fine. Where a KSeF invoice carries Polish VAT, we report that VAT in złoty at the NBP average rate (table A) from the last business day before the invoice date — the rate the law requires, not Stripe's settlement rate. See Currency & NBP. Reverse-charge and export invoices carry no Polish VAT, so there's nothing to convert.
A note on EU consumers (VAT-OSS)
If you sell digital services to consumers in other EU countries, the VAT is usually due in the buyer's country and settled through VAT-OSS (the EU One Stop Shop) — not through KSeF. We recognise these sales and mark them "Out of KSeF — handle via OSS" rather than filing them. We don't compute the OSS VAT or track the €10,000 threshold for you; that's a matter for your accountant or your OSS return.
How this affects your plan
Each finalized Stripe invoice to a business fires one KSeF filing. For a subscription business that's roughly one filing per business customer per billing cycle — so size your plan by your business invoice count, not your total customer count. Consumer sales never become KSeF filings, so they don't count toward your quota. See Plans & billing.