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

# Charlie API Integration on Truto



**Category:** HRIS  
**Status:** Generally available

## Unified APIs

### Unified HRIS API

- **Companies** — Companies represent the companies in HRIS
- **Employees** — Represents an employee in HRIS
- **Employments** — Employments represent a job position at a company.
- **Groups** — Groups represent the groups for an Employee
- **Locations** — Locations represent the locations in HRIS
- **Timeoff Balances** — Represent the time off balances for an Employee
- **Timeoff Requests** — Represent the time off requests for an Employee

## MCP-ready AI tools

Truto exposes 22 tools for Charlie that AI agents can call directly.

- **list_all_charlie_company** — Get details about the company in Charlie that owns the current credentials. Returns id, name, subdomain, and logo in the response.
- **list_all_charlie_leave_allowances** — List all leave allowances in Charlie. Returns id, team_member, allowance_in_days, days_used, remaining_allowance_in_days, leave_types, period_start, and period_end for each record.
- **list_all_charlie_leave_requests** — List all leave requests in Charlie. Returns an array of leave requests with fields such as id, team_member, approver, status, details, amount, request_type, start_date, and end_date.
- **get_single_charlie_leave_request_by_id** — Get a specific leave request in Charlie by id. Returns fields including id, team_member, approver, status, details, amount, units, request_type, start_date, and end_date.
- **list_all_charlie_offices** — List all offices belonging to the authenticated company in Charlie. Returns id, name, head (boolean), address, timezone, phone_number, and email for each office.
- **get_single_charlie_office_by_id** — Get details of a specific office in Charlie using id. Returns fields such as id, name, head (indicates if head office), address, timezone, phone_number, and email.
- **list_all_charlie_salaries** — List all salaries in Charlie. Returns id, team_member, job_title, pay_rate, pay_period, pay_frequency, pay_currency, effective_date, and employment_type for each salary record.
- **get_single_charlie_salary_by_id** — Get a specific salary in Charlie using id. Returns id, team_member, job_title, pay_rate, pay_period, frequency, pay_currency, effective_date, and employment_type fields.
- **list_all_charlie_team_members** — List all team-members in Charlie. Returns an array of team member objects including id, company, first_name, last_name, work_email, job_title, employment_status, and other profile details.
- **get_single_charlie_team_member_by_id** — Get details of a specific team member in Charlie using id. Returns id, company, display_name, work_email, job_title, office, manager, teams, employment_status, and success fields in the response.
- **list_all_charlie_team_member_leave_allowance** — Get the current leave allowance for a specific team member in Charlie. Requires id. Returns id, team_member, allowance_in_days, days_used, remaining_allowance_in_days, leave_types, period_start, and period_end.
- **list_all_charlie_team_member_leave_requests** — List leave requests for a specific team member in Charlie. Requires id. Returns id, team_member, approver, status, details, amount, units, request_type, start_date, and end_date fields in the response.
- **list_all_charlie_team_member_salaries** — Get salaries for a specific team member in Charlie. Requires id. Returns id, team_member, job_title, pay_rate, pay_period, pay_frequency, pay_currency, effective_date, and employment_type for each salary record.
- **list_all_charlie_teams** — List all teams in Charlie. Returns each team's id, name, and team_members in the response.
- **get_single_charlie_team_by_id** — Get details about a specific team in Charlie using id. Returns id, name, and team_members in the response.
- **list_all_charlie_bank_accounts** — List all bank accounts in Charlie for the authenticated company. Returns team_member, account_number, sort_code, and bank_name for each account.
- **get_single_charlie_bank_account_by_id** — Get a bank account in Charlie by id. Returns team_member (owner of the account), account_number, sort_code (without punctuation), bank_name, and success status.
- **list_all_charlie_team_member_notes** — List notes for a specific team member in Charlie using id. Returns each note's id, team_member, team_member_note_type, label, and content fields in the response.
- **create_a_charlie_team_member_note** — Create a new team-member-note for a specific team member in Charlie. Requires id. Returns id, team_member, team_member_note_type, label, and content in the response.
- **list_all_charlie_team_member_note_types** — List all team member note types in Charlie. Returns each note type’s id, name, type, and permissions structure for roles within the company.
- **get_single_charlie_team_member_note_type_by_id** — Get details of a specific team member note type in Charlie using id. Returns id, name, type, and permissions object describing access levels and visibility of the note type content.
- **create_a_charlie_team_member_note_type** — Create a new team member note type in Charlie. Returns the created note type data, including id, name, type, and permissions object. Requires valid JSON body with at least the name field.

