---
title: "Crea una factura de venta"
method: POST
path: "/v2/facturas"
tags: ["Facturas"]
---

# Crea una factura de venta

`POST /v2/facturas`

## Request

- Base URL: `https://erp.duxsoftware.com.ar/WSERP/rest/services`
- URL: `https://erp.duxsoftware.com.ar/WSERP/rest/services/v2/facturas`
- Auth: HTTP bearer

Genera una factura de venta y su comprobante electrónico ante AFIP (CAE/CAI). Permite incluir productos, percepciones, retenciones, el cobro asociado y los datos de envío. Devuelve el comprobante creado con la misma estructura que cada ítem de GET /v2/facturas.

Campos obligatorios: id_sucursal, id_personal, tipo_comp, nro_pto_vta y al menos un producto en productos; con tipo_entrega ENTREGA_INMEDIATA también id_deposito.

Identificación del cliente: enviá id_cliente, o bien tipo_doc y nro_doc para que se resuelva automáticamente, igual que en la API v1.

Productos: la descripción de cada ítem se toma del catálogo según cod_item y no debe enviarse. Un cod_item que no exista en el catálogo devuelve 400. porc_iva es opcional: si se omite, se aplica el porcentaje configurado en el producto.

Facturar a partir de un pedido: enviá source_type con el valor PEDIDO y source_id con el ID del pedido. Para que las cantidades se descuenten en cada línea del pedido, incluí en cada producto el id_det_item que devuelve GET /v2/pedidos para esa línea. Si la empresa no tiene habilitada la facturación parcial, facturar una cantidad menor a la reservada libera la reserva de stock completa del producto.

## Request body

- V2CrearFacturaRequest: Campos obligatorios: id_sucursal, id_personal, tipo_comp, nro_pto_vta y al menos un producto en productos. Además, el cliente (id_cliente, o tipo_doc y nro_doc) y, con tipo_entrega ENTREGA_INMEDIATA, id_deposito.
  - `id_empresa` integer: ID de la empresa. Opcional si el Dux del token tiene una sola empresa; si tiene más de una es obligatorio (consultá GET /v2/empresas).
  - `id_sucursal` integer
  - `id_personal` integer
  - `id_vendedor` integer
  - `id_deposito` integer
  - `id_punto_entrega` integer
  - `source_type` string: Tipo de documento de origen a facturar. Valor admitido: PEDIDO.
  - `source_id` integer: ID del documento de origen indicado en source_type.
  - `source_ids` integer[]
  - `id_cliente` integer: Si se omite, se resuelve el cliente automáticamente a partir de tipo_doc y nro_doc.
  - `tipo_doc` string
  - `nro_doc` integer
  - `fecha_comprobante` string
  - `nro_pto_vta` string
  - `tipo_entrega` string
  - `tipo_comp` string
  - `codigo_forma_pago_dgi` string
  - `lugar_de_entrega` string
  - `transporte_de_entrega` string
  - `id_condicion_pago` integer
  - `id_presupuesto` integer
  - `id_horario_entrega` integer
  - `horario_entrega_desde` string
  - `horario_entrega_hasta` string
  - `productos` CrearFacturaRequestV2FacturaProducto[]
    - `cod_item` string
    - `id_det_item` integer: Identificador de la variante del producto. Al facturar un pedido, enviá el valor que devuelve GET /v2/pedidos para esa línea.
    - `ctd` number, double
    - `ctd_unidades_por_bulto` number, double
    - `ctd_unidad_pesable` number, double
    - `porc_desc` number, double
    - `porc_iva` number, double
    - `precio_uni` number, double
    - `impuesto_interno` number, double
    - `observaciones` string
    - `centro_costo` CrearFacturaRequestV2FacturaProductoCentroCosto
      - `id_centro_costo` integer
      - `fecha_comprobante` string
    - `es_trazable` boolean
    - `nro_identificacion_trazable` string
    - `source_detail_id` integer
    - `codigo_producto_sat` string: Campo SAT México.
    - `id_unidad_medida` integer
  - `percepciones` CrearFacturaRequestV2FacturaPercepcion[]
    - `id_percepcion_impuesto` integer
    - `importe` number, double
    - `observaciones` string
  - `retenciones` CrearFacturaRequestV2FacturaRetencion[]
    - `id_tipo_retencion` integer
    - `id_jurisdiccion` integer
    - `id_regimen_ganancia` integer
    - `nro_certificado` integer
    - `descripcion` string
    - `importe` number, double
    - `base_calculo` number, double
  - `list_id_etiqueta_venta` integer[]
  - `cobro` CrearFacturaRequestV2FacturaCobro
    - `tipo_comp` string
    - `fecha_cobro` string
    - `total` number, double
    - `id_caja` integer
    - `id_moneda` integer
    - `cotiza_moneda` number, double
    - `detalle` CrearFacturaRequestV2FacturaCobroDetalle[]
      - `tipo_valor` string
      - `monto` number, double
      - `referencia` string
      - `id_cuenta` integer
      - `id_plan_cuenta` integer
      - `id_tarjeta` integer
      - `id_plan_tarjeta` integer
      - `id_terminal` integer
      - `nro_lote` string
      - `nro_cupon` string
      - `id_orden_pago` integer
      - `id` string
      - `id_banco` integer
      - `nro_cheque` string
      - `apellido_razon_soc` string
      - `tipo_doc_cliente` string
      - `nro_doc_cliente` string
      - `fecha_vencimiento` string
      - `ingreso_egreso` string
      - `tipo_valor_caja` string
      - `porc_recargo` number, double
      - `monto_recargo_aplicado` number, double
      - `monto_func` number, double
  - `id_moneda` integer
  - `fecha_tipo_cambio` string
  - `cbu` string
  - `fecha_vto` string
  - `plazo_entrega` string
  - `observaciones` string
  - `cliente_libre` string
  - `envio` CrearFacturaRequestV2FacturaEnvio
    - `id_proveedor` integer
    - `nro_envio` string
    - `id_tipo_envio` integer
    - `monto_envio` number, double
  - `comision_vendedor` number, double
  - `codigo_uso_cfdi` string: Campo SAT México.
  - `codigo_forma_pago_sat` string: Campo SAT México.
  - `codigo_metodo_pago_sat` string: Campo SAT México.
  - `periodicidad_sat` string: Campo SAT México.
  - `mes_sat` string: Campo SAT México.
  - `anio_sat` integer: Campo SAT México.

