---
title: "Editar factura de venta"
method: PUT
path: "/invoices/{id}"
tags: ["Facturas de venta"]
---

# Editar factura de venta

`PUT /invoices/{id}`

Endpoint que permite editar una factura de venta. Únicamente se modifican los atributos que se envían en el request, los otros atributos del objeto que no se envían quedan intactos.  Se retorna la factura de venta que se ha modificado.

Por ejemplo para editar la fecha de creación de una factura de venta se debe enviar el siguiente JSON: {"date" : "2016-06-27"}. Para eliminar algún dato de la factura de venta enviar el atributo en null, así: {"observations" : null}.

## Path parameters

- `id` string, required

## Request body

- union
  - object
    - `termsConditions` string — Términos y condiciones de la factura. Longitud máxima permitida: 500.
    - `numberTemplate` object — Objeto que contiene la información de la numeración de la factura. Para numeraciones automáticas solo debe incluir el id de la numeración, para numeraciones manuales se debe enviar como mínimo el id de la numeración y el número de la factura. Si no se envía este atributo la aplicación intenta crear la factura con la numeración preferida que tiene configurada la empresa. Si no es posible retorna error.
      - `id` string — ID de la numeración
      - `prefix` string — Prefijo de la factura (enviar en caso de que la numeración sea manual, opcional)
      - `number` string — Número de la factura (enviar en caso de que la numeración sea manual, requerido)
    - `items` object[] — Array de objetos item (productos/servicios) asociados a la factura. Cada objeto debe incluir: `id (number, obligatorio)`: identificador del producto o servicio que se vende; `price (double, obligatorio)`: precio de venta; `reference (string)` : referencia del producto/servicio; `description (string)`: descripción del producto/servicio; `tax (objeto)` : array de objetos tax que indican la información del impuesto; `quantity (obligatorio)`: cantidad vendida del producto o servicio. El precio del producto/servicio no debe incluir impuestos ni descuentos.
      - `id` string — Identificador del producto
      - `name` string — Nombre del producto
      - `discount` number — Porcentaje de descuento aplicado al producto
      - `observations` string — Observaciones acerca del producto
      - `tax` object[] — Array de objetos tax que indican los impuestos aplicados al producto al momento de la compra
        - `id` string — Identificador único que representa un impuesto específico.
      - `price` number — Precio de compra del producto
      - `quantity` number — Cantidad de productos que fueron comprados.
    - `anotation` string — Notas de la factura, visibles en el PDF o documento impreso. Longitud máxima permitida: 500.
    - `dueDate` string, date — Fecha de vencimiento de la factura. Formato yyyy-MM-dd.
    - `date` string, date — Fecha de la factura. Formato yyyy-MM-dd.
    - `observations` string — Observaciones de la factura (no visibles en el pdf o documento impreso). Longitud máxima permitida: 500.
    - `client` object — Objecto que contiene el id del cliente asociado a la factura. Se puede enviar directamente el id del cliente en este atributo.
      - `id` string — Identificador del cliente
    - `seller` object — Objeto que indica el id del vendedor asociado a la factura. Se puede enviar directamente el id del vendedor en este atributo.
    - `priceList` object — Objeto que indica el id de la lista de precios asociada a la factura. Se puede enviar directamente el id de la lista de precios en este atributo.
    - `currency` object — Objecto que incluye la información de la moneda y tasa de cambio asociada a la factura. Solo se debe incluir si la compañía tiene activa la funcionalidad de multimoneda y tiene configurada la moneda seleccionada. Debe incluir el código de la moneda (de tres letras según ISO) y la tasa de cambio.
    - `retentions` object[] — Array de objetos retention que indican las retenciones de la factura de venta. Cada objeto debe contener: `id (number, obligatorio)`: Identificador de la retención que se desea asociar a la factura; `amount (double, obligatorio)`: valor retenido.
      - `id` string — Identificador de la retención
      - `amount` number — Valor retenido
    - `warehouse` object — Objeto que indica el id de la bodega/almacén asociada a la factura. Se puede enviar directamente el id de la bodega/almacén en este atributo. Si no se envía este parámetro la factura queda asociada a la bodega/almacén Principal.
    - `remissions` object[] — Array de identificadores de las remisiones que se desean facturar, puedes asociar una o varias remisiones tan solo indicando el id de cada una en un array. El cliente de las remisiones y de la factura de venta debe ser el mismo. Solo las remisiones abiertas pueden ser facturadas. De esta forma, los ítems de cada una de las remisiones serán facturados, además también podrás especificar otros ítems con el parametro`items`.
      - `id` string — Identificador de la remisión
      - `items` object[] — Items adicionales
        - `id` string — Identificación del item
    - `costCenter` object — Objeto que indica el id del centro de costo asociado. Se puede enviar directamente el id del centro de costo en este atributo o enviarlo como objeto.
    - `comments` string[] — Arreglo de strings con cada uno de los comentarios que se desean asociar. Los comentarios se pueden actualizar aun si la factura de venta no se puede editar.
    - `periodicity` 'BIWEEKLY' | 'MONTHLY' | 'BIMONTHLY' | 'QUARTERLY' | 'SEMIANNUALLY' | 'MANUAL' — Indica la periodicidad de los pagos de las cuotas de la factura. Si se desea emitir la factura, la forma de pago es a crédito este atributo se vuelve obligatorio.
  - object
    - `date` string, date — Fecha de la factura. Formato yyyy-MM-dd.
    - `dueDate` string, date — Fecha de vencimiento de la factura. Formato yyyy-MM-dd.
    - `observations` string — Observaciones de la factura (no visibles en el pdf o documento impreso). Longitud máxima permitida: 500.
    - `anotation` string — Notas de la factura, visibles en el PDF o documento impreso. Longitud máxima permitida: 500.
    - `termsConditions` string — Términos y condiciones de la factura. Longitud máxima permitida: 500.
    - `client` object — Objecto que contiene el id del cliente asociado a la factura. Se puede enviar directamente el id del cliente en este atributo.
      - `id` string — Identificador del cliente
    - `seller` object — Objeto que indica el id del vendedor asociado a la factura. Se puede enviar directamente el id del vendedor en este atributo.
    - `priceList` object — Objeto que indica el id de la lista de precios asociada a la factura. Se puede enviar directamente el id de la lista de precios en este atributo.
    - `currency` object — Objecto que incluye la información de la moneda y tasa de cambio asociada a la factura. Solo se debe incluir si la compañía tiene activa la funcionalidad de multimoneda y tiene configurada la moneda seleccionada. Debe incluir el código de la moneda (de tres letras según ISO) y la tasa de cambio.
    - `retentions` object[] — Array de objetos retention que indican las retenciones de la factura de venta. Cada objeto debe contener: `id (number, obligatorio)`: Identificador de la retención que se desea asociar a la factura; `amount (double, obligatorio)`: valor retenido.
      - `id` string — Identificador de la retención
      - `amount` number — Valor retenido
    - `warehouse` object — Objeto que indica el id de la bodega/almacén asociada a la factura. Se puede enviar directamente el id de la bodega/almacén en este atributo. Si no se envía este parámetro la factura queda asociada a la bodega/almacén Principal.
    - `remissions` object[] — Array de identificadores de las remisiones que se desean facturar, puedes asociar una o varias remisiones tan solo indicando el id de cada una en un array. El cliente de las remisiones y de la factura de venta debe ser el mismo. Solo las remisiones abiertas pueden ser facturadas. De esta forma, los ítems de cada una de las remisiones serán facturados, además también podrás especificar otros ítems con el parametro`items`.
      - `id` string — Identificador de la remisión
      - `items` object[] — Items adicionales
        - `id` string — Identificación del item
    - `costCenter` object — Objeto que indica el id del centro de costo asociado. Se puede enviar directamente el id del centro de costo en este atributo o enviarlo como objeto.
    - `comments` string[] — Arreglo de strings con cada uno de los comentarios que se desean asociar. Los comentarios se pueden actualizar aun si la factura de venta no se puede editar.
    - `numberTemplate` object — Objeto que contiene la información de la numeración de la factura. Para numeraciones automáticas solo debe incluir el id de la numeración, para numeraciones manuales se debe enviar como mínimo el id de la numeración y el número de la factura. Si no se envía este atributo la aplicación intenta crear la factura con la numeración preferida que tiene configurada la empresa. Si no es posible retorna error.
      - `id` string — ID de la numeración
      - `prefix` string — Prefijo de la factura (enviar en caso de que la numeración sea manual, opcional)
      - `number` string — Número de la factura (enviar en caso de que la numeración sea manual, requerido)
    - `paymentMethod` 'CASH' | 'SINPE_MOVIL' | 'CARD' | 'CHECK' | 'TRANSFER' | 'COLLECTION_BY_THIRD' | 'PLATFORM_DIGITAL' | 'OTHER' — Para Costa Rica versión 4.4, indica el método de pago de la factura. Las opciones posibles son: CASH, SINPE_MOVIL, CARD, CHECK, TRANSFER, COLLECTION_BY_THIRD, PLATFORM_DIGITAL, OTHER. Consulta el catálogo de parámetros correspondiente haciendo clic [aquí](https://developer.alegra.com/docs/costa-rica). Si se desea emitir la factura, este atributo se vuelve obligatorio.
    - `otherPaymentMethod` string — Campo obligatorio cuando paymentMethod es OTHER. Descripción del método de pago personalizado. Debe tener entre 3 y 100 caracteres.
    - `saleCondition` 'CASH' | 'CREDIT' | 'CONSIGNATION' | 'SEPARATED' | 'LEASING_WITH_PURCHASE_OPTION' | 'LEASING_IN_FINANTIAL_FUNCTION' | 'SERVICES_PROVIDED_TO_STATE_TO_CREDIT' | 'IVA_CREDIT_SALE_90_DAYS' | 'SALE_NON_NATIONALIZED_GOODS' | 'OPERATIVE_LEASING' | 'FINANCIAL_LEASING' | 'OTHER' — Para Costa Rica versión 4.4, indica la condición de la venta. Consulta el catálogo de parámetros correspondiente haciendo clic [aquí](https://developer.alegra.com/docs/costa-rica). Si se desea emitir la factura, este atributo se vuelve obligatorio.
    - `otherSaleCondition` string — Campo obligatorio cuando saleCondition es OTHER. Descripción de la condición de venta personalizada. Debe tener entre 5 y 100 caracteres.
    - `type` string — Indica el tipo de la factura de venta. Si no se envía, se asignará por defecto el código: NATIONAL.
    - `economicActivity` integer — Para Costa Rica versión 4.4, indica el código de la actividad económica asociada a la factura. Si no se envía, se asignará por defecto el código de la actividad económica de la compañía.
    - `items` object[] — Array de objetos item con propiedades específicas para Costa Rica versión 4.4
      - `id` string — Identificador del producto
      - `name` string — Nombre del producto
      - `description` string — Descripción del producto/servicio
      - `reference` string — Referencia del producto
      - `price` number — Precio de venta del producto
      - `quantity` number — Cantidad del producto
      - `transactionType` 'NORMAL_SALE_OF_GOODS_AND_SERVICES_GENERAL_TRANSACTION' | 'SELF_CONSUMPTION_GOODS_EXEMPT' | 'SELF_CONSUMPTION_GOODS_TAXED' | 'SELF_CONSUMPTION_SERVICE_EXEMPT' | 'SELF_CONSUMPTION_SERVICE_TAXED' | 'MEMBERSHIP_FEE' | 'MEMBERSHIP_FEE_EXEMPT' | 'CAPITAL_GOODS_FOR_ISSUER' | 'CAPITAL_GOODS_FOR_RECEIVER' | 'SELF_CONSUMPTION_CAPITAL_GOODS_EXEMPT_FOR_ISSUER' | 'CAPITAL_GOODS_WITHOUT_CONSIDERATION_TO_THIRD_PARTIES_EXEMPT_FOR_ISSUER' | 'CAPITAL_GOODS_WITHOUT_CONSIDERATION_TO_THIRD_PARTIES_EXEMPT_FOR_RECEIVER' | 'WITHOUT_CONSIDERATION_TO_THIRD_PARTIES' — Tipo de transacción según catálogo de Costa Rica versión 4.4. Consulta el catálogo de parámetros correspondiente haciendo clic [aquí](https://developer.alegra.com/docs/costa-rica).
      - `discount` object — Objeto de descuento con nuevas propiedades para Costa Rica versión 4.4.
        - `discount` number — Porcentaje o monto de descuento
        - `type` 'VOLUME_DISCOUNT' | 'SEASONAL_DISCOUNT' | 'PROMOTIONAL_DISCOUNT' | 'COMMERCIAL_DISCOUNT' | 'FREQUENCY_DISCOUNT' | 'SUSTAINED_DISCOUNT' | 'OTHER' — Tipo de descuento según catálogo de Costa Rica versión 4.4. Consulta el catálogo de parámetros correspondiente haciendo clic [aquí](https://developer.alegra.com/docs/costa-rica).
        - `nature` string — Campo obligatorio cuando type es OTHER. Descripción del descuento personalizado
      - `tax` object[] — Array de impuestos con exoneraciones para Costa Rica versión 4.4.
        - `id` string — Identificador único que representa el impuesto un impuesto en específico
        - `exoneration` object — Objeto opcional cuando se aplique una exoneración a un impuesto en específico.
          - `documentType` 'AUTHORIZED_PURCHASES' | 'EXEMPT_SALES_TO_DIPLOMATS' | 'AUTHORIZED_BY_SPECIAL_LAW' | 'EXEMPTIONS_DGH' | 'TRANSITORY_V' | 'TOURISTIC_SERVICES' | 'TRANSITORY_XVII' | 'EXONERATION_ZONE_FREE' | 'EXONERATION_COMPLEMENTARY_SERVICES_EXPORT' | 'ORGANIZATION_MUNICIPAL_CORPORATIONS' | 'EXEMPTIONS_DGH_CONCRETE_LOCAL_TAX' | 'OTHER' — Tipo de documento de exoneración
          - `otherDocumentType` string — Campo obligatorio cuando documentType es OTHER
          - `documentNumber` string — Número del documento de exoneración
          - `article` string — Artículo del documento
          - `paragraph` string — Inciso del documento
          - `emissionDate` string, date — Fecha de emisión del documento
          - `institutionName` 'MINISTRY_OF_FINANCE' | 'MINISTRY_OF_FOREIGN_AFFAIRS_AND_WORSHIP' | 'MINISTRY_OF_AGRICULTURE_AND_LIVESTOCK' | 'MINISTRY_OF_ECONOMY_INDUSTRY_AND_COMMERCE' | 'COSTA_RICAN_RED_CROSS' | 'COSTA_RICA_FIRE_DEPARTMENT' | 'HOLY_SPIRIT_WORKS_ASSOCIATION' | 'NATIONAL_CRUSADE_FEDERATION_FOR_ELDERLY_PROTECTION' | 'HUMID_REGION_AGRICULTURE_SCHOOL' | 'CENTRAL_AMERICAN_INSTITUTE_OF_BUSINESS_ADMINISTRATION' | 'SOCIAL_PROTECTION_BOARD' | 'PUBLIC_SERVICES_REGULATORY_AUTHORITY' | 'OTHER' — Nombre de la institución emisora
          - `otherInstitutionName` string — Campo obligatorio cuando institutionName es OTHER
          - `percentage` string — Porcentaje de exoneración
    - `additionalCharges` object[] — Array de cargos adicionales para la versión 4.4 de Costa Rica.
      - `id` string — Identificador único que representa el cargo adicional en específico
      - `amount` number — Monto del cargo adicional en la moneda de la factura
      - `metadata` object — Metadatos del cargo adicional. Se envía cuando el cargo es por cobro de tercero o cuando el cargo es de tipo otros.
        - `thirdParty` object — Información de tercero cuando el cargo es por cobro de tercero
          - `thirdPartyName` string — Nombre del tercero
          - `identificationNumber` string — Número de identificación del tercero
          - `identificationType` string — Tipo de identificación del tercero. Consulta el catálogo de parámetros correspondiente haciendo clic [aquí](https://developer.alegra.com/docs/costa-rica).
          - `idThirdParty` string — Identificador del contacto en el sistema
        - `otherTypeCharge` string — Descripción del cargo cuando es de tipo otros
    - `referenceDocuments` object[] — Array de documentos de referencia requerido cuando el cliente tiene tipo de identificación END (Extranjero No Domiciliado) y la condición de venta es SALE_NON_NATIONALIZED_GOODS. Máximo 10 documentos.
      - `number` string — Número del documento de referencia (requerido). Máximo 50 caracteres.
      - `dateEmission` string, date-time — Fecha de emisión del documento de referencia (requerido). Formato: YYYY-MM-DDTHH:MM:SS o YYYY-MM-DD HH:MM:SS
      - `typeDoc` string — Tipo de documento. Se establece automáticamente como "99" (Otros) si no se proporciona.
      - `otherRefDocumentType` string — Descripción del tipo de documento. Se establece automáticamente como "Documento respaldo de Venta no nacionalizada" si no se proporciona.
      - `code` string — Código de referencia. Se establece automáticamente como "04" (Referencia a otro documento) si no se proporciona.
      - `reason` string — Razón de la referencia. Se establece automáticamente como "Venta de mercancía no nacionalizada" si no se proporciona.
  - object — El total de la factura simplificada no debe superar los 400 euros. Si el total supera este valor, se debe emitir una factura ordinaria.
    - `termsConditions` string — Términos y condiciones de la factura. Longitud máxima permitida: 500.
    - `numberTemplate` object, required — Objeto que contiene la información de la numeración de la factura. Para numeraciones automáticas solo debe incluir el id de la numeración, para numeraciones manuales se debe enviar como mínimo el id de la numeración y el número de la factura. Si no se envía este atributo la aplicación intenta crear la factura con la numeración preferida que tiene configurada la empresa. Si no es posible retorna error.
      - `id` string — ID de la numeración. Debe ser uno que sea de tipo saleTicket
      - `prefix` string — Prefijo de la factura (enviar en caso de que la numeración sea manual, opcional)
      - `number` string — Número de la factura (enviar en caso de que la numeración sea manual, requerido)
    - `dueDate` string, date, required — Fecha de vencimiento de la factura. Formato yyyy-MM-dd.
    - `date` string, date, required — Fecha de la factura. Formato yyyy-MM-dd.
    - `operationDate` string, date — Fecha de la operación. Es requerido si la fecha de factura no es la fecha actual. Formato yyyy-MM-dd.
    - `observations` string — Observaciones de la factura (no visibles en el pdf o documento impreso). Longitud máxima permitida: 500.
    - `client` object — Objecto que contiene el id del cliente asociado a la factura. Se puede enviar directamente el id del cliente en este atributo. Este atributo es opcional en caso no se envie tomara el cliente por defecto 'Público en General'
      - `id` string — Identificador del cliente
    - `seller` object — Objeto que indica el id del vendedor asociado a la factura. Se puede enviar directamente el id del vendedor en este atributo.
    - `priceList` object — Objeto que indica el id de la lista de precios asociada a la factura. Se puede enviar directamente el id de la lista de precios en este atributo.
    - `currency` object — Objecto que incluye la información de la moneda y tasa de cambio asociada a la factura. Solo se debe incluir si la compañía tiene activa la funcionalidad de multimoneda y tiene configurada la moneda seleccionada. Debe incluir el código de la moneda (de tres letras según ISO) y la tasa de cambio.
    - `warehouse` object — Objeto que indica el id de la bodega/almacén asociada a la factura. Se puede enviar directamente el id de la bodega/almacén en este atributo. Si no se envía este parámetro la factura queda asociada a la bodega/almacén Principal.
    - `remissions` object[] — Array de identificadores de las remisiones que se desean facturar, puedes asociar una o varias remisiones tan solo indicando el id de cada una en un array. El cliente de las remisiones y de la factura de venta debe ser el mismo. Solo las remisiones abiertas pueden ser facturadas. De esta forma, los ítems de cada una de las remisiones serán facturados, además también podrás especificar otros ítems con el parametro`items`.
      - `id` string — Identificador de la remisión
      - `items` object[] — Items adicionales
        - `id` string — Identificación del item
    - `costCenter` object — Objeto que indica el id del centro de costo asociado. Se puede enviar directamente el id del centro de costo en este atributo o enviarlo como objeto.
    - `comments` string[] — Arreglo de strings con cada uno de los comentarios que se desean asociar. Los comentarios se pueden actualizar aun si la factura de venta no se puede editar.
    - `periodicity` 'BIWEEKLY' | 'MONTHLY' | 'BIMONTHLY' | 'QUARTERLY' | 'SEMIANNUALLY' | 'MANUAL' — Indica la periodicidad de los pagos de las cuotas de la factura. Si se desea emitir la factura, la forma de pago es a crédito este atributo se vuelve obligatorio.
    - `paymentMethod` 'cash' | 'transfer' | 'debit-card' | 'credit-card' | 'check' | 'domiciliaton' — . Consulta el catálogo de parámetros correspondiente a cada España haciendo click [aquí](https://developer.alegra.com/reference/espa%C3%B1a).
    - `items` object[], required — Array de objetos item (productos/servicios) asociados a la factura. Cada objeto debe incluir: `id (number, obligatorio)`: identificador del producto o servicio que se vende; `price (double, obligatorio)`: precio de venta; `reference (string)` : referencia del producto/servicio; `description (string)`: descripción del producto/servicio; `tax (objeto)` : array de objetos tax que indican la información del impuesto; `quantity (obligatorio)`: cantidad vendida del producto o servicio. El precio del producto/servicio no debe incluir impuestos ni descuentos.
      - `id` string — Identificador del producto
      - `name` string — Nombre del producto
      - `discount` number — Porcentaje de descuento aplicado al producto
      - `observations` string — Observaciones acerca del producto
      - `tax` object[] — Array de objetos tax que indican los impuestos aplicados al producto al momento de la compra
        - `id` string — Identificador único que representa un impuesto específico.
      - `price` number — Precio de compra del producto
      - `quantity` number — Cantidad de productos que fueron comprados.
      - `irpfApplied` boolean — Indica si se aplica el IRPF al producto.
    - `equivalenceSurchargeApplied` boolean — Indica si se aplica el recargo de equivalencia a la factura.
    - `anotation` string — Para España TicketBAI indica la descripción de la operación de la factura.
    - `operationType` 'GENERAL_REGIME_AND_OTHERS' | 'EXPORTATION' | 'SPECIAL_REGIME_USED_GOODS_ART_ANTIQUES_COLLECTIONS' | 'SPECIAL_REGIME_INVESTMENT_GOLD' | 'SPECIAL_REGIME_TRAVEL_AGENCIES' | 'SPECIAL_REGIME_GROUP_ENTITIES_ADVANCED_LEVEL' | 'SPECIAL_REGIME_CASH_ACCOUNTING' | 'OPERATIONS_SUBJECT_IPSI_IGIC' | 'BILLING_SERVICE_PROVIDED_TRAVEL_AGENCIES' | 'COLLECTIONS_THIRD_PARTIES_FEES' | 'BUSINESS_PREMISES_LEASE_SUBJECT_RETENTION' | 'BUSINESS_PREMISES_LEASE_NOT_SUBJECT_RETENTION' | 'BUSINESS_PREMISES_LEASE_SUBJECT_NOT_SUBJECT_RETENTION' | 'INVOICE_VAT_PENDING_ACCRUAL_CERTIFICATES_WORK' | 'INVOICE_VAT_PENDING_ACCRUAL_OPERATIONS_SUCCESSION' | 'OPERATIONS_RECHARGE_EQUIVALENCE' | 'OPERATIONS_SIMPLIFIED_REGIME' | 'OPERATIONS_NOT_CONSIDERED_ENTREPRENEURS_FOR_VAT' | 'OPERATIONS_PERMANENT_ESTABLISHMENTS_CANARY_ISLANDS_CEUTA_MELILLA' — Para España, indica el tipo de operación de la venta. Consulta el catálogo de parámetros correspondiente a cada país haciendo clic [aquí](https://developer.alegra.com/docs/españa).
    - `additionalCharges` object[] — Array de objetos additionalCharges que indica los suplidos en la factura simplificada.
      - `id` string — UUID del suplido
      - `amount` number — Monto del suplido

## Other responses

- `200` — unresolved $ref
- `400` — unresolved $ref

---

[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/revisions/cd52d3f68f1b/schema)
