API Reference - Business Accounts

Business Accounts endpoint. The Business API suite exposes registration, lodgement, lookup and related functions that can be used for a variety of purposes. For the latest release information please check our release notes.

Business Accounts

Endpoint Overview
  • Production
    /api/v2/business-accounts
  • Sandbox
    /api/test/v2/business-accounts
  • Methods
    POST , GET
  • Integration Partner
    Anna Money Australia
  • Use this endpoint to submit a business account opening application on behalf of your client. The integration partner will contact the applicant directly to complete identity verification (KYC). Use the status endpoint to poll the progress of a submission. API calls are free on all BAPI plans — no charge per submission.

How It Works

  1. Submit the application — POST the payload to /api/v2/business-accounts. BAPI validates the request and immediately queues it for submission to Anna Money. You receive a requestId in response.
  2. Anna Money processes the application — The payload is forwarded to Anna Money's API. Anna Money contacts the applicant directly by email and SMS to complete identity verification (KYC). This may take minutes to days depending on the applicant's responsiveness.
  3. Poll for status — Use the status endpoint (GET /api/v2/business-accounts/status/{requestId}) to check progress. The status field moves from newsentfinished (activated) or rejected. Poll no more frequently than once every 15 minutes — KYC is a manual process and activation typically takes 1–2 business days depending on the applicant's responsiveness.
  4. Account activated — When the account is activated, the status endpoint returns the real bsb and accountNumber. Until activation they are returned as ******. Your BAPI account is automatically credited $50.00 which offsets future API charges.

Business Account Application Request

A POST request to this endpoint submits a business account opening application. Returns a JSON response with the request ID.

/api/v2/business-accounts
POST
{
    "generalInformation": {
        "companyName": "MY DEMO COMPANY PTY LTD",
        "companyType": "APTY",
        "companyClass": "LMSG",
        "companySubClass": "PROP",
        "jurisdiction": "NSW"
    },
    "accountInformation": {
        "acn": "123456789",
        "abn": "51123456789",
        "directorsContacts": [
            {
                "familyName": "DOE",
                "givenName1": "JOHN",
                "givenName2": "",
                "givenName3": "",
                "email": "[email protected]",
                "mobile": "+61400000000"
            }
        ],
        "primaryDirector": {
            "familyName": "DOE",
            "givenName1": "JOHN"
        }
    },
    "registeredOffice": {
        "address": {
            "careOf": "",
            "line2": "UNIT 4",
            "street": "9 KENT STREET",
            "locality": "SYDNEY",
            "state": "NSW",
            "postcode": "2000",
            "country": ""
        }
    },
    "principalPlaceOfBusiness": {
        "address": {
            "careOf": "",
            "line2": "UNIT 4",
            "street": "9 KENT STREET",
            "locality": "SYDNEY",
            "state": "NSW",
            "postcode": "2000",
            "country": ""
        }
    },
    "officeHolders": [
        {
            "name": {
                "familyName": "DOE",
                "givenName1": "JOHN",
                "givenName2": "",
                "givenName3": ""
            },
            "birthDetails": {
                "date": "1980-06-15",
                "locality": "SYDNEY",
                "localityQualifier": "NSW",
                "intlIndicator": false
            },
            "address": {
                "careOf": "",
                "line2": "UNIT 4",
                "street": "9 KENT STREET",
                "locality": "SYDNEY",
                "state": "NSW",
                "postcode": "2000",
                "country": ""
            },
            "roles": ["DIR"]
        }
    ],
    "shareAllocation": [
        {
            "classCode": "ORD",
            "numberIssued": "100",
            "holdingOwners": [
                {
                    "individual": {
                        "familyName": "DOE",
                        "givenName1": "JOHN",
                        "givenName2": "",
                        "givenName3": ""
                    },
                    "organisation": {"name": "", "acn": ""},
                    "address": {
                        "careOf": "",
                        "line2": "UNIT 4",
                        "street": "9 KENT STREET",
                        "locality": "SYDNEY",
                        "state": "NSW",
                        "postcode": "2000",
                        "country": ""
                    }
                }
            ]
        }
    ],
    "applicant": {
        "individual": {
            "familyName": "DOE",
            "givenName1": "JOHN",
            "givenName2": "",
            "givenName3": ""
        },
        "organisation": {"name": "", "acn": ""},
        "organisationSignatoryIndividual": {
            "familyName": "DOE",
            "givenName1": "JOHN",
            "givenName2": "",
            "givenName3": ""
        }
    }
}

Application Response

{
    "requestId": 5001,
    "status": "new"
}

If a non-terminal submission already exists for this ACN or ABN, the existing request ID and its current status are returned instead of creating a duplicate.

Status Request & Response

A GET request to this endpoint returns the current status of a business account application.

/api/v2/business-accounts/status/{requestId}
GET
{
    "requestId": 5001,
    "status": "sent",
    "entityName": "MY DEMO COMPANY PTY LTD",
    "acn": "123456789",
    "abn": null,
    "bsb": "******",
    "accountNumber": "******",
    "activatedAt": null,
    "submittedAt": "2026-03-09 14:30:00"
}

The status field reflects the BAPI request lifecycle (newsentfinished / rejected). The bsb and accountNumber fields are masked as ****** until the account is activated. Once status is finished, these fields contain the real BSB and account number — store them at that point.

Validation Rules

The payload is passed directly to the Anna Money API. All fields follow the Anna Money schema.

