MCP server and API

LotsInvoice for
your AI agent.

Draft invoices and quotes, check the totals, send them with a PDF and a client portal link, record payments, chase late invoices and see who owes what, from your agent or the LotsInvoice dashboard. Invoices fit your business: item and accounting codes, several taxes per line, custom columns and nine designs.

https://api.lotsinvoice.com/mcp
80Tools

Ask your agent, for example.

Once LotsInvoice is connected, plain requests like these work.

  • “Invoice Acme for 12 hours of design at $90, net 15.”
  • “Who owes me money right now?”
  • “Set up a monthly retainer for Bright Co at $2,000.”

Connect in two minutes.

Claude

Settings → Connectors → Add custom connector. Paste the URL, connect, and sign in with your Lots account.

ChatGPT

Plugins → + → Add custom MCP server. Name it, enter the URL under Connection, choose OAuth, tick I understand and want to continue, then Create as a plugin. Install it, sign in, and type @ in a new chat to pick it. Full MCP is on Business, Enterprise and Edu, on the web; Pro is read and fetch only.

Claude Code

claude mcp add --transport http lots-invoice https://api.lotsinvoice.com/mcp

Codex

codex mcp add lots-invoice --url https://api.lotsinvoice.com/mcp

Cursor, Windsurf and others

{
  "mcpServers": {
    "lots-invoice": {
      "url": "https://api.lotsinvoice.com/mcp"
    }
  }
}

Cloud agents without MCP

Give the agent https://api.lotsinvoice.com/docs.md and an API key from lotstech.com/api. It calls the REST API with Authorization: Bearer <key>.

Every server uses OAuth: your agent acts as you, inside your own roles and workspaces. You can disconnect it at any time from the app.

80 tools, also REST endpoints.

Each tool is available over MCP and as a REST endpoint under https://api.lotsinvoice.com/api/v1/lotsinvoice.

Accept Invitation

POST /invitations/accept

Accept an invitation with the token from its link (signed in with the invited email).

Apply Credit

POST /businesses/:business_id/documents/:document_id/apply-credit

Apply the customer's available credit (overpayments, credit notes) to an invoice.

Apply Preset

POST /businesses/:business_id/preset

Set up columns, labels, titles, tax groups and declarations for a region: us_freelancer, us_sales_tax, eu_vat, uk_vat, india_gst, india_export_lut. Tax groups are created only from tax_rates you give (ask the owner; never guess). A starting point to check with their accountant.

Archive Business

POST /businesses/:business_id/archive

Archive a business: billing for it stops, nothing is deleted, sent links keep working. Owner only.

Archive Customer

POST /businesses/:business_id/customers/:customer_id/archive

Archive (or restore: true) a customer. Nothing is deleted.

Cancel Invitation

DELETE /businesses/:business_id/invitations/:invitation_id

Cancel a pending invitation.

Check Template

POST /businesses/:business_id/templates/check

Check a template (html body + css) without saving: forbidden content, unknown placeholders, missing required data, and warnings.

Convert Estimate

POST /businesses/:business_id/documents/:document_id/convert

Turn an estimate into a draft invoice.

Create Business

POST /businesses

Create a business (the entity that sends invoices). Each business is one paid unit: it uses a plan slot or LotsTech Credits (new accounts get free credits). Ask the person for the real legal name, address, email and registration IDs; never invent them.

Create Checkout

POST /billing/checkout

A checkout link for a plan (starter, pro, business; monthly or annual) or a credits top-up (amount_usd, minimum 10). Show the link; the person pays in their browser.

Create Credit Note

POST /businesses/:business_id/credit-notes

Draft a credit note. With invoice_id it defaults to that invoice's balance and is applied to it when issued; the rest becomes customer credit.

Create Customer

POST /businesses/:business_id/customers

Add a customer. Ask for details you do not have; never invent addresses or tax IDs. Returns what is missing.

Create Declaration

POST /businesses/:business_id/declarations

Save a statement to print on documents, e.g. "Supply meant for export under LUT without payment of IGST" or "Reverse charge applies".

Create Estimate

POST /businesses/:business_id/estimates

Draft an estimate (quote). due_date is "valid until". The customer can accept it in the portal; convert_estimate turns it into an invoice.

Create Invoice

POST /businesses/:business_id/invoices

Draft an invoice. Totals are computed exactly (discounts before tax, several taxes per line). It stays a draft: show the totals to the person and ask before send_document.

Create Item

POST /businesses/:business_id/items

Save a product or service with its price, code (SKU, HSN/SAC), unit and default tax.

Create Recurring

POST /businesses/:business_id/recurring

Repeat an invoice on a schedule (document_id), e.g. a monthly retainer. Line text may use {period}, {month}, {year}. mode draft (review first) or send (automatic).

Create Tax

POST /businesses/:business_id/taxes

Save a tax from rates the owner gives you (never guess a rate): one component (name + rate) or several (components), e.g. "GST 18% intra-state" = CGST 9 + SGST 9, or "Sales tax" = State 6.25 + County 2.

Create Template

POST /businesses/:business_id/templates

Save a custom template after it passes check_template. Use it with template "custom:<id>".

