Saltar al contenido principal

Factura de Compra-Venta

Paso 1: Autenticación

Si no se ha realizado previamente, se debe obtener un access_token para autenticarse en los servicios mencionados en los pasos siguientes, siguiendo lo descrito en la sección de autenticación.

Paso 2: Validar NIT

Este paso solo se sigue cuando el Tipo de Documento de Identidad incluido en la factura es NIT (código de tipo de documento de identidad: 5). En estos casos, se debe utilizar el servicio para validar el NIT.

GET/api/v1/sucursales/{branchCode}/validate-nit/{nit}Verificar si un NIT es válido o no ante Impuestos.

Parámetros:

  • branchCode: Código de sucursal.
  • nit: Representa el número de NIT al cual se emitirá la factura.

Respuesta exitosa (Código 200)

{
"status": "string",
"data": {
"codigo": 0,
"descripcion": "string"
}
}

Donde:

  • codigo: Código del estado del NIT.
  • descripcion: Descripción del estado del NIT.

Basándose en la respuesta del servicio, se define el valor del campo codigoExcepcion:

  • Código de Excepción (0): NIT Válido.
  • Código de Excepción (1): NIT Inválido.

Nota: En caso de que el NIT sea inválido, debe confirmar con el usuario final la emisión de la factura con un NIT inválido (enviando el codigoExcepcion con valor 1).

Paso 3: Facturación

Para poder emitir una factura refiérase al siguiente enlace de la documentación:

POST/api/v1/sucursales/{branchCode}/facturas/compra-ventaRealiza la emisión de una factura de Compra-Venta.

Parámetro URL:

  • branchCode: Código de la sucursal.

Cuerpo de Petición (Ejemplo):

{
"numeroFactura": 9999999998,
"nombreRazonSocial": "string",
"codigoPuntoVenta": 9999,
"fechaEmision": "2021-01-25T18:03:00.000Z",
"cafc": "101A6A36DA839",
"codigoExcepcion": true,
"descuentoAdicional": 0,
"montoGiftCard": 0,
"codigoTipoDocumentoIdentidad": 5,
"numeroDocumento": "string",
"complemento": "strin",
"codigoCliente": "string",
"codigoMetodoPago": 26,
"numeroTarjeta": 10000000000000000,
"montoTotal": 1,
"codigoMoneda": 154,
"montoTotalMoneda": 1,
"usuario": "string",
"emailCliente": "string",
"telefonoCliente": "string",
"extras": {
"uniqueCode": "string",
"facturaTicket": "string"
},
"codigoLeyenda": 0,
"montoTotalSujetoIva": 1,
"tipoCambio": 1,
"detalles": [
{
"codigoProducto": "string",
"codigoActividadSin": "string",
"codigoProductoSin": 99999999,
"descripcion": "string",
"unidadMedida": 69,
"precioUnitario": 1,
"subTotal": 1,
"cantidad": 1,
"numeroSerie": "string",
"montoDescuento": 0,
"numeroImei": "string"
}
]
}

Especificaciones de los campos

CampoTipoEjemploFormatoMin tamMax TamObligatorio
numeroFacturaNúmero119999999No (opcional si Emizor gestiona)
nombreRazonSocialCadena3150Si
codigoPuntoVentaNúmero015Si
fechaEmisionCadena2021-01-25T18:03:00.000ZISO86012424Si
cafcCadena101A6A36DA839113No
codigoExcepcionNúmero1--No
descuentoAdicionalNúmero17.219Si
montoGiftCardNúmero017.21.09999999.99Si
codigoTipoDocumentoIdentidadNúmero115Si
numeroDocumentoCadena123456118Si
complementoCadenaA115No
codigoClienteCadena3150Si
codigoMetodoPagoNúmero115Si
numeroTarjetaNúmero123400005678816No
montoTotalNúmero1000.3617.21.09999999.99Si
codigoMonedaNúmero15415Si
montoTotalMonedaNúmero1000.3617.21.09999999.99Si
usuarioCadenaRoberto Lopez380Si
emailClienteCadenajuanperez@example.comx@x.x550Si
telefonoClienteNúmero-15No
extrasJSON{ "terminos": "", "notas": "", "nombreContacto": "", "facturaTicket": "546456sd4ds54d6sa" }{}--Si, La facturaTicket debe ser siempre enviada como único código.
codigoLeyendaNúmero115Si
montoTotalSujetoIvaNúmero1000.3617.21.09999999.99Si
tipoCambioNúmero6.9617.21.09999999.99Si
detallesArreglo[{},{},...]1 (productos)500 (productos)Si
codigoProductoCadena230Si
codigoActividadSinCadena110Si
codigoProductoSinNúmero10001999999Si
cantidadNúmero17.215Si
precioUnitarioNúmero17.215Si
descripcionCadena3500Si
unidadMedidaNúmero5731104No
subTotalNúmero100.4517.21.09999999.99Si
montoDescuentoNúmero10.1917.2NULL99999.99Si
numeroSerieCadena11500No
numeroImeiCadena11500No