## Response `201`

Creado

- ApiResponseFacturaResponseFacturaDto
  - `datos` FacturaResponseFacturaDto
    - `id_comp_venta` integer
    - `id_empresa` integer
    - `id_sucursal_empresa` integer
    - `sucursal` string
    - `id_cliente` integer
    - `apellido_razon_soc` string: Apellido o razón social del cliente tal como figura en el comprobante.
    - `nombre` string: Nombre del cliente tal como figura en el comprobante; puede ser null para razones sociales.
    - `tipo_comp` string
    - `letra_comp` string
    - `nro_pto_vta` string
    - `nro_comp` integer
    - `comprobante` string
    - `fecha` string
    - `fecha_vencimiento` string
    - `monto_gravado` number, double
    - `monto_exento` number, double
    - `monto_iva` number, double
    - `monto_desc` number, double
    - `total` number, double
    - `nro_cae_cai` string
    - `fecha_vencimiento_cae_cai` string
    - `tipo_validacion_afip` string
    - `estado_facturacion` string
    - `anulada` boolean
    - `fecha_anula` string
    - `fecha_registro` string
    - `detalles` FacturaResponseDetalleFacturaDto[]: Solo presente si se envió trae_detalles=true.
      - `id_det_comp_venta` integer
      - `cod_item` string
      - `item` string
      - `descripcion` string
      - `ctd` number, double
      - `precio_uni` number, double
      - `porc_desc` number, double
      - `porc_iva` number, double
      - `comentarios` string
  - `paginacion` Paginacion
    - `total` integer
    - `offset` integer
    - `limit` integer
    - `hay_mas` boolean
  - `id_solicitud` string

## Other responses

- `400`: Validación
- `401`: No autorizado
- `403`: Prohibido
- `429`: Límite de peticiones
- `500`: Error interno

---

[API](https://skmtc.dev/duxsoftware/apis/dux-api-v2-facturaci-n.md) - [All operations](https://skmtc.dev/duxsoftware/apis/dux-api-v2-facturaci-n/llms.txt) - [OpenAPI document](https://skmtc.dev/duxsoftware/apis/dux-api-v2-facturaci-n/revisions/04d0648019c4?raw)
