Norwegian VAT Number Validation API: MVA Format
Norwegian VAT numbers (MVA numbers) are based on the 9-digit organization number issued by the Bronnoysund Register Centre (Enhetsregisteret). This guide covers how Norwegian VAT numbers work, how validation works, and how Avatcado handles it for you.
What is a Norwegian VAT number?
A Norwegian VAT number consists of the country prefix NO, a 9-digit organization number, and the suffix MVA (Merverdiavgift, the Norwegian word for VAT). The full format is NO123456785MVA.
NO- country prefix- 9 digits - organization number (last digit is a MOD11 checksum)
MVA- indicates VAT registration
The organization number itself is assigned by the Bronnoysund Register Centre and is used for all official purposes in Norway, not just VAT. For the full format reference with a free checker, see the Norwegian VAT number format page.
Organization number vs MVA registration
Similar to the Swiss system, having a valid organization number does not mean the entity is VAT-registered. A company must register for MVA separately once their taxable turnover exceeds NOK 50,000. The Enhetsregisteret tracks both: the entity exists in the register, and the registrertIMvaregisteret field indicates whether they are MVA-registered.
Avatcado checks both. valid: true means the entity exists and is actively registered for MVA.
The Bronnoysund Register API
The Bronnoysund Register Centre (Bronnoysundregistrene) provides a free, open REST API for looking up Norwegian organizations at data.brreg.no. No authentication is required.
- Endpoint:
GET https://data.brreg.no/enhetsregisteret/api/enheter/{orgNumber} - Protocol: REST (JSON)
- Authentication: none
- No documented rate limit
- Returns: company name, address, MVA registration status, business activity codes
HTTP status codes, per the Enhetsregisteret API documentation:
- 200 - entity found (check
registrertIMvaregisteretfor VAT status) - 404 - organization number does not exist
- 410 - entity was removed for legal reasons (Fjernet av juridiske arsaker)
MOD11 checksum validation
The 9th digit of a Norwegian organization number is a MOD11 checksum. The algorithm uses weights [3, 2, 7, 6, 5, 4, 3, 2] on digits 1-8. If the remainder is 1, the number is invalid. If the remainder is 0, the check digit is 0.
Validating with Avatcado
Pass any Norwegian VAT number to the same endpoint you use for EU, UK, and Swiss numbers:
curl "https://api.avatcado.com/v1/validate?vat_number=NO923609016MVA" \
-H "Authorization: Bearer avat_live_YOUR_KEY"Response:
{
"data": {
"valid": true,
"vat_number": "NO923609016",
"country_code": "NO",
"company": {
"name": "EQUINOR ASA",
"address": "Forusbeen 50, 4035 STAVANGER"
},
"requested_at": "2026-03-26T12:00:00.000Z"
},
"meta": {
"request_id": "req_abc123"
}
}Avatcado normalizes all input formats:
NO923609016MVA,NO923609016, and923609016with anNOprefix all work- The MVA suffix is stripped automatically
- MOD11 checksum is validated before making the upstream call
- Results are cached for 25 days
SDK integration
The @avatcado/node SDK works the same way for Norwegian numbers as it does for every other country:
import Avatcado from "@avatcado/node";
const avatcado = new Avatcado("avat_live_YOUR_KEY");
const { data, error } = await avatcado.vat.validate({
vatNumber: "NO923609016MVA",
});
if (error) {
console.error(error.code, error.message);
} else if (data.data.valid) {
console.log(data.data.company?.name, data.data.company?.address);
} else {
// Org number exists but is not registered for MVA, or does not exist at all
console.log("Not a valid MVA registration");
}The avatcado Python package mirrors the same shape:
from avatcado import Avatcado
avatcado = Avatcado("avat_live_YOUR_KEY")
result = avatcado.vat.validate("NO923609016MVA")
if result.data.valid:
print(result.data.company.name)Onboarding several Norwegian suppliers at once? Use the batch endpoint (Pro and Business plans) instead of looping single requests:
curl -X POST "https://api.avatcado.com/v1/validate/batch" \
-H "Authorization: Bearer avat_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"vat_numbers": [
"NO923609016MVA",
"NO982463718MVA"
]
}'Limitations
- No consultation numbers. Consultation numbers are a VIES-specific concept for EU cross-border audit proof. Norway is not in VIES, so there is no Norwegian equivalent. Store the raw API response and timestamp as your audit trail instead.
- Undocumented upstream rate limits. The Bronnoysund Register does not publish a rate limit, which means it could change without notice. Avatcado's 25-day cache keeps most repeat lookups from ever reaching the upstream API, insulating you from this uncertainty.
- 410 vs 404 both mean invalid. Per the Enhetsregisteret API documentation, the register distinguishes between an organization number that never existed (404) and an entity that was removed from the register for legal reasons (410). Avatcado normalizes both to
valid: false, so if you need to distinguish "never existed" from "removed" for compliance reasons, you will need to call the Bronnoysund API directly for that specific case. - MVA threshold differs from the EU. The NOK 50,000 registration threshold does not map directly to any EU country's VAT registration threshold. Do not assume a Norwegian counterpart to an EU reverse-charge rule without checking Norwegian tax guidance directly.
Norwegian VAT rates
Norway has three main VAT rates: 25% (standard), 15% (food), and 12% (transport, accommodation, cinema). These are available through the /v1/rates endpoint; see current Norwegian VAT rates for the full breakdown.
Test mode
Use a avat_test_ API key with these magic numbers:
NO123456785- valid, MVA-registeredNO987654325- valid org, not MVA-registeredNO999999999- simulates upstream error (503)
Get your API key and start validating Norwegian VAT numbers in under 2 minutes.
Frequently asked questions
What is a Norwegian MVA number?
An MVA (Merverdiavgift) number is a Norwegian organization number with the prefix NO and suffix MVA. The format is NO + 9 digits + MVA, for example NO923609016MVA. The 9-digit part is the organization number assigned by the Bronnoysund Register Centre.
Is the Bronnoysund Register API free to use?
Yes. The Enhetsregisteret API is completely free, requires no authentication, and has no documented rate limit. It returns JSON and is straightforward to integrate with.
What does a 410 response from the Bronnoysund API mean?
HTTP 410 (Gone) means the organization existed in the register but has been deleted. This is different from 404 (never existed). Avatcado treats both as invalid and returns valid: false.
Can a Norwegian company have an organization number but not be MVA-registered?
Yes. All Norwegian companies get an organization number, but MVA registration is separate and only required when taxable turnover exceeds NOK 50,000. Avatcado checks the registrertIMvaregisteret field and only returns valid: true for actively registered businesses.
Sources
- Enhetsregisteret API documentation Bronnoysund Register Centre, accessed August 13, 2026
- About the organisation number (modulus 11 check digit) Bronnoysund Register Centre, accessed August 13, 2026
- Register in the VAT Register (NOK 50,000 threshold) Norwegian Tax Administration, accessed August 13, 2026
- VAT rates Norwegian Tax Administration, accessed August 13, 2026