---
title: "Verify VAT payer"
method: GET
path: "/vat/verify/{identifier}"
tags: ["VAT & Tax"]
---

# Verify VAT payer

`GET /vat/verify/{identifier}`

## Request

- Base URL: `https://api.apino.sk/api/v1`
- URL: `https://api.apino.sk/api/v1/vat/verify/{identifier}`
- Auth: HTTP bearer

Check whether a company is a VAT payer and retrieve its tax reliability index.

**A VAT payer is not the same as a holder of an IČ DPH.** A subject
registered under § 7 or § 7a of the VAT Act has an IČ DPH for cross-border
dealings, but charges no VAT on domestic supplies and cannot deduct it. For
such a subject `is_vat_payer` is `false`, while `ic_dph` and
`registration_type` are still returned — see the *Registered under § 7a*
example. That is roughly a quarter of the register, and it is the case an
IČ DPH printed on an invoice makes easy to get wrong.

| `registration_type` | `is_vat_payer` |
|---|---|
| `§4`, `§4b`, `§5` | `true` (unless struck off or no longer registered) |
| `§7`, `§7a` | `false` |

Accepts an **IČO** (Company Identification Number, 6–8 digits), an **IČ DPH** (VAT ID, `SK` followed by 10 digits) or a **DIČ** (10 digits). Case and spaces are ignored — `sk 2020 270 780` is `SK2020270780`. A Slovak IČ DPH or DIČ whose ten digits are not divisible by 11 is not a valid number and answers `400`: every one the Financial Administration publishes is, so a failing value is a typo, not an unregistered company.

A DIČ not registered for VAT is still answered: `is_vat_payer: false`, no `ic_dph`, and the name and tax reliability the Financial Administration publishes for it.

The response includes:
- VAT registration status and details (registration type, dates)
- Tax reliability index from the Financial Administration (`vysoko spoľahlivý`, `spoľahlivý`, or `menej spoľahlivý`)
- Whether the organization exists in the main RPO register

