> ## Documentation Index
> Fetch the complete documentation index at: https://docs.consile.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Billy

> Invoices, supplier bills, contacts with CVR, chart of accounts, postings, vouchers, daybook entries and bank payments directly from your Billy accounts. Read-only, connected with an access token.

*[Læs siden på dansk](https://docs.consile.ai/connectors/billy.md)*

The Billy connector gives your AI **read-only** access to your accounts in Billy
(billy.dk): sales invoices and debtors, supplier bills and creditors, contacts
with CVR, the chart of accounts, ledger postings and vouchers, daybook entries,
bank payments, products and VAT rates. No exports or spreadsheets. You connect
with an access token that you create yourself in Billy (no login redirect), and
your AI never sees the token itself.

> [!NOTE]
>
> **Nordic exclusive.** Managed MCP for Billy. EU-hosted and read-only: your AI
> cannot create, change or send anything in Billy.

> **Access**
>
> Read-only

> **Authentication**
>
> Access token (you create it in Billy)

> **Hosting**
>
> Hosted in the EU · Frankfurt

* **Price:** 299 DKK/month excl. VAT. Billy is billed
  only in DKK. No lock-in, cancel at any time. The price covers 1 user and 1
  Billy company (agreement). Each extra user and each extra agreement costs
  149.50 DKK/month excl. VAT. See [Pricing](https://docs.consile.ai/en/portal/pricing.md). Billy is also included in
  [the Consile Studio membership](https://docs.consile.ai/en/portal/membership.md) and
  [the free edition](https://docs.consile.ai/en/portal/free-edition.md).
* **Users:** whoever buys Billy automatically gets the included access. If more
  colleagues need Billy in their AI, an administrator gives them access under
  **Team** in the portal (choose **All tools** next to Billy on the person's page).
  An extra user is billed pro rata from the day access is given. A colleague
  without access can still see the tools in their AI, but every lookup is refused
  with a message to ask an administrator for access. One access covers all your
  Billy agreements. If you have [the Consile Studio membership](https://docs.consile.ai/en/portal/membership.md),
  an administrator instead gives one membership licence per person, and it also
  covers Billy. See [Team](https://docs.consile.ai/en/portal/team.md).
* **Endpoint:** `https://mcp.consile.ai/billy/mcp` (your own named connector in your AI).

> [!NOTE]
>
> **One token = one company.** A Billy access token belongs to exactly the
> company it was created in, and no tool takes a company id. If you have several
> companies in Billy, an administrator adds an extra agreement on the Billy page
> in the portal: the **Connections** card → **Add agreement**. Each agreement is
> connected with its own token and gets its own address (for example
> `https://mcp.consile.ai/billy-2/mcp`), which you add as a separate connector
> in your AI. See [Multiple Billy companies](https://docs.consile.ai/en/connect/connect-billy.md#multiple-billy-companies).

## Prerequisites

**1. Subscription**

Buy Billy in the [portal](https://app.consile.ai) under **Marketplace**. Only
an administrator on your Consile account can buy. See
[Buy a connector](https://docs.consile.ai/en/portal/buy-a-connector.md).

**2. Your AI connected**

See [Connect Claude](https://docs.consile.ai/en/connect/connect-claude.md) or
[Connect ChatGPT](https://docs.consile.ai/en/connect/connect-chatgpt.md).

**3. Billy connected**

Create an access token in Billy and paste it into the portal. See
[Connect Billy](https://docs.consile.ai/en/connect/connect-billy.md).

## What can it do? (tools)

You do not need to know the tool names. You ask in natural language, and your AI
picks the right one itself. The connector provides **17 read-only tools**,
grouped here by what they answer:

**Organization & lookups**

| Tool | What it does |
| - | - |
| `get_organization` | The company the token is connected to: name, base currency, CVR and address. Answers "which company are you connected to?" |
| `list_products` | Product and service catalogue with name, account, prices and VAT; optional free-text search via `q` |
| `list_tax_rates` | The organization's VAT rates, used to interpret `tax` and `taxRateId` on invoices, bills and lines |
| `list_sales_tax_returns` | VAT returns with period bounds and status, so you can see where you are with VAT |
| `list_currencies` | Currencies Billy knows (id = ISO code, for example DKK). Reference for `currencyId`/`exchangeRate` on invoices and bills in a foreign currency |

**Sales: invoices (debtors)**

| Tool | What it does |
| - | - |
| `list_invoices` | Sales invoices with filters on state, isPaid, contactId, date range and free text `q`; sorted newest first |
| `get_invoice` | One invoice by id with lines, customer and `downloadUrl` (PDF link) |

**Purchases: bills (creditors)**

| Tool | What it does |
| - | - |
| `list_bills` | Supplier bills with filters on state, isPaid, contactId (supplier), date range and free text `q`; sorted newest first |
| `get_bill` | One bill by id with lines and supplier |

**Contacts**

| Tool | What it does |
| - | - |
| `list_contacts` | Customers and suppliers in one register (isCustomer/isSupplier flags; `registrationNo` = CVR) with free-text search |
| `get_contact` | One contact with full master data: customer/supplier flags, CVR, EAN, address and payment terms |

**Finance / general ledger**

| Tool | What it does |
| - | - |
| `list_accounts` | The chart of accounts: account number, name, group, VAT rate and bank account flag; optional free text `q` |
| `list_postings` | Ledger postings (account statement), can be limited to one account via `accountId`; each posting has an amount, a debit/credit side and a link to its voucher |
| `list_transactions` | Vouchers with their balanced postings |
| `get_transaction` | One voucher by id with its balanced postings |
| `list_daybook_transactions` | Entries in the daybooks. Filter on `daybookId` and `state` (`draft` = awaiting posting, `approved`, `voided`) |
| `list_bank_payments` | Bank payments used to settle invoices and bills (money in and out) |

The tools are called `billy__<tool>` (for example `billy__get_invoice`) when your
AI calls them. On an extra agreement they are called, for example,
`billy-2__get_invoice`. You only need to ask the question in natural language.

> **[Building on top yourself? See the API reference](https://docs.consile.ai/developers/tools/billy.md)**
>
> Full reference with all 17 tools, arguments, pagination, filters and return
> values.

## Try asking

> **Invoices & debtors**
>
> > *"Which invoices are overdue right now, and how much do our customers owe us in total?"*
>
> > *"Show the latest invoice to our biggest customer with lines and PDF link."*

> **Bills & creditors**
>
> > *"Show our largest unpaid supplier bills: what do we owe, and when are they due?"*
>
> > *"How many bills are still in draft and not posted?"*

> **Chart of accounts & postings**
>
> > *"Give an overview of the chart of accounts and the latest postings on our bank account."*
>
> > *"Show the voucher behind a specific posting with all balanced lines."*

> [!TIP]
>
> Amounts in Billy are whole units (1200 means 1,200.00 DKK, not øre, the hundredths of a krone). `taxMode`
> (incl/excl) on an invoice or bill tells you whether the amount includes or
> excludes VAT. Mention a customer name or a date range, and the answer is precise
> right away.

## Limitations

* **Read-only:** the connector can only read. It has no tool that creates,
  changes or deletes anything, so it can never post, create or change anything
  in Billy. That is why there is no confirmation step.
* **Check the connection once you have connected:** ask your AI *"Which company
  are you connected to?"*. If Billy refuses the token (typically because it was
  pasted incorrectly or deleted in Billy), your AI gets a message that Billy must
  be connected again ("reconnect required"). In that case, create a new access
  token in Billy, and ask an administrator to reconnect with it. If the token lacks access to the data you ask about, your AI only gets
  the general error "Tool invocation failed." without further explanation. See
  [If a lookup fails](https://docs.consile.ai/en/connect/connect-billy.md#if-a-lookup-fails).
* **Too many calls at Billy:** if Billy refuses a call because there are too many
  at once, the lookup fails. Try again in a little while.
* **One token per company:** if you have several companies in Billy, each gets its
  own agreement with its own token and its own address in your AI. See
  [Multiple Billy companies](https://docs.consile.ai/en/connect/connect-billy.md#multiple-billy-companies).
* **Results are limited in size:** each list lookup returns 50 rows by default
  (200 for `list_currencies`, max. 1,000). Large extracts are best narrowed with a
  search, account, contact or date range, or by paging via `page`.

Is something not working as expected? See [Troubleshooting](https://docs.consile.ai/en/troubleshooting.md).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.