Descripción de cada campo:

CampoDescripción
numeroFacturaRepresenta el numero de factura. Nota: Si desea que el sistema gestione de manera automática la numeración de sus facturas no envíe este campo.
nombreRazonSocialRepresenta el nombre o razón social del cliente.
codigoPuntoVentaRepresenta el código del punto de venta en el cual se emite la factura.
fechaEmisionRepresenta la fecha de emisión de la factura.
cafcRepresenta el CAFC si corresponde (Facturas computarizadas fuera de línea).
codigoExcepcionEnviar 1 si se confirmó la emisión de la factura para un NIT inválido. Caso contrario enviar 0.
descuentoAdicionalRepresenta el descuento adicional que se aplica al monto total.
montoGiftCardRepresenta el monto pagado con una Gift Card.
codigoTipoDocumentoIdentidadRepresenta el código del tipo de documento de identidad del cliente. Ej: 1: CI; 2: CI Extranjero; 3: Pasaporte; 4: Otros; 5: NIT.
numeroDocumentoRepresenta el número de documento del cliente.
complementoRepresenta el complemento del CI del cliente.
codigoClienteRepresenta el código de cliente en el sistema local.
codigoMetodoPagoRepresenta el código del método de pago. (Ver tabla paramétricas métodos pago).
numeroTarjetaRepresenta los primeros 4 dígitos y los últimos 4 dígitos de la tarjeta de crédito o débito Ej: 5412000000008451.
montoTotalRepresenta el monto total de la factura.
codigoMonedaRepresenta el código de la moneda utilizada. (Ver tabla paramétricas moneda).
montoTotalMonedaRepresenta el monto total de la factura en la moneda utilizada. Nota: Si la moneda es Bolivianos (154) es el mismo valor que el montoTotal.
usuarioRepresenta el usuario que emite la factura.
emailClienteRepresenta el correo electrónico del cliente para el envío de la factura.
telefonoClienteRepresenta el teléfono del cliente.
extrasRepresenta un objeto json con información extra para la factura.
extras => facturaTicketEste parámetro es obligatorio ya que sirve para registrar la factura de manera única en el sistema EMIZOR.
codigoLeyendaRepresenta el código de la leyenda que se mostrará en la factura. (Ver tabla paramétricas leyendas).
montoTotalSujetoIvaRepresenta el monto total de la factura que está sujeto al pago del IVA. Nota: Si hay Gift Card, el monto total sujeto a IVA es el monto total menos el monto de la Gift Card.
tipoCambioRepresenta el tipo de cambio utilizado si la moneda es diferente a Bolivianos.
detallesRepresenta un arreglo de objetos json con el detalle de los ítems de la factura.
codigoProductoRepresenta el código de producto propio.
codigoActividadSinRepresenta el código de actividad económica asociado al producto.
codigoProductoSinRepresenta el código de producto del SIN asociado al producto.
descripcionRepresenta la descripción del producto.
unidadMedidaRepresenta el código de la unidad de medida del producto. (Ver tabla paramétricas unidades).
precioUnitarioRepresenta el precio unitario del producto.
subTotalRepresenta el subtotal del ítem. Calculado como: (precioUnitario * cantidad) - montoDescuento.
cantidadRepresenta la cantidad vendida.
numeroSerieRepresenta el número de serie del producto (si corresponde).
montoDescuentoRepresenta el monto del descuento aplicado al ítem.
numeroImeiRepresenta el número de IMEI del producto (si corresponde).

Posibles errores (Código 400):

{
"status": "error",
"error": {
"numeroFactura": [
"El atributo 'numero factura' es requerido",
"numero factura debe ser un número entero."
]
// ... otros errores de validación ...
}
}

Respuestas

CódigoRespuesta
200Exitoso. Devuelve información como cuf, ack_ticket, urlSin, xml_url, shortLink, etc.
201Devuelve información de errores de validación: {"status": false, "data": {"Nombre_campo": ["validación_1", "validación_2"]}}
401{"message": "Unauthenticated"}
404No se pudo realizar el proceso por alguna inconsistencia de parámetros: {"status": false, "data": {"Punto de Venta no encontrado", "etc"}}

Campos importantes en respuesta 200:

  • CUF: Código Único de Factura gestionado por Impuestos Nacionales.
  • urlSin: Representa la URL de la factura en el SIN.
  • emission_type_code: 1 para EN LÍNEA, 2 para FUERA DE LÍNEA.
  • numeroFactura: Número de factura.
  • shortLink: Enlace del PDF de la factura.
  • xml_url: Enlace del XML de la factura.

Paso 4: Revisar el Estado de la Factura

El servicio está descrito en la sección 3.2 de este documento.

Paso 5: Obtener Detalles de la Factura

El servicio está descrito en la sección 3.3 de este documento.