Data sourced from [Finančná správa SR](https://www.financnasprava.sk); see *Data sources* in the introduction for how often each file is pulled.

### Czech subjects

A **Czech DIČ** (`CZ` followed by 8–10 digits), or an **IČO** that no Slovak
list holds but a Czech company does, is answered from the Czech VAT register
of the Ministry of Finance (ADIS), asked live — the answer carries
`country_code: "CZ"` and `source.synced_at` is the moment it was asked.

- `subject_type` separates `payer` and `vat_group` (both `is_vat_payer: true`)
  from `identified_person` — the Czech counterpart of a Slovak § 7a
  registration: a DIČ, and not a payer — and from `not_registered`.
- `unreliable_payer` is present while the payer is declared unreliable
  (§ 106a of the Czech VAT Act). A customer is then liable for the VAT on
  its invoices (§ 109).
- `bank_accounts` lists the accounts the payer has published (§ 96). Paying
  above the statutory limit to any other account makes the customer liable
  for the VAT.

A natural person's Czech DIČ is built from their birth number. Asked by
IČO, it is **not** returned — `ic_dph` is `null` for a sole trader, while
the VAT status, accounts and unreliability are. Asked by the DIČ itself, it
is echoed back.

The Czech register is asked live and can be unavailable, most regularly
between 0:00 and 0:10 each night. That answers `503` with `Retry-After`,
never a `not_registered` it did not find.

**This is an extract, not a confirmation.** Every answer is our copy of the
public lists the Financial Administration publishes (`ds_dphs`, `ds_dphv`,
`ds_dphz`, `ds_iz_ran`), accurate as of the moment we last read them. The Financial
Administration can register or strike off a subject after that, and it is not
the author of this response. `source` says what the answer was built from and
as of when — `source.synced_at` is the *oldest* of the four reads — and the
same instant is sent as `X-Data-Synced-At`. Keep `source` alongside whatever
you decide with the answer; where a decision needs the Financial
Administration's own word, check its lists at financnasprava.sk.

## Path parameters

- `identifier` string, required

## Query parameters

- `country` 'SK' | 'CZ'

## Response `200`

VAT verification result

- VATVerificationResult
  - `withheld` Withheld: Present only when this response was cut on purpose, and absent otherwise. On the free plan a sole trader — a natural person — is returned as on the public website: their street, postal code, register entry and IČ DPH are left out and `address` holds the municipality. This object says so, so that an empty `street` is not mistaken for a register that has none. A company is never cut, on any plan.
    - `reason` 'natural_person', required: Why fields were left out. More values may be added.
    - `fields` string[], required: JSON paths of the fields left out or shortened in this response.
    - `available_on` 'paid_plan', required: Where these fields are served in full.
  - `is_vat_payer` boolean, required: Whether the subject is a VAT payer **today**. False once the company has left the register, whether it was struck off or simply stopped being registered — see `deregistration_reason`. A VAT payer (*platiteľ DPH*) under § 4, § 4b or § 5 of the VAT Act. **Not the same as holding an IČ DPH:** a subject registered under § 7 or § 7a has one for cross-border dealings, charges no VAT on domestic supplies and has no right to deduct — `is_vat_payer` is `false` for it, with `ic_dph` and `registration_type` still filled in. Decided the way the Financial Administration publishes it: a payer is a subject with a date it became one.
  - `ic_dph` string, nullable, required: VAT ID (IČ DPH), e.g. `SK2020270780`
  - `ico` string, nullable, required: Company Identification Number (IČO)
  - `name` string, nullable, required: Subject name
  - `street` string, nullable, required: Street address
  - `municipality` string, nullable, required: City/municipality
  - `postal_code` string, nullable, required: Postal code
  - `country` string, nullable, required: Country of registration
  - `registration_type` string, nullable, required: VAT registration type (e.g. §4, §7, §7a)
  - `registration_date` string, date, nullable, required: Date of VAT registration (YYYY-MM-DD)
  - `vat_payer_from` string, date, nullable, required: Date the subject became a VAT payer (YYYY-MM-DD), as the Financial Administration publishes it. Null for a subject registered under § 7 or § 7a, which is not a payer — this is what `is_vat_payer` is decided by.
  - `deregistered_on` string, date, nullable, required: When the company left the VAT register (YYYY-MM-DD), or null while it is still in it. For an erasure this is the date the register states; otherwise it is the day we found the subject gone from the register.
  - `deregistration_reason` 'erased' | 'not_in_register' | 'null', nullable, required: Why the company is no longer a payer, or null while it still is one. `erased` — struck off by the Financial Administration for breaching its obligations, which it publishes as a fact. `not_in_register` — it is simply not in the current VAT register: it left, and we are not told why. A company erased years ago that has since registered again is a payer, so this stays null for it. A past erasure is history, not status.
  - `violation_year` string, nullable, required: The year the grounds for an erasure arose, when `deregistration_reason` is `erased`.
  - `tax_reliability` 'vysoko spoľahlivý' | 'spoľahlivý' | 'menej spoľahlivý' | 'null', nullable, required: Tax reliability index from the Financial Administration: - `vysoko spoľahlivý` — highly reliable - `spoľahlivý` — reliable - `menej spoľahlivý` — less reliable
  - `deregistration_grounds` DeregistrationGrounds: Present while the VAT payer is on the Financial Administration's list of payers with grounds for cancellation of registration (`ds_dphz`, § 69 ods. 14 of the VAT Act); absent otherwise. Only ever set on a current VAT payer: the list keeps a few entries for subjects since struck off or now registered under § 7 or § 7a, and for those `deregistration_reason` or `registration_type` already says what matters. The company **is still a VAT payer** — `is_vat_payer` is unaffected. The tax authority has found grounds to cancel the registration (under § 81 ods. 3 písm. b) bod 2 of the Act) and has made that public. It is a warning, not a cancellation. When a registration is cancelled the company leaves this list and `deregistration_reason` becomes `erased`. Being on the list is not by itself one of the grounds § 69 ods. 13 names for a customer to become liable for the supplier's unpaid VAT. It is a published risk signal: a reason to look more closely before paying.
    - `published_on` string, date, required: When the Financial Administration published the company on the list (YYYY-MM-DD).
    - `violation_year` string: The year the grounds arose, when the list states it.
  - `org_exists` boolean, required: Whether the organization exists in the main RPO register (can be used to link to the full organization profile)
  - `country_code` 'CZ': `CZ` when the answer comes from the Czech VAT register: a Czech DIČ was asked, or an IČO no Slovak list holds but a Czech company does. Absent for Slovak subjects.
  - `subject_type` 'payer' | 'vat_group' | 'identified_person' | 'unreliable_person' | 'not_registered': Czech answers only. `payer` and `vat_group` are VAT payers. `identified_person` holds a DIČ for cross-border dealings and is not a payer — the Czech counterpart of a Slovak § 7a registration. `unreliable_person` has been declared an unreliable person (§ 106aa). `not_registered` is none of these.
  - `unreliable_payer` object: Czech answers only; present while the payer is declared unreliable (§ 106a of the Czech VAT Act). A customer is liable for the VAT on its invoices (§ 109) and may pay that VAT directly to the tax office.
    - `published_on` string, date, required
  - `bank_accounts` object[]: Czech answers only: the bank accounts the payer has published (§ 96), accounts whose publication ended left out. Paying above the statutory limit to any other account makes the customer liable for the VAT.
    - `account` string, required: `prefix-number/bank` for a Czech account, the IBAN for any other.
    - `published_on` string, date, required
  - `source` DataSource, required: Where an answer comes from and as of when. Present on every `/vat/verify` response. The answer is a copy of public lists, not a statement by their publisher. Store this object with the answer: it is what shows, later, which data a decision was made on.
    - `publisher` string, required: The authority that publishes the underlying lists.
    - `datasets` string[], required: The published files the answer is built from — `ds_dphs` (VAT register), `ds_dphv` (erasures from it), `ds_dphz` (payers with grounds for cancellation of registration), `ds_iz_ran` (tax reliability index). New values may be added.
    - `synced_at` string, date-time, nullable, required: When we last successfully read the **least recent** of `datasets`, as an RFC 3339 instant. The answer reflects the lists as they stood then. Null when that is not known — for instance right after a restart, before the first sample — which means "no claim", not "stale".
    - `notice` string, required: A fixed sentence stating the above in words, for logs and for anyone reading the stored response without this documentation. Its wording may change; do not match on it.

## Other responses

- `400`: Validation error
- `401`: Missing or invalid API key
- `429`: Rate limit exceeded
- `503`: The Czech VAT register did not answer. Says nothing about the subject; retry after `Retry-After` seconds.

---

[API](https://skmtc.dev/apino/apis/apino-api.md) · [All operations](https://skmtc.dev/apino/apis/apino-api/llms.txt) · [OpenAPI document](https://skmtc.dev/apino/apis/apino-api/revisions/d172569847cd?raw)
