---
title: Planful API Integration on Truto
slug: planful
category: Accounting
canonical: "https://truto.one/integrations/detail/planful/"
---

# Planful API Integration on Truto



**Category:** Accounting  
**Status:** Beta

## MCP-ready AI tools

Truto exposes 47 tools for Planful that AI agents can call directly.

- **create_a_planful_data_transfer** — Transfer data to Planful in a single call against a Data Load Rule (DLR). Returns: DataLoadRuleId, ExcecutionId, ChunksReceived, RecordsReceived, RunAsynchronously, Attempts, TransferResponse, DataLoadRuleConfig, Payload. Requires DataLoadRuleConfig and Payload. Max 40MB per request.
- **planful_data_transfers_bulk_update** — Transfer Planful data in batches when the load exceeds limits. Returns: DataLoadRuleId, ExcecutionId, ChunksReceived, RecordsReceived, RunAsynchronously, Attempts, TransferResponse, DataLoadRuleConfig, Payload. Requires DataLoadRuleConfig and Payload; complete the load via the IsLoadCompleted header or a null Payload. Max 40MB per request.
- **planful_data_transfers_complete** — When you are about to send the last request, you can either add the IsLoadCompleted parameter in the Header and provide its value as True or you provide the value for the payLoad parameter in the request body as Null . Final batch of a batched transfer: sends IsLoadCompleted=true so Planful closes the load. Returns: DataLoadRuleId, ExcecutionId, ChunksReceived, RecordsReceived, RunAsynchronously, Attempts, TransferResponse, properties. Required: payload, DataLoadRuleName, ColumnDelimiter.
- **create_a_planful_data_transferfile** — Transfer one or more CSV or ZIP data files into Planful through a data load rule. Returns: DataLoadRuleId, ExcecutionId, RunAsynchronously, Attempts, TransferResponse, DataLoadRuleConfig, Payload. Required: data_load_rule_name, column_delimiter, file. ZIP files must contain base64-encoded CSV.
- **list_all_planful_data_load_rules** — List all data load rules (DLRs) you have access to in Planful. Returns an array of rules, each with DataLoadRuleId, Name, and LoadItem (the DLR type).
- **list_all_planful_gl_data_load_rules** — List the GL data and GL with Translations data load rules (DLRs) available to you in Planful. Returns: DataLoadRuleId, Name, LoadItem.
- **list_all_planful_transaction_data_load_rules** — List the Transactions data DLRs (Data Load Rules) in Planful that you have access to. Returns: DataLoadRuleId, Name, LoadItem.
- **list_all_planful_data_load_status** — When you initiate a DLR execution through REST API, the API will return an Execution ID in the response. You can now use that Execution ID to know the status of a DLR execution. This API now fetches information about both Sync and Async API execution types. The API can return any of the following execution statuses: Uploading Uploaded Processing Processed Failed Unknown Abandoned Returns: ExecutionId, ChunksReceived, RecordsReceived, LastBatchReceivedDateTimeUtc, LoadCompletedDateTimeUtc, TransferStartedDateTimeUtc, TransferCompletedDateTimeUtc, Attempts, ExecutionStatus. Required: ExecutionId.
- **list_all_planful_running_data_load_status** — You can use the GetRuningDataLoadStatus API to know if there is any execution going on for any DLR. This API just requires the DLR name as the query string parameter and it retrieves detailed information about the execution. If there is no active DLR execution, then the API will return a “404 Not Found” message. If there is any ongoing DLR execution, you will receive the following parameters in re Returns: ExecutionId, ChunksReceived, RecordsReceived, LastBatchReceivedDateTimeUtc, LoadCompletedDateTimeUtc, TransferStartedDateTimeUtc, Attempts, ExecutionStatus. Required: dlrName.
- **list_all_planful_gl_data** — Use this API to retrieve the GL data. To get the GL data, providing the Scenario as a query parameter is mandatory while sending the API request. If you want the GL data of an Actual scenario, it is mandatory to provide the fiscal year as a query parameter. Notes : - The GL Data Extract API retrieves data only for leaf-level members in Segment1 to Segment8. All segment filters in the query paramet Returns: properties, Scenario, FiscalYear, Segment1, Segment2, Segment3, Segment4, Segment5, Segment6, Segment7. Required: Scenario.
- **list_all_planful_segment_1_data** — Use this API to retrieve the Segment 1 data. Each Seg1 data row represents a segment 1 entry in the database. When you invoke this API with any Odata filter, the API queries the Seg1 data rows based on the filter criteria. Supports OData query options such as $filter passed as query parameters. Returns: properties, MemberId, Code, Name, RollupOperator, MemberType, ActiveStatus, Sort, ParentMemberId, AccountType.
- **list_all_planful_segment_2_data** — Use this API to retrieve the Segment 2 data. Each Seg2 data row represents a segment 2 entry in the database. When you invoke this API with any Odata filter, the API queries the Seg2 data rows based on the filter criteria. Supports OData query options such as $filter passed as query parameters. Returns: properties, MemberId, Code, Name, RollupOperator, MemberType, ActiveStatus, Sort, ParentId, CurrencyCode.
- **list_all_planful_segment_data** — Use this API to retrieve the Segment 3 data. Each Seg3 data row represents a segment 3 entry in the database. When you invoke this API with any Odata filter, the API queries the Seg3 data rows based on the filter criteria. Supports OData query options such as $filter passed as query parameters. Returns: properties, MemberId, Code, Name, RollupOperator, MemberType, ActiveStatus, Sort, ParentId, ParentCode. Required: segment.
- **create_a_planful_attribute_hierarchy_export** — Use this API to export attribute hierarchy details in any of the following formats: Tree Parent Child Level-Based By default, if only the AttributeHierarchy and Dimension parameters are passed, the API exports the hierarchy in Tree format. To export in a specific structure, include the ExportType parameter with one of the supported values: Tree, ParentChild, or LevelBased. The exported data can be Read-only export despite POST. Returns: properties, Line Id, Line Name, Line Type. Required: AttributeHierarchy, Dimension.
- **create_a_planful_budget_entity_hierarchy_export** — Exports the Budget Entity hierarchy in the specified structure. Use the Type parameter to export the hierarchy in Tree, Parent-Child, Level-Based, or Leaf-Level format. If Type is not specified, the API exports the hierarchy in Tree format by default. Read-only export despite POST. Returns: properties, Child Code, Child Name, Parent Code, Parent Name, Member Type, Entity Type, Rollup Operator, Currency Code, Currency Name. Required: Type.
- **planful_report_data_search** — Use the GetReportData API to retrieve the metadata (the report structure) and data (the data in the report) directly from your financial reports generated within Planful. Read-only retrieval despite POST. Returns: RowHeaders, items, ColumnHeaders, items, Data, items, Status, StatusMessage. Required: ReportCode, Lineage, CubeName, PageFilters.
- **create_a_planful_process_run** — This API allows you to execute a Process Flow in Cloud Scheduler. With the process flow code, you can trigger the sequence of operations in Cloud Scheduler. Authorization Use the Access ID and Access Key generated from the application as Username and Password respectively to successfully authorize the transfer request. Refer to Generate Access ID and Access Key topic to know the details about gene Required: Code.
- **create_a_planful_attribute_hierarchy_move** — The Move Attribute Hierarchy Leaf Member API allows you to bulk update parent-child relationships for leaf-level members within an attribute hierarchy. Use this API to restructure hierarchies by reassigning or reordering leaf members under different parent members. Supported Hierarchy Type Export Parent Child Steps to Move Attribute Hierarchy Members Export the Parent Child hierarchy Navigate to H Required: HierarchyMoveFile.
- **create_a_planful_model_attribute_append** — Use this API to create or append attributes and attribute hierarchies, specify display labels for attributes, and create or modify attribute-to-dimension-member mappings in Master and Analytic models. To create or append attributes and attribute hierarchies, include the “attribute-members:[ ]”. To map attribute leaves to dimension leaves, include the “attribute-mapping:[ ]”. Uses the Dynamic Planning access token (X-Access-Token), not the Access ID and Key. Returns no body on success (204). Required: modelName, dimensionName, attributeName, delimiter, attributeMembers, attributeMappings.
- **create_a_planful_model_member_append** — Use this REST API to append dimension members in Master and Analytic models. You can load Display Label as an optional parameter. Uses the Dynamic Planning access token (X-Access-Token), not the Access ID and Key. Returns no body on success (204). Required: modelName, dimensionName, delimiter, hierarchy, members.
- **create_a_planful_model_calculation_run** — Use this API to run a Calculation defined on a Master or Analytic model. You can invoke only one Calculation per API call, and this API invokes only those Calculations enabled to run in the background. Invoking any other type of Calculation will result in an error. You can also optionally pass variables and values for variables into the calculation. Uses the Dynamic Planning access token (X-Access-Token), not the Access ID and Key. Returns no body on success (204). Required: modelName, calcScriptName.
- **planful_model_calculation_statuses_search** — Use this API to get the status of the Calculation. Please note that the request payload is the same as the run calculation payload. Uses the Dynamic Planning access token (X-Access-Token), not the Access ID and Key. Read-only status check despite POST. Returns: modelName, calcScriptName, status, lastStatus, description, runInBackground, lastRunTime. Required: modelName, calcScriptName.
- **create_a_planful_model_data_clear** — Use this API to clear the data from Master and Analytic models based on the scope of the API definition. This API results in Success even if the data for that model was cleared in previous calls. You can either clear specific data or the entire model. Use filters to clear only specific data. For example, you can clear data for a specific period, department, or company using filters. To clear the e Uses the Dynamic Planning access token (X-Access-Token), not the Access ID and Key. Returns no body on success (204). Required: modelName, dimension.
- **create_a_planful_model_leaf_data_clear** — Use this API to clear leaf data from Master and Analytic models based on the scope of the API definition. This API results in success even if the data for that model was cleared in previous calls. You can either clear specific clear leaf data or the entire model. You can use filters to clear specific leaf data. For example, leaf data of the required period, department, or company. Use the API with Uses the Dynamic Planning access token (X-Access-Token), not the Access ID and Key. Returns no body on success (204). Required: modelName, dimension.
- **create_a_planful_model_dimension_export** — This API allows you to export the entire dimension/attribute hierarchy from a specified model in JSON format. Example requests and responses in JSON formats are provided below with dimension and attribute examples. Hierarchy member code Hierarchy member parent Hierarchy member rollup operator Hierarchy member display label Mapped attributes Mapped dimensions Uses the Dynamic Planning access token (X-Access-Token), not the Access ID and Key. Read-only export despite POST. Returns: members, items, properties. Required: model, dimension.
- **create_a_planful_model_data_export** — This API allows you to export the leaf level data from a specified model in JSON format. Additionally, you can specify one or more filters to export specific data, and you can use attributes as filters. Uses the Dynamic Planning access token (X-Access-Token), not the Access ID and Key. Read-only export despite POST. Returns: properties, Scenario, Time, Account, Amount, Department. Required: model, dimension, filterType, value.
- **create_a_planful_model_data_load** — Use this API to import data to a Master or an Analytic model. User can do any of the following. Import all data to the model Import using incremental data loads in which the data can be updated to the new dimensions of existing model. If the model already contains data, use the clear data API to remove it, and then import new data into the model. Optionally, you can configure the API to do the fol Uses the Dynamic Planning access token (X-Access-Token), not the Access ID and Key. Returns no body on success (204). Required: modelName, delimiter, aggregate, data, PageDimension, PageMember, ColumnNumber, ColumnDimension, DimensionMember.
- **create_a_planful_source_model_data_clear** — The Clear Data API clears existing data from an External Source Model based on the scope of the definition. When clearing data from an external source model, you can clear specific data or the entire model. To clear specific data, use filters. To clear all model data, use the API without filters. For example, leaf data of the required period, department, or company. This API works with both the le Uses the Dynamic Planning access token (X-Access-Token), not the Access ID and Key. Returns no body on success (204). Required: modelName.
- **create_a_planful_source_model_metadata_clear** — This API helps to clear metadata from an external Data Source model. This API can be invoked to clear specific dimensions or all dimensions of an external Data Source model. If you have cleared data in the previous call, the clear Data API will still return a success result. Uses the Dynamic Planning access token (X-Access-Token), not the Access ID and Key. Returns no body on success (204). Required: modelName, dimensionName.
- **create_a_planful_source_model_data_export** — This API allows you to export leaf-level data from a specified external source model in XML format. Optionally, you can specify one or more filters to export specific data and you can specify which fields to export. This API works with both the legacy External Source Model functionality and the newest implementation of ESM. Uses the Dynamic Planning access token (X-Access-Token), not the Access ID and Key. Read-only export despite POST; response is XML. Required: modelName, delimiter.
- **create_a_planful_source_model_data_load** — Use this API to import data into an external Data Source model. Uses the Dynamic Planning access token (X-Access-Token), not the Access ID and Key. Required: ColumnNumber, ColumnHeader, Data.
- **create_a_planful_source_model_metadata_load** — Use this API to load metadata to an external Data Source model. This API supports the import of level-based source dimension metadata. Support for the import of parent-child based source dimension metadata will be added in the future. You can import a single dimension’s metadata per request. Uses the Dynamic Planning access token (X-Access-Token), not the Access ID and Key. Returns no body on success (204). Required: DimensionMembers.
- **list_all_planful_approval_roles** — Use this API to retrieve the budget entity (rollup/leaf level) and the corresponding approval role assigned to each user within the system. If a user has multiple approval roles assigned, the API will retrieve all budget entities along with their respective approval roles. To obtain the approval role list, provide the StartIndex value as a query parameter. Notes: The default batch size is 5000 rec Returns: BudgetEntityApprovalRoles, items, properties, Success, HasMore. Required: StartIndex.
- **list_all_planful_user_approval_roles** — Use this API to get the approval role(s) assigned to a user. To get the approval role data, provide userLogin as a query parameter. Returns: ApprovalRoleForUser, items, properties, IsSuccess. Required: userLogin.
- **create_a_planful_approval_role_upload** — Use the ApprovalRolesUpload API to upload approval roles to the application. Returns: TaskId, Success, Message, DuplicateCheckStatusResult.
- **create_a_planful_user** — This API allows you to create a new user(s) with specified roles and properties. When creating a new user within a tenant, if the user already exists in the same tenant group, their existing details will be automatically mapped to the current tenant where you are creating the new user. Returns: validationErrors, userId, isUserCreated, dpUserCreateResponse. Required: UserLogin, FirstName, NavigationRoleName.
- **planful_users_bulk_update** — Use this API to edit the user-specified roles and properties. Identifies the user by UserLogin in the body. Returns: validationErrors, userId, Success. Required: UserLogin.
- **planful_users_bulk_delete** — Use this API to delete a user from the application. To delete the user, provide userLogin as a query parameter. Returns: IsSuccess. Required: UserLogin.
- **create_a_planful_user_support_role** — Use this API to update the user’s support role . Returns: IsSuccess. Required: UserLogin, SupportRole.
- **create_a_planful_user_task_manager_role** — Use this API to update the user’s task manager role . The task manager roles are of two types: Admin User and Regular User . When you set the role to Admin User , the user can create a personalized checklist of tasks to manage the planning and consolidation process, along with adding tasks and subtasks for other users. While the Regular User can only comment on tasks and subtasks, and attach neces Returns: IsSuccess. Required: UserLogin, SupportRole.
- **create_a_planful_user_scenario_access** — This API grants scenario access permission to the user. Returns: IsSuccess. Required: UserLogin, ScenarioCode.
- **list_all_planful_user_scenario_accesses** — This API extracts a list of scenarios accessible to the user. To get the list of scenarios, provide userLogin as a query parameter. Returns: ScenarioMembers, items, IsSuccess. Required: UserLogin.
- **create_a_planful_user_scenario_access_removal** — Use this API to remove scenario access assigned to the user. Returns: IsSuccess. Required: UserLogin, ScenarioCode.
- **create_a_planful_user_group_mapping** — Use this API to map the user to a user group . Returns: Validations, Success. Required: UserLogin, UserGroup.
- **create_a_planful_user_group_unmapping** — Use this API to unmap the user from a user group . Returns: Validations, Success. Required: UserLogin, UserGroup.
- **list_all_planful_user_groups** — Use this API to generate the list of user groups mapped to a user. To get the user groups list, provide userLogin as a query parameter. Returns: Success, UserGroups, items. Required: UserLogin.
- **list_all_planful_version** — Use this API to retrieve the current version and name of the Planful application. Returns: Version, Name.

