Five Rates, Two Outcomes: Irish VAT and the Invoice Line
Ireland runs five VAT rates at once. Most systems give you one default and a zero override, which covers the two commonest cases and fails silently on everything between them — including, in ours, by charging the standard rate when you ask for a reduced one.
Ireland has five rates of VAT running at the same time: a standard rate of 23%, a reduced rate, a second reduced rate, a livestock rate of 4.8%, and a zero rate. Which one applies to a sale is a determination about what was sold — not about who sold it. That is an unremarkable fact about Irish trade and an awkward one about most software, because most software treats a tax rate as a setting on the company. This is about the point where those two ideas meet, which is a single line on an invoice.
Nothing here is tax advice. Which rung a particular supply sits on is your accountant's determination and we would not offer a view on it — and we have deliberately not printed a list of what belongs on which rung, because the rungs are stable and the assignments have moved more than once. What follows is about data modelling, which is a question you can settle without an adviser.
The question that decides everything, and it takes one sentence
Ask a vendor whether they support multiple VAT rates and you will get a yes, because it is true in some sense of every system ever written. The useful question is narrower: which record is the rate a property of? There are only three plausible answers and they are nowhere near equivalent.
- The organization. One default rate, set once, applied to everything unless overridden. Entirely correct for a business that sells one kind of thing.
- The item. Each product or service carries its own rate, so a mixed invoice comes out right because the items know what they are.
- The line. The rate is settled when the sale is recorded — the only answer that survives a supply whose treatment depends on how it was bundled with others.
Ireland needs the second answer as a floor and the third for the awkward cases. A great many systems give you the first and describe it as the second, because an item can be flagged exempt and that feels like item-level tax. It is not the same thing, and the space between them is where Irish invoices go wrong.
What our own product does, stated exactly
We will use ourselves as the worked example, because it is the schema we can actually show you and because a post on this subject that only criticised other vendors would be worth nothing. Our resolver takes an organization default rate and an item treatment. It has three branches.
| The treatment stored on the item | The rate the line is charged |
|---|---|
Blank, or standard | The organization's default rate |
| Zero-rated or exempt, in any of the spellings we accept | Zero |
| Any other value at all | The organization's default rate |
Three branches, two outcomes. For an Irish organization whose default is the standard rate, the top rung of the ladder and the bottom rung are reachable and the three in between are not — except by making one of them the whole organization's default, which is right for a single-rate business and wrong the moment one line differs from the rest.
The third branch is the one to sit with
Set an item's treatment to reduced and the line is charged the standard rate. Not an error, not a zero, not a warning — the value falls through to the default because the resolver does not recognise it, and the invoice looks entirely normal afterwards. Somebody trying to do exactly the right thing gets the wrong number, and the record they leave behind looks deliberate.
Why a wrong rate is harder to find than a missing one
This is what makes rate modelling different from most data problems, and it is the reason the failure survives so long in practice. A missing figure announces itself: a report has a hole, a total does not tie, somebody asks. A figure computed at the wrong rate does none of that.
It balances. It reconciles. Subtotal, tax and total are internally consistent, because all three were computed from the same wrong percentage. Every arithmetic check you own will pass, and so will your accounting system's, because it is being handed a coherent document.
What finds a wrong rate is a person who knows what the rate should have been, reading documents one at a time. That is not a control. That is luck, and it scales in exactly the wrong direction.
And the exposure grows with the thing you would most want to grow. The businesses issuing the most mixed invoices — the ones selling a service with goods in it, or goods with installation attached — are the ones for whom a single-rate model is most wrong, and they are usually the ones with the most invoices.
Two more things Ireland asks that a rate column cannot answer
Zero-rated and exempt are not the same thing
Both produce nil tax on a line, which is why systems collapse them into one state so often. Ours does. They are genuinely different: a zero-rated supply is taxable at a rate of nought, and an exempt supply is outside the charge. The consequences differ for what a business can recover, so the distinction has to survive being saved if a return is ever going to be produced from the records rather than reconstructed alongside them. In our schema it does not survive — both resolve to zero, and afterwards the record cannot tell you which was meant.
A mixed supply can change the rate of the whole thing
Ireland has a two-thirds rule: where a contract is a service but the goods within it exceed two thirds of the total value, the supply can be taxed as goods rather than as a service. Read that as a mechanism rather than as a formula to implement — whether it bites on a particular contract is your adviser's call. What matters architecturally is the shape of the question, which is a test on the composition of a supply. The answer depends on the other lines. No setting above the line can produce it, and neither can an item-level rate, because the item does not know what it was sold alongside.
Four questions worth asking any vendor
Ask these before a demo, not after one
Which record is the tax rate a property of — the organization, the item, or the line?
What a good answer sounds like
A noun, immediately, without a feature name attached to it.
What a bad answer is telling you
If the answer is a feature name rather than a record, nobody in the room knows, and the answer is usually "the organization".
What happens if I put a rate value the system does not recognise into its tax field?
What a good answer sounds like
A validation error. Second best is a zero, because a zero is visible.
What a bad answer is telling you
If the answer is the default rate, the system will quietly produce wrong tax whenever somebody tries to be precise. Ours does this today.
Can two lines on the same invoice carry two different positive rates?
What a good answer sounds like
Yes, demonstrated on a document rather than described.
What a bad answer is telling you
Watch for the substitution: "yes, you can have taxable and exempt lines" is an answer to a different question.
If I mark something exempt today and zero-rated tomorrow, can the records tell me which I did?
What a good answer sounds like
Two distinct stored states, visible on the record afterwards.
What a bad answer is telling you
If both store the same nil, your return is being assembled from a distinction the database threw away.
What we would build, and where we stop on purpose
The build is a rate set the organization defines, a selector on the line, and a stored distinction between zero-rated and exempt. It is a schema and resolver change rather than a configuration exercise, and it would improve every multi-rate market in the product rather than only Ireland — which is the argument for doing it properly rather than for one country. What we will not do is tell you which rung a supply belongs on. That is a determination your accountant makes and signs, and a software vendor with an opinion on it is offering reliance it cannot carry.
What AWRA OpsHub does today
- A rate column on every sales line — invoices, quotations and point-of-sale lines. The mechanism a multi-rate country needs exists; what fills it is the limit above.
- Item-level treatment, so a zero-rated or exempt item carries its status onto every document it appears on rather than being re-decided by whoever is typing.
- Per-levy arithmetic against each levy's own base, built for Tunisia, which means a total can be decomposed rather than only summed.
- Euro as an ordinary two-decimal base currency, with exchange rates recorded on the document.
What it does not do
- Per-line rate selection. A line gets the organization default or zero, and nothing between them.
- A recognised reduced-rate treatment. Today an unrecognised value produces the standard rate silently, which is worse than rejecting it.
- A stored distinction between zero-rated and exempt. Both collapse to the same nil.
- Any Revenue integration — no ROS, no VAT3, no Return of Trading Details, no VIES, no Intrastat.
- A VAT return output of any kind, and no tax dataset in the report catalog.
Not ours, by choice
- We will not tell you which rate applies to a supply, including how the two-thirds rule bears on a particular contract. Software that offered a view would be inviting you to rely on it.
- We will not be your filing agent, even once an integration exists. The obligation is yours and software should make it answerable rather than absorb it.
The rate work is one project in a clear order: a rate set the organization defines, a selector on the line, then a zero-rated and exempt distinction that survives being saved. The first is the one without which the others are decorative. The precedent that we finish market-specific work of this kind is Kenya — a live tax-authority integration and a maintained statutory payroll engine, both ours. A written specification, a timeline and a price agreed before anything starts, and no dates on a public page.
One thing worth stating rather than leaving to be inferred. The standard rate being the only rung our default reaches is not a claim that Irish businesses mostly charge 23%. Plenty charge the reduced rate on nearly everything they sell, and for those the default does the work correctly. The failure is specific — it is mixed invoices — and it is silent when it happens.
What is not built for Ireland today can still be built for you
Anything described above as not built is a statement about what ships in the standard product today — not a limit on what AWRA OpsHub can do in Ireland. Kenya's eTIMS integration and its maintained payroll engine exist because Kenyan clients needed them and commissioned them; neither appeared by itself. The same door is open here. If a rate per line rather than per organization, a bank or mobile money feed, a statutory return format, a rule your own operation needs that the standard one does not have, or a link to a system you already run is what stands between you and a decision, tell us and we will scope it as a build — written spec, timeline and price — before you commit to anything.
The three builds, and the first one is the whole thing
A rate selected per line from a set the organization defines, rather than one default rate with a zero override — because a country with five live VAT rates cannot be served by a model with two outcomes, and today an item treatment our resolver does not recognise silently produces the standard rate. Then a stored distinction between zero-rated and exempt, which currently collapse to the same nil on a line and mean different things on a return. Then a return assembled from both. The first build is a schema and resolver change, it is the one without which the other two are decorative, and it would improve every multi-rate market in the product rather than only this one — which is the argument for doing it properly rather than for one country.
Banks and payments
SEPA credit transfers and direct debits, plus bank statement feeds wired into the Payments Register, so money in and out reconciles against documents rather than being re-keyed from a bank screen.
The operational work, which is what most commissions actually are
An extra approval stage in a chain that does not match the standard one, a custom field set on employees or assets that only your sector needs, an expiry that has to block an order rather than send an email, a report your board asks for in a shape nothing produces, or a scanner or weighbridge feeding the goods-in door. These are the commissions we are asked for most often and the smallest ones we quote — and unlike a revenue-authority pipeline, none of them waits on a regulator.
Payroll and statutory returns
An Irish payroll engine with PAYE, PRSI and USC computed on live employee records, submission on each pay run, and pension auto-enrolment assessment. None of it exists today; labour cost attribution to projects and cost centres does.
Systems you already run
The accounting package, CRM, online store or custom database you intend to keep — connected through our API so a fact is entered once and appears everywhere it is needed.
How it works: you describe the requirement, we return a written scope, timeline and cost, and once agreed it is built into your environment and maintained as part of the product. No roadmap slide, and no pretending in a demo that something exists when it does not.
Tell us what you need integratedThe one-line version
Count how many rates your own invoices carried last quarter, not how many Ireland has. One rate means this problem belongs to somebody else. More than one means the rate has to be decided somewhere that can hold more than two answers, and finding out where is the first decision rather than the last.
Ask us the four questions
We answered them about ourselves above, which is the only thing that makes them fair to ask of anybody else. Bring a mixed invoice and we will tell you what our schema would do with it.
Read the Ireland page