Validator for european countries VAT numbers for ActiveModel
Ruby JavaScript
Switch branches/tags
Nothing to show
Latest commit cfc07ee Oct 25, 2012 @aurels Merge pull request #5 from jeroenj/formatting
Formatting: removes trailing spaces, adds newlines at end of files



Use this plugin to validate VAT numbers for european countries.

Basic Usage

To validate a model field as a valid intracom VAT number :

validates :vat_number, :vat => true

It may be optional like this :

validates :vat_number, :vat => true, :allow_blank => true

If you want the VAT number's country to match another kind of country field, use the 'country_method' option :

validates :vat_number, :vat => { :country_method => :my_method }

where it is supposed that your model has a method named 'my_method' which returns the country ISO code you want to match. The available country codes available for Europa are: DE, AT, BE, BG, CY, DK, ES, EE, FI, FR, EL, HU, IE, IT, LV, LT, LU, MT, NL, PL, PT, GB, RO, SK, SI, SE and CZ.

Example :

class Invoice < ActiveRecord::Base
  validates :vat_number, :vat => { :country_method => :country_code }

  # Logic to return the country code
  def country_code
    case country.downcase
      when 'belgium' then 'BE'
      when 'france'  then 'FR'
      when 'sweden'  then 'SE'
      # ...
      else nil

Validating the Number at VIES

It's also possible to have the VAT number validated against Europa's VIES webservice. Simply use the :vies option like this :

validates :vat_number, :vat => { :vies => true }

Keep in mind that the webservice might be offline at some time for some countries. Check the VIES FAQ for more information about that.


In your project's Gemfile :

gem 'vat_validator'


If you want to run the specs :

rake spec


This plugin in released under MIT license by Aurélien Malisart (see MIT-LICENSE file).