# order_not_found

> Order not found

- Status: 404 Not Found
- Returned by: /api/public
- Operations: [createOrder](https://developers.rivr.io/reference/api-public/createOrder.md), [cancelOrder](https://developers.rivr.io/reference/api-public/cancelOrder.md), [refundOrder](https://developers.rivr.io/reference/api-public/refundOrder.md), [sendOrderToDevice](https://developers.rivr.io/reference/api-public/sendOrderToDevice.md)
- Retry (`retryWhen`): `after_fix`
- Did anything happen? (`outcome`): `none` (It did not happen)
- Cancelling and refunding in /api/public
- Page in the portal: https://developers.rivr.io/errors/order_not_found
- Try it: `GET https://developers.rivr.io/errors/simulate/order_not_found` answers with the code's exact wire form; `?succeedAfter=N&attempt=K` gives a 200 once `attempt` passes `N`

## What it means

There is no order with the id that the key reaches. An order that belongs to another platform or organisation gets the same answer as one that doesn't exist, and nothing was done. `send-to-device` answers with the same code since 2026-10-25.

## What your system does

Check the order id, and that the call is made with the key for the clinic that owns the order.

## Is it worth retrying?

No, not without changing the call.

`retryWhen`: `after_fix`. Change the request first, as the code's page says: a value, the token, a header or a new key. Then send it.

## Did anything happen?

`outcome`: `none`. **It did not happen.** This call did not do what you asked for and changed nothing else that you can see or that concerns money. Where the code has an `outcomeNote`, it takes precedence.

## Example: /api/public

```http
HTTP/1.1 404 Not Found
Content-Type: application/json

{
  "propertyName": "orderId",
  "message": "The order was not found",
  "errorCode": "order_not_found",
  "code": "order_not_found",
  "type": "https://developers.rivr.io/errors/order_not_found"
}
```

The `title`, `detail`, `message` and `error_description` texts are exactly as the API writes them today.
