usefulapi

Invoice Ninja MCP server. Manage Invoice Ninja clients, invoices, quotes, expenses, tasks and projects.

Claude

  1. Open Settings → Connectors → Add custom connector
  2. Paste this URL:
    https://invoice-ninja.usefulapi.io/mcp
  3. Authenticate with Invoice Ninja when prompted

Cursor · VS Code · Windsurf · Cline

Add to your MCP config, then reload & authorize:

{
  "mcpServers": {
    "invoice-ninja": {
      "url": "https://invoice-ninja.usefulapi.io/mcp"
    }
  }
}
live26 toolsFree 100 tool calls / monthPro $9/mo · $90/yr

Tools 26

ToolTypeWhat it does
invoiceninja_list_clientsread
List clients
List clients with balances and contacts, optionally searched by name, email or number. Invoice Ninja: GET /api/v1/clients.
invoiceninja_get_clientread
Get one client
Fetch one client by id, with contacts, address, balance and paid-to-date. Invoice Ninja: GET /api/v1/clients/{id}.
invoiceninja_list_invoicesread
List invoices
List invoices, filterable by client and payment status (paid / unpaid / overdue). status_id on each invoice: 1 draft, 2 sent, 3 partial, 4 paid, 5 cancelled, 6 reversed. Invoice Ninja: GET /api/v1/invoices.
invoiceninja_get_invoiceread
Get one invoice
Fetch one invoice by id — line items, totals, balance, dates, status and invitations. Invoice Ninja: GET /api/v1/invoices/{id}.
invoiceninja_list_quotesread
List quotes
List quotes (estimates), filterable by client and quote status. Invoice Ninja: GET /api/v1/quotes.
invoiceninja_get_quoteread
Get one quote
Fetch one quote by id — line items, totals, status and the invoice it was converted to (invoice_id), if any. Invoice Ninja: GET /api/v1/quotes/{id}.
invoiceninja_list_productsread
List products
List products / services in the catalog with price, cost and default taxes. Invoice Ninja: GET /api/v1/products.
invoiceninja_list_paymentsread
List payments
List payments received, with amount, date, refunded/applied totals and the invoices each was applied to (paymentables). Read-only: this server never records or refunds payments. Invoice Ninja: GET /api/v1/payments.
invoiceninja_list_expensesread
List expenses
List expenses, filterable by client and invoicing/payment state. Invoice Ninja: GET /api/v1/expenses.
invoiceninja_list_vendorsread
List vendors
List vendors (suppliers) with contacts and address. Invoice Ninja: GET /api/v1/vendors.
invoiceninja_list_tasksread
List tasks
List tasks / time entries with their time_log, duration, rate and linked client, project and invoice. Invoice Ninja: GET /api/v1/tasks.
invoiceninja_list_projectsread
List projects
List projects with client, budgeted hours, task rate, current hours and due date. Invoice Ninja: GET /api/v1/projects.
invoiceninja_list_recurring_invoicesread
List recurring invoices
List recurring invoice schedules with frequency, next send date and remaining cycles. Read-only. Invoice Ninja: GET /api/v1/recurring_invoices.
invoiceninja_create_clientwrite
Create a client
Create a client, optionally with contacts. Give at least a name or one contact. Invoice Ninja: POST /api/v1/clients.
invoiceninja_update_clientwrite
Update a client
Update a client's details; only the fields you pass change. Passing contacts replaces the contact list. Invoice Ninja: PUT /api/v1/clients/{id}.
invoiceninja_create_invoicewrite
Create an invoice
Create a DRAFT invoice for a client. It is not sent or emailed — use invoiceninja_mark_invoice_sent or invoiceninja_email_invoice afterwards. Invoice Ninja: POST /api/v1/invoices.
invoiceninja_update_invoicewrite
Update an invoice
Edit an invoice; only the fields you pass change, but line_items (if passed) replace every existing line. Does not send anything. Invoice Ninja: PUT /api/v1/invoices/{id}.
invoiceninja_mark_invoice_sentwrite
Mark an invoice sent
Mark a draft invoice as sent WITHOUT emailing it. This moves it out of draft and adds its amount to the client's balance. Invoice Ninja: GET /api/v1/invoices/{id}/mark_sent.
invoiceninja_email_invoicewrite
Email an invoice to the client
OUTWARD-FACING: sends a real email with the invoice to the client's invited contacts, and marks the invoice sent. Cannot be unsent — confirm with the user first. Invoice Ninja: POST /api/v1/invoices/bulk with action=email.
invoiceninja_create_quotewrite
Create a quote
Create a DRAFT quote (estimate) for a client. Nothing is emailed. Invoice Ninja: POST /api/v1/quotes.
invoiceninja_convert_quote_to_invoicewrite
Convert a quote to an invoice
Convert a quote into a new invoice (the quote is marked converted and links to it). Returns the new invoice. Invoice Ninja: GET /api/v1/quotes/{id}/convert_to_invoice.
invoiceninja_create_expensewrite
Create an expense
Log an expense, optionally tied to a vendor, client or project and flagged to be re-invoiced. Invoice Ninja: POST /api/v1/expenses.
invoiceninja_create_taskwrite
Create a task / log time
Create a task, optionally with logged time entries, for a client or project. Invoice Ninja: POST /api/v1/tasks.
invoiceninja_create_projectwrite
Create a project
Create a project for a client, with an optional hourly task rate, budget and due date. Invoice Ninja: POST /api/v1/projects.
invoiceninja_usage_statusmeta
Usage status (free-tier meter)
Report the caller's current free-tier usage this month: calls used, monthly limit, remaining, and whether the cap is reached. Read-only; does not count against the meter.
invoiceninja_upgrademeta
Upgrade to Pro (unlimited)
Subscribe to the Pro plan for UNLIMITED Invoice Ninja tool calls (the free tier caps monthly usage). Choose monthly ($9/month) or yearly ($90/year — 2 months free) billing. Returns a Stripe Checkout link to open in your browser; after payment your account upgrades automatically. Read-only; does not count against the meter.

Pricing

PlanPriceLimit
Free$0100 tool calls / month
Proper user$9/mo · $90/yrUnlimited

This is a Model Context Protocol endpoint — meant to be connected from an AI client, not opened in a browser. An invalid_token response at the URL is the auth gate working as designed; clients authenticate automatically.