## How it works

1. **Link your customer's Charlie 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 Charlie.** The Proxy API is a 1-to-1 mapping of the Charlie 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 reconciliation from Charlie** — Payroll and EOR platforms can pull team member profiles, salary details, and UK bank account information directly from Charlie to keep pay runs accurate without manual dual-entry. When a founder updates a salary or banking detail in Charlie, the change flows automatically into the next payroll cycle.
- **Zero-touch IT provisioning and deprovisioning** — IT management and SaaS governance platforms can monitor Charlie for new hires and terminations. When a team member appears or their employment status changes, the platform automatically provisions or revokes accounts across Google Workspace, Slack, and other tools — critical for SOC 2 compliance.
- **Sync leave data into capacity and resource planning** — Project management and scheduling tools can poll Charlie for approved leave requests and automatically block those dates in sprint plans or shift rosters, preventing managers from over-allocating work to unavailable team members.
- **Build org-aware performance review cycles** — Employee engagement and performance platforms can fetch Charlie's team structure, manager relationships, and office locations to auto-generate peer and managerial review workflows. Completed review summaries can be pushed back to Charlie as team member notes for a centralized employee timeline.
- **Centralize employee data across multi-HRIS customer bases** — SaaS companies whose customers use a mix of HRIS tools can offer Charlie as a first-class integration alongside others via Truto's Unified HRIS API, normalizing employees, groups, locations, and time-off data into a single schema without building Charlie-specific logic.

## What you can build

- **Real-time employee directory sync** — Automatically import and keep up-to-date every team member's name, email, job title, employment status, and manager relationship using the unified Employees resource.
- **Salary change detection for payroll automation** — Poll Charlie salaries — including pay rate, currency, frequency, and effective date — to detect compensation changes and feed them into payroll calculations without manual input.
- **Leave-aware capacity blocking** — Read approved and pending leave requests with start/end dates and leave type to automatically adjust team availability in scheduling or project management views.
- **Org chart and team structure import** — Fetch teams, offices, and reporting relationships from Charlie to build visual org charts or auto-configure access policies based on department and location.
- **Automated review note push-back** — Write structured performance review summaries, 1:1 notes, or compliance records directly onto employee profiles in Charlie using the team member notes and note types endpoints.
- **UK bank account extraction for payroll** — Retrieve employee bank account details — including sort code, account number, and bank name — to pre-populate payroll or expense reimbursement workflows for UK-based teams.

## FAQs

### What authentication method does the Charlie integration use?

Charlie's API uses API key authentication. Truto handles the auth flow so your end users can connect their Charlie account without you managing tokens or keys directly.

### Can I use Truto's Unified HRIS API with Charlie?

Yes. Charlie maps to the Unified HRIS API resources including Companies, Employees, Employments, Groups, Locations, Timeoff Balances, and Timeoff Requests. This lets you normalize Charlie data alongside other HRIS providers in a single schema.

### Does the integration support writing data back to Charlie?

Yes, but write operations are limited to specific endpoints. You can create team member notes and team member note types. Other resources like team members, salaries, and leave requests are read-only.

### What employee data can I read from Charlie?

You can retrieve team member profiles (name, email, job title, employment status, manager), salary history (pay rate, currency, frequency, effective date), leave allowances (total and used days), leave requests (dates, type, approval status), bank accounts, teams, and offices.

### How does Truto handle pagination and rate limits for Charlie?

Truto abstracts away Charlie's pagination and rate-limiting behavior. When you call a list endpoint through Truto, pagination is handled automatically so you receive complete result sets without managing cursors or page tokens yourself.

### Can I fetch leave data for a specific employee rather than all employees?

Yes. The integration supports both bulk listing of all leave requests and allowances, as well as per-team-member endpoints to retrieve leave requests and leave allowances scoped to a specific employee.
