# Tipalti MCP connector

The Tipalti connector brings payees, invoices, payments, payment terms and GL accounts into Claude, ChatGPT, Cursor and the Elaichi Agent, so each person on your finance team works with live Tipalti records inside their own access.

Source: https://elaichi.ai/connectors/tipalti/

## Facts

| | |
| --- | --- |
| Application | Tipalti |
| Category | Accounting |
| AI tools | 36 |
| Authentication | Connects with an API key |
| Bring your own OAuth app | Yes |
| MCP endpoint | https://api.elaichi.ai/mcp |
| Works with | Claude, ChatGPT, Cursor, any MCP client, and the Elaichi Agent |
| Tools advertised by name | No. Connected tools are never listed one by one, however few there are. The endpoint advertises `search_tools` and `execute_tool` instead |

## What you can ask once Tipalti is connected

- Which Tipalti invoices are still unpaid past their payment terms?
- List every payment sent to Acme Supplies this quarter.
- Update our top twenty payees to net 30 payment terms.

## Connect Tipalti in Elaichi

This happens once for the organization, before any client is involved.

1. Open Connections, choose Add connection, and pick Tipalti.
2. Optionally set Share with, then press Connect.
3. Supply your own Tipalti app, then approve. Tipalti needs an OAuth app you register yourself, so bring its client ID and secret. One person does this once for the organization.

Credentials are vaulted and nobody, including the AI, reads them back. The connection becomes a toolbox immediately, so you can curate which Tipalti tools are exposed, rename them, or freeze arguments before anyone points a client at it.

## Tipalti MCP connector for Claude

Endpoint: https://api.elaichi.ai/mcp

1. Open Customize, then Connectors.
2. Press Add.
3. Name it, paste the MCP server URL, then Continue.
4. Sign in and approve.

On Team and Enterprise, an Owner adds it once. Everyone else turns it on for themselves.

## Tipalti MCP connector for ChatGPT

Endpoint: https://api.elaichi.ai/mcp

1. Open Plugins, then press the + button.
2. Name it and paste the endpoint into Server URL.
3. Leave Authentication on OAuth, then tick the risk acknowledgement.
4. Press Create, then sign in and approve.

Works on the web today. The plugin directory lives at chatgpt.com/plugins.

## Tipalti MCP connector for Cursor

Endpoint: https://api.elaichi.ai/mcp

1. Open `~/.cursor/mcp.json`.
2. Add the endpoint under `mcpServers`.
3. Reload Cursor, then sign in and approve.

Set up per machine, so repeat it on each computer you work from.

## Connect Tipalti to any MCP client

Endpoint: https://api.elaichi.ai/mcp

1. Add the endpoint as a remote MCP server.
2. Sign in and approve.

The Elaichi Agent already has these tools, with nothing to set up.

## What the consent screen decides

Only Read is granted by default, which is not enough to call a Tipalti tool. Over MCP there is no trusted place to confirm a write in the moment, so the consent screen is the standing approval rather than a formality. Grant Read and Run tools. Think hard before granting Delete, which reaches into connected apps and cannot be undone.

## What teams do with Tipalti through Elaichi

### Check which invoices are still waiting

Accounts payable. Ask which Tipalti invoices are open, overdue or sitting in a batch, and get a plain list with amounts and payees instead of paging through the invoice screen.

### Build a payment batch before the run

Accounts payable. Pull together the invoices due this week into a Tipalti payment batch, then review the batch total before anyone releases funds.

### Trace a payment a vendor says is missing

Finance. Look up the payment in Tipalti, see its status and which invoice it settled, and answer the vendor while they are still on the phone.

### Set up a new vendor as a payee

Procurement. Create the payee in Tipalti from the details in the signed contract, and update the record later when their bank or address changes.

### Keep payment terms consistent across vendors

Controller. List every payment term in Tipalti, spot the odd ones, and update payees in bulk so the whole vendor base sits on the terms finance agreed.

### Code invoices to the right GL account

Accounting. Ask which GL accounts and tax codes exist in Tipalti, add a missing tax code, and make sure a new invoice batch lands on the correct accounts.

