Skip to main content New EU e-invoicing mandate from 2027 - Kontier issues XRechnung & ZUGFeRD natively

How to Choose Seat-Based Billing Software

9 October 2026 7 min read Kontier Team
How to Choose Seat-Based Billing Software

When an enterprise customer activates 80 more users on the 17th of a month, the quantity change is not trivial. It affects the open receivable, the next invoice, possibly the payment amount, the revenue schedule and the accounting export. Seat-based billing software has to treat this sequence as one connected finance process. Otherwise you get the familiar pattern: product data in the CRM, quantities in the application, corrections in Excel and questions during the month-end close.

For European B2B SaaS companies, the formula "price per user times number of users" leaves the hard questions open. Which seat counts? When does a change take effect? Is it prorated? Which entity issues the invoice? How is revenue recognized over the service period? Only when the system models these rules can you realistically change prices without a deploy and close the month without Excel.

What seat-based billing actually has to model

A seat is first of all a billable unit. In practice it can be a licensed user, an editor, an admin account, an activated agent or a booked workstation. This definition cannot live only in the product code. It has to be identical in the product catalog, the contract and the billing logic.

The difference between provisioned and active seats matters most. A security product might bill every assigned user, while a collaboration platform charges only for monthly active editors. Both models are legitimate. Trouble starts when product analytics reports active users, billing invoices provisioned licenses and finance gets no traceable explanation for the gap.

A sound architecture therefore separates three layers: the commercial contract with its commitments and prices, the current entitlement status in the product, and the billable events. The contract might define 100 included seats, a minimum spend and a price for additional users. The product reports entitlement changes. Billing evaluates those changes against the contract rules and turns them into invoice lines, ledger entries and revenue schedules.

Seat-based billing software needs clear time logic

Most billing errors come from unclear timelines. Wrong list prices are a less common cause. With seats, the contract term, billing period, service period and time of change all meet. If your data model mixes these up, you end up with credit notes and back-charges that are hard to verify later.

Proration is a product decision with financial impact

When a seat is added mid-month, several rules are valid. You can prorate it from activation, charge it on the next invoice or collect it in a monthly true-up. No single option is right for every case. What matters is that the rule is configured explicitly per plan and shows up consistently on the invoice and in reporting.

Take an annual contract billed monthly: 50 included seats cost €2,500 per month, and each additional seat costs €40. On April 16, the customer adds 20 seats. With daily proration, the rest of the period carries an extra charge of about €400, depending on the day-count convention you choose. With a monthly true-up, the same amount may not appear until May. The two options differ in their effect on cash flow, on how the customer sees the charge and on revenue recognition.

The software also has to define what happens when seats are reduced. An immediate credit note can be customer-friendly, but it makes commitments less predictable. Many B2B contracts therefore allow reductions only at renewal, or they use a high-water mark: within the period, the highest seat count reached is always billed. You cannot derive that rule reliably from a snapshot of the user count. It needs an auditable history.

Events must be idempotent and traceable

Seat changes often arrive through webhooks, SCIM provisioning, internal APIs or bulk imports. These sources deliver duplicates and late events, and now and then events arrive out of order. Billing must not turn any of that into a double charge.

Every event therefore needs a stable external ID, a business timestamp, the affected organization and unambiguous semantics. Useful status changes include:

  • Seat provisioned
  • Seat activated
  • Seat deactivated
  • Seat removed
  • Seat count recorded on a cutoff date

The plan rule decides which of these events are billable. You still need the full event history to explain invoices, credit notes and customer inquiries in a reproducible way, because a number on a dashboard does not prove a financial claim.

From seat event to EU-compliant invoice

Seat billing does not end with the price calculation. As soon as a customer is based in France, Austria or the Netherlands, tax status, place of supply and invoice format have to travel with the charge. Intra-EU B2B transactions can fall under reverse charge if the customer's VAT ID (USt-IdNr.) is valid. That requires a VIES check and a documented decision on the tax status. In other cases, the EU VAT One-Stop Shop (OSS) may become relevant.

