Do OSS and IOSS Numbers Show Up in VIES?

Short answer: no. OSS and IOSS registration numbers are not the kind of VAT number VIES was built to check, and there is no public tool, from the European Commission or anyone else, that validates an IOSS number the way VIES validates a standard VAT ID. If you landed here because a customer handed you something that looks like an OSS or IOSS reference and you tried to run it through a VAT checker, this guide explains why it didn't work and what to check instead.

What OSS and IOSS actually are

The One Stop Shop (OSS) and Import One Stop Shop (IOSS) are EU VAT simplification schemes, both live since 1 July 2021, that let a business declare and pay VAT on B2C sales across the EU through a single registration rather than registering in every member state where it has customers. The European Commission describes an "enlarged One Stop Shop" covering three special schemes:

  • The Union scheme: for cross-border B2C services and intra-Community distance sales of goods by EU-established businesses.
  • The non-Union scheme: for B2C services supplied to EU consumers by businesses with no EU establishment at all.
  • The import scheme (IOSS): for distance sales of goods imported from outside the EU in consignments not exceeding EUR 150, so VAT is collected at checkout instead of on arrival.

All three are B2C mechanisms. None of them are about verifying who your business customer is, which is the job VIES and the reverse charge mechanism do. That distinction is the root of the confusion this guide is about.

What VIES actually validates

