Skip to main content

Changelog

Follow new updates and improvements to Catch-e.

Changelog - July 13 2026

Welcome to the latest Catch-e release! This is a big sprint for our API suite, with major upgrades to Quoting, Contracts and Card Services, plus a set of quality-of-life improvements and new integrations. Here's everything that's landed.


Quoting

Smarter field updates in patchQuote

Selected fields in the patchQuote API have moved from SET to OVERRIDE behaviour. Previously, a value sent as SET could still be overwritten by the system's default strategies (for example when a variant change re-triggered defaults). Fields declared as OVERRIDE now take precedence over system-calculated values, so the figure you send is the figure that sticks.

The updated fields by section:

  • Vehicle Details: warranty_kms, warranty_mths

  • Pricing Details: bonus_amount_net, dealer_discount_net, dealer_rebate_net, discount_net, margin_net, rebate_net

  • Registration/CTP Details: reg_initial_net, ctp_initial_net, plate_year, premium_plates_net

  • Vehicle Trade Details: trade_in_amount_net, deposit_net, disposal_fee

  • FBT Details: fbt_business_use, previous_fbt_value

If you integrate with patchQuote, values you supply for these fields will now reliably override system defaults rather than being recalculated over the top of. No payload changes are required, the fields behave more predictably, exactly as most integrations already expect.


Contracts & Payments

New Contract Payments API suite

Five new endpoints let you read and manage contract payment structures and their payment schedules via the API, no more needing to work through the UI for payment variations:

  • GET /fm/contract/payment-structures — list payment structures for a contract, with optional filters for payment_type (finance, comprehensive-insurance, finance-principal-interest, management-fee, roadside-assistance, sundry-payment) and status_flag (defaults to active)

  • GET /fm/contract/payment-structures/{id}/vary — retrieve a single payment structure

  • PATCH /fm/contract/payment-structures/{id}/vary — vary a payment structure, including schedule timing (periods_deferred, first_payment_due, payment_interval, due_day), placing payments on hold, and setting stop dates

  • GET /fm/contract/payment-schedules — paginated schedules for a payment structure, with optional payment_period_no filter

  • PATCH /fm/contract/payment-schedules — bulk-edit schedule payment_date, amount_net and amount_gst in a single batch

Additional Details

  • Four new permissions control access: ContractPaymentStructures:Get, ContractPaymentStructures:Vary, ContractPaymentSchedules:Get and ContractPaymentSchedules:Edit.

  • All changes write audit records, and batch schedule edits are all-or-nothing, so if any row in a batch fails validation, the whole batch rolls back so your data stays consistent.

  • Posted and history-only schedules are protected and can't be edited via the API.

New getContractEvents API

A new GET /fm/contract/events endpoint returns a paginated list of contract events, with optional filters for:

  • contract_id — events for a specific contract

  • posting_class_id — events for a specific posting class

  • table_name — one of fm_drivers, fm_client_cost_centres or fm_client_divisions

  • status_flag — active or deleted (defaults to active)

Filters can be combined and pagination is supported via page and page_size. Access is controlled by a new ContractEvents:Get permission, and responses follow the standard HAL format you'll know from our other collection endpoints. Ideal for audit trails, syncing contract activity into your own systems, or triggering downstream workflows.

FBT fields added to the Contracts API

The getContract and getContracts endpoints can now return a full FBT summary for a contract, bringing the API to parity with the FBT tab in Catch-e. A new opt-in embed=fbt parameter returns an _embedded.fbt object containing:

  • fbt_year_ending — the FBT year the figures are calculated for

  • start_of_year_date — start of the FBT year for the contract

  • fbt_year_days — days in this FBT year

  • gross_up_rate

  • tax_rate

  • budget_statutory_rate and actual_statutory_rate

  • budget_fringe_benefit and actual_fringe_benefit

Additional Details

  • The FBT fields are opt-in via embed=fbt on both GET /fm/contracts/{contract_id} and GET /fm/contracts. If you don't request them, your existing responses are completely unchanged — no integration changes required.

  • An optional fbt_year_ending=YYYY parameter calculates the fields for a specific FBT year, defaulting to the current FBT year when not supplied.

  • FBT fields are returned for contracts with an applicable FBT benefit type (operating, statutory or exempt). Contracts that can't support the calculation are silently skipped rather than breaking the response.

  • On the collection endpoint the FBT calculation runs per eligible contract on the page, so expect longer response times when using embed=fbt on lists. Swagger has been updated with the new parameters and response shape.


Card Services

New bulk import APIs for Cards

A full batch-based card import workflow is now available via the API. Upload a CSV of cards for a selected supplier and Catch-e validates every row, classifies each as create, update, invalid, duplicate or unauthorised, processes the valid rows, and gives you downloadable reports:

  • Upload & Validate — creates an import batch, validates all rows, and returns summary counts before anything is committed

  • Process — creates new cards and updates existing ones, returning a summary of created, updated, failed and skipped rows

  • GET /fm/cards/imports/{importBatchId}/errors — download an error CSV of invalid, duplicate or unauthorised rows

  • GET /fm/cards/imports/{importBatchId}/result — download a result CSV with the final outcome of every row, including the card_id for successful rows

