Send a quote or invoice
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
From your agent’s balance. A call that fails costs nothing.
An example
Send the Elbblick invoice to Lukas Meyer with a short thank-you.
Your agent callsinvoices_send$0.10 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.
{
"invoice_id": "2d9c4e7b-1a3f-4c5d-8e6f-0b1a2c3d4e5f",
"message": "Thank you for your order. The chairs arrive in week 49."
}Use it when
A draft is ready for the customer, or a sent one should be emailed again.
What it does
Send a draft: it takes the next number (gapless), its PDF is made and kept in the file store, and the customer is emailed a link to its page (to view, pay or accept it) and to the PDF. On a document already sent it emails it again (to `to`, if given). email: false sends it without emailing anyone, to hand the link over yourself. Emailing people outside the business needs a paid account. When the account keeps books (books_setup), a sent invoice is posted to them. Before an invoice or credit note takes its number it is checked against the law of the business's country (in the EU, the UK and Switzerland: the business's address and VAT ID, the customer's VAT ID and address where needed, why a line has no tax, the VAT in the national currency); what is missing is refused for free, warnings come back. With e_invoice set it also goes out as an EN 16931 e-invoice (Factur-X inside the PDF, or an XRechnung XML beside it), validated against the official schema first.
What comes back
invoice: the document in full, now numbered and sent, with its page and PDF links, its date of supply, any VAT in the national currency and, for an e-invoice, its format and XML file; emailed_to: who it went to (null with email: false); warnings: what the law asks for that is worth adding next time. Every reply also carries cost_usd and balance_usd.
Inputs
| Name | Type | What it is |
|---|---|---|
invoice_idRequired | string | The invoice_id invoices_create returned (quotes and credit notes have one too). Exactly 36 characters. |
email | boolean | false: number it and make the PDF and the page, but email no one. Default: true. |
to | string | Send to this address instead of the customer's email. Up to 254 characters. |
message | string | A short note in the email, e.g. "Thanks for your order!". Up to 2,000 characters. |
link_hours | integer | How long the PDF download link works, in hours (up to 168). 1 to 168. Default: 24. |
The call
Over MCP, call invoices_send on https://api.conecto.chat/mcp/invoices. Over REST:
curl -X POST https://api.conecto.chat/v1/tools/invoices_send \
-H "Authorization: Bearer $CONECTO_KEY" \
-H "Content-Type: application/json" \
-d '{"invoice_id":"2d9c4e7b-1a3f-4c5d-8e6f-0b1a2c3d4e5f","message":"Thank you for your order. The chairs arrive in week 49."}'When it refuses
A refused call costs nothing and says what to do next.
| Code | When | What to do |
|---|---|---|
not_found404 | No quote or invoice of the business has that invoice_id. | Find it with invoices_list and use its invoice_id. |
profile_incomplete409 | The business has no legal name or country on its documents yet. | Set them with invoices_set_profile (legal_name and country, and ideally the address, email and tax_id). |
invoice_incomplete409 | The invoice lacks what the law of the business's country needs on it: the business's address or VAT ID, the customer's VAT ID or address for a reverse charge, why a line has no tax. | Add what the message names (invoices_update, invoices_set_profile) and send again; nothing was numbered. |
national_system_required409 | The business is in a country whose domestic invoices must go through a national system (Italy, Poland, Belgium, Croatia, Romania, Hungary, Greece, Portugal; Spain from 2027, France from September 2027). | Send it through that system; invoices to customers abroad still work. |
vat_id_invalid409 | VIES says the customer's VAT ID is not valid, so the reverse-charge or intra-Community invoice can't go out. | Check the number with the customer and fix customer.tax_id with invoices_update. |
no_rate409 | The invoice is in another currency than the national one and its VAT must be shown in both, but there is no rate for the day. | Pass vat_exchange_rate with invoices_update (UK businesses always give it). |
no_items409 | The draft has no lines. | Add lines with invoices_update. |
invalid_dates409 | The due date or valid_until is before the issue date, or the issue date is in the future or before the last invoice numbered in the series (numbers follow the dates). | Fix it with invoices_update; clearing issue_date dates it the day it is sent. |
void409 | The document is void. | Create a new one. |
already_paid409 | The invoice is paid in full. | There is nothing to send. |
already_accepted409 | The customer accepted the quote already. | Turn it into an invoice with invoices_convert_quote. |
already_declined409 | The customer declined the quote. | Create a new quote. |
already_sent409 | The document was sent already. | Call again with email: true to email it again. |
number_taken409 | The next number is used already. | Set a higher next number with invoices_set_profile. |
storage_full409 | The file store has no room for the PDF. | Delete files with files_delete, or add room with files_add_storage. |
no_email409 | The document has no customer email to send to. | Pass to, or set customer.email on the draft with invoices_update. |
payment_required_for_outbound402 | The balance is still free credit, which cannot email people outside the business. | Top up once (POST /v1/topups), or send with email: false and hand the link over yourself. |
suppressed422 | The address bounced, complained or unsubscribed before. | Send to another address with to. |
too_many_emails429 | This document was emailed as often as it may in 24 hours. | Try again tomorrow. |
daily_email_limit429 | The business emailed as many quotes and invoices in 24 hours as it may. | Try again tomorrow, or ask Conecto for more. |
email_failed502 | The email could not be sent; nothing was charged. | Call again in a moment. |
before_start409 | The date is before the books start. | Use a later date, or set an earlier start with books_setup. |
period_locked409 | The books are locked for that date. | Use a later date, or unlock the period with books_lock. |
no_role409 | The books have no account for a role the posting needs. | Give an account that role with books_save_accounts. |
unavailable503 | The PDF could not be made right now; nothing was charged. | Call again in a moment. |
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 - 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* - Turn a quote into an invoice
invoices_convert_quoteTurns an accepted quote into a draft invoice with the same customer and lines.$0.01 a call
Give this to your agent.
Set up Conecto from https://conecto.chat/SKILL.md