DEV Community

Alexander Nitrovich
Alexander Nitrovich

Posted on Originally published at blog.eurovalidate.com

Validate EORI numbers in Python

Introduction

EORI (Economic Operators Registration and Identification) numbers are crucial identifiers for businesses dealing in international trade within the EU. Validating EORI numbers is essential for ensuring compliance with trade regulations. Python, with its powerful libraries and simplicity, is an excellent choice for handling such validations efficiently. In this article, we will guide you through validating EORI numbers using Python, complete with practical code examples and integration tips.

Understanding EORI Numbers

An EORI number is a unique identifier assigned to businesses operating across the EU. Typically, it comprises a country's ISO code (two letters) followed by a series of digits. Common challenges in EORI validation involve accommodating the varying length and format requirements set by different countries. From a regulatory standpoint, accurate validation is critical; technically, this is achieved through pattern matching and format verification.

Setting Up Your Python Environment

Before diving into the code, ensure your environment is ready:

  • Libraries: You need the re module for regex operations.
  • Dependencies: Python 3.x (preferably the latest version).

Project Structure:

eori_validation/
│── eori_validator.py
│── tests/
└── __init__.py
Enter fullscreen mode Exit fullscreen mode

Implementing EORI Validation in Python

Here's your step-by-step guide to implementing EORI number validation in Python:

Basic EORI Validation Function Using Regex

import re

def validate_eori(eori_number: str) -> bool:
    # Regex for EORI number: ISO country code 2 letters, followed by 8-15 digits.
    pattern = r'^[A-Z]{2}\d{8,15}$'
    if not eori_number:
        return False
    match = re.match(pattern, eori_number)
    return bool(match)

# Example usage
if __name__ == "__main__":
    sample_eori = "NL820646660B01"
    if validate_eori(sample_eori):
        print("EORI number is valid.")
    else:
        print("Invalid EORI number.")
Enter fullscreen mode Exit fullscreen mode

This function checks the format of the EORI number using a regular expression tailored for typical structures.

Testing Your EORI Validation Function

Testing ensures reliability. Python’s unittest framework is suitable for this purpose.

import unittest

class TestEORIValidation(unittest.TestCase):
    def test_valid_eori(self):
        self.assertTrue(validate_eori("FR40303265045"))

    def test_invalid_eori_format(self):
        self.assertFalse(validate_eori("F123456789012"))

    def test_empty_string(self):
        self.assertFalse(validate_eori(""))

if __name__ == "__main__":
    unittest.main()
Enter fullscreen mode Exit fullscreen mode

This test suite covers scenarios, including valid EORI numbers, malformed formats, and empty strings.

Integrating with Your API

To integrate this validation logic into an API service, consider error handling and edge cases:

  • Endpoint: POST the EORI number to your validation endpoint.
  • Error Handling: Return descriptive errors for invalid EORI, maintaining clarity for users.

Example integration with our API:

curl -X POST https://api.eurovalidate.com/v1/validate -d '{"eori_number":"DE89370400440532013000"}' -H "Authorization: Bearer YOUR_API_KEY"
Enter fullscreen mode Exit fullscreen mode
const eurovalidate = require('@eurovalidate/sdk');

async function validateEORI(apiKey, eori) {
    const result = await eurovalidate.validateEORI(apiKey, eori);
    console.log(result);
}

validateEORI('YOUR_API_KEY', 'NL820646660B01');
Enter fullscreen mode Exit fullscreen mode

This setup allows seamless validation within an API, offering immediate feedback.

Conclusion & Next Steps

In this guide, we've explored how to validate EORI numbers in Python - covering everything from regex implementation to API integration. As you extend your validation logic, consider adding more compliance checks and leveraging APIs for scalable solutions.

Ready to simplify your trade compliance workflows? Sign up for our developer-friendly API platform today and integrate robust EORI validation into your application in minutes!

For more information, refer to our API documentation. Get your free API key and start validating EORI numbers seamlessly.

Example valid API response:

{
  "vat_number": "NL820646660B01",
  "country_code": "NL",
  "status": "valid",
  "company_name": "Company B.V.",
  "company_address": "123 EuroStreet, Amsterdam, Netherlands",
  "request_id": "xyz123",
  "meta": {
    "confidence": "high",
    "source": "official_db",
    "cached": false,
    "response_time_ms": 120
  }
}
Enter fullscreen mode Exit fullscreen mode

Example invalid API response:

{
  "vat_number": "INVALID",
  "country_code": "",
  "status": "invalid",
  "company_name": "",
  "company_address": "",
  "request_id": "abc456",
  "meta": {
    "confidence": "low",
    "source": "not_found",
    "cached": false,
    "response_time_ms": 150
  }
}
Enter fullscreen mode Exit fullscreen mode

By following these steps, you've laid a solid foundation for efficient EORI validation, vital for regulatory compliance and seamless trade operations. For advanced setups, explore more in our documentation.

Top comments (0)