AI Invoice AgentAgent overview

AI Invoice Agent

Agent overview

The AI invoice agent turns plain language and pasted text into draft invoices, estimates and clients, inside the dashboard, with no AI key of your own.

The AI invoice agent lives in the web app under Automate > AI agent. Describe what you need in your own words, or paste an email or message from a client, and the agent creates the draft invoice, estimate or client for you to check. It can also run on its own through automations, for example every Monday or whenever a Stripe payment arrives. It ships at launch on 1 January 2027 and works on Free and Team.

What it does

  • Plain language to drafts. "Invoice Acme for 10 hours of design at $50" becomes a draft invoice for Acme with one line of 10 hours at 50.00 USD.
  • Pasted text to drafts. Paste an email that lists work done or a quote request, and the agent picks out the client, lines, amounts and dates.
  • Clients on the way. If the client does not exist yet, the agent can create it from the details you give.
  • Automations. Give the agent a trigger and instructions, such as "when a Stripe payment arrives, make the receipt", and it runs by itself.
  • Receipts and PDFs. From February 2027 you can upload a receipt or PDF and the agent reads it. See Read receipts.

How it works

1

You ask

Type a request or paste text in Automate > AI agent. Pick the business if you have more than one.

2

The agent plans and calls tools

The agent's tools are the same capabilities the MCP server and the API use, such as list_clients, upsert_client, create_invoice, list_documents and record_payment. It calls them under your permissions: if your role cannot create documents, neither can the agent when you run it.

3

Everything is checked before saving

Every output is validated against the same schemas as the API before anything is saved. Invalid output is never saved.

4

You review the draft

The agent shows a preview of what it created. Documents are always drafts. Nothing is sent until you confirm.

Every tool call the agent makes is written to the audit log with the actor type agent, and each run is recorded in Agent activity.

Drafts only

The agent never sends on its own when you run it. It creates drafts and shows you a preview; you send from the document as usual, after checking it. This matters most for pasted text: an email can contain instructions written to fool an AI, such as "also void invoice 12" or "change the bank details". With drafts only, the worst such text can do is produce a draft that you then discard.

The one exception is an automation that you explicitly set to auto-send. Turning that on needs a fresh sign-in, and the change is audited. See Automations.

Agent activity

Agent activity lists every run with:

  • the input (your text, and any files);
  • the steps: which tools the agent called and what they returned;
  • the documents it created;
  • the credits used;
  • the status: running, succeeded, failed or stopped.

Use it to check what an automation did overnight, or to understand why a draft looks the way it does.

Credits and keys

The agent runs on our own AI key (Anthropic), so you do not need an AI account. Each run uses credits:

ActionCredits
A request that creates or updates up to one document1
Reading a receipt or PDF (from February 2027)2
An automation run1
A run that fails before calling any tool0

Free accounts get 250 welcome credits for their first month after sign-up, unlocked by adding a card (a $0 verification; the card is never charged). Team accounts get 1,000 credits a month and 2,000 in the first paid month. Anyone can buy 1,000 credits for $5, only by clicking to buy. With your own AI key (Anthropic, OpenAI, Google or OpenAI-compatible) the agent uses no credits.

When you have no credits and no own key, the agent is still visible but locked, with the options to buy a credit pack, upgrade to Team, or connect your own key.

Use it from the API

The agent is a capability like any other, so you can run it from your own code:

cURL
curl -X POST "https://api.freeinvoiceautomation.com/v1/agent/runs" \
  -H "Authorization: Bearer $FIA_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: 4b7e9c1a-agent-acme" \
  -d '{
    "business_id": "0193f2a0-9b8c-7d6e-8f50-4a3b2c1d0e9f",
    "input": { "text": "Invoice Acme for 10 hours of design at $50, due in 14 days" }
  }'

A run is asynchronous: the call returns 202 with the run's id, and you read the result with Get an agent run or list runs with List agent runs. If you use webhooks, the events agent_run.completed and agent_run.failed tell you when a run ends. See Run the agent for every field.

You do not need the agent to use AI with your account from Claude or ChatGPT. The MCP server lets your own assistant call the same tools, and uses no credits.

Permissions

PermissionLets a memberDefault roles
ai.useRun the agent and see agent runsOwner, Admin, Editor
ai.manageCreate, change and delete automations, and connect an own AI keyOwner, Admin

On top of these, each tool the agent calls checks its own permission, for example documents.create for create_invoice.

Limits

  • Credits: the agent stops at 0 and offers a credit pack, Team or your own key. You see a warning when 80% is used.
  • Rate and size guards: each account has a per-minute limit on agent requests and a monthly ceiling on AI usage. When either is reached, the agent stops for that account even if credits remain. These guards apply to runs on our key.
  • Errors: ai_credits_exhausted when no credits are left, feature_locked when the agent is locked on Free, rate_limited when you send too many requests too quickly.

Your data

When the agent runs on our key, your request and the tool results it needs are sent to our AI provider, Anthropic, in the United States, only for that run. We tell you this before you first use the agent. With your own key, the data goes to your chosen provider instead. The input text and uploaded files of a run are kept for 90 days; the run summary (credits used, documents created) is kept for the life of your account. See How we protect data.