Validate an ACN, ABN, ARBN or ARSN
Detect and validate an Australian Company Number, ABN, ARBN or ARSN with the ASIC check digit algorithm, normalise its format and extract the ACN from an ABN.
An Australian Company Number (ACN) is nine digits with a check digit that ASIC calculates using a weighted modulus 10 algorithm; an Australian Business Number (ABN) is eleven digits with a modulus 89 check, and for a company its last nine digits are usually the ACN. Australian Registered Body Numbers (ARBN) and Australian Registered Scheme Numbers (ARSN) use the ACN formula. This endpoint tells you which kind of identifier a string is, whether it passes the check digit test, its normalised and display forms, and the ACN embedded in an ABN, so you can validate user input, clean a customer file or decide which endpoint to call before purchasing an extract. It is free and does not contact ASIC.
https://api.asicapi.dev/v1/identifiers/{value}Path parameters
Prop
Type
Query parameters
Prop
Type
Example request
curl "https://api.asicapi.dev/v1/identifiers/53%20004%20085%20616" \
-H "Authorization: Bearer $ASICAPI_KEY"Example response
{
"object": "identifier",
"input": "53 004 085 616",
"type": "abn",
"valid": true,
"normalized": "53004085616",
"formatted": "53 004 085 616",
"acnFromAbn": "004085616"
}An ACN that fails the check digit test still returns 200 OK:
{
"object": "identifier",
"input": "004085617",
"type": "acn",
"valid": false,
"normalized": "004085617",
"formatted": "004 085 617",
"acnFromAbn": null
}Response fields
| Field | Type | Description |
|---|---|---|
object | string | Always identifier. |
input | string | The value exactly as supplied in the path, after URL decoding. |
type | string | Detected type: acn, abn, arbn, arsn or unknown. Nine-digit inputs are acn unless hint says otherwise; eleven-digit inputs are abn; anything else is unknown. |
valid | boolean | true when the check digit is correct for the detected type. Always false for unknown. |
normalized | string or null | Digits only, with spaces removed. null when type is unknown. |
formatted | string or null | ASIC's display format: nnn nnn nnn for nine-digit numbers, nn nnn nnn nnn for an ABN. null when type is unknown. |
acnFromAbn | string or null | For a valid ABN whose last nine digits pass the ACN check digit test, those nine digits as an ACN. null for other inputs, and for ABNs issued to sole traders, partnerships and trusts, which are not ACN based. |
The ACN check digit
ASIC displays an ACN as three blocks of three digits, but the spaces are not part of the number. The ninth digit is a check digit calculated from the first eight with a modified modulus 10 algorithm. To validate ACN 004 085 616:
- Weight digits one to eight with weights 8, 7, 6, 5, 4, 3, 2, 1.
| Digit | 0 | 0 | 4 | 0 | 8 | 5 | 6 | 1 |
|---|---|---|---|---|---|---|---|---|
| Weight | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 |
| Product | 0 | 0 | 24 | 0 | 32 | 15 | 12 | 1 |
- Sum the products: 0 + 0 + 24 + 0 + 32 + 15 + 12 + 1 = 84.
- Take the remainder after dividing by 10: 84 mod 10 = 4.
- Complement the remainder to 10: 10 - 4 = 6. If the complement is 10, the check digit is 0.
The calculated check digit 6 equals the ninth digit, so 004 085 616 is valid. Changing the last digit to 7 fails the test, which is the 004085617 example above and the identifier used in the acn_invalid error message on company endpoints.
ARBNs and ARSNs are constructed with the same formula. There is nothing in the number itself that distinguishes an ACN from an ARBN or ARSN; the register that issued it does. Pass hint when you know which kind you hold, or let the company endpoint resolve it, since numberType on the response tells you what ASIC issued.
The ABN check digit
An ABN is eleven digits validated with a weighted modulus 89 check:
- Subtract 1 from the first digit.
- Multiply each of the eleven digits by the weights 10, 1, 3, 5, 7, 9, 11, 13, 15, 17, 19.
- Sum the products. The ABN is valid when the sum is divisible by 89.
For the Australian Taxation Office's published example ABN 51 824 753 556:
| Digit | 5 → 4 | 1 | 8 | 2 | 4 | 7 | 5 | 3 | 5 | 5 | 6 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| Weight | 10 | 1 | 3 | 5 | 7 | 9 | 11 | 13 | 15 | 17 | 19 |
| Product | 40 | 1 | 24 | 10 | 28 | 63 | 55 | 39 | 75 | 85 | 114 |
The products sum to 534, and 534 = 6 x 89, so the ABN is valid. Its last nine digits, 824 753 556, do not pass the ACN check (the calculated check digit is 5, not 6), so acnFromAbn is null: this ABN does not belong to a company.
The example response above uses ABN 53 004 085 616. After subtracting 1 from the first digit the products are 40, 3, 0, 0, 28, 0, 88, 65, 90, 17, 114, which sum to 445 = 5 x 89, so the ABN is valid, and its last nine digits are the valid ACN 004 085 616, so acnFromAbn is "004085616".
Valid test ACNs
ASIC publishes the following ACNs as passing the check digit test. They are safe to use in tests and fixtures and are the only ACN-like numbers used in these docs, together with ASIC's public sample company 009 136 109.
| 000 000 019 | 000 250 000 | 000 500 005 | 000 750 005 |
| 001 000 004 | 001 250 004 | 001 500 009 | 001 749 999 |
| 001 999 999 | 002 249 998 | 002 499 998 | 002 749 993 |
| 002 999 993 | 003 249 992 | 003 499 992 | 003 749 988 |
| 003 999 988 | 004 249 987 | 004 499 987 | 004 749 982 |
| 004 999 982 | 005 249 981 | 005 499 981 | 005 749 986 |
| 005 999 977 | 006 249 976 | 006 499 976 | 006 749 980 |
| 006 999 980 | 007 249 989 | 007 499 989 | 007 749 975 |
| 007 999 975 | 008 249 974 | 008 499 974 | 008 749 979 |
| 008 999 979 | 009 249 969 | 009 499 969 | 009 749 964 |
| 009 999 964 | 010 249 966 | 010 499 966 | 010 749 961 |
A valid check digit does not mean a company exists. Most of the numbers above are unallocated. Call GET /v1/companies/{id} to confirm registration, which returns company_not_found for an unallocated ACN.
Errors
Invalid identifiers are not errors. Any input returns 200 OK with valid set accordingly, so a single call handles good and bad values alike. The only errors are platform errors.
| Code | HTTP status | When |
|---|---|---|
validation_error | 422 | hint is not one of acn, arbn, arsn or abn. |
unauthorized | 401 | The API key is missing or invalid. See authentication. |
rate_limited | 429 | You exceeded 600 requests per minute or 20 concurrent requests. |
Notes from the ASIC register
- Spaces are display only. ASIC always prints an ACN as
nnn nnn nnnto aid readability, and the ABR prints an ABN asnn nnn nnn nnn. The inserted blanks are not part of the number. Storenormalizedand renderformatted. - Leading zeros matter. ACNs such as 000 000 019 begin with zeros. Never store an ACN as an integer; keep it as a nine-character string.
- ABNs are not always ACN based. Companies registered with ASIC receive an ABN whose last nine digits are their ACN, which is why ASIC company endpoints accept an ABN in place of an ACN and return
abn_not_acn_basedwhen the embedded digits fail the ACN check. Sole traders, partnerships, trusts and other entities registered by the Australian Business Register have ABNs with no ACN inside. - ABNs come from a different register. ASIC records a company's ABN from a feed supplied by the Australian Business Register. This endpoint checks the ABN's arithmetic only; it does not confirm the ABN is active or who holds it. The company extract's
abnfield shows what ASIC has recorded. - The check digit catches typing errors, not fraud. The modulus 10 test detects most single-digit and transposition mistakes. A number that passes may still be unallocated or belong to a different entity than expected.
- Sandbox. Behaviour is identical with test and live keys; this endpoint never contacts ASIC and is never billed.
Related
ACN, ABN, ARBN and ARSN explained
The differences between the four identifiers and when to use each.
Company details
Fetch a company by ACN, ABN, ARBN or ARSN.
Managed investment schemes
What an ARSN identifies and how schemes appear on the register.
Errors
acn_invalid, abn_invalid, abn_not_acn_based and other identifier errors.
ASIC form codes and descriptions API
List ASIC form codes and descriptions, such as Form 484 change to company details and Form 505 appointment of a liquidator, filtered by ASIC Alert category.
ASIC code tables reference
Every ASIC code table used in company, person and document data: office holder roles, organisation types and statuses, address types, register types, jurisdictions, scheme categories, summary types and form codes.