List data sources
Every validation in VerifyVAT is backed by one or more registry integrations.
Some countries have a single authoritative source. Others combine tax authorities, business registers, licensing bodies, or global regulators such as GLEIF.
The /sources endpoint exposes this information programmatically.
It is the registry-centric counterpart to List supported IDs, which focuses on ID types.
Both endpoints describe the same dataset, seen from two different angles.
Use this endpoint when you need clarity on where our engines retrieves data from and how each registry contributes to validation.
If you are using an official SDK, the same data is available through the SDK tooling. See Domain graph for cached and offline access to the data sources catalogue.
When to use /sources
This endpoint helps you answer practical questions such as:
- Which registries power validations for a given market?
- Which data sources have full vs partial coverage?
- Which registries are active right now?
- Which ID types does a registry support?
- How does validation differ across countries or regions?
You can also explore the same dataset visually via the Sources and Coverage pages.
If your integration needs to document data lineage, choose optimal fallbacks, or provide transparency during audits, this endpoint is the right tool.
Calling the endpoint
The endpoint accepts GET or POST requests.
Parameters may be provided via path segments, query parameters, or JSON body fields.
### JSON body (recommended):POST https://api.verifyvat.com/v1/sourcesContent-Type: application/json{ "id": "{id-filter}", "coverage": "{coverage-filter}", "supports": "{supports-filter}", "active": "{bool}", "region": "{region-filter}", "country": "{country-filter}",}
### or with path segments:POST https://api.verifyvat.com/v1/sources/:countryPOST https://api.verifyvat.com/v1/sources/:idPOST https://api.verifyvat.com/v1/sources/:supportsContent-Type: application/json{ ### only coverage is supported in this case: "coverage": "{coverage-filter}"}
### or with query parameters:GET https://api.verifyvat.com/v1/sources?country={country-filter}&coverage={coverage-filter}If no filters are provided, the full data sources catalogue is returned.
Filtering the results
The catalogue supports multiple filters, all of which can be used individually or combined.
| Parameter | What it filters | Notes |
|---|---|---|
id | Registry identifier | Returns only the matching registry, if supported. |
region | Geographic region | e.g. EU, EMEA, APAC, LATAM, NA, WW |
country | Jurisdiction | ISO 3166-1 alpha-2 (e.g. NO, IT, TW, ...). |
coverage | Level of coverage | full or partial |
supports | Supported ID type | Returns only registries supporting the given ID type(s). |
active | Whether the integration is currently enabled. | true, "true", 1 for enabled; false, "false", 0 for disabled. |
All filters (except active) accept a single string, a comma-separated list, or an array of strings:
### a single string:POST { "region": "EMEA" }
### a comma-separated listGET "?country=NO,IT"
### an array of stringsPOST { "supports": ["no_vat", "it_vat"] }Understanding the response
The response uses the common envelope described in Response envelope. Inside data, the sources[] array contains the list of registry integrations matching the filters, or the full list if no filters were applied.
Each entry describes one registry that our engine can query, along with the ID types it supports.
This endpoint does not report runtime connectivity. The
activeflag only indicates that the integration is enabled in the system for your account, not whether the registry responded at this moment. This is important for Bring-Your-Own-License (BYOL) registries, where you may not currently have access.
Source object
| Field | Type | Description |
|---|---|---|
id | string | Internal registry ID. |
acronym | string | Short label for display. |
name | string | Full registry name. |
country | string | ISO-3166-1 alpha-2 country code, or WW for global. |
jurisdictions | string[] | ISO-3166-1 alpha-2 country codes covered by this registry. |
active | boolean | Whether this integration is currently enabled. |
region | string | Geographic region grouping ( EU, EMEA, LATAM, etc.). |
types | array | List of ID types supported by this registry. |
ID type object (inside source.types[])
This corresponds exactly to the entries returned by List supported IDs, minus the sources[] field. It describes the ID types that this registry can contribute evidence for, along with their validation method and coverage level.
| Field | Type | Description |
|---|---|---|
types[*].id | string | Canonical ID type used when calling the verification endpoint. |
types[*].acronym | string | Local short label. |
types[*].name | string | Human-friendly name. |
types[*].format | string[] | Display formats for UX and masking. |
types[*].country | string | ISO 3166-1 alpha-2 country code, or WW for global IDs. |
types[*].region | string | Geographic region grouping ( EU, EMEA, LATAM, etc.). |
types[*].validation | string | registry, syntactic, or simple depending on available validation |
types[*].coverage | string | full or partial depending on whether the source covers the ID type completely. |
Real-world examples
Recommended usage
- Use
/sourcesto anticipate validation behaviour, it lets you see exactly which registries contribute to each ID type. - Pair it with List supported IDs, as the two endpoints describe the same dataset from different perspectives.
- Cache
/sourcesresponses, since registry metadata updates infrequently. - Avoid assuming full coverage, as some registries only confirm validity while others provide full entity profiles.
- Use
regionfilters to bootstrap regional features, helping you scope new markets before routing IDs through/verify.