Connect JustiFi to ChatGPT: Manage Business Onboarding & Terminals
Learn how to connect JustiFi to ChatGPT using a managed MCP server. Automate sub-merchant onboarding, hardware terminal orders, and complex payment workflows.
If you need to connect JustiFi to ChatGPT to automate sub-merchant onboarding, provision hardware terminals, or manage complex fee configurations, you need a Model Context Protocol (MCP) server. This server acts as the translation layer between ChatGPT's tool calls and JustiFi's REST APIs. You can either build and maintain this infrastructure yourself, or use a managed integration platform like Truto to dynamically generate a secure, authenticated MCP server URL. If your team uses Claude, check out our guide on connecting JustiFi to Claude or explore our broader architectural overview on connecting JustiFi to AI Agents.
Giving a Large Language Model (LLM) read and write access to a sprawling fintech ecosystem like JustiFi is a significant engineering challenge. You have to handle API token lifecycles, map massive JSON schemas to MCP tool definitions, and deal with strict financial data validation constraints. Every time an endpoint is updated or a schema changes, you have to update your server code, redeploy, and test the integration. This guide breaks down exactly how to use Truto to generate a secure, managed MCP server for JustiFi, connect it natively to ChatGPT, and execute complex workflows using natural language.
The Engineering Reality of the JustiFi API
A custom MCP server is a self-hosted integration layer. While the open MCP standard provides a predictable way for models to discover tools, the reality of implementing it against JustiFi's APIs is painful. You aren't just doing simple CRUD operations - you are orchestrating payments, compliance, hardware, and ledger logic, all of which have different design patterns and error formats.
If you decide to build a custom MCP server for JustiFi, you own the entire API lifecycle. Here are the specific integration challenges that break standard assumptions when working with JustiFi:
The Temporal Nature of Fee Configurations
In standard APIs, if you want to change a fee, you send a PATCH or PUT request. JustiFi does not allow you to update or delete active Standard Fee Configurations. It uses an append-only temporal table design. To change a fee, you must create a new configuration for an existing fee type. The system automatically "retires" the previous one by setting its effective_end timestamp. If your custom MCP server does not explicitly guide the LLM through this append-only logic in the tool schema descriptions, the model will attempt generic update operations, hallucinate success, and fail to alter the actual fee structures.
The Multi-Entity KYC/KYB Onboarding Graph
Onboarding a sub-merchant in JustiFi is not a single API call. It requires orchestrating a complex, highly relational data graph. You must first create a Business entity. Then, you must create one or more Owner Identity records. Next, you attach Legal Addresses to those identities. Finally, you generate document references to upload physical KYC evidence (like passports or utility bills) using presigned URLs. If an LLM is tasked with "onboarding a new merchant," it must execute these exact steps in a strict sequence, passing foreign keys (like business_id and identity_id) from one response to the next payload.
Two-Step Payment Captures and Hardware Sync
Payments in JustiFi often involve physical point-of-sale hardware. You don't just charge a card. You might generate a checkout session, push it to a specific terminal using create_a_justi_fi_terminals_pay, and wait for the customer to tap their card. Furthermore, authorized payments that use a manual capture strategy expire after exactly 7 days. Your AI workflows need to understand the difference between authorizing a payment, capturing a payment, and voiding an uncaptured payment within the 25-minute cancellation window.
Rate Limits and Exponential Backoff
Like any financial infrastructure, JustiFi enforces strict rate limits to maintain stability. It is critical to understand that Truto does not retry, throttle, or apply backoff on rate limit errors. When the JustiFi upstream API returns an HTTP 429 Too Many Requests, Truto passes that error directly back to the caller. Truto normalizes upstream rate limit info into standardized headers (ratelimit-limit, ratelimit-remaining, ratelimit-reset) per the IETF spec. Your AI agent or framework is fully responsible for catching the 429, inspecting the reset header, and applying exponential backoff.
The Managed MCP Approach
Instead of forcing your engineering team to build a custom Node.js or Python server that manually translates JustiFi REST endpoints into JSON-RPC 2.0 MCP tools, you can use Truto.
Truto's infrastructure dynamically generates MCP tools from JustiFi's OpenAPI specifications and curated documentation records. It handles the authentication layer, normalizes the schemas into the exact format Claude Desktop or ChatGPT expects, and exposes a single URL. When ChatGPT calls a tool, Truto validates the payload, routes the request to JustiFi, and returns the strictly typed response.
How to Create the JustiFi MCP Server
You can generate an MCP server for your connected JustiFi account using either the Truto UI or the REST API.
Method 1: Via the Truto UI
- Log into your Truto dashboard and navigate to the integrated account page for your JustiFi connection.
- Click the MCP Servers tab.
- Click Create MCP Server.
- Select your desired configuration. You can filter the tools by method type (e.g., only
readoperations for a reporting agent) or by tags. - Click Save and copy the generated MCP server URL (e.g.,
https://api.truto.one/mcp/a1b2c3d4e5f6...).
Method 2: Via the Truto API
For teams building automated provisioning pipelines, you can generate the MCP server programmatically by sending a POST request to the Truto API. This allows you to generate scoped, ephemeral servers for specific agent sessions.
curl -X POST https://api.truto.one/integrated-account/{integrated_account_id}/mcp \
-H "Authorization: Bearer YOUR_TRUTO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "JustiFi Onboarding Agent",
"config": {
"methods": ["read", "write"],
"tags": ["entities", "terminals", "accounts"]
}
}'The API provisions a secure token, links it to the specific JustiFi tenant, and returns the ready-to-use endpoint.
How to Connect the MCP Server to ChatGPT
Once you have your Truto MCP URL, connecting it to ChatGPT takes less than a minute. You can do this via the application UI or a configuration file.
Method 1: Via the ChatGPT UI
- Open ChatGPT and navigate to Settings -> Apps -> Advanced settings.
- Enable the Developer mode toggle (MCP support is currently behind this flag).
- Under the MCP servers / Custom connectors section, click to add a new server.
- Provide a recognizable name, such as "JustiFi Ops Agent".
- Paste the Truto MCP server URL into the Server URL field.
- Click Save. ChatGPT will immediately connect, perform the MCP initialization handshake, and list the available JustiFi tools.
Method 2: Via Manual Configuration File
If you are deploying a custom agent framework, using Cursor, or working with a desktop client that requires file-based configuration, you can connect using the standard SSE transport wrapper.
{
"mcpServers": {
"justifi-prod": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-sse",
"https://api.truto.one/mcp/YOUR_TRUTO_TOKEN"
]
}
}
}JustiFi Hero Tools
Truto exposes a massive surface area of the JustiFi API. To keep your LLM focused, you should select only the highest-leverage operations for your specific workflow. Here are the hero tools essential for onboarding, hardware management, and fee orchestration.
create_a_justi_fi_checkout
This tool initiates the collection of a card, ACH, or hardware card reader payment in a single flow. It is the primary entry point for capturing revenue across different mediums.
"Generate a new checkout session for $1,500.00 USD for order #8849. The customer will be paying via terminal, so set the payment description to 'In-store Hardware Purchase'."
create_a_justi_fi_entities_businesis
This tool creates a new business entity in JustiFi. It is the first required step when onboarding a new sub-merchant to your platform. It requires legal names, classifications, and contact emails.
"We just signed Acme Corp to the platform. Create a new business entity for them. Their legal name is 'Acme Corporation LLC', classification is 'retail', and the primary contact email is admin@acmecorp.com."
create_a_justi_fi_entities_identity
After creating a business entity, this tool is used to attach human owners to the business for KYC verification. It requires personal details like legal name, ownership percentage, and the last 4 digits of their SSN.
"Take the business ID you just created for Acme Corp and attach an owner identity to it. The owner is Jane Doe, she owns 100% of the company, and her contact email is jane@acmecorp.com."
create_a_justi_fi_terminals_order
This tool orchestrates the physical logistics of ordering point-of-sale hardware from JustiFi's technology partners. You pass the sub-account ID, the order items (hardware models), and shipping details.
"Place a terminal order for the new Acme Corp sub-account. They need two 'Verifone P400' units shipped to their headquarters at 123 Main St, Austin TX, 78701."
create_a_justi_fi_sub_account_fee_configuration
This tool creates a Standard Fee Configuration for a specific sub-account. Remember that creating a new configuration automatically sets the effective_end on the previous one.
"Update the fee structure for sub-account ID acc_98765. Create a new fee configuration with a variable rate of 2.9% and a flat transaction fee of 30 cents. This should override their previous active fee schedule."
create_a_justi_fi_dispute_response
When a chargeback occurs, this tool submits a response to the card network. You can use this to either formally contest the dispute with evidence or forfeit the disputed amount entirely.
"Look up dispute ID dsp_44321. We have tracking information proving delivery. Submit a dispute response contesting the chargeback and do not forfeit the funds."
To view the complete schema definitions, required parameters, and the full list of available operations, visit the JustiFi integration page.
Workflows in Action
AI agents create value when they combine multiple tools to complete end-to-end operational workflows. Here is how a ChatGPT instance powered by a Truto MCP server executes complex JustiFi operations.
Scenario 1: Autonomous Sub-Merchant Onboarding
Customer success teams spend hours manually keying KYC data into payment gateways. An AI agent can parse an intake form and execute the entire onboarding graph autonomously.
"A new vendor, Zenith Cafe, just submitted their onboarding form. Their legal name is Zenith Coffee LLC, they operate in food_and_beverage. The sole owner is John Smith (john@zenithcafe.com, SSN last four: 9999, 100% ownership). Create their business record, attach the owner identity, and create a physical address record for 456 Elm St, Seattle WA 98101."
Execution Steps:
- The agent calls
create_a_justi_fi_entities_businesiswith the legal name and classification, returning a newbusiness_id. - The agent extracts the
business_idand callscreate_a_justi_fi_entities_identity, passing John Smith's details, ownership percentage, and SSN data to create the KYC record. - Finally, the agent calls
create_a_justi_fi_entities_addreseto link the physical location to the newly created entity records.
The user receives a summary confirming the successful creation of the business, identity, and address, along with the JustiFi platform ID for the new sub-merchant.
sequenceDiagram
participant User
participant Agent as ChatGPT Agent
participant MCP as Truto MCP Server
participant Upstream as JustiFi API
User->>Agent: "Onboard Zenith Cafe..."
Agent->>MCP: Call create_a_justi_fi_entities_businesis
MCP->>Upstream: POST /entities/businesses
Upstream-->>MCP: business_id: biz_123
MCP-->>Agent: Result: biz_123
Agent->>MCP: Call create_a_justi_fi_entities_identity (biz_123)
MCP->>Upstream: POST /entities/identities
Upstream-->>MCP: identity_id: id_456
MCP-->>Agent: Result: id_456
Agent->>MCP: Call create_a_justi_fi_entities_addrese
MCP->>Upstream: POST /entities/addresses
Upstream-->>MCP: address_id: addr_789
MCP-->>Agent: Result: Success
Agent-->>User: "Onboarding complete. Business ID: biz_123."Scenario 2: Dynamic Terminal Checkout Routing
Retail support teams often need to trigger ad-hoc payments on physical hardware while a customer is standing at a desk.
"Find the active terminal registered to sub-account acc_777. Once you find the terminal ID, generate a checkout session for $250.00 and push it directly to that terminal screen for the customer to pay."
Execution Steps:
- The agent calls
list_all_justi_fi_terminals, filtering the results to matchaccount_idacc_777 and checking for a status ofonline. - Upon finding the terminal (e.g.,
term_999), the agent callscreate_a_justi_fi_checkoutfor $250.00, returning acheckout_id. - The agent calls
create_a_justi_fi_terminals_pay, passing both thecheckout_idand theterm_999ID to push the payment session to the physical device.
The user receives confirmation that the payment prompt is now live on the specific hardware device in the store.
Security and Access Control
Exposing your financial infrastructure to an LLM requires strict boundary setting. Truto provides multiple mechanisms to secure your JustiFi MCP servers:
- Method Filtering: Restrict servers to specific operational categories. A reporting agent can be limited to
readtools, completely preventing it from accidentally creating checkouts or modifying fees. - Tag Filtering: Limit the server to specific domains, such as exposing only
terminalsandorderstools to an IT hardware management agent, while hiding allpayoutstools. - Expiration Controls: Use the
expires_atparameter to generate ephemeral MCP servers. This is ideal for giving temporary access to a contractor or an automated audit workflow. - API Token Auth: Enable
require_api_token_authto enforce a second layer of security. The client must present a valid Truto API token in addition to the standard MCP URL token, ensuring that only authenticated developers can execute tool calls.
Integrating conversational AI directly into your payment operations changes the trajectory of your product. Instead of writing custom orchestration layers to manage JustiFi's complex onboarding and ledger logic, you can use Truto to auto-generate the tooling. This allows your engineering team to focus on building intelligent risk models, automated dispute resolution flows, and better merchant experiences, rather than maintaining boilerplate API schemas and OAuth pipelines.
:::cta{buttonText="Talk to us" buttonUrl="https://cal.com/truto/partner-with-truto"} Let's build your AI integration strategy together. :::
FAQ
- Does Truto automatically retry JustiFi API requests when rate limited?
- No. Truto passes HTTP 429 Too Many Requests errors directly back to the caller, normalizing the rate limit information into standard headers (ratelimit-reset). Your agent is responsible for implementing retry and exponential backoff logic.
- How do I update a fee configuration in JustiFi using the MCP server?
- JustiFi fee configurations use a temporal design and cannot be updated directly. You must use the create_a_justi_fi_sub_account_fee_configuration tool to create a new one, which automatically retires the previous configuration.
- Can I limit ChatGPT to only reading JustiFi data?
- Yes. When creating the Truto MCP server, you can apply method filtering to only expose 'read' operations, ensuring the AI agent cannot create payments or modify records.