July 13th, 2026

Changelog

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_flagactive 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