Ir al contenido

Listar las ventas pagadas de una tienda

GET
/stores/{storeKey}/sales

Devuelve las órdenes de la tienda que quedaron pagadas dentro del rango de fechas, según su fecha de pago (paid_at). Incluye las órdenes que se anularon después de pagarse, con su estado en status. Los resultados van ordenados por fecha de pago y luego por identificador, y la respuesta está paginada.

Cada elemento de data tiene la misma estructura que el data del evento Pago completo (order.paid_in_full). Sus campos están descritos en Orden aceptada y en Pago completo. Los valores reflejan el estado de la orden en el momento de la consulta; el webhook trae el estado en el momento del evento.

Las fechas son días calendario de la zona horaria America/Lima, con ambos extremos incluidos. El rango no puede superar 31 días.

storeKey
required
string format: uuid

Identificador (UUID) de la tienda.

Example
2b7d9e40-c1a3-4f58-8e06-5a4d3c7b9f12
date_from
required
string format: date

Primer día del rango, en formato AAAA-MM-DD. Es un día calendario de la zona horaria America/Lima y se incluye en el rango.

Example
2026-10-12
date_to
required
string format: date

Último día del rango, en formato AAAA-MM-DD. Es un día calendario de la zona horaria America/Lima y se incluye en el rango. Debe ser igual o posterior a date_from y no distar de ella más de 30 días, es decir, el rango no puede superar 31 días.

Example
2026-10-12
paginate
integer
default: 15 >= 1 <= 100

Cantidad de registros por página. Por defecto 15.

Example
15
page
integer
default: 1 >= 1

Número de página, empezando en 1. Por defecto 1.

Example
1

Una página de las órdenes que quedaron pagadas dentro del rango de fechas, cada una con sus productos y sus pagos. Sirve para cuadrar las ventas de un periodo con su sistema.

  • Van ordenadas por paid_at y luego por id. Los registros llegan en data, los enlaces de navegación en links y los totales en meta.
  • Un rango sin ventas responde 200 con data vacío y meta.total en 0.
  • Cada elemento tiene la misma estructura que el data de Pago completo, pero con el estado de la orden al consultar, no al momento del evento.
  • Una orden anulada después de pagarse sigue en la lista, con status en canceled.
  • created_at, sold_at y paid_at están en UTC; el rango se interpreta en hora de Lima. Los montos son cadenas de texto, no números.
object
data
required

Órdenes pagadas de esta página, ordenadas por paid_at y luego por id.

Array<object>

Orden pagada. Tiene la misma estructura que data del evento Pago completo (order.paid_in_full). Los valores reflejan el estado de la orden en el momento de la consulta.

object
id
required

Identificador de la orden.

string format: uuid
integration
required

Integración de origen.

string | null
code
required

Código de la orden.

string | null
correlative
required

Número correlativo.

integer | null
reference
required

Referencia de la orden.

string | null
extra_information
required

Información adicional.

object | null
type
required

Tipo de orden.

string | null
status
required

Estado actual de la orden. Una orden anulada después de pagarse conserva su pago y llega con canceled.

string
is_paid
required

Indica si la orden está pagada.

boolean
created_at
required

Fecha de creación, en UTC.

string | null format: date-time
sold_at
required

Fecha y hora de la venta, en UTC.

string | null format: date-time
paid_at
required

Fecha y hora del pago, en UTC.

string | null format: date-time
spot
required

Mesa o punto de atención.

object
id
required

Identificador del punto de atención.

string | null format: uuid
name
required

Nombre del punto de atención.

string | null
slug
required

Identificador corto.

string | null
external_id
required

Código externo.

string | null
currency
required

Moneda de la orden.

object
id
required

Identificador de la moneda.

string | null format: uuid
name
required

Nombre de la moneda.

string | null
symbol
required

Símbolo de la moneda.

string | null
subtotal_amount
required

Monto de la orden con los descuentos de línea y antes del descuento global. string (2 dec).

string
discount_amount
required

Suma de los descuentos de línea. string (2 dec).

string
global_discount_amount
required

Descuento aplicado a la orden completa. string (2 dec).

string
total_amount
required

Monto de la orden antes de descuentos. string (2 dec).