## How it works

1. **Link your customer's Planful 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 Planful.** The Proxy API is a 1-to-1 mapping of the Planful 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

- **Sync corporate spend into FP&A budgets** — Spend management and AP automation platforms can push categorized actuals into Planful so finance teams see real-time burn against forecasted budgets instead of waiting for month-end close.
- **Automate headcount and workforce planning** — HRIS and payroll products can push active employee rosters, compensation changes, and department mappings into Planful so FP&A teams always forecast against an accurate workforce baseline.
- **Feed marketing spend into departmental budgets** — Marketing performance platforms can sync campaign-level costs into Planful's planning models, letting marketing leaders justify ROI directly against the budgets finance owns.
- **Expose Planful as a source for data warehouses and BI** — ETL and analytics platforms can extract general ledger data and fully-calculated Planful reports into Snowflake, BigQuery, or Power BI so customers can blend finance data with the rest of their stack.
- **Trigger model recalculations from operational systems** — Ops and revenue platforms can clear stale slices, load fresh driver data, and trigger Planful's calculation engine so downstream forecasts stay in sync with upstream operational changes.

## What you can build

- **Batched GL and transaction uploads via Data Load Rules** — Discover the right Data Load Rule for a customer's ledger and push high-volume actuals using chunked data transfers that complete atomically — no manual DLR mapping in-app.
- **Budget entity and segment hierarchy sync** — Export a customer's budget entity tree, GL segments, and attribute hierarchies so your product can present Planful's chart of accounts natively in your own category or dimension pickers.
- **Dynamic Planning model data loader** — Ship a feature that clears existing model slices and loads refreshed data into Planful's Dynamic Planning models, with the ability to kick off a calculation run and poll its status.
- **Planful report extraction connector** — Pull post-consolidation report data — including row/column headers and calculated values — directly from Planful reports for use in dashboards, exports, or downstream warehouses.
- **User and approval role provisioning** — Automate Planful user lifecycle: create users, bulk update or delete them, assign support/task manager roles, and manage scenario access and user group mappings from your admin UI.
- **Data load status monitoring** — Give customers a live view of running and historical data loads in Planful so failed or in-progress transfers surface inside your product instead of requiring a login to Planful.

