What an ABN actually is — and why a checksum matters
An Australian Business Number (ABN) is the 11-digit identifier the Australian Taxation Office issues to every entity carrying on an enterprise in Australia — sole traders, companies, partnerships, trusts, super funds, and most government bodies. It is the number you quote on every tax invoice over A$82.50 and the number every payer must withhold tax against if missing.
What most people don't realise: the last digit is a checksum. Eleven random digits don't form a valid ABN. Only about 1 in 89 random 11-digit strings will pass — the ATO designed it that way so suppliers can catch typos and a class of invoice fraud before the money goes out.
The algorithm (you can verify it by hand)
- Subtract 1 from the first (left-most) digit.
- Multiply each digit by the corresponding weight in the sequence
10, 1, 3, 5, 7, 9, 11, 13, 15, 17, 19. - Add the products.
- The ABN is valid if the sum is exactly divisible by 89 (remainder zero).
The Australian Taxation Office publishes the algorithm here: abr.business.gov.au/Help/AbnFormat. We implement it verbatim in JavaScript — no API call, no data ever leaves your browser. Our test suite locks the implementation against the ATO's own published ABN (51 824 753 556) so we don't drift.
ABN vs ACN — why this tool checks both
People mix them up constantly because both relate to Australian companies:
- ABN — 11 digits. Issued by the ATO. Every entity that does business in Australia.
- ACN — 9 digits. Issued by ASIC. Companies only (not sole traders, trusts, or partnerships).
A registered Australian company has both: an ACN given by ASIC at incorporation, and an ABN given by the ATO when it registers for tax. The ABN of a company always ends in the company's ACNwith two extra digits prepended. So Telstra Corporation Limited's ACN is 051 775 556 and its ABN is 33 051 775 556.
ACN has its own (simpler) check-digit algorithm published by ASIC: multiply the first 8 digits by weights 8, 7, 6, 5, 4, 3, 2, 1, sum, take (10 − sum mod 10) mod 10, that's the check digit. We run both here — paste any 9-digit number and we'll validate it as an ACN.
Why a local checksum matters before hitting any API
Three reasons:
- Catches typos at the form layer. A customer types one digit wrong in your supplier portal. The checksum catches it before you send a payment to a wrong (or nonexistent) entity. Roughly 88 out of 89 typos are caught locally — without a round-trip to a government server.
- Saves API quota. The official ABR Web Services are free but rate-limited. Don't spend quota on inputs you know are bunk.
- Works offline.You can validate during data cleanup runs, in batch ETL jobs, or while you're on a flight.
From bank statement to ABN: a workflow
A common reason people land here: they've exported a list of payees from their bank statement and want to confirm the supplier ABNs match what's on file. The clean way to do that is:
- Convert your bank statement PDF into a spreadsheet using our bank statement converter. You get a clean CSV with date, description, amount, and balance for every transaction.
- Where the description contains an ABN (many AU bank payees do show it), copy the column of ABNs and paste it into this tool — one ABN per line. We'll flag any that fail the checksum so you can chase them up.
- For valid ABNs, click Look up on ABRto see the registered entity name on the public Australian Business Register. That's a free, no-account government service.
What this tool does not do
It does not call any third-party API, including the ABR. We made that choice deliberately:
- We don't need a GUID, you don't need an account, and your ABN list never leaves the browser.
- For entity-name lookup, we link out to the official ABR public search — that's the canonical source. No need to duplicate it or risk caching a stale name.
- We do not check whether an ABN is currently active or cancelled. The checksum can still pass for a cancelled ABN. For that, use the official ABR site.
- We do not verify the GST registration status. Same reason — that comes from ABR Web Services.
Common reasons a real ABN fails our checker
- Wrong digit count. An ABN is exactly 11 digits. Anything else fails. If your number is 12 digits, the first digit is probably a stray prefix or country code.
- You pasted the ACN by mistake.If it's 9 digits we'll auto-detect that and validate it as an ACN instead.
- You pasted an ARBN. Australian Registered Body Numbers are also 9 digits and use the same check-digit algorithm as an ACN. Our 9-digit checker will accept them.
- OCR'd the wrong character. A "0" vs "O", a "1" vs "l", or two digits transposed. The checksum catches almost all single-digit and adjacent-transposition errors.
For developers
Need to embed ABN validation in your own application? The full algorithm is about 15 lines of JavaScript. The math is identical in any language — Python, Go, Rust, C# all implement it in under 20 lines. Pin a unit test against the ATO's own ABN 51 824 753 556 and against a known-bad value to lock in the implementation.