string
delivery
required

Información de entrega.

object | null
customer
required

Cliente. Es null si la orden no tiene cliente.

object
id
required

Identificador del cliente.

string | null format: uuid
identification_type
required

Tipo de documento de identidad.

string | null
identification_value
required

Número de documento de identidad.

string | null
name
required

Nombre del cliente.

string | null
email
required

Correo electrónico del cliente.

string | null
phone
required

Teléfono del cliente.

string | null
address
required

Dirección del cliente.

string | null
seller
required
One of:

Usuario, con su identificador y su nombre.

object
id
required

Identificador del usuario.

string format: uuid
name
required

Nombre del usuario.

string
additional_seller
required
One of:

Usuario, con su identificador y su nombre.

object
id
required

Identificador del usuario.

string format: uuid
name
required

Nombre del usuario.

string
cashier
required
One of:

Usuario, con su identificador y su nombre.

object
id
required

Identificador del usuario.

string format: uuid
name
required

Nombre del usuario.

string
products
required

Líneas de la orden.

Array<object>

Línea de la orden. Los modificadores (toppings) y los componentes de un combo (combo_products) tienen la misma estructura.

object
id
required

Identificador de la línea.

string format: uuid
sku
required

Código del ítem.

string | null
external_id
required

Código externo del producto.

string | null
name
required

Nombre del producto.

string
alias
required

Alias del producto.

string | null
description
required

Descripción del producto.

string | null
vendor
required

Marca o proveedor.

string | null
type
required

Tipo de ítem.

string | null
product_id
required

Identificador del producto.

string | null format: uuid
category_id
required

Identificador de la categoría.

string | null format: uuid
main_category_id
required

Identificador de la categoría principal.

string | null format: uuid
product_group_id
required

Identificador del grupo de productos.

string | null format: uuid
quantity
required

Cantidad. string (10 dec).

string
unit_price
required

Precio unitario, con impuestos. string (2 dec).

string
unit_net_price
required

Precio unitario sin impuestos, antes de descuentos. string (5 dec).

string
subtotal_amount
required

Monto de la línea antes de su descuento. string (2 dec).

string
discount_amount
required

Descuento de la línea. string (2 dec).

string
total_amount
required

Monto de la línea con su descuento. string (2 dec).

string
net_amount
required

Monto de la línea sin impuestos, con su descuento y con la parte del descuento global que le corresponde. string (5 dec).

string
unit_cost
required

Costo unitario. string (10 dec).

string
issue_as_export_service
required

Indica si se factura como servicio de exportación.

boolean
status
required

Estado de la línea.

string
extra_detail
required

Detalle de la línea.

string | null
position_dish
required

Posición del plato.

integer | null
group_dish
required

Grupo del plato.

integer | null
warehouse
required

Almacén de la línea.

object
id
required

Identificador del almacén.

string | null format: uuid
name
required

Nombre del almacén.

string | null
external_id
required

Código externo del almacén.

string | null
is_modifier
required

true si la línea es un modificador. Los componentes de un combo llegan con false.

boolean
parent_id
required

Identificador de la línea a la que pertenece el modificador o el componente. Es null en las líneas de primer nivel.

string | null format: uuid
parent_sku
required

Código del ítem de la línea padre. Es null en las líneas de primer nivel.

string | null
toppings
required
Array<object> recursive
combo_products
required
Array<object> recursive
payments
required

Pagos aprobados de la orden.

Array<object>

Pago aprobado de la orden.

object
id
required

Identificador del pago.

string format: uuid
status
required

Estado del pago.

string
method_id
required

Identificador del medio de pago.

string | null format: uuid
method_type
required

Tipo de medio de pago.

string | null
method_name
required

Nombre del medio de pago.

string | null
amount
required

Monto del pago. string (2 dec).

string
tip
required

Propina. string (2 dec).

string
reference_number
required

Número de referencia.

string | null
approval_code
required

Código de aprobación.

string | null
first_six_digits
required

Primeros seis dígitos de la tarjeta.

string | null
last_four_digits
required

Últimos cuatro dígitos de la tarjeta.

string | null
paid_at
required

Fecha y hora del pago, en UTC.

string | null format: date-time
store
required

