---
name: "purchasing_send_order"
area: "purchasing"
title: "Email a purchase order"
price: "$0.10"
method: "POST"
url: "https://api.conecto.chat/v1/tools/purchasing_send_order"
mcp_server: "https://api.conecto.chat/mcp/purchasing"
auth: "Authorization: Bearer <conecto_sk_ key>"
docs_url: "https://conecto.chat/tools/purchasing/purchasing_send_order"
---

# Email a purchase order (`purchasing_send_order`)

Emails an order to the supplier with a link to its PDF; a draft takes the next number first.

Email an order to the supplier in the business's name, with a link to its PDF. A draft takes the next number first (PO-0001 on, without gaps), its PDF is made and kept in the file store, and it no longer changes; a failed email numbers nothing. An order already sent is emailed again (to `to`, if given). Needs the business's name for documents (invoices_set_profile legal_name) and, for anyone outside the business, a paid account. To record an order as sent without emailing it, use purchasing_update_order with mark_sent ($0.01).

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

## Use it when

A draft is ready to go to the supplier, or a sent one should be emailed again.

## Say this to your agent

> Email the pan order to Nordstahl and ask them to call before they deliver.

## Inputs

| Name | Type | Required | Description | Allowed values | Default |
|---|---|---|---|---|---|
| `order` | string | yes | The order_id, or the order's number like "PO-0007". 1 to 40 characters. |  |  |
| `to` | string | no | Send to this address instead of the supplier's email. Up to 254 characters. |  |  |
| `message` | string | no | A short note in the email, e.g. "Please deliver to the back door." (up to 2,000 characters) |  |  |

## Example

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

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

```json
{
  "order": "8a4c2e6f-1b3d-4f5a-9c7e-0d2b4f6a8c1e",
  "message": "Please call Felix on the morning of the delivery: +49 40 66969 105."
}
```

REST:

```bash
curl https://api.conecto.chat/v1/tools/purchasing_send_order \
  -H "Authorization: Bearer $CONECTO_KEY" \
  -H "Content-Type: application/json" \
  -d '{"order": "8a4c2e6f-1b3d-4f5a-9c7e-0d2b4f6a8c1e", "message": "Please call Felix on the morning of the delivery: +49 40 66969 105."}'
```

## Response

```json
{
  "call_id": "5f0c8a2e-3b7d-4c1e-9a64-2d8e1f7b0c93",
  "tool": "purchasing_send_order",
  "status": "succeeded",
  "replayed": false,
  "cost_usd": "$0.10",
  "balance_usd": "$19.75",
  "result": {
    "order": {
      "order_id": "8a4c2e6f-1b3d-4f5a-9c7e-0d2b4f6a8c1e",
      "number": "PO-0001",
      "status": "sent",
      "supplier": {
        "supplier_id": 4101,
        "name": "Nordstahl Küchentechnik GmbH"
      },
      "currency": "EUR",
      "total": "835.00",
      "issue_date": "2026-10-14",
      "expected_on": "2026-11-02",
      "created_at": "2026-10-14T08:00:00+00:00",
      "lines": [
        {
          "line": 1,
          "sku": "GN-PAN-11",
          "description": "GN 1/1 pan, steel, 65 mm",
          "quantity": "40",
          "unit_cost": "18.5",
          "tax_rate": "0",
          "amount": "740.00",
          "tax": "0.00",
          "received": "0",
          "billed": "0",
          "to_receive": "40"
        },
        {
          "line": 2,
          "sku": null,
          "description": "Delivery",
          "quantity": "1",
          "unit_cost": "95",
          "tax_rate": "0",
          "amount": "95.00",
          "tax": "0.00",
          "received": "0",
          "billed": "0",
          "to_receive": "1"
        }
      ],
      "subtotal": "835.00",
      "tax": "0.00",
      "location": "Main",
      "notes": "Please deliver to the warehouse gate, Billbrookdeich 112.",
      "pdf": {
        "file_id": "e6696cc9-9f24-463f-805e-d411fa2efe73",
        "name": "Purchase order PO-0001.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/e6696cc9-9f24-463f-805e-d411fa2efe73?t=eyJmIjoiZTY2OTZjYzktOWYyNC00NjNmLTgwNWUtZDQxMWZhMmVmZTczIiwiZXhwIjoxNzkyMTYxMjE3fQ:1xHMWX:f2-vnP8F1pUktJ8SkjlEVatB8QEy23b2zktSKfs_koE",
        "link_expires_in_hours": 24
      },
      "bills": [],
      "sent_at": "2026-10-14T08:00:00+00:00",
      "closed_at": null,
      "history": [
        {
          "at": "2026-10-14T08:00:00+00:00",
          "event": "created",
          "detail": "",
          "by": "key 4101 (Pip)"
        },
        {
          "at": "2026-10-14T08:00:00+00:00",
          "event": "sent",
          "detail": "PO-0001",
          "by": "key 4101 (Pip)"
        }
      ]
    },
    "emailed_to": "orders@nordstahl.example"
  }
}
```

`result`: order: the order, now numbered and sent, with its PDF link; emailed_to: who it went to.

## Errors

