Invoices

Repeat an invoice

invoices_save_repeating · Changes data · Markdown

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

From your agent’s balance. A call that fails costs nothing.

An example

Bill the Strandhotel 350 euros plus VAT for the kitchen service contract on the first of every month for a year, and send it straight away.

Your agent callsinvoices_save_repeating$0.001 a call

The example business is Hansen & Voss, a restaurant-equipment wholesaler in Hamburg with 60 staff. The reply is the one the tool really gives.

With these arguments
{
  "name": "Hotel service contract",
  "customer": {
    "name": "Strandhotel Övelgönne",
    "email": "buchhaltung@strandhotel.example"
  },
  "items": [
    {
      "description": "Kitchen service contract, [Month] [Year]",
      "unit_price": "350",
      "tax_rate": 19
    }
  ],
  "every": 1,
  "unit": "month",
  "start": "2026-11-01",
  "times": 12,
  "action": "send"
}
What comes back
{
  "repeating": {
    "repeating_id": 4101,
    "name": "Hotel service contract",
    "customer": {
      "name": "Strandhotel Övelgönne",
      "email": "buchhaltung@strandhotel.example"
    },
    "items": [
      {
        "description": "Kitchen service contract, [Month] [Year]",
        "unit_price": "350",
        "tax_rate": 19
      }
    ],
    "currency": null,
    "notes": null,
    "payment_terms_days": null,
    "every": 1,
    "unit": "month",
    "action": "send",
    "status": "active",
    "next_date": "2026-11-01",
    "upcoming": [
      "2026-11-01",
      "2026-12-01"
    ],
    "end_date": null,
    "times_left": 12,
    "made": 0,
    "last_invoice": null,
    "last_invoice_id": null,
    "last_error": null
  }
}

Use it when

A customer pays the same each month or year: a service contract, rent, a retainer, a subscription.

What it does

An invoice made again every so many weeks, months or years, like Xero's repeating invoices: the customer and lines as for invoices_create, every and unit, the start date, and an end_date or a number of times. action draft leaves each one for you to check and send; send emails it to the customer on its day. Descriptions and notes may hold [Month], [Year], [Quarter] or [Week], with an offset like [Month+1], filled in from each invoice's date. Each invoice is made by Conecto's worker as this key and costs what invoices_create and invoices_send cost. Change one by repeating_id: only what you pass changes; status paused stops it, active resumes it (dates it missed are skipped).

What comes back

repeating: its id, name, customer, lines, every and unit, action (draft or send), status, the next three dates, end_date or times_left, how many were made, the last invoice and why it is paused if it is. Every reply also carries cost_usd and balance_usd.

Inputs