Additional Details

  • Create vs update is determined automatically by supplier + card number, and each row must include a contract_id or reg_no.

  • Duplicate rows within the same file are detected and rejected with a clear reason, and blank optional values on updates won't overwrite existing data.

  • The workflow respects your Cards:Create and Cards:Update permissions independently — missing one won't block the other — and every successful create or update writes normal card audit history.

  • Frontend UI for managing bulk import for Cards is coming in the next few weeks.


Other enhancements

Residual Basis default at Client level

You can now set a default Residual Basis at the client level, with support in both the Catch-e UI and the API.

New quotes and contracts pick up the client's default Residual Basis automatically, reducing manual selection and keeping residual treatment consistent across a client's portfolio. Swagger documentation covers the updated API behaviour.

Automated LCC clearing with a client-level retention flag

Luxury Car Charge (LCC) clearing is now automated, and a new client-level retention flag lets you control whether LCC is retained or cleared for each client.

This removes a manual clearing step from your workflow. Set the retention flag once per client and Catch-e handles the rest.


Banking

Three new financial institutions for Driver/Employee bank accounts

Three financial institutions have been added, so Driver and Employee bank accounts with these BSBs can now be created and updated without validation errors:

  • BSB 671-000 — Cuscal Limited (People First Bank)

  • BSB 772-772 — Revolut Payments Australia Pty Ltd

  • BSB 840-303 — Zepto Payments Pty Ltd

Previously, attempting to save a bank account with one of these BSBs failed with a "financial institution not found" style validation error. These institutions are now available across all relevant screens and APIs, and existing BSB validation is unaffected.


Integrations & Data

New JATO vehicle data integration

Catch-e now integrates with JATO, a leading global provider of vehicle specification and pricing data. Reach out to us if you need help with this.

G-NAF address database updated to May 2026

Catch-e's address validation now runs on the May 2026 release of the G-NAF (Geocoded National Address File) database.

The May 2026 release adds around 41,000 addresses nationally, bringing the total to over 15.9 million Australian addresses, and retires roughly 7,000 invalid lot-numbered addresses in Queensland. Address lookups and validation in Catch-e now reflect this latest data.


Lily Improvements

Thank you to everyone for adopting Lily! We have continued to improve Lily’s base training dataset, improving over 20 articles in the past 2 weeks. We will continue to improve Lily’s training context and start rolling out new features over the coming months.


Questions

If you'd like more detail on any of these changes or want a hand with the new APIs, contact us through Lily. We’re more than happy to help. Don’t forget to check out our new customer portals:

support.catch-e.com.au

help.catch-e.com.au

feedback.catch-e.com.au

Changelog

Changelog - July 09 2026

🔌 New API Endpoints: Posting Classes

We've expanded the Catch-e API suite to include Posting Classes, providing API consumers with direct access to posting class reference data alongside existing Posting Maps functionality.

✨ What's New

getPostingClasses
Retrieve a collection of Posting Class records.

getPostingClass
Retrieve a specific Posting Class using its unique posting_class_id.

Enhanced Validation
Request validation has been added for collection filters and posting_class_id lookups, ensuring consistent API behaviour and responses.

Permissions
PostingClasses:Get permission has been introduced to control access to these endpoints.

Updated API Documentation
Find the full API Swagger documentation here.


🛠️ Improved patchQuote and createQuote API Client Margin Validation

We've enhanced the patchQuote and createQuote APIs to provide stronger validation of the client_margin_rate field, ensuring client margin values comply with configured business rules.

🔄 What's Changed

Validation for client_margin_rate Updates
These APIs now validate the client_margin_rate field whenever it is included in a request payload.

Support for Configurable Negative Margins
Negative client_margin_rate values are now evaluated against the qt.client_margin_allow_negative_flag global control, ensuring API behaviour aligns with business configuration settings.

Effective-Date Aware Processing
The validation logic respects the effective date of the applicable global control, ensuring the correct business rules are applied based on the quote date.

Improved Error Handling
Where negative client margins are not permitted, the API returns a clear validation message to assist developers in troubleshooting failed requests.

📋 Additional Details

  • Positive client_margin_rate values continue to be accepted and processed successfully.

  • Negative client_margin_rate values are permitted when the applicable client_margin_allow_negative_flag control allows them.

  • Invalid or non-numeric client_margin_rate values are rejected during validation.

  • Successful updates continue to recalculate and return related finance values, for example: finance_rate, client_margin_net, finance_pmt_net, finance_pmt_gst

  • Existing behaviour remains unchanged when client_margin_rate is not included in the request payload.


🚀 Contract APIs Now Available in Production

Having recently announced an “Early Access” period for our new Contract APIs, we are please to advised they are now available in Production.

✅ Production ready Contract API endpoints

  • getContract

  • getContracts

  • createContract

  • patchContract

❤️ Thank You

Thank you to everyone who participated in the Early Access opportunity and provided valuable feedback. Your input has helped shape and refine these APIs for general availability.


Salary Packaging

