Tax Configuration
Plirin names tax the way your country does. An Australian business invoices with GST and an ABN, a German one with MwSt. and a USt-IdNr., a US one with Sales tax. The name comes from your business country, not from the currency you invoice in: a Singapore company billing in USD still issues a GST invoice.
The country changes wording and which options you see. It never changes how tax is calculated. There is one tax model with two presentations:
- Simple tax: one flat rate applied to the invoice (the default for every merchant).
- Itemized tax: named rates chosen per invoice line, for countries whose tax is charged that way (VAT and GST countries). Formerly called “VAT mode”.
Business country
Section titled “Business country”In Settings → Tax, choose your business country. The picker is searchable by name and by common aliases (for example “UK”, “Deutschland” or “America”).
- If you signed up with a country, it is already set.
- If your account predates this setting, Plirin pre-selects a country from your business verification (KYB) or your address. Nothing changes until you press Save. A setup-checklist step reminds you until it is set.
- Once your account has issued a document (an invoice or credit note), only the account owner can change the country. Changing it changes the tax name on every future document, so it is not left to every staff member.
Your address country is a separate, free-text field. It is what prints in your address block; the business country is what decides the tax name.
What each country gets
Section titled “What each country gets”Each country has a regime type:
| Type | Meaning | Per-line (itemized) tax |
|---|---|---|
vat | Value-added tax (EU, UK, Switzerland, Japan, Korea) | Offered |
gst | Goods and services tax (Australia, New Zealand, Singapore, Canada) | Offered |
sales_tax | Sales tax charged at the point of sale (United States) | Not offered |
none | Countries without an entry below | Not offered; the invoice says “Tax” |
Countries currently covered:
| Code | Country | Tax name | Tax ID label | Per-line tax | Invoice title |
|---|---|---|---|---|---|
| AU | Australia | GST | ABN | Yes | Tax Invoice |
| AT | Austria | USt. | UID | Yes | — |
| BE | Belgium | BTW | BTW-nr. | Yes | — |
| BG | Bulgaria | DDS | DDS No. | Yes | — |
| CA | Canada | GST/HST | BN | Yes | — |
| HR | Croatia | PDV | OIB | Yes | — |
| CY | Cyprus | FPA | Ar. Egrafis FPA | Yes | — |
| CZ | Czechia | DPH | DIČ | Yes | — |
| DK | Denmark | Moms | CVR-nr. | Yes | — |
| EE | Estonia | KM | KMKR nr | Yes | — |
| FI | Finland | ALV | ALV nro | Yes | — |
| FR | France | TVA | N° TVA | Yes | — |
| DE | Germany | MwSt. | USt-IdNr. | Yes | — |
| GR | Greece | FPA | AFM | Yes | — |
| HU | Hungary | ÁFA | Közösségi adószám | Yes | — |
| IE | Ireland | VAT | VAT no. | Yes | — |
| IT | Italy | IVA | P. IVA | Yes | — |
| JP | Japan | Consumption Tax | Registration No. | Yes | — |
| LV | Latvia | PVN | PVN reģ. nr. | Yes | — |
| LT | Lithuania | PVM | PVM kodas | Yes | — |
| LU | Luxembourg | TVA | N° TVA | Yes | — |
| MT | Malta | VAT | VAT no. | Yes | — |
| NL | Netherlands | BTW | BTW-nr. | Yes | — |
| NZ | New Zealand | GST | GST no. | Yes | — |
| PL | Poland | VAT | NIP | Yes | — |
| PT | Portugal | IVA | NIF | Yes | — |
| RO | Romania | TVA | CIF | Yes | — |
| SG | Singapore | GST | GST Reg. No. | Yes | Tax Invoice |
| SK | Slovakia | DPH | IČ DPH | Yes | — |
| SI | Slovenia | DDV | ID za DDV | Yes | — |
| KR | South Korea | VAT | Business Reg. No. | Yes | — |
| ES | Spain | IVA | NIF | Yes | — |
| SE | Sweden | Moms | Momsreg.nr | Yes | — |
| CH | Switzerland | MWST | MWST-Nr. | Yes | — |
| GB | United Kingdom | VAT | VAT reg. no. | Yes | — |
| US | United States | Sales tax | — | No | — |
A country not in this table uses the none defaults: the tax is called
Tax and the ID Tax ID. You can still name both yourself (see
Tax name and tax ID label).
Tax name and tax ID label
Section titled “Tax name and tax ID label”The defaults above can be changed in Settings → Tax:
- Tax name: pick from the names used in your country (Belgium offers “BTW” and “TVA”, Switzerland “MWST”, “TVA” and “IVA”, Canada “GST/HST” and “TPS/TVH”), or choose Custom and type your own.
- Tax ID label: the same, for the label printed next to your number.
- Tax ID: your registration number. Where Plirin knows the format (the
EU-27, the UK, Australia, Canada and Korea), it is checked and normalised when
you save it, so
de 136 695 976is stored asDE136695976. EU numbers always keep their country prefix (Greece:EL), the form VIES checks. An invalid number is rejected with the reason, rather than printed on an invoice. For other countries the number is stored as you enter it. It is checked only when you change the number or the country, so an existing number is never blocked on an unrelated save.
Leaving a name empty returns it to your country’s default.
Issued documents keep their wording
Section titled “Issued documents keep their wording”When an invoice or credit note is issued, the tax name, tax ID label and tax ID in effect at that moment are stored on the document. Changing your country, your tax name or your tax ID afterwards never rewrites an issued document: its PDF, hosted page, receipt and webhook payloads keep what the customer was sent. Drafts follow your current settings until they are issued.
Changes are audited
Section titled “Changes are audited”Every change to your tax settings is written to your
audit log with the value before and after:
merchant.tax_settings_changed for the country, names, tax ID, flat rate and
pricing behaviour, and tax_rate.created, tax_rate.updated,
tax_rate.deactivated and tax_rate.default_changed for per-line rates.
Simple tax: the default rate
Section titled “Simple tax: the default rate”In Settings → Basic Info, the flat rate is labelled with your tax name (for example GST rate or Sales tax rate). It is applied automatically when creating new invoices.
Per-invoice override
Section titled “Per-invoice override”When creating an invoice, you can:
- Change the rate — override the default percentage
- Set an explicit amount — enter a fixed tax dollar amount instead of a percentage
- Remove tax — set to 0% for tax-exempt invoices
Tax calculation
Section titled “Tax calculation”Tax is computed on the pre-discount subtotal by default:
Subtotal (before discounts) × Tax Rate = Tax AmountLine-level discounts reduce the taxable amount for that line. Order-level coupons do not affect the tax base.
Itemized tax (per-line rates)
Section titled “Itemized tax (per-line rates)”Itemized tax replaces the single flat rate with rates you define, chosen per invoice
line. The rates panel appears in Settings → Tax only for countries whose regime offers
it (vat and gst above). It becomes active automatically once both of these are true:
- A tax ID is set, and
- At least one active rate exists.
While it is active, the flat rate in Business Details is not used. Turning it off is as simple as removing the tax ID or deactivating all rates.
Pricing behaviour
Section titled “Pricing behaviour”In the rates panel, set Prices are: Inclusive / Exclusive of your tax (the tax ID itself is set above, under Tax name and tax ID label):
- Inclusive: the price you enter already contains the tax. This is the usual convention for consumer pricing in VAT and GST countries (a customer sees one all-in price).
- Exclusive: the tax is added on top of the price you enter, the US sales-tax convention.
Create as many rates as your business needs. Each rate has:
| Field | Description |
|---|---|
| Name | Display name, e.g. “Standard rate” |
| Rate | Percentage, e.g. 19 |
| Kind | standard, reduced, zero, or exempt. On the invoice PDF, shown in your country’s terms where they differ (Australia: “GST-free”, “Input-taxed”) |
| Default | Exactly one active rate is marked default at a time |
| Exemption note | Required when kind is exempt — e.g. “Reverse charge — Article 194 VAT Directive” |
- Navigate to Settings → Tax and, in the rates panel, click Add rate
- Enter a name and rate (%), and choose a kind
- If the kind is Exempt, enter an exemption note — this prints on invoices in place of a rate
- Optionally toggle Set as default — used automatically when a line item doesn’t pick a rate
- Click Create rate
Rates can be edited at any time — existing invoices keep the rate they were created with (snapshotted), so editing or deactivating a rate never changes past invoices. A deactivated rate stops appearing as an option on new invoice lines but is preserved for historical records.
Itemized tax via API
Section titled “Itemized tax via API”VAT rate configuration and reporting are dashboard-only — vatRates, createVatRate,
updateVatRate, deactivateVatRate, setDefaultVatRate, vatSummary, and vatReport all require a
dashboard session (JWT) and are rejected for API-key authentication, the same as
updateMerchantProfile. See Authentication for the full
operation allowlist.
The vatRateId fields on invoice lines and prices are not in that dashboard-only set —
createInvoice, createPrice, and updatePrice are all callable with an API key, so a
server-to-server integration can assign a VAT rate to a line or a price without a dashboard
session. It just can’t create or edit the rates themselves; that’s a merchant-console action.
Tax summary report
Section titled “Tax summary report”vatSummary(startDate, endDate) returns your output VAT (VAT collected on issued invoices),
grouped by rate and kind, over a date range — the figures you’d transcribe onto a domestic VAT
return. It’s report-only: Plirin doesn’t file anything with a tax authority, and the report
doesn’t compute input VAT (VAT you paid on purchases). Only issued invoices (sent, paid,
overdue) count; draft and void invoices are excluded.
Run it as an authenticated GraphQL query from the dashboard session:
query { vatSummary(startDate: "2026-01-01", endDate: "2026-03-31") { rate kind netTotal vatTotal grossTotal }}If you invoice in more than one currency
Section titled “If you invoice in more than one currency”vatSummary totals only invoices denominated in your account’s default
currency, because a VAT return is filed in a single currency. Invoices you
issued in another currency during the period are not in those figures, and
vatSummary does not tell you that.
Use vatReport instead. It returns the same rows, plus the currency they are
stated in and a count of the invoices excluded from them:
query { vatReport(startDate: "2026-01-01", endDate: "2026-03-31") { currency rows { rate kind netTotal vatTotal grossTotal } excludedCurrencies { currency invoiceCount } }}If excludedCurrencies comes back empty, which is the usual case for a
domestic-only account, the totals are your complete picture for that period.
If it does not, those invoices still need accounting for — Plirin will not
convert them for you, because the applicable FX rate and rate date are your
tax authority’s determination, not ours to guess on a document you file.