| Code | Status | When | Fix |
|---|---|---|---|
| `not_found` | 404 | No purchase order has that order_id or number. | Find it with purchasing_list_orders. |
| `profile_incomplete` | 409 | The business has no name for documents yet. | Set it with invoices_set_profile legal_name. |
| `order_closed` | 409 | The order is closed. | Draft a new order. |
| `order_cancelled` | 409 | The order is cancelled. | Draft a new order. |
| `no_email` | 409 | The document has no customer email to send to. | Pass to, or set customer.email on the draft with invoices_update. |
| `payment_required_for_outbound` | 402 | 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. |
| `suppressed` | 422 | The address bounced, complained or unsubscribed before. | Send to another address with to. |
| `too_many_emails` | 429 | This document was emailed as often as it may in 24 hours. | Try again tomorrow. |
| `daily_email_limit` | 429 | The business emailed as many quotes and invoices in 24 hours as it may. | Try again tomorrow, or ask Conecto for more. |
| `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

- [purchasing_save_supplier](https://conecto.chat/tools/purchasing/purchasing_save_supplier.md): Adds a supplier or changes one: contact, email for orders, address, currency, payment terms and the book account their bills go to. $0.01 a call.
- [purchasing_list_suppliers](https://conecto.chat/tools/purchasing/purchasing_list_suppliers.md): Suppliers by name, each with what is owed to them on open bills and how many orders are open. Free up to 1,000,000 reads a month.
- [purchasing_save_supplier_items](https://conecto.chat/tools/purchasing/purchasing_save_supplier_items.md): Says which Inventory items a supplier sells: their code, cost, pack size, minimum order, lead time and a fixed reorder quantity. $0.005 per item saved.
- [purchasing_list_supplier_items](https://conecto.chat/tools/purchasing/purchasing_list_supplier_items.md): What suppliers sell: codes, costs, packs, minimums, lead times and the preferred supplier, for one supplier or one SKU. Free up to 1,000,000 reads a month.
- [purchasing_draft_reorders](https://conecto.chat/tools/purchasing/purchasing_draft_reorders.md): Drafts one purchase order per supplier for every item at or below its reorder point, counting what is already on order. $0.01 per draft order.
- [purchasing_create_order](https://conecto.chat/tools/purchasing/purchasing_create_order.md): Drafts a purchase order to a supplier: lines (with Inventory SKUs if you like), currency, delivery date and stock location. $0.01 a call.
- [purchasing_update_order](https://conecto.chat/tools/purchasing/purchasing_update_order.md): Changes a draft order, or records it as sent without emailing it. $0.01 a call.
- [purchasing_receive](https://conecto.chat/tools/purchasing/purchasing_receive.md): Records what arrived on a sent order; lines with a SKU come into Inventory at the ordered cost. $0.01 a call.
- [purchasing_close_order](https://conecto.chat/tools/purchasing/purchasing_close_order.md): Closes a sent order (stop waiting for the rest) or cancels one that received nothing. $0.01 a call.
- [purchasing_list_orders](https://conecto.chat/tools/purchasing/purchasing_list_orders.md): Purchase orders, newest first, by status, supplier or date; or one order in full. Free up to 1,000,000 reads a month.
- [purchasing_create_bill](https://conecto.chat/tools/purchasing/purchasing_create_bill.md): Records a bill a supplier sent, from its own lines or from an order, with its PDF; it is posted to the books. $0.01 a call.
- [purchasing_update_bill](https://conecto.chat/tools/purchasing/purchasing_update_bill.md): Adds a recorded bill's PDF if it has none, or changes its notes or due date; amounts and the PDF it has never change. $0.01 a call.
- [purchasing_pay_bill](https://conecto.chat/tools/purchasing/purchasing_pay_bill.md): Records money paid on a bill, or money back from the supplier; it is posted to the books. $0.01 a call.
- [purchasing_pay_bills](https://conecto.chat/tools/purchasing/purchasing_pay_bills.md): Pays several bills at once from one bank account, like Xero's batch payments, with the SEPA file to upload to the bank. $0.01 per bill paid.
- [purchasing_set_planned_date](https://conecto.chat/tools/purchasing/purchasing_set_planned_date.md): Plans the day the business will pay a bill, so the cash flow forecast takes the money out then rather than on the due date. Free.
- [purchasing_record_prepayment](https://conecto.chat/tools/purchasing/purchasing_record_prepayment.md): Records a deposit the business paid a supplier before their bill, like Xero's prepayments; it waits as a credit with them. $0.01 a call.
- [purchasing_use_credit](https://conecto.chat/tools/purchasing/purchasing_use_credit.md): Puts a credit with a supplier on their bill, like Xero's allocate credit, or records it coming back. $0.01 a call.
- [purchasing_list_credits](https://conecto.chat/tools/purchasing/purchasing_list_credits.md): Lists credits with suppliers, deposits and overpayments, with what is left on each. Free up to 1,000,000 reads a month.
- [purchasing_save_repeating_bill](https://conecto.chat/tools/purchasing/purchasing_save_repeating_bill.md): Records a supplier's bill again every so many weeks, months or years, with [Month] and [Year] filled in, like Xero's repeating bills. $0.01 a call.
- [purchasing_list_repeating_bills](https://conecto.chat/tools/purchasing/purchasing_list_repeating_bills.md): Lists the repeating bills: whose each is, how often, the next dates, and what each recorded. Free up to 1,000,000 reads a month.
- [purchasing_delete_repeating_bill](https://conecto.chat/tools/purchasing/purchasing_delete_repeating_bill.md): Stops a repeating bill for good; the bills it recorded stay. Free.
- [purchasing_void_bill](https://conecto.chat/tools/purchasing/purchasing_void_bill.md): Voids a bill entered by mistake; the books reverse it and its order can be billed again. $0.01 a call.
- [purchasing_list_bills](https://conecto.chat/tools/purchasing/purchasing_list_bills.md): Supplier bills by due date, filtered by status, supplier, order or dates; or one bill in full. Free up to 1,000,000 reads a month.
- [purchasing_report](https://conecto.chat/tools/purchasing/purchasing_report.md): Aged payables (what is owed to each supplier by how late) or spend (what each supplier billed and was paid). Free up to 1,000,000 reads a month.