A billing platform should not treat this tax logic as a downstream step. Before the invoice goes out, it needs correct tax lines, all mandatory invoice details and a consistent customer classification. Fixing PDFs after the payment has been collected is expensive to run and raises the risk of incorrect postings.

German customers add requirements for structured e-invoices. With XRechnung and ZUGFeRD under EN 16931, attaching a different file format is not enough. The invoice data has to be structured, valid in business terms and identical to the amounts posted in the ledger. If you correct seat changes with manual credit notes, check whether the references to the original invoice, the service period and the tax treatment also stay machine-readable.

Payment collection and dunning belong in the same workflow

An additional seat only turns into cash when the receivable is actually collected. In European B2B, SEPA Direct Debit is especially relevant for recurring invoices. Its failures come in several kinds: R-transactions such as Reject, Return, Refund or Reversal have different causes and call for different follow-up actions.

Generic retry logic that simply tries again is not enough. A mandate problem needs different handling than insufficient funds or a closed account. Billing logic should bring together payment status, the open receivable, the dunning level and customer communication. Otherwise finance ends up with a pile of seat upgrades that look paid but are still open.

Order matters too. If an invoice is created after a seat increase and the collection fails, a later downgrade must not silently overwrite the receivable. Historical invoice lines, payment attempts and dunning actions have to stay traceable and unchanged.

Don't derive revenue recognition from invoice totals

With prepayments, annual contracts and minimum commitments, the invoice amount is not automatically the revenue for the period. Under IFRS 15 and ASC 606, revenue is generally recognized when the service is performed. An annual invoice for seat licenses can therefore produce twelve monthly revenue schedule entries, while a prorated upgrade is spread from its activation date.

A credit for a retroactive seat reduction can change the open receivable, the tax correction and already scheduled revenue recognition at the same time, which is why billing and the ledger should be closely connected. If these layers are maintained in separate tools, the invoice report, deferred revenue and the general ledger stop matching.

Finance needs exportable data assigned to the correct periods. Invoice, payment, receivable, tax, revenue account, deferral and release must all trace back to the same contract and the same service period. GoBD-compliant document chains and a DATEV export are requirements on the data model, so they cannot wait until the last steps before an audit.

Selection criteria for European SaaS teams

Many teams first judge billing software by its checkout, its price lists or its subscription API. For seat-based B2B models, that falls short. Ask instead whether the platform versions contract changes, controls proration per plan and can reproduce historical pricing decisions. Check whether seats can be modeled as entitlements, as metered usage or as a hybrid of both.

Next comes the question of whether the system can operate in Europe. Does it support EU VAT OSS, reverse charge and VIES checks within the invoicing process? Does it generate XRechnung and ZUGFeRD under EN 16931? Can it process SEPA direct debits, including R-transaction routing? Does it deliver ledger data for IFRS 15, ASC 606 and DATEV without finance rebuilding the accounting logic in spreadsheets?

Finally, look at the technical integration. Beyond creating subscriptions, the API should be able to version product catalogs, deduplicate events, check draft invoices, reference corrections and return process status. Kontier connects these layers in a European billing and revenue operations infrastructure, so product changes do not land on finance's desk as special cases.

The right solution makes every seat billing decision visible: which seat was charged when and under which contract rule, which tax was applied, which amount was collected and how it affects the month-end close. That traceability leaves room for more complex pricing models without giving up operational control.

More like this?

New articles on EU billing, compliance and invoicing practice - roughly monthly.

Book a demo

Book a technical demo. 15 minutes with an engineer on your specific pricing model and tax setup.

By submitting you accept our privacy policy.

Prefer email? Reach us at contact@frontieralgorithmics.com

Try Kontier free for 30 days

A 30-day trial - in exchange for your newsletter signup

You subscribe to our newsletter, we send you a personal invite for 30 days of Kontier. No credit card, the trial ends on its own.

After you confirm your email address we send your invite within 48 hours - personally, not automatically.