VAT Validation for Stripe Users: What Stripe Covers and Where You Need Vatly
Stripe is the most popular payment platform for SaaS businesses. It includes built-in VAT validation, but that validation has significant limitations. This guide covers exactly what Stripe validates, what it doesn't, and when you need a standalone VAT validation API alongside Stripe.
What Stripe actually validates
Stripe automatically validates tax IDs against government databases for three regions only:
- EU VAT numbers via VIES
- UK VAT numbers via HMRC
- Australian ABNs via ABR
For all other tax ID types (100+ types across 50+ countries), Stripe only does format validation. It checks if the number matches the expected pattern but does not verify it exists in any government database.
From Stripe's own documentation: "If automatic validation isn't available, you must manually verify these IDs."
Stripe Tax applies reverse charge based on format alone, not validation. A correctly formatted but fake VAT number would still trigger reverse charge in Stripe.
Five gaps in Stripe's VAT validation
No Swiss validation
Stripe stores CH tax IDs but does not validate them against the BFS UID Register. Format check only. If you sell to Swiss businesses, you cannot rely on Stripe to confirm the number is real. See the Swiss VAT validation guide for how the BFS UID Register works.
No Norwegian validation
Same story. NO tax IDs get format-checked, not validated against the Bronnysund Register.
No standalone API
Validation is tied to Stripe's Customer objects. You cannot just call an endpoint with a VAT number and get a result. You need to create or update a Stripe Customer first.
No periodic revalidation
Stripe validates once when the tax ID is added. It does not recheck over time. A VAT number that was valid last year could be revoked today, and Stripe would not know.
No validation outside billing
If you need to validate a VAT number at signup, in a CRM, in a partner onboarding flow, or anywhere outside a Stripe payment context, Stripe cannot help.
When to use Vatly alongside Stripe
- You sell to Swiss or Norwegian businesses (Stripe cannot validate these)
- You need validation at signup before any Stripe interaction
- You need periodic revalidation of existing customer tax IDs
- You use Stripe for payments but need validation in other systems (CRM, onboarding, compliance)
- You want to verify that the number is actually valid, not just correctly formatted
Validate before creating the Stripe customer:
import Vatly from "@vatly/node";
import Stripe from "stripe";
const vatly = new Vatly("vtly_live_your_api_key");
const stripe = new Stripe("sk_live_your_stripe_key");
// Validate before creating the Stripe customer
const { data, error } = await vatly.vat.validate({
vatNumber: customer.vatNumber,
});
if (data?.valid) {
// Safe to apply reverse charge in Stripe
await stripe.customers.update(customerId, {
tax_id_data: [{ type: "eu_vat", value: customer.vatNumber }],
});
}Using both: Vatly for validation, Stripe for billing
Vatly handles the validation (real government database check, all 32 countries). Stripe handles the billing (invoicing, tax calculation, payment collection). The two work together: validate with Vatly first, then pass the validated number to Stripe.
This gives you the best of both: Stripe's billing infrastructure plus Vatly's validation coverage. For a full integration example, see the SaaS billing guide.
Get started
Vatly's free tier includes 500 validations per month with no credit card required. Add real government database validation to your Stripe integration in under 5 minutes.
Read the API documentation for integration details.
Frequently asked questions
Does Stripe validate Swiss VAT numbers?
No. Stripe stores Swiss tax IDs and checks the format, but does not validate them against the BFS UID Register. You need a separate service for real Swiss VAT validation.
Can I use Stripe's tax ID validation as a standalone API?
No. Stripe's validation is tied to their Customer and Invoice objects. You need to create or update a Stripe Customer to trigger validation. Vatly provides a standalone REST endpoint for any VAT/GST number.
Does Stripe revalidate tax IDs over time?
No. Once a tax ID is confirmed as valid or invalid, Stripe does not check it again. VAT numbers can be revoked, so periodic revalidation is recommended.
I only sell to EU and UK businesses. Do I still need Vatly?
If all your customers are EU or UK and you only need validation within Stripe's billing flow, Stripe's built-in validation may be sufficient. Vatly adds value when you need validation outside the billing context, need Swiss or Norwegian coverage, or want periodic revalidation.