# NMI MCP connector

Connect NMI to Claude, ChatGPT, Cursor or any MCP client through Elaichi, and your team can look up payments, issue refunds, send invoices and manage subscriptions and plans by asking in plain language, with every action logged.

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

## Facts

| | |
| --- | --- |
| Application | NMI |
| Category | Payment Gateway |
| AI tools | 68 |
| Authentication | Connects with an API key |
| Needs your own OAuth app | No |
| MCP endpoint | https://api.elaichi.ai/mcp |
| Works with | Claude, ChatGPT, Cursor, any MCP client, and the Elaichi Agent |
| Tools advertised by name | No. 68 tools is past the 30-tool threshold, so clients use `search_tools` and `execute_tool` |

## What you can ask once NMI is connected

- List all NMI invoices still open past due date.
- Refund the NMI payment on invoice 4821.
- Show yesterday's declined NMI sales by amount.

## Connect NMI in Elaichi

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

1. Open Connections, choose Add connection, and pick NMI.
2. Optionally set Share with, then press Connect.
3. Paste a NMI API key. One person generates a token in NMI and pastes it once. Everyone else works through Share with, and never sees it.

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

## Connect NMI to 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.

## Connect NMI to 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.

## Connect NMI to 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 NMI 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 NMI 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 NMI through Elaichi

### Look up a payment before answering a query

Finance. Pull up a single NMI transaction by its ID to check the amount, card details and status before replying to a customer or the bank.

### Refund or void a charge on the spot

Support. When a customer calls about a duplicate charge, void it if it has not settled or refund it if it has, without leaving the conversation.

### Draft, send and close invoices

Accounts receivable. Create an invoice in NMI from the details in an email, send it to the customer, then close it once payment arrives.

### Pause or change a customer's subscription

Billing. Find a customer's recurring subscription in NMI and update the amount, schedule or plan when their contract changes, or cancel it when they leave.

### Set up and tidy recurring plans

Operations. Create new pricing plans, list the ones already in NMI, and retire plans nobody is on anymore.

### Authorize a card, capture later

Sales. Run an authorization on a new customer's card to confirm it is good, then capture the payment once the order ships.

## Frequently asked questions

### How do I connect NMI to Claude?

First connect NMI in Elaichi by pasting in an API key from your NMI merchant account, which takes about a minute. Then in Claude go to Customize, then Connectors, then Add, and paste in https://api.elaichi.ai/mcp. There is no OAuth application to register and no client ID or secret to generate, so the NMI side is a single key and nothing else.

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

Yes. Once NMI 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 NMI once and every client your team uses picks it up.

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

With NMI connected, an agent can look up a payment by its ID, run a sale, authorize and capture a card, void or refund a charge, and create, update, send and close invoices. It can also create and update subscriptions and plans, or list what is already there. Because NMI offers a lot of actions, short concrete asks like "refund transaction 12345" work better than long paragraphs.

### Does connecting NMI give the AI access to my whole merchant account?

An agent working through NMI in Elaichi can only do what the API key it was connected with allows, and Elaichi can narrow that further but never widen it. Every call runs under the person who signed in to Elaichi, so a support agent's session cannot do more in NMI than that person is permitted to do.

### Can my team share one NMI connection?

Yes. One person connects NMI with the API key, shares the connection with a team in Elaichi, and nobody else ever sees or handles the key. Each teammate still signs in to Elaichi as themselves, so every refund or invoice sent through NMI is logged under the name of the person who asked for it.

### Can I stop an agent from refunding, voiding or deleting things in NMI?

Yes. In Elaichi you restrict NMI actions one at a time, so you can allow looking up payments and sending invoices while blocking refunds, voids or deleting subscriptions and plans. A blocked action is never shown to Claude, ChatGPT, Cursor or any other client, so no prompt, accidental or otherwise, can reach it.

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

When you offboard someone in Elaichi, their access to NMI through every connected client ends at once. If they had been using a shared NMI connection, it keeps working for everyone else on the team. If you want to remove NMI entirely, disconnecting it once in Elaichi removes it from Claude, ChatGPT, Cursor and every other client at the same time.

## All 68 NMI tools

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