Tienda de la orden.

object
id
required

Identificador de la tienda.

string | null format: uuid
name
required

Nombre de la tienda.

string | null
external_id
required

Código externo de la tienda.

string | null
links
required

Enlaces de la paginación. Conservan los parámetros de consulta de la petición.

object
first
required

URL de la primera página.

string
last
required

URL de la última página.

string
prev
required

URL de la página anterior. Es null en la primera página.

string | null
next
required

URL de la página siguiente. Es null en la última página.

string | null
meta
required

Información de la paginación.

object
current_page
required

Número de la página actual.

integer
from
required

Posición del primer registro de la página dentro del total. Es null si no hay registros.

integer | null
last_page
required

Número de la última página.

integer
links
required

Enlaces para armar un paginador.

Array<object>
object
url
required

URL de la página. Es null cuando no hay página anterior o siguiente.

string | null
label
required

Texto del enlace.

string
active
required

true en la página actual.

boolean
path
required

URL de la operación, sin parámetros de consulta.

string
per_page
required

Cantidad de registros por página.

integer
to
required

Posición del último registro de la página dentro del total. Es null si no hay registros.

integer | null
total
required

Cantidad total de registros.

integer
Examples

Un día con una venta

{
"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"
}
}
],
"links": {
"first": "https://host-proporcionado-por-idbi/api/open/v1/stores/6a8c0e2f-5b7d-4d9b-9e3a-4f6b8d0c2e53/sales?date_from=2026-10-12&date_to=2026-10-12&page=1",
"last": "https://host-proporcionado-por-idbi/api/open/v1/stores/6a8c0e2f-5b7d-4d9b-9e3a-4f6b8d0c2e53/sales?date_from=2026-10-12&date_to=2026-10-12&page=1",
"prev": null,
"next": null
},
"meta": {
"current_page": 1,
"from": 1,
"last_page": 1,
"links": [
{
"url": null,
"label": "« Anterior",
"active": false
},
{
"url": "https://host-proporcionado-por-idbi/api/open/v1/stores/6a8c0e2f-5b7d-4d9b-9e3a-4f6b8d0c2e53/sales?date_from=2026-10-12&date_to=2026-10-12&page=1",
"label": "1",
"active": true
},
{
"url": null,
"label": "Siguiente »",
"active": false
}
],
"path": "https://host-proporcionado-por-idbi/api/open/v1/stores/6a8c0e2f-5b7d-4d9b-9e3a-4f6b8d0c2e53/sales",
"per_page": 15,
"to": 1,
"total": 1
}
}

Credenciales ausentes, inválidas, deshabilitadas o vencidas. El campo error.description indica el motivo.

Formato de error de la autenticación y del control de acceso del token.

object
error
required

Detalle del error, con su código, su mensaje y su descripción.

object
code
required

Siempre es 0.

integer
message
required

Mensaje del error.

string
description
required

Detalle del error, cuando existe.

string | null
Examples

Falta una de las cabeceras

{
"error": {
"code": 0,
"message": "No autorizado",
"description": "El token es obligatorio"
}
}

La tienda indicada en la ruta no pertenece al token. La respuesta es la misma para una tienda ajena y para una tienda inexistente.

Formato de error de la autenticación y del control de acceso del token.

object
error
required

Detalle del error, con su código, su mensaje y su descripción.

object
code
required

Siempre es 0.

integer
message
required

Mensaje del error.

string
description
required

Detalle del error, cuando existe.

string | null
Examples
{
"error": {
"code": 0,
"message": "Acceso denegado",
"description": "El token no tiene acceso a la tienda solicitada"
}
}

Algún parámetro de consulta no es válido. Los mensajes de errors están en español y se agrupan por nombre de campo.

Formato de error cuando los datos enviados no superan la validación.

object
message
required

Mensaje general de validación.

string
errors
required

Mensajes de error agrupados por nombre de campo.

object
key
additional properties
Array<string>
Examples

Faltan las fechas

{
"message": "Uno o más de los datos que has ingresado no cumplen con los requisitos mínimos.",
"errors": {
"date_from": [
"El campo date_from es obligatorio."
],
"date_to": [
"El campo date_to es obligatorio."
]
}
}