## Frequently asked questions

### How do I connect Tipalti to Claude?

Connect Tipalti in Elaichi first, then in Claude go to Customize, then Connectors, then Add, and paste https://api.elaichi.ai/mcp. Tipalti's own sign-in step asks for an API key, which comes from an OAuth application your Tipalti admin registers inside Tipalti, so one person brings that client ID and secret once. After that, everyone else simply signs in as themselves and never handles a credential.

### Does Tipalti work with ChatGPT and Cursor as well as Claude?

Yes. Once Tipalti is connected in Elaichi, the same endpoint, https://api.elaichi.ai/mcp, works in Claude, ChatGPT, Cursor, any other MCP client and the Elaichi Agent. You connect Tipalti once and every client picks it up.

### What can an AI agent actually do with my Tipalti data?

It can list and look up Tipalti invoices, payments, payees, payer entities, payment terms, GL accounts and custom fields, and answer questions about them in plain language. It can also create payees, invoice batches, payment batches, payment terms and tax codes, and update payees one at a time or in bulk. Short, concrete asks such as "show me overdue invoices from Acme" work better than long sentences.

### Does connecting Tipalti give the AI access to everything in my account?

No. Every call to Tipalti runs inside the access of the person who signed in, so the AI sees only the payees, invoices and payments that person can already see in Tipalti. Elaichi can narrow that access further with restrictions, and it never widens it beyond what Tipalti itself allows.

### Can my team share one Tipalti connection?

Yes. One person connects Tipalti in Elaichi and shares the connection with a team, and nobody else ever sees or handles the API key or client secret. Each teammate still signs in as themselves, so the audit log names the actual person who created a payee or opened a payment batch.

### Can I stop an agent from deleting or changing things in Tipalti?

Yes. Restrictions in Elaichi apply per action, so you can allow reading Tipalti invoices and payments while blocking the creation of payment batches or updates to payees. A restricted action is never advertised to Claude, ChatGPT or any other client, so no prompt can reach it.

### What happens to a Tipalti connection when someone leaves?

Offboarding that person in Elaichi ends their access to Tipalti through every client at once. If they were using a shared Tipalti connection, it keeps working for everyone else on the team. If you disconnect Tipalti in Elaichi entirely, it disappears from Claude, ChatGPT, Cursor and the Elaichi Agent in one step.

### Does the Tipalti MCP connector work with Gemini, Codex, Claude Code or other MCP clients?

Yes. Tipalti is reached over the same MCP endpoint every client uses, so anything that speaks MCP can call it — Gemini, Codex, Claude Code, Windsurf, Cline, Zed and OpenCode among them — alongside Claude, ChatGPT, Cursor, and the Elaichi Agent. The tools on offer and the access behind them are identical whichever client asks. Only the setup screen differs.

## All 36 Tipalti tools

Every tool below is callable through https://api.elaichi.ai/mcp once Tipalti is connected, subject to the toolbox it is in and the restrictions on the caller.

