Australian ACN check digit
Get the check digit for the first eight digits of an Australian Company Number, or validate all nine: 004 085 61 gets 6, giving 004 085 616. A slip such as 004 085 617 fails before the record is saved. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- Acn
- 004 085 61
- Calculation mode
- Compute
- Input
- 00408561
- Check digit
- 6
- With check
- 004085616
An Australian Company Number (ACN) is a unique nine-digit identifier issued by the Australian Securities and Investments Commission (ASIC) when a company is registered under the Corporations Act. The last digit is a check digit derived from a fixed weighting of the first eight digits under a complement-of-modulo-ten rule, so many single-digit typos and swapped pairs fail validation before a record is saved. This capability computes the ACN check digit for an eight-digit body (with or without the usual three-digit spacing), or validates a full nine-digit ACN that already includes the trailing digit, and it reports bad input instead of silently stripping letters or punctuation.
What the Australian ACN check digit is and how the weights work
An Australian Company Number is a nine-digit code printed on company extract documents, invoices, and ASIC search results, usually grouped as three blocks of three digits (for example 004 085 616). The first eight digits form the body of the number; the ninth digit is not decorative — it is computed so that a weighted sum of those eight body digits, using the fixed multipliers eight, seven, six, five, four, three, two, and one from left to right, yields a value whose complement modulo ten equals the check digit.
After summing digit times weight for each position, the algorithm takes ten minus (sum modulo ten), then reduces modulo ten again so that a remainder of zero maps to check digit zero rather than ten. When someone types 004 085 616 as 004 085 617, the sum no longer matches and validation fails. The same rule catches many single-digit substitutions in ERP imports, company-onboarding forms, and partner master-data files where operators re-key numbers from paper or PDFs.
This tool implements that standard ASIC-style weighting on pure digits after optional space and hyphen stripping. It does not query ASIC, prove that a company exists, or assign a company type — only that the digit string is consistent under the published check algorithm. Compared with the eleven-digit Australian Business Number (ABN) modulus-eighty-nine scheme, the ACN rule is shorter, uses different weights, and places the check digit at the end rather than as two leading digits.
Compared with Luhn mod-10 used on payment cards, the ACN scheme uses a fixed descending weight vector from eight down to one, so you must not reuse a Luhn validator on ACN fields. Knowing which scheme you need avoids false confidence when a general check-digit utility accepts a digit string that is not a well-formed Australian Company Number.
Where ACN check digits fit company, tax, and commercial workflows
Company registries, accounting systems, and e-invoicing platforms store an ACN on every Australian company record; a single mistyped digit during onboarding can link invoices, bank mandates, or legal notices to the wrong entity. Procurement and supplier-onboarding workflows often re-key ACN values from certificates of registration; batch-importing CSV files produces off-by-one errors that a check digit catches before the first purchase order is issued.
Banks and payment gateways that accept Australian company identifiers for KYC or transfer metadata can recompute the check digit without calling an external registry, filtering OCR noise and partial captures early. Product teams that already expose general Luhn or ISO 7064 check tools should still use this ACN-specific capability for Australian company number fields so weights, length bounds, and spaced formatting match the domain.
Do not treat a passing ACN check digit as proof that the company is correctly identified, currently registered with ASIC, solvent, or present in any official registry — it only proves the digit string is consistent under the Australian ACN check algorithm.
What you can do with it
Audit ACN columns in partner and master-data files
Batch-validate every ACN in a CSV import and quarantine rows whose check digit no longer matches the recomputed expected value.
FAQ
What is the Australian ACN check digit?
It is a single trailing digit computed with weights 8,7,6,5,4,3,2,1 over the first eight digits, then the complement of (sum modulo 10), so most single-digit typos break the checksum.
What happens with letters, spaces, or wrong length?
Provide digits 0-9 only (optional spaces); compute needs eight digits and validate needs nine. Failed validation tasks are not billed.
Is the ACN check digit tool free?
The browser tool is free and runs locally.
How is the ACN check digit calculated?
Multiply the eight body digits by eight, seven, six, five, four, three, two and one in turn, then add up the results. Take that total modulo ten, subtract it from ten, and reduce modulo ten once more, so a remainder of zero gives a check digit of zero.
Is the ACN check the same as the ABN check?
No. The eleven-digit ABN uses a modulus eighty-nine rule with its check built into two leading digits, while the nine-digit ACN uses shorter descending weights and puts its check digit at the end. A Luhn validator from payment cards will not do either.
Related tools
For developers — API access
Everything on this page is available programmatically. This section is for teams who want to wire it into their own systems; everyone else can just use the tool above.
API endpoint
Prefer to automate it? One authenticated POST creates the task; the result comes back by webhook or a signed link. The same capability also runs here on the web, by email and from Telegram — and soon from our app too.
Call it from your stack
curl -X POST https://api.kit.forhosting.com/enc/acn-australia \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"acn":"004 085 61"}'const res = await fetch("https://api.kit.forhosting.com/enc/acn-australia", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"acn": "004 085 61"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/enc/acn-australia",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"acn": "004 085 61"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/enc/acn-australia", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"acn":"004 085 61"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"acn":"004 085 61"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/enc/acn-australia", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"acn": "004 085 61"
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "enc.acn_australia",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}The API is asynchronous: the call returns a task_id immediately and the result arrives by webhook. Polling is capped at 1 req/s per task.
Pricing
Published price — no tokens, no invented credits. A failed task is never charged.
Errors
| HTTP | Code | Meaning |
|---|---|---|
401 | unauthorized | Missing or invalid API key. |
402 | insufficient_balance | Your balance doesn't cover the task price. |
404 | unknown_type | That task type doesn't exist. |
429 | rate_limited | Too many requests. Use the webhook instead of polling. |
Technical notes
Use it free in the browser or call the KIT API at the published price; both paths run the same deterministic arithmetic with no network lookup and no company registry of real entities.
How to compute a check digit or validate a full ACN
Send an acn field that contains digits zero through nine, optionally separated by spaces or hyphens in the common three-digit groups. Mode validate expects a complete nine-digit number including the trailing check digit (for example 004085616 or 004 085 616). Empty strings, missing acn, invalid mode values, and wrong lengths (not eight digits for compute, not nine for validate) fail before any weighted sum runs and are not billed. Leading and trailing spaces are trimmed; letters, other punctuation, double hyphens, or leading or trailing hyphens are rejected as malformed input with invalid_input so you never accept a silently cleaned value. Mode compute is the default: provide exactly eight digits without the check digit (for example 00408561 or 004 085 61), and the engine returns check_digit as a one-character string, with_check as the full nine-digit string including that digit, and formatted as the spaced XXX XXX XXX form used on company documents. The response reports valid true when the recomputed check digit matches the last digit, and always includes check_digit, expected_check_digit, payload without the last digit, and formatted for consistent display. Because the path is pure parse with no clock, random source, or network, the same input always yields the same JSON on the free browser tool and on the API. At $0.002 per successful request you can gate bulk supplier imports, company onboarding forms, and ETL jobs without negotiating a custom tier. Prefer compute when you assemble an ACN string from a known eight-digit body; prefer validate when a user, partner file, or scanned label supplies a full number and you need a boolean gate before an ASIC search or internal master-data lookup.
Where ACN check digits fit company, tax, and commercial workflows
Validate mode at entry blocks the save when valid is false and can show expected_check_digit so the clerk corrects the form before the record is written.
Integration use cases
Gate ACN fields on company and supplier forms
When a user submits a full nine-digit ACN, call validate mode and block the save when valid is false, showing expected_check_digit to help correct a single mistype before the ERP record is written.
Compute check digits when minting or completing IDs
From an eight-digit body, call compute mode and store with_check or formatted so every new ACN-like string carries the correct trailing digit before print or export.
Technical questions
How do I compute an ACN check digit with this API?
POST with acn set to the eight body digits (spaces optional) and mode compute (or omit mode). The response includes check_digit, with_check, and formatted as XXX XXX XXX.
How do I validate a full Australian Company Number?
POST with the full nine-digit string and mode validate. The response includes valid, check_digit, expected_check_digit, payload, and formatted.