# VIES VAT number validation in Microsoft Dynamics

Source: https://veriport.io/guides/vies-vat-validation-microsoft-dynamics (published 2026-11-12)

Which Dynamics you run decides the answer. Business Central (and NAV before it) ships its own VIES check: turn it on and use it. Dynamics GP has no VIES check in Microsoft’s documentation, and Finance and Operations (the former AX) validates the format and check digits of registration IDs without asking VIES. For those, and for what Business Central does not do (a dated answer to fall back on when a member state is down), a VIES check is one HTTPS call from the integration you already have.

- Business Central: the « EU VAT Reg. No. Validation Service » on the Service Connections page, free, no sign-up; it checks customers, vendors and contacts and writes a VAT Registration Log with a Request Identifier.
- Business Central can also compare name, street, city and post code with what VIES returns (validation templates per country).
- When VIES is down, Microsoft’s page asks you to check on the VIES website and attach the result yourself: there is no cache or retry.
- Dynamics GP: no VIES feature in Microsoft’s documentation. Finance and Operations: format and check-digit rules for registration IDs, no VIES call documented.

## What each version does today

Read on Microsoft Learn on 12 November 2026.

| Version | VIES check built in? | What to do |
|---|---|---|
| Business Central | Yes: EU VAT Reg. No. Validation Service, log with Request Identifier | Enable it (Service Connections, Set Default Endpoint, Enabled; admin permission). Add a fallback for outages if invoices must not wait. |
| NAV 2016 and later | Yes: VAT Reg. No. Validation URL in General Ledger Setup, VAT Registration Log | As Business Central. |
| Finance and Operations (AX) | No VIES call documented; format and check digits only | Call VIES from an integration (a batch job or a service called on customer creation). |
| Dynamics GP | Nothing documented by Microsoft | Call VIES from an integration or a third-party add-on. |

## Where an API call fits

Three cases: Finance and Operations and GP, which have no VIES check; Business Central when a member state is down at the moment you create the customer or post the invoice; and any version where you want the same check, logged the same way, across several systems (ERP, web shop, billing). The call below is plain .NET, so it fits an Azure Function, a GP eConnect integration or an F&O custom service alike.

```csharp
using System.Net.Http.Headers;
using System.Text.Json;

static readonly HttpClient Http = new() { BaseAddress = new Uri("https://veriport.io/api/v1/") };

public static async Task<JsonElement> ValidateVat(string vatNumber, string? requester = null)
{
    var url = $"vat/validate?number={Uri.EscapeDataString(vatNumber)}"
            + (requester is null ? "" : $"&requester={Uri.EscapeDataString(requester)}");
    using var req = new HttpRequestMessage(HttpMethod.Get, url);
    req.Headers.Authorization = new AuthenticationHeaderValue("Bearer", Environment.GetEnvironmentVariable("VERIPORT_KEY"));
    using var res = await Http.SendAsync(req);
    var body = JsonDocument.Parse(await res.Content.ReadAsStringAsync()).RootElement.Clone();
    // 503 vies_unavailable with no cached answer: retry after body.retryAfter seconds; never treat it as "invalid".
    if (!res.IsSuccessStatusCode) throw new InvalidOperationException(body.GetProperty("code").GetString());
    return body; // valid, requestDate, source.kind, source.stale, consultationNumber
}
```

## What to keep with the customer record

Business Central keeps its own log; elsewhere, keep at least these fields from the answer next to the customer, with the date you used them for an invoice.

| Field | Why |
|---|---|
| `valid` | The VIES answer for the number on the day asked. |
| `requestDate`, `source.checkedAt` | When VIES answered (live) or when the cached answer was obtained. |
| `source.kind`, `source.stale` | `live` or `cache`; `stale: true` when the member state was down and a dated earlier answer was served. |
| `consultationNumber` | The Commission’s reference for this check, when you sent `requester` (your own VAT number) on a paid tier. |
| `name`, `address` | What the member state publishes; Germany and a few others publish neither. |

## Questions

### Should a Business Central user use this instead of the built-in service?

No, not instead: the built-in service is free and logs the check where your team already looks. Use the API where Business Central stops: an outage of one member state (the API serves a dated earlier answer marked stale, rather than nothing), or one check shared with systems outside Dynamics.

### Does the Business Central service send encrypted requests?

Microsoft’s page says the service uses the http protocol and that data sent through it is not encrypted. The Veriport API is HTTPS only.

### Is there a Dynamics app for Veriport?

No. The API is plain HTTPS and JSON with an OpenAPI document, so any integration layer that can make an HTTP request can call it.

## Read next

- [VIES is down: validate anyway](https://veriport.io/guides/vies-down-validate-eu-vat-number-anyway)
- [Validate EU VAT numbers in Node, Python and PHP](https://veriport.io/guides/validate-eu-vat-number-node-python-php)
- [Reference: GET /vat/validate](https://veriport.io/docs/vat-validation)
- [Is VIES down? Availability by member state](https://veriport.io/vies-status)

## Sources

- Business Central: validate VAT registration numbers (EU VAT Reg. No. Validation Service, VAT Registration Log, validation templates) — https://learn.microsoft.com/en-us/dynamics365/business-central/finance-how-validate-vat-registration-number (2026-11-12)
- Dynamics NAV 2016: VAT Reg. No. Validation URL and the VAT Registration Log — https://learn.microsoft.com/en-us/previous-versions/dynamicsnav-2016/dn762368(v=nav.90) (2026-11-12)
- Dynamics 365 Finance and Operations: registration IDs (validation rules including check digits) — https://learn.microsoft.com/en-us/dynamics365/fin-ops-core/dev-itpro/organization-administration/registration-ids (2026-11-12)
- VIES on-the-Web endpoint: OpenAPI contract (POST /check-vat-number, GET /check-status; requester fields for the consultation number) — https://ec.europa.eu/assets/taxud/vow-information/swagger_publicVAT.yaml (2026-11-12)
