Skip to main content

EuroValidate Python SDK

Official Python SDK for the EuroValidate API -- validate EU VAT numbers, IBANs, EORI numbers, and look up company data in one unified API.

Installation

pip install eurovalidate

Requires Python 3.9+.

Quick start

from eurovalidate import EuroValidate

client = EuroValidate("ev_live_your_key_here")

# Validate a VAT number
result = client.validate_vat("NL820646660B01")
print(result.valid)          # True
print(result.company_name)   # "COOLBLUE B.V."
print(result.company_address)
print(result.meta.confidence) # "HIGH"

Get your free API key at eurovalidate.com.

Usage

VAT validation

result = client.validate_vat("DE123456789")
print(result.valid, result.company_name, result.country_code)

IBAN validation

result = client.validate_iban("DE89370400440532013000")
print(result.valid, result.bank_name, result.bic)

EORI validation

result = client.validate_eori("DE328169180000040")
print(result.valid, result.company_name)

Company lookup (by LEI)

result = client.lookup_company_by_lei("724500Y6DUVHQD6OXN27")
print(result.company_name, result.registered_address)

VAT rates

rates = client.get_vat_rates("DE")
print(rates.standard_rate)  # 19.0
for rate in rates.rates:
    print(f"{rate.type}: {rate.rate}%")

# All EU countries
all_rates = client.get_all_vat_rates()

Unified validation (multiple checks, one call)

result = client.validate(
    vat="NL820646660B01",
    iban="DE89370400440532013000",
    eori="DE328169180000040",
)
print(result.vat.valid, result.iban.valid, result.eori.valid)

Account info

account = client.get_account()
print(f"Plan: {account.plan}, Used: {account.calls_used}/{account.calls_limit}")

Async client

Every method is also available as an async version:

from eurovalidate import AsyncEuroValidate

async with AsyncEuroValidate("ev_live_your_key_here") as client:
    result = await client.validate_vat("NL820646660B01")
    print(result.valid, result.company_name)

Error handling

The SDK raises typed exceptions for API errors:

from eurovalidate import EuroValidate, AuthError, RateLimitError, ValidationError

client = EuroValidate("ev_live_your_key_here")

try:
    result = client.validate_vat("INVALID")
except AuthError:
    print("Invalid API key")
except RateLimitError as e:
    print(f"Rate limited. Retry after {e.retry_after}s")
    print(f"Limit: {e.rate_limit.limit}, Remaining: {e.rate_limit.remaining}")
except ValidationError as e:
    print(f"Bad input: {e.detail}")

Rate-limited requests (HTTP 429) are automatically retried up to 3 times using the Retry-After header.

Exception hierarchy

  • EuroValidateError -- base class for all API errors
    • AuthError -- 401 Unauthorized
    • RateLimitError -- 429 Too Many Requests
    • ValidationError -- 400 / 422 invalid input
    • NotFoundError -- 404 Not Found
    • ServerError -- 5xx server errors

All exceptions include status_code, detail, request_id, and rate_limit attributes.

Response metadata

Every result includes a meta field with data freshness information:

result = client.validate_vat("NL820646660B01")
print(result.meta.confidence)      # "HIGH", "MEDIUM", "LOW", or "UNKNOWN"
print(result.meta.source)          # "vies_live", "cache", etc.
print(result.meta.cached)          # True/False
print(result.meta.response_time_ms)
print(result.meta.last_verified)   # ISO 8601 timestamp

Configuration

client = EuroValidate(
    "ev_live_your_key_here",
    base_url="https://api.eurovalidate.com",  # default
    timeout=30.0,                              # seconds, default
)

License

MIT

Metadata

Release files for eurovalidate 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for eurovalidate 0.1.0
File Size Uploaded Provenance Actions
eurovalidate-0.1.0.tar.gz 10.6 kB With provenance Details for eurovalidate-0.1.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for eurovalidate 0.1.0
File Interpreter ABI Platform Actions
eurovalidate-0.1.0-py3-none-any.whl Python 3 none any Details for eurovalidate-0.1.0-py3-none-any.whl

Total release size: 23.5 kB

Release files / eurovalidate-0.1.0.tar.gz

Download URL eurovalidate-0.1.0.tar.gz
Size 10.6 kB
Tags Source
SHA-256 checksum
How to use checksums
793943b937a9c005f54b29143026ae9836aecff09dcfcae0101a0f5b4cd0bd6f
BLAKE2b-256 checksum
How to use checksums
d72b3a1b672b103ff15fc980a28143dd394982bab5c8624cc06a2703cb873ea4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Mar 30, 2026.

Transparency log

Release files / eurovalidate-0.1.0-py3-none-any.whl

Download URL eurovalidate-0.1.0-py3-none-any.whl
Size 12.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
2987c54c6624987e050ddeb893515bd1a0a43726010ca98decfe7eb0b3dc1ed5
BLAKE2b-256 checksum
How to use checksums
2542ff5b5e12f2ff3a391b93a938564d3cd673130966bff64d0e00305a5e52d7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Mar 30, 2026.

Transparency log

Security for eurovalidate 0.1.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

Both files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for eurovalidate-0.1.0.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Mar 30, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files Full provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page