Pago completo
Identificador del evento: order.paid_in_full
En pocas palabras
Sección titulada «En pocas palabras»IDPOS le avisa de que una orden quedó totalmente pagada. El aviso trae la orden completa, con el detalle de sus pagos.
Cuándo llega
Sección titulada «Cuándo llega»Cuando una orden queda totalmente pagada: una orden pagada en partes genera este evento al completarse el pago, no en cada pago parcial. La misma orden puede llegar en más de un evento Pago completo, cada uno con su propio event_id; use event_type + data.id para registrar la venta una sola vez. El ejemplo muestra is_paid en true, paid_at con la fecha del pago y los pagos en payments.
Para qué le sirve
Sección titulada «Para qué le sirve»- Confirmar el cobro de la orden en su ERP o sistema contable.
- Conciliar los pagos por medio de pago, con su monto y su propina.
- Liberar en su sistema un pedido que esperaba el pago.
Al cerrar el turno, el evento Cierre de turno (shift.closed) le envía el total cobrado por la caja. Úselo para confirmar que recibió todos los Pago completo de ese turno: consulte cómo cuadrar el turno.
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.paid_in_full y el id de la orden). -
Procese el evento en segundo plano.
Actualice el estado de pago de la orden en su sistema con
is_paid,paid_atypayments. Si todavía no conoce la orden porque Orden aceptada no llegó, créela con estos datos: la orden completa viene en el evento.
Ejemplo
Sección titulada «Ejemplo»{ "event_id": "01J9ZK4S9X6M2P7Q8R3T5V1W0Y", "event_type": "order.paid_in_full", "timestamp": "2026-10-12T19:45: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": true, "created_at": "2026-10-12T19:30:00Z", "sold_at": "2026-10-12T19:30:00Z", "paid_at": "2026-10-12T19:45:00Z", "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": [ { "id": "5f7b9d1e-4a6c-4c8a-8d2f-3e5a7c9b1d42", "status": "approved", "method_id": "1b3d5f7a-9c2e-4d6b-8f1a-3c5e7a9b2d93", "method_type": "card", "method_name": "Visa", "amount": "57.00", "tip": "0.00", "reference_number": "123456", "approval_code": "A1B2C3", "first_six_digits": "411111", "last_four_digits": "1111", "paid_at": "2026-10-12T19:45:00Z" } ], "store": { "id": "6a8c0e2f-5b7d-4d9b-9e3a-4f6b8d0c2e53", "name": "Tienda Centro", "external_id": "T01" } }}Los campos de data son los mismos que los de Orden aceptada. Consulte esa tabla para el detalle de cada uno.
| Campo | Qué indica |
|---|---|
is_paid | true cuando la orden está totalmente pagada. |
paid_at | Fecha y hora del pago. |
payments | Pagos de la orden, con medio de pago, monto, propina y referencias. |