- **NMI payments sale** (Action). Process a sale transaction in NMI — an authorization and capture in a single step. Pay with raw card details, an ACH bank account, a Collect.js payment_token, or a stored customer via customer_vault_id. Amounts are decimal strings (e.g. 10.00). Returns the transaction result including id, status, response (1 approved / 2 declined / 3 error), auth_code and response_text. Required: amount and a payment_details variant.
- **NMI payments auth** (Action). Process an authorization for a payment in NMI, to be used in conjunction with the capture endpoint to prepare the payment for settlement. Returns: transaction_id, condition, transaction_type, requested_amount, currency, authorization_code.
- **NMI payments credit** (Action). Process a credit in NMI without a prior payment, crediting funds directly to the customer's payment method. Returns: merchant, features, transaction_id, transaction_type, condition, processor_id, ponumber, order_description, order_id, customerid, customertaxid, website, shipping, currency, tax, surcharge, convenience_fee, misc_fee, misc_fee_name, cash_discount, tip, requested_amount,…
- **NMI payments validate** (Validate). Validate a payment method in NMI without processing a payment. Returns the validation result including transaction_id, transaction_type, condition, response_code, and response_text.
- **NMI payments capture** (Action). Capture a previously authorized payment in NMI. Returns the transaction object including transaction_id, condition, currency, requested_amount, and an action block with amount, action_type, success, response_code, and response_text. Required: payment_id.
- **NMI payments void** (Action). Void an unsettled NMI payment. Returns the transaction object including transaction_id, condition, transaction_type, requested_amount, currency, card, and action. Required: payment_id. Only payments that have not yet been settled can be voided; send an empty JSON body when no void_reason applies.
- **NMI payments refund** (Action). Refund a previously settled NMI payment back to the customer's payment method. Returns: transaction_id, condition, amount. Required: payment_id. Only settled transactions can be refunded.
- **Get single NMI payment by ID** (Get). Get a specific NMI payment by payment ID. Returns: transaction_id, transaction_type, condition, currency, requested_amount, billing_address, card, and action details. Required: id.
- **Create a NMI invoice** (Create). Create a new invoice in NMI and email it to the customer. Returns the created invoice object including its id. A JSON request body is required.
- **List all NMI invoices** (List). List all invoices for the merchant in NMI with optional filtering. Returns a collection of invoices including id, created_at, and updated_at for each record. Supports pagination.
- **Get single NMI invoice by ID** (Get). Get a specific NMI invoice by id. Returns the invoice object including its id and currency. Required: id.
- **Update a NMI invoice by ID** (Update). Update an existing NMI invoice by id. All variables besides currency may be updated; updating does not resend the invoice to the customer. Returns: id, currency, created_at, updated_at. Required: id.
- **NMI invoices close** (Close). Close an existing NMI invoice by invoice_id. Once closed, the invoice cannot be modified or paid. Returns: id, currency, created_at, updated_at. Required: invoice_id.
- **NMI invoices send** (Send). Email an existing NMI invoice to the customer. Takes no request body — send an empty JSON object. The invoice is addressed via the invoice_id parameter, and the email goes to the address on the invoice's billing contact. Returns the Invoice object. Required: invoice_id.
- **Create a NMI subscription** (Create). Create a recurring subscription in NMI. Attach the subscription to an existing plan via plan_id, or define the schedule inline with a plan object (amount plus day_frequency, or month_frequency with day_of_month). Pay with a stored customer (customer_vault_id in payment_details), raw card, ACH or payment_token. Returns the created Subscription including subscription_id and next_charge_date. Required: a plan reference and a payment_details variant.
- **List all NMI subscriptions** (List). List all NMI webhook subscriptions. Returns: id, callback_url, status, events, created_at, updated_at. Max 100 per page.
- **Get single NMI subscription by ID** (Get). Get a specific webhook subscription in NMI by id. Returns the subscription object including its id, callback_url, status, events, created_at, and updated_at. Required: id.
- **Update a NMI subscription by ID** (Update). Update an existing NMI subscription by id, modifying the subscribed events list or callback URL. Returns the updated subscription object including id, callback_url, events, status, created_at, and updated_at. Required: id.
- **Delete a NMI subscription by ID** (Delete). Delete an NMI subscription by id. The customer will no longer be charged. Returns: code, message. Required: id.
- **Create a NMI plan** (Create). Create a new recurring payment plan in NMI. Plans define recurring billing schedules that subscriptions can be associated with. Returns: id, name, amount, day_frequency, payments, month_frequency, day_of_month. Required: id, name, amount.
- **List all NMI plans** (List). List all recurring payment plans in NMI. Returns each plan's id, name, amount, day_frequency, payments, month_frequency, and day_of_month. Max 100 per page.
- **Get single NMI plan by ID** (Get). Get a specific NMI recurring payment plan by id. Returns: id, name, amount, day_frequency, payments, month_frequency, day_of_month. Required: id.
- **Update a NMI plan by ID** (Update). Update an existing NMI recurring payment plan. Returns the updated plan including id, name, amount, day_frequency, month_frequency, day_of_month, and payments. Required: id. Exercise caution — all customers subscribed to this plan will have their billing changed based on your edits.
- **Delete a NMI plan by ID** (Delete). Delete an NMI recurring payment plan by id. Returns an empty 204 response on success. Required: id.
- **Create a NMI customer** (Create). Create a customer in the NMI Customer Vault with one or more billing addresses and stored payment methods (card, ACH or Collect.js payment_token). Returns the created Customer including the vault id used for later charges. Required: billing (with payment_details).
- **List all NMI customers** (List). List customers stored in the NMI Customer Vault. Filter by customer vault id (exact or partial), name, company, email, billing or shipping address id, payment account number, creation date range, or expiring cards. Returns Customer objects with their billing and shipping addresses.
- **Get single NMI customer by ID** (Get). Get a single NMI customer from the Customer Vault by id. Returns the customer record including its customer vault id, billing addresses, and associated payment method details. Required: id.
- **Update a NMI customer by ID** (Update). Update an existing NMI customer in the customer vault, including bulk updates of billing and shipping addresses. Returns: customer_vault_id, billing, shipping. Required: id. All provided billing and shipping addresses will be updated.
- **Delete a NMI customer by ID** (Delete). Delete a customer from the NMI customer vault by id. This removes the customer and all associated billing and shipping addresses. Returns an empty 204 response on success. Required: id.
- **Create a NMI billing address** (Create). Add a new billing address to an existing NMI customer vault record. Returns the customer object including the billing address with first_name, last_name, address_1, city, state, postal_code, and country. Required: customer_id.
- **Get single NMI billing address by ID** (Get). Retrieve a specific billing address for an NMI customer vault customer. Returns: id, first_name, last_name, address_1, address_2, company, city, state, postal_code, country, email, phone, cell_phone, fax. Required: customer_id, id.
- **Update a NMI billing address by ID** (Update). Update an existing billing address for an NMI customer. Returns the updated billing address including first_name, last_name, address_1, city, state, postal_code, country, email, and phone. Required: customer_id, id.
- **Delete a NMI billing address by ID** (Delete). Delete a billing address from an NMI customer. The customer must retain at least one billing address after deletion. Returns an empty 204 response on success. Required: customer_id, id.
- **Create a NMI shipping address** (Create). Add a shipping address to an existing NMI Customer Vault customer. All address fields are optional strings. Returns the created shipping address including its id. Required: customer_id.
- **Get single NMI shipping address by ID** (Get). Get a specific NMI customer shipping address by id. Returns: id, first_name, last_name, address_1, address_2, company, city, state, postal_code, country, email, phone, fax. Required: customer_id, id.
- **Update a NMI shipping address by ID** (Update). Update an existing shipping address for an NMI customer. Returns the updated shipping address object including its id. Required: customer_id, id.
- **Delete a NMI shipping address by ID** (Delete). Delete a shipping address from an NMI customer. Returns an empty 204 response on success. Required: customer_id, id.
- **Create a NMI product** (Create). Create a product in the NMI product catalog, identified by a unique SKU, with cost, currency, optional category, tax/discount amounts and an optional base64 image. Returns the created Product. Required: product_sku, product_description, product_cost, product_currency.
- **List all NMI products** (List). List all products in NMI's Product Manager. Returns a list of product records including id, created_at, and updated_at.
- **Get single NMI product by ID** (Get). Get a single NMI product by id (SKU) from the Product Manager. Returns: id. Required: id.
- **Update a NMI product by ID** (Update). Update an existing product in the NMI Product Manager by id. Products can be used in invoices and other payment flows. Returns the updated product object. Required: id.
- **Delete a NMI product by ID** (Delete). Delete an NMI product from the Product Manager by id. Returns an empty 204 response on success. Required: id.
- **Create a NMI embedded component session** (Create). Create a short-lived session token for NMI embedded components that can be used to authenticate and fetch data. Returns: session_token, expires_at. The optional body accepts either gateway credentials (api_key, merchant_id) or merchant-central credentials (api_key, tenant_id, merchant_id).
- **List all NMI affiliates** (List). List sub-affiliate accounts under your NMI partner account. Returns: objectType, id, firstName, lastName, company, email, replyToEmail, phone, fax, url, address1, address2, city, state, zip, country, timezone, features, status, created, updated, parentAffiliateId, support, branding, accountInfo, billTo, rejectedCertificates.
- **Create a NMI merchant** (Create). Create a merchant account under your NMI partner account (v4 partner API). Field names are camelCase. Requires company and primary contact details, address, timezone, language, a username for the merchant's primary user, and accountInfo with the bank account used to bill the merchant. Returns the created Merchant object. Required: type, company, country, address1, city, state, zip, timezone, firstName, lastName, email, phone, language, username, accountInfo.
- **List all NMI merchants** (List). List all merchant accounts under your NMI partner account. Returns merchant records including id, company, email, status, type, created, and updated. The type filter accepts only gateway, test, splitFunding, or mobile.
- **Get single NMI merchant by ID** (Get). Get all details of a specific NMI merchant account by id. Returns: objectType, id, type, created, updated, firstName, lastName, company, email, phone, fax, url, address1, address2, city, state, zip, country, timezone, costPlan, status, externalIdentifier, lastTransactionDate, parentAffiliateId, accountInfo, features, needsPendingServicesActivated, payFacBillingPeriod, rejectedCertificates.…
- **Update a NMI merchant by ID** (Update). Update an NMI merchant by id — this PATCH endpoint supports three operations: assign a fee schedule, complete & send the welcome email, or agree to TOS and fees. Returns: objectType, id, type, created, updated, firstName, lastName, company, email, phone, fax, url, address1, address2, city, state, zip, country, timezone, costPlan, status, externalIdentifier, lastTransactionDate, parentAffiliateId,…
- **NMI fee schedules get fees** (Get). List all fees currently set on an existing NMI fee schedule. Returns each fee's objectType, feeType, name, sort, description, processor details, billMe flag, value, and applyTo targets. Required: fee_schedule_id.
- **List all NMI fee schedules** (List). Search all fee schedules available on your NMI account. Returns a list of fee schedule records including id, name, costPlan, currency, merchants, affiliates, isDefault, and isCustom. Required: maxResults (1-1000). Optionally filter by parentAffiliateId to narrow results to a specific affiliate's fee schedules.
- **Create a NMI ctv onboarding** (Create). Add (or upgrade) Customer Token Vault to an NMI gateway account. Returns per-network onboarding results including requestStatus, requestStatusCode, onboardStatus, and onboardId for each card network. Required: merchantId, applications. If upgrading from Customer Vault to Customer Token Vault, the old vault extension does not need to be disabled first.
- **NMI signup auth get token** (Get). Request an OAuth access token from NMI using the client_credentials grant. Returns: access_token, token_type, expires_in. Required: grant_type, client_id, client_secret. The token is valid for 60 minutes.
- **List all NMI packages** (List). List all available application packages in NMI. Returns: id, name, description.
- **Get single NMI package by ID** (Get). Get a single NMI application package by id, including the full package rules, field definitions, and collections required for creating an application. Returns: id, name, description, package_rules, fields, collections. Required: id.
- **List all NMI applications** (List). List NMI merchant applications with optional filtering by status, date range, package, and sort direction. Returns: id, package_id, status, created_at, updated_at.
- **Create a NMI application** (Create). Create a new NMI merchant application with a package, fields, and collections. Returns the full application object including id, package_id, status, fields, collections, created_at, and updated_at. Required: package_id.
- **Get single NMI application by ID** (Get). Get a single NMI merchant application by id. Returns the full application object including id, package_id, status, fields, collections, created_at, and updated_at. Required: id.
- **Update a NMI application by ID** (Update). Partially update an NMI merchant application by id with fields and collections. An application can only be updated when it is in draft status. Returns the full application object including id, package_id, status, fields, collections, created_at, and updated_at. Required: id.
- **NMI applications submit** (Action). Submit an NMI merchant application for underwriting review. Returns the full application object including id, package_id, status, fields, collections, created_at, and updated_at. Required: application.
- **NMI applications upload document** (Upload). Upload a supporting document to an NMI merchant application. Returns the uploaded document object including its id, type, and created_at. Required: application, type, file. Documents can only be uploaded while the application is in draft or underwriter_requested_information status; accepted file formats are PNG, JPG, JPEG, and PDF with a max size of 20 MB.
- **NMI applications get legal consent** (Get). Get the legal consent URL for an NMI merchant application. The returned url is used with the Embed Helper to embed the legal consent widget so the applicant can review and accept the legal terms. Required: application (the application ID, e.g. app_341c7b5b432a3158).
- **NMI applications download agreement** (Download). Download the signed agreement PDF for an NMI application. Returns the agreement as a binary PDF file (application/octet-stream, max 100 MB). The agreement can only be downloaded after the application has been submitted. Required: application.
- **NMI applications update info** (Update). Add additional information to an NMI application that is in the underwriter_requested_information status. Returns: code, message. Required: application, note.
- **List all NMI webhook subscriptions** (List). List all NMI webhook subscriptions. Returns: id, callback_url, status, events, created_at, updated_at.
- **Create a NMI webhook subscription** (Create). Create a new NMI webhook subscription with a callback URL, signing secret, and list of events. Returns the created subscription including id, callback_url, events, status, created_at, and updated_at. Required: callback_url, secret, events.
- **Get single NMI webhook subscription by ID** (Get). Get a single NMI webhook subscription by id. Returns: id, callback_url, status, events, created_at, updated_at. Required: id.
- **Update a NMI webhook subscription by ID** (Update). Update an NMI webhook subscription's subscribed events list or callback URL. Returns the updated subscription object including id, callback_url, events, status, and created_at. Required: id.
- **Delete a NMI webhook subscription by ID** (Delete). Delete an NMI webhook subscription by id. Returns: code, message. Required: id.
