> ## Documentation Index
> Fetch the complete documentation index at: https://docs.listo.delivery/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> Notes on the Listo Partner Delivery API:
> - Every endpoint is under `https://api.listo.delivery/v1/` and authenticates with a bearer API key.
> - This documentation site is at https://docs.listo.delivery. The full machine-readable reference is the OpenAPI document at https://api.listo.delivery/docs/openapi.yaml (served by the API host, not by this site).
> - Any page of this site is also available as raw markdown by appending `.md` to its URL, for example https://docs.listo.delivery/en/guides/webhooks.md. The index of every page is https://docs.listo.delivery/llms.txt and all of them in one file is https://docs.listo.delivery/llms-full.txt.
> - Every page is published in English under https://docs.listo.delivery/en/ and in Spanish under https://docs.listo.delivery/es/, with the same path after the language. The API reference is under https://docs.listo.delivery/api-reference/ in English and https://docs.listo.delivery/es/api-reference/ in Spanish.
> - To debug an integration yourself: `GET /v1/request_logs` lists the calls your keys made with what you sent and what was answered, `GET /v1/events` lists the events Listo emitted, `GET /v1/webhook_deliveries` lists every attempt to deliver them, `POST /v1/events/{id}/resend` sends one event again and `POST /v1/test_webhooks` sends a sample event (`"test": true`). The page https://docs.listo.delivery/en/guides/debugging describes them. A resent event is a snapshot from when it happened; `GET /v1/deliveries` is still how you recover current state.
> - Every error response has `error.doc_url`, a page that explains that error code and what to do, and `error.request_id`, the same value as the `X-Request-Id` response header. All the pages are listed at https://docs.listo.delivery/en/errors. Filter `GET /v1/request_logs` with `request_id` to read the logged call.
> - A `409 account_exists` from `POST /v1/stores` means the restaurant already has its own Listo account: connect it instead of creating it, as the page https://docs.listo.delivery/en/guides/connect-existing-account describes.
> - Every live store carries one Plan Listo, charged to the partner. The exception is a connected restaurant that had already paid its current month: it keeps paying its own plan until its next renewal, shown as `paid_by: "store"` with the handover date in `pending_paid_by_on`. A `402 plan_required` from a quote, a delivery create or a retry means the store's plan is not paid or has ended; the page https://docs.listo.delivery/en/guides/plan-and-billing describes the plan, the `plan` block on a store and how to end or restart it.
> - An AI assistant (Claude Code, Cursor, Codex) can act through the same API key at `https://api.listo.delivery/mcp`, an MCP server over Streamable HTTP authenticated with `Authorization: Bearer <API key>`. Every tool runs the matching `/v1/` endpoint, and each one that moves money first previews and then needs a confirmation token; the page https://docs.listo.delivery/en/guides/connect-ai-client lists the tools and describes the two steps.

# Errores

> Todos los códigos de error que devuelve la API de Partners de Listo, qué significan y qué hacer con cada uno.

Toda respuesta de error tiene la misma forma: un objeto `error` con un `code`, un `message` legible, el `param` que falló cuando hay uno, `retryable`, un `doc_url` que apunta a la página del código y el `request_id` de la llamada. Decide por `code`, nunca por `message`, cuyo texto puede cambiar.

