---
title: ShiftCare API Integration on Truto
slug: shiftcare
category: HRIS
canonical: "https://truto.one/integrations/detail/shiftcare/"
---

# ShiftCare API Integration on Truto



**Category:** HRIS  
**Status:** Beta

## MCP-ready AI tools

Truto exposes 97 tools for ShiftCare that AI agents can call directly.

- **list_all_shift_care_account_locations** — List ShiftCare account locations for the current account with optional filtering and sorting. Returns: id, name, address, created_at, updated_at. Access is gated by a feature flag. Max 50 per page.
- **list_all_shift_care_areas** — List ShiftCare areas for the current account with optional filtering by ID or name and sorting. Returns: id, name, created_at, updated_at. Max 50 items per page.
- **create_a_shift_care_client_note** — Create a client note attached to a ShiftCare client. Returns: id, category, subject, message, requested_date, private, created_at, updated_at, attachments. Required: client_id. If requested_date is omitted it defaults to the current UTC date, which may differ from the account's local date.
- **update_a_shift_care_client_note_by_id** — Update an existing client note for a ShiftCare client. Returns: id, category, subject, message, requested_date, private, created_at, updated_at, attachments. Required: client_id, id. The private flag must match the note's type — a mismatch returns 404.
- **list_all_shift_care_complaints** — List ShiftCare complaints with optional filtering by status, risk level, category, assignee, client, date ranges, and free-text search. Returns: id, reference_number, name, description, status, risk_level, category, client_id, assignee_id, assignee_name, creator_id, creator_name, received_date, due_date, closure_date, is_private, safety_concern, risk_assessment_notes, outcome_summary,…
- **create_a_shift_care_complaint** — Create a new complaint in ShiftCare. Returns the created complaint including id, reference_number, name, status, risk_level, category, complainant and representative details, and lifecycle timestamps. New complaints default to status 'received' and risk_level 'low'.
- **get_single_shift_care_complaint_by_id** — Get a single ShiftCare complaint by id. Returns the full complaint object including id, reference_number, name, status, risk_level, category, complainant and representative details, and lifecycle timestamps. Required: id.
- **update_a_shift_care_complaint_by_id** — Update a ShiftCare complaint by id. Returns the updated complaint including id, reference_number, name, status, risk_level, category, complainant and representative details, and lifecycle timestamps. Required: id. Prefer the update_status method for status transitions.
- **shift_care_complaints_bulk_update** — Update a ShiftCare complaint's lifecycle status by complaint_id. Returns the updated complaint including id, reference_number, name, status, risk_level, and outcome_summary. Required: complaint_id, status. outcome_summary is required when the target status is 'closed'. 'received' cannot be used as a target status.
- **shift_care_leaves_create_external_id** — Create an external ID for a specific ShiftCare leave, linking it to an external payroll or HR system. Returns: id, type, organization_id. Required: leave_id, id, type.
- **create_a_shift_care_leaf** — Create a new leave record in ShiftCare for a staff member. Returns the created leave including id, user_id, title, start_at, end_at, reason, all_day, approved_at, approved_by, declined_at, declined_reason, read_only, hours_daily, and external_ids. Required: user_id, title, start_at, end_at, reason.
- **list_all_shift_care_leaves** — List leaves in ShiftCare with optional date-range, user, and approval-status filters. Returns: id, user_id, title, start_at, end_at, reason, all_day, approved_at, approved_by, declined_at, declined_reason, read_only, hours_daily, external_ids.
- **update_a_shift_care_leaf_by_id** — Update an existing leave record. Only the fields provided are changed. Approval or decline status can only be changed via the approval_action field; sending approved_at/declined_at directly is ignored for status changes.
- **get_single_shift_care_leaf_by_id** — Get a single ShiftCare leave by id. Returns: id, area_id, start_at, end_at, shift_type, published, allowance_ids, clients, staff, tasks, recurrence. Required: id.
- **shift_care_external_references_bulk_create** — Bulk create external references for supported ShiftCare resources such as staff, clients, allowances, and leaves. Returns: external_references, errors. Required: external_references with resource_type, resource_id, service, and external_id for each entry.
- **shift_care_external_references_bulk_update** — Bulk update external references for supported resources in ShiftCare. Returns: external_references, errors. Required: external_references with resource_type, resource_id, service, and external_id for each item.
- **shift_care_external_references_bulk_destroy** — Bulk destroy external references for supported resources in ShiftCare. Returns: external_references, errors. Required: external_references.
- **get_single_shift_care_external_reference_by_id** — Get a single external reference in ShiftCare by id (external_id). Returns: resource_id, resource_type, service, external_id, organization_id. Required: id.
- **list_all_shift_care_facilities** — List ShiftCare facilities with optional filtering by ID or name and sorting by ID or name. Returns: id, name, address, account_location_id, facility_type, created_at, updated_at. Max 50 per page.
- **list_all_shift_care_teams** — List ShiftCare teams for the current account with optional filtering by ID or name and sorting. Returns: id, external_id, name, type_string. Max 50 per page. Access is gated by a feature flag.
- **list_all_shift_care_shifts** — List shifts in ShiftCare with optional filtering by client IDs, staff IDs, date range, status, and billable flag. Returns: id, area_id, start_at, end_at, shift_type, published, allowance_ids, clients, staff, tasks, recurrence.
- **create_a_shift_care_shift** — Create a new shift in ShiftCare with associated clients, staff, tasks, and optional recurrence rules. Returns the created shift including id, area_id, start_at, end_at, shift_type, published, clients, staff, tasks, and recurrence. Required: start_at, end_at.
- **get_single_shift_care_shift_by_id** — Get a single ShiftCare shift by id. Returns the shift object including area_id, start_at, end_at, shift_type, published, allowance_ids, clients, staff, tasks, and recurrence. Required: id.
- **update_a_shift_care_shift_by_id** — Update an existing shift in ShiftCare by id. Returns the updated shift including area_id, start_at, end_at, shift_type, published, allowance_ids, clients, staff, tasks, and recurrence. Required: id.
- **delete_a_shift_care_shift_by_id** — Permanently delete a shift in ShiftCare by id. Returns an empty 204 response on success. Invoiced shifts cannot be deleted — the API returns 409 in that case. Required: id.
- **shift_care_shifts_cancel** — Cancel a shift, either without charge (marks the shift cancelled and unbillable) or with charge (marks each client ratio absent using an NDIS no-show code, keeping the shift billable).
- **list_all_shift_care_shift_staffs** — List the staff members assigned to a specific shift.
- **list_all_shift_care_shift_events** — List shift events in ShiftCare. Returns: name, message, user_full_name, user_id, created_at, private.
- **create_a_shift_care_shift_event** — Create a shift event in ShiftCare with scheduling, client/staff assignments, tasks, and optional recurrence. Returns: id, area_id, start_at, end_at, shift_type, published, allowance_ids, clients, staff, tasks, recurrence, created_at. Required: start_at, end_at.
- **list_all_shift_care_invoices** — List invoices, optionally filtered by client, payment status, payment type, and date range. Supports including client details and external references.
- **create_a_shift_care_invoice_payment** — Create a payment for an invoice in ShiftCare. Returns the created payment object with a 201 status on success. Required: invoice_id.
- **list_all_shift_care_invoice_payments** — List payments recorded against a specific invoice in ShiftCare. Returns: id, amount, reference, payment_date, notes, status, fund_id, void_at, created_at, updated_at. Required: invoice_id. Reversed payments are excluded by default; pass include_reversed=true to include them.
- **shift_care_invoice_payments_reverse** — Reverse or void a payment recorded against a ShiftCare invoice. Returns an empty 204 response on success. Required: invoice_id, payment_id.
- **list_all_shift_care_pay_groups** — List pay groups in ShiftCare with pagination. Returns: id, name, created_at, updated_at.
- **create_a_shift_care_qualification** — Create a new qualification type in ShiftCare. Returns: id, name, category_id, description, require_for_all_carers, require_expiry, require_document, support_need_ids, account_id, created_at, updated_at. Required: name, category_id. The name must be unique within the account (case-insensitive).
- **get_single_shift_care_qualification_by_id** — Get a single ShiftCare qualification by id. Returns the qualification object including its id, name, category_id, description, require_for_all_carers, require_expiry, require_document, and support_need_ids. Required: id.
- **list_all_shift_care_qualification_categories** — List qualification categories in ShiftCare. Returns: id, name, account_id, created_at, updated_at.
- **create_a_shift_care_staff_qualification** — Create a qualification record for a staff member, optionally attaching a document and expiry date.
- **delete_a_shift_care_staff_qualification_by_id** — Delete a ShiftCare staff qualification by id. Returns an empty 204 response on success. Required: id.
- **update_a_shift_care_staff_qualification_by_id** — Update a staff qualification record, such as replacing the attached document or changing its expiry date.
- **list_all_shift_care_staff_qualifications** — List staff qualifications in ShiftCare. Returns: id, created_at, updated_at.
- **create_a_shift_care_document** — Upload a file to create a document in ShiftCare. The request body is multipart/form-data containing a binary file in the document field. Returns the created document object. Required: document.
- **list_all_shift_care_documents** — List documents in ShiftCare with optional filtering by user id and category. Returns: id, file, category, account_id, user_id, app_visibility, visibility, no_expiration, expires_at. Max 20 per page.
- **create_a_shift_care_webhook** — Create a new webhook subscription to receive events at a specified HTTPS URL. The signing secret is returned only in the create response.
- **list_all_shift_care_webhooks** — List webhook subscriptions in ShiftCare. Returns: public_id, url, event_types, status, description, paused_at, paused_reason, created_at, updated_at, secret.
- **get_single_shift_care_webhook_by_id** — Retrieve a single webhook subscription by its public ID.
- **update_a_shift_care_webhook_by_id** — Update an existing webhook subscription's URL, subscribed event types, or description.
- **delete_a_shift_care_webhook_by_id** — Delete (disable) a webhook subscription in ShiftCare by id. Returns an empty 204 response on success. Required: id.
- **shift_care_webhooks_rotate_secret** — Rotate the signing secret for a ShiftCare webhook subscription. Returns the updated subscription with its id and the newly generated secret. Required: webhook_id.
- **shift_care_webhooks_ping** — Send a test ping to a ShiftCare webhook subscription to verify the webhook endpoint is reachable and accepting deliveries. Returns a 201 response on success. Required: webhook_id.
- **shift_care_webhooks_resume** — Resume a paused webhook subscription in ShiftCare. Returns a 201 response confirming the subscription has been resumed. Required: webhook_id.
- **list_all_shift_care_webhook_events** — List delivery events for a webhook subscription, in sequence order. Use after_sequence to page through events incrementally.
- **list_all_shift_care_webhook_deliveries** — List webhook deliveries for a ShiftCare webhook subscription with attempt history. Returns: id, status, attempts_count, final_status_code, completed_at, next_attempt_at, event_id, created_at, updated_at, attempts, request_payload. Required: webhook_id.
- **get_single_shift_care_webhook_delivery_by_id** — Get a single ShiftCare webhook delivery by id, including full attempt history and request payload. Returns: id, status, attempts_count, final_status_code, completed_at, next_attempt_at, event_id, created_at, updated_at, attempts, request_payload. Required: webhook_id, id.
- **shift_care_webhook_deliveries_redeliver** — Re-enqueue a ShiftCare webhook delivery for retry, re-sending the original payload to the webhook endpoint. Returns the delivery object including id, status, attempts_count, final_status_code, completed_at, event_id. Required: webhook_id, delivery_id.
- **list_all_shift_care_webhook_event_types** — List all webhook event types available to subscribe to, along with the resource type and description of each.
- **list_all_shift_care_allowances** — List allowances for the current ShiftCare account. Returns: id, name, code, unit, external_id, xero_earnings_rate_id, value, external_ids.
- **get_single_shift_care_allowance_by_id** — Get a single ShiftCare allowance by id. Returns: id, name, code, unit, external_id, xero_earnings_rate_id, value, external_ids. Required: id.
- **shift_care_allowances_bulk_create_external_ids** — Bulk create external IDs for allowances in ShiftCare, linking each allowance to an external payroll or HR system. Returns: external_ids, errors. Required: external_ids with id, type, and allowance_id per item.
- **shift_care_allowances_bulk_destroy_external_ids** — Bulk destroy external IDs for allowances in ShiftCare. Returns an empty 200 response on success.
- **shift_care_allowances_bulk_update_external_ids** — Bulk update external IDs for multiple allowances in ShiftCare via a PUT request. Returns 200 on success with the updated external ID records.
- **shift_care_clients_list_funds** — List a client's funds in ShiftCare. The Fund entity stores a client's cashflow and can be used for fetching balances and planning services. Returns: id, name, amount, hours, start_at, expires_at. Required: client_id.
- **shift_care_clients_get_fund_balance** — Get a client's fund's current balance in ShiftCare. Returns the fund's monetary and hours balance. Returns: balance_amount, balance_hours. Required: client_id, fund_id.
- **shift_care_clients_delete_external_reference** — Delete an external reference from a ShiftCare client. Returns an empty 200 response on success. Required: client_id, external_id.
- **create_a_shift_care_client** — Create a new client in ShiftCare. Returns the created client object including id, first_name, family_name, dob, email, mobile_number, created_at, and updated_at. Required: first_name, dob.
- **list_all_shift_care_clients** — List ShiftCare clients with optional filtering by ID or name and sorting by id or name. Returns: id, salutation, first_name, middle_name, family_name, display_name, gender, dob, address, address_unit_no, general_information, phone_number, mobile_number, email, marital_status, nationality, languages, ndis_number, medicare_number, aboriginal_torres_strait_islander, age_care_recipient_id,…
- **update_a_shift_care_client_by_id** — Update a specific ShiftCare client by id. Returns the updated client object including id, first_name, family_name, dob, email, client_status, created_at, and updated_at. Required: id.
- **shift_care_clients_get_by_external_id** — Fetch a single ShiftCare client by their external ID. Returns the full client object including id, first_name, family_name, display_name, email, mobile_number, and address. Required: external_id.
- **get_single_shift_care_client_by_id** — Get a single ShiftCare client by id. Returns the full client profile including id, first_name, family_name, display_name, email, dob, address, phone_number, mobile_number, client_status, created_at, and updated_at. Required: id.
- **shift_care_clients_bulk_create** — Bulk create multiple clients in ShiftCare in a single request. Returns the created client records including id, first_name, family_name, and dob. Required: a clients array where each item includes first_name and dob (YYYY-MM-DD).
- **shift_care_clients_bulk_create_external_ids** — Bulk create external IDs for multiple ShiftCare clients in a single request. Returns an external_ids array where each entry contains id, type, and organization_id. Required: external_ids with id, type, and client_id for each entry.
- **shift_care_clients_list_external_ids** — List external IDs (external references) for a specific ShiftCare client. Returns: id, type, organization_id. Required: client_id.
- **shift_care_pay_items_bulk_update_external_ids** — Bulk update external IDs for ShiftCare pay items, mapping each pay item to an identifier in an external payroll or HR system. Returns: id, pay_group_id, name, reference_no, xero_earnings_rate_id, external_ids. Required: external_ids array where each entry must include id, type, and pay_item_id.
- **list_all_shift_care_pay_items** — List pay items in ShiftCare. Returns: id, pay_group_id, name, reference_no, xero_earnings_rate_id, external_ids.
- **get_single_shift_care_pay_item_by_id** — Get a single ShiftCare pay item by id. The pay item entity stores weekday, weekend, or public holiday payroll information. Returns: id, pay_group_id, name, reference_no, xero_earnings_rate_id, external_ids. Required: id.
- **list_all_shift_care_shift_types** — List shift types in ShiftCare. The Shift Type entity assigns a specific category or metadata to shifts. Returns: id, external_id, name, type_string. Supports optional filtering by name. Max 50 items per page.
- **get_single_shift_care_shift_type_by_id** — Get a single ShiftCare shift type by id. Returns: id, area_id, start_at, end_at, shift_type, published, allowance_ids, clients, staff, tasks, recurrence. Required: id.
- **shift_care_staff_list_external_ids** — List external IDs associated with a ShiftCare staff member. Returns: id, type, organization_id. Required: staff_id.
- **shift_care_staff_create_external_id** — Create an external ID for a ShiftCare staff member, linking them to an external payroll or CRM system such as ADP, Xero, or QuickBooks. Returns: id, type, organization_id. Required: staff_id, id, type.
- **shift_care_staff_delete_external_reference** — Delete an external reference (external ID) for a ShiftCare staff member. Returns an empty response on success. Required: staff_id, external_id.
- **shift_care_staff_bulk_create_external_ids** — Bulk-link external system identifiers to multiple staff members in a single call.
- **shift_care_staff_archive** — Archive a staff member. Archiving is processed asynchronously: it removes the staff member from future shifts and updates related records in the background.
- **shift_care_staff_bulk_create** — Bulk create multiple staff members in ShiftCare in a single request. Returns the created staff records including id, name, email, first_name, family_name, role, and created_at. Required: staffs[name], staffs[email].
- **shift_care_staff_bulk_update** — Bulk-update multiple staff members in a single call, matched by their ShiftCare staff IDs.
- **create_a_shift_care_staff** — Create a new staff member. Optionally sends a platform invitation email.
- **list_all_shift_care_staff** — List ShiftCare staff members. Returns: id, salutation, name, first_name, family_name, role, gender, dob, address, phone_number, mobile_number, email, employment_type, job_title, languages, kin_name, kin_relationship, kin_email, kin_phone_number, invitation_accepted_at, joined_at, created_at, updated_at, payroll_email, onboarding_status, external_ids.
- **update_a_shift_care_staff_by_id** — Update an existing staff member's profile fields.
- **shift_care_staff_get_by_external_id** — Fetch a single ShiftCare staff member by their external ID. Returns: id, salutation, name, first_name, family_name, role, gender, dob, address, phone_number, mobile_number, email, employment_type, job_title, languages, kin_name, kin_relationship, kin_email, kin_phone_number, invitation_accepted_at, joined_at, created_at, updated_at, payroll_email, onboarding_status, external_ids. Required:…
- **get_single_shift_care_staff_by_id** — Fetch a single ShiftCare staff member by id. Returns: id, salutation, name, first_name, family_name, role, gender, dob, address, phone_number, mobile_number, email, employment_type, job_title, languages, kin_name, kin_relationship, kin_email, kin_phone_number, invitation_accepted_at, joined_at, created_at, updated_at, payroll_email, onboarding_status, external_ids. Required: id.
- **list_all_shift_care_timesheets** — List timesheets in ShiftCare for a given date range. Returns: staff_id, date, client_ids, items, shift_id, status, clockin_at, clockout_at, clockin_location, clockout_location, staff. Required: from, to. Max 20 per page.
- **list_all_shift_care_forms** — List ShiftCare form definitions with optional filtering by status and type. Returns: id, name, description, form_type, status, single_response, component_count, created_at, updated_at, components. Max 100 per page.
- **get_single_shift_care_form_by_id** — Get a single ShiftCare form definition by id. Returns the full form object including name, form_type, status, single_response, component_count, components, created_at, and updated_at. Required: id.
- **create_a_shift_care_form_response** — Create a form response in ShiftCare by submitting component values for a specific form and responder. Returns: id, form_id, form_name, responder_type, responder_id, responder_name, status, values, created_at, updated_at. Required: form_id, responder_type, responder_id, values.
- **list_all_shift_care_form_responses** — List form responses in ShiftCare with optional filtering by form, responder, status, and submission date. Returns: id, form_id, form_name, responder_type, responder_id, responder_name, status, values, created_at, updated_at. Component values are only included when include_values is set to true.
- **list_all_shift_care_progress_notes** — List progress notes, optionally filtered by shift, staff author, client, category, creation date range, or shift date range.
- **get_single_shift_care_progress_note_by_id** — Get a single ShiftCare progress note by id. Returns: id, category, message, shift_id, shift_date, client, staff, follow_up, created_at, updated_at. Required: id.
- **list_all_shift_care_invoiceable_items** — List invoiceable items for a billing period in ShiftCare — priced shift and non-shift line items with tax-exclusive totals, grouped per client. Returns per-client entries with client_id, client_name, fund_id, fund_name, fund_type, payment_type, excluded_count, totals, and line_items. Required: start_date_in_account_time_zone, end_date_in_account_time_zone. A 404 response means the endpoint is not…

