An ABA file is a plain-text batch payment file — named after the old Australian Bankers’ Association and built to the Direct Entry format that AusPayNet maintains — that tells your bank to pay many suppliers or staff in one upload instead of keying each transfer by hand. Odoo produces ABA files natively for Australian businesses: you confirm a stack of vendor bills, group them into a batch, and download a single .aba file that ANZ, NAB, CBA or Westpac will accept through their business banking portal. One file, dozens of payments, one approval. That is the whole point.
We’re a Perth-based Odoo implementation consultancy. We worked with a wholesale distributor in Canning Vale who paid roughly seventy suppliers on the same Friday each month, and whose bookkeeper spent most of that day re-keying BSBs and account numbers into NAB Connect by hand. One transposed digit in March had sent A$4,200 to a stranger; getting it back took six weeks and two phone calls a day. After we moved them to Odoo, the same run became three clicks — select the open bills, generate the batch, download the ABA — and the upload to NAB took under fifteen minutes with a second person approving. The bank details now live on the supplier record, entered once, so there’s nothing left to mistype.
What an ABA file is, and why batch payments matter
ABA is the file format Australian banks accept for bulk electronic funds transfer. It’s a fixed-width text file — each line is exactly 120 characters — with a header record (type 0) that names your account, one detail record (type 1) per payment carrying the payee’s BSB, account number and amount in cents, and a file-total record (type 7) the bank uses to check nothing was altered. You’ll also hear it called a Direct Entry, Cemtext or “bank file”; they’re the same thing for our purposes.
The rule of thumb: if you pay more than about ten parties at once — suppliers, contractors, staff, super where your fund accepts it — keying them individually into internet banking costs you time and invites typos. A batch file removes both. Your bank still holds the money until someone with authority approves the upload, so the control is unchanged; you’ve simply stopped doing the bank’s data entry for it.
Odoo treats the ABA file as the output of a batch payment. You’re not exporting a spreadsheet and massaging it. The payments are real accounting entries that already sit against your bank journal, so the file you hand the bank and the figure in your ledger are the same number — which matters when you reconcile, and again when you prepare GST and BAS.
How to generate an ABA file in Odoo
The setup is a one-time job, then the monthly run is fast. There are four parts: configuring the bank journal, putting bank details on each supplier, building the batch, and downloading the file. Get the first two right and the rest is mechanical.
Set up the bank account and ABA journal
Open the bank journal in Accounting and fill in your own account’s BSB and account number. The field that catches people is the APCA number (now issued as a Direct Entry User ID by AusPayNet through your bank) — a six-digit identifier the bank assigns when it enables Direct Entry on your account. Without it, the file will generate but your bank will reject it on upload. You’ll also set whether the file should include a self-balancing record, which we cover below, because it differs by bank. If you’re on Odoo Community rather than Enterprise, this is where you’ll confirm the ABA export module is installed.
Add BSB and account details to every supplier
Each vendor you intend to pay by ABA needs a bank account on their contact record: BSB and account number, plus the account name. Enter the BSB as six digits — Odoo will accept 066-000 or 066000, but be consistent. This is the data your bookkeeper was previously typing on every single payment; now it’s entered once, validated, and reused. A practical tip from migrations: clean this list before go-live, because a third of the supplier bank details we inherit from MYOB or Xero exports are stale or blank.
Build the batch and register payments
When the bills are approved and due, select them and register payment against the ABA bank journal, choosing the payment method that creates a batch payment. Odoo groups the selected payments into one batch, dated for the day you intend to upload. You can review every line — payee, amount, account — before committing, which is your last chance to catch a wrong figure. A batch can hold a handful of payments or several hundred; the file structure is identical either way.
Download the ABA file and upload it to your bank
From the batch payment, click to generate and download the .aba file. Don’t open it in Excel — it’s a positional text format and a spreadsheet will quietly corrupt it. Log in to your business banking portal, upload the file, and approve it under your normal dual-authorisation. The funds debit on the value date in the file. That’s the run done.
Self-balancing vs unbalanced ABA files
Here’s the setting that generates more support tickets than anything else in Australian ABA work. Some banks expect the file to balance to zero — meaning the file must include an extra detail record that debits your own account for the total of all the payments, so the credits and debits net out. Others expect an unbalanced file that contains only the payee credits and lets the bank derive the offsetting debit itself.
As a working guide: CBA (CommBiz) and Westpac (Corporate Online) usually require a self-balancing file, while ANZ and NAB (NAB Connect) usually accept an unbalanced one. We say “usually” deliberately — the requirement is tied to how your specific Direct Entry facility was set up, not just the bank’s name, so confirm it with your bank manager rather than guessing. In Odoo, this is a single toggle on the bank journal: include the self-balancing transaction, or don’t. Tick it wrongly and the symptom is identical either way — the bank rejects the upload with a vague format error, and you lose half an hour wondering what changed when nothing did. Set it once, test with a two-line batch to a known account, and you never think about it again.
Bank-specific ABA import quirks for ANZ, NAB, CBA and Westpac
The ABA standard is national, but each bank’s portal has its own habits, and knowing them before your first live run saves a frustrating afternoon.
NAB Connect is generally the most forgiving: upload the unbalanced file, it parses the records, and you approve. ANZ (Internet Banking for Business or Transactive) also takes the unbalanced file, but it’s strict about the file extension and will sometimes refuse anything that isn’t lower-case .aba. CBA’s CommBiz wants the self-balancing file and validates the APCA/User ID against the facility on the account — a mismatch there is the most common rejection we see, and it points back to the journal setup, not the file. Westpac Corporate Online (and the older DeskBank) likewise expects the balancing record and is particular about the description fields.
The pattern across all four: rejections almost never mean Odoo built a bad file. They mean a single configuration value — the APCA number, the balancing toggle, or the account name — doesn’t match what the bank has on record. We test every new ABA setup with a small batch to a controlled account before the first real payment run, and we’d suggest you do the same regardless of who builds it.
Paying employees and wages by ABA from Odoo Payroll
ABA isn’t only for suppliers. The same mechanism pays staff. If you run Odoo’s Australian payroll, a finalised pay run produces net-pay amounts per employee, and those can be collected into a batch payment and exported as an ABA file exactly as vendor bills are — one upload pays the whole team on payday.
There’s a sequence that trips operators up, so it’s worth stating plainly. The ABA file moves the money; it does not report the wages to the ATO. Single Touch Payroll reporting is a separate step that happens from the payroll engine, and your superannuation still goes through a SuperStream-compliant channel, not the wages ABA. Keep those three streams distinct in your head — net pay by ABA, STP to the ATO, super via SuperStream — and the month-end is clean. Where a business runs deep award interpretation, we often pair Odoo with Employment Hero or KeyPay for the payroll calculation itself and still settle the net pay through Odoo’s bank journal, so the ABA file and the general ledger never disagree about what left the account.
Remittance advice and reconciliation after the batch
Paying the supplier is half the job; telling them what you paid is the other half, and it’s where a batch file can otherwise feel impersonal. Odoo will email a remittance advice to each vendor in the batch, listing the invoices the payment covers, so your suppliers can match the lump sum hitting their account to the right bills. That single feature removes most of the “what was this deposit for?” emails that batch payers usually field.
Reconciliation closes the loop. When the bank statement line for the total batch comes through your feed, Odoo matches it against the batch payment in one action rather than against seventy individual entries — the batch is a single reconcilable item carrying its own breakdown. The rule of thumb we give clients: one ABA upload should produce exactly one statement line and one reconciliation, and if it doesn’t, something in the batch was paid outside the file. That clean one-to-one trail is also what makes your auditor’s year quieter, and it’s the same discipline we apply when migrating from Xero and rebuilding the payment workflow from scratch.
Community or Enterprise — what you need to produce ABA files
You don’t need the most expensive edition to pay by batch file. In Odoo Enterprise, the ABA export is built into the Australian localisation and the Batch Payments app, so it works out of the box once the journal is configured. On Odoo Community, the core batch-payment app isn’t included, but the open-source community has long maintained Australian payment modules that produce a compliant ABA file — so a Community user adds one module and gets the same result. The deciding factors between editions are usually elsewhere (Peppol e-invoicing, supported localisation, and direct vendor support), which we weigh up in our guide to Enterprise versus Community. ABA capability on its own rarely decides it.
Getting your payment runs onto Odoo
ABA files are a small piece of an Odoo build, but they’re the piece your finance team touches every week, so they’re worth setting up properly the first time — the APCA number confirmed with the bank, the balancing toggle tested, supplier details cleaned, and a dry run before a dollar moves. We’ve configured this for distributors, builders and service firms across WA, and the difference between a setup that’s right and one that’s nearly right is measured in rejected uploads and chased payments. If you’re weighing up Odoo for an Australian business and want the payment side done without the trial and error, start a conversation — or read about our implementation method to see how we sequence the accounting setup around your BAS quarters and pay cycles.
Frequently asked.
What is an ABA file in Odoo?
An ABA file is a fixed-width batch payment text file in AusPayNet's Direct Entry format. In Odoo it's the downloadable output of a batch payment — one file that pays many suppliers or staff at once, which you upload to ANZ, NAB, CBA or Westpac for approval.
Which Australian banks accept ABA files from Odoo?
All the major banks accept ABA Direct Entry files, including ANZ, NAB (NAB Connect), CBA (CommBiz) and Westpac (Corporate Online). The format is identical; each bank's upload portal and balancing requirement differs slightly, which you configure once on the Odoo bank journal.
Can Odoo pay employee wages with an ABA file?
Yes. A finalised Odoo payroll run can be collected into a batch payment and exported as an ABA file to pay net wages in one upload. The ABA file only moves the money — Single Touch Payroll reporting to the ATO and SuperStream for super are separate steps.
Do I need a self-balancing ABA file?
It depends on your bank. CBA and Westpac usually require a self-balancing file with an offsetting debit; ANZ and NAB usually accept an unbalanced one. It's a single toggle on the Odoo bank journal, so confirm the requirement with your bank before the first run.
Is ABA export in Odoo Community or only Enterprise?
Enterprise includes ABA export through the Australian localisation and the Batch Payments app. Community doesn't ship the batch-payment app, but a maintained open-source Australian payment module produces the same compliant ABA file — so both editions can pay by batch.
Why is my bank rejecting the ABA file from Odoo?
Almost always a configuration mismatch rather than a bad file: a missing or wrong APCA/Direct Entry User ID, the wrong self-balancing setting for your bank, or an account name that doesn't match the facility. Test with a small batch to a known account first.