Paulund
2016-09-19 #resources

JSON Of VAT Values

If you're working on a project that needs to get VAT rates you may find this repository useful. It's a Github repository located Github VAT Rates Which provides you with a JSON files of all EU VAT rates by country, it will provide you with the standard VAT rate and any reduced rates they may have in that country. You can get the contents of this file and search for the correct country by name, code or country code.


{
	"details": "http://github.com/adamcooke/vat-rates",
	"version": "19267b",
	"rates": [{
		"name": "Germany",
		"code": "DE",
		"country_code": "DE",
		"periods": [{
			"effective_from": "0000-01-01",
			"rates": {
				"reduced": 7.0,
				"standard": 19.0
			}
		}]
	}, {
		"name": "Poland",
		"code": "PL",
		"country_code": "PL",
		"periods": [{
			"effective_from": "0000-01-01",
			"rates": {
				"reduced1": 5.0,
				"reduced2": 8.0,
				"standard": 23.0
			}
		}]
	}, {
		"name": "Hungary",
		"code": "HU",
		"country_code": "HU",
		"periods": [{
			"effective_from": "0000-01-01",
			"rates": {
				"reduced1": 5.0,
				"reduced2": 18.0,
				"standard": 27.0
			}
		}]
	}, {
		"name": "Slovenia",
		"code": "SI",
		"country_code": "SI",
		"periods": [{
			"effective_from": "0000-01-01",
			"rates": {
				"reduced": 9.5,
				"standard": 22.0
			}
		}]
	}, {
		"name": "Slovakia",
		"code": "SK",
		"country_code": "SK",
		"periods": [{
			"effective_from": "0000-01-01",
			"rates": {
				"reduced": 10.0,
				"standard": 20.0
			}
		}]
	}, {
		"name": "Portugal",
		"code": "PT",
		"country_code": "PT",
		"periods": [{
			"effective_from": "0000-01-01",
			"rates": {
				"reduced1": 6.0,
				"reduced2": 13.0,
				"standard": 23.0,
				"parking": 13.0
			}
		}]
	}, {
		"name": "France",
		"code": "FR",
		"country_code": "FR",
		"periods": [{
			"effective_from": "0000-01-01",
			"rates": {
				"super_reduced": 2.1,
				"reduced1": 5.5,
				"reduced2": 10.0,
				"standard": 20.0
			}
		}]
	}, {
		"name": "Denmark",
		"code": "DK",
		"country_code": "DK",
		"periods": [{
			"effective_from": "0000-01-01",
			"rates": {
				"standard": 25.0
			}
		}]
	}, {
		"name": "Romania",
		"code": "RO",
		"country_code": "RO",
		"periods": [{
			"effective_from": "2016-01-01",
			"rates": {
				"reduced1": 5.0,
				"reduced2": 9.0,
				"standard": 20.0
			}
		}, {
			"effective_from": "0000-01-01",
			"rates": {
				"reduced1": 5.0,
				"reduced2": 9.0,
				"standard": 24.0
			}
		}]
	}, {
		"name": "United Kingdom",
		"code": "UK",
		"country_code": "GB",
		"periods": [{
			"effective_from": "2011-01-04",
			"rates": {
				"standard": 20.0,
				"reduced": 5.0
			}
		}]
	}, {
		"name": "Sweden",
		"code": "SE",
		"country_code": "SE",
		"periods": [{
			"effective_from": "0000-01-01",
			"rates": {
				"reduced1": 6.0,
				"reduced2": 12.0,
				"standard": 25.0
			}
		}]
	}, {
		"name": "Croatia",
		"code": "HR",
		"country_code": "HR",
		"periods": [{
			"effective_from": "0000-01-01",
			"rates": {
				"reduced1": 5.0,
				"reduced2": 13.0,
				"standard": 25.0
			}
		}]
	}, {
		"name": "Finland",
		"code": "FI",
		"country_code": "FI",
		"periods": [{
			"effective_from": "0000-01-01",
			"rates": {
				"reduced1": 10.0,
				"reduced2": 14.0,
				"standard": 24.0
			}
		}]
	}, {
		"name": "Netherlands",
		"code": "NL",
		"country_code": "NL",
		"periods": [{
			"effective_from": "2012-10-01",
			"rates": {
				"reduced": 6.0,
				"standard": 21.0
			}
		}, {
			"effective_from": "0000-01-01",
			"rates": {
				"reduced": 6.0,
				"standard": 19.0
			}
		}]
	}, {
		"name": "Luxembourg",
		"code": "LU",
		"country_code": "LU",
		"periods": [{
			"effective_from": "2016-01-01",
			"rates": {
				"super_reduced": 3.0,
				"reduced1": 8.0,
				"standard": 17.0,
				"parking": 13.0
			}
		}, {
			"effective_from": "2015-01-01",
			"rates": {
				"super_reduced": 3.0,
				"reduced1": 8.0,
				"reduced2": 14.0,
				"standard": 17.0,
				"parking": 12.0
			}
		}, {
			"effective_from": "0000-01-01",
			"rates": {
				"super_reduced": 3.0,
				"reduced1": 6.0,
				"reduced2": 12.0,
				"standard": 15.0,
				"parking": 12.0
			}
		}]
	}, {
		"name": "Belgium",
		"code": "BE",
		"country_code": "BE",
		"periods": [{
			"effective_from": "0000-01-01",
			"rates": {
				"reduced1": 6.0,
				"reduced2": 12.0,
				"standard": 21.0,
				"parking": 12.0
			}
		}]
	}, {
		"name": "Spain",
		"code": "ES",
		"country_code": "ES",
		"periods": [{
			"effective_from": "0000-01-01",
			"rates": {
				"super_reduced": 4.0,
				"reduced": 10.0,
				"standard": 21.0
			}
		}]
	}, {
		"name": "Lithuania",
		"code": "LT",
		"country_code": "LT",
		"periods": [{
			"effective_from": "0000-01-01",
			"rates": {
				"reduced1": 5.0,
				"reduced2": 9.0,
				"standard": 21.0
			}
		}]
	}, {
		"name": "Greece",
		"code": "EL",
		"country_code": "GR",
		"periods": [{
			"effective_from": "2016-06-01",
			"rates": {
				"reduced1": 6.0,
				"reduced2": 13.5,
				"standard": 24.0
			}
		}, {
			"effective_from": "2016-01-01",
			"rates": {
				"reduced1": 6.0,
				"reduced2": 13.5,
				"standard": 23.0
			}
		}, {
			"effective_from": "0000-01-01",
			"rates": {
				"reduced1": 6.5,
				"reduced2": 13.0,
				"standard": 23.0
			}
		}]
	}, {
		"name": "Latvia",
		"code": "LV",
		"country_code": "LV",
		"periods": [{
			"effective_from": "0000-01-01",
			"rates": {
				"reduced": 12.0,
				"standard": 21.0
			}
		}]
	}, {
		"name": "Czech Republic",
		"code": "CZ",
		"country_code": "CZ",
		"periods": [{
			"effective_from": "0000-01-01",
			"rates": {
				"reduced": 15.0,
				"standard": 21.0
			}
		}]
	}, {
		"name": "Malta",
		"code": "MT",
		"country_code": "MT",
		"periods": [{
			"effective_from": "0000-01-01",
			"rates": {
				"reduced1": 5.0,
				"reduced2": 7.0,
				"standard": 18.0
			}
		}]
	}, {
		"name": "Italy",
		"code": "IT",
		"country_code": "IT",
		"periods": [{
			"effective_from": "0000-01-01",
			"rates": {
				"super_reduced": 4.0,
				"reduced": 10.0,
				"standard": 22.0
			}
		}]
	}, {
		"name": "Austria",
		"code": "AT",
		"country_code": "AT",
		"periods": [{
			"effective_from": "2016-01-01",
			"rates": {
				"reduced1": 10.0,
				"reduced2": 13.0,
				"standard": 20.0,
				"parking": 13.0
			}
		}, {
			"effective_from": "0000-01-01",
			"rates": {
				"reduced": 10.0,
				"standard": 20.0,
				"parking": 12.0
			}
		}]
	}, {
		"name": "Estonia",
		"code": "EE",
		"country_code": "EE",
		"periods": [{
			"effective_from": "0000-01-01",
			"rates": {
				"reduced": 9.0,
				"standard": 20.0
			}
		}]
	}, {
		"name": "Bulgaria",
		"code": "BG",
		"country_code": "BG",
		"periods": [{
			"effective_from": "0000-01-01",
			"rates": {
				"reduced": 9.0,
				"standard": 20.0
			}
		}]
	}, {
		"name": "Cyprus",
		"code": "CY",
		"country_code": "CY",
		"periods": [{
			"effective_from": "0000-01-01",
			"rates": {
				"reduced1": 5.0,
				"reduced2": 9.0,
				"standard": 19.0
			}
		}]
	}, {
		"name": "Ireland",
		"code": "IE",
		"country_code": "IE",
		"periods": [{
			"effective_from": "0000-01-01",
			"rates": {
				"super_reduced": 4.8,
				"reduced1": 9.0,
				"reduced2": 13.5,
				"standard": 23.0,
				"parking": 13.5
			}
		}]
	}]
}

