---
title: "purchase-orders__create-purchase-order"
method: POST
path: "/tools/purchase-orders__create-purchase-order"
tags: ["Gastos"]
---

# purchase-orders__create-purchase-order

`POST /tools/purchase-orders__create-purchase-order`

### MCP
`create-purchase-order` → `purchase-orders__create-purchase-order`.

### HTTP
`POST /v1/purchase-orders`

### Body obligatorio
- `date`, `deliveryDate`
- `provider` (o `provider.id`)
- `purchases` con al menos una línea en `purchases.items` y/o `purchases.categories`

### No enviar
id, status, total, subTotal, bills (en respuesta). Evitar `idCostCenter` en raíz; usar `costCenter` objeto.

### Líneas
Items/categories: `id`, `price`, `quantity`; impuestos como `{ id }` o arreglo de objetos `{ id }`.

### Errores
| Código | Significado | Acción |
|--------|-------------|--------|
| 12016 | Sin líneas en compra | Agregar items/categories en `purchases` |
| 12030 | Moneda no disponible | Elegir moneda válida para la cuenta |
| 3042 | Validación de línea | Revisar items/categories e impuestos |
| 12021 | Número ya registrado | Otro número o numeración |
| 902 | Cuerpo vacío | Enviar JSON con body |

México puede exigir `taxCondition` en líneas.

## Request body

- object — Body POST — ver request_body_shape y line_models en la fuente.

## Response `200`

Orden creada (HTTP 201)

---

[API](https://skmtc.net/alegra/apis/ingresos.md) · [All operations](https://skmtc.net/alegra/apis/ingresos/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/alegra/ingresos/versions/cd52d3f68f1b/schema)