Delete Draft

DELETE /businesses/:business_id/documents/:document_id

Delete a draft that was never sent.

Delete Payment

DELETE /businesses/:business_id/payments/:payment_id

Remove a recorded payment (kept for history, no longer counted).

Duplicate Document

POST /businesses/:business_id/documents/:document_id/duplicate

Copy a document into a new draft, optionally for another customer or as another type.

Export Business

GET /businesses/:business_id/export

Everything about the business as JSON, with PDF links valid 7 days. Owner only.

Get Aging Report

GET /businesses/:business_id/reports/aging

Money owed by age (current, 1-30, 31-60, 61-90, 90+ days), per currency and customer.

Get Billing

GET /billing

Your LotsInvoice plan or credits, businesses in use, rates and plans to choose from.

Get Business

GET /businesses/:business_id

Get one business with its settings and what is still missing (next_steps).

Get Customer

GET /businesses/:business_id/customers/:customer_id

One customer with open balance, available credit and recent documents.

Get Document

GET /businesses/:business_id/documents/:document_id

One document with lines, totals, versions, payments and activity (viewed, reminders, portal notes).

Get Document Pdf

GET /businesses/:business_id/documents/:document_id/pdf

A download link (valid 1 hour) for the PDF. Drafts render on demand, marked DRAFT.

Get Document Preview

GET /businesses/:business_id/documents/:document_id/preview

A preview link (HTML, valid 1 hour), or the HTML itself with include_html.

Get Payments Report

GET /businesses/:business_id/reports/payments

Payments received by method, per currency.

Get Portal Link

GET /businesses/:business_id/customers/:customer_id/portal-link

The customer's portal link (view and download documents, pay, accept estimates), optionally to one document.

Get Revenue Report

GET /businesses/:business_id/reports/revenue

Revenue (excluding tax) by month and by customer, per currency.

Get Settings

GET /businesses/:business_id/settings

Numbering, titles, defaults, payment options, reminders, layout (columns, custom fields, blocks, labels), theme and signature.

Get Statement

GET /businesses/:business_id/customers/:customer_id/statement

A customer statement: opening balance, invoices, credit notes, payments and closing balance per currency.

Get Summary

GET /businesses/:business_id/summary

What needs attention: unpaid and overdue invoices, money received this month, drafts, open estimates and upcoming recurring invoices.

Get Tax Report

GET /businesses/:business_id/reports/tax

Tax charged by tax and rate, per currency (invoices minus credit notes).

Get Template

GET /businesses/:business_id/templates/:template_id

One custom template with its html and css, to edit it.

Get Template Guide

GET /template-guide

How to write a custom template: the safe template language, every data path, an example view and the built-in layout source to start from.

Import Customer From Crm

POST /businesses/:business_id/customers/from-crm

Add a customer from a LotsCRM contact you can read (name, email, phone, primary company).

Import Customers

POST /businesses/:business_id/customers/import

Import customers from CSV text (header row first; up to 1,000 rows). Columns are matched by name (name, email, phone, address, city, state, zip, country, currency, tax id) or by mapping. Try dry_run first.

Import Items

POST /businesses/:business_id/items/import

Import items from CSV (name, description, code/SKU/HSN, unit, price). Up to 2,000 rows.

Invite Member

POST /businesses/:business_id/invitations

Invite someone (a partner, bookkeeper) as editor or viewer. Emails an accept link valid 7 days. Owner only.

Leave Business

POST /businesses/:business_id/leave

Leave a business you were invited to.

List Businesses

GET /businesses

List the businesses you can invoice from, with your role, settings and whether the sender email is confirmed. Start here.

List Customers

GET /businesses/:business_id/customers

List or search customers (name, contact, email).

List Declarations

GET /businesses/:business_id/declarations

Saved declarations (fixed statements printed on documents).

List Documents

GET /businesses/:business_id/documents

List invoices, estimates and credit notes. Filters: type, status (comma list), customer_id, from/to (issue date), overdue, search (number).

List Items

GET /businesses/:business_id/items

Saved products and services.

List Members

GET /businesses/:business_id/members

People with access to this business, and pending invitations (owner).

List Payments

GET /businesses/:business_id/payments

Recorded payments, newest first.

List Recurring

GET /businesses/:business_id/recurring

Recurring invoices and their next dates.

List Taxes

GET /businesses/:business_id/taxes

Saved taxes. A tax has one or more components applied together.

List Templates

GET /businesses/:business_id/templates

Built-in designs, custom templates and regional presets.

Mark Document Sent

POST /businesses/:business_id/documents/:document_id/mark-sent

Issue a draft without emailing it (you delivered it yourself): assigns the number and locks it.

Pause Recurring

POST /businesses/:business_id/recurring/:recurring_id/pause

Pause a recurring invoice.

Preview Template

POST /businesses/:business_id/templates/preview

Render a template (template key, or unsaved html/css) with sample data at 1 to 200 lines; returns HTML.

Record Payment

POST /businesses/:business_id/documents/:document_id/payments

Record money received for an invoice (partial allowed). Overpayment becomes customer credit. LotsInvoice does not move money.

