---
title: "Crear factura de venta"
method: POST
path: "/invoices"
tags: ["Facturas de venta"]
---

# Crear factura de venta

`POST /invoices`

Endpoint que permite crear una factura de venta desde cero.

## Request body

- object
  - `date` string, date, required — Fecha de la factura. Formato yyyy-MM-dd.
  - `dueDate` string, date, required — 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, required — 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.
  - `status` string — Estado de la factura, las opciones posibles son: open o draft. Si no se envía este atributo y no se envían pagos asociados la factura se crea en "draft". Si se envían pagos a la factura, la factura queda creada en "open".
  - `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.
  - `stamp` object — Para Costa Rica versión 4.4, el objeto stamp indica que se desea expedir/emitir la factura electrónica en Alegra.
    - `generateStamp` boolean
  - `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.

## Response `200`

Retorna información de una factura

## Other responses

- `400` — Bad request

---

[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)
