EU VAT number validation through VIES, the European Commission's VAT Information Exchange System, for Jennifer programs: check a customer's VAT number before invoicing without VAT (reverse charge), with the trader's name and address, and get a consultation number as proof of the check. Numbers are normalised and checked against their country's syntax offline; VIES's faults keep "the member state is down, try later" apart from "the number is wrong".
jvc add @deckyard/viesThis vendors the deck to vendor/<scope>/vies/. Without jvc, unpack the
src/ subtree of a release archive (<scope>-vies-<version>.tar.gz) there.
import "@deckyard/vies/" as vies;
def r as vies.Result init vies.check(vies.client(), "IE", "IE 6388047V");
io.printf("%s %s\n", $r.valid, $r.name);
vies.status(c) reports which member states VIES can reach now.
examples/check.j checks the numbers given as arguments, or asks the
Commission's test service (vies.sandboxClient()) without them.
Jennifer 0.26.0 or newer, with the net capability: the checks are SOAP
requests to the Commission's VIES service, over the bundled soap module,
and status a GET over the bundled http module.
tools/check-all.sh # the full gate, as CI runs it
jennifer test src/vies_test.j # the test overlay
tools/check-docs.sh # docs against the code
tools/pack.sh dist # build the release archiveLGPL-3.0-only, see LICENSE. Copyright (C) 2026 mplx <mplx@jennifer-lang.dev>.
tools/check-headers.sh checks every source file's SPDX header against
deck.toml.