Orden aceptada
Identificador del evento: order.accepted
En pocas palabras
Sección titulada «En pocas palabras»IDPOS le avisa de que una orden pasó al estado «aceptada». El aviso trae la orden completa: sus productos con modificadores y combos, los pagos, el cliente y la tienda.
Cuándo llega
Sección titulada «Cuándo llega»Cuando una orden pasa al estado «aceptada». La orden puede estar pagada o no: revise is_paid y paid_at. El ejemplo muestra una orden sin pagar: is_paid es false, paid_at es null y payments está vacío.
Para qué le sirve
Sección titulada «Para qué le sirve»- Registrar la venta en su ERP o sistema contable en cuanto la orden se acepta.
- Mostrar el pedido, con sus productos y su cliente, en su propio panel de seguimiento.
- Reservar o descontar en su inventario los productos de la orden.
Qué hacer al recibirlo
Sección titulada «Qué hacer al recibirlo»-
Verifique la firma.
Calcule el HMAC con el cuerpo crudo y compárelo con
X-Webhook-Signature. Si no coincide, no procese el evento. Los pasos están en Autenticación y firma. -
Responda
2xxde inmediato.Guarde el evento en una cola y responda sin esperar a procesarlo. Si tarda más que el tiempo de espera, IDPOS lo trata como fallido y lo reintenta.
-
Descarte los duplicados.
Si ya procesó ese
event_iddel cuerpo, ya verificado, no lo procese otra vez. Como segunda clave useevent_typejunto condata.id(por ejemplo, order.accepted y el id de la orden). -
Procese el evento en segundo plano.
Cree o actualice la orden en su sistema con los datos de
data. Lea solo los campos que necesita e ignore los que no reconozca.
Ejemplo
Sección titulada «Ejemplo»{ "event_id": "01J9ZK3Q7V4N8X2M5T6R1B0C9D", "event_type": "order.accepted", "timestamp": "2026-10-12T19:30:02Z", "api_version": "v1", "data": { "id": "9b6f0c3e-1a2d-4c55-8f01-3d2a7e6b9a10", "integration": null, "code": "ORD-7F3K2", "correlative": 1234, "reference": "OV-001234", "extra_information": null, "type": "pick-up", "status": "accepted", "is_paid": false, "created_at": "2026-10-12T19:30:00Z", "sold_at": "2026-10-12T19:30:00Z", "paid_at": null, "spot": { "id": null, "name": null, "slug": null, "external_id": null }, "currency": { "id": "719b61f7-0e77-4e7c-8e78-7a9b51791c29", "name": "PEN", "symbol": "S/" }, "subtotal_amount": "57.00", "discount_amount": "6.00", "global_discount_amount": "0.00", "total_amount": "63.00", "delivery": null, "customer": { "id": "e2f4a6c8-1b3d-4f57-9a0c-6d8e0f2a4b61", "identification_type": "DNI", "identification_value": "12345678", "name": "CLIENTE EJEMPLO", "email": "cliente@example.com", "phone": "900000000", "address": null }, "seller": { "id": "8c1e3a5b-7d9f-4b2a-8c4e-6f0a2b4d6e71", "name": "Ana Torres" }, "additional_seller": null, "cashier": { "id": "9d2f4b6c-8e0a-4c3b-9d5f-7a1b3c5e7f82", "name": "Caja 1" }, "products": [ { "id": "3d5f7a9b-2c4e-4a68-8b0d-1e3f5a7c9d20", "sku": "HAM-001", "external_id": "100234", "name": "Hamburguesa Clásica", "alias": null, "description": null, "vendor": null, "type": "product", "product_id": "7a9c1e3f-5b7d-4f91-a3c5-0e2b4d6f8a13", "category_id": "b1d3f5a7-9c1e-4b35-8d7f-2a4c6e8b0d24", "main_category_id": "c2e4a6b8-0d2f-4c46-9e8a-3b5d7f9a1c35", "product_group_id": null, "quantity": "2.0000000000", "unit_price": "30.00", "unit_net_price": "25.42373", "subtotal_amount": "60.00", "discount_amount": "6.00", "total_amount": "54.00", "net_amount": "45.76271", "unit_cost": "0.0000000000", "issue_as_export_service": false, "status": "pending", "extra_detail": "sin cebolla", "position_dish": 1, "group_dish": 1, "warehouse": { "id": "d3f5b7c9-1e3a-4d57-af9b-4c6e8a0b2d46", "name": "Cocina", "external_id": "COC" }, "is_modifier": false, "parent_id": null, "parent_sku": null, "toppings": [ { "id": "4e6a8c0d-3f5b-4b79-9c1e-2d4f6a8c0e31", "sku": "TOP-QSO", "external_id": null, "name": "Queso extra", "alias": null, "description": null, "vendor": null, "type": "product", "product_id": null, "category_id": null, "main_category_id": null, "product_group_id": null, "quantity": "1.0000000000", "unit_price": "3.00", "unit_net_price": "2.54237", "subtotal_amount": "3.00", "discount_amount": "0.00", "total_amount": "3.00", "net_amount": "2.54237", "unit_cost": "0.0000000000", "issue_as_export_service": false, "status": "pending", "extra_detail": null, "position_dish": 1, "group_dish": 1, "warehouse": null, "is_modifier": true, "parent_id": "3d5f7a9b-2c4e-4a68-8b0d-1e3f5a7c9d20", "parent_sku": "HAM-001", "toppings": [], "combo_products": [] } ], "combo_products": [] } ], "payments": [], "store": { "id": "6a8c0e2f-5b7d-4d9b-9e3a-4f6b8d0c2e53", "name": "Tienda Centro", "external_id": "T01" } }}Cómo leer las tablas: el tipo aparece debajo del nombre del campo y «nulo» indica que puede venir como null. Los demás términos están en la guía de lectura de campos.
| Campo | Descripción |
|---|---|
idstring (UUID) | Identificador de la orden |
integrationstring · nulo | Integración de origen |
codestring · nulo | Código de la orden |
correlativeentero · nulo | Número correlativo |
referencestring · nulo | Referencia de la orden |
extra_informationobjeto · nulo | Información adicional |
typestring · nulo | Tipo de orden |
statusstring | Estado de la orden |
is_paidbooleano | Indica si la orden está pagada |
created_atstring (fecha) · nulo | Fecha de creación |
sold_atstring (fecha) · nulo | Fecha y hora de la venta |
paid_atstring (fecha) · nulo | Fecha y hora del pago |
subtotal_amountstring (2 dec) | Monto de la orden con los descuentos de línea y antes del descuento global: total_amount menos discount_amount |
discount_amountstring (2 dec) | Suma de los descuentos de línea. No incluye el descuento global |
global_discount_amountstring (2 dec) | Descuento aplicado a la orden completa. Se resta de subtotal_amount |
total_amountstring (2 dec) | Monto de la orden antes de descuentos |
deliveryobjeto · nulo | Información de entrega |
Mesa o punto de atención (spot)
Sección titulada «Mesa o punto de atención (spot)»| Campo | Descripción |
|---|---|
spotobjeto | Mesa o punto de atención |
spot.idstring (UUID) · nulo | Identificador del punto de atención |
spot.namestring · nulo | Nombre del punto de atención |
spot.slugstring · nulo | Identificador corto |
spot.external_idstring · nulo | Código externo |
Moneda (currency)
Sección titulada «Moneda (currency)»| Campo | Descripción |
|---|---|
currencyobjeto | Moneda |
currency.idstring (UUID) · nulo | Identificador de la moneda |
currency.namestring · nulo | Nombre de la moneda |
currency.symbolstring · nulo | Símbolo de la moneda |
Cliente (customer)
Sección titulada «Cliente (customer)»| Campo | Descripción |
|---|---|
customerobjeto · nulo | Cliente |
customer.idstring (UUID) · nulo | Identificador del cliente |
customer.identification_typestring · nulo | Tipo de documento de identidad |
customer.identification_valuestring · nulo | Número de documento de identidad |
customer.namestring · nulo | Nombre del cliente |
customer.emailstring · nulo | Correo electrónico del cliente |
customer.phonestring · nulo | Teléfono del cliente |
customer.addressstring · nulo | Dirección del cliente |
Vendedores y caja (seller, additional_seller, cashier)
Sección titulada «Vendedores y caja (seller, additional_seller, cashier)»| Campo | Descripción |
|---|---|
sellerobjeto · nulo | Usuario que registró la venta. Es null si la orden no tiene vendedor o si ese usuario fue eliminado |
seller.idstring (UUID) | Identificador del usuario |
seller.namestring | Nombre del usuario |
additional_sellerobjeto · nulo | Vendedor adicional asignado a la orden. Es null si la orden no tiene vendedor adicional o si ese usuario fue eliminado |
additional_seller.idstring (UUID) | Identificador del vendedor adicional |
additional_seller.namestring | Nombre del vendedor adicional |
cashierobjeto · nulo | Caja en la que se registró la orden. Es null si la orden no tiene caja o si la caja fue eliminada |
cashier.idstring (UUID) | Identificador de la caja |
cashier.namestring | Nombre de la caja |
Líneas de la orden (products[])
Sección titulada «Líneas de la orden (products[])»Los modificadores (toppings[]) y los componentes de un combo (combo_products[]) tienen la misma estructura que cada elemento de products[].
| Campo | Descripción |
|---|---|
productslista | Líneas de la orden |
products[].idstring (UUID) | Identificador de la línea |
products[].skustring · nulo | Código del ítem |
products[].external_idstring · nulo | Código externo del producto |
products[].namestring | Nombre del producto |
products[].aliasstring · nulo | Alias del producto |
products[].descriptionstring · nulo | Descripción del producto |
products[].vendorstring · nulo | Marca o proveedor |
products[].typestring · nulo | Tipo de ítem |
products[].product_idstring (UUID) · nulo | Identificador del producto |
products[].category_idstring (UUID) · nulo | Identificador de la categoría |
products[].main_category_idstring (UUID) · nulo | Identificador de la categoría principal |
products[].product_group_idstring (UUID) · nulo | Identificador del grupo de productos |
products[].quantitystring (10 dec) | Cantidad |
products[].unit_pricestring (2 dec) | Precio unitario, con impuestos |
products[].unit_net_pricestring (5 dec) | Precio unitario sin impuestos, antes de descuentos |
products[].subtotal_amountstring (2 dec) | Monto de la línea antes de su descuento |
products[].discount_amountstring (2 dec) | Descuento de la línea |
products[].total_amountstring (2 dec) | Monto de la línea con su descuento: subtotal_amount menos discount_amount |
products[].net_amountstring (5 dec) | Monto de la línea sin impuestos, con su descuento y con la parte del descuento global que le corresponde. Ver Monto neto de la línea |
products[].unit_coststring (10 dec) | Costo unitario |
products[].issue_as_export_servicebooleano | Facturar como servicio de exportación |
products[].statusstring | Estado de la línea |
products[].extra_detailstring · nulo | Detalle de la línea |
products[].position_dishentero · nulo | Posición del plato |
products[].group_dishentero · nulo | Grupo del plato |
products[].warehouseobjeto · nulo | Almacén de la línea (id, name, external_id) |
products[].is_modifierbooleano | true si la línea es un modificador (toppings[]). Los componentes de un combo llegan con false |
products[].parent_idstring (UUID) · nulo | Identificador de la línea a la que pertenece el modificador o el componente. null en las líneas de primer nivel |
products[].parent_skustring · nulo | Código del ítem de la línea padre. null en las líneas de primer nivel |
products[].toppingslista | Modificadores (misma estructura que products[]) |
products[].combo_productslista | Componentes del combo (misma estructura que products[]) |
Monto neto de la línea
Sección titulada «Monto neto de la línea»net_amount es lo que la línea aporta a la venta sin ningún impuesto. Sirve para registrar la venta neta por producto en su ERP o sistema contable sin tener que repartir usted el descuento global.
- Parte de
total_amount, es decir, ya incluye el descuento de la línea. - Le resta la parte del descuento global que le toca. El descuento global se reparte entre las líneas en proporción a su
total_amount, incluidos modificadores y componentes de combo. - Quita todos los impuestos de la línea, no solo el IGV.
- Las líneas anuladas no participan del reparto.
Ejemplo: una orden con una línea de S/ 20.00 con S/ 5.00 de descuento (total_amount 15.00) y otra de S/ 40.00 sin descuento, con un descuento global de S/ 5.50. El descuento global es el 10 % de 55.00, así que a la primera línea le tocan S/ 1.50 y a la segunda S/ 4.00. Si el producto lleva 31 % de impuestos, net_amount es 13.50 / 1.31 = 10.30534 y 36.00 / 1.31 = 27.48092.
net_amount es un cálculo por línea y puede diferir por redondeo de los importes del Comprobante emitido. Para los importes tributarios del comprobante, use ese evento.
Pagos (payments[])
Sección titulada «Pagos (payments[])»| Campo | Descripción |
|---|---|
paymentslista | Pagos aprobados de la orden |
payments[].idstring (UUID) | Identificador del pago |
payments[].statusstring | Estado del pago |
payments[].method_idstring (UUID) · nulo | Identificador del medio de pago |
payments[].method_typestring · nulo | Tipo de medio de pago |
payments[].method_namestring · nulo | Nombre del medio de pago |
payments[].amountstring (2 dec) | Monto del pago |
payments[].tipstring (2 dec) | Propina |
payments[].reference_numberstring · nulo | Número de referencia |
payments[].approval_codestring · nulo | Código de aprobación |
payments[].first_six_digitsstring · nulo | Primeros seis dígitos de la tarjeta |
payments[].last_four_digitsstring · nulo | Últimos cuatro dígitos de la tarjeta |
payments[].paid_atstring (fecha) · nulo | Fecha y hora del pago |
Tienda (store)
Sección titulada «Tienda (store)»| Campo | Descripción |
|---|---|
storeobjeto | Tienda |
store.idstring (UUID) · nulo | Identificador de la tienda |
store.namestring · nulo | Nombre de la tienda |
store.external_idstring · nulo | Código externo de la tienda |