<!-- Generated from https://developers.superfrete.com/openapi.yaml (operationId: cancelOrder). -->

# Cancelar pedido

> `POST /api/v0/order/cancel` · Referência interativa: https://developers.superfrete.com/referencia#cancelOrder

- **Method:** `POST`
- **Path:** `/api/v0/order/cancel`
- **Operation ID:** `cancelOrder`
- **Tags:** Pedidos

Pede o cancelamento de uma etiqueta. Envie o ID do pedido e o motivo.

- Etiquetas já postadas, entregues ou canceladas não podem ser canceladas.
- O cancelamento é processado em segundo plano: o pedido passa a aparecer como `canceled` na hora, e o valor pago volta para a carteira da conta quando o processamento termina.

## Effective servers

- `https://sandbox.superfrete.com`

  Sandbox (testes, etiquetas sem validade)
- `https://api.superfrete.com`

  Produção

## Authentication

- **bearerAuth**: HTTP bearer (`JWT`)

  Token de acesso da SuperFrete, no header `Authorization: Bearer {token}`.
  - **Integração da própria loja:** gere o token no painel, em **Integrações** ([produção](https://web.superfrete.com/#/integrations) ou [sandbox](https://sandbox.superfrete.com/#/integrations)).
  - **Plataforma que conecta várias contas:** obtenha um token por seller com o fluxo OAuth 2.0 ([`exchangeOAuthToken`](https://developers.superfrete.com/referencia/md/exchangeOAuthToken.md)).

  O token não expira e dá acesso a todas as rotas da API para a conta; não há escopos. Ele deixa de valer quando a integração é removida no painel. O token de sandbox só funciona no sandbox, e o de produção só em produção.

## Header parameters

- **`User-Agent` (required)**: `string`

  Nome da sua aplicação com um e-mail de contato técnico, no formato `Aplicação (email@exemplo.com)`. Hoje só [Listar pedidos](https://developers.superfrete.com/referencia/md/listOrders.md) recusa um valor fora desse formato, mas envie em todas as rotas.

  **Example:**

  ```json
  "MinhaLoja (dev@minhaloja.com.br)"
  ```

## Request body

**Required:** `true`

**Content type:** `application/json`

- **`order` (required)**: `object`
  - **`description` (required)**: `string`

    Motivo do cancelamento.
  - **`id` (required)**: `string`

    ID do pedido na SuperFrete.

**Example:**

```json
{
  "order": {
    "id": "r8p3dhqjn4I0tBpnvkpU",
    "description": "Cliente desistiu da compra"
  }
}
```

## Responses

### 200 Cancelamento aceito.

**Content type:** `application/json`

`object`

Mapa do ID do pedido para o resultado.

**Additional properties:**

- **`canceled`**: `boolean`

**Example:**

```json
{
  "r8p3dhqjn4I0tBpnvkpU": {
    "canceled": true
  }
}
```

### 400 Campo ausente ou pedido não encontrado.

**Content type:** `application/json`

schema: `ValidationError`

Um ou mais campos da requisição são inválidos.

- **`errors` (required)**: `object`

  Mapa do campo (ex.: `to.postal_code`) para a lista de mensagens de erro desse campo.

  **Additional properties:**

  `array of string`
- **`message` (required)**: `string`

  Sempre `Ocorreu um ou mais erros.`

**Example: notFound**

Pedido não encontrado

```json
{
  "message": "Ocorreu um ou mais erros.",
  "errors": {
    "orders.0": [
      "Order not found!"
    ]
  }
}
```

**Example: missingReason**

Motivo ausente

```json
{
  "message": "Ocorreu um ou mais erros.",
  "errors": {
    "order.description": [
      "(order.description) é obrigatório."
    ]
  }
}
```

### 401 Token ausente, inválido, removido ou de outro ambiente.

**Content type:** `application/json`

schema: `Error`

Erro de regra de negócio ou de autenticação. `message` e `error` trazem o mesmo texto.

- **`error` (required)**: `string`

  Mesmo conteúdo de `message`, mantido por compatibilidade.
- **`message` (required)**: `string`

  Mensagem legível do erro.

**Example:**

```json
{
  "message": "Token inválida!",
  "error": "Token inválida!"
}
```

### 409 O pedido não pode mais ser cancelado (já postado, entregue ou cancelado).

**Content type:** `application/json`

*Schema `Error` is shown above.*

**Example:**

```json
{
  "message": "Esse pedido não pode mais ser cancelado!",
  "error": "Esse pedido não pode mais ser cancelado!"
}
```

### 500 Falha ao verificar ou registrar o cancelamento.

**Content type:** `application/json`

*Schema `Error` is shown above.*

**Example:**

```json
{
  "message": "Um error ocorreu ao tentar cancelar o pedido, tente novamente ou entre em contato com o suporte",
  "error": "Um error ocorreu ao tentar cancelar o pedido, tente novamente ou entre em contato com o suporte"
}
```

## Schemas

- `Error` — shown above.
- `ValidationError` — shown above.