generalInformation - object
General company information.
Mandatory: YES
generalInformation.companyName - string, max 255 characters
Full legal name of the company.
Mandatory: YES
generalInformation.companyType - string
Company type code. E.g. APTY (Australian proprietary).
Mandatory: YES
generalInformation.companyClass - string
Company class code. E.g. LMSG (limited by shares).
Mandatory: YES
generalInformation.companySubClass - string
Company sub-class code. E.g. PROP (proprietary).
Mandatory: YES
generalInformation.jurisdiction - string
State/territory of incorporation. One of: ACT, NSW, NT, QLD, SA, TAS, VIC, WA, CCK, CXR, JBT, NFK.
Mandatory: YES
accountInformation - object
Company identification and director contact details.
Mandatory: YES
accountInformation.acn - string, exactly 9 digits
Australian Company Number, digits only.
Mandatory: YES unless accountInformation.abn is provided.
accountInformation.abn - string, exactly 11 digits
Australian Business Number, digits only.
Mandatory: YES unless accountInformation.acn is provided.
accountInformation.directorsContacts - array, min 1 item
List of director contact objects.
Mandatory: YES
accountInformation.directorsContacts[].familyName - string
Director's family name (surname), uppercase.
Mandatory: YES
accountInformation.directorsContacts[].givenName1 - string
Director's first given name, uppercase.
Mandatory: YES
accountInformation.directorsContacts[].givenName2 - string
Director's second given name.
Mandatory: NO
accountInformation.directorsContacts[].givenName3 - string
Director's third given name.
Mandatory: NO
accountInformation.directorsContacts[].email - string, valid email
Director's email address. Anna Money will use this for KYC verification.
Mandatory: YES
accountInformation.directorsContacts[].mobile - string
Director's mobile number. Anna Money may use this for SMS-based verification.
Mandatory: YES
accountInformation.primaryDirector - object
Name of the primary director (must appear in directorsContacts).
Mandatory: YES
accountInformation.primaryDirector.familyName - string
Primary director's family name.
Mandatory: YES
accountInformation.primaryDirector.givenName1 - string
Primary director's first given name.
Mandatory: YES
registeredOffice - object
The company's registered office.
Mandatory: YES
registeredOffice.address.street - string
Street address line 1, uppercase.
Mandatory: YES
registeredOffice.address.line2 - string
Street address line 2 (unit, suite, level, etc.).
Mandatory: NO
registeredOffice.address.locality - string
Suburb or locality, uppercase.
Mandatory: YES
registeredOffice.address.state - string
State or territory code, uppercase. E.g. NSW, VIC, QLD.
Mandatory: YES
registeredOffice.address.postcode - string, exactly 4 digits
Australian postcode.
Mandatory: YES
principalPlaceOfBusiness - object
Principal place of business, if different from the registered office. Same address structure as registeredOffice.
Mandatory: NO
officeHolders - array, min 1 item
List of company office holders (directors, secretaries, etc.).
Mandatory: YES
officeHolders[].name.familyName - string
Office holder's family name.
Mandatory: YES
officeHolders[].name.givenName1 - string
Office holder's first given name.
Mandatory: YES
officeHolders[].birthDetails.date - string, format YYYY-MM-DD
Office holder's date of birth.
Mandatory: YES
officeHolders[].birthDetails.locality - string
Town or city of birth.
Mandatory: NO
officeHolders[].birthDetails.localityQualifier - string
State or territory of birth (for Australian born) or 2-letter ISO country code (for overseas born). E.g. VIC, GB.
Mandatory: NO
officeHolders[].birthDetails.intlIndicator - boolean
Set to true if the office holder was born overseas. When set, localityQualifier is treated as a country code. When omitted or false, Australian state codes take priority.
Mandatory: NO
officeHolders[].address - object
Office holder's residential address. Same structure as registeredOffice.address.
Mandatory: YES
officeHolders[].roles - array of strings
Role codes for this office holder. E.g. ["DIR"] for director, ["SEC"] for secretary.
Mandatory: YES
shareAllocation - array, min 1 item
Share classes and their holders.
Mandatory: YES
shareAllocation[].classCode - string
Share class code. E.g. ORD for ordinary shares.
Mandatory: YES
shareAllocation[].numberIssued - string
Number of shares issued in this class, as a string. E.g. "100".
Mandatory: YES
shareAllocation[].holdingOwners - array, min 1 item
List of share owners.
Mandatory: YES
shareAllocation[].holdingOwners[].individual.familyName - string
Shareholder's family name.
Mandatory: YES
shareAllocation[].holdingOwners[].individual.givenName1 - string
Shareholder's first given name.
Mandatory: YES
shareAllocation[].holdingOwners[].individual.givenName2/3 - string
Shareholder's additional given names.
Mandatory: NO
shareAllocation[].holdingOwners[].address - object
Shareholder's address. Same structure as registeredOffice.address (street, locality, state, postcode required; country can be "").
Mandatory: YES
applicant - object
Details of the person lodging the application.
Mandatory: YES
applicant.individual.familyName - string
Applicant's family name.
Mandatory: YES
applicant.individual.givenName1 - string
Applicant's first given name.
Mandatory: YES
applicant.organisationSignatoryIndividual.familyName - string
Signatory's family name (typically same as applicant).
Mandatory: YES
applicant.organisationSignatoryIndividual.givenName1 - string
Signatory's first given name.
Mandatory: YES