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.
- General Overview
- Announcements
- Authentication
- Endpoints Summary
- Expected Outcomes
- Onboarding Requirements
- Known Limitations
- Teams
Business Accounts
-
Production
/api/v2/business-accounts -
Sandbox
/api/test/v2/business-accounts -
MethodsPOST , GET
-
Integration PartnerAnna 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
- 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 arequestIdin response. - 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.
- Poll for status — Use the status endpoint (
GET /api/v2/business-accounts/status/{requestId}) to check progress. Thestatusfield moves fromnew→sent→finished(activated) orrejected. 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. - Account activated — When the account is activated, the status endpoint returns the real
bsbandaccountNumber. 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.
{
"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.
{
"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 (new → sent → finished / 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 unlessaccountInformation.abnis provided.
accountInformation.abn- string, exactly 11 digits- Australian Business Number, digits only.
Mandatory: YES unlessaccountInformation.acnis 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
trueif the office holder was born overseas. When set,localityQualifieris treated as a country code. When omitted orfalse, 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.
ORDfor 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