Invoices

Turn a quote into an invoice

invoices_convert_quote · Changes data · Markdown

Turns an accepted quote into a draft invoice with the same customer and lines.

$0.01 a call

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

An example

Lukas confirmed the chair quote on the phone. Turn it into an invoice.

Your agent callsinvoices_convert_quote$0.01 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
{
  "quote_id": "2d9c4e7b-1a3f-4c5d-8e6f-0b1a2c3d4e5f",
  "mark_accepted": true
}
What comes back
{
  "invoice": {
    "invoice_id": "ceb3a3db-0bd5-4dca-a6fa-f4ce8df6d4c5",
    "kind": "invoice",
    "number": null,
    "status": "draft",
    "currency": "EUR",
    "issue_date": null,
    "due_date": null,
    "overdue": false,
    "days_overdue": 0,
    "customer": {
      "contact_id": null,
      "company_id": null,
      "name": "Hotel Elbblick GmbH",
      "email": "lukas.meyer@hotel-elbblick.example",
      "address": "Elbchaussee 120\n22763 Hamburg",
      "tax_id": "",
      "country": null
    },
    "total": "13887.30",
    "total_formatted": "€13,887.30",
    "amount_paid": "0.00",
    "balance": "13887.30",
    "balance_formatted": "€13,887.30",
    "public_url": null,
    "created_at": "2026-10-14T08:00:00+00:00",
    "sent_at": null,
    "credited": "0.00",
    "items": [
      {
        "description": "Bistro chair, beech\nStackable, for terraces",
        "quantity": "40",
        "unit_price": "320",
        "tax_rate": "19",
        "discount_percent": "10",
        "amount": "12800.00",
        "discount": "1280.00",
        "tax": "2188.80",
        "total": "13708.80"
      },
      {
        "description": "Delivery and setup",
        "quantity": "1",
        "unit_price": "150",
        "tax_rate": "19",
        "discount_percent": "0",
        "amount": "150.00",
        "discount": "0.00",
        "tax": "28.50",
        "total": "178.50"
      }
    ],
    "totals": {
      "subtotal": "12950.00",
      "subtotal_formatted": "€12,950.00",
      "discount": "1280.00",
      "discount_formatted": "€1,280.00",
      "tax": "2217.30",
      "tax_formatted": "€2,217.30",
      "total": "13887.30",
      "total_formatted": "€13,887.30",
      "credited": "0.00",
      "credited_formatted": "€0.00",
      "amount_paid": "0.00",
      "amount_paid_formatted": "€0.00",
      "balance": "13887.30",
      "balance_formatted": "€13,887.30",
      "taxes": [
        {
          "rate": "19",
          "base": "11670.00",
          "amount": "2217.30",
          "amount_formatted": "€2,217.30"
        }
      ]
    },
    "supply": null,
    "tax_exemption": null,
    "tax_note": null,
    "vat_exchange_rate": null,
    "national_vat": null,
    "e_invoice": null,
    "notes": "Thank you for your enquiry. The chairs can be delivered in week 49.",
    "payment_link": null,
    "payment_terms_days": 14,
    "ready_to_send": true,
    "business": {
      "name": "Hansen & Voss GmbH",
      "address": "Billbrookdeich 112\n22113 Hamburg\nGermany",
      "tax_id": "DE123456789",
      "email": "billing@hansenvoss.example",
      "phone": "+49 40 66969 100",
      "logo_file_id": "",
      "footer": "Please pay by bank transfer to Hansen & Voss GmbH\nIBAN DE89 3704 0044 0532 0130 00, BIC COBADEFFXXX",
      "tax_label": "VAT",
      "paper": "a4",
      "country": "DE",
      "legal_notes": "Hansen & Voss GmbH, Amtsgericht Hamburg HRB 123456\nManaging directors: Clara Hansen, Henrik Voss",
      "document_language": ""
    },
    "pdf": null,
    "payments": [],
    "quote_id": "2d9c4e7b-1a3f-4c5d-8e6f-0b1a2c3d4e5f",
    "credit_notes": [],
    "viewed_at": null,
    "accepted_at": null,
    "declined_at": null,
    "paid_at": null,
    "voided_at": null,
    "void_reason": null,
    "last_emailed_at": null,
    "reminders_sent": 0,
    "history": [
      {
        "at": "2026-10-14T08:00:00+00:00",
        "event": "created",
        "detail": "from quote Q-0001",
        "by": "key 4101 (Pip)"
      }
    ]
  },
  "quote": {
    "invoice_id": "2d9c4e7b-1a3f-4c5d-8e6f-0b1a2c3d4e5f",
    "kind": "quote",
    "number": "Q-0001",
    "status": "accepted",
    "currency": "EUR",
    "issue_date": "2026-10-14",
    "valid_until": "2026-11-13",
    "expired": false,
    "customer": {
      "contact_id": null,
      "company_id": null,
      "name": "Hotel Elbblick GmbH",
      "email": "lukas.meyer@hotel-elbblick.example",
      "address": "Elbchaussee 120\n22763 Hamburg",
      "tax_id": "",
      "country": null
    },
    "total": "13887.30",
    "total_formatted": "€13,887.30",
    "amount_paid": "0.00",
    "balance": "13887.30",
    "balance_formatted": "€13,887.30",
    "public_url": "https://cncto.co/i/h3U8b4fgINAoaax7ljMWMMeXnfDRRawW",
    "created_at": "2026-10-14T08:00:00+00:00",
    "sent_at": "2026-10-14T08:00:00+00:00"
  }
}

Use it when

The customer said yes to a quote, on its page or another way.

What it does

Turn an accepted quote into a draft invoice with the same customer and lines, ready for invoices_send. If the customer accepted some other way (email, phone), pass mark_accepted: true to record it.

What comes back

invoice: the new draft invoice; quote: the quote it came from, now accepted. Every reply also carries cost_usd and balance_usd.

Inputs

NameTypeWhat it is
quote_idRequiredstringThe quote's invoice_id. Exactly 36 characters.
mark_acceptedbooleanRecord a sent quote as accepted first (the customer said yes). Default: false.

The call

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

Terminal
curl -X POST https://api.conecto.chat/v1/tools/invoices_convert_quote \
  -H "Authorization: Bearer $CONECTO_KEY" \
  -H "Content-Type: application/json" \
  -d '{"quote_id":"2d9c4e7b-1a3f-4c5d-8e6f-0b1a2c3d4e5f","mark_accepted":true}'

When it refuses

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

CodeWhenWhat to do
not_found404No quote or invoice of the business has that invoice_id.Find it with invoices_list and use its invoice_id.
not_a_quote400The id is an invoice.Pass a quote's invoice_id.
not_sent409The quote is still a draft.Send it with invoices_send first.
not_accepted409The customer has not accepted the quote.If they said yes another way, call again with mark_accepted: true.
quote_declined409The customer declined the quote.Create a new quote or invoice.
quote_void409The quote is void.Create a new quote or invoice.
already_converted409The quote became an invoice already.Use that invoice; the message names it.

Give this to your agent.

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