`error.request_id` es el id que Listo le da a la petición, el mismo valor del encabezado de respuesta `X-Request-Id` y del `request_id` de tu [registro de solicitudes](https://docs.listo.delivery/es/guides/debugging.md). Cítalo cuando escribas a soporte.

| Código | Estado HTTP | Se puede reintentar | Qué significa |
| - | - | - | - |
| [`invalid_api_key`](https://docs.listo.delivery/es/errors/invalid_api_key) | `401` | No | La llave de API de la petición falta, es incorrecta, fue revocada o es de un modo distinto al del recurso que pediste. |
| [`insufficient_balance`](https://docs.listo.delivery/es/errors/insufficient_balance) | `402` | No | El saldo de la cuenta que paga no alcanza para lo que esta petición gastaría o movería. |
| [`not_found`](https://docs.listo.delivery/es/errors/not_found) | `404` | No | No existe ningún recurso con ese id para la llave de API que usaste. |
| [`quote_expired`](https://docs.listo.delivery/es/errors/quote_expired) | `400` | No | La cotización con la que intentas crear el envío ya venció. |
| [`quote_consumed`](https://docs.listo.delivery/es/errors/quote_consumed) | `400` | No | Esa cotización ya se usó para crear un envío, y una cotización sirve una sola vez. |
| [`validation_failed`](https://docs.listo.delivery/es/errors/validation_failed) | `422` | No | Falta un campo de la petición, está mal formado o fuera de rango. No se creó nada. |
| [`out_of_service_area`](https://docs.listo.delivery/es/errors/out_of_service_area) | `422` | No | La dirección de entrega está fuera del área a la que Listo entrega desde esta tienda. |
| [`address_undeliverable`](https://docs.listo.delivery/es/errors/address_undeliverable) | `422` | No | La dirección de entrega se rechazó porque un repartidor no puede llegar a ella. |
| [`address_not_found`](https://docs.listo.delivery/es/errors/address_not_found) | `422` | No | La dirección que mandaste como texto no se pudo ubicar en un mapa. |
| [`cash_over_cap`](https://docs.listo.delivery/es/errors/cash_over_cap) | `422` | No | El efectivo que el repartidor cobraría en la puerta supera el límite de efectivo. |
| [`card_below_minimum`](https://docs.listo.delivery/es/errors/card_below_minimum) | `422` | No | El monto que el cliente debe pagar con tarjeta es menor que el pago con tarjeta más pequeño que se puede cobrar. |
| [`card_not_ready`](https://docs.listo.delivery/es/errors/card_not_ready) | `422` | No | La tienda todavía no tiene una cuenta conectada que pueda recibir pagos con tarjeta. |
| [`idempotency_conflict`](https://docs.listo.delivery/es/errors/idempotency_conflict) | `409` | No | La llave de idempotencia ya se usó con un cuerpo distinto, o la primera petición con esa llave sigue en proceso. |
| [`not_cancellable`](https://docs.listo.delivery/es/errors/not_cancellable) | `409` | No | El envío o el plan está en un estado que ya no permite cancelar. |
| [`not_reschedulable`](https://docs.listo.delivery/es/errors/not_reschedulable) | `409` | No | El envío ya se despachó, así que su ventana de recolección ya no se puede mover. |
| [`cancel_failed`](https://docs.listo.delivery/es/errors/cancel_failed) | `409` | Sí | La cancelación no se completó. No cambió nada y el envío sigue exactamente como estaba. |
| [`rate_limited`](https://docs.listo.delivery/es/errors/rate_limited) | `429` | Sí | Mandaste demasiadas peticiones en poco tiempo. Esta petición no se procesó. |
| [`provider_unavailable`](https://docs.listo.delivery/es/errors/provider_unavailable) | `503` | Sí | El despacho no está disponible por el momento. No se creó nada. |
| [`internal_error`](https://docs.listo.delivery/es/errors/internal_error) | `500` | Sí | Algo falló del lado de Listo. No es un problema de tu petición. |
| [`not_retriable`](https://docs.listo.delivery/es/errors/not_retriable) | `409` | No | Solo se puede reintentar un envío que se quedó sin repartidor, y este no está en ese estado. |
| [`console_access_required`](https://docs.listo.delivery/es/errors/console_access_required) | `422` | No | La tienda no tiene consola, así que no hay un acceso de dueño que crear. |
| [`not_editable`](https://docs.listo.delivery/es/errors/not_editable) | `409` | No | Las instrucciones de entrega ya no se pueden cambiar en este envío. |
| [`account_exists`](https://docs.listo.delivery/es/errors/account_exists) | `409` | No | Ese correo de dueño ya inicia sesión en una cuenta de Listo, así que no se puede crear una segunda tienda para él. |
| [`code_expired`](https://docs.listo.delivery/es/errors/code_expired) | `400` | No | El código de conexión se canjeó después de que se acabaron sus 24 horas. |
| [`payout_account_not_ready`](https://docs.listo.delivery/es/errors/payout_account_not_ready) | `422` | No | No hay una cuenta bancaria que pueda recibir este retiro. |
| [`not_refundable`](https://docs.listo.delivery/es/errors/not_refundable) | `409` | No | Este pedido no tiene un pago con tarjeta cobrado que se pueda devolver. |
| [`refund_amount_too_large`](https://docs.listo.delivery/es/errors/refund_amount_too_large) | `422` | No | El monto del reembolso es mayor que lo que le queda por reembolsar a este pedido. |
| [`unsupported_country`](https://docs.listo.delivery/es/errors/unsupported_country) | `422` | No | Listo entrega solo en México, y esta dirección está en otro país. |
| [`pickup_point_pending`](https://docs.listo.delivery/es/errors/pickup_point_pending) | `409` | Sí | El punto de recolección de la tienda todavía no está confirmado, así que no se puede pedir un repartidor desde ahí. No se creó nada. |
| [`same_day_cap_exceeded`](https://docs.listo.delivery/es/errors/same_day_cap_exceeded) | `422` | No | La cuenta llegó hoy al límite de retiros el mismo día. |
| [`same_day_below_minimum`](https://docs.listo.delivery/es/errors/same_day_below_minimum) | `422` | No | El monto es menor que el mínimo de un retiro el mismo día. |
| [`plan_required`](https://docs.listo.delivery/es/errors/plan_required) | `402` | No | Esta tienda en modo real no tiene un plan activo y pagado, así que no puede pedir repartidores. No se creó nada. |
| [`order_too_large`](https://docs.listo.delivery/es/errors/order_too_large) | `422` | No | El pedido es demasiado grande para un solo viaje de repartidor. No se cotizó, creó ni cobró nada. |
| [`not_reactivatable`](https://docs.listo.delivery/es/errors/not_reactivatable) | `409` | No | El plan de la tienda no ha terminado, así que no hay nada que reactivar. |
| [`plan_ended`](https://docs.listo.delivery/es/errors/plan_ended) | `409` | No | La cancelación del plan de la tienda ya surtió efecto, así que ya no se puede deshacer. |
| [`charge_in_progress`](https://docs.listo.delivery/es/errors/charge_in_progress) | `409` | Sí | Un cargo con tarjeta por el plan de la tienda sigue en proceso en el banco. No se cobró nada nuevo. |
| [`no_couriers_available`](https://docs.listo.delivery/es/errors/no_couriers_available) | `409` | Sí | Todos los repartidores cercanos al viaje están ocupados en este momento, así que no regresó un precio. No se creó nada. |
| [`webhook_endpoint_not_configured`](https://docs.listo.delivery/es/errors/webhook_endpoint_not_configured) | `409` | No | No hay una URL de webhook configurada para este modo, así que no hay a dónde enviar el evento. |
| [`event_not_resendable`](https://docs.listo.delivery/es/errors/event_not_resendable) | `409` | No | Los eventos de ubicación del repartidor no se reenvían nunca, porque la siguiente posición los reemplaza en segundos. |
| [`resend_limit_reached`](https://docs.listo.delivery/es/errors/resend_limit_reached) | `429` | Sí | Este evento ya se reenvió 5 veces en la última hora. |
| [`test_webhook_limit_reached`](https://docs.listo.delivery/es/errors/test_webhook_limit_reached) | `429` | Sí | Ya se enviaron 30 webhooks de prueba en la última hora para este modo. |
| [`read_only_key`](https://docs.listo.delivery/es/errors/read_only_key) | `403` | No | La llave de API es de solo lectura, y esta petición crearía, cambiaría o cancelaría algo. Las lecturas siguen funcionando con esa llave. |


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.