DEV Community

Derrick
Derrick

Posted on

How China's company registration code uses ISO 7064 check digits (and why it matters for importers)

If you've ever sourced products from China, you've probably seen an 18-character code on your supplier's business licence. It looks something like this:

91440300MA5FJK2W30

This is the Unified Social Credit Identifier (USCI) — China's equivalent of a company registration number. And buried in its last character is a check digit based on ISO 7064 Mod 31-3.

What the code tells you

The 18 characters encode specific information:

  • Position 1: Registration authority type
  • Position 2: Organization category
  • Positions 3-9: Regional code (maps to province/city/district)
  • Positions 10-17: Organization identifier
  • Position 18: Check digit (ISO 7064 Mod 31-3)

The check digit math

The validation uses a weighted sum mod 31, with weights cycling through powers of 3. Here's a JavaScript implementation:

function validateUSCI(code) {
  const CHARS = '0123456789ABCDEFGHJKLMNPQRTUWXY';
  const WEIGHTS = [1,3,9,27,19,26,16,17,20,29,25,13,8,24,10,30,28];

  let sum = 0;
  for (let i = 0; i < 17; i++) {
    sum += CHARS.indexOf(code[i]) * WEIGHTS[i];
  }
  const remainder = sum % 31;
  const expected = remainder === 0 ? '0' : CHARS[31 - remainder];
  return expected === code[17];
}
Enter fullscreen mode Exit fullscreen mode

Note: USCI uses a custom character set — no I, O, S, V, Z (to avoid visual confusion with 1, 0, 5, U, 2).

How well does it work?

I ran an exhaustive test: for every position in every sample code, I substituted every possible character and checked whether the check digit caught the error.

Result: 100% detection of single-character substitutions across 2.9 million simulated errors.

For comparison, the US VIN (Vehicle Identification Number) check digit only catches 92.5% of single-character errors.

The full dataset is on Zenodo: https://zenodo.org/records/15589531

Why this matters

If a supplier sends you a business licence with a typo in the registration code — or a completely fabricated code — the check digit catches it instantly, before you spend time on a manual lookup.

Some other findings from our research:

  • 42.5% of NHTSA-registered Chinese manufacturers can't be found by English name alone in China's registry
  • 25.4% of China's "little giant" manufacturers don't have import/export in their registered business scope
  • 53.4% of those manufacturers have changed their company name at least once

I built a free tool that does this validation plus a manual cross-reference against official Chinese registry data:

https://currawongweb.com/verify/

The research papers and datasets are all open access. Happy to answer questions about the methodology.

Top comments (0)