## FAQs

### How does authentication to Planful work through Truto?

Planful's APIs use token-based auth (including the X-Access-Token header for Dynamic Planning model endpoints). Truto handles token exchange, storage, and refresh so your end users complete a one-time connection and your app never touches raw credentials.

### How does Truto handle Planful's 40MB data transfer limit?

For large payloads, Truto orchestrates Planful's chunked upload pattern — initiating a data transfer, pushing chunks via bulk update, and calling complete to finalize — so you can ship high-volume GL or transaction syncs without implementing the chunking logic yourself.

### Can we push both GL/transactional actuals and Dynamic Planning model data?

Yes. Truto exposes tools for standard Data Load Rules (GL, transaction, and generic DLRs) as well as Dynamic Planning operations like model data loads, clears, metadata loads, and calculation runs.

### Can we read calculated report data instead of reassembling it from raw GL?

Yes. The Planful report data search tool returns structured row/column headers and fully-calculated values from native Planful reports, so you can surface post-consolidation numbers without rebuilding the logic.

### How do we keep organizational structures aligned between our product and Planful?

You can export budget entity hierarchies, attribute hierarchies, and segment data (segment 1, segment 2, and generic segments) to mirror the customer's Planful chart of accounts and org structure inside your app.

### Does the integration support user and access management?

Yes. You can create users, bulk update or delete them, assign support and task manager roles, manage scenario access, and handle user group mappings and approval role uploads programmatically.

### How do we monitor whether a data load actually succeeded?

Truto exposes endpoints to list all data load statuses and currently running data loads, so you can poll for completion, surface errors to users, and retry failed transfers from within your product.

## Related reading

- [Connect Planful to ChatGPT: Streamline Data Loads & Financial Reports](https://truto.one/blog/connect-planful-to-chatgpt-streamline-data-loads-financial-reports/) — Learn how to connect Planful to ChatGPT using a managed MCP server. Automate data loads, GL data extraction, and financial reporting with natural language.
- [Connect Planful to Claude: Sync GL Data & Manage Model Hierarchies](https://truto.one/blog/connect-planful-to-claude-sync-gl-data-manage-model-hierarchies/) — Learn how to build a managed MCP server to connect Planful to Claude. Automate GL data syncs, model hierarchy updates, and data load rules using natural language.
- [Connect Planful to AI Agents: Automate Models & User Access Control](https://truto.one/blog/connect-planful-to-ai-agents-automate-models-user-access-control/) — Learn how to connect Planful to AI agents for automated financial modeling, data transfers, and user provisioning using Truto's /tools API.
