Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Learn how to configure key components in Maica
The following articles will show you how to properly setup important components of the Maica system to ensure proper operation. These components are crucial to Maica's lifecycle and enable efficient Service Delivery.
To explore each component in detail and access specific configuration guides, please visit their pages below:
Before proceeding with the configuration of the above components, ensure that you understand them in Maica. To learn about each component, please see the following articles:
Learn how to configure Overnight Availability in Maica
To enable Overnight or 24 Hour Availability for a Resource, you must first properly configure an Operating Hour Record. To do so, follow the steps outlined below.
As Maica creates Availability by referencing Operating Hour records, it is critical to appropriately configure an Overnight or 24 Hour Operating Hour record before attempting to plan a Resource's Availability.
Operating Hours in the App Launcher or directly from the ResourceIn Maica, there are two ways to create your Operating Hours record, these are:
Through the Salesforce App Launcher
Directly from the Resource Availability Record
Follow the steps below to see how they both work:
In the Salesforce App Launcher, search for Operating Hours.
Then, simply select it to open the list view of all Operating Hours in your Maica instance, as shown below. Click New to begin populating your record.
Navigate to a Resource you wish to create an Overnight or 24 hour Availability record for. Then, under Availability, click New.
This will bring up the New Availability module, as shown below. Once here, navigate to the Operating Hours field, select it as if you were to assign an Operating Hours record, and click New Operating Hour.
After the pop-up is displayed, you will be prompted to fill-in the following fields:
To configure the Operating Hours records that enable overnight or 24-hour Availability for Resources in Maica, you will need to follow slightly different processes.
See the respective sections below for further information on each one.
To set up an Operating Hour record to allow for 24 hour Availability, you need to set up the record so that:
The Start Time and End Time are the same (e.g., 12:00 AM to 12:00 AM).
The selected weekdays define the active period (e.g., selecting Monday and Tuesday allows bookings spanning from Monday through to Wednesday).
If you wanted to book a Resource for an overnight Appointment on Mondays and Tuesdays, meaning they can take appointments that span Monday through Wednesday, then:
Assign an Operating Hour record with the following inputs:
Name: "Organisation Preference"
Weekday: Monday, Tuesday
Start Time:
To set up an Operating Hour record to allow for Overnight Availability, you need to configure the record so that:
The End Time is earlier than the Start Time (e.g., 6:00 PM to 6:00 AM).
A single weekday is selected, meaning the availability will carry into the following day.
If you wanted to book a Resource for an overnight shift that starts on Monday at 6:00 PM and runs until Tuesday at 6:00 AM, then:
Assign an Operating Hour record with the following inputs:
Name: "Organisation Preference"
Weekday: Monday
Start Time:
Once the Operating Hour record has been created, the next step is to assign it to a Resource’s Availability. This ensures that the Resource follows the configured operating hours when scheduling Appointments.
Once your Availability Record has been created with the correctly configured Operating Hours, you will be ready to schedule Overnight or 24 Hour Appointments.
Learn how to configure Support Categories in Maica
When it comes to Home Care Packages, custom fields have been added to the Support Category object in Maica. These allow you to configure appropriate Support Categories to represent the Home Care Package Budget, and allow our feature to interrogate the Support Category Records in your system to ensure that you can effectively set up and manage budgets while adhering to Home Care Package requirements.
As well as the ability to configure Support Categories, Maica offers a template with default categories, categorised by the various line items that form a package budget for home care, as per the table below.
Learn how to configure Appointment Services in Maica
To correctly configure an Appointment Service, please follow the steps indicated below.
In the Salesforce App Launcher, search for Appointment Services and choose it to open the list view of all Appointment Services in your Maica instance, as shown below.
Once you are viewing your Appointment Services, simply click the New button located in the top right hand corner of your interface to bring up the New Appointment Service pop-up, as shown below.
End Time
The time when the operating hour ends for the selected weekday(s).
End Time: 12:00 AM
Save the record.
End Time: 6:00 AM
Save the record.
Name
A descriptive name for the Operating Hour record.
Weekday
The day(s) of the week when this operating hour applies. You can select one or multiple days.
Start Time
Note,
If a user tries to book an appointment beyond the allowed range (e.g., past Wednesday in this case), Maica will not allow it.
If a non-consecutive day is selected (e.g., Monday and Wednesday but not Tuesday), the system prevents bookings that cross the missing day.



The time when the operating hour begins for the selected weekday(s).
Fees that are charged directly to a customer through a co-payment invoice.
Claimable Fees
Fees that the provider can claim on behalf of the Home Care Package.
Client Contributions
Money paid into the package directly by the client, such as a basic daily fee.
Subsidies
The base subsidy paid by the government into the Home Care Package budget.
Supplements
Additional pieces of funding that individual participants can acquire approval for, to help with specific needs.
If you wish to configure your own Support Categories within Maica in order to set up and manage budgets correctly, please follow the steps indicated below.
In the Salesforce App Launcher, search for Support Categories and choose it to open the list view of all Support Categories records in your Maica instance, as shown below.
Once you are viewing your Support Categories, simply click the New button located in the top right hand corner of your interface to bring up the New Support Category pop-up, as shown below.
After the pop-up is displayed, you will be prompted to fill-in the following fields:
Name
This will be the name of your Support Category. You can name your Support Categories anyway you wish.
NDIS Name
This is the official name of the support category as recognised by the NDIS (National Disability Insurance Scheme), if applicable. Note: As NDIS Support Categories are populated via the Data Import, this will be automatically be populated.
Support Purpose
Once populated, simply click Save to create your Support Category.
Now that your Support Category has been set up, you must populate it with Support Items that correspond to the budget items in the package.
As mentioned above, this is not done through the Support Category, but rather, directly from the Support Item record.
Billable Fees
The Category Product field associates the Support Category to a specific Product.
However, please note, it is not best practice on Maica to use the Category Product field when configuring Support Categories, rather, it is best practice to link Products Records to Support Categories directly from the Product record. This is further explained .
Clicking the New on the Support Item related list directly from your Support Category record will create an entirely new Support Item, not assign an exisiting one.
Name
This will be the name of your Appointment Service. As an Appointment Service is essentially a parent object for your Support Items, we recommend naming your Appointment Services generically based on the Support Items it will contain.
Claim Types
Available: Lists all potential Claim Types that can be associated with the Appointment Service.
Chosen: Select the relevant Claim Types for this Service that match the associated Support Items. Only selected Claim Types in this section will apply to the Appointment Service.
Tags
Finally, once populated, simply click Save to create your Appointment Service.
Select your newly created Appointment Service to open up the record. Once open, you will see the related list fields on the right hand side of your interface, as shown below.
This step is only going to focus on Skills and Checklists. Both of these related lists work the same way, which is:
Click the New button to add Skills and Checklists
Select which Appointment Service you wish to assign the Skill or Checklist too. The Service you open the selector from will be selected by default.
Select which Skill or Checklist you wish to assign from your configured list.
Click Save to finalise your selection.
Again, on your newly created Appointment Service, refer to the related list fields on the right hand side of your interface to identify the Support Items list. Here you will see all associated Support Items within an Appointment Service.
As mentioned, in order to assign a Support Item to an Appointment Service, you must do it directly from the Support Item record. This is due to the fact that one Support Item can only ever belong to one Appointment Service.
To explain how this process works, please refer to the demonstration below. In the Demonstration, the following examples will be used and referenced:
Appointment Service: Recovery Coaching
Support Item: Psychosocial Recovery Coaching - Saturday
Now, your Appointment Service is ready to be used.
When configuring Appointment Services, it is crucial that no Support Items with the same configuration are assigned to the same Appointment Service, as this will disrupt Maica's ability to accurately validate the Participants funding, and potentially disrupt the Billing Flow.
The following four fields in a Support Item decide whether they are considered 'identical' within the Maica system:
Service Day
Service Time
Support Category
Registration Group
So, in summary, no two Support Items with identical inputs to the four fields listed above can exist within the same Appointment Service. If one field differs, they can exist.


It is crucial to note here that assigning Support Items does not work in the same way as assigning Skills and Checklists.
Clicking the New on the Support Item related list directly from your Appointment Service record will create an entirely new Support Item, not assign an existing one. In order to assign a Support Item to an Appointment Service, you must do it directly from the Support Item record.
Learn how to configure Support Items in Maica
Similar to Support Categories, custom fields have been added to the Support Item object in Maica. These allow you to configure appropriate Support Items to represent the Home Care Package Budget, and allows them to be useable within the tool.
So, the following section explains how to configure a Support Item, the steps you need to take to ensure that you can effectively set up and manage budgets while adhering to Home Care Package requirements, and details of the key configurable fields/components within the Support Item object. Below will also detail the relationship between Support Items and Support Categories, as well as how to be relate them in Maica.
If you wish to configure your own Support Items within Maica in order to set up and manage budgets correctly, please follow the steps indicated below.
Support Items in the App LauncherIn the Salesforce App Launcher, search for Support Items and choose it to open the list view of all Support Items records in your Maica instance, as shown below.
Support ItemOnce you are viewing your Support Item, simply click the New button located in the top right hand corner of your interface to bring up the New Support Item pop-up, as shown below.
After the pop-up is displayed, you will be prompted to fill-in a number of fields.
Each field on the New Support Item pop-up is detailed below. The key fields are described and their relationships are described in further detail:
Support Item Name: This will be the name of your Support Item. You can name your Support Item anyway you wish.
: This field allows you to associate your Support Item with any given Support Item.
Registration Group: This field allows you to associate a Support Item with a specific Registration Group for classification.
Support Item Number: The unique identifier number for the support item.
Support Item Type: The Support Item Type pick list is a crucial field in configuring your Support Item. It essentially defines the type of Support Item, however this is important for both building your budget, as well as Maica's fee automation and regulations on a Service Agreement.
There are values within the Support Item Type pick list to support a Home Care Package, these values are described below:
Funding Level: Funding Level defines what level of funding can be assigned, and therefore set the rate against the relevant items.
Quantity Unit of Measure: The Quantity Unit of Measure field allows you to specify the billing frequency or unit for the Support Item.
Claim Type:
Claim Types (Available): Lists possible claim types applicable to the Support Item.
Claim Types (Chosen): Shows selected claim types that apply specifically to this Support Item.
Service Day: Specifies which days this Support Item is available for service.
Service Time: Sets the available time range for the service related to this Support Item.
Appointment Service: Captures what applies to this Support Item, including Skills and Resources.
Once you have populated the relevant fields, click Save to finalise your Support Item.
Once you have configured your Support Items, it is important to add them to an associated .
To do so, refer to the related list on the Support Item record. Simply click New, to add your Support Item as a Price List entry into a configured Price List. At this point, you can set your rate.
Once done, your Support Item will be set up and ready to support you managing budgets of a Home Care Package Service Agreement.
Basic Subsidies
A Basic Subsidy for home care packages is a government-funded financial support provided to eligible individuals to help cover the costs of home care services. It is part of the Australian Government’s Home Care Package Program, aimed at assisting older adults to live independently in their own homes for as long as possible. The subsidy amount depends on the level of care required, ranging from basic support for daily tasks to higher levels of care for more complex needs.
Care Management Fees
Care Management Fees in home care packages refer to the costs associated with planning and coordinating the care services provided to an individual. These fees cover the management of the home care package, including creating care plans, organizing services, monitoring care quality, and ensuring that the individual’s needs are met. Care management can be provided at varying levels, depending on the complexity of the Participant's requirements.
Package Management Fees
Package Management Fees for home care packages are the costs related to the administration and organisation of the overall home care package. These fees cover tasks such as managing budgets, handling invoicing and compliance, maintaining records, and ensuring that the services provided meet regulatory requirements. They are necessary to ensure the smooth operation of the home care package and are separate from care management fees.
Basic Daily Fees
Basic Daily Fees for home care packages are optional contributions paid by the individual receiving care to help cover the costs of their home care services. The fee is set by the government and is typically a small percentage of the aged pension. It helps supplement the government subsidy and can be charged in addition to the care management and package management fees, depending on the provider.
Income Tested Fees
Travel Activity: Marks the Support Item as a Travel Activity which is available when manually creating Timesheet Entries and Manage Travel when creating Appointments.
Timesheet Activity: Marks the Support Item as a Timesheet Activity which is available when manually creating Timesheet Entries.
Display Name: The name that will be displayed throughout Maica for this Support Item.
Tags: Keywords or phrases that help in categorising or searching for this Support Item throughout Maica.
Home Care Package Support Items should all be set to a daily unit of measurement because fees and credits that are in the package budget through subsidies are always charged at a daily rate according to the rate schedule provided by the Commonwealth.
The Claim Type should be set as Home Care Package. Maica has various different claim types that can be applied to particular Support Items, and to make it is important to make sure that the system is selecting the Home Care Package value that we're not pulled into any order of claims process that you might be running. If you're using in Maica, and you're administering NDIS or CHSP for example, you want to selecting Home Care Package will ensure that your Home Care Package Support Items are specifically handled by your Home Care Package claiming processes.


The Support Purpose dropdown is a configurable field within a Support Category, to which new values have been added to represent the categories of budget items within a Home Care Package. It is important that before you begin adding products that represent actual budget items to the package, you first set up your support categories to support the creation of the products underneath.
Category Number
This field is a unique identifier or reference number for the Support Category.
Fund Management Type
Specifies the type of fund management associated with the Support Category, indicating how funds are managed for services under this category. If you are configuring Support Categories for Home Care Packages, please ensure this is set to Home Care Package.


These are custom tags to categorise or group Appointment Services. Tags can assist in easy search and filter of Services when assigning a Service to an Appointment.
Available Sections
Available: Lists different sections that can be added to the appointment service.
Chosen: Select the sections relevant to this Service. This customises what fields or information will be displayed when setting up an Appointment using this Service.
Start & End Date
This field represents the beginning date (when the Appointment Service becomes active) and when the end date (when the Appointment Service is no longer valid). If the End Date is left blank, the Appointment Service will be active indefinitely.
Participant Note Template
Participant Note Template: This assigns a template for Participant Notes that will be associated with the Service. Select a pre-existing template or search for one to guide standard note-taking.
Pre-load Template: If checked, this option will automatically load the selected Note template whenever this Appointment Service is used.
Enable Billable Participant Notes
When enabled, this Appointment Service can be selected when creating a Billable Participant Note. Use this checkbox to control Billable Participant Note eligibility at the record level. When checked, the Service is available for selection while a Billable Participant Note is being created against an Appointment.

Income Tested Fees for home care packages are additional fees that some individuals may be required to pay based on their income. These fees are determined by the Australian Government and apply to those with higher incomes, contributing toward the cost of their home care services. The amount varies depending on the individual’s income level, and there are annual and lifetime caps to limit the total amount a person can be required to pay. These fees are separate from the basic subsidy and other fees associated with the home care package.
Various Types of Supplements
Supplements for home care packages are additional payments provided by the Australian Government to support individuals with specific care needs. These supplements are designed to address special circumstances and can be added to the basic subsidy. Common types of supplements include:
Dementia and Cognition Supplement: For individuals with cognitive impairments such as dementia.
Veterans’ Supplement: For veterans who have a related health condition.
Oxygen Supplement: For those requiring continuous oxygen due to medical conditions.
Enteral Feeding Supplement: For individuals needing tube feeding.
Hardship Supplement: For those facing financial difficulties in paying home care fees.
These supplements help ensure that individuals with specialised needs receive appropriate care and support.
Learn how to find which Edition of Maica your organisation is using
The following article describes the process of checking which Maica Edition your organisation is using.
Navigate to Salesforce Setup.
In the Search bar, type "Installed Packages".
Click on Installed Packages from the search results.
In the Installed Packages list, look for any packages with "Maica" in the name.
Your Maica edition(s) will be listed here
The available Maica options are:
Maica Client Delivery
Check out the guide below to watch each step in real time.
Maica Client Care
Maica Client Management
Learn about how Maica automates the generation of travel claiming and expenses.
Maica offers the capability to automate the generation of travel billing records as well as expenses for Resources. This includes dealing with time-based and non time-based travel components as well as a number settings that determine how travel is managed within Maica.
This diagram represents a workflow related to managing travel information and expenses, particularly in relation to invoicing.
Start: The process begins with either the User or Google providing input into the system (possibly related to travel data).
Travel Information: This step gathers the necessary travel information, which then splits into different possible paths:
Time-Based Travel Settings: These settings include rules or restrictions related to time, such as specific dates or durations of travel.
Travel Caps: There might be limits or caps in place, such as restrictions based on Apprentice Program, Client Types, Virtual Staffing, or Service Agreements. These caps ensure that travel expenses do not exceed certain thresholds.
Invoice Line Item: Once all the travel information and related settings are gathered, the next step is generating an Invoice Line Item. This represents the cost associated with the travel being recorded as a specific item for invoicing.
Resource Expense: Following the invoice creation, the expenses related to travel are assigned as Resource Expenses and captured against the Resource who delivered the service.
Invoice: The final step involves generating an Invoice that includes all the necessary travel line items, accounting for time-based travel settings and any caps applied. This invoice is the official document for charging the relevant party for the travel expenses.
End: The process completes with the expenses and invoices being finalized.
In summary, this diagram outlines a process of collecting travel-related data, applying any relevant restrictions or caps, and finally generating invoice line items that reflect travel expenses to be billed.
Our Knowledge Base is divided into two main sections:
The User Guide
The Administration Guide.
This structure is designed to meet the needs of different types of users within the organisation. The User Guide provides easy-to-follow instructions for everyday users who work with the application, while the Administration Guide offers more technical information for administrators and power users responsible for configuring and maintaining the system. This setup ensures that each user can quickly access relevant resources based on their role and responsibilities.
In order to switch between the two guides, simply use the dropdown in the top left corner of your screen.
The Administration Guide is tailored for system administrators and technical users responsible for the more complex aspects of Maica. It includes detailed instructions on system configurations, integrations (e.g., with Stripe and Xero), managing permissions, and customising the platform to meet organisational needs. This guide is useful for users who manage settings, troubleshoot issues, and maintain the overall functionality of Maica. If your role involves system setup, user management, or advanced configurations, the Admin Guide provides the technical details you need.

Data Objects
Learn about the key Data Objects in Maica and their associated Validation Rules and Logic.
Salesforce Hosting
Learn how to check that your Salesforce instance is hosted in Australia.
System Processes
Discover how key Automation and Logic Processes work within Maica
Reference Data
Understand how to use and import the Reference Data Template successfully into your Maica instance.
Integrations
Discover the Integrations available within Maica and how to configure them within your instance.
Settings
Learn what all the Settings with Maica control and how they can help improve your workflow.
Schedule a Demo
Schedule a 30 minute demo to see if Maica is for you.
Request a Trial
Try Maica today!
Partners
Partner with Maica and join a network dedicated to enhancing care delivery.
Learn about Reference Data in Maica
Reference Data is essentially any flat/static data that is used across Maica to power it's functionality. This data is consistent, predefined, and used throughout the system to standardise operations and prepare your Maica instance for Service Delivery.
Reference data is important for Service Delivery in Maica because it populates and powers key functions like Appointments, Billing, and Rostering. For example, you cannot schedule an Appointment without having the necessary Reference Data, such as Resources.
There are two distinct stages in the Reference Data lifecycle within Maica, these are:
Both these stages are critical in the successful import of Reference Data into Maica. To learn more about each stage, please refer to the related articles linked above.
Learn about how to check that your Salesforce instance is hosted in Australia.
Maica connects natively to the NDIS APis as well as hosts sensitive Participant information, so it is a requirement to host your underlying Salesforce instance in Australia. This article shows you how to check if your Salesforce instance is hosted in Australia.
To check your hosting for Saleforce, follow the steps outlined below:
Log into your Salesforce instance
Go to Setup
Type Company Information
Check the Instance value
Go to
Copy & Paste the Instance value to see where your instance is located
Learn how to Import Data into Maica
The Data Import Utility in Maica is a tool that allows you to quickly and easily import data into Maica. There are a number of important Data Records that must be up to date and are critical to keeping Maica functioning effectively, including Support Catalogues and Price Lists, and hence importing Data efficiently is of upmost importance. The Data Import Utility allows you to stay on top of these updates without having to ever manually compare new Catalogues or Lists with your current Data.
In order to access the Data Import tool, first click the App Launcher located in the top left corner of your interface, as shown below.
Once open, simply search Data Import and select the Data Import tool under Items, as shown below.
Flow SettingAfter you have opened the Data Import Tool, you will be presented with the following screen:
As the utility supports a few different processes, the first step is to select the Flow Setting or Import Process. Maica supports the following options:
Reference Data Import
NDIS Bulk Payment Request Results File
NDIS Import Support Items Catalogue
NDIS Bulk Payment Remittance File
This Flow Setting essentially tells Maica which type of Data you are wanting to Import so the Automation can read the files correctly.
Once you have selected the required Flow Setting, the page will dynamically update and present you with a Upload Files button. Simply click this button and select the desired file.
After uploading your File, you will see the following two options displayed:
Check Only: Check this option if you want to validate the file and the import prior to processing it. By selecting Check Only, no records will be created or updated in Maica.
Allow Parallel: Check this option if you want to create multiple records simultaneously to process the file quicker. If you require your records to match the order of the file, ensure this checkbox is not selected.
Once done, click Import to confirm.
Learn about how Maica automates the generation of timesheet activities for Resources.
Maica offers the capability to automate the generation of Timesheet Entries records for Resources. This includes dealing with Appointment and Shift Timesheet components as well as a number of Settings that determine how Timesheets are managed within Maica.
This diagram represents a workflow related to managing Timesheet Management, particularly in relation to Resources.
Maica generates Timesheet Entries for Resources when either Appointments or Shifts are completed, either manually or via an automated process. This process is governed by the Settings detailed here.
The first check performed by Maica is to determine what Roster Mode the Resource at the time of the Appointment or Shift.
If the Roster Mode is set to Appointment, Maica will generate Timesheet Entries based on all Appointments completed by any given Resource.
If the Roster Mode is set to Shift, Maica will generate Timesheet Entries based on all Shifts completed by any given Resource and ignore any Appointments that might have taken place during a Shift.
The second check is to determine if any Appointment Breaks have been recorded either during an Appointment or a Shift.
If an Appointment Break is marked as Create Corresponding Timesheet, Maica will include the Appointment Break in the Timesheet Entry for any given Resource.
If an Appointment Break is not marked as Create Corresponding Timesheet, Maica will exclude the Appointment Break in the Timesheet Entry for any given Resource.
The third check is to determine if any Travel has been recorded during an Appointment.
If Appointment Travel has been maked as Create a Timesheet Entry, Maica will include the Travel in the Timesheet Entry for any given Resource.
Learn how to Import NDIS Support Catalogues into Maica
The first step of importing an NDIS Support Catalogue is identical to any other Data Import and is explained . This article will continue based on the assumption that these steps have been completed.
Once you have clicked Import, you will have the ability to configure your import to your preference. This is where you may specify which Price Lists you want Maica to make for you, as well as offer a useful description for future reference, as shown below.
Once you have configured your import, simply click Confirm to start the Import Process. The data from the NDIS Support Catalogue File will be interpreted by the NDIS Import Support Items Catalogue Flow in Maica and processed.





Support Item and Price List data will be changed as follows:Any new Support Item in the NDIS Support Catalogue will be created as a new Support Item in Maica
Any existing Support Item in the NDIS Support Catalogue that is updated, i.e the Name is changed, will update the existing (corresponding) Support Item record in Maica.
The records are matched based on the Support Item Number as this is in the file and on the Support Item record in Maica.
As part of the import process, Maica will create new Price List records for each of the Areas selected in .
The created Price List record(s) will have the following name format: NDIS Supports {STATE} ({CREATED DATE})
Example: NDIS Supports VIC 25/10/2022
Each of the Support Item records created or updated by the import will be added to the new Price List(s) so it can be used whenever this Price List is selected in Maica

The RACS Configuration tab is where administrators maintain the government-published rates, regulatory caps, indexation values, and automation toggles that drive the residential aged care billing engine, indexation engine, and claims reconciliation. These values are global: they apply to every resident and provider in the organisation, so they are configured centrally in one place rather than per resident.
The tab lives inside the existing Maica Settings area.
Open Maica Settings.
In the left navigation, select Residential Aged Care Services.
The right panel shows two tabs. RACS Configuration is the first tab and is selected by default. APCS Export is the second tab.
The tab presents thirteen configuration fields grouped into four accordion sections. All four sections are expanded by default, so you can scan every value at a glance. Each section can be collapsed and expanded independently while you work; reopening the tab resets every section to expanded.
The sections are grouped by update cadence rather than by fee type, because administrators usually update these values in response to a government publication that arrives on a known schedule (a quarterly interest rate notice, a twice-yearly indexation notice, a legislated cap change).
Regulatory Caps and Durations
NCCC and MTCF caps, and the durations that limit certain charges
5
A legislated change to a cap or duration
Each section opens with a short paragraph explaining its purpose and update cadence, followed by its fields. The individual fields are documented in Caps and Duration Settings, Rate Configuration, and Automation Toggles.
The tab has a single Save button in the card header. Saving writes all thirteen fields to the underlying record in one atomic operation, so you can update several values across different sections and commit them together.
A successful save shows a Configuration saved confirmation.
If a value fails validation (for example a negative cap), the save is rejected and the validation message is shown. No values are changed.
Switching to the APCS Export tab and back discards any unsaved edits without a confirmation prompt, in line with the standard Maica Settings behaviour.
All thirteen fields are stored on the Maica Billing Setting record (the maica_cc__Setting__c record where API_Name__c = 'Billing_Setting'). RACS values belong to the billing domain, so they sit on the same record that the core Billing Settings component uses for non-RACS billing configuration. The tab resolves and edits this single record.
The tab only edits these values. The behaviour they drive is owned by other parts of the solution: the billing engine, the indexation engine, the fee detection batch, and the statement reconciliation service. Entering a value here does not trigger any recalculation on its own. The exception is the Run Indexation Engine button described above, which is an explicit action you trigger.
You do not have to save each section separately. Make all the changes prompted by a government publication, then click Save once.
If no active Billing Setting record exists in the org, the tab loads but shows the empty state "Unable to load the RACS configuration record. Contact your administrator if this persists." No fields are displayed and Save is unavailable. This points to a base package installation issue rather than a RACS problem.
Learn about Permission Sets & Groups in Maica
In Maica, Permission is managed by leveraging and , using a layered approach to enable flexibility.
Every custom object in Maica—such as Appointments, Invoices, and Notes—as well as any core Salesforce object that Maica interacts with, has corresponding Permission Sets. These will fall into one of two categories:
Object-based, which control access to individual objects (Create, Read, Edit, Delete)
Functional, which control access to Maica functionality like claiming or integration tools.
Then, to simplify assignment to Users, these Permission Sets are categorised into
Learn about what an implementation of Maica looks like.
Maica is a purpose-built healthcare application for Australian NDIS and Aged Care providers and does not require any implementation to get started. We have described below the various steps involved in not only getting started with Maica but also extend it over time to grow alongside your organisation.
As part of your licence subscription, we will provide the following standup services free of charge to you to.
Interest Rates (Quarterly)
The MPIR and BIR used for accommodation payments and late refund interest
2
Quarterly rate notices (1 January, 1 April, 1 July, 1 October)
Indexed Rates and Supplements (March and September)
The standard Basic Daily Fee, the DAP index number, and the maximum accommodation supplement
3
Twice-yearly indexation (20 March and 20 September)
Automation
Toggles that control whether scheduled background processes run
3
Set once, after validating the relevant process
So, let's break it down further.
As mentioned, Permission Set Groups are used to bundle multiple related Permission Sets together. These groups represent a functional area or role—for example, the Manage Invoices & Object Permissions set groups together Billing related Permission Sets.
When you assign any Permission Set Group to a user, they inherit all the individual Permission Sets contained within that group. Using our example of the Manage Invoices & Object Permissions group, any User assigned this Group would gain permission sets for Invoices, Payments, Logs, Support Items, and more.
As also mentioned, each Permission Set in Maica falls into one of two categories:
1. Object-Based Permission Sets
These sets grant access to core Data Objects in Maica and are broken down further based on the CRUD model:
Create
Read Only
Edit
Delete
Each object in Maica—such as Invoices, Appointments, or Accommodation—has its own four distinct Permission Sets, one for each of the access types listed above. For example, the object “Accommodation” has four separate permission sets:
Maica – Accommodation – Create Access
Maica – Accommodation – Edit Access
Maica – Accommodation – Delete Access
Maica – Accommodation – Read Only Access
Object-based sets ensure granular control over what users can do with individual data types in Maica—whether that’s just viewing a record or creating and editing new ones.
For a detailed breakdown of the Object and Field-level Permissions included in each access type, see the section below.
2. Functional Permission Sets
Functional sets control access to a specific feature or process within Maica. These aren’t tied to single objects, but rather to functional workflows. For example: Submitting NDIS Claims.
These sets typically include logic or automation in the background and often require users to have appropriate object-level permissions in place as well.
As mentioned above, each object in Maica has its access broken down into four Permission Set types: Create Access, Edit Access, Delete Access, and Read Only Access.
It’s important to clarify the distinction between:
The object itself (e.g. Accommodation, Invoice), and
The Object Permissions applied within a Permission Set for that object (e.g. Read, Edit, View All Fields).
Each Permission Set corresponds to one access type for one object (e.g. Maica - Accommodation – Create Access) and includes Salesforce-defined Object Permissions and Field Permissions to control what users can do.
For every Object Permission Set, you’ll find two key areas:
Object Permissions: Define what a user can do with the object as a whole (e.g. create or delete records, view all fields).
Field Permissions: Define which individual fields a user can read or modify on that object.
The table below outlines what is included in each type of Permission Set:
Create Access
- Read - Create - View All Fields
- Read Access (on all required fields) - Edit Access
Edit Access
- Read - Edit - View All Fields
Let’s take a closer look at how this structure works using the Maica - Accommodation – Create Access Permission Set as an example, as shown below.
Object Permissions
As this is a Create Access Permission Set, the following object-level permissions are enabled:
✅ Read
✅ Create
✅ View All Fields
Field Permissions
And, underneath the object-level access, field-level access is also defined. For a Create Access Permission Set like the one shown, the user has:
✅ Read Access
✅ Edit Access
To learn more about the breakdown of Permission Set Groups in Maica and see descriptions of what each group provides access to, click here.
In Salesforce, a permission is an individual access control that determines what a user can do—like viewing records, editing fields, or running processes. Permissions can apply to objects, fields, system features, or custom-built components.
A Permission Set is a collection of these permissions grouped together under a single label. It allows you to extend a user's access without changing their profile. Unlike the Profile, where you can only have one, a User can have many Permission Sets assigned.
A Permission Set Group bundles multiple Permission Sets into a single package. This makes it easier to assign all required permissions for a specific job function or system area.
To view the full breakdown of which Permission Sets are apart of which Permission Set Group, .
Please note, for non Maica objects, i.e. Contact and Account, the Maica Object Permission Sets provide access to Maica custom fields only.
For example, the Maica - Contact - Create Access Permission Set would provide Read and Edit access to the NDIS Number field (maica_cc__NDIS_Number__c) but not the standard Email field.
Please note, a single Permission Set Group can contain both types of Permission Sets
If your Salesforce instance was purchased directly from Salesforce, you must ensure it is hosted in Australia. If Maica is provisioning your Salesforce instance for you, we will take care of this.
NDIS API Connection
The connection of Maica to the NDIS APIs where this is relevant.
An agreement with the NDIA must be signed prior to gaining access to ensure data integrity.
Scheduling & Rostering Setup
This provides the required Appointment Services to enable the scheduling and rostering engine of Maica including all relevant settings, preferences, and resources.
Maica provides a set of compliant Appointment Services for the NDIS and Aged Care under which your organisation can start delivering services without the need for any further configuration.
Reference Data Load
Setting up a set of required reference data for your organisation.
This includes Registration Groups, Support Categories, Support Items across NDIS and Aged Care.
End User Training
The solution training of your team, including usage of Maica across all functions of the lifecycle.
This is constrainted to a single 2 hour session.
In cases where your organisation has implementation needs beyond the core Maica product (as documented in the Maica Knowledge Base), Maica follows a strict Time & Materials approach whilst working with your team to define, determine, and implement the most appropriate technical solution(s) to meet your needs. This commercial model also keeps you in charge of how much financial input an implementation might require.
The below table outlines some of the more typical tasks we have come across for your reference:
Scheduling & Rostering Setup
This configures any relevant extensions to the scheduling and rostering engine of Maica including all relevant services, settings, preferences, resources, and security/profile configuration.
Core Data Model Extensions
This includes the extension of required attributes across existing Maica data objects, such as Contact, Service Agreement, and Appointment as well as the configuration of any newly determined data requirements.
Billing Flow Extensions
The best way to get started with Maica would be to request a trial from us, organise a demonstration or simply connect to speak to our team.
Solution Installation
The installation of the Maica solution into your Salesforce instance. Where applicable, we will assist you with getting access to your Salesforce environment.
Learn how to Integrate with Stripe within Maica
To learn how to configure the Stripe integration in Maica, please follow the steps detailed below.
To begin configuring your Stripe Integration, go to the Maica Settings tab in the Menu bar. When there, select the Payment Management tab to see the following.
There are three fields that are required to be populated, these are:
Stripe Publishable Key
Stripe Secret Key
Stripe Webhook Secret
Finally, all that is left to do is connect your Site. Select your Site from the dropdown field and click Save to finalise your set up.
Once you have populated the fields above and connected your Site, you need to configure the required Webhooks on Stripe.
You do this by heading to Stripe, searching for Developers and selecting the Webhooks tab.
Once there, select the + Add Endpoint button located in the top right hand corner of your interface.
Here you will prompted by Stripe to add an Endpoint URL and Description. The Description is optional however the Endpoint URL is required.
After you have populated Stripe with the Endpoint URL, you need to select the Events you want your Endpoint to listen to.
Stripe will provide a large list of possible Events, the crucial ones to select for the Stripe Integration with Maica are the:
invoice.payment_failed
invoice.payment_succeeded
You can find these by simply searching in the Search Events bar at the top of the page. Once done, select Add Events, and then finalise your Endpoint by clicking Add Endpoint.
This Administration Guide explains how Maica's Residential Aged Care Services (RACS) solution is built, configured, and integrated. It is written for administrators, implementers, and support staff who set the solution up and keep it running, rather than the staff who use it day to day.
Use it to understand the data model and architecture, configure the global rates and settings that drive billing, set up the Services Australia integration, and configure the reporting and reconciliation services. For how to carry out resident-facing tasks, see the companion User Guide.
Solution Architecture and Concepts covers the solution overview, the design principles behind it, and the data model that underpins everything else. See .
Installation and Initial Configuration sets out the packages, platform, and access the solution needs before you configure it. See .
This is the extension development (using Salesforce Flows) of the standard Maica billing flows, including special billing conditions and recurring billing scenarios that might require amendments to Maica.
Timesheet Flow Extensions
This is the extension development (using Salesforce Flows) of the standard Maica timesheet flows to ensure that it is suitable for your organisational processes, including special award interpretation conditions.
Document Generation
The development of several digital documents (including digital signature) using the Conga Composer or DocuSign platforms.
Xero Finance System Extensions
The development of any required extensions to Maica’s native Xero integration where this is relevant.
Online Portal Development
The development of a secure online portal for either Participants or Providers to allow for self-management of Appointments, Invoices, etc. This typically requires custom branding and layouts to ensure your online presence is represented consistenly throughout.
Integrations Development
The development of various integrations to complement your Maica/Salesforce solutions, including systems such as KeyPay, SharePoint, Outlook, among other typical integrations we have come across.
Any Relevant Extensions Development
This includes the configuration and development of any relevant & required extensions to either the core Maica solution or the underlying Salesforce platform. This can include discovery workshops, architectural guidance, flow development among many other activities.
- Read Access - Edit Access (on editable fields)
Delete Access
- Read - Edit - Delete
- Read Access - Edit Access (on editable fields)
Read Only Access
- Read - View All Fields
- Read Access only



RACS Settings and Rate Configuration covers the global rates, caps, indexation values, and automation toggles on the RACS Configuration tab. See .
The Billing Engine explains how the engine turns Agreement Items into invoices, the fee type rules, billing dates and catch-up chains, fee rate detection, indexation, and scheduling. See .
Lump Sum and Accommodation Configuration covers the Lump Sum Account model, retention and drawdown logic, and the combination payment method. See The Lump Sum Account Model.
Services Australia API Integration covers the integration architecture and event lifecycle, PRODA authentication, and the outbound and inbound APIs. See Integration Architecture and Event Lifecycle.
Reporting and Compliance Configuration is where you configure the reporting capability matrix, QFR reports, SIRS incident capture, the 24/7 RN coverage check, and the APCS export tool. See Reporting Capability Matrix.
Adjustments and Reconciliation Services explains how the fee adjustment and statement reconciliation services work. See Fee Adjustment Service.
Learn about Maica's Billing engine and Invoice Generation logic.
The following article details Maica's Invoice Generation Logic. It provides further insight in understanding how the Billing lifecycle works within Maica.
The Billing Engine in Maica is powered by the Maica - Invoice Flow. This flow is further detailed below.
This flow is designed to generate an Invoice and Invoice Line Items for Delivery Activities within Maica. The flow retrieves the necessary data from Delivery Activities, Service Agreements, and associated Products, calculates costs based on predefined caps (e.g., travel caps), and creates Invoice Line Items.
Below are all the stages and logic of the Maica - Invoice Flow.
Start (Auto-Launched Flow):
Description: The flow is automatically triggered and begins by retrieving the details of a Delivery Activity.
Get Delivery Activity (Record Lookup):
Description: This lookup retrieves the Delivery_Activity__c record using the provided recordId. The flow fetches this data from the database, looking for any activity matching the input recordId.
Next Step: The flow checks whether the activity is billable using the
Should be Billed? (Decision):
Description: This decision evaluates whether the delivery activity should be billed. It checks if:
The Billing_Status__c is set to Requested.
Get Cost Data (Apex Action):
Description: The flow invokes the DeliveryCostCalculationInvocable Apex class, which calculates the cost of the Delivery Activity based on the Service Agreement, Price Lists, and Support Items.
Inputs:
Get Service Agreement (Record Lookup):
Description: This lookup fetches the Service_Agreement__c associated with the Delivery Activity’s Agreement Item. The flow uses the agreementItem.Service_Agreement__c ID obtained from the cost data.
Next Step: After retrieving the Service Agreement, the flow proceeds to generate or retrieve an Invoice.
Get Invoice (Apex Action):
Description: This Apex action (GetInvoiceInvocable) either retrieves an existing Invoice or creates a new one based on the input parameters. This step ensures that any subsequent billing actions are tied to the correct Invoice for the participant and service provider.
Inputs:
Get Product (Record Lookup):
Description: This step looks up the Product2 record related to the Support Item being billed. The flow uses the Support_Item__c from the cost data’s agreementItem to identify the product.
Validation:
Product Found? (Decision):
Description: This decision ensures that a valid Product2 record was retrieved in the previous step. The flow checks if:
The Product ID is not null (Get_Product.Id is set).
Initalise Invoice Line Item (Assignment):
Description: In this step, the flow initialises the Invoice_Line_Item__c record by assigning values for several key fields, including:
Product__c: The ID of the retrieved Product (Get_Product.Id).
Is Travel over the Chargeable Travel Cap? (Decision):
Description: This decision checks whether the Delivery Activity is non-time-based (Non_Time_Based_Activity__c) and whether the Quantity__c exceeds the TravelCapKms. This ensures that the travel charges are capped at a certain limit based on kilometres.
How TravelCapKms is Determined
Set Maximum (Assignment):
Description: Adjusts the Quantity__c of the Invoice Line Item to fit within the allowed TravelCapKms. This step ensures that the Invoice Line Item does not exceed the allowable limit for travel-related charges.
The Quantity__c of the Invoice Line Item is set to the calculated value of TravelCapKms
Is Travel over the Time Travel Cap? (Decision):
Description: This decision checks whether the delivery activity is time-based (Time_Based_Activity__c) and whether the Quantity__c exceeds the TravelCapHours. It ensures that time-based travel charges are capped at a certain limit.
How TravelCapHours is Determined
Set Maximum (Assignment):
Description: Adjusts the Quantity__c of the Invoice Line Item to fit within the allowed TravelCapHours. This prevents overcharging for time-based travel activities.
The Quantity__c of the Invoice Line Item is set to the calculated value of TravelCapHours
Create Invoice Line Item (Record Create):
Description: This step creates the Invoice_Line_Item__c record using the data assigned earlier. The flow saves the line item and links it to the relevant Invoice and Product.
Update Delivery Activity (Record Update):
Description: The Delivery Activity is updated with the relevant details, including:
The Agreement_Item__c linked to the Service Agreement.
The flow completes the process of generating the Invoice and updating the related records.
This flow automates the generation of Invoices and Invoice Line Items for Delivery Activities within Maica. It ensures that invoices are accurately created based on the Service Agreements and predefined caps for travel and time-based activities. Error handling is included throughout the flow to capture and log any issues during processing.
Maica integrates with Services Australia across the full residential aged care lifecycle: notifying entries, departures, and leave, reporting supplement needs, recording means testing elections, and pulling back claims, fee, and balance data. This article explains the shape of those integrations, the unified record that backs every outbound event, and the status lifecycle each event moves through.
Integrations run in two directions. Outbound integrations send notifications from Maica to Services Australia. Inbound integrations read data from Services Australia into Maica.
Outbound events follow a consistent pattern. The user launches a quick action from the resident's Service Agreement, which opens a guided form. Maica saves the details to an Aged Care Event record, then sends the event to Services Australia through the residential care events API. Each event category (entry, opt-in, departure, leave, enteral feeding, oxygen) is a segment of the same API layer, and each supports create, read, update, and delete operations.
The save and the submission are deliberately separate steps. Maica saves the Aged Care Event first, then makes the callout, so a connectivity or validation problem never costs the user the data they entered.
Inbound integrations are read-only. Maica calls a Services Australia endpoint, receives the current data, and writes it to the relevant Maica records, stamping a sync status and, on failure, a sync error message so users can see when data last refreshed and whether it succeeded. Inbound data includes care recipient details, claims and payment data, fee determinations, balances, and service-level summaries.
Should be Billed?An Invoice_Line_Item__c has not already been created for this activity.
Next Step: If these conditions are satisfied, the flow proceeds to retrieve cost data using Get_Cost_Data.
recordId: The ID of the Delivery Activity is passed to the Apex action to identify the relevant data for the cost calculation.
Outputs:
The Apex action returns a set of key data, including:
agreementItem: The specific Agreement Item tied to this activity.
unitPrice: The calculated unit price for the Service.
quantity: The quantity of units to bill for.
Next Step: Once the cost data is retrieved, the flow looks up the Service Agreement.
fundingType: Derived from the Service Agreement’s Funding_Type__c.
participantId: Fetched from the Delivery Activity’s Participant__c.
serviceProviderStr: The Service_Provider__c linked to the Service Agreement.
Outputs:
The result of this action is the Invoice__c record, which is stored in the flow’s invoice variable.
Next Step: The flow proceeds to retrieve the associated Product for the Invoice Line Item.
The lookup ensures that the Product2 record is valid for billing by checking:
The product exists in the database and is not null.
The Support_Item__c field correctly matches a product ID, ensuring the right product is billed for the Delivery Activity.
Next Step: Once the product is validated, the flow checks if the product is found using the Product Found? decision.
The Product exists in the system.
Next Step: If the Product is found, the flow moves to initialise the Invoice Line Item.
Invoice__c: The ID of the Invoice created or retrieved in the previous step.
Agreement_Item__c: The Agreement Item ID from the cost data.
Claim_Type__c: The claim type from the Delivery Activity.
Unit_Price__c: The unit price obtained from the cost calculation.
Quantity__c: The quantity calculated from the cost data.
Service_Date__c: The service date from the Delivery Activity.
Status__c: Set to Entered.
Next Step: The flow evaluates whether the travel caps need to be applied.
The flow checks if the Chargeable_Travel_Cap__c field from the agreementItem is greater than 0. If so, this value is used as the TravelCapKms.
If the agreementItem does not have a specific travel cap, the flow falls back to the system-wide travel cap.
If neither the agreement-specific nor system-wide caps are set, the travel cap defaults to 0, meaning no travel charges are allowed.
Next Step: If the quantity exceeds the travel cap, the flow moves to adjust the quantity.
Similar to the TravelCapKms, the flow first checks the Time_Travel_Cap__c field in the agreementItem. If set, this value is used as the maximum allowable time-based travel.
If the agreementItem.Time_Travel_Cap__c is not set, the flow checks the system-wide setting.
If no time travel caps are specified in either the agreement or system-wide settings, the time-based travel cap defaults to 0, meaning no time-based travel charges are allowed.
Billing_Status__c, which is set to Generated, indicating that the billing process has been completed.The newly created Invoice Line Item is linked to the Delivery Activity.

Outbound (Maica to Services Australia)
Entry, departure, and leave events; supplement events (enteral feeding, oxygen, extra service); means testing opt-in elections; monthly accommodation balance reports
Inbound (Services Australia to Maica)
Care recipient details; claims and payment statements; care recipient fee summary; Medicare details; leave and respite balances; service, occupancy, and 24/7 RN supplement summaries
Every outbound event is stored on a single object, the Aged Care Event (maica_cc__Aged_Care_Event__c). The event category determines which fields apply, so one object serves entries, departures, leave, and supplement events alike. The table below lists the fields that drive the framework itself. The category-specific fields are covered in Outbound event APIs.
Event Category
Event_Category__c
The kind of event: Entry, Opt In, Departure, Leave, Extra Service, Enteral Feeding, or Oxygen. It sets which fields apply and cannot be changed after submission.
Event Type
Event_Type__c
The Event Status field tracks where an event sits in its lifecycle. Most events move through the same sequence.
New
Created and saved in Maica but not yet successfully submitted to Services Australia.
Held
Received by Services Australia and awaiting manual review or more information. This is normal and does not indicate an error.
Accepted
A Held status is common and is not a failure. It means Services Australia has received the event but is reviewing it or waiting on further information. When Services Australia resolves a held event, Maica reflects the updated status the next time the event is read or refreshed. Users should monitor held events and follow up through the Services Australia portal where needed.
Events can be updated after submission. An update sends a new version using the stored event ID and ETag, and Services Australia supersedes the prior version. The guided forms adapt to the event's status: a new event opens in a create view, an editable event opens in a manage view, an accepted event offers only the actions valid at that point, and a superseded or rejected event opens ready to submit a corrected version. This keeps users from attempting an action that the event's current status does not allow.
Maica applies one principle consistently: a failed Services Australia callout never blocks a care operation.
If a submission fails, whether from a network problem, a Services Australia outage, or a validation rejection, the Aged Care Event and any related record changes are kept, the failure is logged, and the user is notified without losing their work. The user can retry the submission from the Aged Care Events related list without re-entering any data. This reflects the operational reality that admitting or discharging a resident cannot wait on an external system being available.
When Maica creates an event, Services Australia returns an event ID and an ETag, which Maica stores on the Aged Care Event. Any later update or delete sends that ETag back in the if-match header. If the record changed elsewhere since Maica last read it, the ETag no longer matches and the change is refused, which prevents one channel from silently overwriting another's update. Each accepted update increments the version number, so the full history of an event is preserved.
Only Accepted events are included for payment. An event sitting in New or Held has not yet been confirmed, so subsidy and supplement payments depend on it progressing to Accepted.
Because the record is saved before the callout, a failed submission is always recoverable. Resolve the underlying issue, then retry from the Aged Care Events related list.
Residential Aged Care Services (RACS) is delivered as part of the Maica platform and builds on the configuration and permission model that already governs the rest of Maica. Before you configure rates, admit residents, or connect to Services Australia, confirm that the package, platform, access, and baseline configuration prerequisites described here are in place.
RACS is not a standalone product. It is delivered through Maica's two-package structure:
Learn about Maica's Bulk Synchronisations for Support at Home and their function and logic.
The Bulk Synchronisations for Support at Home feature allows administrators to update multiple record types in Maica by retrieving the latest data from the Services Australia APIs. Instead of running synchronisations individually at the Care Recipient level, these bulk options refresh entire groups of data in a single operation.
From this screen, administrators can:
Sync Care Recipients – update all Care Recipient records for a Service Provider, including optional retrieval of Contributions and Budgets.
Sync Individual Contributions – refresh the latest contribution data for all existing Care Recipients without running a full sync.
The specific type within the category, such as the leave type or the oxygen or enteral feeding classification.
Event Status
Event_Status__c
The current lifecycle status of the event, as described below.
Funding
Funding__c
The resident's Funding record that the event belongs to.
Aged Care Event ID
Aged_Care_Event_ID__c
The identifier Services Australia assigns when the event is created. Required for any later update or delete.
Aged Care ETAG
Aged_Care_ETAG__c
The ETag returned with the last response, sent back as the if-match header on updates and deletes for concurrency control.
Aged Care Version Number
Aged_Care_Version_Number__c
The Services Australia version of the event. Each accepted update creates a new version.
Channel
Channel__c
The channel the event was submitted through. Maica submits through B2G (business to government).
Accepted by Services Australia and included for payment or processing.
Rejected
The submitted version was rejected by Services Australia.
Superseded
Replaced by a later version of the same event.
Deleted
The event has been deleted.
The core Maica platform: Service Agreements, Funding, Agreement Items, billing, and the shared Settings framework.
Maica Client Care (extension)
maica_cc__
The package that contains the RACS objects, Apex services, LWCs, and Settings tabs. RACS ships here.
The Maica Client Care package depends on the base Maica package. The base package must be installed and current before Maica Client Care is installed or upgraded. All RACS objects and fields carry the maica_cc__ namespace (for example maica_cc__Lump_Sum_Account__c and maica_cc__Setting__c).
RACS inherits the same Salesforce platform baseline as the rest of Maica:
Lightning Experience. The entire RACS user interface is built with Lightning Web Components (the Manage RACS Agreement component, the RACS Configuration settings tab, the APCS export tool, and the coverage check). RACS is not supported in Salesforce Classic.
Custom objects and Apex. RACS relies on custom objects, Apex services, and scheduled batch jobs, so the org must run a Salesforce edition that supports these (the same edition baseline required by the core Maica package).
Scheduled Apex. The billing engine, indexation engine, and fee rate automation run as scheduled batch jobs. The org must allow scheduled Apex for these processes to run automatically.
Maica grants access through permission sets and permission set groups, never through profiles. Assign the appropriate permission set group to each user rather than editing profiles.
Configuration of RACS (the RACS Configuration settings tab, rate values, automation toggles, and the operational tools that run from Maica Settings) is granted by the established Maica administrator permission set group, Maica - Access Maica Settings & Object Permissions (Maica_Access_Maica_Settings_Group). A user with this group can see the Residential Aged Care Services area in Maica Settings and edit the RACS configuration values.
Day-to-day RACS work is split across two operational personas, each delivered as a permission set group:
Maica - RACS - Manage Care Recipient (Maica_RACS_Manage_Care_Recipient)
Admitting residents, managing the Fees tab, syncing care recipient data, submitting Aged Care Events, running RN coverage checks, and viewing balances and invoices.
Maica - RACS - Manage Billing and Claiming (Maica_RACS_Manage_Billing_and_Claiming)
Managing RAD/RAC accommodation deposits, manual rate changes, claims sync, statement reconciliation, accommodation balance submission, and departure billing.
These two groups draw on a set of underlying feature permission sets (for service agreement management, departure processing, fee rate checks, care recipient sync, aged care events, RN coverage, claims, reconciliation, accommodation balance reporting, and RN supplement sync).
Two configuration prerequisites must be satisfied before RACS behaves correctly.
All RACS configuration values (caps, rates, indexation numbers, and automation toggles) are stored on the Maica Billing Setting record - the maica_cc__Setting__c record where API_Name__c = 'Billing_Setting' and Active__c = true. This record ships with the base Maica package and exists in every installed org.
The RACS features that exchange data with Services Australia (entry, departure, leave, and supplement events, inbound data syncs, and claims) require a working PRODA connection and the associated integration configuration. Set this up before using any Services Australia dependent feature.
Maica (base)
maica__
Install or upgrade the base Maica package first, then Maica Client Care. Installing the extension package against an out-of-date base package can cause deployment errors.
Permission set and permission set group names can change between package releases. Confirm the exact RACS permission set group names available in your installed package version before assigning them, and assign them alongside the baseline Maica permission set groups that any Maica user already requires.
If no active Billing Setting record exists, the RACS Configuration tab cannot load its values and displays an empty state. A missing Billing Setting record indicates a base Maica package installation issue, not a RACS configuration issue. Resolve the package installation before continuing.
Sync Budgets – update budget and entitlement data for all Care Recipients, with the option to refresh only related budget details.
Each bulk synchronisation uses the same API connections and mapping logic as the individual Care Recipient sync, ensuring data is consistent across both single-record and bulk operations.
This article explains each type of synchronisation, the logic behind the operations, and how the data is processed in Maica.
The main bulk sync action is the Bulk Care Recipient Sync, as shown below.
Action: Sync Care Recipient data in bulk from Services Australia
Purpose: Retrieves the latest Care Recipient records for all Contacts under the configured Service Provider ID.
Process:
Calls the Care Recipient Summary API using the Service Provider ID.
Iterates through the returned array of Care Recipients like to the specified serviceProviderId.
Updates existing Contact and Plan records in Maica with the latest classifications, services, and supplements.
Additional Sync Items (optional checkboxes):
Include Individual Contributions – runs an additional callout to retrieve and update all contribution data for the same set of Care Recipients.
Include Budgets – runs an additional callout to retrieve and update all budget data, including entitlements, for the same set of Care Recipients.
When complete, a summary message displays showing the number of records updated and any errors.
This panel allows you to run a contribution-only sync, separate from the full Care Recipient sync.
Action: Sync Individual Contributions Only
Purpose: Retrieves the latest individual contribution data for all Care Recipients currently stored in Salesforce.
Process:
Calls the Care Recipient Individual Contribution API.
Updates Individual_Contribution__c records linked to existing Support at Home Plans.
Note: No new Care Recipient records are created in this process; only contributions for existing Contacts are updated.
This panel is used to update funding allocations independently of other data.
Action: Sync Budgets Only
Purpose: Retrieves the latest budget and entitlement data for all Care Recipients currently stored in Salesforce.
Process:
Calls the Care Recipient Budgets API.
Updates Plan_Budget__c and related Entitlement__c records.
Note: Budgets and Entitlements are always linked, and both are retrieved during this process.
An additional option is available:
Sync Budgets Related Data Only – refreshes related budget and entitlement details for existing budget records without re-querying the full budget list.
Progress indicators are shown while sync jobs are running. On completion, Maica outputs a summary of successful updates and any failures. Failures are written to log records in Maica for further review, and can be expanded directly from the Sync Settings, as shown below.
Maica iterates through each care recipient summary returned. They will be parsed and handled according to the mappings and logic in the .
When you select Sync Budgets, you cannot then select Sync Budgets Related Data Only right away as the initial selection will trigger both. But, you can Sync Budgets Related Data without Syncing Budgets.
Learn how to Import your Reference Data Template into Maica
How do I import my Template?
Once you have completed your Reference Data Template, you can import it into Maica using Maica's Data Import Utility Tool.
First, you must export your Template as a CSV file.
Once you have exported your Template out of Google Sheets or Excel (whichever you prefer to use), you will be ready to import it into Maica.
To complete the import, use the Data Import Utility Tool that is described here.
Once you have chosen the correct Flow Setting and uploaded your file, but before you finalise your import, we recommend ticking the Check Only box. As explained in the Data Import Utility article, the Check Only checkbox replicates the data uploading process. This means you may check for mistakes before transferring data to Maica. If there are any errors, you will get an .
Once you have checked and finalised your file, uncheck this box and press import to start the upload process.
After you have imported your data, you will see a successful display message indicating that the import has been completed, as shown below.
After each import execution, Maica will display the number of successful rows as well as the number of failed rows. If there are any failures, an Error Report will be available for download.
The error report will include a complete list of failed rows as well as an explanation for each failure.
You can then repair any data errors and reload the failed rows to finish your data load.
Please refer to the table for an outline of some common errors that may arise when importing your Reference Data Template
Due to relationships between Objects in Maica, some Data Objects being imported may have a Related Record Name field. This essentially means that certain Objects will have columns in their Reference Data Template that call for the Name Value of a related Object. This Value represents a lookup field linking the record to another related record. In the Reference Data importing process we use the Name Value from the related Object to search for, find and relate the imported record.
As a result, certain Objects need to be imported prior to others that may be searching for a related record.
For example: A Price Book Entry will rely on a Product, hence Products must be imported into Maica prior to Price Book Entries. This is because you need Products to create a Price Book Entry, which is shown in the Price Book Entry Template through the Related Record Name column of Product Name, as shown below. Hence, when importing Price Book Entries into Maica, the system will search for the related Products that must have been previously imported.
The logic below outlines the Data Object relationships and the required import order of each of them.
The above logic shows that each object (or group of objects) on the right depends on the object (or group of objects) on the left. Arrows (->) indicate the dependency, meaning the object on the left must be imported before the object on the right can be correctly imported or used.
The table below describes some common errors and solutions that can occur when attempting to import a Reference Data Template into Maica.
Two sections of the hold the published rates and indexation values that the billing and indexation engines read. The Interest Rates section changes every quarter; the Indexed Rates and Supplements section changes twice a year at indexation. Keeping these values current is the administrator's responsibility, and the engines use whatever is stored here at the time they run.
The Australian Government publishes these two rates each quarter, on 1 January, 1 April, 1 July, and 1 October. Update both when a new quarterly notice is released.
These values are reindexed twice a year, on 20 March and 20 September. Update them when each new indexation is published, before you run the indexation engine.
Entering a value on this tab does not recalculate anything by itself. The stored values are read by other processes when they run:
The billing engine reads the BDF standard rate and the maximum accommodation supplement as it bills.
The indexation engine reads the BDF standard rate and the DAP index number at each indexation date.
The departure process captures the BIR when a refund is processed.
For the mechanics of indexation, see .
The residential billing processes are designed to run automatically on a schedule, but administrators also need to intervene directly from time to time, for example to correct a single resident's rate. This article covers how a manual rate change is applied to one Agreement Item.
When a single resident's rate needs to change, use the Change Rate action on the relevant row of the Fees tab rather than editing the fee item directly. Editing a fee item changes the existing record in place, which does not preserve a clean rate history, does not honour a separate effective date, and does not trigger the retrospective correction of any periods already billed. The Change Rate action does all three.
A manual rate change follows the same add-only pattern the system uses for a rate change detected from Services Australia:
The current Agreement Item is end-dated at the day before the effective date.
A successor Agreement Item is created at the new rate, starting on the effective date.
The retrospective adjustment chain corrects any periods already billed at the old rate within the affected window.
The outcome is identical to the Services Australia Apply Changes path; only the trigger is different.
The action enforces a few rules before it will apply the change:
The new rate must be greater than zero.
The new rate must be different from the current rate.
The effective date must be after the item's current start date.
The effective date must be no more than one month from today.
Learn about Xero Integration Settings in Maica
This section of Maica allows administrators to manage and configure their Xero integration.
Please see the breakdown below for further information on each section:
Ensure the Xero Integration toggle at the top of the settings page is switched to Enabled. This is required to activate any of the settings or integrations below. If this toggle is off, Maica will not attempt to communicate with Xero, and synchronisation will not occur.
Active Connections display which Xero organisations Maica is currently linked to. If multiple companies exist in your Xero instance (e.g. a Production and Demo organisation), Maica will list them here and allow you to select the one to connect with.
This section configures the Site Maica will use to listen for real-time Xero Notifications.
This section controls how invoices are synchronised between Maica and Xero.
Invoice Xero Sync Flow: Select the Automation flow responsible for pushing invoices to Xero.
Run Now: Click this button to manually trigger the Invoice Synchronisation.
Once configured, Maica will regularly run the selected flow to keep Xero updated with Maica invoice records.
When Services Australia recalculates a resident's means tested or income tested fees, the provider needs to apply the new rate and correct any amounts already billed at the old rate. The fee detection process automates this: it polls Services Australia per resident, detects rate changes and cessations, and applies them through the same add-only update path used everywhere in RACS.
This is distinct from indexation. Indexation applies government-published standard rates to everyone at once (see ); fee detection applies per-resident rate changes that Services Australia calculates from each resident's means assessment.
The fee rate check is implemented as the RAC_ResidentFeeCalloutBatch class. It is a scheduled, batched, callout-capable process that runs one Agreement Item per chunk, so each transaction can make its own outbound call to Services Australia.
It is gated by the Automate Resident Fee Rate Updates toggle on the . When the toggle is off, the batch does no work and records a log entry confirming it was blocked, so administrators can keep a schedule in place and use the toggle as the on/off control.
The batch only considers active Agreement Items on active residential agreements, and only those whose fee type is one of the means tested or income tested contributions that Services Australia publishes per-resident rates for: the Means Tested Care Fee, Income Tested Fee, Daily Accommodation Contribution, Non-Clinical Care Contribution, and Hotelling Contribution.
Learn about Integration Settings in Maica
These settings determine how Maica manages all of their Integrations and their function throughout the application.
To dive deeper into each of the Integration's Settings, please visit their specific pages linked below:


Number
The current DAP indexation number published by Services Australia. The indexation engine uses it to recalculate DAP rates for residents under 1 November 2025 fee arrangements.
Current DAP index number from Services Australia. Enter before running the Indexation Engine.
Max Accommodation Supplement
Currency
The maximum daily accommodation supplement rate the government pays for low means residents. The billing engine uses it to determine accommodation payment eligibility and to help calculate means tested care fees.
Maximum daily accommodation supplement rate. Indexed on 20 March and 20 September.
RAC Current MPIR
Percent
The current Maximum Permissible Interest Rate (MPIR). Used to convert between a lump sum (RAD) and a daily payment (DAP), and to calculate the Daily Accommodation Contribution (DAC), at the time a new accommodation agreement is signed.
Current MPIR published by the Australian Government. Updated quarterly. Used for new accommodation agreements.
RAC Current BIR
Percent
The current Base Interest Rate (BIR). Used to calculate the interest owed to a resident or their estate when a refundable accommodation deposit is refunded late.
Current BIR published by the Australian Government. Updated quarterly. Used to calculate interest on delayed refunds at departure.
RAC BDF Standard Rate
Currency
The current published standard Basic Daily Fee (BDF). The indexation engine reads this rate when it updates Agreement Items at each indexation date.
Current published BDF daily rate. Updated in March and September at indexation.
The MPIR stored here is the rate used for new agreements. The MPIR that applied when an existing agreement was signed is captured separately on that resident's Service Agreement, so updating this field does not change the rate locked in on agreements already in place.
Enter the new DAP Index Number before triggering the indexation engine. The engine reads the value stored here at the moment it runs, so an out-of-date index number produces out-of-date DAP rates.
RAC DAP Index Number
Hotelling Contribution is polled because Services Australia publishes a rate for it, even though the billing engine applies no cap to it locally. Daily Accommodation Contribution is the Maica label for the fee Services Australia calls the Means Tested Accommodation Contribution; they are the same fee.
For each resident item, the callout returns one of four outcomes:
No change
The Services Australia rate matches the current rate. The last-checked timestamp is updated; nothing else changes.
Rate change
Services Australia reports a different rate or start date. The change is applied.
Cessation
Each Agreement Item carries a Fee Last Checked timestamp (Fee_Last_Checked_DateTime__c). Where it is populated, the batch sends it to Services Australia as the "updated from" parameter, so each poll asks only for changes published since the previous one. On an item's first ever poll the parameter is omitted entirely and the full picture is requested.
A poll that completed still advances the watermark even when the answer was uninteresting. That includes a response that came back empty, and a response the classifier could not use. In both cases Services Australia answered, so the window has genuinely been covered. Declining the stamp only on a failure costs at most one extra night of replay.
When a watermarked poll returns no rows at all, that is the normal steady state of a fee that has not changed. The batch treats it as no change, and deliberately writes no log entry, because one warning per unchanged fee per night would be noise rather than signal.
This is distinct from a response that arrives carrying rows but none for the fee code that was asked about. That case is classified and does produce a warning, because Services Australia answered about the resident without mentioning the fee.
An integration failure never end-dates an Agreement Item and never stops the batch. A 4xx or 5xx response, an amount that cannot be parsed, a missing service or care recipient identifier, and an unconfigured PRODA provider all degrade to no change plus one warning, and the run moves on to the next item. The item keeps its previous watermark, so the next run re-asks for the same window.
When a change or cessation is detected, the update is applied by the RAC_FeeUpdateService using an add-only pattern, so history stays clean and already-billed periods are corrected rather than overwritten.
Rate change. The current Agreement Item is end-dated at the day before the new start date, and a successor item is created at the new rate from the new start date. The retrospective adjustment chain then corrects any periods already billed at the old rate. Cap and retention totals carry forward to the successor so the resident's accumulated caps are not reset by a rate change.
Cessation. The current item is end-dated at the cessation date, no successor is created, and a full credit is generated for any periods billed beyond the cessation.
The successor item is seeded with its own billing cursor before it is inserted, derived from where the predecessor stopped. Without that seeding a successor would carry no cursor, and the billing engine only selects items whose cursor is populated, so the fee would never bill again. See Next Billing Date and Catch-Up Chains.
Several fee types are deliberately kept out of automated rate detection because they are maintained by other processes:
Basic Daily Fee and Daily Accommodation Payment are reindexed by the indexation engine.
RAD/RAC Retention is calculated by the retention service against the lump sum.
Higher Everyday Living Fee and Extra Service Fee are provider-set and not driven by Services Australia rate detection.
In addition, an individual Service Agreement can be marked as excluded from automated rate changes using the Exclude from Automated Rate Changes checkbox (Exclude_From_Automated_Rate_Changes__c) on the Service Agreement. When set, the resident is removed from both the scheduled fee rate check and the indexation engine. This is intended for residents whose fees are managed manually, such as short-stay respite residents billed in advance for the whole stay. The manual Check Fee Rates action remains available for an excluded resident.
A failed poll does not advance the watermark. Only a poll that actually completed updates the timestamp. This matters because the watermark is fed straight back to Services Australia on the next run: stamping a failed attempt would make the following poll ask only for changes since an attempt that never landed, and a rate change published inside the missed window would never be seen again. The resident would keep billing at the old rate indefinitely, with nothing to indicate it.
// Primary Object Relationships
Products -> PriceBook -> PriceBookEntry -> AppointmentService
// Additional Object Relationships
Connections -> Contacts
Unavailability, Availability -> Resource
ResourceSkills -> Resource
ParticipantGoals -> Contacts
ShiftResources -> Shifts
ChecklistItems -> ChecklistClick here to view and download the complete Reference Data - Common Errors sheet


Learn about Maica's Software Release and Upgrade Process
When Maica issues a new solution version, a number of artefacts will be published alongside any release, including the following:
We showcase most of Maica's features on our website through a number of interactive videos that allow you to experience Maica with ease. When a new release is about to be published, we will add any relevant feature videos to this site so please visit to find out what's new.
Our Knowledge Base is the main tool for you to understand how Maica works, both from an end-user and administration perspective. We will update any relevant articles or add new ones to reflect all new features or improvements in Maica to make sure you have access to the latest information on how it works.
Release Notes are an essential part of any Maica release and we will publish these on our website as a page and downloadable PDF. This will include all required post-installation steps and scripts in case you want to upgrade Maica yourself.
We have a Maica LinkedIn profile on which we publish almost daily, so please check in for the latest information, updates, and release information. We will post all new releases here for your ease of access.
If you are a current Maica client, you will be on our broadcast list so you will receive a special type of broadcast to announce a new release. This will then also includes links to all of the above for your convenience. Look out for these!
The Maica software release and upgrade process is outlined below to ensure clarity across the various tasks and responsibilites that take place during this timeline.
Maica will release a package to its clients only if all of the below have been tested and published:
Software Package
the technical package which will be installed using a URL
Release Notes
The next stages look at client-specific customisation that might have been configured by an implementation partner to ensure compatibility with these unique structures. This will involve the following steps/tasks:
The implementation partner will investigate and determine any client-specific post-installation steps or scripts that need to be run. This might involved additional development work to ensure compatibility going forward.
The client is then asked to complete the in which we seek proof that all relevant testing was completed in a reppresentative sandbox to ensure the upgrade will be successful.
Once this has been completed (via DocuSign), the relevant team members from the implementation partner and the client are allocated to the Maica upgrade project with the following artefacts to be part of the upgrade:
Services Australia's payment statement reports what it actually paid or recovered for each resident in a claim month. That figure can differ from what Maica has already charged or credited the resident, because of timing, rounding, or part-period calculations. The statement reconciliation service closes that gap by generating a reconciliation adjustment for any difference, using the Services Australia authorised amount as the reference.
This article explains what the service does, when it runs, and how it avoids double-adjusting a period already corrected elsewhere. It is written for administrators and power users who support billing and reconciliation.
After the payment statement data for a claim month has been brought into Maica as entitlement records, the service compares the amount Services Australia authorised for each resident-facing entitlement against what Maica has already adjusted for the same fee type and month. Where there is a difference, it generates a Statement Reconciliation invoice line item to close it:
A credit where Services Australia's figure means the resident was overcharged (for example a means tested fee refund).
An additional charge where the resident was undercharged (for example a reduction that Maica had not yet applied).
The Services Australia authorised amount is treated as the reference figure throughout.
There are two ways the service runs.
When the claim for a month is approved and the payment statement breakdown has been synced, the service runs as the final reconciliation step, provided the Automate statement reconciliation setting is switched on. It runs within the same claim sync process and does not make its own calls to Services Australia.
You can run the Run Reconciliation quick action on a resident's Funding Item record to reconcile that one resident on demand. This is useful when the automatic step is switched off, or when you want to reconcile a specific resident after resolving an issue. The manual path uses the same logic as the automatic path, scoped to the single Funding Item.
For each resident-facing entitlement reported by Services Australia, the service:
Confirms the payment type is in scope. Only resident-facing credit and charge types are reconciled. Each in-scope type is mapped to the relevant fee, such as the means tested care fee, income tested fee, daily accommodation contribution, non-clinical care contribution, or hotelling contribution.
Resolves the matching agreement item for that fee and month on the resident's service agreement.
Nets off existing rate adjustments already applied for that agreement item and month.
If the claim sync is retried on a month that has already been reconciled, the service does not create duplicate adjustments. The check against existing adjustments naturally prevents a second reconciliation of the same period, so providers can safely re-run the claim sync without distorting resident balances.
The Regulatory Caps and Durations section of the holds the government-set limits that stop a resident from being charged more than the law allows for certain fees, plus the maximum periods over which those charges and retention deductions may apply. Update these values when the Department of Health, Disability and Ageing publishes revised caps or durations.
The Non-Clinical Care Contribution (NCCC) applies to residents under 1 November 2025 fee arrangements. Two settings limit it: a lifetime dollar cap and a maximum number of years it can be charged. Whichever limit is reached first stops further NCCC charges.
The Means Tested Care Fee (MTCF) applies to residents under 1 July 2014 fee arrangements. It is limited by both an annual cap and a lifetime cap.
Retention is the amount a provider may deduct from a resident's RAD or RAC lump sum over time. The retention duration sets how long those deductions may continue.
Several residential aged care rates are reindexed by the government twice a year, on 20 March and 20 September. The indexation engine applies those new rates to every resident's active Agreement Items in one pass, so administrators do not have to re-rate items by hand. It is implemented as the RAC_IndexationEngine Apex class.
Unlike the daily billing engine, the indexation engine is run on demand rather than on a schedule. The administrator first updates the published indexation values on the RACS Configuration tab, then runs the engine to push those values onto the Agreement Items.
The indexation engine is run from the Run Indexation action button in the Indexed Rates and Supplements section of the . It sits alongside the Basic Daily Fee standard rate and DAP index number fields, because those are the values it applies. Selecting it runs a single indexation pass over the in-scope Agreement Items.
The button is disabled only when both the Basic Daily Fee standard rate and the DAP index number are blank, since with neither value present there is nothing to apply. Its tooltip reads: "Enter the new BDF rate and DAP index number before running the Indexation Engine."
Because the engine reads the values stored on the Setting record at the moment it runs, the order of operations matters.
When you select the button, Maica shows a warning confirmation dialog before it does anything, warning that the run will apply the new rates to all in-scope active Agreement Items and that the action cannot be undone in a single step. You confirm to proceed.
When run with no specific scope, the engine processes every active residential Agreement Item. It can also be run against a chosen subset of items, which is useful for re-running a single item or previewing on a small sample.
For each item it updates, the engine stamps the Last Indexed Date. It will not index an item that has already been indexed on the same day, so an accidental double-click is harmless: the second run records the item as skipped rather than indexing it twice.
The engine returns a per-item outcome of Updated, Skipped, or Failed, each with a reason, plus a run-level summary. Per-item errors are isolated so one bad item does not stop the rest. If a Basic Daily Fee item is in scope but the standard rate is missing from the configuration, the whole run stops up front with a clear message, so the administrator can correct the setting before any items are touched.
Two fee types are re-rated by the engine:
Not every fee is indexed by this engine. The following are deliberately left alone:
Daily Accommodation Contribution (DAC) is excluded. DAC tracks the Maximum Permissible Interest Rate, not the pension or DAP index, so it is not the indexation engine's responsibility.
Hotelling Contribution and Non-Clinical Care Contribution are currently out of scope for indexation. They are recorded with a skipped status so the outcome is visible rather than a silent no-op.
Any other fee type is out of scope and skipped.
An individual Service Agreement can be marked as excluded from automated rate changes using the Exclude from Automated Rate Changes checkbox on the Service Agreement. When set, that resident's items are removed from the indexation engine's scope, as well as from the scheduled fee rate check. This is intended for residents whose fees are managed manually, such as short-stay respite residents billed in advance for the whole stay. The manual Check Fee Rates action on the agreement is unaffected by the flag.
Learn about the Automation involved when Importing Data into Maica
As part of the , Automation is involved to ensure it's successful completion.
When using the tool, you are prompted to select a Flow Setting that essentially tells Maica which type of Data you are wanting to Import and allows the Automation to read the files correctly. It is important to understand the logic within the Automation and the altercations to the Data that will be involved when doing so. This article explains the logic behind each Flow Setting in more detail.
This flow is designed to automate the import of NDIS support items and their associated prices based on various state-specific rates and conditions.
Not every fee is billed the same way. The billing engine reads the Fee Type on each Agreement Item's linked Support Item and applies the processing rules that fee type requires: some fees are subject to regulatory caps, some are gated by a duration, and most are billed straight through. This article explains how fee types are classified, how caps are validated, what happens when a period produces no charge, and how billing changes on the day a resident departs.
The engine groups fee types into three handling classes.
Three residential aged care processes are designed to run automatically on a schedule: the billing engine, the resident fee rate check, and the held event status check. Each is registered as a job on the Schedules tab, where an administrator sets its run time and frequency. This article describes the three jobs, how each is enabled, and what the held event status check does when it runs.
It is written for administrators who configure and monitor the RACS background processes.
Each job appears as a row on the Schedules tab in the Billing Settings area, using the same controls as the other packaged Maica batch jobs.
When a fee rate change takes effect on a date that falls inside a period that has already been billed, the resident has been charged at the old rate for days that should have been charged at the new rate. The fee adjustment service generates a compensating invoice for the difference, so the resident's account reflects the correct rate without the original invoices having to be reversed.
This article explains what the service does, when it runs, and how the adjustment is calculated. It is written for administrators and power users who support the billing process.
The service produces a single adjustment for the retrospective window, which runs from the new rate's start date to the last period already billed at the old rate. The adjustment is either:
An additional charge, when the rate increased, or
The fee has stopped for this resident.
Error
The callout failed. No change is made, and the error is logged. The batch continues with the next item.
these can be found here for reference and will contain a detailed description of all features/bugs fixes/etc introduced as part of any given release
Post-Installation Steps
these are usually steps that need to be taken to configure any additional elements that the automated installation process does not address
Upgrade Team Members
Client-specific technical scripts (to be run in the client's Salesforce production instance)
Acceptance Certificate to be issued following the upgrade project completion.
Learn about Agreement Management Settings in Maica
These settings determine how Maica manages all Agreements and their function throughout the application.
To dive deeper into either Renewal, Rollerover or Price List Settings, please visit their specific pages linked below:
Learn about Agreement Item Rollover Settings in Maica
Configure automatic funding rollover from expiring Agreement Items to the next period, and the daily batch schedule.
Enable Funding Rollover When enabled, Maica will automatically process Agreement Item funding rollover via a nightly batch job. Unspent funds from a completed agreement period will be rolled into the next period's Total Allocated amount where a valid next period exists within the configured gap tolerance. When disabled, rollover must be triggered manually via the Rollover Quick Action on the Agreement Item record.
Gap Tolerance Defines the maximum number of days between the end of one agreement period and the start of the next for automatic rollover to be triggered. If the gap between periods exceeds this value, the rollover will not be processed automatically and will require manual intervention.
Rollover Job Time The time at which the nightly funding rollover batch job will run each day. It is recommended to schedule this outside of peak usage hours to minimise any impact on system performance.
Before generating an adjustment, the service nets off any existing Rate Adjustment line items for the same agreement item and month. If a rate change correction has already been applied, only the residual difference is reconciled, so the resident is never double-charged or double-credited.
Some payment types cannot be mapped to a single fee with certainty. Where a payment type is ambiguous, the service records the case against the claim batch's sync error details and skips it, then continues processing the remaining entitlements. These skipped cases should be reviewed and resolved manually.
Currency
The maximum MTCF a resident can be charged within one cap year. Applies to 1 July 2014 fee arrangements.
Government-set annual cap for MTCF charges per cap year. Applies to 1 July 2014 fee arrangements.
RAC NCCC Lifetime Cap
Currency
The maximum total NCCC a single resident can be charged across their entire time in residential aged care. Applies to 1 November 2025 fee arrangements.
Government-set lifetime cap for NCCC charges. Update when the published cap amount changes.
RAC NCCC Duration (Years)
Number
The maximum number of years a resident can be charged NCCC, measured from the date they first started paying it. Once this period elapses, no further NCCC may be charged even if the lifetime cap has not been reached.
Maximum years NCCC can be charged. Currently 4 years from first NCCC charge date.
RAC MTCF Lifetime Cap
Currency
The maximum total MTCF a single resident can be charged across their entire time in residential aged care. Applies to 1 July 2014 fee arrangements.
Government-set lifetime cap for MTCF charges. Applies to 1 July 2014 fee arrangements.
RAC Retention Duration (Years)
Number
The maximum number of years over which retention may be deducted from a resident's lump sum, measured from the date of their first lump sum payment. The billing engine stops retention deductions once this duration elapses.
Maximum years retention can be deducted from a lump sum. Currently 5 years from first payment.
The NCCC duration is measured from the resident's first NCCC charge date, not from their entry date or a calendar year. It is currently legislated at 4 years.
A cap year is the 12-month period that begins on the anniversary of the resident's first entry to aged care. It resets on each resident's own entry anniversary, not on 1 July. Because the window is per-resident, two residents can have annual caps that reset on different dates.
RAC MTCF Annual Cap
Flow Label
Maica - NDIS Import Support Items Catalogue
API Name
maica__Maica_NDIS_Import_Support_Item_Prices
Type
Autolaunched Flow
This flow imports NDIS support items and their associated prices based on state-specific rates and conditions.
Starts automatically and checks if the Support Item Number is present.
Calls the import support item Apex action if the item number is valid.
Passes variables like allowed states, claim types, prices for different regions, and item details.
Handles errors by assigning appropriate fault messages when required.
This flow is designed to facilitate the configuration and import process for the NDIS Support Catalogue. It allows users to select specific areas (states) and provides the option to include additional descriptions for the generated Price Books.
Flow Label
Maica - NDIS Support Catalogue Import Configuration
API Name
maica__Maica_NDIS_Support_Catalogue_Import_Configuration
Type
This flow streamlines the process of importing NDIS support catalogue data into Maica by allowing users to configure Price Book creation for specific states.
Users select states for which Price Books will be generated.
A description can be added for each Price Book.
The created Price Book records are used to organise NDIS support items based on regions.
This flow is designed to handle the import of CSV data into the Maica system, populating various reference data objects such as Appointment Service, Availability, Checklist, Client Goal, and others. The flow allows for creating and updating records for these objects based on imported data, and provides error handling mechanisms for any issues during the import process.
Flow Label
Maica - Client Care Reference Data Import Handler
API Name
maica__Maica_Client_Care_Reference_Data_Import_Handler
Type
This flow processes CSV imports and creates or updates reference data records for the Maica system, handling various objects related to client care.
Determines the object type from Object_API_Name and processes it accordingly.
Creates or updates records for objects such as Appointment_Service, Availability, Checklist, Client_Goal, Resource, and more.
Provides error handling mechanisms to capture and log faults during the import process.
This flow is designed to handle the import of reference data objects for Maica Client Management via a CSV. It looks up and creates records for several Salesforce objects such as Product2, Pricebook2, Connection__c, Support_Category__c, and PricebookEntry.
Flow Label
Maica - Client Management Reference Data Import Handler
API Name
maica__Maica_Client_Management_Reference_Data_Import_Handler
Type
This flow imports client management reference data from CSV into Maica.
It handles objects such as Product2, Pricebook2, Connection__c, Support_Category__c, and PricebookEntry.
The flow performs the following actions:
Looks up existing records (e.g., Contact, Product, Support_Category).
Assigns values to variables (e.g., Connection__c, Product2, Support_Category__c).
Non-Clinical Care Contribution (NCCC), Means Tested Care Fee (MTCF)
Routed through the Cap Service, which limits the chargeable amount to remaining cap headroom.
Retention
RAD/RAC Retention
The deduction amount is calculated by the Retention Service; the Cap Service gates whether retention is still within its duration.
Pass-through
Income Tested Fee (ITF), Basic Daily Fee, Hotelling Contribution, Daily Accommodation Payment, Daily Accommodation Contribution, Accommodation Charge, and other fees
Billed at their calculated amount with no monetary cap.
The Cap Service is the authoritative gate on which fee types have cap semantics. It only accepts NCCC, MTCF, ITF, and retention. The accommodation and daily fees are never sent to it; they pass through at their raw amount.
For capped fee types, the engine asks the Cap Service to evaluate the proposed charge against every applicable cap before billing it. The service returns the chargeable amount (clamped to remaining headroom, or zero if fully blocked), the cap that was hit, and a human-readable reason.
NCCC
A duration cap (no NCCC after the resident's NCCC expiry date) and a lifetime cap (cumulative NCCC against the configured lifetime cap).
MTCF
An annual cap (per-resident, see below) and a lifetime cap.
RAD/RAC Retention
The cap values themselves are configured on the RACS Configuration tab and documented in Caps and Duration Settings.
When a cap is engaged, the chargeable amount is reduced to whatever headroom remains (which may be zero), and the engine sets Cap Reached on the Agreement Item. A capped item drops out of the engine's selection on subsequent runs, so it is not re-evaluated until its circumstances change (for example, an annual cap resets). A charge that exactly fills the remaining headroom is still treated as a cap hit so the item is correctly flagged.
The MTCF annual cap does not follow the financial year. Each resident has their own cap year that begins on the anniversary of their first entry to aged care. When a run falls on or after the next anniversary, the engine rolls the cap year over: it resets the resident's annual cumulative totals to zero and advances the cap year start to the current anniversary, so a fresh year of headroom is available for that day's charge. This rollover happens before the annual cap is evaluated.
A period can resolve to nothing chargeable for more than one reason, and the engine treats each differently. The distinction matters because it decides whether the item bills that period again.
A cap engages and leaves nothing chargeable
None
Not advanced
Cap Reached is set and Billing Status goes to Complete. The item is finished and drops out of scope
The second row is the one worth understanding, because leaving the cursor alone there would be the more cautious-looking choice and is in fact the damaging one: the item would stay permanently due, and every catch-up run would replay the same empty period indefinitely.
Billing on the day a resident departs is handled by the departure process rather than the standard daily cycle. The governing principle is that fees which depend on a government subsidy are not charged for the departure day, because no subsidy is payable for it. Self-funded charges, such as the Basic Daily Fee and a self-funded Daily Accommodation Payment, may still apply.
Capped
The engine never creates an Invoice Line Item with a quantity of zero or less, whatever the fee type. Such a line is rejected by validation at commit time and would take the whole chunk's commit down with it, so the engine fails that one item instead and leaves the rest of the run intact.
RAC Billing Engine
RAC_BillingEngine
Bills every due Agreement Item and rolls up invoices
01:00
RAC Resident Fee Rate Check
RAC_ResidentFeeCalloutBatch
Polls Services Australia for per-resident fee rate changes
02:00
RACS Held Event Status Check
RACS_HeldEventStatusBatch
The three jobs differ in how they are gated. Two are controlled by an automation toggle; the third runs whenever it is scheduled.
The billing engine and the fee rate check are each gated by an automation toggle on the RACS Configuration tab (stored on the Billing Setting record):
RAC Billing Engine
Automate Billing Engine (Automate_Billing_Engine__c)
RAC Resident Fee Rate Check
Automate Fee Rate Updates (Automate_Fee_Rate_Updates__c)
When a job's toggle is off, its row on the Schedules tab is shown but disabled, so you can see the job exists without it being able to run. This visible-but-disabled pattern mirrors the existing Calculate Total Committed job. Turn the toggle on to enable the row, then schedule the job.
The RACS Held Event Status Check has no automation toggle. Once you schedule it, it runs on its schedule. It is enabled simply by being scheduled on the Schedules tab.
The held event status check is a daily sweep that keeps the status of held Aged Care Events current, complementing the manual status refresh a user can run on an individual event.
When it runs, it looks at every held Aged Care Event that has a Services Australia event ID, across all event categories, and for each one calls Services Australia to refresh its status. It processes one event per batch chunk, because each refresh makes its own callout and commits its own result.
The sweep refreshes events in seven categories, routing each to the matching Services Australia read:
Entry
Departure
Leave
Opt In
Enteral Feeding
Oxygen
Extra Service
Every category has a status-read interface at Services Australia, so no held event is left unrefreshed because of its category. A category the sweep cannot match to a read still falls through to the skip branch and is logged as a warning.
Each event is refreshed inside its own error boundary, so one failure never stops the sweep:
A successful refresh updates the event's status.
The batch itself does not write status, ETag, or version back to the event; that writeback is handled by the GetProc's MapProc.
A failed refresh is logged as an error, and the event stays held. The sweep moves on to the next event.
When the sweep finishes, it writes a single rollup Info Log__c with Source = RACS Held Event Status Batch.
The adjustment is recorded as an invoice line item marked as a Rate Adjustment, raised against the resident's service agreement through the shared adjustment invoice process. It does not alter the original invoices.
There are two ways the service is triggered. Both follow the same calculation logic, so the result is the same regardless of how the rate change arose.
When a rate change is applied to an agreement item (for example following a detected government rate change), the fee update process creates the new agreement item and then invokes the adjustment service for any billing already stamped at the old rate inside the window. The same happens when a fee ceases: the service is invoked with an effective new rate of zero, producing a full credit for any billing after the cessation date.
When a provider records a rate change in the Manage RACS Agreement component and the new agreement item's start date is earlier than the period last billed on the previous item, the save handler invokes the same adjustment service. This lets providers generate adjustments from manually entered rate changes, not only from changes detected from Services Australia.
The calculation follows a consistent sequence:
Determine the window. The window starts at the new rate's start date (or the cessation date) and ends at the last period billed on the previous agreement item. If nothing was billed in that window, the service exits cleanly and no adjustment is created.
Find the affected line items. The service reads the existing line items on the previous agreement item that fall within the window. Line items already marked as a Rate Adjustment are excluded, so a period is never adjusted twice.
Work out the adjustable quantity. For each line item, the service uses the billed quantity, splitting it proportionally where a billing period straddles the window start so that only the in-window days are adjusted.
Apply the rate difference. The adjustment uses the difference between the new and old rate. For a cessation, the new rate is zero, so the difference is the full old rate as a credit.
Deduplicate against statement reconciliation. Before creating the adjustment, the service checks for existing Statement Reconciliation line items covering the same agreement item and period. If reconciliation has already corrected some or all of the difference, only the residual amount is generated.
If, after these steps, there is nothing left to adjust (the rate is unchanged, the quantity is zero, or reconciliation already covered it), no adjustment invoice is created.
The fee adjustment service works entirely on existing Maica data. It does not call Services Australia, it does not create or end-date agreement items (that is the fee update process), and it does not perform cap validation or leave counting. Its single responsibility is to calculate and raise the adjustment for an already-billed period.
The adjustment quantity is derived from the existing invoice line items in the window, not recalculated from calendar days. The original line items already reflect any leave adjustments, pro-rata splits, or cap limits applied when they were billed, so reusing them keeps the adjustment consistent with the original charge.
Because the service excludes prior Rate Adjustment line items and nets off existing Statement Reconciliation line items, it is safe for the same rate change to be processed by both the detection path and the reconciliation path without double-charging or double-crediting the resident.
Basic Daily Fee
The rate is set to the current Basic Daily Fee standard rate held on the RACS configuration.
Daily Accommodation Payment
The rate is scaled by the ratio of the current DAP index number to the index number captured for that item at entry. This moves the original agreed rate to its present-day equivalent.
Update the indexation values on the before you run the engine. Enter the new Basic Daily Fee standard rate and the new DAP index number first, then run indexation. Running it against stale values produces stale rates.
Re-running indexation on the same day is safe and does not raise an error. The engine returns a SUCCESS toast summarising the run, including a count of items skipped because they were already indexed that day. A same-day re-run simply reports everything as skipped.
The Annual Prudential Compliance Statement (APCS) requires providers to account for residents' refundable accommodation deposits and contributions. Maica provides an export tool that produces a resident-level RAD/RAC ledger for a facility and financial year, as a CSV the provider gives to their APCS auditor. The export is a reference document; it does not submit to the ACFR portal.
This article explains where to find the tool, what to select, and how to read the ledger it produces. It is written for administrators.
The export tool lives inside Maica Settings, under the Residential Aged Care Services menu, on the APCS Export tab. It is not a separate app or tab; access is granted through permission sets rather than profiles.
The tool takes two inputs:
Facility. The Location whose RAD and RAC accounts you want to export.
Financial year. The reporting period, as a financial year (for example 2024-25). Only completed financial years can be selected; the year currently in progress is not offered.
Running the export downloads a CSV. There is no on-screen preview; the output is the CSV file only. The export reads existing Maica data and does not call Services Australia.
The export produces one row per in-scope lump sum account under the facility for the year:
Included: accounts whose deposit type is a Refundable Accommodation Deposit (RAD) or a Refundable Accommodation Contribution (RAC).
Included even when dormant: an account that carried a balance forward from a prior year but had no transactions during the year appears with its opening and closing balance equal to the carried-forward amount and all year totals at zero.
Excluded: Accommodation Bond accounts, and residents with no lump sum account (for example DAP-only residents), which have no ledger to report.
Departed residents appear first, ordered by departure date, followed by current residents ordered by name. This groups the residents whose refunds an auditor is most likely to scrutinise at the top of the ledger.
The ledger has 15 columns, in the following order. The figures for the year are derived from the lump sum transactions recorded against each account.
Learn about the Total Committed Calculation in Maica
In Maica, the Total Committed field helps monitor committed funding within a . It combines records and forecasted usage from Recurring Schedules to reflect committed values. The calculation is governed by a global setting and can be adjusted with manual overrides when needed.
As mentioned, the Total Committed calculation provides visibility into the total expected expenditure under a Service Agreement, combining:
Actuals: Delivery Activities that have been completed and/or invoiced
Forecasts: Recurring schedules and upcoming appointments
The following fields underpin the calculation logic:
Is Committed Formula:
Once the is enabled, three background batch jobs are triggered:
Clear existing values
Process existing Delivery Activity records
Forecast from uncreated Appointment records based on recurring schedules
Quick Action: Allows you to recalculate Total Committed on a Service Agreement manually as well as preview Total Committed Values for a specified Date Range.
Scheduled Jobs: Background jobs clear and process all Delivery Activities when enabled. Job automation is handled via the Scheduled Jobs tab.
Forecasting Logic: Includes future Appointment records derived from recurring schedules.
Learn how to add Maica Actions to your Salesforce Global Actions menu.
The following article describes the process of adding Maica Actions to your Salesforce Global Actions menu.
Click on the Setup icon in the top-right corner of Salesforce.
In the Quick Find search bar, type Global Actions or Publisher Layouts.
In the left-hand menu, expand User Interface > Global Actions.
Click on Publisher Layouts.
Locate the Global Publisher Layouts section.
Click Edit next to the existing layout you want to modify.
In the layout editor, find the Global Layout panel.
Click on Mobile & Lightning Actions to display the Maica Actions.
In the Quick Find bar, identify the Maica Actions.
Drag and drop Maica Actions into the Salesforce Mobile and Lightning Experience Actions section.
Click Save in the layout editor to apply your customisation.
Refresh your Salesforce browser window.
Click on the Global Actions dropdown in the top-right corner.
Confirm that Maica Actions now appears at the top of the menu.
Check out the guide below to watch each step in real time.
Learn about Maica's Care Recipient Sync logic.
The Care Recipient Sync process retrieves data from the Services Australia "Support at Home" API suite. This process uses the Care Recipient ID to pull funding and support-related data for a single Care Recipient and stores the data across various related objects, all associated with a parent Plan record. The sync ensures that Plans, Budgets, Services, Contributions, and Budget Usage in Maica always reflect the most up-to-date information from Services Australia.
The Care Recipient Sync can be triggered in three ways:
On-demand — Via the "Synchronise Budget Information" quick action on a Care Recipient record
Bulk synchronisation — Via the Admin Console bulk participant sync functionality
Learn about Maica's Care Management Budget Sync function and logic.
Maica supports real-time synchronisation of Care Management Budget Data for Aged Care providers under the Support at Home initiative. This feature ensures accurate visibility of pooled Care Management funds as reported by Services Australia. To learn how Maica supports the Sync, please refer to the detailed sections below.
Care Management budgets are pooled at the provider level rather than allocated per Participant. The Budget Sync functionality allows providers to retrieve current financial data directly from Services Australia via API, ensuring that all budget information used for planning and reporting reflects the latest available data.
Firstly, to access the Care Management Budget Sync, navigate to Settings > . You’ll see a Care Management Budget component that shows the current budget data and allows manual synchronisation.
Then, follow these steps to sync the Care Management Budget:
Each Care Management Budget is associated with a Service Provider ID. This ID is required to authenticate with Services Australia and trigger the sync process. Use the Sync Service Providers action to populate your Service Provider ID(s).
When using the Sync Service Providers action, Maica retrieves Care Recipient budget data, identifies the Service Provider IDs returned by Services Australia, and store each distinct Provider ID so it appears as its own tab.
Renewal Management lets Maica automatically generate a new Service Agreement ahead of an existing one expiring, so that participants experience no gap in funded service delivery. These settings control when the renewal runs, how the dates of the new Agreement are calculated, and who it is assigned to.
The renewal process only ever applies to Service Agreements that have an End Date and that have been individually opted in for renewal. It runs as a daily background job, and can also be triggered manually.
When the renewal logic runs, Maica looks for Service Agreements that meet the below. For each one, it creates a brand new Service Agreement by copying the expiring Agreement, including its Agreement Items, and then applies the date and owner settings you have configured.
The new Agreement is always created in Draft status. This gives you the opportunity to review and adjust the renewal before it becomes active, rather than having a live Agreement appear without oversight.
For a Service Agreement to be picked up by the renewal process, both of the following must be true:
The Combination payment method is for residents who pay part of their accommodation as a lump sum and the rest as a daily payment. The lump sum sits in their Lump Sum Account; the daily part is charged through a Daily Accommodation Payment (DAP) fee item. Because the two are linked, any change to the lump sum balance must change the daily DAP the resident owes. Maica keeps the two in step through the DAP portion and its recalculation logic.
This article explains how the Combination method is wired, how the DAP portion is calculated, when it is recalculated, and the important difference in where the interest rate comes from depending on what triggered the change. It is written for administrators and power users.
Every resident with a lump sum account has a Payment Method, one of Full Lump Sum, Combination, DAP Only, or Undecided. Under Combination, the resident has paid part of the agreed room price as a lump sum and pays a daily DAP on the uncovered remainder. As the lump sum balance moves, the uncovered remainder moves with it, and so does the daily DAP.
This article provides a walkthrough of creating a new Participant Note Template in Maica
To utilise Participant Note Templates in Maica, please follow the steps outlined below.
In the Salesforce App Launcher, search for Participant Note Templates.
Click into the Participant Note Templates tab to create a new template.
Once there, click New to begin setting up a new template. You’ll be asked to fill out a few key details:
Name: Give your template a clear and descriptive name.
Refreshes the status of held Aged Care Events from Services Australia
03:00
Creates new records (e.g., Connection__c, Product2, Support_Category__c, PricebookEntry).
Includes decision logic to route based on the object’s API name (e.g., Product2, Pricebook2, maica__Support_Category__c).
Handles error conditions with fault messages (e.g., missing Standard Price Book).
Decision (Support Item Number Is Not Null):
Outcome: Null: If the Support Item Number is empty or null, the flow proceeds to the Handle Support Item Number Null step, which sets an error message.
Outcome: Not Null: If the Support Item Number is present, the flow proceeds to the Call Import Support Item step.
Call Import Support Item (Apex Action):
The flow uses the NDISImportSupportItemsPricesInvocable Apex class to import the support item and its associated prices.
The following input parameters are passed to the Apex class:
allowedStates: The states where this item is applicable.
claimTypesFormula: The applicable claim types, built from multiple variables like CANC, IRSS, etc.
priceACT, priceNSW, priceNT, priceQLD, priceRemote, priceSA, priceTAS, priceVeryRemote, priceVIC, priceWA: The price of the support item for each state or region.
priceBookDescription: Describes how the item appears in the price book.
isQuoteRequired: A Boolean indicating if a quote is required, calculated using the quoteFormula.
registrationGroupCode, supportCategoryName, supportCategoryNumber, itemName, itemNumber, supportItemType, unit: Key details such as the support item's name, number, type, and unit.
Handle Error (Assignment):
If an error occurs during any stage of the flow, the FlowFaultMessage variable is assigned the error message for tracking and troubleshooting purposes.
Handle Support Item Number Null (Assignment):
If the Support Item Number is not provided, the flow assigns the error message: "Support Item Number is required for import."
Selection of areas (states) for which Price Books will be created.
An optional description field to save relevant notes on the new Price Book(s).
Dynamic Choice Set (StateOptions):
Retrieves available states from the Pricebook2 object.
This dynamic choice set is used in the screen for state selection.
Assignment (Assignment):
The selected areas (states) and the description for the Price Books are stored in the respective variables.
The allowedStates and priceBookDescription variables are updated based on user inputs.
Decision (DECISION_Object_API_Name):
Determines the object type based on Object_API_Name and routes the flow accordingly to handle specific objects like Resource, Availability, Unavailability, etc.
If an unknown object type is encountered, it triggers the fault message.
Assignment (ASSIGN_Appointment_Service_Values):
Assigns values to various fields in the Appointment_Service object, such as Available_Sections__c, Claim_Types__c, Client_Note_Template__c, End_Date__c, and others.
Assignment (ASSIGN_Availability_Values):
Assigns values to the Availability object, including fields like Active__c, Effective_From__c, Effective_To__c, Location__c, and others.
Assignment (ASSIGN_Checklist_Values):
Assigns values to the Checklist object, such as Create_During_Quick_Complete__c, Default_Checklist_Item_Status__c, End_Date__c, and others.
Record Lookup (GET_Resource):
Retrieves a Resource record based on the provided Resource_Name.
If the record is found, the flow assigns the Resource_Id and proceeds to update the relevant object.
Record Create (CREATE_Appointment_Service):
Creates a new Appointment_Service record using the assigned values.
If an error occurs, the flow assigns a fault message to handle the error.
Record Create (CREATE_Availability):
Creates a new Availability record with the provided values.
Record Create (CREATE_Client_Goal):
Creates a Client_Goal record by assigning values like Contact__c, Goal__c, Description__c, Stage__c, and others.
Determines the object to process based on the Object_API_Name passed to the flow.
Routes the flow to handle various object types, such as Product2, Pricebook2, or maica__Support_Category__c.
GET_Contact (Record Lookup):
Looks up the Contact object using the Contact_Name.
Assigns the Id of the retrieved contact to Contact_Id.
ASSIGN_Connection_Values (Assignment):
Assigns values to a new Connection__c record (such as Contact__c, Invoice_Recipient__c, and Primary_Contact__c).
The assigned values are later used in the CREATE_Connection.
CREATE_Connection (Record Create):
Creates a new Connection__c record using the values assigned from the ASSIGN_Connection_Values.
GET_Product (Record Lookup):
Looks up a product (Product2) based on Product_Name.
The found product's Id is stored in Product_Id.
ASSIGN_Product_Values (Assignment):
Assigns values to the Product2 record, including fields such as Support_Item_Type__c, GST_Code__c, and Funding_Level__c.
CREATE_Product (Record Create):
Creates a new Product2 record based on the assigned values.
GET_Standard_Price_Book (Record Lookup):
Fetches the standard price book if it exists and is active, storing the Id.
DECISION_Standard_Price_Book_Entry (Decision):
Checks whether a price book entry exists for the product in the standard price book.
If not, routes to create the PricebookEntry.
CREATE_Standard_Price_Book_Entry (Record Create):
Creates a new standard price book entry for the product if it does not already exist.
GET_Support_Category (Record Lookup):
Looks up a Support_Category__c record using the Support_Category_Name.
Stores the category Id for further processing.
ASSIGN_Support_Category_Values (Assignment):
Assigns values to the Support_Category__c record, such as Budget_Type__c, Category_Number__c, and Support_Purpose__c.
CREATE_Support_Category (Record Create):
Creates a new Support_Category__c record using the assigned values.
Screen Flow
Autolaunched Flow
Autolaunched Flow
A duration gate: no retention after the retention expiry date. The amount itself is capped by the Retention Service.
The period is legitimately worth nothing, from a zero rate or a zero quantity on the Agreement Item
None
Advanced
Billing Status goes to Complete. The item consumed its period and moves on to the next one
The derived line quantity is blank or not positive
None
Not advanced
The item is failed and logged for triage
A retention item's last deduction falls inside its cadence window
None
Moved to the rescheduled date
Billing Status goes to Complete. No charge is raised for this period
Accommodation payment type
RAD or RAC, with a combination indicator where the resident pays by a combination of lump sum and daily payment
Opening balance
The account balance at the start of the financial year
Total paid in
Payments into the account during the year (initial payment, additional payments, and transfers in)
Total drawdowns
Amounts drawn down during the year
Total retention deducted
Retention amounts deducted during the year
Total partial refunds
Partial refunds made during the year
Closing balance
The account balance at the end of the financial year
Departure date
The departure date, for residents who left
Balance at departure
The account balance as at departure
Refund due date
The date the refund was due, based on the departure
Actual refund date
The date the refund was actually made
Refund met deadline
Whether the refund was made within the statutory deadline
Resident full name
The resident the account belongs to
Care recipient ID
The resident's Services Australia identifier
Entry date
The last three columns are the refund compliance view. Together they let the auditor see, for each departed resident, when the refund was due, when it was paid, and whether it met the deadline.
The resident's entry date
Committed Override
Allows manual control over whether a Delivery Activity is included in the Total Committed calculation. Use Include to force inclusion, or Exclude to prevent it. Leave blank to apply system logic.
Delivery Activity
Is Committed
Indicates whether the Delivery Activity meets the criteria for the Total Committed calculation based on override settings, status, billing status, and invoice linkage. Full formula included below.
Agreement Item (formula)
The global setting is disabled
✅ Calculation is skipped, values remain unchanged
Total Committed
Shows the committed funding value for individual service lines.
Agreement Item
Total Committed
Summarises the committed values from all related Agreement Items within a Service Agreement.
IF(
TEXT(maica__Committed_Override__c) = "Include",
TRUE,
IF(
TEXT(maica__Committed_Override__c) = "Exclude",
FALSE,
(
ISBLANK(TEXT(maica__Committed_Override__c)) &&
NOT(ISPICKVAL(maica__Status__c, "Cancelled")) &&
NOT(
ISPICKVAL(maica__Billing_Status__c, "Do Not Bill") ||
ISPICKVAL(maica__Billing_Status__c, "Generated")
) &&
ISBLANK(maica__Invoice_Line_Item__c)
) ||
(
ISBLANK(TEXT(maica__Committed_Override__c)) &&
ISBLANK(maica__Invoice_Line_Item__c) &&
ISPICKVAL(maica__Status__c, "Completed")
)
)
)A Delivery Activity is marked Exclude
✅ Omitted from all calculations
A Delivery Activity is Completed but not invoiced
✅ Included, unless override = Exclude
A Service Agreement contains 5 Agreement Items with forecasts
Service Agreement (roll-up)
✅ Total Committed shows the combined committed value
Event-driven — Automatically after successful claim approval during the "Check Status" quick action's Related Data Updates process
Prior to beginning the integration, Maica first needs to run some Validation to determine whether an active Support at Home Plan already exists for the Care Recipient. Maica will:
Plan Start Date and End Date are calculated (or recalculated) after the Classifications have been retrieved during every sync — not only when a new Plan is created. This ensures Plan dates remain current and aligned with Services Australia's classification data, even as classifications are added, updated, or end-dated over time.
This approach ensures that:
Plan dates accurately reflect the full classification coverage period
Open-ended classifications are handled correctly
Plan data remains current, consistent, and aligned with Services Australia data structures
Each Care Recipient maintains only one active Support at Home Plan at any time
Once done, Maica can then proceed with the first callout as per the steps below:
Purpose: Retrieve the core summary data for a care recipient, using their Care Recipient ID as the key input.
API Endpoint: Care Recipient Summary API
Input:
CareRecipientID
Data Returned:
Classifications → Stored in Classification__c
Approved Services → Stored in Approved_Service__c
Supplements → Stored in Supplement__c
Logic:
Records are stored and linked to the identified (or newly created) Plan.
Purpose: Retrieve the care recipient's contribution data, indicating the portion of costs they are responsible for under their care plan.
API Endpoint: Care Recipient Individual Contribution API
Input:
CareRecipientID
Data Returned:
Purpose: Retrieve funding allocation data for the care recipient's plan, including budget breakdowns and specific entitlements.
API Endpoint: Care Recipient Budgets API
Input:
CareRecipientID
Data Returned:
Purpose: Retrieve records of how budgets have been consumed through claimed Invoice Line Items, providing visibility into expenditure against available funding.
API Endpoint: Budget Usage API (per Plan Budget)
Input:
CareRecipientID
By progressing through these four stages — summary data, individual contributions, budgets, and budget usage — the Care Recipient Sync process creates a single, consistent record of all Support at Home information. All retrieved records are stored in their respective objects and related back to the Support at Home Plan. Only one active Plan per Care Recipient is maintained.
GET maica__Plan__c record WHERE
maica__Type__c = 'Support At Home'
maica__Participant__r.maica__Care_Recipient_ID__c = {Request Care Recipient ID}
CREATE maica__Plan__c record WHERE
maica__Type__c = 'Support At Home'
maica__Participant__r.maica__Care_Recipient_ID__c = {Request Care Recipient ID}
UPDATE maica__Plan__c SET
maica__Start_Date__c = {Retrieved Classifications Earliest Start Date}
maica__End_Date__c = {Retrieved Classifications Latest End Date (or null if any Classification End Date is null)}
If your organisation operates multiple Service Provider IDs, each Provider ID is displayed as a separate tab within the Care Management Budget component. Selecting a tab determines which Service Provider ID is used for the sync and which Care Management budget data is displayed.
Click the Refresh icon on the top-right of the component to trigger a new sync. This will query Services Australia for the most recent budget data for the current financial quarter.
Once synced, the Care Management Budget component will show:
A table of all active Care Management budgets per Service Provider ID.
Budget metrics:
Total – Total amount reported for the financial quarter.
Used – Amount already spent.
Available – Funds remaining.
Rollover Deduction - Amount deducted from the current quarter to offset funds rolled over from the previous period. This value represents adjustments applied to ensure the available balance reflects true current-period funding.
Write Off - Amount removed from the budget where unspent or unrecoverable funds have been written off by Services Australia. This value ensures the remaining total aligns with the approved financial record.
The Last Sync Date shown in the info banner to indicate the currency of the data.
This display is shown below:
Behind the scenes, Maica:
Calls the Services Australia API using the entered Service Provider ID.
Filters the returned data using the following logic:
Budget Type = Care Management
Budget Date Range = Current Financial Quarter
Displays all valid results in a sortable table.
Optionally allows saving the result, including the Last Sync Date
Maica also retrieves Care Recipient budget payloads to identify all Service Provider IDs in use, stores them, and display them as tabs within the Care Management Budget component. This ensures Care Management budgets are always attributed to the correct Service Provider context.
The sync process and budget view are intended for Service Provider Administrators or users with configuration-level access only. General end users, such as Care Workers, do not interact with this section.
Under Support at Home, Care Management budgets are associated with a Service Provider ID. Where an organisation operates multiple Service Provider IDs, Care Management budgets are retrieved and displayed per Service Provider ID, rather than as a single aggregated budget.
Additionally, when a Support at Home budget is retrieved, Maica captures the serviceProviderId from the budget payload and saves it to a new field on the Contact record. This ensures the Services Australia provider associated with the Care Recipient is persistently recorded in Maica.
Auto Renewal is enabled on the Service Agreement record (the Auto Renewal checkbox is ticked).
The Agreement's End Date falls within the configured renewal window — that is, its End Date is no earlier than the number of days set in Renew Service Agreements before today.
The Auto Renewal checkbox is found on the Service Agreement record. It records whether the participant has agreed to automatically renew their Service Agreement for the next period.
The table below describes each field on the Renewal Management settings screen.
Renew Service Agreements
The number of days before an Agreement's End Date that it becomes eligible for renewal. This defines the renewal window: an Agreement is considered once today is within this many days of its End Date.
Numeric (minimum 1)
Set the Renewed Service Agreement Start Date to
How many days after the expiring Agreement's End Date the new Agreement should start. For example, entering 1 means the new Agreement begins the day after the existing one ends.
If a value is not configured, Maica falls back to the following defaults when generating a renewal:
Start Date — 1 day after the expiring Agreement's End Date.
End Date — 30 days after the new Start Date.
Owner — the current owner of the expiring Agreement.
There are two ways the renewal logic runs.
Set the Daily Service Agreement Renewal Time, then use the Enable button to schedule the daily job. Once scheduled, Maica runs the renewal automatically at that time every day, and the button changes to Disable so you can stop the schedule at any time.
While the daily job is scheduled, the time field is locked. To change the run time, disable the schedule, adjust the time, and enable it again.
The Run Now button immediately runs the renewal logic using the settings currently configured on the screen, without waiting for the scheduled time. This is useful for testing your configuration or processing renewals straight away. Maica displays live progress while the renewal batch runs and reports when it has completed, including whether any records completed with errors.
When a renewal is generated, Maica clones the expiring Service Agreement and its Agreement Items onto the new record. The new Agreement and each of its Agreement Items take the recalculated Start Date and End Date described above. All other details are carried across from the source Agreement, giving you a like-for-like Draft that you can adjust before activating.
An organisation wants Agreements to roll over a month before they end, into a fresh 12-month Agreement starting the day after the old one finishes, keeping the same owner.
Renew Service Agreements is set to 30.
Set the Renewed Service Agreement Start Date to is set to 1.
Set the Renewed Service Agreement End Date to is set to 365.
Assign the Renewal Service Agreement to is set to Current Service Agreement Owner.
A participant has a Service Agreement ending 30 June 2026 with Auto Renewal ticked. From 31 May 2026 (30 days before the End Date), the Agreement falls within the renewal window. When the daily job next runs, Maica creates a new Draft Service Agreement starting 1 July 2026 and ending 1 July 2027, owned by the same user, with all Agreement Items copied across. The coordinator then reviews the Draft and activates it.
A renewal is not created if the calculated End Date of the new Agreement would already be in the past. Maica skips these records, as there is no value in generating an Agreement that has already expired.
Auto Renewal must be enabled on each Service Agreement individually. It is unticked by default. A Service Agreement with Auto Renewal left unchecked will never be renewed automatically, regardless of these settings. This is the most common reason a renewal does not generate as expected.
Whether the daily job is currently scheduled is also visible under Maica Settings > Scheduled Jobs, where it appears as Create Renewals - Daily.
Full Lump Sum
Covers the full room price
None
No
Combination
Covers part of the room price
Charged on the remainder
Yes
DAP Only
None
The connection between the deposit and the daily charge is the DAP Agreement Item lookup (maica_cc__DAP_Agreement_Item__c) on the Lump Sum Account. It points directly at the resident's DAP fee item (the Agreement Item) so the system can update the daily rate whenever the balance changes.
This lookup is populated only for Combination residents. It is set automatically when the lump sum account is created, from the active DAP fee item that must already exist on the Service Agreement's Fees tab. The presence of this link is what tells the recalculation logic that a DAP portion needs maintaining; where it is blank, there is no DAP to recalculate and the logic does nothing.
The daily DAP for a Combination resident is held in the DAP Portion field (maica_cc__DAP_Portion__c) on the account. It is the daily interest cost on the part of the room price the lump sum does not cover:
The result is clamped at zero. When the balance covers the full room price (or more), the uncovered remainder is zero or negative, so the DAP portion is zero; there is nothing to charge daily.
The DAP portion is recalculated every time the lump sum balance changes. There are two distinct trigger paths, and the difference between them matters.
When a user records a balance-changing operation through the RAD/RAC tab, the system recalculates the DAP portion as part of that operation and updates the DAP Portion field on the account. The operations that trigger this are:
Recording an initial payment
Recording an additional payment
Recording a draw-down
Processing a partial refund
Changing the payment method to Combination
For these user-led operations, the system updates the account's DAP Portion but does not automatically change the rate on the DAP Agreement Item. Instead it shows an advisory prompting the user to update the DAP fee item rate on the Fees tab to match the new amount. This keeps the user in control of the fee item that drives billing.
This recalculation applies only when the resident's Deposit Type is a Refundable Accommodation Deposit (RAD). For a Combination resident whose deposit is a Refundable Accommodation Contribution (RAC) or a legacy Accommodation Bond, the manual recalculation is deliberately suppressed and no advisory is shown, because their daily contribution rates are means-tested and set by Services Australia fee advice rather than derived from the MPIR formula.
When the billing engine performs an automatic RAD draw-down, it recalculates the DAP portion itself as a follow-up step, and unlike the user-led path it writes the result through to the fee item. The recalculation updates three places:
The Rate on the DAP Agreement Item, so the next billing run charges the correct daily amount.
The DAP Portion on the Lump Sum Account.
The DAP Rate After Transaction field on the draw-down transaction that triggered it, giving a full audit history of rate changes over time.
This step is non-blocking. It runs in its own protected block so that if it fails, the draw-down that already succeeded is not rolled back. On failure the engine writes an error log (with the account and the originating invoice context) rather than raising an error to the resident's billing.
The two paths also read the interest rate from different places. This is the most important nuance to understand when supporting Combination residents, because it determines which rate value drives a recalculation.
User-led operation on the RAD/RAC tab
MPIR at Agreement (maica_cc__MPIR_at_Agreement__c) on the Service Agreement
The rate captured for the resident at the time they signed their agreement. Fixed to that resident.
Automatic draw-down by the billing engine
RAC Current MPIR (maica_cc__RAC_Current_MPIR__c) on Setting
If the engine cannot find an MPIR value on any Setting record, it does not fail the draw-down. It skips the DAP recalculation and writes a log noting that the rate is not configured, so the draw-down still completes and the gap is visible to administrators.
DAP portion = (agreed room price - current balance) x MPIR / 100 / 365A Daily Accommodation Payment fee item must be configured on the Fees tab before a lump sum account can be created. Without it, the account setup is blocked, because there would be nothing for the DAP Agreement Item link to point to.
For a Combination resident whose deposit is a RAC or Accommodation Bond, recording a manual transaction does not change the DAP Portion and shows no advisory, even though the payment method is Combination. Their daily contribution is set by Services Australia means-testing, not the MPIR formula.
Because the engine updates the DAP fee item rate automatically but user-led operations only prompt for it, the two paths differ. After a manual balance change, the fee item rate is only correct once a user applies the advisory. After an automatic draw-down, it is updated for you.
The user-led path uses the per-resident rate stored on the agreement, while the engine's automatic draw-down path uses the current organisation-wide rate from Setting. Where these two values differ, the DAP portion produced by a manual operation and by an automatic draw-down can differ for the same resident. Confirm the intended source with your implementation team if exact alignment between the two paths is required, and keep the RAC Current MPIR setting up to date so engine recalculations stay correct.
Description (optional): Add context about when or why this template is used.
Category: Choose a category to help organise your templates.
Template Content: Enter the note content that will appear when the template is selected
You can choose whether the template should be:
Public – Available to all users
Private – Available only to you
Once configured, click Save.
Once saved, the new template becomes selectable when logging participant notes:
Open the Planner and begin logging a new participant note.
Select a note template from the list (e.g., Demo Note).
Click Confirm to apply the template content to the note.
The text from the template will be pre-filled and ready to complete.
The interactive demonstration below showcase the process outlined above.
The video covers each step in the creation of a Participant Note Template workflow.

Services Australia pays a monthly 24/7 registered nurse supplement to eligible residential services. Maica reads that supplement position back from Services Australia and stores it against the Location, so a service can see what it has been assessed and paid for the registered nurse supplement each month. This article explains the two records that hold the supplement data, how they are synced, and how the supplement summary differs from the other registered nurse figures in the solution.
It is written for administrators and facility managers responsible for revenue assurance and registered nurse reporting.
There are three separate registered nurse concepts in the residential solution. Keeping them apart avoids confusion.
The supplement is held in a two-tier structure, both parented to the Location.
One Registered Nurse Supplement Summary record (Registered_Nurse_Supplement_Summary__c) exists per entitlement month for a Location. It holds the headline supplement position for that month.
Each summary has one or more Registered Nurse Supplement Breakdown records (Registered_Nurse_Supplement_Breakdown__c) as master-detail children. Where the summary is indexed by entitlement month, each breakdown carries the detail for a claim month, so the structure captures adjustments made across claim months against a single entitlement month.
The supplement summary is retrieved as part of the monthly Claims Sync action, not as a standalone step you run separately. When Claims Sync runs, it retrieves the supplement summary for the service alongside the claim and payment data.
The read is keyed on the Service NAPS ID from the Location linked to the Claim Batch.
It applies only to residential aged care Claim Batches, whose Funding Type is Permanent or Respite. The sync does not run the supplement read for other funding types.
The Location must have a Service NAPS ID set, or the step reports that it is missing.
Each returned summary is written using its composite External ID, and its breakdown children are written beneath it, so re-running the sync updates the existing records rather than creating duplicates.
The supplement records surface on the Location record:
Open the facility's Location record.
Find the RN Supplement Summaries related list.
Open a summary to see its entitlement month, total amount, and last sync, and its RN Supplement Breakdowns for the claim-month detail.
Both the summary and the breakdown have their own record pages, so you can open a summary and drill into any breakdown from its related list.
The Quarterly Financial Report (QFR) is submitted four times a year through GPMS. Of its five components, Maica holds the data for two: bed occupancy and leave utilisation. Maica provides this data through standard reports that providers use to read off the figures for manual entry into GPMS. The reports do not submit to GPMS; they remove the need to assemble the figures from separate systems.
This article explains how the two reports are configured and where their data comes from. It is written for administrators who set up reporting.
The occupancy report shows operational beds against occupied bed days for a quarter, so the provider can report bed occupancy. It is a cross-object report built on the Claim Batch together with resident funding and entry data.
Claim Batch provides the Services Australia confirmed operational bed count for each service and claim month.
Funding and aged care entry data establish which beds were occupied on each day of the quarter, using resident entry and departure dates.
The report is built as a standard cross-object report. No custom development is required beyond configuring the report.
The leave utilisation report summarises approved leave by type for a quarter, matching the leave data the QFR requires.
The report is built on the Service Agreement Leave records, which capture each approved leave episode by type with its start and end dates.
The report is built as a standard report grouped by leave type and quarter. No custom development is required.
The Automation section of the RACS Configuration tab holds three toggles that control whether scheduled background processes are allowed to run. All are checkboxes, all default to off, and all should be left off until the process they control has been validated against test data.
Turn these toggles on only after you have validated the automated process against test residents or test claims. Enabling automation before the process has been checked can apply rate changes or generate adjustment invoices across live residents without review.
This toggle controls whether the residential billing engine may run on a schedule.
When on: the RACS Billing Engine job becomes available to schedule from the Schedules tab of the Billing Settings component. Once scheduled, it bills every due Agreement Item and rolls up invoices on its recurring run.
When off: the job's row on the Schedules tab is shown but disabled, so the engine does not run automatically. Billing can still be triggered ad-hoc from the settings area.
This toggle controls how resident fee rate changes published by Services Australia are applied.
When on: the scheduled fee rate batch job becomes available to schedule from the Schedules tab of the Billing Settings component. Once scheduled, it checks for fee rate changes from Services Australia and applies them to active Agreement Items on a recurring basis.
When off: the scheduling controls are hidden, and fee rate changes must be applied manually using the Check Fee Rates button on each agreement.
This toggle controls whether reconciliation adjustments are generated automatically after a Services Australia payment statement is synced.
When on: after the monthly Services Australia payment statement is synced, Maica automatically compares actual payments against billed amounts and generates the reconciliation adjustment invoices needed to close any gap.
When off: reconciliation must be run manually for each affected Funding Item using the Run Reconciliation quick action.
Learn about General Settings in Maica
These settings determine how Maica manages General Settings and their function throughout the application. Please refer to the below table for more information on each setting:
Learn about Invoice Management Settings in Maica
These Settings determine how Maica manages Invoices and their function throughout the application. Please refer to the below table for more information on each setting:
Numeric (minimum 1)
Set the Renewed Service Agreement End Date to
How many days the new Agreement should run for, counted from its new Start Date. For example, entering 365 creates a one-year Agreement.
Numeric (minimum 1)
Assign the Renewal Service Agreement to
Who the new Agreement is assigned to. Choose Current Service Agreement Owner to keep the same owner as the expiring Agreement, or Select User to assign all renewals to a specific user.
Current Service Agreement Owner / Select User
Daily Service Agreement Renewal Time
The time of day the automated renewal job runs. Only Agreements meeting the entry criteria at that time are actioned.
Time picker
Automate Billing Engine
Checkbox
Off
Turn on to allow the RACS Billing Engine batch job to be scheduled. Leave off to run billing manually.
Automate Resident Fee Rate Updates
Checkbox
Off
Turn on to allow the Resident Fee Rate Update batch job to be scheduled. Leave off to restrict rate checking to the manual Check Fee Rates action.
Automate Statement Reconciliation
Checkbox
Off
Turn on to automatically reconcile payment statements after sync. Turn off to run reconciliation manually per Funding Item.
Charged on the full room price
No (no account exists)
Undecided
Not yet decided
Not yet decided
No
The live, organisation-wide rate held in RACS settings. The engine reads the first Setting record carrying a value and caches it for the run.
Store the distinct Service Provider IDs so they can be displayed as tabs within the existing tabbed card UI (using the Provider ID as the tab name).
Optionally (as part of the same run), populate the existing “Service Provider ID” input on the selected tab (so the tab reflects the stored provider ID).

Occupied bed days
The count of days each resident occupied a bed, between entry and departure (or the end of the quarter)
Unoccupied bed days
Operational beds multiplied by days in the quarter, less occupied bed days
Occupancy rate
Occupied bed days as a percentage of operational beds multiplied by days in the quarter
Hospital leave days used
Days where the leave type is hospital
Transition care leave days used
Days where the leave type is transition care
Emergency leave days used
Days where the leave type is emergency
Total leave days
The sum across all claimable leave types
Service name
The service provider account on the Claim Batch
Quarter
The claim period, grouped into three-month quarters
Total operational beds
Service
The service provider account on the service agreement
Quarter
The leave start date, grouped into quarters
Social leave days used
These reports support manual GPMS entry. They do not submit to GPMS, and the provider remains responsible for transcribing the figures into the portal within the QFR deadline.
The Services Australia confirmed operational bed count, averaged across the quarter
Days where the leave type is social
Payment Terms (days)
Sets the expected number of days in which payment is due after an invoice is issued. It is used to set the Due Date on the created Invoice records.
Paid Tolerance
Specifies an allowed variance between the claimed amount and the paid amount before the invoice is flagged. For example, a tolerance of 0.1 allows for small rounding or pricing discrepancies without requiring manual intervention. Note: This only applies to NDIS Claimed Agency Managed Invoices
Invoice Period
Defines how often Invoices are grouped and generated in Maica (e.g. weekly, fortnightly, monthly). This determines the Invoice cycle used when calculating Invoice batches.
Invoice Period Anchor Date
Specifies the starting reference point for calculating Invoice periods. This date works in combination with the selected Invoice Period to determine how invoice batches are grouped.
For example, if the Invoice Period is set to “Weekly” and the Anchor Date is 1st January, Maica will generate invoice batches from 1st–7th January, 8th–14th January, and so on.
Total Amount
Total_Amount__c
The total supplement amount for the entitlement month
Last Sync
Last_Sync__c
When this summary was last refreshed from Services Australia
External ID
External_ID__c
Composite upsert key in the format {locationId}_{YYYY-MM}, marked External ID and Unique to prevent duplicates on sync
Eligibility
Eligibility__c
The eligibility status returned by Services Australia for this claim month, such as Eligible or Not Eligible
MMM Classification
MMM_Classification__c
The Modified Monash Model classification that applies
Occupied Bed Days
Occupied_Bed_Days__c
The occupied bed days Services Australia recorded for the month
Amount
Amount__c
The supplement amount for this claim month
24/7 RN coverage check
Did we have an RN on duty every hour, for our GPMS submission?
RN Coverage Check record on the Location
RN eligibility on the claim
Did Services Australia assess the service as eligible in the monthly claim?
The RN eligibility flag on the Claim Batch, from the claims response
24/7 RN supplement summary
What supplement has Services Australia assessed and paid, month by month?
RN Supplement Summary and Breakdown records on the Location
Location
Location__c
The service this supplement summary belongs to
Entitlement Month
Entitlement_Month__c
RN Supplement Summary
RN_Supplement_Summary__c
The parent summary this breakdown belongs to (master-detail)
Claim Month
Claim_Month__c
The month the supplement entitlement relates to, stored as the first day of that month
The claim month this breakdown detail relates to
Array of contribution records → Stored in Individual_Contribution__c
Logic:
Each record is linked to the Plan and represents a required participant contribution.
Plan Budgets → Stored in Plan_Budget__c
Entitlements → Child records of budgets → Stored in Entitlement__c
Logic:
Budgets are linked to the Plan; entitlements are linked to their respective budgets.
This structure reflects the total available funding for the care recipient.
Data Returned:
Budget Usage records → Stored in Plan_Budget_Usage__c
Logic:
Budget Usage records are retrieved for all open budgets only.
A budget is considered "open" if:
Its End Date is within 90 days of the current date, OR
Its End Date is null
Each Budget Usage record links:
A Plan_Budget__c (the funding allocation)
An Invoice_Line_Item__c (the specific claimed service) — may be null for expenditure from other providers
The Amount
This filtering ensures the sync remains performant as Care Recipient history grows over time.
maica__End_Date__c > CurrentDate OR maica__End_Date__c = null)If found, this existing Plan will be used to relate all downstream data.
If not found, a new Plan record of this type will be created.
maica__Claim_Period__c > 'Quarterly'Id = {Plan Record Id}The Start Date of the earliest Classification record
Plan End Date Logic
Maica will evaluate the End Date of all related Classification records and apply the following rules:
If all Classification records have an End Date:
Plan End Date will be set to:
The latest End Date (i.e. the date furthest in the future)
If any Classification record has a null End Date:
Plan End Date will be left null
This ensures that open-ended classifications result in an open-ended Plan.
Important Notes for Users
Individual Contribution records in Maica are derived from the data received through the Care Recipient Sync. Because the upstream data does not include a unique identifier that can be used to match existing records, Maica cannot update Individual Contribution records in place.
To ensure accuracy and consistency with the latest government data, all existing Individual Contribution records are deleted and then fully recreated during each sync. So,
Schedule Horizon
When creating recurring Appointments or Shifts, Maica will generate the relevant records in advance for you but this will be a rolling generation limited by the Schedule Horizon. As an example, by setting the Schedule Horizon to 4 weeks, your recurring Appointments/Shifts will be generated 4 weeks in advance at any one time.
Enable Total Committed Calculation
This setting enables or disables Total Committed calculations across Maica.
Please refer to the below table for more information on each setting:
Time of Day
When billing, particularly within the NDIS, there may be multiple for the same service but different times, for example a Support Item for a 10am service might be different to a Support Item for the same service at 3pm.
As such, Maica needs to know what time falls into what bracket, for example 3pm is considered to be Afternoon and so forth. This setting defines the various time brackets and their corresponding service times for the purposes of billing.
Prioritisation
This setting defines which order Maica will use when a time falls into multiple time brackets so the most relevant Support Item is selected for the purposes of billing.
Follow the steps below to configure your Salesforce org for Maica's Contact Sharing model.
Go to Setup in Salesforce.
In the Quick Find box, search for and select Sharing Settings.
In the Organisation-Wide Defaults section:
Either select Contacts from the Manage sharing settings for dropdown, or
Click Edit and locate Contact in the list.
Set both Internal Access and External Access for Contact to Private.
Click Save if prompted.
Navigate to Maica Settings in Salesforce.
Under the General Settings section, locate the Maica Managed Sharing setting (explained above).
Click Edit.
Toggle the setting on.
Click Save.
Contact sharing is managed via the Resource Participants object. In the example below, you can see that the Contact Yuri Green has been shared with this user:
To share another Contact:
Click New in the top-right corner of the Resource Participants section on the Contact record.
In the pop-up, select the appropriate Resource and Contact.
Set a Start Date for the access.
(Optional) Add an End Date if you want access to be removed automatically on a specific date. Most users will leave this blank.
Click Save.
Once saved, the selected Contact will be visible to the user associated with the Resource. For example, if you add Sarah Milne, that user will now have access to both Yuri Green and Sarah Milne’s records—along with any Contacts they own or that have been manually shared with them.
Maica Managed Sharing
Salesforce offers a security mechanism called Sharing Rules which allow you to configure access for particular users to specific records in Salesforce.
This setting enables Maica to automatically create or remove a Salesforce Sharing Rule for a Resource when a Resource Participant (on the Resource’s profile) is added or removed.
Note: For this setting to function correctly, the Contact sharing model must be set to Private. Otherwise, all users may already have access to all Contact records, making sharing rules unnecessary or ineffective. To learn how to set the Contact sharing model to Private, refer to the section below.
Allow Saving when Validation Rule is triggered
Salesforce offers a validation mechanism called which allow you to configure specific validations, such as field masks and mandated values. This setting enables/disables Maica to adhere to any Salesforce Validation Rules configured against the Appointment record and, if triggered, prevent the creation/management of an Appointment.
Contact records must be associated with an Account in order for sharing to apply. If a Contact does not have an Account, Salesforce will not apply any sharing rules—even if Maica Managed Sharing is enabled. This is a known Salesforce behaviour.
To fix this, either:
Enable Person Accounts in your org, or
Check the Profiles that Override Contact Sharing list. If any user profile has ticks here, those users will be able to view and modify all Contact records regardless of sharing settings. This may be appropriate for System Administrators, but should not be enabled for standard users.
Learn about the process behind Ending a Service Agreement in Maica
The End Agreement process in Maica is an automated system event that manages the structured conclusion of a Participant’s Service Agreement. It ensures that once an Agreement is ended, all associated records are updated consistently — including Agreement Items, Appointments, and Delivery Activities — while maintaining audit integrity and data alignment across the system.
The process allows Providers to conclude Service Agreements in a compliant, auditable, and system-driven manner. When a Service Agreement is ended (either immediately or on a future date), Maica:
Updates the End Date, Status, and Cancellation Reason on the Service Agreement
Aligns related Agreement Item End Dates
Cancels all Appointments and Delivery Activities scheduled after the End Date
Runs a scheduled process to automatically mark the Agreement as inactive once the End Date has passed
The End Agreement process operates through a combination of Automation and Validation Rules. All actions are initiated from the End Agreement Quick Action, available on active Service Agreement records.
When a user confirms an Agreement end:
maica_cc__End_Date__c → updated to entered End Date
maica_cc__Cancellation_Reason__c → populated from user input
maica_cc__Cancellation_Reason_Other__c → populated if “Other” selected
Validation
VAL_SERVICE_AGREEMENT_0006: Ensures “Other” details are entered if “Other” is selected.
VAL_AGREEMENT_ITEM_0003: Prevents Agreement Items from falling outside Service Agreement date boundaries.
All Agreement Items linked via Service_Agreement__c are updated so that:
maica_cc__End_Date__c = Service Agreement maica_cc__End_Date__c
If an Agreement Item’s existing End Date is earlier, it remains unchanged.
If an Agreement Item’s Start Date is after the new End Date, the Start Date is cleared to bypass validation conflicts.
This maintains strict date consistency between the Service Agreement and its Agreement Items.
1:1 Appointments
For Appointments where the Participant is the only attendee:
maica_cc__Status__c = Cancelled
maica_cc__Cancellation_Date__c = DateTime.now()
maica_cc__Cancellation_Reason__c = Service Agreement Ended (added as new picklist value)
All linked Delivery Activities are also updated:
maica_cc__Status__c = Cancelled
maica_cc__Billing_Status__c = Do Not Bill
Group Appointments
For multi-participant Appointments:
The Appointment remains Active
Only Delivery Activities where maica_cc__Participant__c = [ending participant] are updated to:
Status = Cancelled
This ensures that ending one Participant’s Service Agreement does not affect others in the same session.
If the End Date is set to a future date, the Service Agreement remains active until midnight on that date. At midnight, the Maica – Service Agreement Cancellation Scheduler flow runs and finalises the cancellation automatically.
Every Maica integration with Services Australia, including all of the residential aged care event and data APIs, authenticates through PRODA. Before any aged care event can be submitted or any care recipient data synced, an administrator must configure and activate a PRODA business-to-government (B2G) connection. This article explains how that authentication works and how to set it up for aged care.
Maica authenticates using the PRODA B2B device protocol. This protocol relies on a registered device with an RSA key pair and a per-device activation step, rather than a simple username and password. Because the protocol is non-standard, Maica brokers it through a dedicated PRODA proxy service: the proxy holds the device protocol logic and exchanges the device credentials for a short-lived access token on Maica's behalf.
Two services are supported: NDIS and AGC (Aged Care). Residential aged care uses the AGC service. Each outbound request Maica sends to Services Australia carries:
Authorization: Bearer [token] - the short-lived PRODA access token that authenticates the request.
X-IBM-Client-Id - the API key identifying the Maica software product to Services Australia.
Write operations (creating, updating, or deleting events) additionally include:
x-requested-with - a CSRF mitigation header required by Services Australia on every POST, PUT, and DELETE.
if-match - an ETag value from the previous read, used for concurrency control so an update cannot overwrite a record changed elsewhere since it was last read.
Maica targets the Services Australia Aged Care Web Services (ACWS) endpoints. The endpoint used is derived automatically from the device Mode and is stored on the connection, so administrators do not enter it by hand.
A core design principle applies across every Services Australia integration: a failed callout never blocks a care operation in Maica. If a submission fails because of a network error, a Services Australia outage, or a validation rejection, the Maica record changes are kept, the failure is logged on the relevant Aged Care Event with an error status and detail, and the user is notified so they can retry. Authentication problems surface the same way, so a lapsed or misconfigured PRODA connection produces a clear, retryable error rather than data loss.
PRODA connections are configured on the PRODA Integration tab within Client Management Settings. Maica's validation messages point administrators to this tab whenever a connection is missing or incomplete.
PRODA configuration is held across three objects. Two are configured by the administrator, and one is managed by the Maica package.
The PRODA device (PRODA_Setting__c) represents a single registered B2B device. It holds the identity of the device in PRODA and, once activated, its RSA key pair and expiry dates.
The remaining device fields are set by the system, not entered by hand. The Public Key (Public_Key__c) and Private Key (Private_Key__c) make up the RSA key pair generated during activation. The Device Expiry (Device_Expiry__c) and Device Key Expiry (Device_Key_Expiry__c) record when the device and its keys lapse, and are populated from the activation response.
The API connection (PRODA_Provider_Setting__c) links a service type to a device. An organisation has one connection per service: an NDIS connection and, for residential aged care, an Aged Care connection.
Three connection fields are system-managed. The Endpoint (Endpoint__c) is derived from the service type and the device mode when the device is activated or refreshed. The Access Token (Access_Token__c) and Access Token Expiry (Access_Token_Expiry__c) hold the encrypted, short-lived token that Maica caches and reuses between calls.
A protected custom setting (Protected_Setting__c) holds two values used by the proxy framework: the proxy access token that authorises Maica to the PRODA proxy, and the encryption key used to protect stored access tokens at rest. These values are managed within the Maica package and are not edited by provider administrators.
Create a PRODA device record and enter the Organisation ID, Device Name, Mode, Client ID, and Product ID. Set Mode to Test while validating the integration, and to Live for production submissions.
Activation registers the device with PRODA. Maica generates an RSA key pair, sends the public key together with the organisation ID, device name, product ID, and the activation code to PRODA through the proxy, and stores the resulting key pair and expiry dates on the device.
Maica requests an access token the first time a connection is used, caches it in encrypted form on the connection, and reuses it until shortly before it expires. When the cached token nears expiry, the next call obtains a new one. This happens automatically.
A device carries an expiry date and a key expiry date. If the device has not been activated, or its expiry has passed, aged care submissions stop and Maica returns an error explaining that the device must be activated or renewed via the PRODA Integration tab. Renew the device keys before the key expiry date to avoid interruption.
Detailed PRODA request and response logging is gated by a permission set (Maica_PRODA_Debug). Assign it only when investigating an authentication problem, since it records request and response detail for troubleshooting.
The Serious Incident Response Scheme (SIRS) requires providers to notify the Aged Care Quality and Safety Commission (ACQSC) of reportable incidents within set deadlines. Maica supports this by extending the Incident record with SIRS fields, revealing a SIRS compliance section when an incident is marked reportable, and providing packaged reports and a dashboard to track notifications. Submission to the ACQSC portal remains a manual provider action; there is no government API for SIRS.
This article explains the SIRS fields, the conditional page section, the notification deadlines, and the packaged reporting. It is written for administrators.
The SIRS Reportable checkbox sits on the main Incident record, always visible. The incident manager ticks it to confirm the incident meets the SIRS reportable threshold. Maica does not decide reportability automatically; it is a manual judgement. Ticking the box reveals the SIRS Compliance section on the record, where the rest of the SIRS detail is captured.
The SIRS extension adds the following fields to the Incident record. The notification due date is calculated and read-only; the rest are completed by the incident manager as the notification progresses.
The SIRS Priority drives the Notification Due deadline:
Maica calculates Notification Due from the incident date and time plus the window for the selected priority, so the deadline is always visible on the record without manual calculation.
As the notification progresses, the incident manager updates the SIRS Notification Status and records the outcome:
After lodging the notification, record the ACQSC Reference Number, the SIRS Submitted Date, and the user in Submitted By, so the record holds a complete compliance trail.
Maica packages six SIRS reports in the MAICA RACS - SIRS Compliance report folder, built on a dedicated SIRS incidents report type:
These feed the packaged SIRS Compliance Dashboard, which shows the operational urgency view (open P1 count, overdue count, and an open incidents table) alongside the governance view (month-to-date and year-to-date submissions and the average days to submission). The dashboard includes an optional location filter that is available but not applied by default.
Learn how to manually handle Payment Requests via the BPR Results and Remittance files
In the previous article, we covered how to generate and download the Bulk Payment Request (BPR) File.
This article outlines the next two steps in the process:
Importing the Bulk Payment Request Results File
Importing the Bulk Payment Request Remittance File
Once the BPR File has been downloaded from Maica and uploaded to the myplace Provider Portal for processing, PRODA generates a corresponding Results File. This file contains key status details for all Payment Request records (rows) included in your BPR File.
The Results File contains the Status returned by PRODA for each Payment Request (row) uploaded in the initial BPR File. The two possible Status values are:
SUCCESSFUL
ERROR
In addition, the Results File includes:
The Paid Total Amount.
Whether a Capped Price has been applied by the Agency.
Once you’ve downloaded the Bulk Payment Request Results File, the next step is to import it back into Maica. This process updates the Status of each Payment Request record included in the initial BPR File, aligning it with the PRODA Status contained in the Results File.
To do so, you will need to:
Click on the App Launcher in Maica.
Search for Data Import.
As shown below.
Next, using the Upload Files feature, select the Results File you wish to import into Maica. Next, click on the Flow Setting dropdown and select NDIS Bulk Payment Request Results File. You can see an example of this below.
Lastly, click the Import button to process each row in the Results File. This will update the corresponding Payment Request records by matching them to the unique Claim Reference Index (maica__Claim_Reference_Index__c) generated.
For each Payment Request record in Salesforce, the Results import will update the Status as per the following:
The final step in the Bulk Payment Request Claiming process is to upload the Remittance File when it is received from the NDIA.
This process follows the same steps as described for the (see above). However, in this case, you’ll need to:
Upload the received Remittance File.
Select the NDIS Remittance Advice Import Flow Setting, as shown below.
The Total Amount paid by the NDIA for the Payment Request, along with the date the funds were deposited into your organisation's nominated account, will be updated in the Paid Amount and Paid Date fields, respectively.
The Remittance File updates Payment Request records in Salesforce slightly differently compared to the Results File. Only records with a Status of Pending Payment will be updated.
Essentially, the Remittance File contains details of successful Payment Request records only.
For each Payment Request record in Salesforce, the Remittance import will update the following:
Learn how to Integrate with Xero within Maica
To learn how to configure the Xero integration in Maica, please follow the steps detailed below.
To begin configuring your Xero Integration, go to the Maica Settings tab in the Menu bar. When there, select the Xero Management tab to see the following.
Here, we can see the Active Connections and Webhooks sections. To complete the Xero Integration, we must first set up both of these areas.
Before proceeding, make sure that the Xero Management toggle in the top right corner of your interface is set to Enabled, as shown below.
New Xero Connection The first section to complete is the Active Connections section. You can now begin to do so by adding a new Xero Connection by simply clicking the + Add New Xero Connection button within the Active Connections section, as shown below.
Once clicked, the following Xero OAuth Connection Setup pop-up will be displayed.
Using the links above, you can now create a custom Xero Web App. To do so, follow the link shown in the above image (or here: ). Once on the link, you will be presented with the following screen:
Here, you can add a Custom Name for you App, and then copy and paste the Company or Application URL and Redirect URI from Maica into the related input fields on Xero. Once done, check the Terms & Conditions box and click Create App.
Once you have created your Web App, head to the Configuration tab on the left hand side of Xero interface. There, you will see the following:
Click Generate a secret, and then copy both the Client ID and Client Secret back into the relevant fields within Maica. These fields are shown in Xero OAuth Connection Window screenshot in Step 1 of this article.
Before proceeding any further, confirm the Redirect URI shown in Maica matches that of the Redirect URI on the Configuration page within Xero (the above page). If they do, it has been configured correctly and you can proceed to the next step, if not, copy the Redirect URI from Maica and paste it into the field in Xero.
Once you have completed Steps 1, 2 and 3, click the Save button in the bottom right hand corner of the interface. This will trigger the creation of a Manage Xero Permission Set and create Named Credential Records required to finish the remaining set up steps of the Integration. Once saved, the Xero OAuth Connection Setup module on Maica will dynamically update, displaying the final remaining stages. Simply reopen it after saving to view these steps.
As mentioned above, when creating a connection with Xero, Maica will create an associated Credential Record.
Two actions are required on the Credential Record, these include:
Enable for Callouts toggle = TRUE
maica_cc to be added as a value to the Allowed Namespaces for Callouts field
To complete the above actions, first click the hyperlink to the Named Credential record in the Xero OAuth Connection Setup pop-up.
This will open up the Named Credential record where the specified actions can be completed, as shown below.
Once done, click Save and move onto the next step.
As also mentioned above, when creating a connection with Xero, Maica creates a Permission Set. Maica will automatically assign it to the current user, however you can assign all necessary users you desire to access the Xero Connection.
To begin, click the hyperlink to the Permission Set in the Xero OAuth Connection Setup pop-up, as shown below.
This will open up the Permission Set. Once open, click the Manage Assignments button in the menu in order to add additional users to the Set, as shown below.
Then, click the Add Assignments button in the top right hand corner of your interface, and select the checkbox for all Users you wish to assign the Permission Set to. Once done, click Next.
After clicking the Next button, Maica will take you to a summary screen of your selected Users where you can set an expiration option if desired. This allows for the ability to set a date in which the Permission to the specified Users will expire, as shown below.
To finalise your assignments, click the Assign button in the bottom right hand corner of your interface. Once done, an Assignment Summary page will show with a Success Status by each Assigned User.
Once completed, you can click the Authenticate button to finalise the Connection.
The second section to complete is the Webhooks section. You can now begin to do so by first populating the Site field with your configured Site.
Once you have selected your Site, Maica will generate a URL that will be used to connect back with Xero. Copy the URL from Maica and open your previously created Xero Web App. On the side menu bar of the Web App, navigate to the Webhooks section and paste the URL in the Delivery URL field, as shown below.
Finally, from Xero, copy the Webhooks Key shown under the the Delivery URL and paste back into the Webhooks Key field in Maica, as shown below:
Test the Status in Xero to ensure that the process has been completed and is configured properly, then click Save within Maica to begin receiving Invoice Notifications.
In order to establish a completely new Xero connection within Maica, you first must remove the following:
The Named Credential
The External Credential
The Xero Authentication Provider record
To do so, re click the + Add New Xero Connection button in the Active Connections section, and follow the hyperlinks within Maica, as shown below.
When you click on each link, the corresponding record will open. Simply delete the record and repeat the process for all three before attempting to establish a Xero new connection.
The Residential Aged Care Services (RACS) solution is the set of objects, automation, user interface components, and Services Australia integrations that together support running a residential aged care home in Maica. This article gives administrators a map of how the solution is put together and what it does and does not cover.
If you are new to the solution, the in the User Guide is a gentler starting point. This article assumes familiarity with Salesforce and the Maica platform.
RACS is delivered as part of the MaicaClientCare package and uses the maica_cc namespace, the same namespace as the rest of the Client Care data model. New Apex classes built for RACS use the RAC_ prefix, and the RACS settings components use a settingRACS prefix, so RACS artefacts are easy to identify in an org.
The solution is made up of the following building blocks.
Access to RACS features is granted through permission sets and permission set groups, never through profiles. This follows the standard Maica convention. The solution ships with two permission set groups, Manage Care Recipient and Manage Billing and Claiming, which bundle the feature-level permission sets such as Manage Service Agreement, Departure Processing, Claims Management, and Accommodation Balance Reporting. Administrators assign the appropriate group or individual permission sets to users based on their role.
The solution covers the financial and administrative operation of residential aged care:
Permanent and respite care. Both resident types are supported, with respite handled differently for accommodation costs.
Fees and automated billing. Fee configuration and a daily billing engine that generates invoices.
Accommodation deposits. RAD, RAC, and legacy bond accounts managed as a financial ledger.
The resident lifecycle.
Some areas are deliberately not part of RACS. Knowing these avoids confusion during implementation.
Learn how to configure your Support Items to facilitate the Xero Integration within Maica
Once you have connected Maica and Xero, you then need to populate your Support Item records to facilitate the integration. This step is crucial in ensuring the integration executed effectively.
So, to get started, head to a Support Item record.
Scroll down to the Xero Information Section, as shown below.
There are three fields related to the Support Item that need to be populated, these include:
Learn about Maica's Budget Trend Analysis logic.
The Budget Trend Analysis component displays funding and expenditure on a quarterly basis, aligned with the budget periods defined in a Care Recipient’s Plan under Support at Home. This helps you track approved funds, projected expenditure, and remaining balances for each quarter.
The component displays one tile per quarter.
Each tile contains:
Available Funding – total approved funding for the quarter.
Learn about recurring schedules within Maica and how to manage these.
Maica support the management of recurring schedules supporting the ongoing generation of either Appointments, Shifts, Unavailabilities, or Rosters. The following configuration options are available when managing Recurring Schedules.
A Residential Aged Care monthly statement is a Service Agreement Statement record of the type Residential Aged Care - Monthly. It summarises what a resident was charged over a period, split into totals by fee type, and it is the record document generation and financial reporting read from.
Statement generation is a process an administrator runs for a chosen period. It is not part of the nightly billing run: the billing engine creates invoice lines and invoices, and statement generation reads those committed lines afterwards. That separation is deliberate. Because every total is derived from committed Invoice Line Items rather than accumulated as charges are raised, a statement can be regenerated and it is self-correcting when lines are later amended or credited.
Navigate to Claim Management in Maica's Settings and select the Other tab. The Generate Service Agreement Statements component drives every statement type in the package, including Support at Home. The Residential Aged Care behaviour described in this article is selected through the Type field.
The component presents these inputs:
The monthly residential care claim is not built and submitted from Maica. Services Australia calculates the subsidy from the events and classifications lodged during the month, and Maica retrieves that calculated position. A single user action, Claims Sync, orchestrates a sequence of read integrations that together assemble the full monthly picture on the Claim Batch and its related records.
This article explains the orchestration, the order the steps run in, what each step reads and writes, and the integration characteristics an administrator needs to support it. It is the technical companion to the user-facing article.
The service payment summary, claims, payment statement, and registered nurse supplement reads are separate Services Australia interfaces, but a provider never runs them individually. They all execute inside one Claims Sync action on the Claim Batch, in a fixed order, as a single orchestrated operation. Documenting them as one workflow reflects how the system actually behaves and how an administrator troubleshoots it.
Claims Sync runs six steps in sequence. Each step is a separate Apex processor that performs its own Services Australia read and writes only the Claim Batch fields (or related records) it owns, so the steps do not overwrite each other. The steps run one after another and stop on the first failure, leaving the completed steps' data in place so the run can be repeated after the problem is resolved.
Learn about the Reference Data Template required to Import your Data into Maica
Maica provides you with a spreadsheet template in which you may enter your data. This template is called the Maica Reference Data - Import Templates and it contains a number of tabs for typical Data Objects in Maica that Reference Data may be beneficial for.
Each Data Object has a unique set of fields that need to be populated, hence the corresponding tab is specific to any particular Object. Within each tab, each row in the spreadsheet corresponds to a Salesforce record, while the columns correlate directly to Salesforce attributes.
The template's objective is to allow you to bulk load the necessary reference data for Maica to get you up and running.
You can download two versions of the template below:
This article provides an overview of how Maica manages Timezones across Salesforce records and the Maica Planner
This article provides an overview of how Maica manages timezones across Appointment & Shift records, Appointment & Shift Locations, Salesforce users, and the Planner. Maica is built to ensure Appointments & Shifts are created in the correct local time for service delivery, while still appearing accurately to all users based on their current timezone—supporting remote teams, interstate operations, and national scheduling coordination.
When creating a new Appointment, the timezone is automatically set based on the Salesforce user’s current browser timezone (e.g. Melbourne).
This occurs on the Basic Details step of the ‘New Appointment’ screen, before a Location is selected.
If a user selects a Location that is in a different timezone from their current one, Maica will detect this and show a confirmation modal.
Example: You are in Melbourne (GMT+10), and select a Location in Perth (GMT+8).
Learn how to Create a Site in Maica
In Salesforce, a Site:
Enables you to create public websites and applications that are directly integrated with your Salesforce organisation—without requiring users to log in with a username and password. You can publicly expose any information stored in your organisation through a branded URL of your choice.
Sites are critical for securely sharing data and integrating with external systems while maintaining control and security over the exposed functionality.
In Maica, a Site is essential for enabling successful and automated integrations with external platforms like Xero, Stripe, and NDIS through webhooks.
The Site essentially acts as a public-facing endpoint that the external systems can communicate with to send and receive real-time updates, such as payment confirmations or notification handling. In this context, the Site facilitates the secure exchange of data by exposing specific parts of the Maica environment to these external platforms, allowing them to trigger actions in Maica (e.g., updating participant records or processing payments) without requiring manual intervention.
The care recipient details sync is the foundational inbound integration for every residential aged care resident. It retrieves a resident's full funding profile from Services Australia and writes it into Maica, keeping classifications, approvals, supplements and place allocations current.
This article explains what the sync brings in, the ways it can be run, how you can tell when it last ran, and the conditions it must satisfy before a resident can be admitted. It is written for administrators and power users.
The sync calls Services Australia for a single care recipient and receives that resident's confirmed funding picture. Maica reads the response and updates the resident's records, including:
AN-ACC classifications - the funding classification and care type history that determine the government subsidy.
Do not create custom relationships (e.g., lookups, references, or dependencies) between Individual Contribution records and any other records in the system. These links will be removed each time the sync runs because the previous records are replaced with newly created ones.
If you need to maintain additional information that must persist across syncs, store it outside the Individual Contribution record or reference the Service Agreement or Care Recipient instead.
Automatically assign a default Account to Contacts with no Account using a Flow (If you need help with this - please contact Maica Support).


Once you have finished setting up the Connection and Webhook, it is essential that you configure your Support Items in order to facilitate the integration. The integration will fail if the associated Support Items are not also configured. Please see the linked article to learn how to do this.















Xero Invoice Line Description
The description of the Support Item used where it appears on related Invoice Line Item records in Xero. This is the Support Item description that is provided to the customer. If left null, Maica will automatically use the name of the associated Support Item.
Finance Account Code
The Xero General Ledger Account Code, i.e. Income or Revenue, that is applied to the Support Item. This field is used by Maica as part of the Xero integration and determines how the income is treated in your finance system.
Tax Type
The Xero Tax Rate applied to the Support Item from a finance perspective, i.e. GST on Income. This field is used by Maica as part of the Xero integration.
Ensure that these fields are populated for all your Support Items in order to facilitate the Xero Integration within Maica.

Organisation_ID__c
The provider's PRODA organisation (RA) identifier under which the device is registered.
None
Mode
Mode__c
Switches the connection and endpoints between the Services Australia test and live environments. Defaults to Test.
Allows to switch the PRODA/NDIS connection and endpoints into Live or Test mode.
Client ID
Client_ID__c
The PRODA client identifier for the device.
The ID of the Client in PRODA.
Product ID
Product_ID__c
The identifier of the Maica software product registered with Services Australia. It must match the product authorisation for the B2B integration.
Unique identifier of the software product registered in the Services Australia Health Systems Developer Portal. This value must match the product authorisation configured for the PRODA B2B integration. It ensures that the calling application is recognised as an approved product for the requested service (e.g., Aged Care Support at Home).
PRODA_Setting__c
The PRODA device this connection uses to authenticate. Required.
None
Auth Client ID
Auth_Client_ID__c
The client ID taken from the credentials of the connected app used for authorisation.
The Client ID key from the Credentials of the Connected Application.
Default Provider
Default_Provider__c
Marks this connection as the default for its service type. Maica uses the default Aged Care connection for every residential aged care submission.
None
Create an API connection, set Service Type to Aged Care, link it to the activated device in PRODA Setting, enter the Auth Client ID, and tick Default Provider.
Once an activated device and a default Aged Care connection are in place, Maica obtains and refreshes access tokens automatically. No further day-to-day action is needed unless the device expires or the keys need refreshing.
Test
https://test.healthclaiming.api.humanservices.gov.au/claiming/ext-vnd/acws
Live
https://healthclaiming.api.humanservices.gov.au/claiming/ext-prd/acws
Device Name
Device_Name__c
The name of the B2B device as registered in PRODA. It must match the device name used at activation.
None
Service Type
Service_Type__c
The Services Australia service this connection authenticates against. Select Aged Care for residential aged care. Required.
None
Prerequisites. Before configuring the aged care connection, the provider must hold a valid PRODA organisation credential, have Maica registered as an approved B2G software product with Services Australia, and have a PRODA device activation code ready. Without these, the device cannot be activated and the connection cannot authenticate.
There must be exactly one connection per service type with Default Provider ticked. Maica selects the connection for aged care submissions by looking for the connection where Service Type is Aged Care and Default Provider is true. If no default aged care connection exists, submissions fail with a configuration error.
If the device is not activated or has expired, every aged care API call will fail until it is renewed. Track the device and key expiry dates and refresh ahead of time, as expired credentials block entry, departure, leave, supplement, and balance submissions alike.
Organisation ID
PRODA Setting
P1 - notify ACQSC within 24 hours. P2 - notify within 30 days.
Notification Due
SIRS_Notification_Due__c
The deadline by which the ACQSC notification must be completed, calculated automatically from the incident date and the selected priority.
The deadline for ACQSC notification. Calculated automatically from incident date and priority.
SIRS Notification Status
SIRS_Notification_Status__c
The progress of the notification, from pending through to submitted, closed or withdrawn.
Track the progress of this SIRS notification from Pending through to Closed.
ACQSC Reference Number
SIRS_ACQSC_Reference__c
The reference number the ACQSC portal assigns when the notification is submitted.
Enter the reference number from the ACQSC portal once you have submitted the notification.
SIRS Submitted Date
SIRS_Submitted_Date__c
The date the notification was completed in the My Aged Care portal.
The date you completed the SIRS notification in the My Aged Care portal.
Submitted By
SIRS_Submitted_By__c
The user who completed the portal submission.
Select the user who completed the ACQSC portal submission.
Police Report Required
Police_Report_Required__c
Indicates a police report is required, typically for Priority 1 incidents involving potential criminal conduct or unexplained death, within the same 24-hour window.
Tick if this incident requires a police report within 24 hours.
Police Report Reference
Police_Report_Reference__c
The reference number provided by police once the report has been lodged.
Enter the police incident reference number once the report has been made.
Withdrawn
The notification was withdrawn
Submissions month to date
Submitted incidents this month, by category and location
Submissions year to date
Submitted incidents this financial year, by category and location
Average time to submission
Average days from incident to submission, by priority and location
SIRS Reportable
SIRS_Reportable__c
Confirms the incident meets the SIRS reportable threshold. When ticked, the SIRS compliance section appears and the notification process begins.
Tick to confirm this incident is reportable under SIRS. This will reveal the SIRS compliance fields.
SIRS Category
SIRS_Category__c
The SIRS category the notification will be lodged under, describing the nature of the incident.
Select the SIRS category that applies to this incident.
SIRS Priority
SIRS_Priority__c
Priority 1 - Notify within 24 hours
24 hours from the incident date and time
Priority 2 - Notify within 30 days
30 days from the incident date
Pending
Reportable, notification not yet submitted (the default)
Submitted
The notification has been lodged in the ACQSC portal
Closed
Open P1 incidents
Priority 1 incidents still pending, by deadline and location
Open P2 incidents
Priority 2 incidents still pending, by deadline and location
Overdue notifications
The reports and dashboard help providers monitor and meet their notification deadlines, but they do not submit anything to the ACQSC. The notification itself must be lodged manually in the My Aged Care portal, and the result recorded back on the incident.
The notification priority, which sets the deadline. Priority 1 requires notification within 24 hours; Priority 2 within 30 days.
The ACQSC has closed the case
Pending incidents whose notification deadline has passed
IF SUCCESSFUL = Pending Payment
IF ERROR = Rejected
Error Message
Error Details
Mapped to this field as the Reject Reason picklist is used for API error.
No column mapping
Status
Paid
No column mapping
Paid Date
Set to TODAY
Claim Reference
Claim Reference Index
Used to retrieve the Payment Request record. No update
Payment Request Status
ProvClaimRef
Claim Reference Index
Used to retrieve the Payment Request record. No update
AmountPaid



Status
Paid Amount
Maica – Service Agreement Cancellation Scheduler
Scheduled Record-Triggered Flow
Executes at midnight following the End Date to finalise the Agreement status.
GetServiceAgreementCancellationInvocable
Apex Class
Retrieves and processes related Agreement Items, Appointments, and Delivery Activities efficiently.
maica_cc__Status__c → set to Cancelled (if End Date = today)
If End Date is in the future, record remains Active until midnight on that date
Billing Status = Do Not Bill
maica_cc__Cancellation_Reason_Other__c
Records further detail if “Other” selected.
maica_cc__Is_Cancelled__c
Indicates whether the Agreement has been finalised by the scheduler.
Agreement_Item__c
maica_cc__End_Date__c
Updated to match the parent Service Agreement.
Appointment__c
maica_cc__Status__c, maica_cc__Cancellation_Date__c, maica_cc__Cancellation_Reason__c
Populated when an Appointment is cancelled.
Delivery_Activity__c
maica_cc__Status__c, maica_cc__Billing_Status__c
Defines whether the Delivery Activity should be billed.
Agreement Item Date Conflict
Start Date cleared if it falls after the new End Date to avoid validation failure.
End Agreement
Quick Action
Launches the Service Agreement cancellation process.
Maica – Cancellation Automation – Service Agreement
Screen Flow
maica_cc__Is_Cancelled__c
TRUE
maica_cc__Status__c
Cancelled
Service_Agreement__c
maica_cc__End_Date__c
Defines the last valid date of the Agreement.
maica_cc__Cancellation_Reason__c
Immediate Cancellation
If End Date = today, all records update instantly and the Agreement is cancelled immediately.
Future-Dated Cancellation
The Agreement remains active until the End Date passes; scheduler finalises the cancellation at midnight.
Participant in Group Appointment
Core automation handling cancellation logic, field updates, and record queries.
Captures the primary reason for cancellation.
Only the Participant’s Delivery Activities are cancelled; the Appointment remains active for others.
Trigger: End Agreement Quick Action (Service_Agreement__c)
↓
Flow: Maica – Cancellation Automation – Service Agreement
↓
Apex: GetServiceAgreementCancellationInvocable
↓
Record Updates:
• Service_Agreement__c (End Date, Status, Reason)
• Agreement_Item__c (End Date alignment)
• Appointment__c (Cancel future Appointments)
• Delivery_Activity__c (Cancel future records)
↓
Scheduled Flow: Maica – Service Agreement Cancellation Scheduler
↓
Final Outcome:
• Agreement marked Cancelled
• Quick Action hidden
• Participant removed from future sessions
Apex classes that submit care and supplement events, sync resident data inbound, and report accommodation balances through the Business-to-Government (B2G) API suite.
RACS settings
A RACS Configuration tab and an APCS Export tab mounted inside the existing Maica Settings tab.
Reporting and compliance
SIRS fields, reports and a dashboard on the Incident object, the 24/7 registered nurse coverage check, the APCS ledger export, and the data behind the Quarterly Financial Report.
Services Australia integration. Care and supplement events outbound, resident data sync inbound, and accommodation balance reporting.
Reconciliation. Matching subsidy payments against invoices.
Reporting and compliance data. The data foundations for compulsory reporting, plus SIRS incident management and registered nurse coverage.
Mobile app incident presentation
How SIRS fields appear in the mobile app is a separate product decision.
Profile-based security
All access is via permission sets, in line with the Maica convention.
Data model
A set of new custom objects plus new fields on existing objects. See The RACS Data Model.
Billing engine and scheduled Apex
A daily billing engine (RAC_BillingEngine), an annual financial year reset (RAC_FinancialYearReset), the indexation engine, and the scheduled fee rate check batch. These generate invoices and keep rates current.
Manage RACS Agreement component
A custom Lightning Web Component with three tabs (Fees, RAD/RAC, Accommodation) for configuring fees, managing accommodation deposits, and relocating residents.
Home Care Packages and Support at Home
Handled by Maica's separate aged care agreement features, not RACS.
SIRS submission to government
There is no B2G API for SIRS. Maica holds the incident data and the provider keys the notification into the My Aged Care portal manually.
Some notification automations
Services Australia integration
Recipient, channel, and content of alerts are implementation-specific and cannot be reliably packaged, so they are left to implementation.
Estimated ExpenditureRemaining Funding – available funding minus estimated expenditure.
The Budget Trend Analysis component relies on two primary attributes to perform quarterly calculations. These attributes define how expenditure and available funding are derived and applied within the component.
Purpose: Rolls up planned expenditure per quarter from Service Agreement Items.
Calculation:
For each Agreement Item:
Map service occurrences into quarterly budget periods based on service dates.
Calculate the number of occurrences using frequency and service dates.
Multiply by cost per occurrence.
Aggregate across all Agreement Items to determine total expenditure for the quarter.
Component Behaviour: Used by the Budget Trend Analysis component as the projected expenditure figure for each quarter.
Purpose: Represents the amount of approved funding available to the Care Recipient for each quarter, calculated on a rolling basis.
Data Source: Derived from Plan Budget records that overlap each tile's quarter date range, using the filter: Effective_Date__c <= quarterEnd AND (End_Date__c >= quarterStart OR End_Date__c = NULL).
Rolling Balance Logic:
For the first period tile, Available Funding is based on the current Remaining Amount of all active Plan Budgets overlapping that quarter.
For subsequent period tiles, the balance carries forward from the previous period's projected unspent balance rather than recalculating from a static approved sum.
Component Behaviour: Used as the approved funding figure for each quarterly tile and combined with Estimated Quarterly Expenditure to calculate Remaining Funding.
The accuracy of the Budget Trend Analysis component also relies on a set of supporting fields across the Plan, Service Agreement, and Agreement Item objects. These fields provide the values that are surfaced in the component and ensure calculations are performed consistently at the quarterly level.
Total Approved - Active
Rollup Summary
Summarised Object: Plan Budget
SUM Approved Amount
Filter Is Active = TRUE
Represents the SUM of the Approved Amount from all related Plan Budget records where Is Active = TRUE. Use this to view the total approved funding from currently active Plan Budget items.
Available Funding - Active
Formula (Currency)
Plan → Total Approved - Active
Represents the SUM of the Approved Amount from all related Plan Budget records where Is Active = TRUE. Value taken from the roll-up summary field on the Plan record.
Estimated Expenditure Current Quarter
Currency
Stores the projected expenditure for the current quarter at item level.
Calculated by mapping service dates into the current quarter, multiplying the number of occurrences by the cost per occurrence, and storing the total.
Once the data model fields are populated, the component applies the following calculations:
Estimated Expenditure (Quarterly)
Taken from Agreement Item → Estimated Expenditure Current Quarter.
Represents the rolled-up total of projected costs for that quarter.
Available Funding (Quarterly)
Derived from Plan Budget records overlapping the quarter's date range. For the first period, this reflects the current Remaining Amount of all overlapping active Plan Budgets. For subsequent periods, the balance carries forward from the previous period's projected unspent balance.
Represents the approved quarterly funding available to the Care Recipient.
Remaining Funding (Quarterly)
Formula:
Start Date
1 July 2025
End Date
1 July 2026
Rate
Weekly frequency = 1 session per week (Friday)
Schedule Count = 1 → only one service occurrence per week.
1 service x 1 hour x $100.00/hour = $100.00 per service
July 2025 Fridays:
Fridays fall on: 4th, 11th, 18th, 25th → 4 Fridays
Q3 2025 (July, August, September) Fridays:
July: 4 Fridays
August: 5 Fridays → 1st, 8th, 15th, 22nd, 29th
Estimated Expenditure (Current Month – July 2025):
4 Fridays × $100.00 = $400.00
Estimated Expenditure (Current Quarter – Q3 2025):
13 Fridays × $100.00 = $1,300.00
Estimated Expenditure (Current Month)
$400.00
Estimated Expenditure (Current Quarter)
$1,300.00
Start Date
1 July 2025
End Date
1 July 2026
Rate
Since there are 3 scheduled days per week, and 1 session per scheduled day per week, we get 3 sessions per week
July 2025
There are 5 Tuesdays, 5 Wednesdays, and 5 Thursdays:
Total sessions in July = 5 × 3 = 15 sessions
Q3 2025 (July–September):
August 2025: 4 Tuesdays, 4 Wednesdays, 4 Thursdays or 4 × 3 = 12
Rate per session = $87.16
✅ Estimated Expenditure (Current Month):
15 sessions × $87.16 = $1,307.40
✅ Estimated Expenditure (Current Quarter):
40 sessions × $87.16 = $3,486.40
Estimated Expenditure (Current Month)
$1,307.40
Estimated Expenditure (Current Quarter)
$3,486.40
Remaining Funding = Available Funding – Estimated ExpenditureDate
Schedule End
The date on which the recurring schedule ends. This is a mandatory value.
Date (greater than Schedule Start)
Number of
Sets a specific number of either Appointments, Shifts, or Unavailabilities to be recurring.
Number
Frequency
Sets the frequency at which the recurring schedule is executed.
Daily
Weekly
Monthly
Quarterly
Annually
Repeat Every
Sets the repetition of days at which the recurring schedule is executed.
Number of Days
Exclude Public Holidays
If selected, Maica excludes any days marked as a public holiday(s) in Salesforce.
Yes/No
Within a Recurring Schedule, Maica generates Appointments based on a Schedule Horizon and forward rolling basis. Appointment records will be created for the Schedule Horizon Date Range.
To further understand the Appointment Creation Logic, see the below example:
Let's say you are creating a Recurring Schedule with the following inputs,
Schedule Horizon = 12 weeks
Schedule Start Date = Jan 3, 2025
Schedule End Date = Jun 3, 2025
Frequency = Daily
Today = Dec 3, 2024
Schedule Status = Approved
Master Appointment != null
Master Appointment != Cancelled
Then, when the daily batch is run, the following occurs:
The Schedule Horizon End Date will be calculated per below:
Today + 12 weeks = Feb 25, 2025
Maica will create Appointment records for the period between the Schedule Start Date and the Schedule Horizon End Date
Meaning that Appointment records will be created for the period Jan 3, 2025 to Feb 25, 2025
Furthermore, when the batch runs tomorrow (in this case, Dec 4, 2024), the next Appointment, or the Appointment on the Feb 26, 2025 will be created
And so on
This Maica logic ensures Appointment Records are created for schedules within a rolling time horizon, maintaining consistent coverage and adapting dynamically as time progresses.
Rosters use the same Schedule record and the same rolling Schedule Horizon as Appointments and Shifts, but the way a Roster series is started differs in two important respects.
Generation only begins once the master Roster is Approved. Saving a new Roster creates the first Roster only. The remaining Rosters in the series are not generated until that master Roster is approved. Approving it generates the series forward to the Schedule Horizon immediately, rather than waiting for the next overnight run.
The daily job then rolls the series forward. The Manage Recurring Rosters scheduled job maintains the series on an ongoing basis. It processes Schedules where all of the following are true:
Status is Approved
End Date is today or later
Under Evaluation is TRUE
The linked Master Roster has a Status of Approved
A Reevaluate action is available on the Schedule record. For a Roster series this is destructive: it deletes the future Draft Rosters and regenerates them from the Schedule's current configuration. Approved Rosters are never deleted by a reevaluate.
Maica retrieves Appointment Schedule records that will be included for Appointment processing based on a Schedule Evaluation Date field. The below information defines the field and details how the logic works in practice:
Schedule Evaluation Date: Specifies the earliest date on which Maica will include the Appointment Schedule record for evaluation to determine whether Appointment records need to be created. It is calculated as the Schedule Start Date minus the Schedule Horizon (in weeks). This ensures that the system identifies and processes Appointment Schedule records within the appropriate window for generating Appointment’s on a rolling basis. The formula is shown below.
Given Inputs:
Schedule Horizon: 12 weeks
Schedule Start Date: 1st April 2025
Schedule End Date: 30th October 2025
Frequency: Weekly
Today: 4th December 2024
Formula:
Calculation:
Schedule Horizon = 12 weeks
12 × 7 days = 84 days
Schedule Start Date = 1st April 2025
Subtract 84 days:
1st April 2025 - 84 days = 7th January 2025
Result: Schedule Evaluation Date will be 7th January 2025.
Using the example above, on 7th January 2025, Appointment records for the 1st April to 24th June 2025 (12 weeks ahead) will be created.
As time progresses, the Appointment Schedule will be assessed daily and additional Appointment records will be created, maintaining the rolling 12-week horizon.
Under Evaluation Formula:
All conditions inside the AND() must evaluate to TRUE for the overall formula to return TRUE.
Under Evaluation Conditions:
maica__Schedule_Evaluation_Date__c <= TODAY()
Ensures the Schedule Evaluation Date is on or before today's date.
TODAY() <= maica__End_Date__c
Ensures today's date is on or before the End Date.
ISPICKVAL(maica__Status__c, "Approved")
Checks if the picklist field maica__Status__c is set to "Approved”
Maica has logic to prevent past Scheduled Appointment being created. If the Scheduled Batch is interrupted (eg, stopped or paused) and then resumed at a later date, Maica ensures the Anchor Date is only used if the Appointment Schedule Start Date is greater than or equal to today's date. This logic prevents the creation of Appointments with dates in the past during the interrupted period.
Consider the following example:
Today's Date = 20th November 2024
An Appointment Schedule was configured to generate weekly Appointment records starting from 1st November 2024.
The batch process was interrupted on 10th November 2024, after creating Appointment records for 1st November and 8th November 2024.
When the batch is resumed, Maica evaluates and sets the Anchor Date to:
The most recent Appointment Schedule Start Date, if it is greater than or equal to today's date; or
Today's date, if the most recent Appointment Schedule Start Date is in the past.
By covering both scenarios, the logic ensures that the Anchor Date will always be today or a future date, never a past date.
So, if today's date is 20th November 2024, the system evaluates the most recent Appointment Schedule Start Date (8th November 2024) and determines that it is in the past. As per the logic:
The system ignores the 8th November 2024 date because it is before today's date.
Instead, it defaults the Anchor Date to 20th November 2024 (today's date), ensuring no Appointment records are created in the past.
Maica will then begin generating Appointment records starting from the next valid future date, based on the schedule's frequency.
There are several ways to cancel a Recurring Schedule or an Appointment within one, depending on what you need to cancel and where you are in the schedule.
To end a recurring arrangement completely, cancel from the Master Appointment. This cancels the Master Appointment and all remaining future Appointments within the schedule in one action. Use this option when the recurring arrangement is no longer needed at all.
If you cancel only the Master Appointment without cancelling the full schedule, the next scheduled Appointment in the sequence automatically becomes the new Master Appointment and the schedule continues from there.
If you need to end a schedule from a specific point forward, open the Appointment you want to cancel from and select Apply changes to all future Appointments. This cancels that Appointment and all remaining Appointments after it, while leaving any earlier Appointments in the schedule untouched.
If you only need to cancel a single Appointment within a schedule — without affecting any others — open the Appointment you want to cancel and select Apply changes to only this Appointment. The rest of the schedule continues as normal.
When generating Recurring Appointment batches, Maica automatically ensures that all cloned Appointment records are owned by an Active User. This prevents batch failures that could occur when the Owner of the Master Appointment is inactive. It works as described below:
Ownership Validation
Before generating Recurring Appointments, Maica checks whether the Master Appointment Owner is active.
If the owner is active, ownership of the cloned Appointment records is retained.
If the owner is inactive, ownership is reassigned to the current running user (the user executing the batch). This is determined in the Scheduled Jobs.
Batch Execution Conditions
If the running user is inactive, the batch or scheduled job will not execute.
This ensures only active users can trigger recurring batch generation.
The below tables outlines some Example Scenarios:
The Master Appointment Owner is active
Recurring Appointments retain the same owner.
The Master Appointment Owner is inactive
Recurring Appointments are reassigned to the current running (active) user.
The running user is inactive
This logic ensures all recurring records are owned and processed by Active Users, maintaining reliability in Recurring Appointment and Unavailability batch generation.
In some environments, you may notice that when a Recurring Schedule is first created, only the Master Appointment is generated. The remaining appointments up to the Schedule Horizon are only created after the schedule is edited and saved again.
This behaviour is most commonly caused by organisation-level configuration, rather than an issue with the Maica package itself.
So, what causes this?
Recurring appointment generation relies on internal evaluation logic that runs at the time the schedule is created. If the Schedule Status does not meet the required criteria during this initial evaluation, the recurring logic is skipped.
This can occur when:
A default value is set on the Schedule Status picklist
The default value prevents the schedule from being evaluated as eligible on first save
The status is only updated to the expected value after the record is created
As a result:
Only the Master Appointment is created initially
Editing and resaving the schedule later triggers the remaining Appointments to be generated
Schedule Start
The date on which the recurring schedule starts. This is a mandatory value.
maica__Schedule_Start_Date__c - Schedule Horizon (weeks)Schedule Evaluation Date = Schedule Start Date - Schedule Horizon (weeks)AND(
maica__Schedule_Evaluation_Date__c <= TODAY(),
TODAY() <= maica__End_Date__c,
ISPICKVAL(maica__Status__c, "Approved")
)A Roster series with a Draft master Roster is never rolled forward, even where its Schedule is otherwise eligible. If a series has stopped generating, check the master Roster's status first.
Your organisation's Billing Cancellation rules apply to all of the scenarios above. Check with your administrator if you are unsure how these are configured.
When a managed Apex class used in a scheduled job is updated, Salesforce does not automatically refresh the job to use the latest version of the class. Instead, it continues to execute a cached version of the old logic, which can lead to discrepancies in behaviour.
This is a Salesforce platform behaviour and applies to any scheduled job relying on an updated Apex class. To ensure the job runs with the latest logic, it needs to be manually rescheduled after an update.
Whilst this is a Salesforce platform behaviour, Maica’s development team proactively monitors and reschedules all necessary scheduled jobs after every package update. This ensures that updates are applied smoothly, and you should experience no disruption in behaviour.
If you notice any unexpected behaviour following an update, please contact the Maica team, and we’ll ensure everything is running as expected.
This ensures all generated Appointment records are owned by an active user, ensuring recurring processes are run successfully.
Recommended configuration
Maica recommends not setting a default value on the Schedule Status field.
Maica automatically manages schedule statuses as part of its workflow, and default values on this field can interfere with recurring evaluation logic.
Removing the default value ensures:
Period Selection
Toggle between Month Picker and Date Range Picker.
Period, or Period Start and Period End
The window the statement covers. For a Residential Aged Care statement this window is used exactly as entered.
Service Provider
Optional. Restricts the run to Service Agreements for one provider. Leave blank to include all of them.
Once Funding Type and the period are populated, Maica retrieves the matching Service Agreements and reports how many were found. Confirm submits the run.
Maica then writes one queued Log record per Service Agreement and processes them in the background, one Service Agreement at a time, so a failure on one resident never stops the others. Progress is shown in the component, and a message on completion reports either that all statements were generated or that some were generated with errors.
A Service Agreement is in scope for the run when it starts on or before the period end, or has no start date; it ends on or after the period start, or has no end date; it matches the Service Provider filter where one was given; and it matches the selected Funding Type.
For each Service Agreement in scope, and for the one period requested, Maica works through the following steps.
Maica selects every Residential Aged Care - Monthly statement on that Service Agreement whose own period intersects the requested window, then classifies what it finds:
Nothing
Overlap is deliberately detected on the statement periods themselves rather than on the lines they hold. A statement generated before its lines existed overlaps a window while holding nothing inside it, so testing the lines would miss it and allow two overlapping statements for the same resident.
Exactly one statement may cover a period. Nothing in this process can move a line from one statement to another, so resolve the overlapping statement before generating the new one.
Maica selects the Invoice Line Items belonging to the Service Agreement's Agreement Items whose Service Date falls inside the window.
If any of those lines is already linked to a statement that does not overlap the window, the run is rejected for that Service Agreement. This is reachable after a Service Date has been corrected into the period while the line kept its old statement link: its figures are carried by a statement covering other dates, and silently re-linking it would change that statement's totals without recalculating them. Correct the linkage on the named lines, then generate again.
Each line's Line Total is added to the total for its Support Item's fee type. Lines with a blank or zero amount are skipped.
Each contributing line has its Service Agreement Statement lookup written back, and nothing else on the line is touched. In particular the line's Claim Status is never written by statement generation. The statement and the back links are committed together, so a failure on either leaves neither behind.
Running the same Service Agreement and the same period again recalculates the statement in place. Three properties follow from that:
Totals are reassigned, not accumulated. Amended or credited lines are reflected, and a period whose lines have all gone keeps its statement with the totals zeroed. The record is never deleted.
The issue date is restamped, so it always names the latest recalculation.
Stale back links are cleared. A line whose Service Date was corrected out of the window stops pointing at this statement, which both keeps the linked set reconciling with the figures and frees the line to join the statement its new date belongs to.
Generation is driven by the packaged auto-launched flow Maica - Generate Residential Aged Care Statements. The flow itself is a thin wrapper: it calls the packaged Apex that does the work, then writes a Log record of type Error with a source of Maica - Generate Residential Aged Care Statements when generation faults, carrying the Service Agreement, the statement type, the funding type, the period and the message.
The flow ships as a template, so an organisation that needs to extend the process can create its own copy, modify it, and select that copy in the Statement Generation Flow field. The Apex it calls is available to a subscriber organisation, so a large retrospective backfill can also be driven directly rather than through the settings component.
The flow runs in system context without sharing, so the records it creates do not depend on the running user's record access. The period, statement type and funding type are all passed in from the settings component rather than being decided inside the flow.
Because the period is taken verbatim, the same process covers three cases that would otherwise need separate handling:
A period that was never generated. Enter the window and run it. Totals come from the committed invoice lines, so a period generated long after the fact produces the same figures it would have produced at the time.
A resident discharged part way through a month. Enter the window ending on the discharge date. The agreement is in scope despite being discharged.
A correction. Re-run the same window, subject to the status rule above.
Existing statements overlap that period
More than one statement, or one statement with different bounds, intersects the window
Resolve or correct the overlapping statement, then generate again
Invoice Line Items dated in that period are already linked to a statement outside this period
A Service Date was corrected into this period and the line kept its old statement link
Every failure lands on the Log record for the Service Agreement it belongs to, so a run that reports errors can be triaged resident by resident.
A Residential Aged Care statement period is taken verbatim from what you enter. There is no requirement that it be a complete calendar month, because a retrospective period and a final statement for a resident who left part way through a month both need an arbitrary window. This differs from Support at Home - Monthly, which does enforce a complete calendar month.
The confirmation notice states that Service Agreements with an existing statement overlapping the period are excluded from processing. For this statement type they are not excluded: they are attempted and rejected with an error, and the reason is recorded on the Log record for that Service Agreement. Always review the Log records after a run rather than reading a completion message as confirmation that every resident received a statement.
A re-run is refused once the statement has left the Generated status. An Exported, Claim Processed or Dispatched statement has already been sent or claimed against, and restating its figures would diverge the record from the document the resident holds and from the claim already lodged. The error names the statement, its period and its current status.
The Statement Generation Flow field is a free selection, and where the flow it names cannot be found Maica falls back to the general Maica - Generate Service Agreement Statements flow rather than reporting the problem. Selecting the wrong flow therefore produces statements of the wrong shape rather than an error. Confirm the field names the Residential Aged Care flow, or your copy of it, before a production run.
1
Payment summary (AGCSyncPaymentSummaryProc)
Service payment summary
Claim Batch payment fields (advance and claim amounts and dates, held-over and special payment amounts)
2
A step can complete but still surface warnings — for example, a care recipient the claim references that cannot be matched to a Contact, or a rejected event on a resident. Warnings do not stop the sequence; the step finishes and the next one runs. A failure (a callout error or missing prerequisite) stops the sequence at that step.
Retrieves the service payment summary for the claim month and writes the payment position onto the Claim Batch: advance paid date and amount, claim paid date, claim and paid totals, current held-over payment amount, and special payment amount. Stamps the claim last sync time.
Retrieves the residential care claim for the service and claim month. It writes the claim status, the Services Australia operational bed count, the submission date, and registered nurse eligibility to the Claim Batch, and upserts the service-level Claim Service Classification records.
When the returned claim status is Approved, this step additionally writes the confirmed per-resident data: it matches each returned care recipient to a Contact and their residential aged care Funding, then upserts one Funding Item per resident for the claim month (carrying the supported resident status), along with the confirmed AN-ACC classification data.
Retrieves the payment statement service summary for the claim month and writes the respite allocation and usage figures and the residential respite incentive (RRI) figures to the Claim Batch. Where a month has no respite data, these fields are cleared so a prior month's values do not linger. Stamps the payment statement last sync time.
Retrieves the payment statement care recipient detail for the claim month and writes the per-resident balance data onto each resident's Funding record, matched by the Services Australia care recipient identifier.
Retrieves the 24/7 registered nurse supplement summary for the service and writes it to the Location as RN Supplement Summary records with their monthly Breakdown children. This step is covered in full in its own article.
Runs the statement reconciliation service against the data the earlier steps synced, preparing adjustment lines where the confirmed position differs from the invoices already raised. See Statement Reconciliation Service.
Every step is scoped to one service for one claim month. The service is resolved from the Location linked to the Claim Batch (its Service ID, and for the RN supplement, its Service NAPS ID). The claim month is derived from the Claim Batch Claim Period Start Date, and the provider is taken from the Claim Batch Services Australia Provider ID, which is threaded through every step so a multi-provider organisation claims under the correct provider.
The reads do not all express the claim month the same way. This is deliberate and matches each Services Australia interface.
Service payment summary
Truncated year-month, as a from and to range
2026-06
Residential claim details
Full date
The integration calls these Services Australia interfaces at the following versions:
Service payment summary
v1
residential-care/services/{serviceId}/payment-summary/v1
Residential care claims
v3
Each step wraps its work so that a failure is surfaced as a processing error and the sync stops cleanly rather than leaving a half-written state, and each step saves the PRODA access token on completion so the connection is reused efficiently across the sequence. Because steps commit their own owned fields, the data from steps that succeeded before a failure is retained.
Services Australia's claims interface includes a finalise operation: it formally closes the claim month and triggers the final payment calculation, and it is sent with the stored ETag as an if-match header for concurrency control.
The order matters. The payment and claim reads run before reconciliation because reconciliation works against the confirmed position the earlier steps bring in. A failure part-way through leaves earlier steps' data committed; re-running the sync repeats the whole sequence from the start.
The resident-level respite and social leave balance figures are sourced from the payment statement response, not the claim response. They are written by the payment statement steps, so they only populate once those steps have run.
These are the major versions expressed in the integration layer. Confirm the exact deployed sub-version with Services Australia's current published schema before relying on any field that changed between minor revisions.
The finalise operation exists as an integration primitive but is not wired to a user action. There is no Finalise button in the Claims Sync modal and no automated caller. The Claim Batch reaches its approved and completed states by polling the calculated position through Claims Sync, not by a Maica-initiated finalise.
This is a blank template ready to be populated with your data.
This a template with pre-populated data that you can refer to when populating your own template.
As mentioned above, Maica objects contain attributes of varying Data Types. So, to begin populating a Reference Data Template, lets use an example object: Appointment Services.
In the downloadable template above, each column will come pre-populated with a value for each column letting you know what Data Type is expected. Remember, each column represents an attribute of the specific object. Below shows the pre-populated columns and rows for the Appointment Services object:
Here we can see Line 1 contains the attributes of the Appointment Services object, and Line 2 contains the required Data Type to input in order to populate that attribute.
So, in order to populate the attributes, we first must understand the Data Types. The table below explains each Data Type in more detail:
Object API Name
This column represents the Data Object you are loading for and must be populated with a valid API name of a Maica Object. It’s required on every row to tell the which object to retrieve and write the values to.
Related Record Name
Any column that references the Name value of a related Object represents a lookup field linking the record to another related record. In the Reference Data loading process we use the Name value from the related object to search for, find and relate the loaded record. In the above example, this is shown in the Related Client Note Template Name. Note, this may be called Participant Note in your Maica instance.
If there is more than one record with the same Name value, the import for this row will fail. (The flow can be easily extended to reference IDs of records for loading purposes if required.)
Text Value
Now, these Data Types must be practically applied to the attributes shown in Line 1. In order to understand the formatting or values of any field, you can follow the below steps:
For our example we are using the Appointment Service Object. First, you must go to the Setup by clicking the Cog (as shown below) followed by clicking Setup.
Once in the Setup, head to the Object Manager by clicking the following.
Then, use the Quick Find to search for the required Data Object. In this case: Appointment Service.
After you have selected the required object, click the Fields & Relationships tab and find the attribute you are wanting to understand the formatting or values for. For example, let's say within Appointment Services tab of our template you want to populate the Available Sections column. You can see from the template that the Data Type for this column is Multi-Select Picklist Values, but you may be wondering what these values are. So, in the Fields & Relationships of Appointment Services, find Available Sections and select it, as shown below.
After you have found the required Field, in this case Available Sections, scroll down to see the Values and their associated API Name, as shown below.
Now, you can see the required information to populate your column within the Template.
Please see below for an exmaple of how this column would be populated within the Template with the correct values and formatting.
It is crucial that the first row within each tab is not modified. Modifying or adding columns in the first row will result in errors when attempting to import your data into Maica.
The current Appointment timezone (based on your browser)
The timezone of the selected Location
A prompt asking whether you’d like to update the Appointment timezone to match the Location
If you click ‘Update’:
The Appointment’s timezone will be updated to match the Location (e.g. changed to Australia/Perth)
When you return to the Basic Details section, you’ll see the new timezone applied.
Once the timezone is set (either by default or after confirmation), Maica treats all time inputs as relative to that timezone.
You are in Melbourne, but the Appointment location is Perth. You schedule the Appointment for 8:00 AM (Perth time).
The Appointment is stored as 8:00 AM Australia/Perth
On your Planner (in Melbourne), this Appointment will appear at 10:00 AM
A user in Perth will see the Appointment at the intended local time of 8:00 AM
The Appointment Time Zone is displayed alongside the scheduled times
All internal logic (travel, alerts, shifts) respects this timezone
Appointment times are automatically converted and displayed in the viewer’s browser timezone
A globe icon appears in the Planner header showing the viewer’s current timezone
Tooltip appears on hover: “Your current Time Zone”
If you change the Location after setting a timezone, Maica may prompt you again if a mismatch is detected.
In border regions, Admins can override and manually select a timezone.
For Appointments that span multiple timezones, Maica allows users to choose which timezone to apply.
Layer
What It Controls
How Maica Handles It
Browser/User Timezone
Sets default timezone when creating a new Appointment
Detected automatically via browser (e.g. Melbourne)
Location Timezone
Reflects where the Appointment service occurs
Scenario
User Timezone
Appointment Location
Scheduled Time (Local)
What User Sees
User in Melbourne creates an Appointment at 8:00 AM for a Perth Location and clicks Update when prompted
Melbourne (GMT+10)
Perth (GMT+8)
By using webhooks, the integration becomes more efficient and automated, as events are instantly relayed between systems, ensuring timely and accurate updates across all platforms.
So, before we can configure any integration on Maica, we must ensure our Site is created and set up correctly.
In order to effectively create a Site in your Salesforce instance, please refer the following Salesforce articles:
Once your Site has been created, there are a few components necessary for ensuring they are successful in Maica and your integrations.
Site Label & Site Name
This is the name of the site as it appears in the user interface. We recommend a generic term to suit all integrations: such as Maica Notifications.
Default Web Address
This is the unique Salesforce Site URL for this site. We recommend a generic term to suit all integrations: such as Notifications.
Active
In addition, ensure the below boxes are checked and you use the recommended Clickjack Protection Level.
Once you have configured your Site fields and assigned the appropriate naming conventions, it is important to assign the correct timezone to your Site Guest User.
You do so by heading to the your Site Profile.
To get your Site Profile, follow the below listed steps:
Select Your Site: In the list of your sites, find the site that you set up (in our case, the one called Maica Notifications) and click on the Site Label.
View the Site Details: On the site details page, click on the Public Access Settings button.
Navigate to the Profile: This link will take you to the Site Guest User Profile for that site. You can then click Assigned Users to see the Site Guest User associated with the site.
Once there, select the Full Name in order to assign the correct timezone to your Site Guest User, as shown below.
After selecting your Site Guest User, simply click Edit and change the timezone to Australian Eastern Standard Time (or your relevant Time Zone), as shown below.
As well as setting the correct timezone for our Site Guest User, it is important to assign the relevant permission sets in order to make Integrations work seamlessly. You do this from the same Profile as shown above.
Once on the Site Guest User Profile, simply scroll down Permission Set Assignments and click Edit Assignments. Here, you can add the relevant Permissions for your Organisations Integrations, the relevant Permissions are as follows:
Maica - Handle Webhook Notifications
Provides the ability to process the Webhook Notifications.
Supplements - current supplement eligibility, such as dementia, oxygen and veterans' supplements.
Place allocations - whether the resident holds a committed and current residential place.
Care type approvals - the care types Services Australia has approved the resident to receive.
Care extensions - any extension events recorded against an approved care type.
Medicare details - the resident's Medicare card information, retrieved as a subordinate step within the same sync.
The sync is read-only. It never writes data back to Services Australia.
There are three ways the sync runs. There is no background scheduled job; every sync is triggered by a user action or by the monthly claim process, which keeps all sync activity visible and traceable.
Run the Sync Care Recipient quick action from the resident's record to refresh that one resident immediately. This is the action you use after a reassessment, a new supplement, or any time you need the latest Services Australia data for a specific resident.
When a resident's Services Australia identifier has not yet been used for any retrieval, the sync first performs a care recipient search to obtain a short-lived access key, then retrieves the full details. This search-first step is what establishes the secure link to that resident's record.
Run Sync All Care Recipients from the Maica Settings admin page to refresh every active residential aged care resident in one action. Use this for a periodic refresh across the whole resident population, for example after the annual classification change.
Before a monthly claim is processed, the claim workflow refreshes the residents in that Claim Batch so the classification and approval data used for the claim is current at the point it matters most. This happens automatically as part of the claim process; you do not run it separately.
Each sync records its outcome on the resident's Contact record, separate from the funding profile that holds the synced data itself. These are operational status fields, so you can see how current the data is and whether anything needs attention. The following fields are populated by the sync and are read-only.
Care Recipient Sync Status
Care_Recipient_Sync_Status__c
Shows the result of the most recent sync for this resident, so you can see at a glance whether the Services Australia data came through cleanly.
The outcome of the last Services Australia sync for this resident.
The sync status reflects the messages Services Australia returns:
Synced
The sync completed successfully with no issues.
Synced with Warnings
The sync completed, but Services Australia returned one or more warning messages worth reviewing.
Error
The sync is a prerequisite for admission. Before an entry event can be submitted, the resident must hold current, valid Services Australia data. Maica checks that:
The Care Recipient Sync Status is Synced or Synced with Warnings (not Error).
A care type approval exists for residential care (RESI) with an active date range that covers the proposed entry date.
A place allocation exists that is current and either committed or allocated.
A bulk sync issues a Services Australia call for the residents it covers. Run it when a broad refresh is genuinely needed rather than as a routine habit, and review the outcome afterwards.
If these conditions are not met, the entry event is blocked and you are prompted to run the care recipient sync first. Always run the sync before attempting to admit a resident, so that Maica holds Services Australia's current approval and place allocation data.
Approved services for residential approvals (OI-001): It has not been confirmed whether Services Australia populates the approved services array for residential (RESI) approvals in the care recipient details response. If it does, the way approved services are stored may need to be revisited. Confirm the behaviour with Services Australia and the engineering team before relying on approved service data for residential residents.
Providers must report 24/7 registered nurse (RN) coverage to GPMS each month, confirming whether a registered nurse was on duty and present for every hour of every day. Maica calculates this result from rostering data and records it as a coverage check, giving the facility manager the figures and the audit trail they need to complete the GPMS submission.
This article explains how the coverage check is calculated, how to run it, and how to read and use the result. It is written for administrators and facility managers.
The check looks at the registered nurse shifts worked at the facility during the month and works out whether every hour of every assessed day was covered.
Qualifying shifts. A shift counts as RN coverage where the linked appointment service is classified as Registered Nurse. This is an explicit, auditable classification on the shift.
Actual times, not scheduled. The check uses the resource's actual start and end times, and only includes shifts that were completed (the actual end time is recorded). A scheduled shift that was cancelled or not checked out does not contribute to coverage, which matches the regulatory intent.
Building the timeline. For each assessed day, the check assembles the actual coverage windows, merges any that overlap, and identifies any hour with no qualifying RN on duty. Those are gap hours. Shifts that span midnight are split across the two calendar days.
The overall result is Pass when there are no gap hours, and Fail when there are any. A facility that qualifies for the Modified Monash exemption is recorded as Exemption Applied, where a reduced coverage standard applies.
The check assesses complete calendar days only. The window runs from the first of the coverage month to the earlier of the month end and yesterday, and that date is stamped on Assessment Period End.
The cap exists because coverage is derived from actual shift times. A shift in progress today has no actual end time recorded, so an uncapped window scored every remaining day of the month as a full 24-hour gap. A correctly staffed facility checked mid-month returned a plausible looking Fail on the record that backs the GPMS declaration.
A completed prior month is unaffected: its month end already falls before yesterday, so the whole month is assessed and only Assessment Period End is newly populated.
Where the assessed window is shorter than the coverage month, the result is partial. Three things follow:
Re-running the check after the month has ended updates the same record in place, widens the window to the full month, clears the partial flag automatically, and preserves any GPMS submission confirmation already recorded.
Run the check from the quick action on the Location record:
The check produces or updates one coverage record for the facility for that month. Running it again for the same month (for example after late timesheet corrections) overwrites the previous result; the prior outcome is retained in the field history on the coverage status.
The modal warns before the run when the selected month is the current one, so the user knows the result will be provisional before they commit to it.
Each run records its result on an RN Coverage Check record under the facility. The fields below capture the result and the GPMS submission tracking. The calculated fields are system-maintained and read-only; the two GPMS fields are filled in by the facility manager.
Both Assessment Period End and Partial Month appear on the coverage check record page: the former alongside Coverage Month, the latter alongside Coverage Status so the provisional flag reads next to the result it qualifies.
A facility in Modified Monash category 5, 6, or 7 with 30 or fewer operational beds qualifies for a reduced coverage standard rather than full 24/7 coverage. The check reads the facility's Modified Monash classification and capacity from the Location record to decide whether the exemption applies, and records the result as Exemption Applied with the exemption flag ticked.
The Shift record type carries several direct care worker classifications: Registered Nurse, Enrolled Nurse, Personal Care Worker and Assistant in Nursing. These are the Department's categories for care minutes reporting.
The coverage record gives the facility manager everything needed for the monthly GPMS entry: the pass or fail result, the total RN and gap hours, and the gap detail to investigate any misses. GPMS submissions are due by the 7th of the following month.
Run the check after month end so the record covers the whole month, confirm Partial Month is not ticked, complete the GPMS entry, then tick GPMS Submitted and record the date so Maica holds a simple compliance trail. The check does not submit to GPMS directly.
Learn how to configure Public Holidays within Maica
In order to configure Holidays within Maica, please follow the steps outlined below:
Setup and search for HolidaysTo begin creating Holiday records, head to the Salesforce Setup and search for Holidays, as shown below.
Holiday Once you have opened the Holiday tab, click the New button to create a new Holiday.
Please refer to the following naming conventions for both State and National Holidays:
State Based Holidays
In order to create a State specific Holiday, simply ensure that you include both the Short and Long State Suffix from the table below
For example: to create a Victorian only Holiday for the Melbourne Cup on 01/11/2022, you need to use the following Holiday Name: Melbourne Cup (VIC) (Victoria)
National Holidays
In order to create a National Holiday, simply ensure that you type only the Holiday Name and do not include any reference to a State Suffix from the table below
For example: to create a National Holiday for Christmas Day on 25/12/2022, you need to use the following Holiday Name: Christmas Day
Once you have created your Holiday Records, it is crucial to link them to a Business Hour Record. To do so, first select the Holiday and then click the Add/Remove button under Business Hours, as shown below.
After clicking the Add/Remove button, you will be directed to a page which allows you choose to which Business Hours the selected Holiday applies.
Once done, you will see your Business Hour record has been successfully added to your Holiday, as shown below.
In order to configure Business Hours within Maica, please follow the steps outlined below:
To begin creating Holiday records, head to the Salesforce Setup and search for Holidays, as shown below.
Once you have opened the Business Hours tab, click the New Business Hours button to create a new record.
Next, follow the below outlined steps:
Finally, hit Save to finalise your Record.
Learn how to set up your Care Workers on the Maica Mobile App
This article explains the administrative setup required to get started on the Mobile App, prepare Care Workers, and ensure correct Permissions and Settings are in place for designed usage.
The setup is broken down into sections, please refer each section in more detail below.
The Maica: Care Mobile Lightning app must be published to Care Worker profiles so that it appears in Salesforce Mobile navigation.
Hence, first add the Maica: Care Mobile Lightning app to the Profiles your Care Workers use (the Admin profile already has visibility enabled).
Note:
The Mobile App ships with a single Home tab that launches the Planner experience.
The Home flexipage embeds the Maica: Planner Aura component, which hosts the Planner LWC.
This configuration ensures the mobile app provides a direct, consistent entry point into the Planner experience.
Every Mobile User must be linked to an active Resource record to enable mobile planner behaviour.
The Planner service relies on configuration values stored in the Maica Setting records, it is important that:
You ensure your Maica Maps Settings records stay up to date (Google API Key) to allow automated Google related processes (such as Travel Calculations) to run.
Additionally, populate the Support Phone and Email fields in the Maica General Settings to allow the Support button to display for Care Workers.
Other than the above listed, no additional action is required as when a user qualifies as a Mobile Worker:
The planner automatically loads in Agenda view. The planner component forces the Agenda View and calendar mode whenever the logged-in Resource’s Primary Experience equals Mobile, while keeping other views for desktop-first users.
Each Maica Care Mobile user requires specific Permission Sets or Permission Set Groups to use the minimum required functionality of the Mobile App. These are:
These groups provide the baseline object-level permissions required for:
Viewing planner content.
Interacting with Appointments and Shifts.
If you wish to test the above experience before issuing it out to your Care Workers, please follow the steps below:
Log in as a templated Care Worker whose an active Resource, and set to Primary Experience = Mobile.
Open the Maica: Care Mobile app in Salesforce mobile; the Planner Home tab should load automatically, reflecting the new mobile-first experience.
Switch the Resource to Primary Experience = Desktop and confirm they still see the multi-view Desktop Planner when using the standard Salesforce App on Mobile.
Following these steps ensures Care Workers receive the tailored workflow in the Care Mobile app while Administrators retain full control over who uses the Mobile or Desktop scheduling interfaces.
To deploy the Maica Care Mobile App successfully:
Publish the Maica: Care Mobile app to worker profiles.
Verify every user has an active Resource__c record with Primary Experience = Mobile.
Maintain Maica Setting records for Planner and General Settings.
Once configured, the mobile planner automatically adapts for care workers, delivering an optimised experience with Agenda view, swipe-ready quick actions, and compact layouts.
Learn about Other Claim Management functionality in Maica, including Support at Home Monthly Statements
Claim Management allows you to generate a number of different Service Agreement Statement types, including those for participants funded under the Support at Home program. Each statement captures a participant's budget balances and service activity for the month, producing a complete record that can be used for reporting, compliance, and document generation.
To access Statement Management, navigate to Claim Management in Maica's Settings and select the Other tab.
The Generate Service Agreement Statements component presents the following inputs:
A small number of deliberate principles shape the RACS solution. Understanding them helps administrators configure, extend, and support the solution without working against its design. This article explains the most important boundary in the solution, the deposits versus invoicing split, and then the broader conventions the build follows.
The single most important principle to understand is that accommodation deposits and invoicing are kept apart.
A refundable accommodation deposit (RAD or RAC) or a legacy bond is money the provider holds on the resident's behalf and must refund on departure. It is not a charge. For that reason it is tracked as a financial ledger: a Lump Sum Account with child Lump Sum Transaction records for every payment, retention deduction, draw-down, and refund. The ledger gives a complete audit trail and lets the balance be reconstructed at any point in time.
Daily accommodation payments (DAP and DAC), by contrast, are fees. They are configured as Agreement Items and billed by the billing engine like any other fee.
All objects and fields use the maica_cc namespace. New Apex classes use the RAC_ prefix, and the RACS settings components use the settingRACS
Total: 13 Fridays
September 2025: 5 Tuesdays, 4 Wednesdays, 4 Thursdays or 13 total
Total sessions in Q3 = 15 (Jul) + 12 (Aug) + 13 (Sep) = 40 sessions
Total Remaining - Active
Rollup Summary
Summarised Object: Plan Budget
SUM Remaining Amount
Filter Is Active = TRUE
Represents the SUM of the Remaining Amount from all related Plan Budget records where Is Active = TRUE. Use this to monitor how much approved funding is still available within the active Plan Budgets items.
Remaining Funding - Active
Formula (Currency)
Plan → Total Remaining - Active
Represents the SUM of the Remaining Amount from all related Plan Budget records where Is Active = TRUE. Value taken from the roll-up summary field on the Plan record.
$100.00 per service
Service Frequency
Weekly
Service Duration
1.00
Schedule Count
1
Current Month
July 2025
Current Quarter
Q3 (July – September 2025)
$87.16 per service
Schedule Count
1
Service Frequency
Weekly
Schedule Day
Tuesday;Wednesday;Thursday
Current Month
July 2025
Current Quarter
Q3 2025 (July – September)
Total_Basic_Daily_Fees__c
Basic Daily Fee
Total_Hotelling_Contributions__c
Hotelling Contribution
Total_NCCC__c (Total Non-Clinical Care Contributions)
Non-Clinical Care Contribution
Total_Means_Tested_Care_Fees__c
Means Tested Care Fee
Total_Income_Tested_Fees__c
Income Tested Fee
Total_RAD_RAC_Retention__c
RAD/RAC Retention
Total_Billable_Fees__c (Total Billable Fees)
Every charge in the period, whatever its fee type
Total Billable Fees is the whole period, not a subtotal of the seven above it. Fee types with no dedicated total, which includes Higher Everyday Living Fee, Extra Service Fee, Additional Service Fee, Booking Fee, Accommodation Bond and Other, contribute to it and to nothing else, as does any line whose Support Item carries no fee type at all. Where the two sides do not reconcile, the difference is the charges in those categories.
Issue Date is stamped with the date the run executed, so on a re-run it names the most recent recalculation rather than the original one.
Statement Generation Flow
The auto-launched flow that generates the statements. For this statement type, select Maica - Generate Residential Aged Care Statements or your own copy of it.
Type
Residential Aged Care - Monthly.
Funding Type
The Funding Type of the Service Agreements to include. Required.
A new statement is created.
Exactly one statement covering identical start and end dates
Treated as a re-run of that statement. See Re-running a period.
Anything else
Rejected. The error names each overlapping statement, its period, and how many of the period's Invoice Line Items it holds.
Total_Accommodation_Charges__c
Daily Accommodation Payment, Daily Accommodation Contribution and Accommodation Charge
Correct the linkage on the named lines
Only a statement still in the Generated status can be regenerated
The statement has been exported, claimed or dispatched
Do not restate it. If the figures are genuinely wrong, resolve it with the existing statement rather than regenerating
Both a claim period start date and a claim period end date are required
The run reached the flow without a complete period
Check the period inputs on the component
A Generate Service Agreement Statements Flow was not found
The Statement Generation Flow field names nothing that resolves, and neither does the fallback
Select an active auto-launched flow in that field
Claim details (AGCClaimDetailsSyncProc)
Residential care claim details
Claim Batch claim status, operational beds, submission date, RN eligibility; Claim Service Classification records; on approval, per-resident Funding Item and AN-ACC data
3
Payment statement summary (AGCPaymentStatementSummaryProc)
Payment statement service summary
Claim Batch respite and residential respite incentive (RRI) fields
4
Payment statement care recipients (AGCPaymentStatementCareRecipientsProc)
Payment statement care recipient detail
Per-resident balance data on Funding
5
RN supplement summary (AGCRNSSummarySyncProc)
24/7 RN supplement summary
RN Supplement Summary and Breakdown records on the Location
6
Reconciliation (RACReconcileProc)
(no call; uses data already synced)
Reconciliation adjustments against invoices
2026-06-01
Payment statement (summary and care recipients)
Full date
2026-06-01
residential-care/claims
Residential care payment statements
v2
residential-care/payment-statements
This field accepts free text values, however it is important to check if there are any length restrictions. To do so: Go to Setup > Object Manager > {Object Name} > Fields & Relationships and look at the field you are populating. This process is further explained below.
Rich Text Value
As per the Text Value but allows loading in of HTML formatted text.
Number Value
This field accepts numbers values, however it is important to check if there are any length restrictions or if decimals are allowed. To do so: Go to Setup > Object Manager > {Object Name} > Fields & Relationships and look at the field you are populating. This process is further explained below.
Picklist Value
This field only accepts valid available and active values from the Object Picklist. check the field under Setup > Object Manager > {Object Name} > Fields & Relationships > {Field Name} to check for valid, active values. This process is further explained below.
Multi-Select Picklist Values
As above, but allows for many values to be loaded. Each value must be valid and be separated by a semicolon ;.
Date Value
This field only accepts valid Date format values. Your Salesforce Org setting will determine the acceptable default date format, but typically this will be dd/mm/yyyy or mm/dd/yyyy.
Date/Time Value
This field only accepts valid Date/Time format values. Your Salesforce Org setting will determine the acceptable default date/time format, but typically this will be dd/mm/yyyy, hh:mm:ss.
Boolean Value
Only valid TRUE values will be accepted (field is set to FALSE by default). (TRUE, true, True, 1, yes, Yes, YES).






Detected via Google API or manually selected
Appointment Timezone
Stored on the record and used for travel/time logic
Becomes the source of truth for scheduling
Displayed Time
What each user sees on the Planner or record view
Converted automatically to match each user’s browser timezone
8:00 AM Perth time
10:00 AM (adjusted to Melbourne time)
User in Sydney views an Appointment created by someone in Perth for 2:00 PM Perth time
Sydney (GMT+10)
Perth (GMT+8)
2:00 PM Perth time
4:00 PM (adjusted to Sydney time)
Admin in Brisbane creates Appointment with no Location selected
Brisbane (GMT+10)
None
9:00 AM Brisbane time
9:00 AM
Admin in Adelaide selects a Melbourne Location and clicks Update
Adelaide (GMT+9:30)
Melbourne (GMT+10)
11:00 AM Melbourne time
10:30 AM (adjusted to Adelaide time)
Planner user in Perth views an Appointment scheduled in Melbourne at 1:00 PM
Perth (GMT+8)
Melbourne (GMT+10)
1:00 PM Melbourne time
11:00 AM (adjusted to Perth time)

Ensure this field is checked so the Site is Active upon Save.





Coverage_Status__c
The overall result for the month: Pass for full coverage with no gaps, Fail where one or more hours had no qualifying RN on duty, or Exemption Applied where the facility qualifies for the Modified Monash exemption.
Overall RN coverage result for this month. Set automatically when the coverage check is run.
Assessment Period End
Assessment_Period_End__c
The last day actually assessed: the month end for a completed month, or yesterday for a run part-way through the current month.
The last complete day assessed by this check. Set automatically.
Partial Month
Partial_Month__c
A formula, ticked whenever the assessed window is shorter than the coverage month. Because it is derived it cannot drift, and a completing re-run clears it automatically.
Ticked when this result covers only part of the month. Re-run after month end for the GPMS declaration.
Total RN Hours
Total_RN_Hours__c
The total hours of qualifying RN coverage during the assessed period after merging overlapping shifts.
Total hours of RN coverage in this month after merging overlapping shifts. Set automatically.
Gap Hours
Gap_Hours__c
The total hours in the assessed period with no qualifying RN on duty. Zero results in a Pass; any value above zero results in a Fail.
Total hours with no RN coverage this month. Zero means full coverage was achieved.
Gap Detail
Gap_Detail__c
A list of the specific dates and time windows where coverage gaps were found, used to investigate which shifts were missed. On a partial result it opens with a line naming the window assessed.
Dates and times where RN coverage gaps were found. Blank if no gaps. Use this to investigate missed shifts before GPMS submission.
Days With Gaps
Days_With_Gaps__c
The number of distinct days in the assessed period that had at least one coverage gap, showing how widespread the gaps were.
Number of days in this month that had at least one coverage gap. Set automatically.
MM Exemption Applicable
MM_Exemption_Applicable__c
Whether the facility qualifies for the Modified Monash category 5 to 7 exemption (a remote facility with 30 or fewer operational beds), where a reduced coverage standard applies.
Ticked if this facility qualifies for the MM 5-7 exemption (remote location, 30 or fewer beds). A reduced coverage standard applies.
Run Date
Run_Date__c
When the coverage calculation was last run for this month.
When this coverage check was last run. Updated each time the calculation is re-run for this month.
Run By
Run_By__c
The user who ran the coverage check, for accountability.
The user who ran this coverage check. Set automatically.
GPMS Submitted
GPMS_Submitted__c
Ticked by the facility manager once the GPMS coverage entry for the month is complete. This is a manual confirmation; it does not submit to GPMS. It cannot be ticked on a partial result.
Tick this after completing the GPMS submission for this month.
GPMS Submitted Date
GPMS_Submitted_Date__c
The date the GPMS entry was completed, entered alongside the GPMS Submitted flag, useful for checking the submission was on time.
Date the GPMS submission was completed. Enter when you tick GPMS Submitted.
Partial Month is ticked
A formula, so it cannot drift out of step with the dates it describes
Gap Detail leads with a caveat
A first line naming the exact window assessed and directing the user to re-run after month end. Written even when there are no gaps, so a partial Pass still carries it
GPMS Submitted is blocked
Coverage Month
Coverage_Month__c
The month being assessed, stored as the first day of that month. Together with the facility, it identifies the coverage record.
The month being checked. Stored as the first day of that month.
GPMS Submission Requires Complete Month
Blocks GPMS Submitted from being ticked while Partial Month is true, because the GPMS declaration requires a full calendar month
Coverage Month Must Be A Month Start
Coverage Month must be populated and must be the first day of a month
Assessed Result Requires Period End
A run on the first day of a month, for that same month, is rejected before any calculation happens. No complete day exists to assess, so Maica reports that no complete days are available and writes no record at all. The quick action withholds its Run button in that situation rather than allowing a submission that is certain to fail.
Because the calculation uses actual times, run the check after timesheets for the month have been confirmed, so completed shifts are reflected accurately. For the GPMS declaration, run it after month end.
A validation rule prevents the confirmation while the record is partial
Coverage Status
A record carrying a Run Date must also carry an Assessment Period End
Queensland
(QLD)
(Queensland)
Western Australia
(WA)
(Western Australia)
South Australia
(SA)
(South Australia)
Tasmania
(TAS)
(Tasmania)
Australian Capital Territory
(ACT)
(Australian Capital Territory)
Northern Territory
(NT)
(Northern Territory)
National
Blank
Blank
Victoria
(VIC)
(Victoria)
New South Wales
(NSW)
1.
Select Maica Holidays as your Business Hours record to assign to the Holiday.
2.
Hit Add to move it from Available Business Hours to Selected Business Hours.
3.
Business Hours Name
When creating a Business Hours record to associate with Holidays, ensure you name it Maica Holidays.
Time Zone
Select your relevant Time Zone.
Business Hours
If you have not already defined Business Hours in Maica, you must do so first. To learn more, click here.






(New South Wales)
Click Save to finalise your changes.
Again, when creating a Business Hours record to associate with Holidays, leave this stage at its default value. (24 hours selected for each day).
Maica – Global – View Shift & Object Permissions
Grants equivalent access for Shifts so workers can open shift records in the planner.
Maica – Planner – Manage Appointment – Check In/Out & Object Permissions
Enables the Check In/Out actions and provides Timesheet and Timesheet Entry access.
Maica – Planner – Manage Shift – Check In/Out & Object Permissions
Required if staff check in/out of Shifts rather than Appointments.
Assign the listed permission set groups to ensure planner and attendance access.
Resource linkage
Each User must be connected to an active Resource__c record via the User__c lookup field.
Active flag
The Active__c field must be set to TRUE.
Primary Experience
Maica – Base & Object Permissions
Baseline access to core Maica components.
Maica – Planner – Planner Access & Object Permissions
Grants access to the Planner tab and read rights to Appointments, Resources, Schedules, and Unavailability.
Maica – Global – View Appointment & Object Permissions
No further component setup is required once the App has been assigned to users.
Additional functional permissions — such as creating appointments, managing unavailability, or appointment/shift actions — can be assigned as required. To learn more about additional permissions, click here.
This can be left blank. Then, the User experience will become contextual, meaning, if a User is on a Mobile then Mobile Experience will be applied & if they are on Desktop the Desktop Primary Experience will be used. Note: if you set a value the, UX will be applicable to any devices
Allows reading appointment modals and related schedule/service data.
Where a value belongs to the resident as a whole, it lives on the Funding record and is read elsewhere by formula rather than duplicated. The clearest example is the fee arrangement: it is stored on Funding and read by every linked Service Agreement through a read-only formula. When the arrangement changes, every Service Agreement reflects it immediately, with no record updates and no risk of values drifting out of step.
The Lump Sum Account links to the Service Agreement with a Lookup, not a Master-Detail relationship, and that Lookup carries a Restrict delete constraint. This is deliberate. A Master-Detail relationship would cascade-delete the lump sum records if the Service Agreement were ever removed, destroying the financial audit trail. The Lookup avoids that, and the Restrict constraint goes further by blocking deletion of a Service Agreement outright while lump sum accounts still hang off it. The ledger is preserved regardless of what happens to the agreement.
Note that the relationship in the other direction is different. Each Lump Sum Transaction is a Master-Detail child of its Lump Sum Account, because a transaction has no meaning without its parent account.
Within the ledger, the signed transaction amount is the authoritative figure for balance mathematics, with a positive mirror field used only so that cumulative totals display as positive numbers.
The billing engine is a general-purpose Agreement Item processor, not a set of hard-coded routines for each fee. Fee-type-specific behaviour, such as cap validation, retention timing, or leave adjustments, activates based on the Fee Type classification of the Agreement Item's linked Support Item. Items without special rules are processed with a standard quantity, rate, and days calculation. This keeps the engine extensible: a new fee type is largely a matter of configuration on the Support Item rather than new engine code.
All access is granted through permission sets and permission set groups, never profiles. This is the standard Maica convention and keeps access portable and auditable.
RACS configuration surfaces inside the existing Maica Settings tab, mounted through Custom Metadata records rather than as bespoke tabs or Lightning pages. New settings reuse the framework other Maica settings use.
Some objects must be managed through Maica's user interface components rather than edited directly, to avoid invalid data or processing errors. The lump sum ledger is a clear example: deposit payments, draw-downs, and refunds should be recorded through the Manage RACS Agreement component, which keeps the balance, transactions, and any dependent calculations consistent. For the general rules on which objects can be edited directly, see the Maica Usage Rules in the User Guide.
Where Services Australia provides a Business-to-Government (B2G) API, Maica integrates directly, for example for entry, departure, and supplement events, resident data sync, claims, and accommodation balance reporting. Where no API exists, Maica provides the data the provider needs and the provider completes the submission in the relevant portal. SIRS notifications and the APCS component of the Annual Financial Report both follow this pattern: Maica holds and outputs the data, and the provider keys it into the government portal.
Never raise an invoice for a RAD, RAC, or bond. These are deposits held on the resident's behalf, not charges. Recording them as fees would misstate both the resident's liability and the provider's prudential position. Only DAP and DAC, the daily accommodation fees, are invoiced.
Recurring appointments are created immediately up to the Schedule Horizon
No additional edits are required after creation
The batch will not execute until rescheduled by an active user under Maica Settings → Scheduled Jobs.
Period Selection
Toggle between a date range input and a month picker. Whether the period must be a complete calendar month depends on the statement Type selected.
Service Provider
Optional. Filter to a specific Service Provider to restrict which Service Agreements are included. Leave blank to include all eligible providers.
Statement Generation Flow
The flow that drives generation logic. Search for and select the appropriate flow for your statement type.
Period
The statement month to generate for.
Type
The type of statement to generate. See below for available options.
Funding Type
The Funding Type of Service Agreements to be included in the run.
Once your inputs are complete, select Confirm to submit. Maica processes one Service Agreement at a time in the background. Any errors encountered are routed to Log records for review.
Once submitted, Maica works through the following steps for each eligible Service Agreement.
Maica queries all Service Agreements that:
Are active Support at Home agreements
Fall within the selected statement period
Match the Service Provider filter, if one was provided
Maica then processes each returned Service Agreement one at a time.
For each Service Agreement, Maica retrieves all Funding Item records linked to the participant's funding that were active for any part of the statement month. A Funding Item is in scope if its date range overlaps the statement period by at least one day.
Maica retrieves two sets of Budget Usage records. Both sets must not already be linked to an existing Statement Line:
Current-period records: Budget Usage with a delivery date falling within the statement month.
Prior-period records: Budget Usage with a delivery date outside the statement month, or belonging to Funding Items whose periods have already expired. These are included on the current statement as prior-period lines, ensuring no Budget Usage record is ever left without a statement.
Maica checks whether a Statement Header already exists for this agreement and period.
If none exists: a new Statement Header is created as the parent record for the month. It stores the statement period, status, and the relationship back to the Service Agreement.
If one exists: Maica operates in amendment mode. Only missing Statement Lines are added and only previously unlinked Budget Usage records are linked. Existing balances are not changed.
One Statement Line is created for each Funding Item in scope, including any prior-period Funding Items identified in Step 3. For each Statement Line, Maica calculates and populates the following fields:
Period Opening Balance
If this is the first statement for the Funding Item: the full Approved Amount on the Funding Item record. If prior statements exist: the Period Closing Balance from the most recent prior Statement Line for that Funding Item, ordered by the parent Statement Header's period end date.
Period Closing Balance
Opening Balance + SUM of all current-period Budget Usage amounts for this Funding Item. Budget Usage amounts are stored as negative numbers by Services Australia, so this is equivalent to Opening Balance minus the absolute drawdown. For example: Opening Balance = $7,348.82, period drawdown = $990.00 → Closing Balance = $6,358.82.
Total Claimable Expenditure
Each Budget Usage record from both the current-period and prior-period sets is linked to its corresponding Statement Line. Once linked, a Budget Usage record is excluded from all future statement runs, which prevents any activity from appearing on more than one statement. All linking is performed as a bulk operation.
After a run completes, each participant's monthly statement is made up of:
Statement Header: one per participant per month. Holds the period dates and links back to the Service Agreement.
Statement Lines: one per active Funding Item (budget type) for the period. Each line holds the opening balance, closing balance, and total claimable expenditure for that specific budget. Prior-period lines are flagged separately so they can be grouped and labelled accordingly in the generated document.
Budget Usage records: linked to their Statement Line, these provide the full itemised service delivery detail. To trace from a Statement Line back to individual service charges, navigate: Statement Line → Budget Usage → Invoice Line Item.
Also available on the Other tab, this tool generates a bulk file of unspent Commonwealth amounts for a selected Service Provider and period. The file is produced and made available for download in the Files section of the component once generated. This is used to report unspent funding back to the Commonwealth as required under Support at Home obligations.
This tool generates a bulk file of invoice amounts for a selected Service Provider and period, also available for download once produced. It provides an aggregated view of invoiced amounts across the selected period and is typically used for reconciliation and reporting purposes.
Support at Home - Monthly requires the period to be a complete calendar month: the Period Start must be the first day of a month and the Period End the last day of that same month. Residential Aged Care - Monthly does not, and takes the window exactly as entered, so that a final statement for a resident who left part way through a month can be produced.
The process can also be run on-demand for a single Service Agreement, for example to correct a prior run, fill a gap, or generate a final statement for a participant who has exited.
There can be multiple Statement Lines under a single Statement Header, one per active Funding Item for the period.
Care Recipient Last Sync
Care_Recipient_Last_Sync__c
The date and time the resident's details were last refreshed from Services Australia, so you know how current the funding data is.
When this resident was last synced with Services Australia.
Sync Error Details
Sync_Error_Details__c
The messages returned by the most recent sync when it did not complete cleanly, so you can understand and resolve what went wrong.
Details of any messages from the last sync.
The sync did not complete. The reason is recorded in Sync Error Details.
The Next Billing Date on an Agreement Item is the cursor that tells the billing engine when the item is next due. Every run selects items whose Next Billing Date is populated and on or before today. This article explains how the date is first set, how it advances, and how the catch-up chain clears a backlog of overdue periods in a single dispatch.
When an Agreement Item is created, Maica calculates its initial Next Billing Date from the item's start date, billing method, service frequency and end date. No form sets the value: it is always derived on the server, so it cannot be set incorrectly when the item is created.
The calculation follows these rules:
The result is then clamped to the item's end date, so a derived cursor never falls outside the item's own window.
For example, an in-arrears monthly item starting 15 May has an initial Next Billing Date of 31 May. The period derived from that cursor is the calendar month containing it, so May is billed at the end of May, once the month it covers has run. An in-advance item bills from its start date because the upcoming period is charged upfront.
Deferral is only representable for two of the four frequencies, which is why the table reads the way it does. A monthly period is derived from the calendar month containing the cursor, so a cursor sitting at the month end still resolves to that month. A one-off's period is its whole window and anchors on the start date rather than on the cursor, so a cursor at the window end bills the whole window once, at the end, which is what in arrears means for a period defined by the agreement rather than by a frequency. For a weekly item the cursor is the period start, so a deferred cursor would define a fresh seven-day period and permanently skip the days before it; for a daily item the period is the cursor itself. Both therefore seed the start date and bill their first period on time.
An administrator can set the Next Billing Date directly on the Agreement Item record page, and Maica treats a deliberate override as authoritative. When the item's dates, billing method or frequency later change, Maica compares the current cursor against the value its stored settings imply. Where the two match, the cursor is Maica's to re-derive; where they differ, the cursor has either been advanced by the engine or deliberately overridden, and it is left untouched. Rewriting an advanced cursor would move it backwards over periods already billed and charge the resident twice.
On each run, the engine derives the period to bill from the item's frequency. It uses the Next Billing Date as the seed, falling back to the start date for an item the engine has never billed:
Monthly periods are aligned to the calendar month so consecutive months stay contiguous with no gaps or overlaps. Periods are then clamped to the item's start and end dates so billing never extends outside the agreement, and the engine refuses to re-bill any day on or before the Last Billed Period End. Where those adjustments leave the period start after the period end, there is nothing to bill: the engine skips the item and leaves the cursor where it is.
Leave records still need recording promptly, for reporting and for submission to Services Australia. They simply have no bearing on what the engine charges.
When the billing method is In Advance, the engine will not bill more than one calendar month ahead of the run date. If a derived period would end beyond that horizon, the engine fails the item: Billing Status is set to Failed, a Log record of type Error with a Source of RAC Billing Engine records the breach and the dates involved, and the cursor is not advanced.
After an item is billed for a period, the engine stamps the Last Billed Period Start and Last Billed Period End, records the Last Billed Date as the run date, sets Billing Status to Complete, and advances the Next Billing Date to the day after the period just billed. The next run picks up from there. This is what keeps each item moving forward one period at a time.
On a catch-up run the Last Billed Date and the period dates deliberately differ, because the engine is replaying a period that has already elapsed.
The cursor is cleared rather than advanced in two cases, so a finished item shows a clean closed state rather than a misleading future date:
The item is a one-off and its single period has been billed.
The period just billed reached or passed the item's End Date.
A cleared cursor takes the item out of billing scope, because the engine only selects items whose Next Billing Date is populated.
Three situations move or hold the cursor without producing an invoice line:
An edit to the item's dates, method or frequency, a cessation, or a rate change that clones a successor item all route through one rule so the cursor has a single definition. Maica recognises three states:
The cursor is blank and a Last Billed Period End is recorded. If the item's window now extends past that date, billing resumes on the day after it; otherwise the item stays closed. A one-off stays closed regardless.
The cursor is blank with nothing billed, or it still matches exactly what its stored settings imply. It is re-derived from the new settings.
The cursor has been advanced by the engine or deliberately overridden. It is left untouched.
For a rate change, the predecessor item's cursor is the input, so a successor resumes the day after the predecessor's last billed period, carries an override across, or seeds fresh, according to which of the three states the predecessor was in. This is what keeps a scheduled rate change from skipping or repeating a period. See .
A single scheduled run advances each due item by one period. On its own, that would mean a backdated item overdue by many periods could only ever catch up one period per day, never closing the gap. The catch-up chain solves this.
When a run finishes, the engine counts the items that are still due, using exactly the same conditions as the run's own selection. If any remain and the run just completed committed at least one Agreement Item update, it immediately launches a fresh batch run rather than waiting for the next scheduled run. Each chained run is a new transaction with a full set of governor limits, and each one advances every still-due item by one more period.
To protect against runaway chaining, the chain stops after a maximum depth of 62 runs. The limit bounds how many catch-up periods a single dispatch can replay, not how many items it can process: a batch job runs across the entire selected scope and finishes once, so a single hop already covers the whole backlog of due items, and each further hop buys one more period per item. At 62 daily periods that is roughly two months of catch-up, which is the largest realistic backdating scenario.
If the chain reaches the depth limit before the backlog is cleared, the engine records a warning and stops. The remaining items are picked up on the next scheduled run and continue catching up from there. No backlog is lost.
A hop that commits nothing ends the chain, rather than burning through the depth limit. The reasoning is that a hop which committed no Agreement Item update would repeat exactly the same work on the next hop with exactly the same result. Without that rule a single permanently unbillable item would requeue the chain to its depth limit every night.
The engine records a Log entry of type Warning, with a Source of RAC Billing Engine, in each of the three conditions worth an administrator's attention:
The first two are mutually exclusive. The third is independent of both and can accompany either.
Two automated mechanisms reduce a resident's lump sum balance over the life of their stay: retention, the legislated amount a provider may keep from a Refundable Accommodation Deposit, and automatic draw-down, where a fee is settled directly from the deposit instead of being invoiced to the resident. Each is implemented as its own Apex service that the billing engine calls during the nightly run, and each writes its movements into the lump sum ledger.
This article explains how both services calculate their amounts, the records they create, and how they avoid ever pushing a balance below zero. It is written for administrators and power users who need to understand or support the billing engine's treatment of lump sum accounts.
Retention is the portion of a Refundable Accommodation Deposit that a provider is permitted to keep over time, at a legislated annual rate. Maica calculates it with the RAC_RetentionService, a stateless, read-only service that performs no database writes of its own. It returns a calculated amount and a pre-built transaction; the billing engine is responsible for committing the records.
Retention is not a flat monthly figure. Because a resident's balance can change part way through a period (an additional payment, a draw-down, a refund), the service segments the billing period at every balance-changing transaction and charges each segment at the balance that applied during it.
For a period containing transactions, the service divides the period into segments. The transaction date is treated as the last day of the old balance, and the new balance applies from the following day. Each segment's retention is then:
The period total is the sum of all segments. A period with no balance changes is simply one segment at the opening balance.
After summing the segments, the service clamps the total to the account's current balance. Retention can never exceed the balance held, so it can never drive the balance negative. When a clamp occurs, the service flags it so the engine can note it for operator review.
Retention follows a once-per-calendar-month cadence required by the regulator. If the fee item was last charged retention less than a month ago, the service does not charge again on the normal billing path. Instead it signals the engine to skip the charge and push the item's next billing date forward by one month, so the next scheduled run picks it up at the right time. A validation rule on the Agreement Item enforces the same monthly cadence at configuration time, and this runtime check is the second line of defence against manual date overrides or imported data.
The cadence anchor is stamped with the end of the period just billed, not the date the run happened. On a catch-up run those two differ, and anchoring on the run date would push the next eligible date beyond where the cadence guard expects it and silently skip a legitimately due period.
When a resident departs, the Departure Processor charges a final pro-rata retention for the days since the last retention charge up to the departure date. This path deliberately bypasses the monthly cadence guard, because a departing resident has no future run to pick up a rescheduled date; skipping the charge would silently drop the final retention.
The departure calculation also clamps the period end to the Retention Expiry Date. Retention is not chargeable beyond the legislated five-year cap, so any days past expiry are excluded while valid pre-expiry days are still charged.
When there is a retention amount to charge, the engine commits a set of linked records, following the same pattern used for draw-downs:
An Invoice Line Item for the retention amount.
A Lump Sum Transaction of type Retention Deduction, with a negative Amount, the new balance recorded in Balance After, a Source of System (Billing Engine), and a Description containing the calculation breakdown.
A Payment settling the line item, with the transaction linked back to it.
The account's balance is reduced by the retention amount in the same commit. The Cumulative Retention Amount roll-up on the account updates automatically from the new transaction, and the engine separately increments the cumulative retention figure held on the resident's Funding record.
An automatic draw-down settles a fee directly from the resident's lump sum rather than invoicing them for it. It applies where the fee's Agreement Item has Automatic RAD Drawdown switched on. Maica performs it with the RAC_DrawdownService, which the billing engine calls after it has already created the invoice line item and invoice for the period.
A draw-down only fires when every gate below passes. If any gate fails, the service returns a no-op result with a reason, and the engine simply moves on; this is not treated as an error.
The amount drawn is the lesser of the invoiced amount and the current balance:
When the balance is smaller than the invoiced amount, a partial draw-down fires: the deposit is drawn down to zero, a Payment is raised for that drawn portion, and the invoice stays open for the remaining amount so the resident can be billed for the shortfall.
The service takes a database savepoint and commits four changes as a single unit. Before reading the balance it re-queries the account with a row lock, so a concurrent process (such as a departure refund running during the nightly batch) cannot consume the same balance twice.
A Lump Sum Transaction of type Draw-Down, with a negative Amount, the new balance in Balance After, a Transaction Date of the billing period end, and a link to the triggering Invoice Line Item.
A Payment against the invoice, with a Source of RAD Draw-Down, marked as paid, since the draw-down has already settled the amount from the deposit.
A back-link from the transaction to the Payment, giving navigation in both directions.
The Cumulative Draw-Down Amount roll-up on the account updates automatically from the new transaction.
For a resident on the Combination payment method, reducing the balance changes the daily DAP they owe. After a successful draw-down, the service recalculates the DAP portion. This step is non-blocking: it runs in its own protected block, and if it fails it writes an error log rather than rolling back the draw-down that already succeeded. The detail of the recalculation, including the formula and where the rate is sourced, is covered in .
In both cases the balance can be reduced but never taken below zero, and every movement is written to the ledger with a source that identifies which process created it, so automated entries are clearly distinguished from user-led ones.
Alongside the event APIs that send data to Services Australia, the residential aged care integration includes a set of inbound APIs that read data back from Services Australia into Maica. These reads keep a resident's funding picture, balances and confirmed subsidy data current, and they feed the monthly claim and reporting processes.
This article explains what each inbound read provides, where the data lands in Maica, and when it runs. It is written for administrators who need to understand the data flow behind the resident record and the monthly claim.
Inbound APIs are read-only. Maica sends a GET request to Services Australia, receives the current data, and writes it onto the relevant Maica records. Nothing is changed at Services Australia by an inbound read.
Three characteristics are common to all inbound reads:
They are keyed to a known identity. Most reads are scoped to a single resident (by their Services Australia care recipient identifier) or to a single service. The resident's identity is established at entry, so inbound reads generally depend on an accepted entry event already existing.
They are mapped onto existing Maica records. Inbound data updates the resident's Funding record, Funding Item records, the Claim Batch, and related classification records, rather than creating standalone copies.
They record when they last ran. The reads that run on a schedule or on demand stamp a last-synchronised date and time so you can see how current the data is.
These reads return data about an individual resident and are scoped by the resident's Services Australia care recipient identifier.
The Fee Summary read returns the government-published fees and contributions that apply to a resident for a given fee type. It is the reference point for the means-tested amounts that Services Australia has determined for that resident.
The Medicare Details read returns a resident's Medicare information confirmed by Services Australia.
The returned values are written onto the resident's Funding record. This read is read-only and is used to confirm and keep the resident's identity details aligned with the Services Australia record.
Two related reads return the resident's remaining entitlement days:
Leave balances return the remaining social leave and transition (hospital) leave days for the resident.
Respite balances return the remaining residential respite days for the resident.
These reads are typically run before recording a leave or respite period, so that the available balance can be checked before an event is submitted.
These reads return service-level financial data and underpin the monthly claim and the reconciliation and reporting processes.
The Claims read is the central financial reconciliation interface. Services Australia calculates the monthly residential care subsidy automatically from the events and classifications submitted during the month, so the provider does not build a claim line by line. Maica reads the calculated position back.
Maica retrieves the full claim for a service and claim month, including the service classifications, the per-resident funding detail, and the registered nurse eligibility data. This is how the confirmed subsidy position is brought into Maica.
When a claim reaches an approved state, the confirmed data is written across several records:
Two reads provide the read-only financial settlement view once Services Australia has paid:
The service payment summary lists the payments made to a service, with their payment identifiers and totals.
The payment statement returns the detail behind an individual payment.
These reads are used to reconcile what Services Australia actually paid against the invoices and claim data held in Maica. The payment statement response also carries resident-level balance figures (remaining respite and social leave) that are sourced from this read rather than from the claim.
The integration also reads data scoped to the whole service rather than an individual resident.
Maica reads the monthly 24/7 registered nurse supplement summary for the service and stores it against the Location, as an entitlement-month summary with claim-month breakdown detail. This read runs as part of the monthly Claims Sync and is scoped by the service's NAPS ID. It applies to residential aged care claims with a Permanent or Respite funding type.
The integration design also describes two further service-level reads: a service summary (service identifiers, AN-ACC classifications, bed capacity, accreditation, respite allocation, and care minute and 24/7 RN eligibility) and a service occupancy summary (daily occupancy confirmed by Services Australia). These are intended to feed the Quarterly Financial Report.
Inbound data supports the resident record and the downstream processes:
The resident record reflects current Medicare details, leave and respite balances, and confirmed funding.
The monthly claim is reconciled against the confirmed subsidy and the actual payments.
Reporting draws on the confirmed claim and service data for the Quarterly Financial Report and registered nurse reporting.
The RACS data model extends the existing Maica Client Care data model. It adds a small number of new custom objects and a larger set of new fields on objects that already exist. This article is a reference to the core objects, how they relate, and the key fields and formula fields an administrator needs to understand.
All object and field API names use the maica_cc namespace.
The solution introduces several new custom objects. The most important are below.
Learn about the Automation involved when Importing BPR Remittance and Results Files into Maica
As part of the , Automation is involved to ensure it's successful completion.
When using the tool, you are prompted to select a Flow Setting that essentially tells Maica which type of Data you are wanting to Import and allows the Automation to read the files correctly. It is important to understand the logic within the Automation and the altercations to the Data that will be involved when doing so. This article explains the logic behind the BPR File Import Flows in more detail.
This flow is designed to process the NDIS Bulk Payment Request (BPR) Results File and update the status of the Payment Request in Maica.
These settings determine how Maica connects your instance to PRODA and the government APIs. Maica supports connecting to more than one service at once, so a single instance can hold separate connections for NDIS and Aged Care (Support at Home).
To achieve a successful connection between your Maica instance and the government APIs, both your Organisation and each Software Instance (or Device) must be registered within PRODA. During software instance registration, PRODA provides a Device Activation Code (DAC) that Maica requires so we can activate the device on your behalf.
Please note the following definitions:
Support at Home - Monthly is the statement type used for participants funded under the Support at Home program and is the primary use case for this process.
Residential Aged Care - Monthly is the statement type used for residents in residential aged care. Its generation logic differs from the Support at Home logic described below, and is documented in Residential Aged Care Statement Generation.
The absolute value of all current-period Budget Usage amounts linked to this Statement Line. Represents total drawdown for the statement month. Set to $0.00 for prior-period lines and lines with no activity.
Is Prior Period Line
Set to true where the Statement Line relates to a Funding Item whose period does not overlap with the current statement month. Used by document generation to group and label prior-period items separately.
Prior Period Budget Type
Populated when Is Prior Period Line is true. Records the budget type code of the prior-period Funding Item (for example, ON or CM) so document generation can label prior-period lines without re-querying the Funding Item.
Issue Date
Set to the date the statement generation run was executed.
Status
Set to Generated on creation.
Not retention
The fee type is not RAD/RAC Retention. Retention is handled only by the retention service and must never be self-drawn.
Service
RAC_RetentionService
RAC_DrawdownService
Amount basis
Daily-balance segmentation at the annual rate, clamped to balance.
Lesser of the invoiced amount and the balance.
Cadence
Once per calendar month, plus a final pro-rata charge on departure.
Each time the fee item is billed.
Transaction date
The end of the period billed.
The end of the period billed.
Transaction type
Retention Deduction
Draw-Down
Records committed
Invoice Line Item, Transaction, Payment, balance update.
Transaction, Payment, back-link, balance update.
Cumulative field updated
Cumulative Retention Amount.
Cumulative Draw-Down Amount.
Drawdown enabled
Automatic RAD Drawdown is checked on the Agreement Item.
Account active
The parent Lump Sum Account has a Status of Active.
Funds available
Purpose
Keep the legislated retention from a RAD over time.
Settle a fee from the deposit instead of invoicing the resident.
Trigger
A retention fee item due for billing.
No transaction is written when the calculated retention is zero or negative (for example, when the timing guard fires, the account has expired, or the opening balance is zero). The ledger is never polluted with zero-amount entries.
If any of the four writes fails, the whole set is rolled back to the savepoint and the engine logs the failure before moving to the next item. The invoice line item and invoice the engine committed earlier are in a prior transaction and are left untouched.
The account's current balance is greater than zero.
A fee item with Automatic RAD Drawdown enabled.
segment retention = annual rate / 365 x segment balance x segment daysdrawn amount = MIN(invoice amount, current balance)Month
The last day of the start month
In Arrears
One (one-off)
The end date, or the start date where the item has no end date
Not set, or any other value
Any
The start date
One
The item's whole window, from its start date to its end date. The period anchors on the start date rather than on the cursor, and the item bills once and then stops
In Advance
Any
The start date
In Arrears
Day
The start date
In Arrears
Week
The start date
Day
The seed date only
Week
The seed date through to six days later (a 7-day period)
Month
A cap engages and leaves nothing chargeable
The cursor is not advanced. Cap Reached is ticked and Billing Status is set to Complete, which takes the item out of scope for good.
The period is legitimately worth nothing, from a zero rate or a zero quantity
The cursor is advanced and Billing Status is set to Complete. The item consumed its period, so holding the cursor would leave it permanently due.
A retention item's last deduction falls inside its cadence window
The chain reached its depth limit
The depth reached, the cap, and the completed and failed counts for the dispatch. The remaining backlog will be picked up on the next scheduled run.
The chain stopped with work still outstanding and nothing committed
How many Agreement Items are still eligible, the depth reached, and the counts for the dispatch. Check the Log records of type Error from the same source for the underlying failure.
An invoice could not be resolved for one or more Service Agreements
If the calculated Next Billing Date falls on or before today, for example on a backdated start date, no special action is needed. The next scheduled run detects the item and works through every outstanding period automatically using the catch-up chain described below.
Overriding the cursor on a one-off item does not shorten what it bills. A one-off's period runs from its start date to its end date whatever the cursor holds, so an override set mid-window bills the whole window rather than only the tail. The Last Billed Period End still prevents any repeat charge.
Leave does not reduce chargeable days, and no leave type suspends billing. Chargeable days always equal the total days in the period, and the engine does not read leave records when billing at all. The resident is paying to hold a bed and the bed is held whether they occupy it or not, so every leave provision's consequence falls on the provider's subsidy rather than on what the resident owes. See Fee Treatment During Leave.
Items in a Failed state are excluded from the catch-up count as well as from the run itself. This prevents a persistently failing item from consuming chain capacity and starving legitimately overdue items. If you see either chain warning repeatedly, review Agreement Items that are overdue or failed for a configuration problem.
In Arrears
The whole calendar month containing the seed, regardless of the day of the month
The cursor is pushed forward to the rescheduled date and Billing Status is set to Complete. No charge is raised for this period.
How many Service Agreements billed onto a fallback invoice header, and that the period may now carry a duplicate header. See .
Expiry date
The expiry date of the resident's Medicare card
AN-ACC Classification
The resident-level AN-ACC classifications confirmed for payment
Medicare number
The resident's Medicare card number as held by Services Australia
Date of birth
The resident's date of birth, used to confirm identity matches
Gender
Claim Batch
Confirmed claim status, the Services Australia operational bed count, registered nurse eligibility, and the last sync time
Funding Item
One per resident per claim month, including the supported resident status
Claim Service Classification
By design, the means-tested amounts used in resident billing are entered into Maica manually from the resident's fee advice letter (the SA457), not applied automatically from this read. The Fee Summary read provides the government reference figures; the rates that drive billing are set on the resident's fee arrangement. See Configuring resident fees in the User Guide.
The claim month progresses through Services Australia's own approval stages (submitted, being calculated, approved, completed). In the deployed build Maica brings that position in by reading the claim through Claims Sync; the claim status on the Claim Batch reflects where Services Australia has the claim. Claim finalisation is a Services Australia-side concept; there is no separate Maica finalise action wired to the Claim Batch in this build.
Registered nurse eligibility is returned inside the Claims response and written to the Claim Batch. This is distinct from the separate 24/7 registered nurse coverage check that providers run for their own GPMS reporting (see ), and from the standalone that Maica reads back separately.
The resident's recorded gender
The service-level classifications confirmed for the month
Lump Sum Account
maica_cc__Lump_Sum_Account__c
The financial ledger for a resident's accommodation deposit (RAD, RAC, or bond). One per Service Agreement where a lump sum applies.
Lump Sum Transaction
maica_cc__Lump_Sum_Transaction__c
An individual balance movement against a Lump Sum Account (payment, retention deduction, draw-down, refund, interest). Together the transactions form the audit trail.
Claim Service Classification
maica_cc__Claim_Service_Classification__c
The AN-ACC classification distribution for a service in a claim month, as confirmed by Services Australia.
Accommodation Balance
maica_cc__Accommodation_Balance__c
The monthly accommodation balance record reported to Services Australia for a resident's deposit.
Registered Nurse Supplement Summary
maica_cc__Registered_Nurse_Supplement_Summary__c
The 24/7 registered nurse supplement summary synced from Services Australia.
Registered Nurse Supplement Breakdown
maica_cc__Registered_Nurse_Supplement_Breakdown__c
The line-level breakdown beneath a supplement summary.
Registered Nurse Coverage Check
maica_cc__Registered_Nurse_Coverage_Check__c
The result of a 24/7 registered nurse coverage calculation, used for GPMS entry.
RACS adds fields to objects that are already part of Maica. The most important are below.
Funding
The source of truth for the resident's fee arrangement, accommodation arrangement, opt-in outcome, lifetime and financial-year cumulatives, and the subsidy data synced from Services Australia.
Service Agreement
Carries the fee items, the room link, the deposit account link, and a read-only fee arrangement that reads from Funding.
Agreement Item
The Funding record is the centre of a resident's file. Each Service Agreement links to a Funding record, and the resident's Aged Care Event records also hang off Funding. The Service Agreement links down to the resident's Accommodation (their room) and, where a deposit applies, to a Lump Sum Account. Each Lump Sum Account is the parent of its Lump Sum Transaction records. Accommodation records belong to a Location (the home).
Service Agreement to Funding
Lookup
Lump Sum Account to Service Agreement
Lookup (required, Restrict on delete)
Service Agreement to Lump Sum Account
The fields below are the ones administrators reference most often. Each has a user-facing description and the help text that appears on the field.
maica_cc__Fee_Arrangement__c
Picklist
The fee arrangement for this resident. Drives all fee rules on linked Service Agreements. Values are Pre-1 July 2014, 1 July 2014, and Post 1 November 2025. Set at intake and updated automatically when an opt-in is confirmed.
The fee arrangement that applies to this resident. This value drives all fee rules on linked service agreements.
maica_cc__Fee_Arrangement__c
Formula (Text)
A read-only formula that displays the fee arrangement from the parent Funding record. Determines which fee structure, caps, and means testing rules apply to this Service Agreement.
The fee arrangement inherited from the resident's Funding record. Read-only.
maica_cc__Active_Item__c
Formula (Checkbox)
A read-only formula that evaluates whether the item is currently active, based on the End Date relative to today. The billing engine excludes inactive items.
Whether this fee item is currently active. Calculated from the end date.
maica_cc__Current_Balance__c
Currency
The current balance of the resident's lump sum held by the provider. Updated by each transaction. On permanent departure, the remaining balance is refunded within legislated timeframes.
The current balance of the resident's deposit held by the provider.
maica_cc__Amount__c
Currency
The signed value of the movement. Deductions are stored as negative values, consistent with double-entry accounting. This is the authoritative ledger entry for balance mathematics.
The amount of this transaction. Negative for deductions.
The signed maica_cc__Amount__c field is the authoritative figure for balance calculations. maica_cc__Deduction_Amount__c exists only to make cumulative totals display as positive numbers. Do not use the positive mirror for balance arithmetic.
Flow Label
Maica - NDIS Bulk Payment Request Results File
API Name
maica__Maica_NDIS_Bulk_Payment_Request_Results_File
Type
Autolaunched Flow
Processes NDIS Bulk Payment Request (BPR) Results File.
Updates the status of Payment Requests to Open, Successful, or Failed based on the BPR file outcomes.
Handles errors for Paid or missing Payment Requests.
This flow processes the NDIS Bulk Payment Request (BPR) Remittance File to handle remittance advice and update payment-related data in Maica.
Flow Label
Maica - Remittance Advice Import
API Name
maica__Maica_Remittance_Advice_Import
Type
Processes the NDIS BPR Remittance File for payment reconciliation.
Invokes an Apex action to handle remittance advice.
Updates relevant records with payment information (amount and date).
Captures errors during processing for reporting.
PRODA (Provider Digital Access)
A secure online authentication system used by government services, including the NDIS and Aged Care, to verify the identity of providers and manage authorised system access.
Device
A software instance or system that connects to a government API, enabling authorised digital interactions between service providers and the relevant scheme.
Device Activation Code (DAC)
A unique code provided by PRODA when registering a software instance, required for authorising the device to access the APIs on behalf of the registered organisation.
Service Type
The scheme a connection is for. Maica supports NDIS and Aged Care (used for Support at Home). Each PRODA connection is tied to one service type.
Maica has simplified this process, but certain steps must still be completed by your organisation. These are described below.
Before you can use the API-dependent features of Maica, you need an active PRODA device for each service you intend to connect. Without an active device, Maica cannot connect to that service's API.
As a prerequisite, it is assumed you have completed the following within PRODA:
Created and verified your PRODA account. Your organisation must have a verified PRODA account with an authorised person who can manage devices. This is the identity PRODA uses to confirm who is authorising system access.
Registered your organisation for the relevant service. Your organisation must be linked in PRODA to the government service you are connecting to (for example, the NDIS or the Aged Care system), so that the correct APIs are made available to it.
Created and registered your B2B Device. A B2B Device is the software instance that will communicate with the API. Registering it in PRODA is what produces the Device Activation Code, Device Name, and organisation (RA) details that Maica needs.
When you register the device within PRODA, make note of the following so you can complete activation in Maica. For NDIS, follow the official NDIA PRODA Step-by-Step Guide (see Page 20 onwards):
Once the PRODA device is created, ensure the following details are captured and available before you move to Maica:
Device Activation Code
Device Name (exactly as registered, including case)
PRODA RA (Organisation ID)
The Service Type this device is for (NDIS or Aged Care)
In the NDIS Integration settings, the PRODA Devices section lists your activated devices and lets you add new ones. To activate a device, add a new device and complete the activation form with the details from PRODA.
The activation form asks for the following:
Service Type
The scheme this device is for. Select NDIS or Aged Care. This determines which API the device authenticates against.
Mode
The PRODA environment you wish to connect to. Use TEST if you are connecting from a Salesforce Sandbox, or LIVE if you are connecting from your Salesforce Production instance.
Device Activation Code
Once the details are entered, submit the activation. This notifies the Maica team to finalise the registration on our end, and the device will show as Pending Activation until we complete the process.
A PRODA device authenticates with PRODA, but Maica routes each API function (such as claiming or reference data) through a named connection tied to a service type. After a device is activated, create a connection so Maica knows which device to use for which service.
In the NDIS Integration settings, the PRODA Connections section lets you add a connection for each service type. When adding a connection you provide:
Name
A label for the connection, so it can be identified in the list.
Service Type
The scheme this connection serves. Select NDIS or Aged Care.
PRODA Device
To confirm a connection is working, use the Check Connectivity action on the relevant connection. Maica sends a lightweight reference-data request to that service's API:
For an NDIS connection, Maica requests reference data from the NDIS API.
For an Aged Care connection, Maica requests the service list from the Aged Care API.
When you first activate a device in PRODA, an expiration date is set. On this date, PRODA disables the device, and it can no longer communicate with the APIs unless it has been extended or a new device has been created.
When a device is registered, Maica stores its Device Expiry Date and displays it against the device in the PRODA Devices section, so you can see at a glance when action is required.
Device extension happens entirely in the PRODA portal, not in Maica. To extend a device, the authorised person signs in to PRODA, opens the organisation's B2B Devices, selects the device, and extends its expiry. PRODA sets a new expiry date, and no re-activation is required in Maica because the underlying device remains the same.
Each PRODA device holds a set of security keys with their own validity period, shown against the device alongside the expiry date. If a device's keys need to be renewed, use the Refresh Device Keys action on the device to update them without re-activating the device.
If a device is not extended before its Device Expiry Date, PRODA disables it, and the device is shown as expired in the NDIS Integration settings.
While a device is expired, attempting to use any of Maica's PRODA or API-dependent functions for that service will return an error, because Maica does not send requests to the API once the device has expired.
This section designates the Site that handles NDIS notifications received via webhook.
The Device Name is case-sensitive and must be entered in Maica exactly as it appears in PRODA. Make a note of the exact name you use when registering the device.
When PRODA displays your Device Activation Code (DAC), store it somewhere safe immediately. You cannot retrieve this code once you leave the screen, and it is valid for one-time use only within 7 days. If the device is not activated within that period, you will need to obtain a new activation code.
Once the device is activated and confirmed by the Maica team, its status updates to reflect that the device is live and ready to use.
Failing to extend or activate a new device before the Device Expiry Date will result in the device being disabled by PRODA. Maica will then be unable to communicate with that service's API functions.
If a device has already expired, it cannot be extended. You will need to create and register a new device within PRODA and activate it in Maica.
Providers must report each resident's refundable accommodation balance (RAD or RAC) to Services Australia every month, as required by the Aged Care Act 2024. The balance is reported as at the last day of the claim month. Maica reports these balances from the monthly Claim Batch, drawing on the deposit position tracked on each resident's lump sum account.
This article explains the Accommodation Balance record, the fields it carries, and the submission, correction and deletion workflow as it is built. It is written for administrators and power users.
Accommodation balance reporting is a monthly reporting action, not a real-time or per-transaction one. The balance movements that occur during the month (a deposit, a top-up, a drawdown, a refund) are tracked internally as lump sum transactions. The accommodation balance submission is a separate, deliberate month-end step that communicates the closing balance position to Services Australia.
Each monthly balance report is held as an Accommodation Balance record (Accommodation_Balance__c). A record links to the resident's lump sum account and to the claim batch for the month, and captures both what was reported and how Services Australia received it.
Unlike the event APIs, an accommodation balance has only two Services Australia outcomes, held in Response Status:
Balances are submitted from the monthly Claim Batch using the accommodation balance submission action. The action opens a modal that previews the residents for the claim month, grouped by what can be done with each, and then submits the eligible balances one at a time.
When the modal opens, it groups the month's residents into four lists so you can see the position before submitting anything:
Selecting submit sends each eligible balance to Services Australia one at a time, showing progress as it works through the list. Each balance is created at Services Australia through the accommodation balance API, and the response (including the assigned balance ID and ETag) is written back onto the Accommodation Balance record.
If every balance succeeds, the modal reports success for the full count.
If some fail, the modal reports how many failed so you can review the errors and retry. A failed balance records its Error Message, and the rest of the batch still completes.
When the submission action finishes, it stamps the Claim Batch so the month's progress is visible on the record:
Once a balance has been submitted, the modal offers per-resident actions to keep it aligned with Services Australia:
Sync re-reads the balance from Services Australia and refreshes the Maica record.
Correct opens a modal to submit a corrected balance, replacing the value held at Services Australia.
Delete removes the submission at Services Australia.
Services Australia can report which residents it considers to be missing a balance submission for the claim month. Maica includes the integration primitive for this check (scoped by the 10-character Services Australia Service ID on the Location).
Learn about Bulk Price List Update Settings in Maica
The Bulk Price List Update section allows you to apply a selected Price List to Service Agreements in bulk. You can choose to:
Apply a Price List Immediately — this updates all currently Active Service Agreements right away.
Schedule a Price List Update — this sets a future date on which the selected Price List will take effect.
Please refer to the below table for more information on each setting:

Accommodation_Balance_Type__c
The accommodation arrangement being reported (see values below)
Balance Amount
Accommodation_Balance_Amount__c
The RAD or RAC balance as at the effective date, as submitted to Services Australia
Balance Reason
Accommodation_Balance_Reason__c
The reason describing the main balance movement this month (see values below)
Effective Date
Effective_Date__c
The date the balance is reported as at: the last day of the claim month, or the departure date for a resident who left during the month
Response Status
Response_Status__c
The status returned by Services Australia for the submission
Accommodation Balance ID
Accommodation_Balance_ID__c
The identifier Services Australia assigns to the submission, required for any later correction or deletion
Aged Care ETag
Aged_Care_ETAG__c
The concurrency token returned with the last response, sent back as the if-match header on a correction or deletion
Submitted At
Submitted_At__c
When the balance was submitted
Error Message
Error_Message__c
The error detail returned by Services Australia when a submission fails, so it can be resolved before resubmitting
NOT_NEEDED
Not Needed
No balance applies for the resident
NO_DEPOSIT
No Deposit
No lump sum was paid
UNDECIDED
Undecided
The resident is still within their accommodation payment choice period
TOP_UP
Top Up
The resident topped up their balance
PART_REF
Partial Refund
A partial refund was made
FULL_REF
Full Refund
The balance was fully refunded
NO_CHG
No Change
No movement this month
ERR_LAST
Error Last
A correction to a previous submission that was in error
Cannot submit
Residents that cannot be submitted, with the reason shown
Lump Sum Account
Lump_Sum_Account__c
The resident's lump sum account (RAD or RAC) this balance report relates to
Claim Batch
Claim_Batch__c
The monthly claim batch this balance was submitted as part of
RAD
RAD
Refundable Accommodation Deposit
RAC
RAC
Regular drawdown
Regular Drawdown
A routine drawdown against the balance
PAID_IN
Paid In
Accepted
Services Australia has acknowledged the submission
Deleted
The submission has been removed from Services Australia's system
Eligible
Balances ready to submit to Services Australia
Submitted
Balances already submitted for this claim month
Deleted
Balance Submission Status
Acc_Balance_Submission_Status__c
Complete (all balances submitted successfully) or Failed (one or more failed)
Balance Submitted At
Acc_Balance_Submitted_At__c
A resident who already has a submission for the month appears under Submitted, not Eligible, so re-running the action does not submit the same resident twice. Attempting to submit an already-submitted balance directly returns a message directing you to use Correct instead.
Corrections and deletions are concurrency-protected. Both send the stored ETag in the if-match header, and Maica re-fetches the current balance from Services Australia first so the change is never applied against a stale version. If the balance changed at Services Australia since Maica last read it, the ETag no longer matches and the change is refused.
Balance Type
Refundable Accommodation Contribution
A payment was received
Balances that have been deleted at Services Australia
The time the submission action last ran
One per fee. Holds the rate, billing method and frequency, billing dates, and cap control fields the billing engine maintains.
Support Item
Defines the fee type and indexation behaviour that the billing engine reads.
Accommodation
A room or bed, with a capacity, linked to a Location.
Location
An aged care home, holding facility-level attributes such as the accommodation supplement category and the Services Australia service NAPS ID.
Invoice Line Item
Generated by the billing engine, with a source field that records what created it.
Payment
Extended with a RAD Draw-Down source value and a link to the lump sum transaction.
Aged Care Event
Holds the entry, departure, leave, supplement, and opt-in events exchanged with Services Australia. Linked to Funding.
Incident
Extended with SIRS compliance fields.
Setting
Holds the government-published caps, rates, indexation values, and automation toggles.
Lookup (Set Null) - the agreement's current deposit account
Lump Sum Transaction to Lump Sum Account
Master-Detail
Accommodation to Location
Lookup
Aged Care Event to Funding
Lookup
Claim Service Classification to Claim Batch
Master-Detail
Registered Nurse Supplement Breakdown to Registered Nurse Supplement Summary
Master-Detail
maica_cc__Opt_In_Confirmed__c
Checkbox
Set by automation when an opt-in event is accepted by Services Australia. Never set by users.
Indicates the resident has opted in to the newer arrangements. Set automatically.
maica_cc__Next_Billing_Date__c
Date
The next date the billing engine will process this item. Rolled forward after each successful run.
The next date this fee will be billed. Maintained by the billing engine.
maica_cc__Billing_Status__c
Picklist
The per-item processing state within a billing run (Initialised, Complete, Failed). Cleared after each successful run.
The billing engine's processing state for this item.
maica_cc__Cap_Reached__c
Checkbox
Set by the billing engine when a regulatory cap is hit. Cleared by the financial year reset where only an annual cap was reached.
Indicates a regulatory cap has been reached for this fee.
maica_cc__Cumulative_Retention__c
Roll-Up Summary
The total retention deducted, summed from the positive Deduction Amount on transactions where the type is Retention Deduction. Displays as a positive figure.
Total retention deducted from this deposit.
maica_cc__Cumulative_Draw_Down__c
Roll-Up Summary
The total drawn down, summed from the positive Deduction Amount on transactions where the type is Draw-Down.
Total amount drawn down from this deposit.
maica_cc__Deduction_Amount__c
Formula (Currency)
The absolute, always-positive value of the transaction amount. Used as the source for the cumulative roll-up summaries on the parent account so totals display as positive numbers.
Always-positive version of the transaction amount, used by cumulative totals on the parent account.
The one-time code issued to your organisation's authorised person during Device Registration in PRODA. It is valid for 7 days.
Device Name
The name of the B2B Device. This is case-sensitive and must match the name in PRODA exactly.
PRODA RA (Organisation)
Your Registration Authority (RA) number.
The activated PRODA device this connection should use.
Get Payment Request (Record Lookup)
Looks up the Payment_Request__c record based on the following:
Claim_Reference_Index__c = claimReference
Claim_Reference_Index__c is not null.
If the record lookup fails, it redirects to the Handle Failure assignment.
IF (Decision)
Checks if a Payment Request record was found:
Payment_Request_Found: If true, proceeds to the next decision: Payment Request Status.
Default Outcome: If no record is found, assigns the error message "No Payment Request" in Not Found.
Payment Request Status (Decision)
Evaluates the status and Status__c fields to determine the next action:
Paid: If the current Status__c = Paid, redirects to Throw Error, setting the error message:
"Payment Request Status is already Paid. It was not updated as part of the import."
Open: If status = Open, updates the Payment Request's status to Open.
Successful: If status = Successful, updates the Payment Request's status to Successful and clears any error details.
Default Outcome: For any other status, sets the Payment Request status to Failed and assigns the failure reason to Error_Details__c .
Update Payment Request (Record Update)
Updates the Payment_Request__c record with the new values:
Status__c and Error_Details__c based on the earlier decision.
Throw Error (Assignment)
Assigns the following message to FlowFaultMessage:
"Payment Request Status is already Paid. It was not updated as part of the import."
Handle Failure (Assignment)
Handles any errors in the flow by assigning $Flow.FaultMessage to FlowFaultMessage.
Not Found (Assignment)
If no Payment Request is found, assigns the message:
"No Payment Request" to FlowFaultMessage.
claimReference (NDIS Reference).paidAmount (Amount Paid).
paidDate (Date Payment Was Made).
Handle Remittance Advice (Apex Action)
Invokes the NDISHandleRemittanceAdviceInvocable Apex action (as detailed below).
Passes the following parameters:
ndisReference = claimReference
paidAmount = paidAmount
paidDate = paidDate
Error Handling: If the Apex action fails, the flow proceeds to the Handle Failure step.
Handle Failure (Assignment)
Captures the $Flow.FaultMessage and assigns it to FlowFaultMessage for error reporting.
1. Initialisation:
The trigger initialises when the input ndisReference (Claim Reference) is provided.
The system validates that the ndisReference is not blank.
2. Trigger Execution:
Validation:
Ensures that the ndisReference is provided.
Throws an error if the Claim Reference is missing.
Query Payment Requests:
Finds Payment_Request__c records where Claim_Reference_Index__c matches the provided Claim Reference.
Update Payment Requests:
Updates the following fields:
Paid Amount (Paid_Amount__c)
Logging:
If no matching payment request is found, a log entry is created for troubleshooting.
Once executed, the trigger ensures:
Payment_Request__c records are updated with:
Paid Amount
Paid Date
Status (set to PAID if applicable).
Logs are created for any unmatched records.
This process ensures accurate updates to payment requests using the provided Claim Reference during the Data Import Flow.
Autolaunched Flow
Apply this Price List
Select the Price List you want to apply to existing Service Agreements. This field is used for an immediate update.
Confirm Toggle
A toggle that confirms your intention to perform the immediate update. Once confirmed, the Update Price List button is activated.
Price List (Scheduled)
Select the Price List that should take effect on a future date.
Effective Date
The residential billing engine is the scheduled process that turns each resident's configured fees into invoice lines, invoices and accommodation drawdowns every day, without manual intervention. It is implemented as the RAC_BillingEngine Apex class and is the heart of residential aged care billing in Maica.
This article explains how the engine is structured: what it processes, the services it orchestrates, and the lifecycle of a single billing run. The rules it applies are covered in the companion articles on and .
The engine is a daily, scheduled, batched orchestrator. On each run it walks every in-scope residential Agreement Item that is due, derives the period to bill, evaluates caps, calculates retention, creates the resulting invoice line items, resolves the invoice each Service Agreement bills onto, performs automatic accommodation drawdown where eligible, and advances each item's billing cursor.
Technically, RAC_BillingEngine is a Salesforce Batchable, Schedulable, and Stateful
Outbound events are how Maica notifies Services Australia of what is happening to a resident: when they enter and leave care, when they take leave, when they need clinical supplements, and when they elect to opt in to the newer means testing arrangements. Every outbound event is stored on the Aged Care Event record and submitted through the residential care events integration. This article describes each event, the fields it carries, and the rules that govern it.
An active PRODA connection for Aged Care must be in place before any event can be submitted. See .
For an entry event, the user first runs a care recipient search against Services Australia to locate and confirm the resident's record. That search returns a temporary access key that Maica includes with the entry submission to link the event to the correct Services Australia record. Departure and leave events do not need this step, because the resident's identity is already established through the accepted entry.
These events open, close, and interrupt a resident's care period. They are the most operationally critical outbound events.
An entry event notifies Services Australia that a resident has entered care. Submission is a prerequisite for the resident to attract government subsidy, which begins on the entry date.
Learn how to Integrate with Stripe within Maica
NDIS Notifications are data updates made available through webhooks for integrated systems when certain events occur within the NDIS. These notifications provide information on changes within the NDIS through webhooks, which Maica uses to capture and display event data. This data is then displayed or updated within the application as needed.
To further understand NDIS Notifications, please refer to the definitions from the NDIS:
Paid_Date__c)Status (Status__c → set to PAID if the Paid Amount > 0).
Defines when the selected Price List should be applied. No changes occur until this date is reached.
Enable
Applies the scheduled update. Once enabled, Maica will automatically update all qualifying Service Agreements on the selected date.
Scheduled and batched. A daily scheduled run starts a fresh batch. The batch processes Agreement Items in chunks of 1 at a time, each chunk with its own governor limits.
Callout-free. The engine never calls Services Australia. Fee rate callouts are a separate scheduled job (see Fee Detection and Rate Updates).
Stateful counters. The engine keeps running totals across all chunks so the run can report a rollup at the end: items completed, items failed, Agreement Item updates actually committed, chain depth, and the number of Service Agreements that fell back to an engine-built invoice header.
A chunk size of one is a deliberate choice of failure isolation over throughput. Every write the engine makes belongs to a single savepoint-guarded commit phase at the end of the chunk, so an unhandled database error in that phase rolls the whole chunk back. At a wider chunk that rollback would take every other item in the chunk down with the one the database rejected. At one, a commit failure quarantines exactly the item that caused it and no sibling.
The trade is that the per-chunk fixed cost, the parent record loads, the cap settings and the invoice resolution, is paid once per Agreement Item rather than once per chunk of many. Total queries across a run rise accordingly. The daily run is unattended and chains itself until the backlog drains, so elapsed time is the currency the design is willing to spend.
Two things a reader might reasonably expect the engine to handle sit outside it.
Statements. The engine does not create, update, roll up, count or link to any Service Agreement Statement. Statement generation is a separate, flow-driven process that an administrator runs for a chosen period from Claim Management in Maica's Settings. It derives its totals from committed Invoice Line Items rather than accumulating them as charges are raised, which is what allows a statement to be regenerated and to correct itself when lines are later amended. See Residential Aged Care Statement Generation.
Leave. The engine does not read leave records when billing. No leave type suspends resident billing in residential aged care, so chargeable days always equal the total days in the period. Leave is still recorded, and still drives reporting and submission to Services Australia; it simply has no bearing on what the engine charges. The reasoning is set out in Next Billing Date and Catch-Up Chains.
The engine is a general-purpose Agreement Item processor: it does not contain fee-specific code paths for each fee type baked into the run loop. Instead it reads the configuration on each Agreement Item and its linked Support Item, then delegates the specialised work to a small set of focused services.
Each Agreement Item carries the fields the engine needs to bill it:
Rate and Quantity
The base inputs to the charge amount.
Billing Method
In Advance or In Arrears. Defers the first period for an in-arrears item, and drives the in-advance horizon guardrail.
Service Frequency
The run loop delegates to four focused services:
Billing Period Calculator derives the period to bill and the chargeable day count.
Cap Service evaluates the regulatory caps for capped fee types.
Retention Service calculates retention deductions from the lump sum.
Drawdown Service performs automatic accommodation drawdown after billing.
A run moves through three stages, with the heavy lifting happening per item.
The run selects Agreement Items on seven conditions. An item is in scope when it has started, carries a cursor that is due, has not aged out, is neither capped nor in a failed state, and belongs to an agreement that is in a billable state under a residential funding source:
The item has started
Start Date is on or before the run date.
The cursor is due
Next Billing Date is populated and on or before the run date.
The item has not aged out
Eligibility deliberately gates on no formula field. Both the item's Active Item formula and the agreement's Status formula embed a test that today falls on or before the end date, and that test defeats the cursor: an item whose cursor is clamped to its end date would be eligible on exactly one calendar day, because the cursor matures on that date and the formula turns false the next morning. Since the batch runs overnight, a fee ceased during business hours would then have no eligible run at all and its accrued days would never be billed. The exclusions the agreement's Status formula expresses are therefore stated as the explicit conditions in the table above, which are filterable and carry no date test.
Discharged agreements stay out of scope because final billing on departure is owned by the departure process, which drives the same per-item pipeline directly. See Exiting a Resident or recording a death.
Items are ordered by Service Agreement so that related work is processed together.
An Agreement Item with an End Date stays in scope for three months after that date, so a missed or failed run can still be recovered without the scope query trawling history. An item that has billed everything it owes leaves scope on its own before then, because the cursor is cleared once a period reaches the item's End Date and a blank cursor is excluded.
An item that still carries unbilled time when the three months elapse drops out of scope permanently, and the accrued time is lost. To make that visible while there is still time to act, the engine reports every such item during the final month before it ages out.
Each item is processed end to end inside its own try block, so a failure on one item never stops the others. The per-item pipeline runs in this order:
Route capped fees (Non-Clinical Care Contribution and Means Tested Care Fee) through the Cap Service, retention through the Retention Service and its own duration cap, and bill pass-through fees at their raw amount.
Take the invoice for the period from the chunk's pre-resolved map and widen its billing period bounds to cover this item.
The line carries the derived quantity and unit price, a service date of the period end, and a line item source of Billing Engine.
The cumulative totals that cap evaluation reads are updated in the same commit as the charge that moved them.
Advance the billing cursor, stamp the period dates and set Billing Status to Complete.
Queue an accommodation drawdown where eligible, and a retention settlement where the Retention Service built one.
All database writes are staged and committed once per chunk as bulk operations, which keeps the run efficient and within platform limits.
Three outcomes at the fee type rules step end the item's turn early, and they are deliberately different from each other:
A cap engages and leaves nothing chargeable
Cap Reached is ticked and Billing Status is set to Complete. No line is created and the cursor is not advanced, because a capped item is finished.
The period is legitimately worth nothing, from a zero rate or a zero quantity
The cursor is advanced and Billing Status is set to Complete. No line is created. The item consumed its period, so leaving the cursor would make it permanently due and every catch-up hop would replay it.
The derived line quantity is blank or not positive
A retention item whose last deduction falls inside its cadence window is a fourth case: the Retention Service signals a reschedule, the engine pushes the cursor forward to the rescheduled date, stamps Complete, and creates no line.
A successful run produces:
Invoice line items, each stamped with a line item source of Billing Engine, a service date of the period end, and the derived quantity and unit price for the fee type.
Invoices that the line items roll up into, resolved as described under How the invoice for a period is resolved, with their billing period bounds widened across every contributing item.
Updated Funding cumulatives that feed cap evaluation.
Retention and accommodation drawdown records where applicable, each dated to the period they settle rather than to the run date.
Log records for per-item failures and for the operational warnings described in this article.
The engine does not decide invoice grouping from chunk membership. Before the per-item loop runs, it asks the package's own invoice find-or-create which invoice each Service Agreement in the chunk should bill onto.
The rule, in plain terms: any invoice for this Service Agreement whose Status is Entered and whose Invoice Closure Date is either blank or has not yet passed. Status defaults to Entered on the object, which is why invoices the engine has already raised satisfy the condition without the field ever having been set. Where no such invoice exists, one is created.
Three consequences are worth knowing before triaging a surprise:
Successive nightly runs inside one invoice period bill onto one invoice per Service Agreement, rather than one per run. This is the invoice period behaviour used elsewhere in the package.
Catch-up hops merge. During a catch-up night, successive hops for the same Service Agreement roll into a single invoice for the run, with the period bounds widened across every contributing hop. A fee type that settles its own invoice within the same run is the exception and correctly raises a fresh invoice per hop: retention and automatic RAD drawdown both write a Payment against the invoice they just billed, which moves it off Entered, and appending a later period's charges to a settled invoice would misstate it.
Departure lines attach to the run's invoice where the departure is processed within the same open invoice period, rather than raising a second one.
Where resolution fails for a Service Agreement, the engine builds its own invoice header and the item still bills, rather than failing the run. At the end of the dispatch it writes one Log record of type Warning naming how many Service Agreements were affected and noting that the period may now carry a second invoice header for the same Service Agreement. Reconcile or void the extra header before it is claimed. Where duplicate open invoices already exist for a Service Agreement, the match between them is not deterministic until they are consolidated.
Failures are reported through Log records rather than through the batch job, so the Log list view is where triage starts.
Log records carry Service Agreement, Funding, Participant and Support Item lookups where they can be resolved, so billing operations can triage from the Log list view.
The engine normally runs on its daily schedule. An administrator can also trigger an ad-hoc run from the Maica Settings area, which returns the job so progress can be followed. Either way, the same pipeline executes; the only difference is what starts it. An ad-hoc run always executes in the running user's own security context.
For scheduling, see Scheduling RACS Background Jobs; for manual rate changes, see Scheduling and Manual Rate Changes.
A resident's fees do not reduce during any type of leave. The resident is paying to hold a bed and the bed is held whether they occupy it or not, so every leave provision's consequence falls on the provider's subsidy rather than on what the resident owes.
Once per dispatch, the engine writes one Log record of type Warning with a Source of RAC Billing Engine for each Agreement Item that carries unbilled time and is within one month of leaving billing scope. The record names the item, its End Date, its cursor, its last billed period and the exact date from which it will be excluded. Bill the item or extend its End Date before that date. Where more than 200 items are inside the warning window, the closest to expiry are itemised and the record states the true total rather than truncating silently.
This behaviour depends on the Invoice setting's Invoice Period and Invoice Period Anchor Date being configured. Without them the Invoice Closure Date is never stamped, the closure condition matches forever, and one invoice is reused indefinitely for a Service Agreement rather than one per invoice period. That is organisation data rather than packaged configuration, so no upgrade can supply it.
When a single item fails, its Billing Status is set to Failed, a Log record of type Error with a Source of RAC Billing Engine is created, and the run continues with the next item. Failed items are skipped on later runs until an administrator clears Billing Status, so they do not block billing for other residents. Review the Log list view alongside the Billing Status filter to triage failures.
When a chunk loses its commit phase, the batch job still reports as completed with no errors, because the engine handles the failure rather than letting it escape. The Log record is the only signal. It names every Agreement Item in the chunk, states whether they were successfully re-stamped as Failed and are therefore out of scope pending triage, or whether the re-stamp itself failed and they remain in scope and need escalation.
Entry Type
Entry_Type__c
Whether the entry is permanent or respite. A permanent entry opens an ongoing care period; a respite entry covers a planned short stay. Cannot be changed after creation.
Entry Date
Entry_Date__c
The date the resident entered care. Payment is inclusive of this date, so subsidy begins on the entry date.
The entry distinguishes a permanent entry, which opens an ongoing care period, from a respite entry, which covers a planned stay with an expected departure. After submission, Services Australia returns an event ID and an initial status (commonly Held or Accepted), which Maica records on the event.
A departure event notifies Services Australia that a resident has permanently left the service, closing the care period.
Departure Date
Departure_Date__c
The date the resident departed. Must be on or after the entry date. Payment is not made for this date.
Departure Reason
Departure_Reason__c
The departure reason values are:
AUTO
Auto Departure (system-generated when a new entry at another service triggers an automatic departure)
DECEA
Deceased
OTHER
Departure is a deliberate, user-led action launched from the resident's Service Agreement. This is intentional: a departure has to coordinate the Services Australia submission with Maica's own processing, including final billing, setting up any RAD or RAC refund, and closing the Service Agreement. The guided action steps the user through both sides together.
A leave event records an approved period of absence. Leave matters because it affects the subsidy paid, consumes leave entitlements, and influences occupied bed day counting for the 24/7 RN supplement.
Event Type
Event_Type__c
The leave type (see codes below).
Start Date
Start_Date__c
The leave types are:
SOC
Social leave (with notice)
Yes
Consumes the social leave balance
Before a leave event is created, Maica can check the resident's remaining entitlement through the leave and respite balance reads, so available days are confirmed before submission. Those inbound reads are covered in .
These events notify Services Australia of clinical equipment needs and extra service status. They attract dedicated supplements and follow the same submission pattern as the care period events.
These events record periods where a resident requires enteral (tube) feeding or supplemental oxygen. Services Australia pays a dedicated supplement for each.
Event Type
Event_Type__c
The clinical classification. Enteral feeding uses normal and high, bolus and non-bolus variants; oxygen uses normal and high variants.
Start Date
Start_Date__c
An extra service event records whether a resident occupies an approved extra service ward place, which affects subsidy and the resident's fee eligibility. The ward type code is taken from the room (Accommodation) the resident occupies, and the event is intended to be raised as part of the Relocate Resident workflow when a resident moves into or out of an extra service room.
Ward Type Code
Ward_Type_Code__c
The extra service ward type for the resident's room. The first three digits indicate the bed count and the letter suffix identifies the tier. Applies only at services with extra service places.
Start Date
Start_Date__c
An opt-in event records a resident's formal election to opt in to the means testing arrangements that apply from 1 November 2025. It is launched as a deliberate quick action, because the election is a legal step that depends on the resident's signed form.
Opt In Date
Opt_In_Date__c
The date the resident elected to opt in. Mandatory for an opt-in event and must be on or after 1 November 2025.
Means Testing Opt In
Means_Testing_Opt_In__c
When Services Australia accepts the opt-in event, Maica updates the resident's billing configuration automatically. It sets Opt In Confirmed (Opt_In_Confirmed__c) and the Opt In Effective Date (Opt_In_Effective_Date__c) on the Funding record, and a record-triggered process moves the Fee Arrangement to the post-1 November 2025 arrangement. Linked Service Agreements then reflect the new arrangement automatically, with no manual record changes required.
Every event in this article supports the same set of operations: create the event, read it back, update it (which sends a new version), and delete it. Updates and deletes use the stored event ID and ETag for concurrency control, and each accepted update creates a new version. Whether an action is available at a given moment depends on the event's status, and the guided forms only offer the actions that the current status allows.
For entries from 1 November 2025, several legacy accommodation fields no longer apply and must not be submitted. Maica applies the correct field set automatically based on the entry date, so older accommodation arrangement and amount fields are only sent for entries before that date.
The departure date is not inclusive for payment. Subsidy ceases on the day before the departure date, and the Maica billing engine applies the same rule, so the final billed day is the day before departure.
Both events require the resident's completed AC011 form (the authority for enteral feeding or oxygen) to be attached. An event's start date cannot cross the boundary between the pre-AN-ACC and post-AN-ACC periods: if the supplement was in place before the AN-ACC start date, a separate event is needed for the post-AN-ACC period. After the AN-ACC date, only the normal classifications are valid (for oxygen, OXY_NORM).
The Extra Service event category exists on the Aged Care Event record and is designed to be submitted from the Relocate Resident workflow. A dedicated extra service submission segment could not be confirmed in the current release-production code, where the confirmed submission segments are entry, opt-in, departure, leave, enteral feeding, and oxygen. Confirm the extra service submission path with the engineering team before relying on this in production.
The resident's completed AC022 form (the means testing opt-in election) must be attached to the event. Maica supports submit, retrieve, update, and withdraw for opt-in events; search, versions, and attachment retrieval endpoints are out of scope, and the signed form is retained by the provider rather than read back through the API.
The opt-in downstream update is immediate. Once Services Australia accepts the event, the resident's fee arrangement in Maica updates without any further user action.
Webhook
A webhook (also called a web callback or HTTP push API), is a lightweight API that powers one-way data sharing triggered by events. Unlike typical API's where you would need to poll for data in order to get updates in real-time, a webhook delivers data to your application as the event happens, meaning you get the data immediately.
Events
Specific actions or changes within the NDIS system that trigger data updates through webhooks. These events signify key occurrences related to a participant's plan, funding, or service interactions that integrated systems need to be aware of. Examples of events include a plan modification, a funding allocation update, or a change in the status of an invoice. When such an event occurs, the NDIS generates a webhook with the relevant data, allowing Maica to capture and reflect this information for users.
Please see the table below to see which NDIS Events Maica supports and handles.
The following table outlines the Events Maica supports.
New Service Booking created
SB_NEW
The notification for this event will be triggered when a new service booking is created:
By a Staff member using the staff portal
By a Participant using the myplace participant portal
By a Provider using the myplace provider portal
SB End Date updated
SB_END_DATE_UPDATED
In order to set up the NDIS Notifications within your Maica instance, please follow the following steps:
Create a Salesforce Site under the name NDIS Notifications.
Assign the Maica - Handle NDIS Notifications permission set to the Site Guest User.
Navigate to Maica Settings -> NDIS Notifications
Find and choose the created Site in the Notifications Endpoint (Site) , as shown below:
Finally, select the Subscribe All button
NDIS Notifications
Digital Partners (Maica) can receive notifications for events they have subscribed to, by leveraging Webhooks.
Many providers structure their Service Agreements as sequential, period-based Agreement Items (for example, quarterly) to match how funding is released. When a period ends with unspent funds, those funds need to carry forward to the next period so they are not lost.
Agreement Item Funding Rollover automates this process. When an Agreement Item's period ends with a positive remaining balance, Maica transfers that balance to the next matching Agreement Item on the same Service Agreement. You can also trigger rollover manually via a Quick Action on the Agreement Item, and individual items can be excluded from the process entirely.
The feature is opt-in at the organisation level, opt-in at the Service Agreement level, and opt-out at the Agreement Item level. This three-layer control ensures rollover only applies where it is intentional, while allowing individual items to be excluded when needed.
Rollover runs automatically in the background and does not require manual interaction in most cases. When you do need to trigger it manually, open the relevant Agreement Item record and use the Process Rollover Quick Action.
Maica runs a scheduled batch job daily, Agreement Item Rollover - Daily, at the configured Processing Time (defaults to 1:00 AM). The batch processes Agreement Items whose period ended the previous day. For each eligible item, the system:
Calculates the remaining balance on the source Agreement Item (Approved Amount minus Utilised Amount and Total Committed). Because Approved Amount already includes any prior rollover adjustments, this gives the correct remaining funds.
Finds the next sequential Agreement Item on the same Service Agreement that matches by Support Item (for stated items) or Support Category (for category-funded items).
If a match is found and the remaining amount is positive, transfers the funds to the target item.
Marks the source item as processed and records the audit trail on both items.
You can also trigger rollover manually using the Process Rollover Quick Action on any Agreement Item record. This is useful when:
You need to roll over funds before the scheduled job runs
The automatic process did not find a matching target and you want to select one manually
You want to override the auto-detected target with a different Agreement Item
The Quick Action presents a preview screen showing:
The source item's financial summary (Approved Amount, Utilised Amount, Total Committed, Remaining)
The auto-detected target item (if one was found)
An option to select a different target from eligible items on the same Service Agreement
When looking for the next sequential Agreement Item, the system applies the following rules:
Same Service Agreement. The target must belong to the same Service Agreement as the source.
Support Item or Support Category match. For stated items, the target must share the same Support Item. For category-funded items, the target must share the same Support Category.
Date window. The target's Start Date must fall on or after the day after the source's End Date, within the configured Rollover Gap Tolerance.
If no eligible target is found, the source item is marked as Rollover Processed (so the batch does not retry it) and no rollover values are recorded.
Navigate to Maica Settings → Agreement Management → Agreement Item Rollover to configure the following org-wide defaults:
Each Service Agreement has settings that control rollover behaviour for its Agreement Items:
After rollover has been processed, the following fields are populated on the source and target Agreement Items.
Approved Amount is the net budget field. It is calculated automatically as:
After rollover, the source item's Approved Amount decreases (funds moved out) and the target item's Approved Amount increases (funds received). This means Remaining Amount (Approved Amount minus Utilised Amount minus Total Committed) is automatically correct on both items without any additional formula fields.
The Service Agreement-level Approved Amount (a rollup of all child Agreement Items) remains unchanged after rollover, because the decrease on the source item exactly offsets the increase on the target item.
Consider a participant with quarterly Agreement Items for Support Coordination:
The batch job runs at 1:00 AM on 1 April.
It finds the Q1 item ended yesterday with $1,800 remaining (Approved Amount minus Utilised Amount and Total Committed).
It matches Q2 as the next sequential item (same Support Item, Start Date within tolerance).
The Rollover Audit History component on the Agreement Item record provides a complete log of rollover events involving that item, both as a source and as a target. It is the recommended starting point for any compliance review or audit query about rollover.
Each entry in the audit history shows:
The date the rollover was applied
The direction (In or Out)
The amount
The other side of the rollover (source or target item name)
The Bulk Update Price List feature (Maica Settings → Agreement Management) re-prices Agreement Items to the rates in a selected price list, for example when bringing agreements in line with the latest NDIS Price Guide. This feature and Funding Rollover are designed to work together.
When a bulk price update runs, it re-prices all eligible Agreement Items but intentionally leaves any item that has already been processed for funding rollover unchanged. Rolled-over items belong to closed, settled periods where the funding figures have already been finalised, so their rates are protected and are not overwritten by the new price list.
If you need a rolled-over item to reflect a new rate, remember that it represents a period whose funding is already settled. Any adjustment should be made on the current or future period item rather than the closed one.
The Maica - Manage Agreement Item Rollover permission set grants the access required to:
View the rollover fields on Agreement Items and Service Agreements
Configure Rollover Settings in Maica Settings
Use the Process Rollover Quick Action
Assign this permission set to any administrators or finance staff who need to configure or action rollover. Users without this permission set can still view Agreement Items normally; rollover-specific fields and actions are simply not visible.
Verify Enable Agreement Item Rollover is checked in Maica Settings → Agreement Management → Agreement Item Rollover.
Verify the Service Agreement has Enable Funding Rollover checked and Status is Active.
Verify the Agreement Item is not marked as Exclude from Rollover.
The source Agreement Item has already had rollover processed. Each item can only be rolled over once. Check the Rollover Processed checkbox and Rollover Amount Out field to see what happened. If you need to re-run rollover for a specific item, clear the Rollover Processed flag manually and the batch will pick it up on the next run.
The selected target Agreement Item has already received rollover funds from another source. Each target can only receive one rollover. Select a different target item, or clear the existing Rollover Amount In value manually before retrying.
The system could not find a matching Agreement Item. This can happen when:
No future Agreement Item exists with the same Support Item or Support Category
The gap between periods exceeds the configured tolerance
All matching candidates are excluded from rollover or already have rollover amounts
The matching candidate's End Date extends past the Service Agreement End Date
Use the manual target selection in the Quick Action to choose an eligible item.
This is expected. The Bulk Update Price List feature deliberately skips Agreement Items that have already been processed for funding rollover, because they belong to closed, settled periods. All other items on the agreement are re-priced as normal. See above.
The nightly batch only processes items whose parent Service Agreement has Enable Funding Rollover checked and Status set to Active. Service Agreements that have been deactivated, expired, or closed are not considered.
Rollover only applies between Agreement Items on the same Service Agreement. If a Care Recipient has a new Service Agreement starting after the old one ends, unspent funds from the old Service Agreement do not roll over into the new one automatically. This boundary is intentional, since new Service Agreements often involve a renegotiation of funding terms.
The matching logic skips any candidate target that already has a Rollover Amount In value. This prevents the same target from receiving rollover from multiple sources in error. If a target needs to receive rollover from a different source, the existing Rollover Amount In value must first be cleared manually.
Source items with Rollover Processed set are not re-evaluated by the nightly batch, even if their state subsequently changes. This avoids the batch reprocessing the same item every night. If you need to re-run rollover for a specific item, clear the Rollover Processed flag manually and the batch will pick it up on the next run.
When you run a Bulk Update Price List, Agreement Items that have already been processed for funding rollover keep their existing rate and are not updated to the new price list. This protects the settled funding figures on closed periods. All other Agreement Items on the agreement are re-priced as normal. This is by design, not an error.
Learn about Permission Groups and what Permission Sets they contain in Maica
This article outlines the full list of Permission Set Groups used in Maica and provides a description of what each group controls access to.
The table below provides a list of the standard Maica Permission Set Groups, associated Required Groups and a Description of each Group.
Pensioner Status
Pensioner_Status__c
The resident's pensioner status (full, part, or non-pensioner). Required for permanent entries and used in accommodation and means tested fee calculations.
Receiving Prior Care
Receiving_Prior_Care__c
Whether the resident was receiving care immediately before this entry. Helps determine which means test and fee rules apply.
Means Testing Opt In
Means_Testing_Opt_In__c
Whether the resident is electing the newer means testing arrangements. Relevant to entries on or after 1 November 2025.
The reason for departure (see codes below). Required when a departure date is provided.
Entry Event ID
Entry_Event_ID__c
Links the departure to its originating entry event, forming a complete care period record.
Other
RTFAM
Return to Family or Home
RESPR
To Another Service (Provider)
RESRS
To Another Service (Resident)
THOSP
To Hospital
The first day of leave. This date is inclusive: the resident is on leave from this day.
End Date
End_Date__c
The day the resident returns. This date is not inclusive: it is the first day back, not the last day of leave.
SOC_NC
Social leave (non-claimable)
No
Does not consume balance
TC
Transition care leave
Yes
Consumes the transition care leave balance
TC_NC
Transition care leave (non-claimable)
No
Does not consume balance
HOSP
Hospital leave
Yes
No balance cap
EMG
Emergency leave
Yes
No balance cap
The first day the supplement applies.
End Date
End_Date__c
The last day the supplement applies. For these two events the end date is inclusive.
The first day of extra service status.
End Date
End_Date__c
The end of extra service status. This date is not inclusive: status ends the day before the date submitted.
Records that the resident has elected to be subject to the means testing arrangements.
Day, Week, Month, or One (one-off). Drives the length of each billing period.
Start Date and End Date
The lifecycle window. Periods are clamped so they never fall outside this window.
Next Billing Date
The cursor that determines when the item is next due. A blank cursor is invisible to the engine.
Last Billed Period Start and Last Billed Period End
The period just billed. Last Billed Period End prevents re-billing the same days.
Last Billed Date
The run date on which the item was last billed, which differs from the period dates on a catch-up run.
Cumulative Amount (FY)
The running total used for annual cap evaluation.
Cap Reached
Set when a cap is engaged. A capped item drops out of the engine's scope.
Automatic RAD Drawdown
Whether eligible charges trigger a drawdown against the lump sum.
Billing Status
Initialised, Complete, or Failed.
Fee Type (on the linked Support Item)
Tells the engine which processing rules apply.
End Date is blank, or falls within the lookback window described below.
No cap is engaged
Cap Reached is not ticked.
The item is not quarantined
Billing Status is not Failed.
The agreement is billable
Not cancelled, not a draft, not discharged, started on or before the run date, and either open-ended or ended within the lookback window.
The funding is residential
The agreement's Funding has a Funding Source of Residential Aged Care.
The item is failed and logged. A line with a quantity of zero or less is rejected by validation at commit time and would take the whole chunk down with it.
The notification for this event will be triggered when the end date of a service booking is updated:
By a Staff member using the staff portal
By a Participant using the myplace participant portal
By a Provider using the myplace provider portal
By a Digital Partner using Provider API's PATCH
Due to a plans' end date being updated as a result of an unscheduled plan review, participant access being revoked or participant access being ceased (due to death).
Service Booking Budget Updated
SB_BUDGET_UPDATED
The notification for this event will be triggered when the quantity and/or allocated amount of one or more supports within a service booking is updated:
By a Staff member using the staff portal
By a Participant using the participant portal
By a Provider using the myplace provider portal
Via API
Service Booking deleted
SB_DELETED
The notification for this event will be triggered when a service booking is deleted
By a Participant using the myplace participant portal
By a Provider using the myplace provider portal
By a Provider using the Provider API's DELETE /{service_booking_id} operation
Remittance Advise is generated
REMIT_ADV_GENERATED
The notification for this event will be triggered overnight and the JSON payload available in your chosen webhook, when the remittance advice is ready, for payment claims that have been processed and paid, the day before. See sample JSON payload below:
Please note that this notification does not currently work in the Test Vendor environment and therefore cannot be used for testing.
Budget Updated
BUDGET_UPDATED
This notification will allow Plan Managers and Support Coordinators to be notified when SAP participant's budget is changed given that consent is provided. The notification for this event will be triggered and sent to the Plan Manager or Support Coordinator when a participant's budget is updated, either via APIs or via a Staff Member using the Staff Portal, given that the provider has consent/authority with the related participant. The notification will be triggered for the following scenarios:
A participant plan extension
Service Booking creation, update, or deletion.
Service booking on quotation approved.
Update on Participant's Active Plan Budget.
Spent Amount
Remaining Amount (claim status is pending payment, or payment cancellation)
Plan End Date is updated
PLAN_END_DT_UPDATED
The notification of this event will be triggered when the plan end date of a participant's current active plan is updated
Due to an unscheduled plan review
Due to the auto extension of plan
Due to the participant's access ceasing (due to death for instance)
PACE Budget Updated
BUDGET_UPDATED
This notification will allow Plan Managers and Support Coordinator to be notified when a PACE participant's budget is updated.
The notification for this event will be triggered sent to the Plan Manager or Support Coordinator when a participant's budget is updated via APIs or a Staff Member using the Staff Portal given that provider has consent/authority with the related participant.
PACE New Plan Created
PLAN_APPROVED
This notification will allow Plan Managers or Support Coordinator to be notified when a participant's new plan is created.
The notification for this event will be triggered and sent to the Plan Manager or Support Coordinator when there is a new plan approval given that the provider has consent/authority to view plan details with the related participant.
PACE Relationship Created
RLTN_CREATED
For PACE participant the notification for this event will be triggered when:
My Provider Relationship is created between participant and provider in PACE.
Plan Manager Relationship is created between participant and provider in PACE.
Recovery Coach Relationship is created between participant and provider in PACE.
Support Coordinator Relationship is created between participant and provider in PACE.
PACE Relationship End Date Update
RLTN_END_DATE_UPDATE
For PACE participant the notification for this event will be triggered when:
My Provider Relationship end date is updated in PACE.
Plan Manager Relationship end date is updated in PACE.
Recovery Coach Relationship end date is updated in PACE.
Support Coordinator Relationship end date is updated in PACE.

Not excluded. The target must not have the Exclude from Rollover checkbox checked.
Not already received rollover. The target must not already have a Rollover Amount In value.
Earliest wins. If multiple candidates match, the one with the earliest Start Date is selected.
Rollover Processed
Checked when rollover processing is complete. Prevents the batch from re-evaluating items it has already actioned.
Rollover Processed Date
The date when processing occurred.
$5,000
--
--
$1,800 is transferred: Q1 gets Rollover Amount Out = $1,800, Q2 gets Rollover Amount In = $1,800.
Approved Amount automatically recalculates on both items:
Q1's Approved Amount decreases to $5,000 − $1,800 = $3,200 (funds moved out).
Q2's Approved Amount increases to $5,000 + $1,800 = $6,800 (funds received).
Q1's Remaining Amount = $3,200 − ($3,200 + $0) = $0 (fully spent or rolled).
Q2's Remaining Amount = $6,800 − ($0 + $0) = $6,800 (full net budget available).
Whether the rollover was applied automatically by the nightly batch or manually via Quick Action
01Enable Agreement Item Rollover
Master switch for the rollover feature. When unchecked, the daily batch job runs but does not process any items, and manual rollover via the Quick Action is also blocked.
Default Rollover Gap Tolerance (Days)
The default maximum number of days allowed between a source item's End Date and a target item's Start Date for automatic matching. Set to 1 for the standard NDIS pattern where the next period starts the day after the previous one ends (for example, Q1 ends 31 March, Q2 starts 1 April). Set to 0 only if target periods start on the same day the previous period ends.
Rollover Processing Time
Enable Funding Rollover
Enables rollover processing for this Service Agreement's items. Must be checked for both automatic and manual rollover to work.
Rollover Gap Tolerance
Overrides the org-wide default gap tolerance for this specific Service Agreement. Leave blank to use the org default.
Exclude from Rollover
When checked, this item will not participate in the rollover process. It will not send funds to a future period and will not be selected as a target for incoming funds. Use this for one-off purchases, trial periods, or items that should remain budget-isolated.
Rollover Amount Out
The amount of unspent funds transferred to the next period.
Rollover Date Out
The date when the rollover was processed.
Rollover Target Item Name
Rollover Amount In
The amount of unspent funds received from the previous period. This amount is automatically incorporated into Approved Amount, increasing the net budget.
Rollover Date In
The date when the rollover funds were received.
Rollover Source Item Name
Q1 (Jan-Mar)
$5,000
$3,200
$1,800
If the rollover amount is zero or negative (the period was fully spent or overspent), the source item is simply marked as processed with no funds transferred.
Rollover can only be processed once per Agreement Item. Once processed, the source item cannot be rolled over again, and the target item cannot receive a second rollover.
The Exclude from Rollover checkbox must be set before the period ends for it to take effect on the automatic batch job.
The Service Agreement's rollup Approved Amount remains $10,000 throughout. Rollover moves funds between periods, it does not create or destroy them.
The time of day (in 24-hour format, for example 01:00) when the daily rollover batch job runs. Defaults to 1:00 AM if not specified.
The name of the Agreement Item that received the funds. Retained as a static audit value (does not break if the target is renamed or deleted).
The name of the Agreement Item that sent the funds. Retained as a static audit value.
Q2 (Apr-Jun)
Category items: (Quantity × Rate) + Rollover Amount In − Rollover Amount Out
Stated items: Utilised Amount + (Quantity Remaining × Rate) + Rollover Amount In − Rollover Amount OutMaica - Sync NDIS Funding & Object Permissions
Enables the execution of callouts to the NDIS for syncing Plan and/or Service Booking details. Data access will replicate what is available in the Provider Portal and will be governed by the consent and relationships established with your customers.
Maica - Manage Invoices & Object Permissions
Provides the ability to manage all aspects of Invoicing in Maica, including creating, updating, and maintaining Invoices, as well as processing Payments.
Maica - Manage NDIS Claim & Object Permissions
Grants users the ability to execute the callout to the NDIS to submit a Payment Request and manage the response. Also provides the ability to process a Credit to refund or cancel a Payment Request.
Maica - Manage Service Agreements & Object Permissions
Manages Service Agreements, defining the Provider-Participant relationship. Enables creating, updating, and maintaining Agreements and Items for accurate records. Also allows updating the associated Price List.
Maica - Process Stripe Payments & Object Permissions
The table below provides a list of the standard Maica Permission Set Groups and any Required Groups they may require in order to operate as expected.
Maica - Sync NDIS Funding & Object Permissions
Maica - Manage Invoices & Object Permissions
You can access a full overview of all the Maica Permission Sets in the Google Sheet below.
Please note, the table below only lists the Permission Set Groups used in Maica. To access the full breakdown of each Group and view which Permission Sets are included in them, click here
In Maica, certain Permission Set Groups depend on access provided by other groups to operate as expected. These dependencies ensure the user has all the necessary permissions.
For example, to execute an NDIS Claim using the Maica – Manage NDIS Claim & Object Permissions group, a user must also be assigned the Maica – Manage Invoices & Object Permissions group to ensure they can access and manage Invoices and Payments involved in the claiming process.
The Required Groups table sits below the Description table, please ensure you reference it to see any such dependencies for each group. To access directly, click here.
Click to view and download the complete Maica Permission Matrix.
The Care Minutes Check compares direct care minutes delivered at a facility against the Department's published targets for it, and projects the quarter's likely landing point from the remaining roster. It follows the same pattern as the : a quick action on Location, a calculated record, and a Flow entry point for automation.
The numerator sits on the Appointment tree and the denominator on the Service Agreement tree, and no report type can join the two. That is why this is a calculation rather than a report, and why its inputs need to be configured deliberately.
This article covers the access model, the data the calculation depends on, and the rules it applies. For the operational view, see Care Minutes in the User Guide.
A user who runs the check needs create or edit access as well as read, because running it writes the record.
The whole feature runs in the running user's context. There is no system-mode path, so a user running the check needs read access to everything the calculation reads, and a Flow automation user needs exactly the same access a person does.
Reads span Appointment, Appointment Resource, Service Agreement, Funding, Aged Care Event and Unavailability. The Unavailability dependency is easy to miss: breaks are Unavailability records, and without read access on them the calculation cannot run.
Run Care Minutes Check sits on the Location highlights panel. Completed records appear in the Care Minutes Checks related list on the same record, newest quarter first.
One record exists per facility per quarter, keyed on Location and Quarter Start. Running the check again for the same pair updates that record in place.
Two validation rules protect the key and the audit trail:
The second rule is scoped so it does not block unrelated edits to older records. It also deliberately stops short of making Assessment Period End mandatory outright, because a record may legitimately be created by hand to hold the Department's targets before any run has happened.
These five are never written by the calculation and survive every re-run.
Appointment Resource carries two formula fields as reporting aids: Direct Care Minutes, which resolves the worker's actual times and falls back to the shift's, and Actual Times Recorded. Both exist for reporting. The calculation does its own arithmetic, because it needs to distinguish states these fields cannot express.
The quarter runs from the selected Quarter Start to three months later, less one day. The assessed period ends at the earlier of the quarter end and yesterday, and that date is stamped on Assessment Period End.
Capping at yesterday keeps the two sides of the ratio aligned. A shift in progress today would otherwise add minutes to a numerator whose denominator stopped at yesterday, biasing every in-flight result high.
Running the check on the first day of the current quarter is rejected before any query or write, since no complete day exists to assess.
An Appointment is in scope where it uses the Shift record type, sits at the Location, carries a Type of Registered Nurse, Enrolled Nurse, Personal Care Worker or Assistant in Nursing, is not Cancelled, and has a scheduled start inside the quarter.
Assigned resources count where their status is Accepted or Confirmed. Resources of type Asset are excluded, since a booked room or vehicle would otherwise contribute a full shift of care minutes through the shift-level path.
A shift is attributed to the day it started, so a shift crossing midnight counts wholly in the day it began.
Where some resources recorded actuals and others did not, only the actuals count and the establishment figure never tops them up.
Once the quarter is complete, a shift with no actuals is always unverified, whatever its scheduled end. Nothing can be "remaining" on a closed quarter, so a night shift ending on the first day of the next quarter is not reported as rostered.
Breaks are Unavailability records of type Appointment Break attached to the shift. Only those with a status of Approved are honoured, matching how timesheets treat them, so a pending or rejected break never reduces a reported figure.
Every approved break is deducted, paid or unpaid. The Department's test is time actually providing a service, and no care is delivered during any break. Maica also carries no paid indicator on a break: the Billable flag records whether time can be charged to a client, which is a different question.
Each break is clipped to the window it is being deducted from, so a break recorded outside the worked window deducts nothing and one that overhangs deducts only the overlap. The result floors at zero, so a mis-recorded break longer than the shift cannot drive a figure negative.
The deduction is reported in two separate fields on purpose. Break Minutes Deducted is the audited figure taken off delivered minutes and is the one to reconcile against payroll. Rostered Break Minutes Deducted is a projection over shifts still to come, and folding the two together would put an unaudited number inside an audited one.
A shift still to come projects its scheduled duration multiplied by Required Resources, net of breaks. A shift-wide break comes off the per-slot duration before the multiply, since whoever fills each slot takes it; a break attributed to a named worker comes off once, after the multiply, and only where that worker is assigned.
A blank Required Resources resolves to zero rather than one, so such a shift projects nothing. This matches how the Resources Balance field behaves and avoids fabricating a worker from a field the provider never filled in.
Unfilled Roster Slots counts required resources not yet assigned on upcoming shifts.
Occupied Bed Days is subsidised care days, not resident days. It is built in two stages that pull in opposite directions.
Service Agreements count where they sit at the Location through their Funding, are not cancelled and not draft, carry a funding source of Residential Aged Care, and a funding type of Permanent or Respite.
The entry date clamp matters because nothing ties an agreement start to physical entry. A provider who dates the agreement from bed allocation would otherwise carry genuinely unsubsidised days in the denominator. Where the resident has no accepted entry event the term is simply omitted rather than treated as a blank date.
Discharge Date is honoured separately from End Date because the departure process stamps the discharge date without setting the agreement end date.
Leave is read from Aged Care Event records with an event category of Leave and a status of Accepted. No other status deducts.
An unrecognised event type is treated as claimable, so a new Services Australia code cannot start deducting days on its own.
Excluded leave is clamped to the assessed window and to the resident's own agreement spans, then merged, so a day is never deducted twice and leave dated outside a resident's time in care cannot come off another resident's days.
Occupied Bed Days is gross occupancy less excluded leave, floored at zero. Excluded Leave Days is written raw so the two can be reconciled against the Services Australia payment statement.
The projection holds occupancy flat: projected bed days are the assessed days plus the residents still in care on the last assessed day multiplied by the days remaining. No leave is projected forward.
The four ratios are calculated to one decimal place. A zero denominator produces a blank ratio rather than zero, because no residents to average over is a different statement from an average of zero minutes.
Compliance compares the projected figures on a partial quarter and the delivered figures on a complete one. Variance is figure minus target, so negative is under-delivery. Where either target is blank the status is Targets Not Entered and both variances stay blank. Where a ratio is blank the status is left blank rather than reported as Met, because asserting compliance from no data is the one error this feature is built to avoid.
Generate Care Minutes Check is available as an invocable action, taking a Location and a quarter start. It handles a whole batch in one call, returns one result per request in the order they were passed, and isolates failures: a request naming an unknown Location fails on its own slot without affecting the others. Requests sharing a facility and quarter collapse onto the single record that key allows.
The Flow's running user needs the same access as a person, per the access model above.
The calculation reads data your organisation maintains for other reasons, so a facility can produce a result that is technically correct and practically wrong. Five dependencies decide whether the figures mean anything.
Targets are keyed in per facility per quarter, so entering them is part of opening each quarter rather than a one-off task.
Registered residential aged care providers must report across several government systems under the Aged Care Act 2024. Maica supports these obligations to different degrees: some through a direct integration with Services Australia, some by providing a reportable data extract that reduces manual effort, and some not at all where the required data is not held in Maica.
This article sets out, for each obligation, which system it is submitted through and what Maica provides. It is the starting point for the rest of this section, which documents each supported capability in detail. It is written for administrators.
Provider reporting operates across five government systems. Maica's role varies for each.
The table below summarises each obligation and whether Maica provides a direct integration, a reportable output, or no capability.
Each supported capability is documented in its own article in this section:
The two Services Australia integrations are covered in and .
The two Quarterly Financial Report outputs are covered in .
The coverage calculation is covered in .
The prudential compliance export is covered in .
Notes
Free text
Quarter Start
The quarter being assessed. Set on creation and never moved
Delivered ratios
Delivered Minutes Per Resident Day, Delivered RN Per Resident Day
Projection
Rostered Minutes Remaining, Projected Total Minutes, Projected Occupied Bed Days, Projected Minutes Per Resident Day, Projected RN Per Resident Day
Comparison
Total Variance, RN Variance, Compliance Status
Data quality
Unfilled Roster Slots, Unverified Past Shifts, Shift Level Sourced Shifts, Break Minutes Deducted, Rostered Break Minutes Deducted
Audit
Run Date, Run By
3
Neither, and the shift's scheduled end has passed
Counted under Unverified Past Shifts. Contributes to neither measure
4
Neither, and the shift is still to come
Counted as rostered minutes
Anything else, including social, transition care and emergency leave
Claimable. Deducts nothing
Approved breaks
Only breaks recorded as Appointment Break Unavailability records with a status of Approved are deducted. An unapproved or unrecorded break overstates delivered minutes
Targets
Both targets must be entered on the record before any compliance verdict is possible. Without them the check calculates every figure and reports Targets Not Entered
Maica - Care Minutes Check - Read Access
Read on the object and every field, plus the Care Minutes Check tab
Maica - Care Minutes Check - Create Access
Create, with the five user-entered fields and the calculated fields writable
Maica - Care Minutes Check - Edit Access
Edit, on the same field basis
Maica - Care Minutes Check - Delete Access
Delete on the object
Maica - RACS - Care Minutes Check
The RACS - Run Care Minutes Check custom permission and tab visibility. Object access comes from the sets above
Quarter Start Must Be A Quarter Start
Quarter Start must be populated and must be 1 January, 1 April, 1 July or 1 October
Assessed Result Requires Period End
A record carrying a Run Date must also carry an Assessment Period End
Total Care Minutes Target
The Department's casemix-adjusted total target for the facility
RN Care Minutes Target
The registered nurse target
Target Source Date
Assessed period
Assessment Period End, plus the Partial Quarter and Days Remaining formulas
Delivered
Delivered Direct Care Minutes, Delivered RN Minutes, Delivered EN Minutes, Delivered PCW Minutes
Denominator
1
At least one assigned resource recorded both an actual start and end
Their own times are summed, each worker counted separately
2
No resource recorded actuals, but the shift itself carries actual times
Names a resource
Deducted from that worker's minutes only
Names no resource
Treated as shift-wide and deducted once per worker on the shift
Start
The latest of the quarter start, the agreement start, and the Entry Date on the resident's accepted Entry event
End
The earliest of the assessment period end, the Discharge Date and the agreement End Date
SOC_NC
Excluded in full
TC_NC
Excluded in full
HOSP
Shift types
Only shifts typed Registered Nurse, Enrolled Nurse, Personal Care Worker or Assistant in Nursing are counted. A facility whose direct care shifts carry another type reports zero delivered minutes
Recorded times
Minutes come from actual times, on the worker or on the shift. A shift with neither contributes nothing and is counted under Unverified Past Shifts
Required Resources
The calculated fields must be writable, not read-only, for anyone who runs the check. The record page already prevents users typing into them, and the calculation writes them through the running user's own permissions, so a read-only grant causes the run to fail with an access error on the first field it writes.
Step 2 multiplies by the resources actually assigned, never by Required Resources. The two are independent: a provider may leave the required count at zero while still rostering staff, and a shift needing five people but filled by two delivered two people's worth of care. A shift with actual times but nobody assigned is therefore reported as unverified rather than as a shift that delivered nothing.
Leave dates on an Aged Care Event are end-exclusive. The end date is the resident's first day back, so an episode is end - start with no additional day. Service Agreement dates are inclusive and use end - start + 1. Reversing the two is the likeliest source of an incorrect denominator. An episode with no end date is open and runs to the end of the assessed period.
Run the check for a completed prior quarter and reconcile Occupied Bed Days and Excluded Leave Days against the Services Australia payment statement. That is the quickest way to confirm the leave and entry data behind the denominator is sound before anyone relies on an in-flight result.
The date the targets were taken from the portal
Occupied Bed Days, Excluded Leave Days
The shift's times stand in for each assigned worker
Excluded from day 29 of the episode, counted from that episode's own start
The projection multiplies scheduled duration by this field. A blank value contributes nothing, so an unpopulated field understates the projection
Quarterly Financial Report - occupancy
GPMS
Reportable output: a standard report to support manual entry
Quarterly Financial Report - leave utilisation
GPMS
Reportable output: a standard report to support manual entry
24/7 registered nurse coverage
GPMS
Calculation: a monthly coverage result to support manual entry
Annual Prudential Compliance Statement
ACFR Portal
Reportable output: a resident-level RAD/RAC ledger export
Serious incident reporting (SIRS)
ACQSC SIRS Portal
Incident management and notification preparation
Quality Indicator Program
GPMS
Out of scope: clinical data not held in Maica
Provider Operations Collection
GPMS
Out of scope: governance data not held in Maica
Offline beds
Local
Out of scope: facility management data
Serious incident reporting is covered in SIRS incident configuration.
Services Australia B2G
Monthly subsidy claims and RAD/RAC balance reporting
Direct API integration
GPMS
Quarterly Financial Report, quality indicators, 24/7 RN coverage, provider operations
Data extract or calculation for some components; no integration
ACFR Portal
Annual Prudential Compliance Statement
Custom data export for the auditor
ACQSC SIRS Portal
Serious incident reporting
Incident management and notification preparation; manual submission
Local / offline
Offline beds and similar facility data
Out of scope
Monthly subsidy claims
Services Australia B2G
Full integration: monthly claim finalisation through the Claims API
RAD/RAC balance reporting
Services Australia B2G
The accommodation balance data model is in place, but the automated monthly submission to Services Australia could not be confirmed in the current build. See for the detail and the confirmation that is needed.
Integration: monthly accommodation balance submission
Grants the ability to manage a Contact's Payment Methods and process Invoice payments. This includes handling payments via Credit Card or Direct Debit via Maica's integration with the Stripe gateway.
Maica - Xero Integration & Object Permissions
Grants users the ability to sync Invoices with the finance package Xero. This includes initiating and managing the synchronisation process to ensure accurate and up-to-date financial records between Salesforce and Xero.
Maica - Manage Service Booking & Object Permissions
Grants users access to the Manage Service Booking Quick Action on the Service Booking, including all related functionality (Increase Funding, Update, Extend, Approve, Reject).
Maica - Handle Webhook Notifications & Object Permissions
Grants Guest User access to perform record updates when a webhook is received by Maica.
Maica - Base & Object Permissions
Contains access to the base components necessary to access Maica.
Maica - Planner - Planner Access & Object Permissions
Grants users the ability to access the core Maica Planner.
Maica - Global - Manage Unavailability & Object Permissions
Grants users the ability to manage their Unavailability via the Maica Planner.
Maica - Planner - Manage Filter & Object Permissions
Grants users the ability to manage the filter(s) in the Maica Planner.
Maica - Planner - Manage Appointment - Manage Time & Objects
Grants users the ability to manage the Appointment Start Date/Time and End Date/Time of the Manage Appointment modal in the Maica Planner.
Maica - Planner - Manage Appointment/Shift - Quick Complete & Object Permissions
Grants users the ability to access the Quick Complete function in both the Manage Appointment and Manage Shift modals in the Maica Planner.
Maica - Manage Appointment/Shift - Manage Breaks & Objects
Grants users the ability to manage Appointment Breaks within the Manage Appointment modal in the Maica Planner, including creating, updating, and removing breaks.
Maica - Planner - Manage Appointment/Shift - Manage Expenses & Objects
Grants users the ability to manage Expenses in the Manage Appointment modal, including adding, updating, and removing entries for accurate cost tracking.
Maica - Planner - Manage Appointment/Shift - Manage Own Expenses & Objects
Allows users to manage their own Expenses in the Manage Appointment modal, including adding, updating, and removing entries.
Maica - Planner - Manage Appointment - Manage Travel & Object Permissions
Grants users the ability to manage Travel entries within the Manage Appointment modal.
Maica - Travel Management (Read-Only) & Object Permissions
Provides view access to Services, Timesheet Activity, and Expense Claim Resource when managing Travel.
Maica - Timesheet - Approve Timesheet & Object Permissions
Grants users the ability to review, verify, and approve submitted Timesheets.
Maica - Appointment - Manage Actual & Object Permissions
Provides the ability to manage Actual Dates on the Appointment.
Maica - Timesheet - Timesheet Management & Object Permissions
Grants access to the Timesheet Management functionality.
Maica - Timesheet - Submit Timesheet & Object Permissions
Allows users to submit Timesheets, including entering and reviewing records.
Maica - Global - Create Timesheet Entry & Object Permissions
Allows users to create Timesheet Entries from anywhere in Maica.
Maica - Planner - Appointment Optimiser & Object Permissions
Grants access to the Appointment Optimiser tool in the Planner.
Maica - Global - Manage Participant Notes & Object Permissions
Grants the ability to manage Participant Notes from anywhere in Maica.
Maica - Global - Create Participant Notes & Object Permissions
Allows users to create Participant Notes across the system.
Maica - Global - Create Appointment & Object Permissions
Grants the ability to create Appointments from anywhere in Maica.
Maica - Global - Manage Appointment & Object Permissions
Allows full access to manage existing Appointments from anywhere in Maica.
Maica - Planner - Manage Appointment - Check In/Out & Object Permissions
Grants access to Check In and Check Out functions in the Manage Appointment modal.
Maica - Global - Create Shift & Object Permissions
Grants the ability to create Shifts across the system.
Maica - Global - Manage Shift & Object Permissions
Grants full access to manage Shift records.
Maica - Planner - Manage Shift - Check In/Out & Object Permissions
Grants access to Check In and Check Out functions in the Manage Shift modal.
Maica - Planner - Manage Appointment - Manage Quantity & Object Permissions
Allows editing the Quantity field on Check Out only.
Maica - Planner - Manage Appointment - Enable Hyperlinks & Object Permissions
Enables hyperlinking to Participant, Resource, and Appointment records from the Manage Appointment modal.
Maica - Planner - Show Route & Object Permissions
Grants access to the Show Route button in the Planner.
Maica - Service Agreement - Manage Budget & Object Permissions
Provides access to the Manage Budget Quick Action on Service Agreements.
Maica - Service Agreement - Manage Services & Object Permissions
Provides access to the Manage Services Quick Action on Service Agreements.
Maica - Planner - View Appointment Cost & Object Permissions
Grants visibility into Appointment cost breakdowns in the Planner.
Maica - Create Participant Note Templates & Object Permissions
Allows creation of new Participant Note Templates.
Maica - Create Billable Participant Notes & Object Permissions
Controls who can mark Participant Notes as billable.
Maica - Change Own Participant Note Templates & Object Permissions
Allows users to update and manage their own Participant Note Templates.
Maica - Delete Own Participant Note Templates & Object Permissions
Allows users to delete their own Participant Note Templates.
Maica - Accept Own Resources & Object Permissions
Allows users to accept only themselves for an Appointment or Shift.
Maica - Accept Resources & Object Permissions
Allows users to accept any resources to an Appointment or Shift.
Maica - Manage Budget - Customise Rate & Object Permissions
Allows users to update the Rate field via the Manage Budget Quick Action.
Maica - Manage Budget - Customise Effective Date & Object Permissions
Allows users to update the Effective Date field via the Manage Budget Quick Action.
Maica - Manage Services - Allow $0 Rate Services & Object Permissions
Allows setting Rate to $0 via the Manage Services Quick Action.
Maica - Manage Services - Assign Custom Rate & Object Permissions
Allows setting a custom Rate via the Manage Services Quick Action.
Maica - View Identified Agreement Items & Object Permissions
Enables users to see linked Agreement Items when managing Appointments.
Maica - Access Maica Settings & Object Permissions
Grants non-System Admins access to the Maica Settings tab.
Maica - Global - View Appointment & Object Permissions
Grants view-only access to Appointments via the Manage Appointment modal.
Maica - Global - View Shift & Object Permissions
Grants view-only access to Shifts via the Manage Appointment modal.
Maica - Manage NDIS Claim & Object Permissions
Maica - Manage Invoices & Object Permissions
Maica - Manage Service Agreements & Object Permissions
Maica - Process Stripe Payments & Object Permissions
Maica - Manage Invoices & Object Permissions
Maica - Xero Integration & Object Permissions
Maica - Manage Invoices & Object Permissions
Maica - Manage Service Booking & Object Permissions
Maica - Handle Webhook Notifications & Object Permissions
Maica - Base & Object Permissions
Maica - Planner - Planner Access & Object Permissions
Maica - Global - Manage Unavailability & Object Permissions
Maica - Planner - Planner Access & Object Permissions
Maica - Planner - Manage Filter & Object Permissions
Maica - Planner - Planner Access & Object Permissions
Maica - Planner - Manage Appointment - Manage Time & Objects
Maica - Planner - Planner Access & Object Permissions Maica - Global - Manage Appointment & Object Permissions OR Maica - Global - Manage Shift & Object Permissions
Maica - Planner - Manage Appointment/Shift - Quick Complete & Object Permissions
Maica - Planner - Planner Access & Object Permissions
Maica - Global - Manage Appointment & Object Permissions OR Maica - Global - Manage Shift & Object Permissions
Maica - Planner - Manage Appointment - Check In/Out & Object Permissions OR Maica - Planner - Manage Shift - Check In/Out & Object Permissions
Maica - Manage Appointment/Shift - Manage Breaks & Objects
Maica - Planner - Planner Access & Object Permissions Maica - Global - Manage Appointment & Object Permissions OR Maica - Global - Manage Shift & Object Permissions
Maica - Planner - Manage Appointment/Shift - Manage Expenses & Objects
Maica - Planner - Planner Access & Object Permissions Maica - Global - Manage Appointment & Object Permissions OR Maica - Global - Manage Shift & Object Permissions
Maica - Planner - Manage Appointment/Shift - Manage Own Expenses & Objects
Maica - Planner - Planner Access & Object Permissions Maica - Global - Manage Appointment & Object Permissions OR Maica - Global - Manage Shift & Object Permissions
Maica - Planner - Manage Appointment - Manage Travel & Object Permissions
Maica - Planner - Planner Access & Object Permissions Maica - Planner - Manage Appointment/Shift - Quick Complete & Object Permissions Maica - Planner - Manage Appointment - Check In/Out & Object Permissions OR Maica - Planner - Manage Shift - Check In/Out & Object Permissions
Maica - Global - Manage Appointment & Object Permissions OR Maica - Global - Manage Shift & Object Permissions
Maica - Travel Management (Read-Only) & Object Permissions
Maica - Planner - Planner Access & Object Permissions Maica - Planner - Manage Appointment/Shift - Quick Complete & Object Permissions Maica - Planner - Manage Appointment - Check In/Out & Object Permissions OR Maica - Planner - Manage Shift - Check In/Out & Object Permissions
Maica - Global - Manage Appointment & Object Permissions OR Maica - Global - Manage Shift & Object Permissions
Maica - Timesheet - Approve Timesheet & Object Permissions
Maica - Appointment - Manage Actual & Object Permissions
Maica - Planner - Planner Access & Object Permissions
Maica - Global - Manage Appointment & Object Permissions OR Maica - Global - Manage Shift & Object Permissions
Maica - Timesheet - Timesheet Management & Object Permissions
Maica - Timesheet - Submit Timesheet & Object Permissions
Maica - Timesheet - Manage Timesheet & Object Permissions
Maica - Global - Create Timesheet Entry & Object Permissions
Maica - Planner - Appointment Optimiser & Object Permissions
Maica - Planner - Planner Access & Object Permissions Maica - Global - Manage Appointment & Object Permissions OR Maica - Global - Manage Shift & Object Permissions
Maica - Global - Manage Participant Notes & Object Permissions
Maica - Planner - Planner Access & Object Permissions Maica - Global - Manage Appointment & Object Permissions OR Maica - Global - Manage Shift & Object Permissions
Maica - Global - Create Participant Notes & Object Permissions
Maica - Global - Create Appointment & Object Permissions
Maica - Global - Manage Appointment & Object Permissions
Maica - Planner - Planner Access & Object Permissions
Maica - Planner - Manage Appointment - Check In/Out & Object Permissions
Maica - Planner - Planner Access & Object Permissions Maica - Global - Manage Appointment & Object Permissions
Maica - Global - Create Shift & Object Permissions
Maica - Global - Manage Shift & Object Permissions
Maica - Planner - Planner Access & Object Permissions
Maica - Planner - Manage Shift - Check In/Out & Object Permissions
Maica - Planner - Planner Access & Object Permissions Maica - Global - Manage Shift & Object Permissions
Maica - Planner - Manage Appointment - Manage Quantity & Object Permissions
Maica - Planner - Planner Access & Object Permissions
Maica - Global - Manage Appointment & Object Permissions OR Maica - Global - Manage Shift & Object Permissions
Maica - Planner - Manage Appointment - Enable Hyperlinks & Object Permissions
Maica - Planner - Planner Access & Object Permissions
Maica - Global - Manage Appointment & Object Permissions OR Maica - Global - Manage Shift & Object Permissions
Maica - Planner - Show Route & Object Permissions
Maica - Planner - Planner Access & Object Permissions
Maica - Service Agreement - Manage Budget & Object Permissions
Maica - Manage Service Agreements & Object Permissions
Maica - Service Agreement - Manage Services & Object Permissions
Maica - Manage Service Agreements & Object Permissions
Maica - Planner - View Appointment Cost & Object Permissions
Maica - Planner - Planner Access & Object Permissions Maica - Global - Manage Appointment & Object Permissions OR Maica - Global - Manage Shift & Object Permissions
Maica - Create Participant Note Templates & Object Permissions
Maica - Global - Manage Participant Notes & Object Permissions Maica - Planner - Planner Access & Object Permissions
Maica - Global - Manage Appointment & Object Permissions OR Maica - Global - Manage Shift & Object Permissions
Maica - Create Billable Participant Notes & Object Permissions
Maica - Global - Manage Participant Notes & Object Permissions Maica - Planner - Planner Access & Object Permissions
Maica - Global - Manage Appointment & Object Permissions OR Maica - Global - Manage Shift & Object Permissions
Maica - Change Own Participant Note Templates & Object Permissions
Maica - Global - Manage Participant Notes & Object Permissions Maica - Planner - Planner Access & Object Permissions
Maica - Global - Manage Appointment & Object Permissions OR Maica - Global - Manage Shift & Object Permissions
Maica - Delete Own Participant Note Templates & Object Permissions
Maica - Global - Manage Participant Notes & Object Permissions Maica - Planner - Planner Access & Object Permissions
Maica - Global - Manage Appointment & Object Permissions OR Maica - Global - Manage Shift & Object Permissions
Maica - Accept Own Resources & Object Permissions
Maica - Global - Manage Appointment & Object Permissions OR Maica - Global - Manage Shift & Object Permissions
Maica - Accept Resources & Object Permissions
Maica - Global - Manage Appointment & Object Permissions OR Maica - Global - Manage Shift & Object Permissions
Maica - Manage Budget - Customise Rate & Object Permissions
Maica - Manage Service Agreements & Object Permissions Maica - Service Agreement - Manage Budget & Object Permissions
Maica - Manage Budget - Customise Effective Date & Object Permissions
Maica - Manage Service Agreements & Object Permissions Maica - Service Agreement - Manage Budget & Object Permissions
Maica - Manage Services - Allow $0 Rate Services & Object Permissions
Maica - Manage Service Agreements & Object Permissions Maica - Service Agreement - Manage Budget & Object Permissions
Maica - Manage Services - Assign Custom Rate & Object Permissions
Maica - Manage Service Agreements & Object Permissions Maica - Service Agreement - Manage Budget & Object Permissions
Maica - View Identified Agreement Items & Object Permissions
Maica - Global - Manage Participant Notes & Object Permissions
Maica - Access Maica Settings & Object Permissions
Maica - Global - View Appointment & Object Permissions
Maica - Global - View Shift & Object Permissions
Learn about NDIS Claim Management Settings in Maica
These settings determine how Maica manages Claiming and its function throughout the application. You can use the Claim Management settings to manage how Payment Requests will be provided to the NDIS for claim processing. For reference:
API means Payment Requests will be automatically created and submitted to the NDIS for processing based on the Claim Frequency settings defined below and on the Invoice Entry component.
BPR File means Payment Requests will be automatically created but not submitted to the NDIS for processing. In order to submit the Payment Request, you need to generate the Bulk Payment Request (BPR) File via the Generate Bulk Payment Request section below. You can then upload this file via the myplace provider portal.
These Payment Request records will be created with Status = BLANK
Please refer to the below headings for more information on each setting:
The Claim Method Setting not only allows you to select the Method of Claiming, but also, the Claim Behaviour.
Firstly, for your Claim Method, you can select between API or BPR File (as explained above).
Then, you can select your Claim Behaviour from the following options:
With Maica, you can generate a Bulk Payment Request (BPR) File and upload it directly to the myplace Provider Portal.
The BPR file allows you to submit multiple payment requests in a single upload, saving time compared to submitting individual requests for each Service Booking or Participant.
Once the Bulk Payment Request file is generated in Maica:
Log in to the myplace Provider Portal.
Navigate to the Bulk Payment Request Upload section.
Upload the file generated by Maica.
Maica ensures the file is fully compliant with the NDIS template, so you can confidently upload it without any manual adjustments.
Before you generate and use a Bulk Payment Request (BPR) File, it's important to understand the BPR process and its steps. The process consists of three sequential steps that must be completed in the order shown. These steps are outlined in the expandable box below.
Now that you have an overview of the BPR process, continue to the section below to learn how to generate the Bulk Payment Request (BPR) File from Maica and Salesforce.
So, once you're in the Claim Management section of Maica Settings, generating the Bulk Payment Request (BPR) File is just a few clicks away.
Once done, apply the relevant filters:
Date Range
Note, the Date Range filter uses the Invoice Created Date. Maica will search for all Invoice records added to Salesforce within the Start Date and End Date specified.
Payment Request Status
Then, use the Exclude option to specify Providers or Invoices you do not want included in the BPR File. Any items listed here will be excluded from the CSV file generated. The Exclude Section is shown below.
Once your filters are applied:
Maica will display a count of all Payment Request records that match your criteria.
Review the total displayed to confirm it meets your expectations.
Click Generate CSV, and Maica will handle the rest!
During the file generation process, Maica performs a series of important updates. For more information, refer to the section below.
How Does Maica Determine What to Include in the BPR File? Maica determines which Payment Request records to include in the BPR file based on the following criteria:
Payment Request Status
Only records matching the value(s) selected in the Status Filter will be included.
Invoice Created Date
Records with an
For a more technical user:
For more details on applying these filters, see the section .
Once the Bulk Payment Request (BPR) File has been generated, Maica performs specific actions to complete this first step in the BPR Claiming process. These actions are outlined below:
When generating the BPR File, if the Status Filter included a value other than Blank, this indicates that a previous claim attempt has already been made—either through a BPR File or the API. In this case, a new Payment Request record is required to facilitate the new claim.
This is because PRODA requires each Payment Request to have a unique Claim Reference. A Payment Request can only be used once, so to attempt the claim again (a “reclaim”), Maica creates a new Payment Request record.
Here’s what happens:
The previously attempted Payment Request record is cloned, and a new Payment Request record is created.
The Status of the new record will be updated to Awaiting Approval, regardless of the previous status.
After the Bulk Payment Request (BPR) File is exported, Maica updates specific fields on the Payment Request records included in the file.
To ensure that the Payment Request reflects its inclusion in the BPR File, Maica updates the Status of the Payment Request record(s) to Awaiting Approval.
As part of the BPR File export, Maica ensures consistency across fields by setting the NDIS Reference field to match the Claim Reference Index field.
This ensures that the NDIS Reference field is populated consistently, whether you are claiming via the API or the BPR File.
In a reclaim scenario (e.g., an additional claiming attempt), the Quantity value populated in the BPR File may differ from the initial claiming attempt. The logic is summarised below:
When the following condition is met:
Payment Request.Claimed Amount > Invoice Line Item.Unit Price
Maica sets:
BPR Quantity = Claimed Amount ÷ Unit Price
BPR UnitPrice = Unit Price
Otherwise, Maica sets:
BPR Quantity = 1
BPR UnitPrice = Claimed Amount
Below shows a sample BPR File that has been generated.
Learn about Maica's Claiming Process Generation logic.
In Maica, the Support at Home Claim Submission process enables you to generate and submit claim batches to Services Australia, retrieve the status of your claims, and automatically update your invoices and budgets based on the response received.
The Support at Home Claim Submission process is designed to:
Generate a claim batch for submission to Services Australia via API.
Use a Quick Action to check the claim status after submission.
Learn about the logic behind the Engine powering Maica's Resource Optimiser and Smart Selection Filter
The below article provides a technical overview of the Optimisation Engine used within Maica. It explains how the engine evaluates Resources, applies constraints, calculates scores, and determines the most appropriate assignment during an optimisation run.
The Optimisation Engine is responsible for identifying and ranking suitable Resources for Appointments or Shifts. Its core objective is to produce the most appropriate allocation for each record, based on System Rules, Organisational Configurations, and Weighted Scoring Factors.
The engine:
Honours all mandatory requirements (hard constraints)
Evaluates preference-based rules (soft preferences)
Do Not Claim
Prevents a Payment Request from being submitted for claiming.
API, BPR
Claim via BPR File
Payment Requests are generated and included in a , which can be manually uploaded to the myplace provider portal for processing.
BPR
Claim via HCP File
Payment Requests are generated and included in an HCP (Home Care Package) File, suitable for claims processed under the HCP framework.
Blank
Failed
Incomplete
Cancelled
Rejected
StatusPayment RequestResubmittedNDIS Reference
Claim Reference Index ()
SupportsDeliveredFrom
Service Date on the Invoice Line Item
SupportsDeliveredTo
Service Date on the Invoice Line Item
SupportNumber
Support Item Number of the Product provided on the Invoice Line Item
ClaimReference
Claim Reference on the Invoice Line Item
Quantity
Quantity on the Invoice Line Item
See note below for additional details.
Hours
Since Quantity is entered, this field is not required.
UnitPrice
Unit Price on the Invoice Line Item
GSTCode
GST Code on the Invoice Line Item
GST as applicable to the item or service.
P1 = Tax Claimable (10%)
P2 = GST Free
P5 = GST out of Scope
AuthorisedBy
Legacy field, can be left blank
ParticipantApproved
Legacy field, can be left blank
InKindFundingProgram
Not Applicable
ClaimType
Claim Type on the Invoice Line Item
Claim type of the service provided
- “(Blank)” – Direct Service. You must leave field blank.
- CANC: Cancellation
- REPW: NDIA Required Report
- TRAN: Provider Travel
- NF2F: Non-Face-to Face Services
CancellationReason
Cancellation Reason on the Invoice Line Item
Reason of the cancellation type
- NSDH: No show due to health reasons
- NSDF: No show due to family issues
- NSDT: No show due to unavailability of transport
- NSDO: Other
Use Claim Settings
The default option that uses the Claim Frequency settings configured in Maica. Claims will be created and submitted based on these predefined rules. To learn more Claim Frequency, see below.
API
Claim Immediately
Payment Requests are created and submitted to the NDIS as soon as they are generated
SELECT Id FROM maica_cc__Payment_Request__c
WHERE DAY_ONLY(maica_cc__Invoice_Line_Item__r.maica_cc__Invoice__r.CreatedDate) >= :startDate
AND DAY_ONLY(maica_cc__Invoice_Line_Item__r.maica_cc__Invoice__r.CreatedDate) <= :endDate
AND maica_cc__Status__c IN :selectedStatusesStatus
Awaiting Approval (detail below)
Claimed Amount
Invoice Line Item.Claim Balance
Claim Date
RegistrationNumber
The Provider's registration number as entered in Maica Settings
NDISNumber
In addition, and before we dive into configuring your Claim Settings in Maica, please refer to the quick overview of Claim Behaviour between Claim Management Settings vs Invoice Entry Claim, as this can vary depending on where you are in Maica and hence is important to understand. To learn more, see the expandable dropdown below.
It is important that you do not toggle from BPR File to API with an open, or unfinished, claiming cycle. If you have generated Payment Request records with the Claim Method = BPR, these cannot be claimed via the API.
Please note, the myplace Provider Portal only supports up to 5000 rows in an uploaded BPR File, meaning, if your filter criteria returns a result set containing more than 5000 rows, Maica will present the error below and not allow you to complete the process. The following error will be displayed:
The results of the date range and status criteria selected exceeds 5000 records. Please adjust your criteria to refine the results.



API
TODAY
Participant's NDIS Number on the Contact
Update invoice and line item records based on the claim’s final status (e.g., paid).
Output Payment Request records in line with responses from Services Australia.
The process is linear and consists of the following stages:
Each stage of this process is covered in detail in this article.
Initiate a Support at Home Claim Batch by applying filter criteria to Invoice Line Item records. Records that meet the criteria will have Payment Request records generated and linked to a new Claim Batch.
The Generate Claim Batch quick action initiates the process, launching a modal for filter input.
The modal captures:
Start Date / End Date: Defines the date range for eligible Invoice Line Item records.
Service Provider: Multi-select lookup field.
Funding Type: Picklist field.
Include Failed Items – Checkbox allowing inclusion of invoice line items with a Claim Status of Submission Failed if they fall within the selected date range.
Service Provider ID: This selection determines which invoices are eligible for inclusion in the batch.
The modal provides flexibility to configure submission parameters for targeted claim batch generation.
When generating a Claim Batch for Support at Home, claims are created under a specific Service Provider ID. This ensures invoices are grouped and submitted in the correct provider context.
During the Generate Claim process, you must select a Service Provider ID.
The available Service Provider IDs are populated from those synced in Support at Home Settings.
Only one Service Provider ID can be selected per Claim Batch.
If no Service Provider IDs are available, you must first run Sync Service Providers in Support at Home Settings.
When a Service Provider ID is selected:
Only invoices where the related Participant (Contact) is associated with the same Service Provider ID are retrieved.
Invoices associated with Participants under other Service Provider IDs are excluded.
Only Invoice Line Item records where the related Invoice Claim Status is set to Open, maica__Invoice_Line_Item__c.maica__Exclude__c = TRUE, or (if the Include Failed Items checkbox is selected) Submission Failed, will be considered for inclusion in the batch.
Start Date & End Date
maica_cc__Service_Date__c
The service date must fall within the selected range
Service Provider
maica_cc__Invoice__r.maica_cc__Service_Provider__c
The table below shows how fields from the Invoice Line Item are mapped into the newly created Payment Request:
Id
maica_cc__Invoice_Line_Item__c
maica__Amount__c
maica_cc__Claimed_Amount__c
Invoice Line Item records that meet the provided criteria are retrieved.
Retrieved Invoice Line Item records have a Payment Request record generated and linked to the Claim Batch via a Claim Batch Lookup.
This completes the initial generation of the claim batch.
The Generate Claim Batch quick action can be launched again at any time prior to submission of the claim to refresh or add additional Items to the existing Claim Batch
Upload the generated Claim Batch Invoice and Invoice Line Item records to Services Australia for processing.
User clicks the Submit Claim button in the Quick Action
A confirmation message is to be displayed to the user
Once done, the modal will update and alert the user that the Claim has been submitted.
Using the Invoices API, Maica:
Groups Invoice Line Item records by their parent Invoice.
For each parent Invoice:
Posts a new Invoice record using the API POST method (mapping in the following Google Sheet)
Upon successful creation, receives a Services Australia Invoice ID.
Update the Invoice record in Maica with the following:
Services Australia Invoice ID = maica_cc__Invoice__c.maica_cc__Aged_Care_Invoice_ID__c
Invoice Closure Date (maica_cc__Invoice__c.maica_cc__Invoice_Closure_Date__c) = YESTERDAY
Posts all related Invoice Line Items (child records) using the retrieved Services Australia Invoice ID as the parent reference.
Upon successful creation, receives a Services Australia Invoice Item ID.
Services Australia Invoice Item ID =maica_cc__Invoice_Line_Item__c.maica_cc__Aged_Care_Invoice_Item_ID__c
Invoice Object
Aged Care Invoice ID
Set to Services Australia Invoice ID
maica_cc__Aged_Care_Invoice_ID__c
Invoice Closure Date
Set to YESTERDAY
Invoice Line Item Object
Aged Care Invoice Item ID
Set to Services Australia Invoice Item ID
maica_cc__Aged_Care_Invoice_Item_ID__c
The data model in Services Australia mirrors our own:
Invoice (parent record) directly maps to the local Invoice object.
Invoice Item (child record) directly maps to the local Invoice Line Item object.
Invoice records are successfully submitted to Services Australia and marked as submitted in Maica.
Related Invoice Line Items are also posted and linked to their parent Invoices using the returned IDs.
If any submission errors are returned, they are captured in Claim Submission Error Details for troubleshooting.
All subsequent claim processing steps reference the stored Original Claim Date for accurate reporting.
Initiate the submission of the Claim Record associated with the batch to Services Australia.
No direct user interaction. This step is automatically initiated as part of the Submit Claim quick action previously selected.
Using the Claim API, the system:
Posts a Claim record populated with mapped values from the Claim Batch record / Maica Settings
Upon successful creation, receives a Services Australia Claim ID.
Uploads an array of associated Invoice IDs linked to the Claim, matching them to the submitted Invoices in Services Australia's system (mapping below)
& also:
Updates all related Payment Requests to reflect the outcome of the submission.
serviceProviderId
Taken from Maica Settings
invoices[].invoiceId
maica_cc__Invoice__c.maica_cc__Aged_Care_Invoice_ID__c
claimId
maica_cc__Claim_Batch__c.maica_cc__Aged_Care_Claim_ID__c
status
maica_cc__Claim_Batch__c.maica_cc__Claim_Status__c
"CLAIMED"
A Claim Record is created and linked to the Invoices in Services Australia.
The returned Claim ID is stored for visibility and future updates.
A financial summary for a Claim Batch is displayed
As part of the Claim submission process, Maica updates all related Payment Requests to reflect the outcome of the submission.
1. Set Claim Date
When Payment Request records are submitted as part of a Claim Batch:
Always populate the Claim Date field (maica__Claim_Date__c) with the date (day only) of the submission event
2. Manage Status Updates
Payment Request → Status (maica__Status__c) as follows:
If successfully submitted for claiming
Set Status = Awaiting Approval
API Value = 7
If submission fails or is rejected (validation errors, Service Australia logic failure, etc.)
Status = Failed
API Value = Failed
This ensures users can immediately distinguish between successfully submitted and failed requests directly from the Claim Batch record.
Once the Claim is successfully submitted and its status is returned as Claimed, a new quick action called Check Claim Status becomes available on the Claim Batch record.
Check the latest status of the submitted claim in Services Australia to determine if it has progressed to a final outcome such as ‘Paid’.
User selects the Check Claim Status quick action available on the Claim Batch record.
Using the Claim API, the system:
Retrieves the current status of the submitted Claim from Services Australia.
If the claim status has changed, updates the local Claim Batch and related records accordingly.
Returns additional attributes where applicable, such as:
Updated Claim Status (e.g., BeingCalculated, PendingApproval, Approved)
Claim Paid Date
status
maica_cc__Claim_Status__c
- BeingCalculated = The claim is being calculated
- PendingApproval = The claim is pending approval
- Cancelled = The claim has been cancelled/rejected
- Approved = The claim has been approved for payment
- Completed = The claim is paid
paymentDate
maica_cc__Claim_Paid_Date__c
The latest Claim Status and Claim Paid Date are updated on the Claim Batch record.
Triggers follow-up steps based on the claim’s updated status.
Capture final payment information from Services Australia after a claim has been marked as either Completed or Successful.
Once the Claim Batch status is updated to Paid, Maica automatically performs the following actions:
Initiates a callout to the Payment Statement API.
Retrieves relevant financial data from Services Australia, including:
Payment Amount Summaries
Claim Summaries
Maps and updates the retrieved values to the appropriate fields on the Claim Batch record.
Payment Statement API → Claim Batch Mapping
claimTotal
maica_cc__Claim_Total__c
totalPaid
maica_cc__Paid_Total__c
compensationReduction
The Claim Batch record is enriched with final payment figures.
Ensures all claim metrics and financial data are accurately captured and recorded.
Update the status of individual Invoice records associated with the Claim Batch.
Using the Invoices API, the system:
Performs a callout using the Claim ID as the key to query all related Invoice records.
Retrieves the latest status information for each Invoice:
Based on a match of maica_cc__Invoice__c.maica_cc__Aged_Care_Invoice_ID__c
Updates the local Invoice records accordingly with any claim status changes returned.
status
maica_cc__Claim_Status__c
Invoice records associated with the Claim Batch reflect their final processed status from Services Australia.
Retrieve detailed payment information for each Invoice Line Item linked to the Claim Batch (via Payment Request records).
For each Invoice Line Item associated with the Claim Batch, the system performs a callout to the Payment Item Reporting API.
It retrieves specific payment data for the corresponding Payment Item in Services Australia’s system.
This is done via the Invoice → Invoice Line Item relationship using the field maica_cc__Invoice_Line_Item__c.maica_cc__Aged_Care_Invoice_Item_ID__c.
All Invoice records related to the Claim Batch are retrieved.
The system then iterates through each related Invoice Line Item and matches on ItemId = maica_cc__Invoice_Line_Item__c.maica_cc__Aged_Care_Invoice_Item_ID__c.
Retrieved data is used to update Payment Request records in Maica.
The Aged Care Reference (maica_cc__Aged_Care_Reference__c) is now included in the Payment Item mapping for clearer traceability between claim items and their corresponding Services Australia reference.
Relevant claim and contribution fields are mapped and stored as shown below.
itemId
maica_cc__Invoice_Line_Item__r.maica_cc__Aged_Care_Invoice_Item_ID__c
claimSubmissionDate
maica_cc__Claim_Date__c
Each Invoice Line Item is updated with precise payment data reflecting actual amounts paid.
The inclusion of the Aged Care Reference field ensures each Payment Request is traceable to its corresponding record in Services Australia’s system.
Enables granular financial tracking at the individual service delivery level.
As part of the finalisation of the claims process, this step ensures your care recipients’ budget data is refreshed and aligned with the completed and paid claim.
Triggered automatically once Step 7 completes successfully.
The system:
Identifies all unique care recipient IDs from the claim items in the batch.
For each unique care recipient ID:
Executes a call to the Budgets API endpoint.
Retrieves current budgets and creates or updates related Plan Budget and Entitlement records.
Only budgets where the End Date is within 60 days of today are included.
You can now dispatch invoices for any remaining client contribution amounts that were not covered in the submitted claim.
To watch a full Video Demonstration of this process, click .
To download the full schema, with all mappings and validations for this process, .
Applies your configured weightings and criteria
Selects the highest-scoring valid Resource(s)
The Optimisation Engine evaluates a wide set of data from across Maica. These inputs feed into candidate filtering, scoring, and selection. Please refer to the table below to see each Input, broken down by Category.
Participant
Assigned and requested Services
Required Skills
Participant Preferences (gender, language, cultural requirements, etc.)
Travel and Mobility rules
Resource
Availability (daily and weekly)
Skills and Qualifications
Attributes (gender, language, certifications, custom attributes)
Current Workload
Appointment / Shift
In addition to the inputs above, the Optimisation Engine processes also manages constraints in the following order:
These eliminate a Resource before scoring begins.
Examples:
Resource Unavailable for required time
Missing mandatory Skill or Certification
Exceeds Weekly Hour Limit or Daily Capacity
Travel not feasible (unless Travel weighting = 0%)
Participant → Resource Exclusions
Roster Mode incompatibility (e.g., Shift Resource in Appointment Mode)
Once hard constraints are satisfied, the engine evaluates soft preferences and weighted factors.
Examples:
Preferred Gender or Language
Travel Distance
Balanced Workload Distribution
Non-required Skills
Custom Attribute Matches
For each Resource who passes all hard constraints, the engine calculates an Overall Matching Score. The score is produced from the weighted components configured under: Settings → Matching Score Importance Level.
The five categories are:
Skills
Compares required Skills vs. the Resource's Skills. Occurrence-based; weighted only if Skills > 0%.
Availability
Validates whether the Resource has enough available hours on the specific day after subtracting existing usage.
Workload
A Resource with the highest Overall Matching Score is considered the preferred match.
The Optimisation Engine operates in five main phases, each is described in the section below.
The engine prepares data before scoring begins:
Normalises time zones and calendars
Loads Appointment details (location, duration, Skills, required ratio)
Identifies all Resources in scope based on the Resource Pool
Filters out Resources who fail any hard constraint (availability, missing Skills, certification expiry, exclusion rules, etc.)
Applies Roster Mode restrictions (Appointment Mode vs Shift Mode)
The output is a Candidate Pool for each Appointment.
Each candidate is evaluated using:
Your configured Matching Score Importance Level
Ranking Criteria (rules the admin has added that impact scoring)
Attribute and preference fulfilment
Penalty adjustments (e.g., travel, workload imbalances)
Each candidate receives:
A per-category component score
A single Overall Matching Score (%)
For multi-resource or multi-appointment situations, Maica evaluates all scored options, then assembles the most appropriate schedule by:
Selecting the highest-scoring valid Resource(s)
Applying tie-breakers (in order):
Highest score
Best workload balance
Better continuity
Lower travel distance (if Travel > 0%)
Assignments failing any hard constraint during assembly are discarded.
Before results are returned, Maica re-validates:
Roster Mode
Weekly limits
Daily capacity
Service Skills
Certifications and expiry
Conflict rules
Ratio (number of Resources required)
The engine will not propose or confirm an invalid assignment.
For each Appointment or Shift, the engine produces:
Highest-scoring Resource(s)
Matching Scores for each Resource
Matched and unmatched criteria
Reasons for rejection (in Appointment Insights)
Alternate Resources (lower-ranked but still valid)
If a Resource fails any hard constraint, they are removed from consideration.
Soft preferences never override hard constraints. They influence scoring, not eligibility.
Each category contributes to the final score according to your weighting. All five values must total 100%.
Location and access constraints
Multi-Resource or Ratio requirements
Contracted hours thresholds
Unavailability records
Travel requirements or limitations
Roster Mode
Start/End time
Duration
Service Skills
Additional Service Properties
Location (address, centre, online)
Required number of Resources (ratio)
Compliance
Mandatory Certifications
Participant/Worker Exclusion Lists
System
Weighting values in Settings → Matching Score Importance Level
Inclusion/exclusion rules in the Resource Pool
Ranking rules set via Ranking Criteria
Evaluates whether assigning this Appointment keeps the Resource within their weekly limits.
Attributes
Checks how many required attributes/Participant preferences (gender, language, etc.) the Resource satisfies.
Travel
Scores proximity relative to the closest candidate.
Invoice Claim Status (maica_cc__Invoice__c.maica_cc__Claim_Status__c) = SUBMITTED
Original Claim Date → maica_cc__Invoice__c.maica_cc__Original_Claim_Date__c = Date Submitted
Claim Submission Error Details → populated if the submission fails or partially
Claim StatusOnce an Invoice moves to Submitted, Held, Deleted, Claimed, or Completed, its financial structure is locked.
Invoice totals (line item count and total amount) cannot be changed in locked statuses.
Non-financial updates to existing Invoice Line Items (such as Descriptions) remain permitted.
Why this matters:
This ensures financial accuracy and claim integrity by preventing submitted or processed Invoices from being altered, while still allowing correction and rework when a submission fails. It reduces the risk of accidental claim discrepancies and supports a controlled, auditable claiming lifecycle.
Backward status changes are no longer permitted.
Cancelled and Completed are now treated as final states and cannot be changed once set.
Why this matters: This protects submitted and processed claims from accidental modification or re-claiming, improving data integrity and compliance with the Aged Care claiming process. To see the Validation Rule detail and logic, refer to the expandable below.
Claim Status cannot be moved backwards. Cancelled and Completed are final states and cannot be changed.
Must match the provider(s) selected in the modal
Funding Type
maica_cc__Invoice__r.maica_cc__Funding_Type__c
Must match the funding type selected in the modal
Include Failed Items
n/a
When selected, includes records where the related claim has Claim Status = Submission Failed within the defined service dates.
maica_cc__Invoice_Closure_Date__c
Invoice Claim Status
Set to SUBMITTED
maica_cc__Claim_Status__c
Original Claim Date
Set to date/time of submission
maica_cc__Original_Claim_Date__c
Claim Submission Error Details
Set if Services Australia returns error details
maica_cc__Claim_Submission_Error_Details__c
Updates all associated Invoices' maica_cc__Claim_Status__c
Only populated when maica_cc__Claim_Status__c = Approved
maica_cc__Care_Recipient_Contribution_Amount__c
careRecipientIndividualContribution
maica_cc__Compensation_Reduction_Amount__c
heldoverPreviousPeriod
maica_cc__Previous_Held_Over_Payment_Amount__c
outstandingHeldover
maica_cc__Current_Held_Over_Payment_Amount__c
claimApprovedDate
N/A
paymentDate
maica_cc__Paid_Date__c
compensationReduction
maica_cc__Compensation_Reduction_Amount__c
individualContributionAmount
maica_cc__Care_Recipient_Contribution_Amount__c
paymentDetermination
maica_cc__Paid_Amount__c
(status)
maica_cc__Status__c
Set to PAID
agedCareReference
maica_cc__Aged_Care_Reference__c
Services Australia’s reference ID for cross-system validation.
Rule Name
Claim_Status_Management
Description
Prevents backward changes to the Claim Status on an Aged Care Claim Batch.
The Claim Status may only progress forward through its defined lifecycle. Once the status is set to Cancelled or Completed, it is treated as a final state and cannot be changed.
This rule helps protect submitted and processed claims from being modified or re-claimed after key workflow stages have been reached.


Help Text
The lump sum account model is the financial ledger that Maica uses to track a resident's refundable accommodation deposit. It is made up of two custom objects: the Lump Sum Account (maica_cc__Lump_Sum_Account__c), which holds the running balance and lifecycle status, and the Lump Sum Transaction (maica_cc__Lump_Sum_Transaction__c), which records every individual movement against that balance. Together they give each resident a complete, auditable history of their deposit from first payment through to refund.
This article describes both objects, their relationship, and the fields that drive them. It is written for administrators and power users who configure, report on, or support the residential aged care solution.
A resident who pays for their accommodation as a lump sum (a Refundable Accommodation Deposit, a Refundable Accommodation Contribution, or a legacy Accommodation Bond) has exactly one Lump Sum Account, linked to their Service Agreement. Every payment, retention deduction, draw-down, and refund against that deposit is then written as a child Lump Sum Transaction.
Not every resident has a Lump Sum Account. Residents who pay by Daily Accommodation Payment only, and fully supported residents, have no lump sum obligation and therefore no account.
The relationship types are deliberate and protect the financial audit trail.
The Lump Sum Account represents the financial account for a resident's RAD, RAC, or legacy Accommodation Bond. Field history tracking is enabled on Current Balance and Status so changes to those two values are retained.
The account moves through a defined lifecycle, recorded on Status.
These refund fields are populated by the system, not through the RAD/RAC tab, and they fill in across two stages. At departure the account stays Active while the Departure Processor records the departure snapshot: the Refund Amount, Refund Due Date, and BIR at Departure. The remaining fields, Refund Date, MPIR at Refund Due, and Total Interest Paid, are set when the refund payment is recorded, and that is the point at which the status moves to Refunded.
Each Lump Sum Transaction records a single financial movement against an account. The transaction records are themselves the audit trail, so field history tracking is not enabled. Their sharing is controlled by the parent account.
Three fields work together to keep the ledger readable and reconcilable:
Amount is the signed ledger entry. Positive values are inflows (money received by the provider); negative values are outflows (retention deductions, draw-downs, and refunds). Balance mathematics always use this signed value.
Balance After Transaction captures the account balance immediately after the movement was applied. This lets you reconstruct the balance at any point in time without replaying the whole history.
Deduction Amount is a formula field, ABS(Amount), that always returns a positive number. The cumulative roll-ups on the account use this field so the totals read as positive.
The Transaction Type picklist classifies each movement and, by convention, signals whether the Amount is an inflow or an outflow.
The Source field draws a clear line between the three things that can write to the ledger, which matters for both audit and the way the transaction history is displayed. It is a restricted picklist with exactly these values.
Three paths write to the ledger, and they never overlap on the same movement type.
The billing engine creates Retention Deduction and automatic Draw-Down transactions as part of the nightly run. These carry a Source of System (Billing Engine), link back to the Invoice Line Item that triggered them, and (for draw-downs) link to the settling Payment. The mechanics are covered in .
The Departure Processor creates the closure entries when a resident departs, carrying a Source of System (Departure Processor). These include the final pro-rata retention, which deliberately bypasses the monthly retention cadence because a departing resident has no future run to pick it up.
Users create Initial Payment, Additional Payment, user Draw-Down, and Refund transactions through the RAD/RAC tab. Users cannot create Retention Deduction transactions, and automatic draw-downs are never initiated by hand.
In all cases the write is atomic: the new transaction and the updated account balance are committed together, so the ledger and the Current Balance can never drift apart.
Lump Sum Account
The standing account. Holds the current balance, payment method, retention dates, and refund details. One per Service Agreement.
A user, through the RAD/RAC tab of the Manage RACS Agreement component.
Lump Sum Transaction
A single balance movement. Holds the amount, date, type, and the balance after the movement. Many per account.
The billing engine (retention deductions, automatic draw-downs), the Departure Processor (departure closure entries), or a user (payments, draw-downs, refunds).
Lump Sum Account to Service Agreement
Lookup (Restrict Delete)
A Lookup rather than Master-Detail. If the parent Service Agreement were ever deleted, a Master-Detail would cascade-delete the entire deposit ledger. The Lookup preserves the records.
Lump Sum Transaction to Lump Sum Account
Master-Detail
Lump Sum Account ID (Name)
Auto Number
The unique, system-generated identifier for the account, in the form LSA-{number}.
System-generated identifier for this lump sum account.
Agreed Room Price (maica_cc__Agreed_Room_Price__c)
Currency
The agreed accommodation price, copied from the Service Agreement for convenience. Used in the DAP portion calculation for Combination residents.
The accommodation price agreed with the resident. Mirrors the Agreed Room Price on the service agreement.
Retention Start Date (maica_cc__Retention_Start_Date__c)
Date
The date from which retention deductions may begin, usually the same as the Initial Payment Date. Used with the retention duration on Setting to derive the expiry date.
Date retention deductions can begin. Usually the same as the initial payment date.
Awaiting Payment
The account has been set up but no lump sum has been received yet. This is the default on creation.
Active
An initial payment has been recorded and the account is live.
Refunded
Refund Amount (maica_cc__Refund_Amount__c)
Currency, read only
The amount refunded on permanent departure, equal to the balance at departure less any permitted deductions.
Amount refunded on departure. Populated by the Departure Processor when the agreement is closed.
Lump Sum Transaction ID (Name)
Auto Number
The unique, system-generated identifier, in the form LST-{number}.
System-generated identifier for this transaction.
Initial Payment
Inflow (positive)
User
The first lump sum payment. Sets the account to Active and seeds the retention dates.
System (Billing Engine)
Created automatically by the billing engine during the nightly run: retention deductions and automatic RAD draw-downs.
User (Managed Agreement)
Created by a user through the RAD/RAC tab: initial and additional payments, user draw-downs, and partial refunds.
System (Departure Processor)
Because the Lump Sum Account to Service Agreement relationship restricts delete, a Service Agreement that carries a lump sum account cannot be deleted while that account exists. This is intentional and protects the deposit history.
The exact API names of the cumulative roll-up fields are mid-transition in the codebase (a legacy currency field is being replaced by a roll-up summary). Confirm the field names against your installed package version before building reports or integrations against them.
The two system values are worth separating when reconciling. Filtering to System (Departure Processor) isolates everything the departure closure did to the deposit, which is the set of movements an auditor or a family member is most likely to query.
Transactions have no meaning outside their account. The account can only be deleted before any financial activity exists, in which case its transactions cascade-delete with it.
Service Agreement (maica_cc__Service_Agreement__c)
Lookup
The Service Agreement this account belongs to. One account per agreement where a lump sum applies.
The service agreement this RAD, RAC, or Bond account belongs to.
Deposit Type (maica_cc__Deposit_Type__c)
Picklist
Whether the account holds a Refundable Accommodation Deposit, a Refundable Accommodation Contribution, or a legacy Accommodation Bond. Determines which regulatory framework and refund obligations apply on departure.
Whether this account holds a RAD, RAC, or legacy Accommodation Bond.
Payment Method (maica_cc__Payment_Method__c)
Picklist
How the resident is paying for their accommodation: Full Lump Sum, Combination, DAP Only, or Undecided. Drives whether a daily DAP portion applies.
How the resident is paying their accommodation costs.
DAP Agreement Item (maica_cc__DAP_Agreement_Item__c)
Lookup
A direct link to the resident's Daily Accommodation Payment fee item, used to recalculate the DAP rate when the balance changes. Populated for Combination residents only.
The DAP Agreement Item to update when this account's balance changes. Required for Combination payment method only.
Current Balance (maica_cc__Current_Balance__c)
Currency, read only
The lump sum currently held by the provider. Updated automatically each time a transaction is processed. On permanent departure, the remaining balance must be refunded within legislated timeframes.
Current lump sum balance held by the provider. Updated automatically by each transaction.
Initial Payment Amount (maica_cc__Initial_Payment_Amount__c)
Currency
The first lump sum payment received. For Full Lump Sum this equals the lump sum equivalent of the room price; for Combination it is the partial component only.
The initial lump sum received. For Combination arrangements, this is the partial lump sum component only.
Initial Payment Date (maica_cc__Initial_Payment_Date__c)
Date
The date the first lump sum payment was received. Starts the retention deduction period. A resident has up to six months from entry to pay their lump sum, paying a DAP in the meantime.
Date the initial lump sum was received. Starts the retention deduction period.
Retention Expiry Date (maica_cc__Retention_Expiry_Date__c)
Date, read only
The date after which no further retention may be deducted. Calculated as the Retention Start Date plus the legislated retention duration (currently five years).
Retention cannot be deducted after this date. Calculated from retention start date plus the legislated duration.
DAP Portion (maica_cc__DAP_Portion__c)
Currency, read only
For Combination residents only: the daily DAP amount payable on the part of the room price not covered by the lump sum. Recalculated whenever the balance changes.
Daily DAP amount for the portion of the room price not covered by the lump sum. Combination payment method only. Recalculated when the balance changes.
Cumulative Retention Amount (maica_cc__Cumulative_Retention__c)
Roll-Up Summary, read only
The total retention deducted from the deposit, summed automatically from child Retention Deduction transactions as positive values. Used for audit and reconciliation.
Total retention deducted from this lump sum. Auto-calculated from related lump sum transactions.
Cumulative Draw-Down Amount (maica_cc__Cumulative_Draw_Down__c)
Roll-Up Summary, read only
The total drawn down from the deposit, summed automatically from child Draw-Down transactions as positive values. Used for audit and DAP recalculation.
Total amount drawn down from this lump sum. Auto-calculated from related lump sum transactions.
The balance has been returned to the resident and the account is closed.
Transferred
The deposit has been transferred (for example, on a move to another service) and the account is closed.
Refund Due Date (maica_cc__Refund_Due_Date__c)
Date
The date by which the refund must legally be paid. Calculated at departure: the departure date itself where 14 or more days' notice was given, otherwise 14 days after departure; for a death departure, set to departure plus 14 days until probate is sighted.
Date by which the refund must be paid. Calculated by the system at departure. For death departures, update this field when probate is sighted.
Refund Date (maica_cc__Refund_Date__c)
Date
The date the balance was actually refunded. Entered by the user when the refund is made.
Date the refund was paid to the resident. Update this field when the refund is made.
BIR at Departure (maica_cc__BIR_At_Departure__c)
Percent, read only
The Base Interest Rate current at departure, snapshotted from Setting. Used to calculate refund interest.
The BIR rate at the time of departure. Set automatically by the system. Used to calculate interest on the refund.
MPIR at Refund Due Date (maica_cc__MPIR_At_Refund_Due__c)
Percent, read only
The Maximum Permissible Interest Rate current when the refund was recorded, snapshotted from Setting. Used to calculate any overdue interest.
The MPIR rate at the time the refund was recorded. Set automatically by the system. Used to calculate overdue interest.
Total Interest Paid (maica_cc__Total_Interest_Paid__c)
Currency, read only
The total refund interest paid on departure, combining base and overdue interest. Zero or blank where the refund was paid on time.
Total interest paid to the resident on refund of their lump sum. Calculated at the time the refund date is recorded.
Lump Sum Account (maica_cc__Lump_Sum_Account__c)
Master-Detail
The parent account this transaction belongs to.
The lump sum account this transaction applies to.
Transaction Type (maica_cc__Transaction_Type__c)
Picklist
The kind of financial movement (see the table below).
The type of financial movement. Positive values are inflows; negative values are outflows or refunds.
Amount (maica_cc__Amount__c)
Currency
The signed value of the movement. Positive for inflows, negative for outflows.
Transaction amount. Positive for inflows, negative for outflows.
Transaction Date (maica_cc__Transaction_Date__c)
Date
The date the movement occurred. For a retention deduction or an automatic draw-down this is the end of the billing period it settles, not the date the run happened.
Date this transaction occurred.
Balance After Transaction (maica_cc__Balance_After__c)
Currency, read only
The account balance immediately after this movement. Supports audit and balance reconstruction.
Account balance immediately after this transaction. Used for audit and balance reconstruction.
Deduction Amount (maica_cc__Deduction_Amount__c)
Formula (Currency)
The always-positive version of Amount, used by the cumulative totals on the parent account.
Always-positive version of the transaction amount, used by cumulative total fields on the parent lump sum account.
Source (maica_cc__Source__c)
Picklist
Whether the billing engine, the Departure Processor, or a user created this transaction.
Whether this transaction was created by the billing engine or entered manually.
Description (maica_cc__Description__c)
Text Area
Notes for the transaction. System transactions carry the calculation or draw-down breakdown; users may add their own notes.
Notes or description for this transaction. System transactions include the calculation or drawdown breakdown.
DAP Rate After Transaction (maica_cc__DAP_Rate_After__c)
Currency, read only
For Combination residents: the recalculated DAP rate after this movement changed the balance. Recorded for audit.
The recalculated DAP rate after this transaction. Combination payment method only. Populated by the billing engine.
Invoice Line Item (maica_cc__Invoice_Line_Item__c)
Lookup
The invoice line item that triggered this transaction. Populated for system retention deductions and automatic draw-downs only.
The invoice line item that triggered this transaction. Populated for system-generated retention deductions and automatic RAD drawdowns.
Payment (maica_cc__Payment__c)
Lookup, read only
For automatic draw-downs: the Payment record raised against the invoice to settle the drawn amount. Gives a direct audit link between the balance movement and the invoice settlement.
The payment record that settled the invoice for this drawdown. Populated by the billing engine for automatic RAD drawdown transactions only.
Additional Payment
Inflow (positive)
User
A later top-up payment, up to the agreed room price.
Retention Deduction
Outflow (negative)
Billing engine
A legislated retention amount deducted from the deposit. See .
Draw-Down
Outflow (negative)
Billing engine or user
Funds drawn from the deposit to settle a fee (automatic) or returned for another reason (user).
DAP Adjustment
Either
System
An adjustment relating to the DAP portion.
Refund
Outflow (negative)
User or Departure Processor
A partial refund while in care, or the final exit refund.
Transfer In
Inflow (positive)
System
A deposit transferred into this account.
Transfer Out
Outflow (negative)
System
A deposit transferred out of this account.
Adjustment
Either
User
A manual correction to the ledger.
Interest
Inflow (positive)
System
Refund interest applied to the account.
Created automatically by the Departure Processor during departure financial closure: the final pro-rata retention and other departure entries.
Learn about Stripe Integration Settings in Maica
The Stripe tab in the Integration Management screen allows Maica administrators to configure the Stripe payment gateway.
Please see the breakdown below for further information on each section:
To connect your Stripe account with Maica, you’ll need to enter three API credentials:
Stripe Publishable Key
Stripe Secret Key
Stripe Webhook Secret
These credentials can be generated within your Stripe account and must be pasted into the fields provided in Maica.
In order for the Integration to function properly, a Site must be selected from the list.
Use the search field to locate and select the correct Site record.
Learn about Claim Management Settings in Maica
These settings determine how Maica manages all Claims and their function throughout the application.
To dive deeper into either NDIS or Aged Care Claim Settings, please visit their specific pages linked below: