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

# Criar pedido (v1)

> Cria um pedido no Fire enviando-o no formato Fire. Para a estrutura de PDV, quiosque e agregadores, use a versão 2.

Cria um pedido no Fire com o corpo no **formato Fire**: o mesmo de
[Injetar pedido](https://docs.fire.rest/pt/api-reference/orders.md), sem mudanças. O Fire não o traduz: valida e cria o
pedido diretamente.

Esta é a **versão 1**. Se o seu sistema envia os pedidos com a estrutura de PDV e quiosque ou com a
de agregadores, use [Criar pedido (v2)](https://docs.fire.rest/pt/api-reference/create-order-v2.md). As duas versões estão
vigentes e terminam no mesmo lugar: mesmas validações, mesma resposta.

Depois de criado, o pedido segue o mesmo ciclo de qualquer pedido do Fire: impostos, dia de
negócio, documento fiscal e [eventos](https://docs.fire.rest/pt/events/overview.md).

## Autenticação

**x-api-key** `string` *required*

Sua API key do Fire com escopo `orders:write`. Também é aceito `Authorization: Bearer <api_key>`.
A key **deve estar associada à sua conta e a um vendor**. Não é preciso enviar o header `account`.

## Corpo

O corpo é o de [Injetar pedido](https://docs.fire.rest/pt/api-reference/orders.md), no formato Fire (camelCase, com preços e
totais). Os campos mínimos são:

**orderId** `string` *required*

Identificador do pedido no seu sistema.

**orderCode** `string` *required*

Código único do pedido. Se já existir um pedido com esse código para o seu vendor, a resposta é `409`.

**accountId** `number` *required*

Conta do pedido.

**createdAt** `string` *required*

Data da venda.

**selectedShippingMethod** `string` *required*

`delivery` ou `pickup`.

**client** `object` *required*

Cliente: `uid`, `name`, `lastName`.

**store** `object` *required*

Loja: `id`, `code`, `vendorId`.

**order** `object` *required*

`products[]` com pelo menos um produto.

**payments** `object` *required*

`totals[]` e `paymentMethods[]`, com pelo menos um item cada. O `transactionStatus` dos pagamentos
decide se o pedido fica fechado (`APPROVED`) ou aberto, pendente de cobrança (`PENDING`).

## Resposta

**success** `boolean`

`true` quando o pedido foi criado.

**data** `object`

**data**

**id** `string`

ID do pedido no Fire. Use-o para consultar, atualizar ou cancelar o pedido.

**external\_order\_id** `string`

O `orderId` que você enviou.

**status** `string`

`COMPLETED` ou `OPEN`.

**payment\_status** `string`

`SUCCEEDED` ou `PENDING`.

**business\_day\_date** `string`

Dia de negócio da loja, `YYYY-MM-DD`.

**created\_at** `string`

Data de criação no Fire (ISO 8601).

## Erros

| HTTP | `error` / `code` | Quando |
| - | - | - |
| `400` | `VALIDATION_ERROR` | Falta `orderCode` ou o corpo não está no formato Fire |
| `400` | `BUSINESS_ERROR` | Loja inativa, dia de negócio fechado, ou o pedido não cumpre uma regra de validação ativada para o seu vendor (`ORDER_INVARIANT_VIOLATION`) |
| `404` | `NOT_FOUND` | A loja não existe |
| `401` | `UNAUTHORIZED` | API key inválida, vencida ou revogada |
| `403` | `FORBIDDEN` | API key sem escopo `orders:write` ou não associada à sua conta |
| `409` | `CONFLICT` / `DUPLICATE_ORDER` | O pedido já existia para o seu vendor. `data` traz `id`, `externalOrderId` e `status` do existente |

> [!NOTE]
>
> Toda requisição fica registrada no Fire com o corpo e o motivo da rejeição, inclusive as
> rejeitadas. Se você reenviar um pedido que já foi criado, a resposta é `409` e ele não é duplicado.

```bash cURL theme={null}
curl -X POST https://app.fire.rest/api/v1/external/orders \
  -H "x-api-key: $FIRE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "orderId": "ORD-000123",
    "orderCode": "ORD-000123",
    "accountId": 11,
    "account": "",
    "createdAt": "2026-10-29 14:57:41",
    "selectedShippingMethod": "pickup",
    "client": { "uid": "customer-0001", "name": "CONSUMIDOR", "lastName": "FINAL" },
    "store": { "id": "11.6.1350.50", "code": "K000", "vendorId": "11.6.1350" },
    "channel": { "uid": "c784d4ba-23c7-4929-b2f0-1a1960d9cdc2", "code": "KIOSK" },
    "service": { "uid": "726c4892-48b9-45da-b066-2a8e83d2cb78", "code": "Dine-In" },
    "order": {
      "products": [{
        "productId": "7abdd4e5-d685-43ff-ba79-5e8b2f700b5b",
        "product": "12 Tiras de Frango",
        "quantity": 1,
        "price": {
          "unitPrice": { "currencyCode": "BRL", "subtotalWithoutTaxes": 64.9, "taxValue": 0, "total": 64.9 },
          "totalPrice": { "currencyCode": "BRL", "subtotalWithoutTaxes": 64.9, "taxValue": 0, "total": 64.9 }
        },
        "modifierGroups": []
      }]
    },
    "payments": {
      "totals": [{ "currencyCode": "BRL", "total": 64.9 }],
      "paymentMethods": [{ "processor": "CREDIT", "currencyCode": "BRL", "transactionStatus": "APPROVED", "totalBill": 64.9 }]
    }
  }'
```

```json 201 theme={null}
{
  "success": true,
  "data": {
    "id": "6f1c2b9e-3a1d-4c55-9b7e-0d2f6a7c8e10",
    "external_order_id": "ORD-000123",
    "status": "COMPLETED",
    "payment_status": "SUCCEEDED",
    "business_day_date": "2026-10-29",
    "created_at": "2026-10-29T14:57:44.330Z"
  }
}
```

```json 400 theme={null}
{
  "success": false,
  "error": "VALIDATION_ERROR",
  "message": "orderCode is required and must be a non-empty string"
}
```

```json 409 theme={null}
{
  "success": false,
  "error": "CONFLICT",
  "code": "DUPLICATE_ORDER",
  "message": "Order with external id ORD-000123 already exists for this vendor.",
  "data": { "id": "6f1c2b9e-3a1d-4c55-9b7e-0d2f6a7c8e10", "externalOrderId": "ORD-000123", "status": "COMPLETED" }
}
```


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