Resend Email Confirmation

POST /businesses/:business_id/confirm-email

Send the business email confirmation link again. Sending documents needs a confirmed email.

Restore Business

POST /businesses/:business_id/restore

Restore an archived business (needs plan room or credits).

Resume Recurring

POST /businesses/:business_id/recurring/:recurring_id/resume

Resume a recurring invoice.

Revise Document

POST /businesses/:business_id/documents/:document_id/revise

Change a sent invoice or estimate: a new locked version with a reason (the number stays). Not for paid or void documents: use a credit note.

Rotate Portal Link

POST /businesses/:business_id/customers/:customer_id/portal-link/rotate

Revoke every earlier portal link for this customer and make a new one.

Send Document

POST /businesses/:business_id/documents/:document_id/send

Email the document with its PDF and portal link (from LotsInvoice, replies go to the business). A draft gets its number and is locked. Ask the person before sending.

Send Reminder

POST /businesses/:business_id/documents/:document_id/remind

Email a payment reminder now for a sent, unpaid invoice.

Set Next Number

POST /businesses/:business_id/numbering

Set the next document number (only forward), e.g. to continue from another tool.

Set Payment Options

PUT /businesses/:business_id/payment-options

How customers pay, shown on invoices, emails and the portal: a pay link (Stripe Payment Link, PayPal, Venmo, Cash App, Square), bank details, Zelle, UPI (India, with a QR code), check address, instructions. LotsInvoice never handles the money.

Set Theme

PATCH /businesses/:business_id/theme

Change the default template and look: template (classic, modern, minimal, bold, compact, formal, studio, executive, ledger or custom:<id>; ledger is the full-page grid Indian tax invoice), color, accent, font (inter, plex, serif, mono), density (compact, normal, comfortable), logo_position, logo_size, paper (letter, a4), accent_style (bar, band, none).

Update Business

PATCH /businesses/:business_id

Update business details. Changing the email sends a confirmation link.

Update Customer

PATCH /businesses/:business_id/customers/:customer_id

Update a customer. Documents already sent keep the details they were sent with.

Update Declaration

PATCH /businesses/:business_id/declarations/:declaration_id

Update or archive a declaration.

Update Document

PATCH /businesses/:business_id/documents/:document_id

Edit a draft (any document field; lines replaces all lines). Sent documents: use revise_document.

Update Item

PATCH /businesses/:business_id/items/:item_id

Update or archive (archived: true) an item.

Update Member

PATCH /businesses/:business_id/members/:user_id

Change a member's role or remove them (remove: true). Owner only.

Update Recurring

PATCH /businesses/:business_id/recurring/:recurring_id

Change a recurring invoice (name, mode, end_date, max_count, next_date, template).

Update Settings

PATCH /businesses/:business_id/settings

Change settings. Give only what changes, under settings: numbering {invoice:{prefix,padding,reset}}, titles {invoice:"Tax Invoice"}, defaults {notes,terms,footer,estimate_valid_days,template,line_treatment,second_currency}, reminders {enabled,offsets,subject,message}, layout {columns:[{key,label,visible,type}], custom_fields:[{key,label,scope,visible}], blocks:{tax_summary,words,signature,…}, fields:{due_date,po_number,reference,place_of_supply}, labels:{…}, words_system, show_registration_ids}, theme {color,accent,font,density,logo_position,logo_size,paper,accent_style}, signature {name,title,image_url}.

Update Tax

PATCH /businesses/:business_id/taxes/:tax_id

Rename, change components, or archive (archived: true). Sent documents keep their taxes.

Update Template

PATCH /businesses/:business_id/templates/:template_id

Update (re-checked) or archive a custom template. Sent documents keep their version.

Upload Image

POST /businesses/:business_id/images

Upload the logo, a signature image or a company seal (stamp) image (PNG, JPEG, WebP or GIF, 1 MB max, base64) and save it on the business.

Void Document

POST /businesses/:business_id/documents/:document_id/void

Void a sent invoice or credit note (keeps its number). Not when payments or credits are recorded.

Questions, answered.

What is the LotsInvoice MCP server URL?

https://api.lotsinvoice.com/mcp. Add it as a remote MCP server (custom connector) in your AI agent and sign in with your Lots account.

Which agents work with LotsInvoice?

Claude, ChatGPT (Business, Enterprise and Edu, from Plugins), Claude Code, Codex, Cursor, Windsurf and any other client that supports remote MCP with OAuth. Agents without MCP use the REST API with an API key.

Where are the LotsInvoice API docs?

https://api.lotsinvoice.com/docs.md: Markdown written so an AI agent can read it. Requests go to https://api.lotsinvoice.com/api/v1/lotsinvoice with Authorization: Bearer <your key>.

How do I get a LotsInvoice API key?

Use Generate key on this page or at lotstech.com/api. Sign in with your LotsTech account, name the key and copy it once. You can revoke it there at any time.

Does MCP or API access cost extra?

No. It is included with LotsInvoice. You pay only for LotsInvoice's own plan or usage, and your AI provider bills its own usage.

All MCP servers · All APIs and keys