Crear nueva factura
Crea una nueva factura a partir de pedidos existentes u órdenes específicas.
Autenticación requerida: Este endpoint requiere autenticación Bearer Token. Usar el campo tokenCurrent obtenido del servicio de login (/login) en el header: Authorization: Bearer {tokenCurrent}
Proceso de facturación:
- Convierte pedidos en factura oficial
- Calcula impuestos y totales automáticamente
- Soporta facturación electrónica (DIAN)
- Integra con sistemas contables (Siigo, Loggro)
- Actualiza inventario y caja registradora
Requisitos de caja: Requiere caja registradora activa para el usuario.
Descuentos
Una factura puede combinar tres tipos de descuento, que se aplican en este orden sobre cada línea:
- Descuento de promoción (por producto, monto fijo): proviene del objeto promo del pedido/producto (promo.discount). Se resta del subtotal de la línea (cantidad × precio − promo.discount).
- Descuento de línea (por producto, porcentaje): porcentaje configurado en el producto/pedido.
- Descuento adicional de factura (porcentaje): el campo discount del cuerpo de la petición, que aplica a toda la factura.
Los porcentajes de línea y de factura se suman y se aplican sobre el subtotal ya rebajado por la promoción. El impuesto se calcula después de todos los descuentos. Resultados:
- discountAdditional: porcentaje adicional almacenado (igual al discount enviado).
- discountAdditionalTotal: monto total descontado, calculado por el servidor.
- products[].totalDiscount: descuento calculado por línea; products[].subTotal/subTotal: base ya rebajada.
Nota: no existe un límite máximo de descuento ni una validación de permiso específica para aplicar descuentos; el control queda a cargo del cliente que consume la API.
Casos de Uso y Ejemplos
Caso de Uso: Facturar mesa de restaurante
Escenario: Un mesero ha tomado varios pedidos en una mesa y necesita generar la factura final.
Proceso:
- Los pedidos se han creado previamente con estado "Espera" o "Entregado"
- Se seleccionan todos los pedidos de la mesa para facturar
- Se especifica método de pago y cliente (opcional)
- Se genera factura con cálculo automático de impuestos
1. Factura básica de mesa
{
"_id": "507f1f77bcf86cd799439020",
"orderProducts": [
{ "order": "507f1f77bcf86cd799439011" },
{ "order": "507f1f77bcf86cd799439012" }
],
"table": "507f1f77bcf86cd799439014",
"client": {
"name": "Juan Pérez",
"phone": "+57 300 123 4567",
"email": "juan@email.com"
},
"paymentMethod": "507f1f77bcf86cd799439018",
"isPaid": true,
"total": 45000,
"discountAdditionalTotal": 5000
}
2. Factura electrónica con DIAN
{
"_id": "507f1f77bcf86cd799439021",
"isEInvoice": true,
"orderProducts": [
{ "order": "507f1f77bcf86cd799439013" }
],
"client": {
"name": "María González",
"idType": "CC",
"idNumber": "123456789",
"email": "maria@empresa.com"
},
"isPaid": true,
"total": 30000,
"sendInvoiceEmail": true
}
3. Factura a crédito
{
"_id": "507f1f77bcf86cd799439022",
"orderProducts": [
{ "order": "507f1f77bcf86cd799439014" },
{ "order": "507f1f77bcf86cd799439015" }
],
"client": {
"name": "Empresa ABC",
"idType": "NIT",
"idNumber": "900123456-1"
},
"isCredit": true,
"creditDays": 30,
"total": 75000,
"status": "Pendiente"
}
4. Factura con entrega a domicilio
{
"_id": "507f1f77bcf86cd799439023",
"orderProducts": [
{ "order": "507f1f77bcf86cd799439016" }
],
"delivery": {
"isDelivery": true,
"deliveryProvider": "507f1f77bcf86cd799439017",
"deliveryGuy": {
"internalId": "507f1f77bcf86cd799439025"
},
"address": "Calle 123 #45-67, Bogotá"
},
"deliveryCost": 8000,
"isPaid": true,
"total": 38000
}
Request
- Base URLhttps://api.pirpos.com
- URLhttps://api.pirpos.com/invoices
- AuthHTTP bearer
Request body
Example request
{
"_id": "507f1f77bcf86cd799439020",
"orderProducts": [
{
"order": "507f1f77bcf86cd799439011"
}
],
"table": "507f1f77bcf86cd799439014",
"client": {
"name": "Juan Pérez",
"phone": "+57 300 123 4567",
"email": "juan@email.com",
"idType": "CC",
"idNumber": "123456789"
},
"paymentMethod": "507f1f77bcf86cd799439018",
"isPaid": true,
"creditDays": 30,
"total": 45000,
"discount": 10,
"discountAdditionalTotal": 5000,
"status": "Facturada"
}Response
Factura creada exitosamente
Example response
{
"_id": "507f1f77bcf86cd799439011",
"businessId": "507f1f77bcf86cd799439012",
"business": {
"name": "Restaurante El Buen Sabor",
"nit": "123456789-1",
"address": "Calle 123 #45-67"
},
"number": "FAC-001",
"invoicePrefix": "FAC",
"seq": 1,
"products": [
{
"name": "Hamburguesa Clásica",
"quantity": 2,
"price": 15000
}
],
"total": 35000,
"totalPaid": 35000,
"status": "Pagada",
"type": "Normal",
"table": {
"name": "Mesa 5"
},
"client": {
"name": "Juan Pérez",
"phone": "+57 300 123 4567"
},
"cashier": {
"name": "María González"
},
"paid": {
"paymentMethodValue": {
"paymentMethod": "Efectivo"
}
},
"eInvoice": {
"DIAN": {
"dianState": "00"
}
},
"externalIntegration": {
"siigo": {
"statusCode": 200
},
"loggro": {
"statusCode": 200
}
},
"createdOn": "2025-08-05T10:30:00.000Z",
"modifiedOn": "2025-08-05T10:30:00.000Z"
}Changes
No recorded changes to this operation across all 1 revision of this API.