Tutoriales/Tu primera orden
5 minutos
Avanzado

Tu primera orden

Estimá comisiones, enviá una orden de compra y cancelala si es necesario.

Cuidado: Dinero real

Estas órdenes se ejecutan en tu cuenta real de IOL con dinero real. Probá primero con cantidades pequeñas y usá órdenes limit para controlar el precio de ejecución.

Antes de empezar

  • Token de acceso válido
  • Saldo disponible en tu cuenta (pesos o dólares según el activo)
  • Conocer el símbolo, mercado y plazo del activo
1

Estimar comisiones (recomendado)

Antes de enviar la orden, consultá cuánto te va a costar incluyendo comisiones, IVA y derechos de mercado:

estimate.py
Estimar costos
import requests

API_URL = "https://api.iolinversiones.com"
TOKEN = "tu_access_token"

headers = {"Authorization": f"Bearer {TOKEN}"}

# Estimar comisiones ANTES de enviar la orden
estimate = requests.post(
    f"{API_URL}/broker/orders/estimate",
    headers=headers,
    json={
        "symbol": "GGAL",
        "market_id": "BCBA",
        "side": "buy",
        "order_type": "limit",
        "limit_price": 1250.00,
        "quantity": 100,
        "term": "T0"
    }
)

data = estimate.json()["data"]
print(f"Monto bruto: ${data['gross_amount']}")
print(f"Comisión: ${data['commission']}")
print(f"IVA: ${data['vat']}")
print(f"Derechos de mercado: ${data['market_fees']}")
print(f"Total a pagar: ${data['net_amount']}")

Respuesta esperada:

{
  "gross_amount": 125000.00,    // 100 × $1250
  "commission": 625.00,          // 0.5% típico
  "vat": 131.25,                 // 21% de comisión
  "market_fees": 50.00,
  "net_amount": 125806.25        // Total a pagar
}
2

Enviar la orden

Ahora sí, enviá la orden de compra:

order.py
Crear orden
import requests

API_URL = "https://api.iolinversiones.com"
TOKEN = "tu_access_token"

headers = {"Authorization": f"Bearer {TOKEN}"}

# Enviar orden de compra
order = requests.post(
    f"{API_URL}/broker/orders",
    headers=headers,
    json={
        "symbol": "GGAL",
        "market_id": "BCBA",
        "side": "buy",           # "buy" o "sell"
        "order_type": "limit",   # "limit" o "market"
        "limit_price": 1250.00,  # Solo para limit orders
        "quantity": 100,
        "term": "T0",            # T0, T1, T2
        "due_date": "2025-01-31" # Opcional: válida hasta
    }
)

if order.status_code == 201:
    data = order.json()["data"]
    print(f"✅ Orden creada! ID: {data['order_id']}")
    print(f"   Estado: {data['status']}")
else:
    error = order.json()["error"]
    print(f"❌ Error: {error['message']}")

Parámetros de la orden:

side"buy" para comprar, "sell" para vender
order_type"limit" (precio máximo/mínimo) o "market" (ejecuta al precio actual)
term"T0" contado inmediato, "T1" 24hs, "T2" 48hs
quantityCantidad de acciones/nominales. Debe ser múltiplo del lote mínimo.
3

Cancelar orden (opcional)

Si la orden aún no se ejecutó, podés cancelarla:

cancel.py
Cancelar orden
import requests

API_URL = "https://api.iolinversiones.com"
TOKEN = "tu_access_token"
ORDER_ID = "12345"  # El ID de la orden a cancelar

headers = {"Authorization": f"Bearer {TOKEN}"}

# Cancelar orden
cancel = requests.delete(
    f"{API_URL}/broker/orders/{ORDER_ID}",
    headers=headers
)

if cancel.status_code == 200:
    print(f"✅ Orden {ORDER_ID} cancelada")
else:
    error = cancel.json()["error"]
    print(f"❌ Error: {error['message']}")

Solo podés cancelar órdenes con estado "pending" o "in_progress". Las órdenes ejecutadas no se pueden revertir.

Estados de una orden

pending

Enviada, esperando ejecución

in_progress

Parcialmente ejecutada

executed

Completamente ejecutada

cancelled

Cancelada por el usuario

¡Felicitaciones!

Ya sabés consultar precios, recibir datos en tiempo real y operar programáticamente. Explorá la documentación completa para más opciones: