Skip to content

File your first BAS

The Business Activity Statement is the quarterly (or monthly) GST and PAYG return Australian businesses lodge with the ATO. SAE Books prepares the BAS labels from your posted activity; this guide takes you from "the quarter just ended" to "the BAS is filed".

Prerequisites

  • Transactions for the period are posted and tagged with tax codes (GST, FRE, INP, etc.)
  • The trial balance reconciles
  • Bank reconciliation is complete (no UNMATCHED lines for the period)

If those aren't true, fix them first — the BAS is downstream of a clean ledger.

1. Prepare the BAS

The BAS summary endpoint takes explicit date ranges, not a quarter shorthand. For the January–March 2026 quarter:

curl "$SAEBOOKS_API_BASE/reports/bas_summary?from_date=2026-01-01&to_date=2026-03-31" \
  -H "Authorization: Bearer $JWT"

Response:

{
  "from_date": "2026-01-01",
  "to_date": "2026-03-31",
  "g1_total_sales": "...",
  "g2_export_sales": "...",
  "g3_other_gst_free_sales": "...",
  "g10_capital_acquisitions": "...",
  "g11_other_acquisitions": "...",
  "label_1a_gst_on_sales": "...",
  "label_1b_gst_on_purchases": "...",
  "net_gst": "...",
  "remit_or_refund": "REMIT"
}

The web UI at /reports/bas?from=2026-01-01&to=2026-03-31 shows the same figures in tabular form alongside a "Create settlement entry" action.

2. Review

The BAS calculation is incremental — every posted transaction tagged with a GST tax code has already contributed. Common checks:

  • Cash vs. accruals. If your company is in cashbook mode, the BAS reads from payments, not invoices. Mismatched mode settings here are the most common cause of a "wrong" BAS.
  • Outliers. Compare against last quarter's labels. A 10× swing on a single label is almost always a tagging error, not a real trading swing.
  • Tax-code coverage. Query GET /api/v1/accounts with include_balance=true and cross-reference which accounts have tax_code_default set. Look for income accounts with no tax code — those lines contribute nothing to G1.

3. Lodgement — community / offline / business tiers

There is no CSV export endpoint. The web UI at /reports/bas is the primary review and settlement surface. Once you're satisfied with the figures:

  1. Click Create settlement entry in the "Lodge BAS" panel — this POSTs to /reports/bas/settle and creates a draft journal that zeroes GST Collected and GST Paid, with the net going to a GST Clearing account.
  2. Review and post the draft journal at /journal/<entry-id>.
  3. Record the ATO payment from your bank account via the standard payments flow.

To transcribe labels manually:

  • Via your tax agent — read the label_1a_gst_on_sales and label_1b_gst_on_purchases values from the API response and hand them to your agent for lodgement through their software.
  • Via the ATO Business Portal — log in at https://www.ato.gov.au/ and transcribe the labels onto the Business Portal BAS form.

3'. Lodgement — pro / enterprise tiers

Pro and enterprise installs can lodge directly via SBR (Standard Business Reporting). Set up an ATO keystore credential first:

# Upload your ATO keystore (PFX or ATO XML file; password required)
curl -X POST "$SAEBOOKS_API_BASE/ato_sbr/keystore" \
  -H "Authorization: Bearer $JWT" \
  -F "[email protected]" \
  -F "password=<keystore-password>" \
  -F "label=RAM credential 2026"

# Create a tax return record for the period, then lodge it
curl -X POST "$SAEBOOKS_API_BASE/tax_returns" \
  -H "Authorization: Bearer $JWT" \
  -H "Content-Type: application/json" \
  -d '{
    "jurisdiction": "AU",
    "period_id": "<uuid-of-tax-period>",
    "return_type": "BAS",
    "figures": {"G1": "..."}
  }'

curl -X POST "$SAEBOOKS_API_BASE/tax_returns/<return-id>/lodge" \
  -H "Authorization: Bearer $JWT"

You will need a Machine Credential issued via the ATO RAM — same mechanism Xero / MYOB use, running on hardware you control. See the operator guide for credential setup.

4. Audit trail

Every settlement entry and every SBR lodgement (pro / enterprise) is recorded with the actor, the period, and the resulting label values. The settlement journal entry itself carries full provenance in the journal change_log. If the ATO ever asks "where did this number come from?", the trail goes from BAS label → contributing journals → contributing source documents.

Next