---
name: "purchasing_receive"
area: "purchasing"
title: "Receive a delivery"
price: "$0.01"
method: "POST"
url: "https://api.conecto.chat/v1/tools/purchasing_receive"
mcp_server: "https://api.conecto.chat/mcp/purchasing"
auth: "Authorization: Bearer <conecto_sk_ key>"
docs_url: "https://conecto.chat/tools/purchasing/purchasing_receive"
---

# Receive a delivery (`purchasing_receive`)

Records what arrived on a sent order; lines with a SKU come into Inventory at the ordered cost.

Record what arrived on a sent order: lines [{line, quantity}] (line numbers as the order lists them), or all: true for everything still to come. Lines with a SKU come into Inventory as receive moves at the ordered unit cost, at the order's location (or location); when the order's currency is not the item's, give that line's unit_cost in the item's currency. More than ordered is refused (take the extra in with inventory_move). All lines or none. The order becomes partial, or received when nothing is left to come.

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

## Use it when

A delivery from a supplier arrived, in full or in part.

- For stock that came in without an order, use [inventory_move](https://conecto.chat/tools/inventory/inventory_move.md).

## Say this to your agent

> 25 of the 40 GN pans arrived today. The rest come next week.

## 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. |  |  |
| `lines` | array of objects | no | 1 to 200 items. |  |  |
| `lines[].line` | integer | yes, in each item of `lines` | 1 to 200. |  |  |
| `lines[].quantity` | number or string | yes, in each item of `lines` | Up to 24 characters. |  |  |
| `lines[].unit_cost` | number or string | no | Only when the item is valued in another currency: the cost of one in that currency. Up to 24 characters. |  |  |
| `all` | boolean | no | Receive everything still to come. |  | `false` |
| `location` | string | no | Where the stock goes, instead of the order's location. Up to 120 characters. |  |  |
| `date` | string | no | When it arrived. Default today. Matches ^\\d{4}-\\d{2}-\\d{2}$. |  |  |

## Example

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

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

```json
{
  "order": "PO-0001",
  "lines": [
    {
      "line": 1,
      "quantity": 25
    }
  ]
}
```

REST:

```bash
curl https://api.conecto.chat/v1/tools/purchasing_receive \
  -H "Authorization: Bearer $CONECTO_KEY" \
  -H "Content-Type: application/json" \
  -d '{"order": "PO-0001", "lines": [{"line": 1, "quantity": 25}]}'
```

## Response

```json
{
  "call_id": "5f0c8a2e-3b7d-4c1e-9a64-2d8e1f7b0c93",
  "tool": "purchasing_receive",
  "status": "succeeded",
  "replayed": false,
  "cost_usd": "$0.01",
  "balance_usd": "$19.75",
  "result": {
    "order": {
      "order_id": "f5c39725-49ad-4169-937c-7d085b7f7bc1",
      "number": "PO-0001",
      "status": "partial",
      "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": "25",
          "billed": "0",
          "to_receive": "15"
        },
        {
          "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": "97673096-25d8-4085-b032-a9697581d0f9",
        "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/97673096-25d8-4085-b032-a9697581d0f9?t=eyJmIjoiOTc2NzMwOTYtMjVkOC00MDg1LWIwMzItYTk2OTc1ODFkMGY5IiwiZXhwIjoxNzkyMTYxMjE3fQ:1xHMWX:v8CeX7HXHDyLtsv0BqNt4JEiRrfMERmyFVMaMRfXlv0",
        "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)"
        }
      ]
    },
    "received": [
      {
        "line": 1,
        "quantity": "25"
      }
    ],
    "stock_moves": [
      {
        "move_id": 4101,
        "date": "2026-10-14",
        "kind": "receive",
        "sku": "GN-PAN-11",
        "quantity": "25",
        "from": null,
        "to": "Main",
        "unit_cost": "18.5",
        "value": "462.50",
        "quantity_after": "25",
        "reference": "PO-0001",
        "note": "PO-0001 from Nordstahl Küchentechnik GmbH"
      }
    ]
  }
}
```

`result`: order: the order with what each line has received, now partial or received; received: the lines taken in; stock_moves: the Inventory moves made.

## Errors

| Code | Status | When | Fix |
|---|---|---|---|
| `not_found` | 404 | No purchase order has that order_id or number. | Find it with purchasing_list_orders. |
| `not_found` | 404 | A line's SKU is not an Inventory item, or the location does not exist. | Add the item with inventory_save_items, or leave the SKU out. |
| `archived` | 409 | The supplier, item, location or account is archived. | Bring the supplier back with purchasing_save_supplier archived: false, or use another one. |
| `order_closed` | 409 | The order is closed. | Draft a new order. |
| `order_cancelled` | 409 | The order is cancelled. | Draft a new order. |
| `not_sent` | 409 | The order is still a draft. | Send it, or mark it sent with purchasing_update_order. |
| `already_received` | 409 | Everything on the order was received. | Nothing more to receive. |
| `nothing_to_receive` | 409 | Nothing is left to receive. | Nothing more to receive. |
| `more_than_ordered` | 409 | A line would receive more than was ordered. | Receive at most what is left, and take the extra in with inventory_move. |
| `currency_mismatch` | 409 | The order's currency differs from the item's. | Give that line's unit_cost in the item's currency. |
| `invalid_input` | 400 | Neither lines nor all was given, or a quantity or date is not valid. | Send lines or all: true. |

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_send_order](https://conecto.chat/tools/purchasing/purchasing_send_order.md): Emails an order to the supplier with a link to its PDF; a draft takes the next number first. $0.10 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.
