---
name: "invoices_statement"
area: "invoices"
title: "Make a customer statement"
price: "$0.05"
method: "POST"
url: "https://api.conecto.chat/v1/tools/invoices_statement"
mcp_server: "https://api.conecto.chat/mcp/invoices"
auth: "Authorization: Bearer <conecto_sk_ key>"
docs_url: "https://conecto.chat/tools/invoices/invoices_statement"
---

# Make a customer statement (`invoices_statement`)

Makes a customer statement, outstanding or activity, as a PDF, and emails it when asked, like Xero's statements.

A customer statement, like Xero's. outstanding (the default) lists every invoice the customer still owed on as_of (default today) with what was paid or credited, how late each is and the money owed by how late; activity starts from what they owed before from, lists each invoice, payment and credit note up to to (default this month so far) with the running balance, and ends with what they owed. One currency (default the one they are billed in most). It is a PDF in the file store in the business's look and document language; email: true also emails the customer a link to it in the business's name, under the rules every bot email follows and at most once a day per customer. $0.05.

Price: $0.05 a call. A call that fails costs nothing.

## Use it when

A customer asks what they owe, at month end, or before chasing a customer with several open invoices.

- For a reminder about one invoice, use [invoices_remind](https://conecto.chat/tools/invoices/invoices_remind.md).
- For everyone who owes, in one report, use [invoices_report](https://conecto.chat/tools/invoices/invoices_report.md).

## Say this to your agent

> Send Hotel Elbblick a statement of everything they still owe us.

## Inputs

| Name | Type | Required | Description | Allowed values | Default |
|---|---|---|---|---|---|
| `customer` | object | yes | Whose statement: a CRM contact_id or company_id, or the email or the name on their invoices. |  |  |
| `customer.contact_id` | integer | no | At least 1. |  |  |
| `customer.company_id` | integer | no | At least 1. |  |  |
| `customer.email` | string | no | Up to 254 characters. |  |  |
| `customer.name` | string | no | Up to 200 characters. |  |  |
| `kind` | string | no |  | `"outstanding"`, `"activity"` |  |
| `as_of` | string | no | YYYY-MM-DD (matches ^\\d{4}-\\d{2}-\\d{2}$) |  |  |
| `from` | string | no | YYYY-MM-DD (matches ^\\d{4}-\\d{2}-\\d{2}$) |  |  |
| `to` | string | no | YYYY-MM-DD (matches ^\\d{4}-\\d{2}-\\d{2}$) |  |  |
| `currency` | string | no | ISO 4217, e.g. "USD", "EUR" or "JPY". Matches ^[A-Za-z]{3}$. |  |  |
| `email` | boolean | no |  |  | `false` |
| `send_to` | string | no | Another address to email it to. Up to 254 characters. |  |  |
| `message` | string | no | Your own words above the amount due. Up to 2,000 characters. |  |  |
| `link_hours` | integer | no | 1 to 168. |  | `24` |

## Example

Written for Hansen & Voss, a restaurant-equipment wholesaler in Hamburg with 60 staff.

MCP: call `invoices_statement` on the MCP server `https://api.conecto.chat/mcp/invoices` with these arguments:

```json
{
  "customer": {
    "email": "lukas.meyer@hotel-elbblick.example"
  },
  "kind": "outstanding"
}
```

REST:

```bash
curl https://api.conecto.chat/v1/tools/invoices_statement \
  -H "Authorization: Bearer $CONECTO_KEY" \
  -H "Content-Type: application/json" \
  -d '{"customer": {"email": "lukas.meyer@hotel-elbblick.example"}, "kind": "outstanding"}'
```

## Response

```json
{
  "call_id": "5f0c8a2e-3b7d-4c1e-9a64-2d8e1f7b0c93",
  "tool": "invoices_statement",
  "status": "succeeded",
  "replayed": false,
  "cost_usd": "$0.05",
  "balance_usd": "$19.75",
  "result": {
    "statement": {
      "kind": "outstanding",
      "customer": {
        "name": "Hotel Elbblick GmbH",
        "email": "lukas.meyer@hotel-elbblick.example",
        "address": null
      },
      "currency": "EUR",
      "as_of": "2026-10-14",
      "invoices": [
        {
          "number": "INV-0043",
          "issue_date": "2026-09-10",
          "due_date": "2026-09-24",
          "total": "4569.60",
          "paid": "0.00",
          "credited": "0.00",
          "balance": "4569.60",
          "days_overdue": 20
        }
      ],
      "credits": [],
      "credit_left": "0.00",
      "total_due": "4569.60",
      "ages": {
        "current": "0.00",
        "days_1_30": "4569.60",
        "days_31_60": "0.00",
        "days_61_90": "0.00",
        "days_over_90": "0.00"
      },
      "pdf": {
        "file_id": "759f4cd3-a8b9-46bd-9f36-5c378d805fe7",
        "name": "Offene Posten Hotel Elbblick GmbH 2026-10-14.pdf",
        "content_type": "application/pdf",
        "size": "582 bytes",
        "size_bytes": 582,
        "sha256": "7a628ee1199dd863f0236a61a39b6729a977b4ea18a669e9930a57280cb2326e",
        "created_at": "2026-10-14T08:00:00+00:00",
        "download_url": "https://cncto.co/d/759f4cd3-a8b9-46bd-9f36-5c378d805fe7?t=eyJmIjoiNzU5ZjRjZDMtYThiOS00NmJkLTlmMzYtNWMzNzhkODA1ZmU3IiwiZXhwIjoxNzkyNDgxMDUxfQ:1xIhj9:GdIXThYI_-cMws-rSQRFJx9YsmvctvESiviR6VyyD0g",
        "link_expires_in_hours": 24
      }
    }
  }
}
```

`result`: statement: the kind, the customer, the currency, then for outstanding as_of, the open invoices (paid, credited, balance, days overdue), total_due and the money by how late; for activity from, to, the opening balance, each line with the running balance and the closing balance; and pdf, the file with a download link. sent_to when it was emailed.

## Errors

| Code | Status | When | Fix |
|---|---|---|---|
| `invalid_input` | 400 | customer names nobody (no contact_id, company_id, email or name), a date is not YYYY-MM-DD, or from is after to. | Fix what the message names. |
| `not_found` | 404 | The business has sent that customer no invoices. | Find them with invoices_list by name or email. |
| `no_email` | 409 | email is true but there is no address for the customer. | Pass send_to. |
| `suppressed` | 422 | The address bounced, complained or unsubscribed before. | Send to another address. |
| `payment_required_for_outbound` | 402 | The balance is still free credit, which cannot email people outside the business. | Top up once, or make it without email and hand over the link. |
| `too_many_emails` | 429 | A statement went to this customer in the last 24 hours. | Try again tomorrow. |
| `email_failed` | 502 | The email could not be sent; nothing was charged. | Call again in a moment. |
| `unavailable` | 503 | The PDF could not be made right now; nothing was charged. | Call again in a moment. |

The refusals every tool can give (401 key, 402 balance, 429 limits) are on the errors page: https://conecto.chat/docs/errors.md

## Related

- [invoices_set_profile](https://conecto.chat/tools/invoices/invoices_set_profile.md): Sets the business details on quotes and invoices: name, country, address, tax ID, logo, terms, tax, numbering, how to pay and legal notes. $0.001 a call.
- [invoices_get_profile](https://conecto.chat/tools/invoices/invoices_get_profile.md): The business details on quotes and invoices, the next numbers, and what is missing before documents can be sent. Free up to 1,000,000 reads a month.
- [invoices_connect_stripe](https://conecto.chat/tools/invoices/invoices_connect_stripe.md): Connects the business's own Stripe account with a restricted key, so invoices can be paid online; the money goes straight to the business. $0.001 a call.
- [invoices_create](https://conecto.chat/tools/invoices/invoices_create.md): Creates a draft quote or invoice: the customer, the lines, the currency and the dates. $0.01 a call.
- [invoices_update](https://conecto.chat/tools/invoices/invoices_update.md): Changes a draft quote or invoice; customer and lines replace the old ones. $0.01 a call.
- [invoices_send](https://conecto.chat/tools/invoices/invoices_send.md): Sends a draft: it gets the next number, its PDF is made, and the customer is emailed a link to view, pay or accept it. $0.10 a call.
- [invoices_get](https://conecto.chat/tools/invoices/invoices_get.md): One quote or invoice in full, by invoice_id or number: lines, totals, taxes, payments, history, its page and a fresh PDF link. Free up to 1,000,000 reads a month.
- [invoices_list](https://conecto.chat/tools/invoices/invoices_list.md): Quotes and invoices, newest first, by kind, status (also overdue, unpaid and expired), customer and issue date. Free up to 1,000,000 reads a month.
- [invoices_convert_quote](https://conecto.chat/tools/invoices/invoices_convert_quote.md): Turns an accepted quote into a draft invoice with the same customer and lines. $0.01 a call.
- [invoices_record_payment](https://conecto.chat/tools/invoices/invoices_record_payment.md): Records money received against a sent invoice, or a refund; the invoice becomes partially paid or paid. $0.01 a call.
- [invoices_record_prepayment](https://conecto.chat/tools/invoices/invoices_record_prepayment.md): Records a customer's deposit before there is an invoice, like Xero's prepayments; it waits as their credit, with its VAT owed at once. $0.01 a call.
- [invoices_use_credit](https://conecto.chat/tools/invoices/invoices_use_credit.md): Puts a customer's credit on their invoice, like Xero's allocate credit, or pays it back to them. $0.01 a call.
- [invoices_list_credits](https://conecto.chat/tools/invoices/invoices_list_credits.md): Lists customers' credits, deposits and overpayments, with what is left on each. Free up to 1,000,000 reads a month.
- [invoices_remind](https://conecto.chat/tools/invoices/invoices_remind.md): Emails the customer a reminder about a sent invoice with a balance, at most once a day. $0.02 a call.
- [invoices_remind_overdue](https://conecto.chat/tools/invoices/invoices_remind_overdue.md): Emails a reminder about every invoice at least some days overdue, the longest overdue first. $0.02 per reminder sent.
- [invoices_set_expected_date](https://conecto.chat/tools/invoices/invoices_set_expected_date.md): Notes the day a customer says they will pay an invoice, so the cash flow forecast counts the money then, even when the invoice is overdue. Free.
- [invoices_create_credit_note](https://conecto.chat/tools/invoices/invoices_create_credit_note.md): Corrects a sent invoice with a numbered credit note: all of it, some of its lines or an amount, emailed like an invoice. $0.10 a call.
- [invoices_void](https://conecto.chat/tools/invoices/invoices_void.md): Voids a document: a sent one keeps its number but can no longer be paid or accepted; a draft is discarded. $0.01 a call.
- [invoices_save_repeating](https://conecto.chat/tools/invoices/invoices_save_repeating.md): Makes an invoice again every so many weeks, months or years, drafted or sent on its day, with [Month] and [Year] filled in, like Xero's repeating invoices. $0.001 a call.
- [invoices_list_repeating](https://conecto.chat/tools/invoices/invoices_list_repeating.md): Lists the repeating invoices: who each is for, how often, the next dates, and what each made. Free up to 1,000,000 reads a month.
- [invoices_delete_repeating](https://conecto.chat/tools/invoices/invoices_delete_repeating.md): Stops a repeating invoice for good; the invoices it made stay. Free.
- [invoices_summary](https://conecto.chat/tools/invoices/invoices_summary.md): What customers owe, per currency: outstanding, overdue and paid this month, and the quotes still open. Free up to 1,000,000 reads a month.
- [invoices_report](https://conecto.chat/tools/invoices/invoices_report.md): Aged receivables on any day, or sales per customer for a period with the credit notes taken off. Free up to 1,000,000 reads a month.