NameTypeWhat it is
repeating_idintegerFrom invoices_list_repeating. At least 1.
namestringYour own label, e.g. "Hotel service contract". Up to 120 characters.
customerobjectWho the document is for. Link a CRM record with contact_id or company_id, or give name and email (an email that matches a CRM contact links it). What is given here is printed as it is.
customer.contact_idintegerA CRM contact; fills the name and email. At least 1.
customer.company_idintegerA CRM company; fills the name. At least 1.
customer.namestringWho is billed, as printed. Up to 200 characters.
customer.emailstringWhere the document is emailed. Up to 254 characters.
customer.addressstringPostal address, one line per row. Up to 1,000 characters.
customer.tax_idstringThe customer's VAT or tax number, for business customers. A reverse-charge or intra-EU invoice needs their EU VAT ID, e.g. "FR12345678901". Up to 60 characters.
customer.countrystringISO 3166-1 code of the customer's country, e.g. "FR". Checks intra_eu and export invoices; e-invoices need it. Up to 2 characters.
itemsarray of objects1 to 200 items.
items[].descriptionRequiredstringWhat was sold. Lines after the first print smaller, underneath. 1 to 2,000 characters.
items[].quantitynumber or stringDefault 1. Up to 6 decimals, e.g. 1.5 (hours). Up to 24 characters.
items[].unit_priceRequirednumber or stringThe price of one, before tax, e.g. "19.99". Negative for a credit line. Up to 24 characters.
items[].tax_ratenumber or stringTax percent, e.g. 19. Default: the profile's tax_rate. Up to 24 characters.
items[].discountnumber or stringDiscount percent on this line, e.g. 10. Up to 24 characters.
items[].accountstringWith books: the income account this line books to, e.g. "4100" for services. Default: the sales account. Up to 20 characters.
items[].trackingobjectWith books: tracking options, e.g. {"Department": "Service"}.
currencystringISO 4217, e.g. "USD", "EUR" or "JPY". Matches ^[A-Za-z]{3}$.
notesstringPrinted above the lines, e.g. "Thank you for your order" or a project reference. Up to 5,000 characters.
payment_linkstringAn https link to pay this document. Default: the profile's payment_link. Up to 500 characters.
tax_exemptionstringWhy lines with tax_rate 0 carry no tax, printed on the invoice as the law asks: exempt, zero_rated, reverse_charge (the customer accounts for the VAT), intra_eu (goods to a business in another EU country), export (goods leaving the EU), outside_scope, small_business (a business under its country's small-business VAT exemption, such as UStG §19 or art. 293 B CGI: no line may carry tax). Needed in the EU for any line without tax. Default: the profile's. One of: ,exempt,zero_rated,reverse_charge,intra_eu,export,outside_scope,small_business.
tax_exemption_notestringThe wording printed for the exemption instead of the standard one, e.g. "Steuerbefreit als Kleinunternehmer nach § 19 UStG". Up to 300 characters.
e_invoicestringInvoices and their credit notes as EN 16931 e-invoices (German B2B invoices must be from 2027): factur-x (Factur-X/ZUGFeRD, the XML inside the PDF/A-3) or xrechnung (XRechnung 3.0, its own XML beside the PDF), checked against the EN 16931 schema before sending. "" is the default: none, except that from 2027 an invoice from a German business to a German business above EUR 250 is a factur-x; "none" opts out (a business under the EUR 800,000 turnover allowance until 2028). Needs the customer's country. Default: the profile's. One of: ,factur-x,xrechnung,none.
payment_terms_daysintegerEach invoice falls due this long after its date. Default: the profile's payment terms. 0 to 365.
everyintegerDefault 1. 1 to 52.
unitstringOne of: week,month,year.
startstringThe first invoice's date, today or later. Monthly and yearly invoices keep to its day of the month. Matches ^\d{4}-\d{2}-\d{2}$.
end_datestringNo invoice after this date. "" for none. Matches ^(\d{4}-\d{2}-\d{2})?$.
timesintegerHow many invoices in all. 1 to 1,000.
statusstringOne of: active,paused.
actionstringDefault draft. One of: draft,send.

The call

Over MCP, call invoices_save_repeating on https://api.conecto.chat/mcp/invoices. Over REST:

Terminal
curl -X POST https://api.conecto.chat/v1/tools/invoices_save_repeating \
  -H "Authorization: Bearer $CONECTO_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name":"Hotel service contract","customer":{"name":"Strandhotel Övelgönne","email":"buchhaltung@strandhotel.example"},"items":[{"description":"Kitchen service contract, [Month] [Year]","unit_price":"350","tax_rate":19}],"every":1,"unit":"month","start":"2026-11-01","times":12,"action":"send"}'

When it refuses

A refused call costs nothing and says what to do next.

CodeWhenWhat to do
invalid_input400A line, amount, date, currency, country, email or link is not valid, or the total comes out negative or too large.Fix what the message names: amounts like 19.99, dates like 2026-11-20, currencies like EUR.
not_found404The customer's contact_id or company_id is not in the business's CRM.Find the record with crm_search, or give a name and email instead.
invalid_input400A new one lacks customer, items, unit or start; start is in the past; or end_date is before start.Give what the message names, with dates like 2026-11-01 from today on.
not_found404No repeating invoice has that repeating_id.List them with invoices_list_repeating.
limit_reached409The account has 200 repeating invoices that have not ended.Stop one with invoices_delete_repeating.

Give this to your agent.

Set up Conecto from https://conecto.chat/SKILL.md