Repeat an invoice
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.
{
"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"
}Use it when
A customer pays the same each month or year: a service contract, rent, a retainer, a subscription.
- For one invoice now, use
invoices_create. - For chasing everyone who is late every week, use
invoices_remind_overdue.
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
| Name | Type | What it is |
|---|---|---|
repeating_id | integer | From invoices_list_repeating. At least 1. |
name | string | Your own label, e.g. "Hotel service contract". Up to 120 characters. |
customer | object | Who 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_id | integer | A CRM contact; fills the name and email. At least 1. |
customer.company_id | integer | A CRM company; fills the name. At least 1. |
customer.name | string | Who is billed, as printed. Up to 200 characters. |
customer.email | string | Where the document is emailed. Up to 254 characters. |
customer.address | string | Postal address, one line per row. Up to 1,000 characters. |
customer.tax_id | string | The 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.country | string | ISO 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. |
items | array of objects | 1 to 200 items. |
items[].descriptionRequired | string | What was sold. Lines after the first print smaller, underneath. 1 to 2,000 characters. |
items[].quantity | number or string | Default 1. Up to 6 decimals, e.g. 1.5 (hours). Up to 24 characters. |
items[].unit_priceRequired | number or string | The price of one, before tax, e.g. "19.99". Negative for a credit line. Up to 24 characters. |
items[].tax_rate | number or string | Tax percent, e.g. 19. Default: the profile's tax_rate. Up to 24 characters. |
items[].discount | number or string | Discount percent on this line, e.g. 10. Up to 24 characters. |
items[].account | string | With books: the income account this line books to, e.g. "4100" for services. Default: the sales account. Up to 20 characters. |
items[].tracking | object | With books: tracking options, e.g. {"Department": "Service"}. |
currency | string | ISO 4217, e.g. "USD", "EUR" or "JPY". Matches ^[A-Za-z]{3}$. |
notes | string | Printed above the lines, e.g. "Thank you for your order" or a project reference. Up to 5,000 characters. |
payment_link | string | An https link to pay this document. Default: the profile's payment_link. Up to 500 characters. |
tax_exemption | string | Why 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_note | string | The wording printed for the exemption instead of the standard one, e.g. "Steuerbefreit als Kleinunternehmer nach § 19 UStG". Up to 300 characters. |
e_invoice | string | Invoices 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_days | integer | Each invoice falls due this long after its date. Default: the profile's payment terms. 0 to 365. |
every | integer | Default 1. 1 to 52. |
unit | string | One of: week,month,year. |
start | string | The 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_date | string | No invoice after this date. "" for none. Matches ^(\d{4}-\d{2}-\d{2})?$. |
times | integer | How many invoices in all. 1 to 1,000. |
status | string | One of: active,paused. |
action | string | Default draft. One of: draft,send. |
The call
Over MCP, call invoices_save_repeating on https://api.conecto.chat/mcp/invoices. Over REST:
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.
| Code | When | What to do |
|---|---|---|
invalid_input400 | A 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_found404 | The 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_input400 | A 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_found404 | No repeating invoice has that repeating_id. | List them with invoices_list_repeating. |
limit_reached409 | The account has 200 repeating invoices that have not ended. | Stop one with invoices_delete_repeating. |
More Invoices tools
All 24 tools- Set the business details
invoices_set_profileSets 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 - Get the business details
invoices_get_profileThe business details on quotes and invoices, the next numbers, and what is missing before documents can be sent.Free* - Connect Stripe for invoices
invoices_connect_stripeConnects 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 - Create a quote or invoice
invoices_createCreates a draft quote or invoice: the customer, the lines, the currency and the dates.$0.01 a call - Change a draft
invoices_updateChanges a draft quote or invoice; customer and lines replace the old ones.$0.01 a call - Send a quote or invoice
invoices_sendSends 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 - Get a quote or invoice
invoices_getOne quote or invoice in full, by invoice_id or number: lines, totals, taxes, payments, history, its page and a fresh PDF link.Free* - List quotes and invoices
invoices_listQuotes and invoices, newest first, by kind, status (also overdue, unpaid and expired), customer and issue date.Free*
Give this to your agent.
Set up Conecto from https://conecto.chat/SKILL.md