VIES checks whether a standard national VAT identification number, issued by one of the 27 EU member states (plus Northern Ireland's XI prefix), is currently registered for intra-Community transactions. It is a search engine that queries each member state's own database in real time, not a central registry the Commission maintains itself.

Here is the part that surprises people: for the Union scheme, OSS registration does not create a new number at all. Per the Commission's own registration guidance, "for the Union scheme, no separate individual VAT identification number will be attributed. The national VAT identification number already allocated to the taxable person will be used." So if your EU-established customer is Union scheme OSS-registered, the number behind that registration is just their ordinary domestic VAT number, and VIES already validates it the normal way. See our guide to validating EU VAT numbers programmatically for how that lookup works end to end.

Why OSS and IOSS numbers don't show up in VIES

The other two schemes are where a genuinely separate identifier gets issued, and neither ends up in VIES.

For the non-Union scheme, the Member State of identification allocates a new number in the format EUxxxyyyyyz. It exists to let a non-EU business report the VAT it collects from EU consumers; it is not a two-letter, member-state-prefixed identifier, so it falls outside the country-code structure VIES is built around.

For the import scheme, the Member State of identification issues a 12-character IMxxxyyyyyyz number. This is the one people usually mean by "IOSS number," and the Commission is explicit about its reach: it exists to be quoted on customs declarations, not to identify a business the way a VAT number does. The Commission's explanatory notes on the VAT e-commerce package state plainly that "the database of IOSS VAT identification numbers is not public," and that customs authorities check its validity electronically against that database when it appears on a customs declaration. Nobody else gets that check: "the person who declares the goods to customs (e.g. postal operators, express carriers, customs agents, etc.) does not and cannot check the validity of the IOSS VAT identification number." Even the declarant handling your parcel can confirm the number is present, not that it is valid.

So there is no gap in Avatcado's coverage here, and no gap in VIES either. There simply is no public registry to query. Read the VIES API guide for the full picture of what VIES does cover, including the SOAP interface and its per-country downtime.

The leaked-number problem

Because there is no self-serve way to check an IOSS number, the number itself becomes something worth protecting rather than something worth publishing. The Commission's own guidance on the import scheme recommends keeping distribution tight: communication of the IOSS number "should be kept to the minimum necessary and thus it should only be transmitted to the parties in the supply chain that will need it for the release for free circulation in the Member State of importation." The same notes address misuse directly, pointing electronic interfaces (marketplaces that are deemed suppliers) toward contractual rules and sanctions for underlying sellers who misuse a shared number, precisely because there is no public check that would catch it automatically.

The practical takeaway for a developer: treat an IOSS number as a customs declaration artifact tied to a specific consignment, not as a public identifier you can hand out, print on a label, or accept at face value from someone claiming to be a registered seller. If you are building a marketplace or fulfillment integration that touches IOSS numbers, that same "need to know" principle applies to your own systems.

What to validate instead

In practice, almost every reason a developer reaches for VAT validation is a B2B question, not an OSS or IOSS question:

  • B2B reverse charge: you need your buyer's ordinary national VAT number, the kind VIES or HMRC validates. If they mention being OSS-registered under the Union scheme, that is reassuring context, but it does not change what you validate. See our reverse charge guide for the full decision flow.
  • A non-Union scheme number lands in your form: that EUxxxyyyyyz string is the seller's own registration for charging EU consumers, not a customer identity to validate. It usually shows up if your own business is the one registered for non-Union OSS, which our US SaaS guide covers from that angle.
  • An IM-prefixed string shows up somewhere in your data: that is a customs declaration reference for imported goods, not a business VAT ID. Don't pass it to a VAT validation endpoint expecting a valid/invalid result; there is no country prefix it matches, so it will simply fail format validation.

If you do try it, here is what actually happens when an IOSS-shaped string hits a real VAT validation endpoint. Avatcado supports 33 real country prefixes; IM and EU are not among them, so the request fails format validation rather than returning a false positive:

curl "https://api.avatcado.com/v1/validate?vat_number=IM040123456789" \
  -H "Authorization: Bearer avat_live_your_api_key"

# {
#   "error": {
#     "code": "invalid_vat_format",
#     "message": "The VAT number format is invalid. Expected format: CC123456789",
#     "docs_url": "https://docs.avatcado.com/errors/invalid_vat_format"
#   },
#   "meta": { "request_id": "550e8400-e29b-41d4-a716-446655440000" }
# }

That is the correct, honest result. Avatcado validates VAT and GST registration numbers against VIES, HMRC, the Swiss BFS UID Register, the Norwegian Bronnoysund Register, and the Australian ABR, all systems with a real, queryable registry behind them. It does not validate IOSS numbers, because no such registry exists for anyone outside EU customs authorities to query. We would rather say that plainly than pretend to support a check that can't actually be performed.

When a normal VAT number check is the right tool

If what you actually have is a standard VAT identification number for a business, EU, UK, Swiss, Liechtenstein, Norwegian, or Australian, that is exactly what Avatcado is for. The moment you are deciding whether to zero-rate a B2B invoice, qualify a lead, or confirm a customer's legal entity name before onboarding, run the ordinary validation flow described in the programmatic validation guide. OSS and IOSS only enter the picture on the B2C side of your business, in your own scheme registration and your own customs declarations, not in the numbers your customers hand you for reverse charge purposes.

Get started

Avatcado's free tier includes 500 validations per month for the VAT and GST numbers it actually validates: real, registry-backed identifiers, not customs declaration artifacts.

Start validating for free →

Read the API documentation for endpoint details, or see the SaaS billing integration guide for the full checkout flow this fits into.

Frequently asked questions

Can I validate an IOSS number the same way I validate a VAT number?

No. IOSS (Import One Stop Shop) numbers are checked against a database that the European Commission's own explanatory notes describe as not public. Only customs authorities can verify an IOSS number electronically, when it appears on a customs declaration; the Commission is explicit that even the person declaring the goods, such as a postal operator, express carrier, or customs agent, does not and cannot check the number's validity. So there is no API, including Avatcado's, that can look one up, because no queryable registry exists for anyone outside EU customs systems. The 12-character IMxxxyyyyyyz format also falls outside the two-letter country-prefix structure VAT validators are built around: send an IM-prefixed string to Avatcado and you get a 422 invalid_vat_format error with a docs_url, the honest result, rather than a fake valid or invalid verdict. If a customer handed you an IOSS number for B2B purposes, ask for their ordinary national VAT number instead.

Does VIES cover OSS registration numbers?

It depends on the scheme, and the three schemes behave differently. Union scheme OSS registration creates no new number at all: per the Commission's registration guidance, the business's existing national VAT identification number is used, so VIES already covers it through the normal lookup, and there is nothing extra to check. The non-Union scheme, for businesses with no EU establishment, does issue a separate identifier in the format EUxxxyyyyyz, and that one is not in VIES: it is not a member-state-prefixed number, so it falls outside the two-letter country-code structure VIES is built around. The import scheme (IOSS) issues an IMxxxyyyyyyz number that lives in a non-public database only customs authorities can query. The practical rule: if the string starts with a real member state code, validate it through VIES as usual; if it starts with EU or IM, no public checker exists, and a VAT validation endpoint will correctly reject the format.

Why isn't there a public IOSS number checker?

The European Commission's explanatory notes on the VAT e-commerce rules state plainly that the database of IOSS VAT identification numbers is not public, and that even the party filing the customs declaration, such as a postal operator, express carrier, or customs agent, cannot check a number's validity themselves; only Member State customs systems perform that electronic check when the number appears on a declaration. The design follows from what the number is for: an IOSS number exists to be quoted on customs declarations so VAT can be collected at checkout instead of on arrival, not to identify a business publicly the way a VAT number does. Publishing a checker would make leaked numbers easier to abuse, which is why the Commission's guidance instead says communication of the number should be kept to the minimum necessary, shared only with supply chain parties who need it for release into free circulation, and points marketplaces toward contractual sanctions for sellers who misuse a shared number.

My EU customer says they're OSS registered. Do I still need to validate their VAT number?

Yes, if you're applying the B2B reverse charge. OSS is a B2C mechanism: all three schemes (Union, non-Union, and import) exist so a seller can declare and pay VAT on consumer sales through one registration, and none of them say anything about who your business customer is, which is the question reverse charge validation answers. Better still, for the Union scheme the OSS registration is the customer's ordinary domestic VAT number anyway, since no separate number is issued, so validating that number through VIES is still the correct and only step for reverse charge purposes. Treat 'we are OSS registered' as reassuring context about the customer's own B2C compliance, not as a substitute for validation: request their national VAT number, validate it (with your own VAT number as requester if you want a consultation number), store the proof, and only then zero-rate the invoice. The OSS claim changes nothing in that flow.

Sources

Try it on a real VAT number

Check any VAT or GST number against the official registry for free, no account needed.

Related guides