⚙️ Automated Pay Run Invoicing & Reporting

We've introduced a new automation feature that streamlines the pay run invoicing process by automatically generating invoices and providing visibility of pay run status through a companion review report.

✨ What's Changed

Automatic Pay Run Invoice Generation
Pay run invoices can now be generated automatically using a scheduled job, removing the need to manually create invoices from the Pay Runs screen.

Scheduled Processing
Administrators can configure the frequency, execution time, and report recipients through System Administration → Scheduler Jobs, ensuring invoices are processed consistently and on schedule.

Pay Run Status Review Report
A companion report is generated alongside invoice creation, providing visibility of pay runs that are pending, open, or past due before export to your accounting system.

Flexible Report Delivery Options
Reports can be delivered via email, made available in the Report Queue for download, or generated as a CSV file for further review and processing.

📋 Additional Details

  • Reduces manual effort associated with pay run invoice generation.

  • Supports proactive review and correction of pay run data before export to accounting systems.

  • Updated pay run data can be re-imported and the process re-run to generate an updated invoice batch.

  • A Pay Run Invoice Date Review report is available to support data validation and exception management.


🔐 Improved Driver Portal Lockout Recovery

We've enhanced the Driver Portal login experience to make it easier for drivers to regain access to their accounts after multiple unsuccessful login attempts.

✨ What's Changed

Automatic Password Recovery
When a driver reaches the configured maximum login attempt threshold. The system can now automatically trigger the password reset process where a valid email address is registered against the driver account.

Configurable Login Attempt Limits (maximum 8)
The maximum number of failed login attempts is now controlled via a configurable setting, providing greater flexibility for organisations.

Improved User Experience
Drivers now receive clearer messaging when an account is locked and, where applicable, are informed that a password reset email has been sent to their registered email address.

📋 Additional Details

  • Existing two-factor authentication (2FA) lockout behaviour remains unchanged.

  • Auto-recovery only applies when enabled through system configuration.

  • Password reset emails are only sent when a valid email address is available for the driver.

  • The existing "Forgot Password" process continues to function as before.

  • Enhances self-service account recovery and reduces administrator intervention for driver login lockouts.


🐞 Improved Driver Tyre Claim Quantity Tracking

We've enhanced the Driver Portal tyre reimbursement process to ensure tyre claims accurately record the number of tyres selected by the driver.

✅ Issue Resolved

Accurate Tyre Quantities Recorded
When drivers submit a tyre reimbursement claim, the correct tyre quantity is now recorded rather than defaulting all claims to a quantity of 1.

Improved Tyre Allowance Tracking
Tyre allowances will now be reduced by the actual number of tyres claimed, helping ensure balances remain accurate and up to date.

Support for Multi-Tyre Claims
Claims submitted for multiple tyres (such as 2 or 4 tyres) will correctly record the corresponding quantity against the maintenance record.

Existing Claim Processing Preserved
Fuel claims and all non-tyre reimbursement claims continue to behave as they do today, ensuring no impact to existing claim processes.


🖥️ Updated Contract Types Details Screen Layout

We've refreshed the Fleet → Controls → Accounts → Contract Types → Details screen to provide a cleaner, more consistent, and easier-to-use experience without changing any existing functionality.

🔄 What's Changed

Posting Map ID Now Visible
Previously, the Contract Type's numeric identifier was not displayed on the Details screen. A new read-only Posting Map ID field is now shown near the Status field, making it easier to reference Contract Types for support, administration, and integration purposes.

Data Fields Expanded - Left column
Several fields in the left-hand section of the screen were previously narrow and difficult to work with, particularly when viewing longer values. Text entry fields within the main Contract Type details area, have been widened to make information easier to read, review and maintain. e.g.: Map Code

Order Address Flags Relocated
The Order Address Flags section (Invoice To, Delivery For, Registration To, and Registration Notification To) previously occupied the top-right section of the screen. These fields have been moved to the bottom of the left-hand column, creating a more logical layout and making better use of available screen space.

Quote Request Email Field Enhanced
The Quote Request Email To field has been moved from the middle of the screen to the top-right section and expanded in width, making email addresses easier to view and edit.

Cleaner Screen Alignment and Spacing
Inconsistent field spacing, alignment issues, and blank gaps between sections have been removed to provide a more streamlined and professional-looking layout.

📋 Additional Details

  • No changes have been made to underlying functionality or business processes.

  • No database or API changes were required.

  • The update focuses solely on improving usability, readability and screen consistency.

  • Existing Contract Type data and behaviour remain unchanged.

Changelog

ATO Tax Updates

Luxury Car Tax (LCT) 2026/27 Update

The Australian Taxation Office (ATO) has updated the Luxury Car Tax thresholds and car cost limits for the 2026/27 financial year.

These new values will automatically apply to all quotes with an effective date on or after 1 July 2026.

For more information please visit;

PAYG Tax Rate 2026/27 Update

The Australian Government has introduced updates to the PAYG income tax rates for the 2026/27 financial year.

These changes will automatically apply across all relevant tax tables and withholding schedules from 1 July 2026.

For more information please visit;

Changelog

Earlier updates