- **List all Tipalti custom fields** (List). List Tipalti custom fields according to search/filtering criteria; if no filter is specified, all custom fields are returned. Returns each custom field's id, externalId, name, description, resources, valueType, isActive, and attributes.
- **Get single Tipalti custom field by ID** (Get). Get a specific Tipalti custom field by id. Returns the full custom field object including id, externalId, name, description, resources, valueType, isActive, and attributes. Required: id.
- **List all Tipalti gl accounts** (List). List Tipalti GL accounts, optionally filtered by id, externalId, isClosed, or category; all accounts are returned when no filter is given. Returns for each account: id, externalId, name, number, currency, isClosed, report1099Type, category, erpAccountType, and payerEntityIds.
- **Get single Tipalti gl account by ID** (Get). Get a single Tipalti GL account by id. Returns the full account object including id, externalId, name, number, currency, isClosed, report1099Type, category, erpAccountType, and payerEntityIds. Required: id.
- **Create a Tipalti invoice batch** (Create). Create a Tipalti invoice batch to initiate asynchronous invoice creation. Returns a batch header with id, status, timeCreated, and operationType. Requires batchHeader and items; each invoice requires batchItemId, refCode, subject, invoiceDate, currency, payeeId, payerEntityId, apAccountId, customFieldValues, and lines. Max 200 invoices per batch, 100 lines per invoice.
- **Get single Tipalti invoice batch by ID** (Get). Get a Tipalti invoice batch upload summary by id. Returns the batch's processing status in batchHeader (status, timeCreated, timeCompleted, successfulItemsCount, failedItemsCount), the per-invoice results in items (batchItemId, id, status), and batch-level errors in batchErrors. Required: id.
- **List all Tipalti invoices** (List). List Tipalti invoices according to search/filtering criteria; all invoices are returned when no filter is specified. Returns: id, invoiceNumber, subject, payeeVatNumber, invoiceDate, dueDate, netAmount, taxAmount, totalAmount, paidAmount, unpaidAmount, payeeId, creationDate, updatedDate, description, refCode, status, payerEntityId, apAccountId, incomeType, customFieldValues, lines, links.
- **Get single Tipalti invoice by ID** (Get). Get a Tipalti invoice by id. Returns the full invoice object including id, invoiceNumber, refCode, status, amount details, custom field values, invoice lines, and related resource links. Required: id.
- **Create a Tipalti payee** (Create). Create a new payee in Tipalti from the provided details. Returns the created payee including its id, refCode, status, entityType, contactInformation, paymentMethod, and customFieldValues. Requires refCode (the payee's unique reference code). When entityType is INDIVIDUAL, contactInformation.firstName and lastName are required; when COMPANY, contactInformation.companyName is required.
- **List all Tipalti payees** (List). List payees in Tipalti according to search/filtering criteria; if no filter is given, all payees are returned. Returns payee records including id, refCode, status, isPayable, contactInformation, and paymentMethod. Filter by id, refCode, status, isAccountClosed, contact fields, or lastChangeDateTimeUTC.
- **Get single Tipalti payee by ID** (Get). Get a single payee in Tipalti by its id. Returns the full payee record including id, refCode, status, entityType, isPayable, contactInformation, paymentMethod, and customFieldValues. Required: id.
- **Update a Tipalti payee by ID** (Update). Update a payee in Tipalti by id. Omitted parameters are left unchanged; null or empty values delete the field, except entityType, status, contactInformation, and customFieldValues, which can't be null or empty. Returns the updated payee including id, refCode, status, isPayable, and contactInformation. Required: id.
- **Tipalti payees bulk update** (Update). Update a payee's payment method in Tipalti by id. Returns the updated method including paymentMethodType, currency, and paymentMethodInformation. Required: payee_id, paymentMethodType, and paymentMethodInformation. PayPal and check methods apply to US payees only, and currency can't be changed via the API.
- **List all Tipalti payer entities** (List). List Tipalti payer entities, optionally filtered by id, entityName, legalName, isDefault, or brandName. Returns: id, entityName, legalName, isDefault, brandName, externalId, incomeTypes. All payer entities are returned when no filter is specified.
- **Get single Tipalti payer entity by ID** (Get). Get a single Tipalti payer entity by id. Returns: id, entityName, legalName, isDefault, brandName, externalId, incomeTypes. Required: id.
- **Create a Tipalti payment batch** (Create). Create a payment batch in Tipalti that joins a list of payment instructions into a single request. Returns: id. Required: paymentInstructions — each instruction requires payeeId, amountSubmitted, and refCode. Batches with more than 5,000 instructions return an error.
- **Get single Tipalti payment batch by ID** (Get). Get the upload summary for a Tipalti payment batch by id, including its creation status. Returns: id, status, name, submissionDateTime, isValidForSubmission, fundsProvidersSummary, exchangeRateCautionBufferPercentage, paymentsBatchErrors. Required: id. Once the batch is created, verify each individual payment instruction's status via the payment instructions endpoint.
- **Create a Tipalti payment term** (Create). Create a payment term in Tipalti with an ERP external ID, a name, and the number of business days added to the invoice date to determine the due date. Returns: id, externalId, name, days, isDefault. Requires externalId, name, and days.
- **List all Tipalti payment terms** (List). List Tipalti payment terms, optionally filtered by id, name, externalId, days, or isDefault; all terms are returned when no filter is applied. Returns: id, externalId, name, days, isDefault.
- **Get single Tipalti payment term by ID** (Get). Get a Tipalti payment term by id. Returns: id, externalId, name, days, isDefault. Required: id.
- **Update a Tipalti payment term by ID** (Update). Partially update an existing Tipalti payment term by id with your requested changes. Returns the updated term including id, externalId, name, days, and isDefault. Required: id.
- **List all Tipalti payments** (List). List Tipalti payments matching pre-defined search and filter criteria (id, payeeId, batchId, status, refCode, amountSubmitted, scheduledDate, submissionDate, valueDate); if no filter is specified, all payments are returned. Returns: id, batchId, payeeId, payerEntityId, refCode, providerTransactionRefCode, eWalletMessage, bankingMessage, emailSubject, submissionDate, scheduledDate, valueDate,…
- **Get single Tipalti payment by ID** (Get). Get a single Tipalti payment by its id. Returns the full payment object including id, status, detailedStatus, payeePaidAmount, amountSubmitted, fees, exchangeRates, tax, and customFieldValues. Required: id.
- **Create a Tipalti tax code** (Create). Create a new tax code in Tipalti. Returns the created tax code including its id, externalId, name, rate, isActive, and payerEntityIds. Requires name, rate, isActive, and externalId.
- **List all Tipalti tax codes** (List). List Tipalti tax codes. Returns each tax code's id, externalId, name, rate, isActive, and payerEntityIds.
- **Get single Tipalti tax code by ID** (Get). Get a Tipalti tax code by id. Returns the tax code's id, externalId, name, rate, isActive, and payerEntityIds. Required: id.
- **Update a Tipalti tax code by ID** (Update). Update an existing Tipalti tax code by id. Returns the updated tax code including its id, externalId, name, rate, isActive, and payerEntityIds. Required: id.
- **Create a Tipalti custom field value option** (Create). Create a new value option for a custom field in Tipalti. Returns the created value option object including id, externalId, isActive, payerEntityIds, and value. Required: custom_field_id, externalId, and value.
- **Get single Tipalti custom field value option by ID** (Get). Get a single custom field value option by id in Tipalti. Returns: id, externalId, isActive, payerEntityIds, value. Required: custom_field_id and id.
- **List all Tipalti custom field value options** (List). List custom field value options for a specific custom field in Tipalti, optionally narrowed with a filter on id, externalId, isActive, valueOption, or payerEntityIds. Returns: id, externalId, isActive, payerEntityIds, value. Required: custom_field_id.
- **Update a Tipalti custom field value option by ID** (Update). Update an existing value option for a custom field in Tipalti. Returns the updated value option object including id, externalId, isActive, payerEntityIds, and value. Required: custom_field_id and id.
- **Get single Tipalti invoice line by ID** (Get). Get a specific invoice line in Tipalti by its id. Returns: id, description, quantity, unitPrice, netAmount, taxAmount, totalAmount, taxCodeId, expenseAccountId, customFieldValues. Required: invoice_id and id.
- **List all Tipalti invoice lines** (List). List invoice lines for a Tipalti invoice by its invoice_id. Returns: id, description, quantity, unitPrice, netAmount, taxAmount, totalAmount, taxCodeId, expenseAccountId, customFieldValues. Required: invoice_id.
- **List all Tipalti payment batch instructions** (List). List all individual payment instructions in a Tipalti payment batch by its tracking batch id. Returns: id, refCode, payeeId, amountSubmitted, scheduledDate, instructionStatus, alerts. Required: payment_batch_id.
- **Create a Tipalti payee invitation** (Create). Create a Supplier Hub invitation for a payee in Tipalti using the payee's id. Returns: payeeId, sentTime, status. Required: payee_id.
- **Get single Tipalti payee invitation by ID** (Get). Get a payee's Supplier Hub invitation in Tipalti by payee id. Returns: payeeId, sentTime, status. Required: id.
