> ## Documentation Index
> Fetch the complete documentation index at: https://muveya.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Confirm delivery, receive and close

> Confirm the handoff of a dispatched order or report a problem, accept or dispute each delivered box, and close the order.

After dispatch, a delivery needs three more acts, by two different parties:

1. The **origin party** confirms that the boxes were handed over, or reports a delivery problem.
2. The **destination party** checks every box and accepts or disputes it.
3. The **destination party** closes the order.

For who counts as each party, see [Origin party and destination party](/docs/en/deliveries/overview#origin-party-and-destination-party).

## Confirm the delivery

### Who can do it

* Permission `delivery.confirm` (**Confirm delivery**).
* The source location in your **Location access** (the order's location when the source is a central warehouse or the order named no source).
* To see the delivered boxes by code you also need `fulfillment.read`. Without it, the screen lists the ordered supplies instead.

Without `delivery.confirm` the screen says "You cannot confirm deliveries. Ask your clinic's administrator for the permission."

### Where

* In **Deliveries**, open **To deliver** and select the order number. The section lists orders in **Dispatched** (`dispatched`).
* Right after dispatching, the **Confirm the delivery** link on the pick screen.
* From the custody detail, **Confirm the delivery**.
* Direct path: `console.muveya.com/fulfillment/:orderId/delivery`.

The screen is titled **Delivery of order #1042**. Under **What is being delivered** it shows either the boxes (**Box code**, **Supply**, **Quantity**) or, without `fulfillment.read`, the ordered supplies (**Supply** as "name · SKU", **Quantity** as "10 × unit").

### Confirm a clean delivery

<Steps>
  <Step title="Check the boxes">
    Compare the boxes you hand over with **What is being delivered**.
  </Step>

  <Step title="Confirm">
    Select **Confirm delivery**. There is no extra confirmation dialog.
  </Step>

  <Step title="Read the answer">
    "Delivery confirmed. The destination now confirms the reception." The order moves to **Delivered** (`delivered`) and appears under **To receive** for the destination party.
  </Step>
</Steps>

### Report a delivery problem

Use this when the boxes could not be handed over properly.

<Steps>
  <Step title="Open the problem form">
    Select **Report a problem**.
  </Step>

  <Step title="Say what happened">
    Choose one option in **What happened** (required) and add context in **Details (optional)**, up to 2000 characters.
  </Step>

  <Step title="Send and confirm">
    Select **Report problem**. A dialog warns: "The order stops as a delivery problem, and its resolution is pending with the clinic's owner." Select **Report problem** again to send it, or **Go back** to keep the order as it is.
  </Step>
</Steps>

| Option in **What happened** | Stored code |
| - | - |
| **It could not be delivered** | `not_delivered` |
| **It arrived damaged** | `damaged` |
| **It went to the wrong place** | `wrong_destination` |
| **Something else** | `other` |

The answer is "The problem was recorded. The order is now a delivery problem." The order moves to **Delivery problem** (`exception`).

### What the system records

* A delivery record with who confirmed, when, which boxes were handed over and, for a problem, the reason code and details. It is written once and cannot be changed: confirming again only says "This delivery was already recorded."
* No stock movement. The boxes stay **In transit** until the destination receives them.
* The order status (`delivered` or `exception`) and the audit record `fulfillment.delivered` or `fulfillment.delivery_exception`.

### When a delivery problem is reported

A delivery problem stops the order:

* Its boxes stay **In transit**. They count in neither the source nor the destination warehouse.
* The order cannot be received or closed. The custody detail says "Resolution is pending with the clinic's owner. Nothing more can be done here for now."
* It is listed under **Delivery problems** for members with `fulfillment.read`.

There is no screen to resolve a delivery problem on the console today, and a reported problem cannot be withdrawn. The workspace owner should write to [team@muveya.com](mailto:team@muveya.com) with the order number and what happened.

## Receive the order

### Who can do it

* Permission `receipt.confirm` (**Confirm receipt**) and permission `fulfillment.read` (**View fulfillment**).
* The destination location in your **Location access** (the order's location when the destination is a central warehouse).
* If the source and destination warehouses belong to two different locations, your **Location access** must not include the origin location, unless you have **All locations in this account**.

The screen explains what is missing: "You cannot receive orders. Ask your clinic's administrator for the permission." or "To receive box by box you also need permission to view deliveries. Ask your clinic's administrator."

### Where

* In **Deliveries**, open **To receive** and select the order number. The section lists orders in **Delivered** (`delivered`).
* From the custody detail, **Receive the order**.
* Direct path: `console.muveya.com/fulfillment/:orderId/receipt`.

The screen is titled **Receive order #1042**. It lists one card per delivered box, with its code, supply and "Quantity: 10". If the order is not in **Delivered**, it says "This order has not been delivered, so there is nothing to receive yet."

### Steps

<Steps>
  <Step title="Check each box">
    The screen reminds you: "Check each box. Accept what arrived well; dispute what arrived damaged or is missing." Every box starts as **Accept**.
  </Step>

  <Step title="Dispute the boxes with a problem">
    For each problem box, set **Decision for box BX-000123** to **Dispute**, then fill in its fields (see the table below).
  </Step>

  <Step title="Describe the evidence">
    As soon as one box is disputed, **Evidence of the problem** appears and is required: "Describe what you saw and where the photos are. Required when you dispute a box." Up to 2000 characters.
  </Step>

  <Step title="Confirm">
    Select **Confirm reception**. The answer is "Reception confirmed: every box was accepted." or "Reception confirmed with disputed boxes. They go back to the warehouse they came from." A link opens the order's tracking page.
  </Step>
</Steps>

Fields of a disputed box:

| Field | Values | Default |
| - | - | - |
| **Reason for box BX-000123** | **Damaged** (`damaged`), **Missing** (`missing`), **Wrong supply** (`wrong_item`), **Expired** (`expired`), **Other** (`other`) | **Damaged** |
| **Keep box BX-000123 in quarantine when it returns** | Checked or not | Checked |
| **Note for box BX-000123 (optional)** | Free text, up to 2000 characters | Empty |

<Note>
  Photos cannot be attached on the console today. Describe in the evidence where the photos are kept.
</Note>

### What happens to each box

| Decision | Stock movement | Where the box ends | Box state |
| - | - | - | - |
| **Accept** | **Received**: the quantity is added to the destination warehouse. | The destination warehouse. | **Active** |
| **Dispute** with quarantine checked | **Returned**: the quantity is added back to the source warehouse, with the reason code. | The source warehouse. | **Quarantined** (excluded from reservations and use) |
| **Dispute** without quarantine | **Returned**, as above. | The source warehouse. | **Active** |

A disputed box is recorded back in the warehouse it came from, so send it back physically. The original **Dispatched** movement stays in the ledger: the return is a new, compensating movement, never an edit. To inspect a quarantined box later, see [Boxes](/docs/en/inventory/boxes) and [Lot recall](/docs/en/inventory/lot-recall); no action releases a box from quarantine.

The order moves to **Received** (`received`) when every box was accepted, or **Partially received** (`partially_fulfilled`) when at least one box was disputed. The audit record is `fulfillment.received` or `fulfillment.received.disputed`.

### Partial quantities

Reception is whole-box: each box is accepted or disputed as a unit, and there is no field for a received quantity. If a box arrived with fewer units than expected, choose one of these:

* Dispute the box (for example with **Missing** or **Other**) and describe the difference in the evidence. The whole box is recorded back at the source, where the count can be corrected.
* Accept the box and then correct its quantity at the destination with a [stock correction](/docs/en/inventory/corrections).

### Rules and limits

* Only an order in **Delivered** can be received.
* The reception must cover exactly the delivered boxes, each one once. The console builds this for you; if the delivery changed while the page was open, reload it.
* One reception can include up to 200 accepted and 200 disputed boxes.
* The first reception stands. Confirming again only says "This reception was already recorded."
* The evidence text is stored with the reception but is not shown on the custody detail or returned by the API today. Per-box notes are returned by the API, not shown on the console.

## Close the order

Closing is the last, administrative step. It moves no stock: every box was already received at the destination or returned to the origin.

### Who can do it

* Permission `fulfillment.close` (**Close fulfillment**) and permission `fulfillment.read` (**View fulfillment**), because the button is on the custody detail.
* The same location rules as receiving: the destination party closes.

### Steps

<Steps>
  <Step title="Open the order">
    In **Deliveries**, open **To close** and select the order number. The section lists orders in **Received** and **Partially received**.
  </Step>

  <Step title="Close it">
    The custody detail shows "Everything was received or returned. Close the order to finish it." Select **Close order**.
  </Step>

  <Step title="Read the answer">
    "Order closed." The order moves to **Closed** (`closed`). A second attempt says "This order was already closed."
  </Step>
</Steps>

What the system records: a closure record with who closed and when, the order status `closed`, and the audit record `fulfillment.closed`.

### Rules

* Only orders in **Received** or **Partially received** can be closed. An order with a **Delivery problem** cannot be closed.
* **A box still in transit blocks closing.** After a reception, muveya moves each box into the destination or back to the origin. If one of those stock steps did not finish, the box is still **In transit** and closing answers "This order cannot be closed yet." muveya retries the pending step in the background; check the **Boxes** table on the custody detail and try again later. If a box stays **In transit**, write to [team@muveya.com](mailto:team@muveya.com).

## What can go wrong

| Message | Code | What to do |
| - | - | - |
| "This order is not on its way." | `fulfillment.not_dispatched` | The order is not in **Dispatched**, or its source location is outside your **Location access**. Check the status on the custody detail. |
| "Choose what happened." | | Select an option in **What happened** before sending. |
| "Say what happened in 200 characters or fewer." | `fulfillment.invalid_delivery_exception` | Shorten the problem reason. |
| "There is nothing to receive for this order here." | `fulfillment.nothing_to_receive` | The order is not in **Delivered**, or its destination location is outside your **Location access**. |
| "The decision must cover exactly the delivered boxes. Reload the page and check again." | `fulfillment.over_receipt` | Reload the page and decide again for every box. |
| "Describe the evidence before disputing a box." | | Fill in **Evidence of the problem**. |
| "A disputed box needs evidence. Describe what you saw." | `fulfillment.discrepancy_requires_evidence` | Fill in **Evidence of the problem** and confirm again. |
| "This text can have up to 2000 characters." | | Shorten the note or the evidence. |
| "A reason or a note is too long." | `fulfillment.invalid_receipt` | Shorten the box notes or the evidence. |
| "This order cannot be closed yet." | `fulfillment.nothing_to_close` | The order is not in **Received** or **Partially received**, a box is still **In transit**, or the destination location is outside your **Location access**. |
| "This delivery does not exist or you cannot see it." (receipt screen) or "This record is not available in the active dental clinic account." (delivery screen) | `common.not_found`, `orders.not_found` | The order does not exist or is outside your locations. |
| "Your account does not have permission for this action." | `common.forbidden` | You lack the step's permission, or you belong to the origin location of a transfer between two locations and cannot receive or close it. Ask a member of the destination location. |
| "Review the entered values before trying again." | `common.invalid_request` | Too many boxes in one reception, or a field is invalid. Reload and try again. |
| "Could not complete the request. Please try again." | | If, after reloading, the receipt screen says "This reception was already recorded.", the reception stands and muveya finishes the stock steps in the background. |

## Related pages

<CardGroup cols={2}>
  <Card title="Deliveries overview" icon="truck" href="/docs/en/deliveries/overview">
    Lifecycle, whole-box custody and permissions.
  </Card>

  <Card title="Custody history" icon="clock-rotate-left" href="/docs/en/deliveries/custody-history">
    Review the delivery, reception and closure records.
  </Card>

  <Card title="Stock corrections" icon="scale-balanced" href="/docs/en/inventory/corrections">
    Correct a box's quantity after an accepted delivery.
  </Card>

  <Card title="Lot recall" icon="triangle-exclamation" href="/docs/en/inventory/lot-recall">
    Quarantine and follow boxes of a lot.
  </Card>
</CardGroup>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.