Tax codes were assumed to line up
MYOB uses its own tax code set, and the codes a store or point of sale exports rarely match it without translation. Standard rated sales, GST free food and medical lines, input taxed items, exports, capital purchases and transactions with suppliers who have not quoted an ABN all need an explicit mapping, product by product where necessary rather than one code for the whole file. The failure mode is not dramatic, it is a small persistent discrepancy that nobody investigates until a BAS reconciliation forces the issue.
A local company file became a single point of failure
When the file lives on an office computer, the integration depends on that machine being on, connected, updated and not reallocated to someone else. Weekend outages, power interruptions, a Windows update and an office move have all taken integrations down for days. If the file cannot move to a hosted arrangement, the design has to include a queue that holds transactions safely while the file is unreachable and posts them in order when it returns, plus alerting that tells someone the same day rather than at month end.
The card file was allowed to grow unchecked
Automated card creation without matching rules produces thousands of near duplicates within a year, and once they carry transactions they are genuinely difficult to merge. Decide the matching keys before go live, load the existing card file and clean it first, create nothing automatically that the rules cannot confidently match, and give the ambiguous cases to a person in a daily queue of a handful rather than a monthly cleanup of hundreds.
Retries created duplicate invoices
A network drop or a timeout mid post is normal, and the retry that follows will create a second invoice unless the write is idempotent. Every posted transaction needs a stable external reference carried into a field on the MYOB record so a repeat attempt updates or is recognised as already done. Without it you get duplicate revenue at the busiest times of year, which is precisely when the retries are most frequent and the finance team has least capacity to spot them.
The integration used a person’s login
Credentials tied to a staff member stop working the day they leave and carry whatever access that person had. Use a dedicated integration user with the narrowest permissions that work, store credentials in a proper secret store rather than a configuration file, rotate them on a schedule, and keep a record of what has access to the file. Since the flow carries customer names, addresses and payment references, the Privacy Act 1988 and the Australian Privacy Principles make least privilege and access records an expectation, not an optional refinement.
Nobody planned for volume or throttling
The API is not built for unlimited traffic and a large historical backfill or a peak trading day can push you into throttling, where a slowed integration looks exactly like a stopped one. Pace the calls, queue the backlog rather than dropping it, prefer daily summaries over individual invoices where volume is high, and test a peak day before November rather than during it. If the honest answer is that your volume has outgrown the product, we would rather say so than build something that limps.