## How it works

1. **Link your customer's ShiftCare account.** Use Truto's frontend SDK; we handle every OAuth and API key flow so you don't need to create the OAuth app.
2. **Authentication is automatic.** Truto refreshes tokens, stores credentials securely, and injects them into every API request.
3. **Call Truto's API to reach ShiftCare.** The Proxy API is a 1-to-1 mapping of the ShiftCare API.
4. **Get a unified response format.** Every response uses a single shape, with cursor-based pagination and data in the `result` field.

## Use cases

- **Automate payroll for care providers** — Payroll platforms can pull approved timesheets, leaves, allowances, and pay items from ShiftCare to run accurate weekly pay cycles for hourly care workers without manual data entry.
- **Sync invoicing with accounting tools** — Accounting and billing SaaS can fetch invoiceable items, invoices, and push payment reconciliation back to ShiftCare, closing the loop between care delivery and the general ledger.
- **Push training completions into rostering** — LMS and compliance platforms can create staff qualifications and upload certificate documents in ShiftCare so newly trained workers are immediately eligible for shifts requiring those credentials.
- **Provision clients from intake CRMs** — Care CRMs and intake platforms can auto-create ShiftCare clients the moment a contract is signed, eliminating duplicate data entry for coordinators.
- **Power BI dashboards for care operations** — Analytics tools can combine ShiftCare complaints, progress notes, shifts, and client fund balances to give executives a unified view of profitability, risk, and quality.

