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

# ID de orden del cliente

> Adjunta tu propio identificador a una orden para poder cancelarla y conciliarla con un valor que elegiste tú, en lugar de uno que asigna la cadena.

Cuando envías una orden, la cadena le asigna un ID de orden. Ese ID es el que manda, pero solo lo conoces *después* de que la orden sea aceptada, lo que es un problema si lo que necesitas hacer es cancelar una orden cuya aceptación nunca llegaste a ver.

Un ID de orden del cliente resuelve eso. Generas el identificador tú mismo, lo adjuntas al enviar la orden y puedes actuar sobre ella con ese identificador desde el momento en que la mandas.

<h2 id="why-this-matters-more-than-it-sounds">
  Por qué importa más de lo que parece
</h2>

Piensa en un envío que expira por tiempo. ¿Llegó a la cadena? No lo sabes. Sin un ID de orden del cliente, tus opciones son consultar las órdenes recientes y adivinar por mercado, lado, precio y cantidad, o no hacer nada y confiar en la suerte.

Con uno, la ambigüedad desaparece. Cancelas por el identificador que generaste. Si la orden existía, queda cancelada. Si nunca llegó, la cancelación no encuentra nada. En ambos casos acabas en un estado conocido, que es lo que de verdad necesita un sistema que funciona sin que ninguna persona lo vigile.

Esto es también lo que hace manejable la conciliación. Tus propios registros se indexan por un identificador que asignaste tú, así que contrastar tu visión con la de la cadena es una búsqueda directa y no una heurística.

<h2 id="format">
  Formato
</h2>

El identificador es un **valor de 16 bytes**, que se envía como una cadena hexadecimal en minúsculas de 32 caracteres con el prefijo `0x`.

```
0xa1b2c3d4e5f6789012345678901234ab
```

Tres reglas que el protocolo impone:

* **Solo minúsculas.** El hexadecimal en mayúsculas se rechaza en lugar de normalizarse.
* **Longitud exacta.** Los valores más cortos o más largos se rechazan.
* **Todo ceros está reservado.** `0x00000000...0000` es el valor centinela que significa *ausente* y no se puede usar como identificador.

El campo es opcional. Una orden sin él se comporta con normalidad en todo: simplemente no se puede cancelar por ID de orden del cliente, solo por el ID de orden que asigna la cadena.

<h2 id="uniqueness">
  Unicidad
</h2>

La unicidad tiene como ámbito la **subcuenta**: la combinación de la dirección que firma y la subcuenta que cuelga de ella.

De ahí se derivan dos consecuencias. Subcuentas distintas bajo la misma dirección pueden usar el mismo identificador sin conflicto, algo útil cuando ejecutas estrategias independientes que generan cada una sus propios ID. Y dentro de una misma subcuenta, reutilizar un identificador que pertenece a una orden activa es un error, no una sustitución.

<Note>
  Genera los identificadores de forma aleatoria, no secuencial. Un contador resulta tentador porque hace visible el orden, pero un reinicio que pierda el contador produce colisiones con órdenes que siguen activas, y 16 bytes aleatorios no colisionan nunca en la práctica.
</Note>

<h2 id="what-you-can-do-with-it">
  Qué puedes hacer con él
</h2>

| Operación                                 | Comportamiento                                                                                  |
| ----------------------------------------- | ----------------------------------------------------------------------------------------------- |
| **Cancelar por ID de orden del cliente**  | Cancela la orden activa que lleva ese identificador, sin necesidad del ID que asigna la cadena  |
| **Consultar por ID de orden del cliente** | Recupera el estado actual y el historial de la orden                                            |
| **Conciliar**                             | Contrasta tus propios registros con los de la cadena mediante un identificador que asignaste tú |

<h2 id="lifetime">
  Vida útil
</h2>

El identificador pertenece a la orden, no a tu sesión. Se puede seguir consultando después de que la orden se ejecute o se cancele, que es lo que lo hace útil para conciliar a posteriori.

Vuelve a ser reutilizable en cuanto la orden que identificaba deja de estar activa. En la práctica hay pocos motivos para reutilizar uno: un valor aleatorio nuevo no cuesta nada y elimina cualquier duda sobre a qué orden se refiere un registro histórico.

<h2 id="where-to-go-next">
  Qué leer a continuación
</h2>

<CardGroup cols={2}>
  <Card title="Modificar órdenes" href="/es/trading/modify-orders">
    Cambiar una orden activa y qué ocurre con sus identificadores.
  </Card>

  <Card title="Tipos de orden" href="/es/trading/order-types">
    A qué puedes adjuntar un identificador.
  </Card>

  <Card title="Desarrolladores" href="/es/developers/overview">
    Enviar órdenes y gestionar respuestas ambiguas desde el código.
  </Card>

  <Card title="Secuenciación de transacciones" href="/es/trading/tx-sequencing">
    Por qué una cancelación enviada en el mismo bloque se ejecuta antes que una orden agresora.
  </Card>
</CardGroup>
