abn-entity-lookup
SKILL.md
ABN Entity Lookup Skill
Queries the Australian Business Register (ABR) to validate ABNs, retrieve entity names, determine entity types, check GST registration status, and verify active/cancelled status. Essential for contractor deeming analysis, payroll tax compliance, and entity type determination.
When to Use
- Validating a contractor's ABN before classifying payments
- Determining entity type (company, trust, sole trader, partnership) for tax rate selection
- Checking GST registration status for input tax credit eligibility
- Verifying ABN is active (not cancelled) before processing payments
- Populating entity details for new Xero organisation connections
- Cross-referencing Xero contact ABNs for data quality checks
ABR API Configuration
Endpoint
https://abr.business.gov.au/abrxmlsearch/AbrXmlSearch.asmx/ABRSearchByABN
Parameters
| Parameter | Required | Description |
|---|---|---|
searchString |
Yes | 11-digit ABN |
includeHistoricalDetails |
No | Y or N (default N) |
authenticationGuid |
Yes | ABR API GUID from env ABR_GUID |
Alternative Endpoints
| Endpoint | Use Case |
|---|---|
ABRSearchByABN |
Lookup by ABN (primary) |
ABRSearchByASIC |
Lookup by ACN (9-digit) |
ABRSearchByName |
Search by entity name (fuzzy) |
ABRSearchByNameAdvanced |
Search with state/postcode filters |
ABN Validation Rules
Format Validation (Client-Side)
- Must be exactly 11 digits
- Apply ABN weighting algorithm:
- Subtract 1 from the first digit
- Multiply each digit by its weighting factor: [10, 1, 3, 5, 7, 9, 11, 13, 15, 17, 19]
- Sum the products
- Result must be divisible by 89
Example Validation
ABN: 51 824 753 556
Step 1: Subtract 1 from first digit → [4, 1, 8, 2, 4, 7, 5, 3, 5, 5, 6]
Step 2: Multiply by weights → [40, 1, 24, 10, 28, 63, 55, 39, 75, 85, 114]
Step 3: Sum = 534
Step 4: 534 / 89 = 6.0 (exactly divisible) → VALID
Entity Type Mapping
ABR returns entity type codes that map to tax treatment:
| ABR Entity Type | Code | Tax Rate | Amendment Period | Payroll Tax Grouping |
|---|---|---|---|---|
| Australian Private Company | PRV | 25%/30% | 4 years | Related body corporate |
| Australian Public Company | PUB | 30% | 4 years | Related body corporate |
| Individual/Sole Trader | IND | Marginal rates | 2 years | N/A |
| Family Trust | TRT | Trustee rates | 4 years | Tracing provisions |
| Unit Trust | TRT | Trustee rates | 4 years | Tracing provisions |
| Partnership | PTR | Partner rates | 4 years | Common employees |
| SMSF | SMF | 15%/0% | 4 years | N/A |
| Government Entity | GOV | Exempt | N/A | Exempt |
| Non-Profit | NPF | Varies | 4 years | Charitable exemption |
Response Data Extraction
Key Fields
| Field | Path | Use |
|---|---|---|
| Entity Name | businessEntity/mainName/organisationName |
Display name |
| Entity Type | businessEntity/entityType/entityTypeCode |
Tax rate selection |
| ABN Status | businessEntity/ABN/isCurrentIndicator |
Active check |
| GST Registered | businessEntity/goodsAndServicesTax/effectiveFrom |
Input tax credit |
| GST Status | businessEntity/goodsAndServicesTax/isCurrentIndicator |
Current registration |
| State | businessEntity/mainBusinessPhysicalAddress/stateCode |
Payroll tax jurisdiction |
| Postcode | businessEntity/mainBusinessPhysicalAddress/postcode |
Location verification |
| ACN | businessEntity/ASICNumber |
Company cross-reference |
Output Format
<abn_lookup_result>
<abn>51824753556</abn>
<abn_valid>true</abn_valid>
<abn_active>true</abn_active>
<entity_name>Example Pty Ltd</entity_name>
<entity_type>Australian Private Company</entity_type>
<entity_type_code>PRV</entity_type_code>
<gst_registered>true</gst_registered>
<gst_effective_from>2015-07-01</gst_effective_from>
<state>NSW</state>
<postcode>2000</postcode>
<acn>824753556</acn>
<tax_implications>
<corporate_tax_rate>0.25</corporate_tax_rate>
<!-- Base rate entity test required (passive income <80%) -->
<amendment_period_years>4</amendment_period_years>
<payroll_tax_grouping_risk>related_body_corporate</payroll_tax_grouping_risk>
</tax_implications>
<lookup_metadata>
<source>ABR API</source>
<queried_at>2026-02-13T10:00:00+11:00</queried_at>
<cache_ttl_hours>24</cache_ttl_hours>
</lookup_metadata>
</abn_lookup_result>
Privacy Considerations
- ABR data is public information — no consent required for lookup
- However, caching ABR responses containing sole trader names has privacy implications under APP 11
- Sole trader lookups return individual names — handle with same care as personal information
- Cache ABR responses for 24 hours maximum, then re-query
- RLS policies on
abn_lookup_cachetable must restrict access to authenticated users only
Best Practices
- Always validate ABN format client-side before making API call
- Cache responses for 24 hours to reduce ABR API load
- Handle ABN not found gracefully — entity may have recently registered or cancelled
- Check GST status separately from ABN status — ABN can be active with cancelled GST
- Entity type determines tax rate, amendment period, and payroll tax grouping — always extract
- Rate limit ABR API calls — no published limit but be respectful (max 1 req/second)
Weekly Installs
3
Repository
cleanexpo/atoGitHub Stars
3
First Seen
Feb 14, 2026
Security Audits
Installed on
opencode3
gemini-cli3
codebuddy3
github-copilot3
codex3
kimi-cli3