---
title: "Reemplazar presupuesto en borrador"
method: PUT
path: "/api/v1/quotes/{quote_id}"
tags: ["API"]
---

# Reemplazar presupuesto en borrador

`PUT /api/v1/quotes/{quote_id}`

## Request

- Base URL: `https://api.lapyme.com.ar`
- URL: `https://api.lapyme.com.ar/api/v1/quotes/{quote_id}`
- Auth: HTTP bearer

Reemplaza los datos mutables de un presupuesto en borrador. Si se omite currency, conserva la moneda guardada. Un cambio de moneda requiere currency_change_mode: keep o convert; convert requiere pricing_ars_per_usd_rate en ARS por USD. Los importes enviados están en centavos de la moneda elegida y nunca se convierten automáticamente. Recalcula importes y ajusta la reserva en una transacción. Requiere Idempotency-Key.

## Path parameters

- `quote_id` string, uuid, required

## Headers

- `Idempotency-Key` string, required

## Request body

- ApiQuoteRequest
  - `customer_id` string, uuid, required
  - `currency` 'ARS' | 'USD'
  - `pricing_ars_per_usd_rate` number
  - `currency_change_mode` 'keep' | 'convert'
  - `price_list_id` string, uuid, nullable
  - `salesperson_member_id` string, uuid, nullable
  - `items` object[], required
    - `product_id` string, uuid, required
    - `warehouse_id` string, uuid, nullable
    - `quantity` number, required
    - `unit_price` integer, required
    - `discount` union
      - object
        - `type` 'percentage', required
        - `value` number, required
      - ApiSharedObject06b16aade1
        - `type` 'amount', required
        - `value` integer, required
  - `expires_at` string, date, nullable
  - `global_discount_amount` integer
  - `notes` string, nullable
  - `reservation` object
    - `enabled` boolean, required
    - `reserved_through_date` string, date

## Response `200`

Presupuesto actualizado o reproducido idempotentemente

- ApiQuoteWriteResponse
  - `request_id` string, required
  - `data` object, required
    - `object` 'quote', required
    - `id` string, uuid, required
    - `number` integer, required
    - `formatted_number` string, required
    - `customer_id` string, uuid, required
    - `currency` 'ARS' | 'USD', required
    - `status` 'draft' | 'sent' | 'accepted' | 'rejected' | 'expired' | 'converted', required
    - `converted_sale_id` string, uuid, nullable, required
    - `reservation` ApiSharedObjectc82a2ff2d4, required
      - `status` 'active', required
      - `reserved_through_date` string, date, required
    - `subtotal` integer, required
    - `tax_amount` integer, required
    - `discount_amount` integer, required
    - `total` integer, required
    - `created_at` string, date-time, required
    - `updated_at` string, date-time, required
    - `salesperson_member_id` string, uuid, nullable, required
    - `price_list_id` string, uuid, nullable, required
    - `prices_include_tax` boolean, nullable, required
    - `pricing_ars_per_usd_rate` string, nullable, required
    - `expires_at` string, date-time, nullable, required
    - `notes` string, nullable, required
    - `items` ApiSharedObject6e2dab2a90[], required
      - `object` 'quote_line', required
      - `id` string, uuid, required
      - `product_id` string, uuid, nullable, required
      - `custom_name` string, nullable
      - `custom_product_type` 'product' | 'service'
      - `tax_rate_id` integer
      - `is_exempt` boolean
      - `warehouse_id` string, uuid, nullable, required
      - `quantity` number, required
      - `unit_price` integer, required
      - `discount` union, required
        - ApiSharedObject0141f82a97
          - `type` 'percentage', required
          - `value` number, required
        - ApiSharedObject06b16aade1
          - `type` 'amount', required
          - `value` integer, required
    - `idempotent_replay` boolean, required
  - `warnings` object[], required
    - `product_id` string, uuid, required
    - `warehouse_id` string, uuid, required
    - `requested_quantity` number, required
    - `available_quantity` number, required

## Other responses

- `400`: Solicitud o Idempotency-Key inválidos
- `401`: API key faltante o inválida
- `403`: Scope quotes:write faltante
- `404`: Presupuesto o referencia no encontrados
- `409`: Conflicto de idempotencia o presupuesto fuera de estado borrador
- `422`: No se pudo reservar stock por una condición de negocio
- `429`: Límite de solicitudes excedido para la organización
- `500`: Error interno del servidor
- `503`: Verificación de credenciales temporalmente ocupada; reintentá sin cambiar la operación ni su Idempotency-Key.

## Changes

- **2026-11-03** `ed0d46e68fbe`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/lapyme/apis/la-pyme-api/changes/api/v1/quotes/:quote_id/put.md)

---

[API](https://skmtc.dev/lapyme/apis/la-pyme-api.md) - [All operations](https://skmtc.dev/lapyme/apis/la-pyme-api/llms.txt) - [OpenAPI document](https://skmtc.dev/lapyme/apis/la-pyme-api/revisions/067bbb55f421?raw)
