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

# Delete an order

> Permanently deletes one order, identified by its `order_number` within your store. The order is
first canceled (releasing its reserved stock) and then removed, so it no longer appears in
listings or lookups. Prefer `POST /orders/cancel` unless you really need the order gone, for
example to re-create it under the same `order_number`.
- Refused when the order is in `processing`, `picking`, `packing`, `shipped`, `returning`,
  `returned`, `return_arrived`, `reentered` or `interrupted`. Note that this refusal is
  reported with HTTP `200` and an `error` body.
- Requires an API user with the "orders update" permission, access to the store and an order
  that is editable for your store. A permission failure or an unknown `order_number` is also
  reported with HTTP `200` and an `error` body.
- Always check for an `error` key in the response, not only the status code.




## OpenAPI

````yaml /openapi.yaml post /orders/delete
openapi: 3.1.0
info:
  title: Cubbo Clients API
  version: '1.0'
  summary: >-
    Orders, inventory, replenishments, returns, shipping and webhooks for Cubbo
    fulfillment.
  description: >
    The Cubbo Clients API connects your store, ERP or marketplace with Cubbo's
    fulfillment network.

    All endpoints except `POST /auth/token` require a bearer token; see the
    Authentication guide.

    Request and response bodies are JSON. Errors are JSON objects with an
    `error` key.
  contact:
    name: Cubbo integrations
    email: integraciones@cubbo.com
servers:
  - url: https://api.cubbo.com/v1
    description: Production
security:
  - bearerAuth: []
tags:
  - name: Authentication
    description: Exchange client credentials for a bearer token.
  - name: Orders
    description: Create, update, hold, cancel and read sales orders.
  - name: Shipping labels
    description: Read the shipping labels generated for an order.
  - name: Inventory
    description: Products and stock per store.
  - name: Lots
    description: Lot-level inventory for products with expiration or batch tracking.
  - name: Reports
    description: Bulk reports for reconciliation.
  - name: Replenishments
    description: Inbound shipments to the warehouse.
  - name: Returns
    description: Returns and exchanges.
  - name: Stores
    description: Store provisioning and settings.
  - name: Shipping methods
    description: Available shipping methods, coverage and quotes.
  - name: Click and collect
    description: Pickup points and in-store pickup orders.
paths:
  /orders/delete:
    post:
      tags:
        - Orders
      summary: Delete an order
      description: >
        Permanently deletes one order, identified by its `order_number` within
        your store. The order is

        first canceled (releasing its reserved stock) and then removed, so it no
        longer appears in

        listings or lookups. Prefer `POST /orders/cancel` unless you really need
        the order gone, for

        example to re-create it under the same `order_number`.

        - Refused when the order is in `processing`, `picking`, `packing`,
        `shipped`, `returning`,
          `returned`, `return_arrived`, `reentered` or `interrupted`. Note that this refusal is
          reported with HTTP `200` and an `error` body.
        - Requires an API user with the "orders update" permission, access to
        the store and an order
          that is editable for your store. A permission failure or an unknown `order_number` is also
          reported with HTTP `200` and an `error` body.
        - Always check for an `error` key in the response, not only the status
        code.
      operationId: deleteOrder
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OrderDeleteRequest'
            example:
              store_id: 1234
              order_number: ORD-0001
      responses:
        '200':
          description: >-
            The order was deleted (empty object), or the request failed in a way
            that is reported with an `error` body.
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: '#/components/schemas/OrderCancelResult'
                  - $ref: '#/components/schemas/Error'
              examples:
                deleted:
                  summary: Order deleted
                  value: {}
                statusNotDeletable:
                  summary: Status does not allow deletion (reported with HTTP 200)
                  value:
                    error: >-
                      Error, This order was already shipped or it's been
                      processed, it can't be deleted.
                missingParam:
                  summary: Missing parameter (reported with HTTP 200)
                  value:
                    error: Error, Parameter order_number is required
                notAuthorized:
                  summary: API user cannot edit this order (reported with HTTP 200)
                  value:
                    error: Error, not allowed to delete? this Order
        '401':
          $ref: '#/components/responses/Unauthorized'
        '422':
          description: The cancellation step refused the order (message in Spanish).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                alreadyShipped:
                  value:
                    error: >-
                      Error al cancelar la orden: 123456, La orden ya fue
                      enviada
                externalLabel:
                  value:
                    error: >-
                      Error al cancelar la orden: 123456, No se puede cancelar
                      un envío con guía externa
        '500':
          $ref: '#/components/responses/InternalServerError'
      security:
        - bearerAuth: []
components:
  schemas:
    OrderDeleteRequest:
      type: object
      description: Identifies the single order to delete.
      required:
        - order_number
        - store_id
      properties:
        order_number:
          type: string
          description: Your order number, unique within the store.
          example: ORD-0001
        store_id:
          type: integer
          description: Id of the store the order belongs to.
          example: 1234
    OrderCancelResult:
      type: object
      description: Empty object returned when the cancellation or deletion succeeded.
      additionalProperties: false
      example: {}
    Error:
      type: object
      description: Error body returned by every failed request.
      required:
        - error
      properties:
        error:
          type: string
          description: >-
            Human-readable description of the failure. For `401` responses it is
            always `Unauthorized`.
          example: Parameter store_id is required
        message:
          type: string
          description: >-
            Present on `401` responses only; the reason the request was
            rejected.
          example: invalid token
        code:
          type:
            - string
            - 'null'
          description: >-
            Stable machine-readable code, present on some order, return and
            replenishment errors.
          example: ORDER_ALREADY_EXISTS
        context:
          type:
            - object
            - 'null'
          description: >-
            Extra data about the failure when available, for example the id of
            the conflicting order.
          additionalProperties: true
          example:
            order_id: 987654
  responses:
    Unauthorized:
      description: >-
        Missing or invalid token, wrong credentials, or no access to the
        requested store.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          examples:
            invalidToken:
              value:
                error: Unauthorized
                message: invalid token
            noHeader:
              value:
                error: Unauthorized
                message: no authorization header found
            storeNotAllowed:
              value:
                error: Unauthorized
                message: not allowed to show? this Store
    InternalServerError:
      description: >-
        Unexpected error. Retry with backoff; if it persists, send the timestamp
        to Cubbo support.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error: 'unexpected error, timestamp: 1760000000'
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: >-
        Token returned by `POST /auth/token`, sent as `Authorization: Bearer
        <token>`.

````

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