CLIENT: Bielawa Dystrybucja🇵🇱Poland

Kwitek - KSeF Invoicing, Collections and Cash Matching Platform

Invoicing and Receivables Platform for a Polish Distributor

Designed and built a clickable invoicing and receivables platform for a Gdańsk wholesale distributor of heating and plumbing supplies: invoices issued through KSeF, a receivables dashboard with ageing, a collections worklist driven by a dunning cadence, and a matching workbench that pairs bank receipts, including split payments, with the invoices they pay.

Scope of Work
Product design, UI build and clickable demo
Industry
Payments / Invoicing & Receivables
FinTechEnterpriseTax
Compliance & Certifications
KSeF (FA(3))Split payment (MPP)VAT white listLate Payments Act 2013Bad debt reliefJPK_V7GDPR

Most of our work is under NDA. Per agreement, we can share the work but not the company details - all names and identifying information shown here have been changed.

Impact

5 Screens
Clickable end to end

Dashboard, invoices with a preview panel, invoice detail with 6 tabs, the collections worklist and the matching workbench. Every one of the 46 demo invoices opens its own detail page.

5 Match Rules
Behind every suggested match

Virtual account, invoice number in title, NIP in title, exact amount and customer, and split payment pair. Each statement line shows its rule and confidence, and suggestions at 90% or above are accepted in one click.

6 Steps
Dunning cadence encoded

From a friendly reminder 3 days before the due date to a registered demand letter with statutory interest at +21 days, a credit hold at +30 and a legal handover review at +45.

46 Invoices
Realistic demo data

24 customers including 3 EUR export buyers, 46 invoices with lines, KSeF attempts and allocations, 16 worklist items, 13 statement lines from 4 bank accounts and 9 staff users.

The Problem

Bielawa issued invoices from its ERP, sent PDFs by hand from a shared mailbox and tracked who owed what in a spreadsheet exported every Monday. Three people spent most mornings matching transfers from four bank accounts by reading payment titles, split payments were matched twice or not at all, reminders went out when someone had time, and credit holds landed after the customer's next order. Days sales outstanding had drifted to 58 days against 30-day terms, and mandatory KSeF e-invoicing meant invoicing had to be rebuilt anyway.

Our Solution

Kwitek covers the whole cycle after a sale: invoices that count as issued only once KSeF assigns a number, a receivables view with ageing and DSO, a worklist that tells each credit controller who to call or write to today and why, and a matching workbench that suggests which invoices each bank receipt pays, with both halves of a split payment matched to one invoice.

The Challenge: Receivables Under Polish E-Invoicing Rules

Bielawa sells on credit to about 2,400 installers, merchants and contractors across Poland, plus export customers invoiced in EUR. Every step from invoice to cash is shaped by KSeF, VAT rules and Polish late payment law.

An Invoice Exists Only in KSeF

A B2B invoice is issued by sending FA(3) XML to KSeF, which validates it and assigns the number that makes it legal. Rejections, pending submissions and offline-mode deadlines all have to be visible, and a mistake is fixed with a correcting invoice, never by editing the original.

Split Payments Arrive in Two Halves

Invoices over PLN 15,000 gross that include Annex 15 goods, such as some steel pipe, must carry the split payment mechanism. The buyer pays net to the main account and VAT to the linked VAT account, and both credits have to land on one invoice.

Cash That Does Not Say What It Pays

Receipts arrive as MT940 lines from four banks with free-text titles, round amounts, partial payments and bank interest mixed in. Matching by reading titles took three people most of each morning.

Collections Within the Law

The 2013 late payment act sets statutory interest and a flat recovery compensation of EUR 40, 70 or 100 by debt size. Debtor registry reports need a prior written demand and a waiting period, and the bank accounts printed on invoices must be on the VAT white list.

Our Approach: From Polish Invoicing Rules to a Clickable Platform

01

Spec and Rules Research

Mapped 9 user roles from billing specialist to the customer portal login, 36 screens (31 staff and 5 portal) and the data model for customers, invoices, KSeF records, corrections, statement lines, receipts, dunning cadences, promises, disputes and write-offs. Wrote down the rules the design follows: KSeF and FA(3), correcting invoices, VAT rates and NBP conversion, split payment, the white list, the late payment act, bad debt relief, JPK_V7, debtor registries and GDPR.

02

Clickable Demo on a Production UI Kit

Built 5 key screens on a production dashboard kit: the dashboard with 5 KPI cards, ageing buckets, cash collected by method against forecast and a role switcher for My work; invoices with status pills, filters and a preview with the QR verification code; invoice detail with KSeF history, split payment halves and statutory interest to date; the collections worklist with call scripts; and the matching workbench. All actions run on local state.

03

What a Production Build Adds

Integration with the KSeF API, the white list API, VIES, GUS REGON, the NBP rates API, corporate banking at PKO BP, Pekao, mBank or Santander, payment links through Przelewy24, PayU or Autopay, e-Polecony registered letters and ledger export to Comarch ERP Optima, enova365 or Symfonia. Staff auth by role, an append-only audit log, and the remaining screens: new invoice, corrections, KSeF monitor, customers, disputes, write-offs, reports, settings and the customer portal.

Why It Works: Every Zloty Accounted For

KSeF Status on Every Invoice

Each invoice shows its KSeF status and delivery state next to the amounts, the sidebar shows whether KSeF is online, and the dashboard counts invoices not accepted after an hour. Invoice detail keeps every submission attempt and the QR verification codes.

Matches You Can Check

Every suggested match names the rule that found it and its confidence, split payments show the net and VAT halves side by side, and allocations show a running total and remainder. Payments that are not from customers, such as bank interest, can be set aside, and undoing a match asks for a reason.

One Row Per Customer, With a Reason

The worklist shows customers, not invoices: overdue total, oldest days overdue, next action and why it is due, from a cadence step or a broken promise. A call script and the customer's open invoices and contacts sit beside the list.

Approvals by Amount

Letters and credit holds wait for approval before they go out, and a write-off request routes to the credit manager up to PLN 5,000 or the finance director above it. The requester can never approve their own write-off.

Related case studies

View all: Payments
Logo
Oceanlab

Enterprise Software Engineering - Human + AI

Languages

Locations

Global Headquarters

21 Merchant Road, 3rd Floor, Singapore 058267

Main corporate office and leadership operations

North America Office

548 Market Street, PMB 12345, San Francisco, CA 94104

Client operations and business development

India Office

402 Shivalik Shilp II, SG Highway, Ahmedabad 380015

Engineering and delivery center

© 2026 - Copyright. All Rights reserved Oceanlab