## What you can build

- **Approved timesheet ingestion** — Pull timesheets, leaves, and allowances from ShiftCare on a schedule or via webhooks to feed downstream payroll engines.
- **Client and staff provisioning** — Create and update ShiftCare clients and staff from your product using bulk endpoints and external ID mapping to keep records linked.
- **Qualification and document sync** — Automatically create staff qualifications and attach certificate documents when workers complete training in your platform.
- **Invoice and payment reconciliation** — Fetch invoiceable items and invoices, then post payments back with support for reversals when transactions need to be undone.
- **Real-time shift and complaint webhooks** — Subscribe to ShiftCare webhook events for shifts, complaints, forms, and progress notes to react instantly instead of polling.
- **Client fund balance widgets** — Surface real-time NDIS or care package fund balances inside your product by calling ShiftCare's fund and balance endpoints per client.

## FAQs

### How does Truto handle authentication with ShiftCare?

Truto manages the ShiftCare API credential exchange, token storage, and refresh on behalf of your end users. Your product only needs to trigger the connection flow — Truto handles the rest per connected account.

### Can we link our own record IDs to ShiftCare entities?

Yes. ShiftCare exposes external ID endpoints for staff, clients, allowances, pay items, and leaves, including bulk create, update, and destroy operations, so you can map your primary keys directly to ShiftCare records without fuzzy matching.

### How do we get real-time updates instead of polling?

ShiftCare supports webhooks that you can create, rotate secrets for, ping, and resume through Truto. You can list event types, view deliveries, and redeliver failed events for reliability.

### What payroll-relevant data can we pull?

You can list timesheets, leaves, allowances, pay groups, pay items, and shifts, plus fetch shift types and staff qualifications. This covers the core inputs needed for hourly and award-based pay calculations.

### Can we automate billing and invoice reconciliation?

Yes. You can list invoiceable items and invoices, create invoice payments, list existing payments, and reverse payments when reconciliation needs to be corrected.

### Does the integration support compliance and quality workflows?

Yes. You can create, list, and update complaints (including bulk updates), list progress notes, list forms, and submit form responses — enabling QMS and clinical tools to stay in sync with ShiftCare.