VAT Rates

Using PHP

If you're using PHP then you can use the function get_file_contents to grab the string of the file and process the VAT rates. Here is a class to get you started.


<?php
/**
 * JSON test
 */

$jsonVat = new JsonVat();
printf('<p>UK VAT Rate - %s%%</p>', $jsonVat->getVat( 'GB' ));
printf('<p>IT VAT Rate - %s%%</p>', $jsonVat->getVat( 'IT' ));
printf('<p>FR VAT Rate - %s%%</p>', $jsonVat->getVat( 'FR' ));
printf('<p>GER VAT Rate - %s%%</p>', $jsonVat->getVat( 'DE' ));

class JsonVat
{
    /**
     * JSON constant for URL
     */
    const url = 'http://jsonvat.com/';

    /**
     * JSON Contents
     *
     * @var bool
     */
    private $jsonContents = false;

    /**
     * Get the json file contents
     *
     * @return bool|string
     */
    private function getFileContents()
    {
        if(!$this->jsonContents)
        {
            $this->jsonContents = file_get_contents( self::url );
        }

        return $this->jsonContents;
    }

    /**
     * Get the VAT rate for a country
     *
     * @param $countryCode
     * @return int
     */
    public function getVat( $countryCode )
    {
        $contents = $this->getFileContents();

        if(!empty( $contents ))
        {
            $jsonContents = json_decode( $contents, true );

            if(!empty($jsonContents['rates']))
            {
                foreach($jsonContents['rates'] as $rate)
                {
                    if($rate['country_code'] == $countryCode)
                    {
                        return $rate['periods'][0]['rates']['standard'];
                    }
                }
            }
        }

        return 0;
    }
}