Australian Company Number (ACN) Validation

Every company in Australia is issued with an Australian Company Number by the Australian Securities and Investments Commission (ASIC) when the company is registered. An ACN can only be assigned to a business that registers as a company, whereas an ABN can be issued to all business types including sole trader and partnership registrations.

The ACN is a nine digit number with the last digit being a check digit calculated using a modified modulus 10 calculation.

ASIC has adopted a convention of always printing and displaying the ACN in the format nnn nnn nnn, that is three blocks of three characters separated by a blank. This is to assist readability and the inserted blanks do not form part of the ACN.

Note that Australian Registered Body Numbers (ARBNs) and Australian Registered Scheme Numbers (ARSNs) are constructed using the same formula.

Reference

See http://www.asic.gov.au/asic/asic.nsf/byheadline/Australian+Company+Number+(ACN)+Check+Digit

Try It!

Sample Code

//   ValidateACN
//     Checks ACN for validity using the published 
//     ACN checksum algorithm.
//     http://www.asic.gov.au/asic/asic.nsf/byheadline/Australian+Company+Number+(ACN)+Check+Digit
//     and http://www.paulferrett.com/2009/validating-abns-and-acns/
// 
//     Returns: true if the ACN is valid, false otherwise.
//      Source: http://www.clearwater.com.au/code
//      Author: Guy Carpenter
//     License: The author claims no rights to this code.  
//              Use it as you wish.

function ValidateACN($acn)
{
    $weights = array(8,7,6,5,4,3,2,1);

    // strip anything other than digits
    $acn = preg_replace("/[^\d]/","",$acn);

    // check length is 9 digits
    if (strlen($acn)==9) {
        // apply ato check method 
        $sum = 0;
        foreach ($weights as $position=>$weight) {
            $sum += $weight * $acn[$position];
        }
        $check = (10 - ($sum % 10)) % 10;
        return $acn[8] == $check;
    } 
    return false;
}

comments powered by Disqus