El aviso de posición del repartidor, más o menos cada veinte segundos mientras un viaje está
en movimiento. Consúmelo si dibujas tu propio mapa; el
tracking_url con marca propia del envío es la alternativa que no requiere ninguna integración.
data DELIBERADAMENTE NO es el objeto de envío completo: uno de estos llega cada pocos segundos durante todo el viaje, y volver a enviar el nombre, la dirección y el teléfono del cliente en cada uno movería muchos datos personales solo para decir que el repartidor avanzó una cuadra.
Este es el ÚNICO evento que nunca se reintenta. Un aviso fallido lo reemplaza el siguiente, así que reenviarlo minutos después pondría una posición vieja encima de la más reciente que ya tienes.
Comprueba que el evento vino de nosotros. El valor es t=<unix seconds>,v1=<hex>,
donde el hex es un HMAC-SHA256, con tu secreto de firma como llave, sobre la
cadena "<t>.<raw request body>".
Para verificarlo: separa el encabezado por la coma, reconstruye "<t>.<body>" a
partir de los bytes CRUDOS que recibiste (nunca un objeto parseado y vuelto a serializar,
porque los espacios en blanco y las secuencias de escape cambiarían la firma), calcula el
HMAC y compáralo con v1 en tiempo constante. Rechaza todo lo que no coincida.
Después revisa el reloj. Rechaza un evento cuyo t esté a más de 5 minutos de distancia de ahora en CUALQUIERA de las dos direcciones: un t muy en el pasado es el replay que este esquema existe para detener, y uno muy en el futuro es el mismo ataque con un reloj que nadie revisó.
Pueden estar activos dos secretos a la vez para que puedas rotar sin tiempo de inactividad: agrega el nuevo, acepta cualquiera de los dos, promuévelo y luego elimina el anterior. Siempre firmamos con el primario.
Los campos que comparten todos los eventos. La entrega es al menos una vez y sin orden
por diseño: deduplica por id, y ordena por created_at o por las marcas de tiempo
propias del objeto, no por orden de llegada. type y data los agrega
cada evento, porque sus valores dependen de cuál evento sea.
Presente, y en true, solo en un evento de prueba que pediste con
POST /v1/test_webhooks. Un evento real no trae el campo en absoluto. El data de un evento de prueba es una muestra cuyos ids no corresponden a nada.
Ejemplo:
true
Respuesta
200
Responde con cualquier 2xx para confirmar el evento. Este nunca se reintenta.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Listo Partner API","description":"Quote, create and track deliveries, and manage your balance, through the Listo Partner Delivery API.","colors":{"primary":"#15171C","light":"#F4F4F5","dark":"#15171C"},"logo":{"light":"https://mintcdn.com/listo-c5a11a00/mreCwXzcEA2bSZog/logo/light.svg?fit=max\u0026auto=format\u0026n=mreCwXzcEA2bSZog\u0026q=85\u0026s=da2b28d464dc6987329dfd5971085dd7","dark":"https://mintcdn.com/listo-c5a11a00/mreCwXzcEA2bSZog/logo/dark.svg?fit=max\u0026auto=format\u0026n=mreCwXzcEA2bSZog\u0026q=85\u0026s=ad013a6a0d979eb46c1cea550ec6a460","href":"/"},"favicon":"https://mintcdn.com/listo-c5a11a00/mreCwXzcEA2bSZog/favicon.svg?fit=max\u0026auto=format\u0026n=mreCwXzcEA2bSZog\u0026q=85\u0026s=f790496dfe0c2ad9971d8de95e45be8d","api":{"playground":{"display":"interactive"}},"thumbnails":{"preset":"minimal","appearance":"dark","background":"https://mintcdn.com/listo-c5a11a00/lF-Gm03tnDMquh_z/images/og-background.jpg?fit=max\u0026auto=format\u0026n=lF-Gm03tnDMquh_z\u0026q=85\u0026s=d73469201c8ffe28afc598d23fde5d84","fonts":{"family":"Archivo ExtraBold","source":"fonts/archivo-800.ttf","format":"ttf"},"eyebrow":{"source":"none"}},"markdown":{"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 \u003cAPI 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."]},"styling":{"latex":true},"navigation":{"languages":[{"language":"en","default":true,"navbar":{"links":[{"href":"https://status.listo.delivery","label":"Status"}]},"href":"en/quickstart"},{"language":"es","navbar":{"links":[{"href":"https://status.listo.delivery","label":"Estado del servicio"}]},"href":"es/quickstart"}]}},"deployment":{"deploymentMetadataValue":{"subdomain":"listo-c5a11a00","hasAudioNarration":false,"actualSubdomain":"listo-c5a11a00","customDomains":["docs.listo.delivery"],"gitSource":{"type":"github","owner":"davidalejandroaguilar","repo":"listo","deployBranch":"main","contentDirectory":"docs-site","isPrivate":true,"mountPath":"","label":"","_id":"6aed6954347cccfbc77ed1c5"},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6aeeb167ae7fce64eae954de","clientVersion":"0.0.4076","searchFilterCounts":[{"language":"en","tag":"Errors","count":43},{"language":"en","tag":"Reference","count":43},{"language":"es","tag":"Errores","count":43},{"language":"es","tag":"Referencia","count":43},{"language":"en","tag":"Guides","count":9},{"language":"es","tag":"Guías","count":9},{"language":"en","tag":"Stores","count":8},{"language":"es","tag":"Tiendas","count":8},{"language":"en","tag":"Deliveries","count":7},{"language":"es","tag":"Envíos","count":7},{"language":"en","tag":"Webhooks","count":6},{"language":"es","tag":"Webhooks","count":6},{"language":"en","tag":"Concepts","count":5},{"language":"es","tag":"Conceptos","count":5},{"language":"en","tag":"Card onboarding","count":4},{"language":"en","tag":"Events","count":4},{"language":"es","tag":"Alta de cobros con tarjeta","count":4},{"language":"es","tag":"Eventos","count":4},{"language":"en","tag":"Withdrawals","count":3},{"language":"es","tag":"Retiros","count":3}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"comment-mode","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[{"filePath":"style.css","content":":is(#sidebar-content,#mobile-nav) li[data-active=\"true\"]>a{background-color:#ffc400;color:#15171c}"}],"page":{"pagePath":"es/api-reference/webhooks/the-courier-moved","slug":"/es/api-reference/webhooks/the-courier-moved","pageMetadata":{"title":"The courier moved","description":"El aviso de posición del repartidor, más o menos cada veinte segundos mientras un viaje está\nen movimiento. Consúmelo si dibujas tu propio mapa; el\n`tracking_url` con marca propia del envío es la alternativa que no requiere ninguna integración.\n\n`data` DELIBERADAMENTE NO es el objeto de envío completo: uno de estos llega cada pocos segundos durante todo el viaje, y volver a enviar el nombre, la dirección y el teléfono del cliente en cada uno movería muchos datos personales solo para decir que el repartidor avanzó una cuadra.\n\nEste es el ÚNICO evento que nunca se reintenta. Un aviso fallido lo reemplaza el siguiente, así que reenviarlo minutos después pondría una posición vieja encima de la más reciente que ya tienes.\n","version":null,"deprecated":null,"sidebarTitle":"El repartidor se movió","openapi":"/openapi/es.yaml webhook delivery.courier_location","href":"/es/api-reference/webhooks/the-courier-moved","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: \"code\",\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsxs(_components.p, {\n children: [\"El aviso de posición del repartidor, más o menos cada veinte segundos mientras un viaje está\\nen movimiento. Consúmelo si dibujas tu propio mapa; el\\n\", _jsx(_components.code, {\n children: \"tracking_url\"\n }), \" con marca propia del envío es la alternativa que no requiere ninguna integración.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [_jsx(_components.code, {\n children: \"data\"\n }), \" DELIBERADAMENTE NO es el objeto de envío completo: uno de estos llega cada pocos segundos durante todo el viaje, y volver a enviar el nombre, la dirección y el teléfono del cliente en cada uno movería muchos datos personales solo para decir que el repartidor avanzó una cuadra.\"]\n }), \"\\n\", _jsx(_components.p, {\n children: \"Este es el ÚNICO evento que nunca se reintenta. Un aviso fallido lo reemplaza el siguiente, así que reenviarlo minutos después pondría una posición vieja encima de la más reciente que ya tienes.\"\n })]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){return _jsx(_Fragment,{})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"The courier moved","description":"El aviso de posición del repartidor, más o menos cada veinte segundos mientras un viaje está\nen movimiento. Consúmelo si dibujas tu propio mapa; el\n`tracking_url` con marca propia del envío es la alternativa que no requiere ninguna integración.\n\n`data` DELIBERADAMENTE NO es el objeto de envío completo: uno de estos llega cada pocos segundos durante todo el viaje, y volver a enviar el nombre, la dirección y el teléfono del cliente en cada uno movería muchos datos personales solo para decir que el repartidor avanzó una cuadra.\n\nEste es el ÚNICO evento que nunca se reintenta. Un aviso fallido lo reemplaza el siguiente, así que reenviarlo minutos después pondría una posición vieja encima de la más reciente que ya tienes.\n","version":null,"deprecated":null,"sidebarTitle":"El repartidor se movió","openapi":"/openapi/es.yaml webhook delivery.courier_location","href":"/es/api-reference/webhooks/the-courier-moved","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"summary":"El repartidor se movió","operationId":"deliveryCourierLocation","description":"El aviso de posición del repartidor, más o menos cada veinte segundos mientras un viaje está\nen movimiento. Consúmelo si dibujas tu propio mapa; el\n`tracking_url` con marca propia del envío es la alternativa que no requiere ninguna integración.\n\n`data` DELIBERADAMENTE NO es el objeto de envío completo: uno de estos llega cada pocos segundos durante todo el viaje, y volver a enviar el nombre, la dirección y el teléfono del cliente en cada uno movería muchos datos personales solo para decir que el repartidor avanzó una cuadra.\n\nEste es el ÚNICO evento que nunca se reintenta. Un aviso fallido lo reemplaza el siguiente, así que reenviarlo minutos después pondría una posición vieja encima de la más reciente que ya tienes.\n","tags":["Webhooks"],"security":[],"parameters":["d1b2799a-79b1-43b8-a256-88480c2104d2"],"requestBody":"97b52a05-76e1-4ee3-9811-44663a47380a","responses":{"200":"0a79de7a-2d09-4a25-a6af-b8547be9b9e9"},"x-mint":{"href":"/es/api-reference/webhooks/the-courier-moved","metadata":{"sidebarTitle":"El repartidor se movió"}},"method":"post","type":"webhook","servers":["f399fc83-7e7d-462b-bf3b-3042989289cb"],"path":"delivery.courier_location","baseUrlOptions":["https://api.listo.delivery"],"title":"El repartidor se movió","codeSamples":[],"requiredOnlyExamples":false,"requestExamples":[{"language":"json","filename":"Example","code":"{\n \"id\": \"evt_9pQ2vX7mKdR4tYb1nZ3sLwCe\",\n \"created_at\": \"2026-07-28T18:41:03Z\",\n \"type\": \"delivery.courier_location\",\n \"data\": {\n \"delivery_id\": \"\u003cstring>\",\n \"external_id\": \"\u003cstring>\",\n \"location\": {\n \"lat\": 123,\n \"lng\": 123\n },\n \"updated_at\": \"2023-11-07T05:31:56Z\"\n },\n \"test\": true\n}"}],"requestExampleType":"webhook","responseExampleType":"generated"},"dependencies":{"parameters":{"d1b2799a-79b1-43b8-a256-88480c2104d2":{"name":"X-Listo-Signature","in":"header","required":true,"description":"Comprueba que el evento vino de nosotros. El valor es `t=\u003cunix seconds>,v1=\u003chex>`,\ndonde el hex es un HMAC-SHA256, con tu secreto de firma como llave, sobre la\ncadena `\"\u003ct>.\u003craw request body>\"`.\n\nPara verificarlo: separa el encabezado por la coma, reconstruye `\"\u003ct>.\u003cbody>\"` a\npartir de los bytes CRUDOS que recibiste (nunca un objeto parseado y vuelto a serializar,\nporque los espacios en blanco y las secuencias de escape cambiarían la firma), calcula el\nHMAC y compáralo con `v1` en tiempo constante. Rechaza todo lo que no coincida.\n\nDespués revisa el reloj. Rechaza un evento cuyo `t` esté a más de 5 minutos de distancia de ahora en CUALQUIERA de las dos direcciones: un `t` muy en el pasado es el replay que este esquema existe para detener, y uno muy en el futuro es el mismo ataque con un reloj que nadie revisó.\n\nPueden estar activos dos secretos a la vez para que puedas rotar sin tiempo de inactividad: agrega el nuevo, acepta cualquiera de los dos, promuévelo y luego elimina el anterior. Siempre firmamos con el primario.\n","schema":{"type":"string","example":"t=1753728063,v1=8d2f4a1b6c7e9f0a1b2c3d4e5f60718293a4b5c6d7e8f90a1b2c3d4e5f607182","isRequired":true,"description":"Comprueba que el evento vino de nosotros. El valor es `t=\u003cunix seconds>,v1=\u003chex>`,\ndonde el hex es un HMAC-SHA256, con tu secreto de firma como llave, sobre la\ncadena `\"\u003ct>.\u003craw request body>\"`.\n\nPara verificarlo: separa el encabezado por la coma, reconstruye `\"\u003ct>.\u003cbody>\"` a\npartir de los bytes CRUDOS que recibiste (nunca un objeto parseado y vuelto a serializar,\nporque los espacios en blanco y las secuencias de escape cambiarían la firma), calcula el\nHMAC y compáralo con `v1` en tiempo constante. Rechaza todo lo que no coincida.\n\nDespués revisa el reloj. Rechaza un evento cuyo `t` esté a más de 5 minutos de distancia de ahora en CUALQUIERA de las dos direcciones: un `t` muy en el pasado es el replay que este esquema existe para detener, y uno muy en el futuro es el mismo ataque con un reloj que nadie revisó.\n\nPueden estar activos dos secretos a la vez para que puedas rotar sin tiempo de inactividad: agrega el nuevo, acepta cualquiera de los dos, promuévelo y luego elimina el anterior. Siempre firmamos con el primario.\n","uniqueKey":"","typeLabel":"string"}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","description":"Los campos que comparten todos los eventos. La entrega es al menos una vez y sin orden\npor diseño: deduplica por `id`, y ordena por `created_at` o por las marcas de tiempo\npropias del objeto, no por orden de llegada. `type` y `data` los agrega\ncada evento, porque sus valores dependen de cuál evento sea.\n","required":["type","data","id","created_at"],"properties":{"id":{"type":"string","description":"El id del evento, con prefijo `evt_`. Deduplica por este.","example":"evt_9pQ2vX7mKdR4tYb1nZ3sLwCe","isRequired":true,"uniqueKey":"id","typeLabel":"string"},"created_at":{"type":"string","format":"date-time","description":"Cuándo se registró el evento, ISO-8601 en UTC.","example":"2026-07-28T18:41:03Z","isRequired":true,"uniqueKey":"created_at","typeLabel":"string\u003cdate-time>"},"type":{"type":"string","description":"Qué evento es este.","enum":["delivery.courier_location"],"isRequired":true,"uniqueKey":"type","typeLabel":"enum\u003cstring>"},"data":{"type":"object","description":"El cuerpo reducido de un evento `delivery.courier_location`. Relaciónalo con un envío que ya tengas; no es el objeto del envío.\n","properties":{"delivery_id":{"type":"string","description":"El id `dlv_` del envío que lleva el repartidor.","isRequired":true,"uniqueKey":"data.delivery_id","typeLabel":"string"},"external_id":{"oneOf":[{"type":"string","description":"Tu propia referencia de ese envío, para que no tengas que guardar la nuestra.","isRequired":true,"uniqueKey":"data.external_id.oneOf.0","typeLabel":"string"},{"type":"null","description":"Tu propia referencia de ese envío, para que no tengas que guardar la nuestra.","isRequired":true,"uniqueKey":"data.external_id.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.external_id","typeLabel":"string | null"},"location":{"type":"object","properties":{"lat":{"type":"number","format":"double","isRequired":true,"uniqueKey":"data.location.lat","typeLabel":"number\u003cdouble>"},"lng":{"type":"number","format":"double","isRequired":true,"uniqueKey":"data.location.lng","typeLabel":"number\u003cdouble>"}},"required":["lat","lng"],"isRequired":true,"uniqueKey":"data.location","typeLabel":"object"},"updated_at":{"oneOf":[{"type":"string","format":"date-time","description":"Cuándo se confirmó por última vez esta posición, que no es lo mismo que cuando se envió el evento.\n","isRequired":true,"uniqueKey":"data.updated_at.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","format":"date-time","description":"Cuándo se confirmó por última vez esta posición, que no es lo mismo que cuando se envió el evento.\n","isRequired":true,"uniqueKey":"data.updated_at.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.updated_at","typeLabel":"string\u003cdate-time> | null"}},"required":["delivery_id","external_id","location","updated_at"],"isRequired":true,"uniqueKey":"data","typeLabel":"object"},"test":{"type":"boolean","description":"Presente, y en true, solo en un evento de prueba que pediste con\n`POST /v1/test_webhooks`. Un evento real no trae el campo en absoluto. El `data` de un evento de prueba es una muestra cuyos ids no corresponden a nada.\n","example":true,"uniqueKey":"test","typeLabel":"boolean"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"id":"evt_9pQ2vX7mKdR4tYb1nZ3sLwCe","created_at":"2026-07-28T18:41:03Z","type":"delivery.courier_location","data":{"delivery_id":"\u003cstring>","external_id":"\u003cstring>","location":{"lat":123,"lng":123},"updated_at":"2023-11-07T05:31:56Z"},"test":true}}},"exampleType":"generated"}},"exampleType":"generated"},"responses":{"0a79de7a-2d09-4a25-a6af-b8547be9b9e9":{"description":"Responde con cualquier 2xx para confirmar el evento. Este nunca se reintenta.","content":{"_mintlify/placeholder":{"schema":{"type":"object","description":""}}}}},"security":{},"servers":{"f399fc83-7e7d-462b-bf3b-3042989289cb":{"url":"https://api.listo.delivery"}}},"originalFileLocation":"openapi/es.yaml"},"subdomain":"listo-c5a11a00","siteName":"Listo Partner API","title":"The courier moved - Listo Partner API","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{"en":{"href":"/api-reference/webhooks/the-courier-moved","matchLevel":1},"es":{"href":"/es/api-reference/webhooks/the-courier-moved","matchLevel":0}}},"lastModified":"2026-11-07T01:48:56.397Z","originalFileLocation":"es/api-reference/webhooks/the-courier-moved.mdx","locale":"es"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"El aviso de posición del repartidor, más o menos cada veinte segundos mientras un viaje está en movimiento. Consúmelo si dibujas tu propio mapa; el tracking_url con marca propia del envío es la alternativa que no requiere ninguna integración. data DELIBERADAMENTE NO es el objeto de envío completo: uno de estos llega cada pocos segundos durante todo el viaje, y volver a enviar el nombre, la dirección y el teléfono del cliente en cada uno movería muchos datos personales solo para decir que el repartidor avanzó una cuadra. Este es el ÚNICO evento que nunca se reintenta. Un aviso fallido lo reemplaza el siguiente, así que reenviarlo minutos después pondría una posición vieja encima de la más reciente que ya tienes.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Listo Partner API\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/listo-c5a11a00/GMBEN5uWEX-r6cRJ/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/listo-c5a11a00/GMBEN5uWEX-r6cRJ/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/listo-c5a11a00/GMBEN5uWEX-r6cRJ/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/listo-c5a11a00/GMBEN5uWEX-r6cRJ/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/listo-c5a11a00/GMBEN5uWEX-r6cRJ/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/listo-c5a11a00/GMBEN5uWEX-r6cRJ/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/listo-c5a11a00/GMBEN5uWEX-r6cRJ/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/listo-c5a11a00/GMBEN5uWEX-r6cRJ/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/listo-c5a11a00/GMBEN5uWEX-r6cRJ/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"The courier moved - Listo Partner API\">\u003cmeta data-mint-head property=\"og:description\" content=\"El aviso de posición del repartidor, más o menos cada veinte segundos mientras un viaje está en movimiento. Consúmelo si dibujas tu propio mapa; el tracking_url con marca propia del envío es la alternativa que no requiere ninguna integración. data DELIBERADAMENTE NO es el objeto de envío completo: uno de estos llega cada pocos segundos durante todo el viaje, y volver a enviar el nombre, la dirección y el teléfono del cliente en cada uno movería muchos datos personales solo para decir que el repartidor avanzó una cuadra. Este es el ÚNICO evento que nunca se reintenta. Un aviso fallido lo reemplaza el siguiente, así que reenviarlo minutos después pondría una posición vieja encima de la más reciente que ya tienes.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Listo Partner API\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.listo.delivery/es/api-reference/webhooks/the-courier-moved\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://listo-c5a11a00.mintlify.site/_mintlify/api/og/v2?title=The+courier+moved\u0026amp;description=El+aviso+de+posici%C3%B3n+del+repartidor%2C+m%C3%A1s+o+menos+cada+veinte+segundos+mientras+un+viaje+est%C3%A1%0Aen+movimiento.+Cons%C3%BAmelo+si+dibujas+tu+propio+mapa%3B+el%0A%60tracking_ur\u0026amp;theme=77fcfc9066d8b9eb9850b729\u0026amp;signature=fca016e8686c09b558fa7c81d5fb8a2a99811dbc97a94f64c840f97e40ae55d2\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"The courier moved - Listo Partner API\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"El aviso de posición del repartidor, más o menos cada veinte segundos mientras un viaje está en movimiento. Consúmelo si dibujas tu propio mapa; el tracking_url con marca propia del envío es la alternativa que no requiere ninguna integración. data DELIBERADAMENTE NO es el objeto de envío completo: uno de estos llega cada pocos segundos durante todo el viaje, y volver a enviar el nombre, la dirección y el teléfono del cliente en cada uno movería muchos datos personales solo para decir que el repartidor avanzó una cuadra. Este es el ÚNICO evento que nunca se reintenta. Un aviso fallido lo reemplaza el siguiente, así que reenviarlo minutos después pondría una posición vieja encima de la más reciente que ya tienes.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://listo-c5a11a00.mintlify.site/_mintlify/api/og/v2?title=The+courier+moved\u0026amp;description=El+aviso+de+posici%C3%B3n+del+repartidor%2C+m%C3%A1s+o+menos+cada+veinte+segundos+mientras+un+viaje+est%C3%A1%0Aen+movimiento.+Cons%C3%BAmelo+si+dibujas+tu+propio+mapa%3B+el%0A%60tracking_ur\u0026amp;theme=77fcfc9066d8b9eb9850b729\u0026amp;signature=fca016e8686c09b558fa7c81d5fb8a2a99811dbc97a94f64c840f97e40ae55d2\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/listo-c5a11a00/GMBEN5uWEX-r6cRJ/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Listo Partner API\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#15171C\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.listo.delivery/es/api-reference/webhooks/the-courier-moved\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/es/api-reference/webhooks/the-courier-moved.md\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"es\" href=\"https://docs.listo.delivery/es/api-reference/webhooks/the-courier-moved\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"en\" href=\"https://docs.listo.delivery/api-reference/webhooks/the-courier-moved\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"x-default\" href=\"https://docs.listo.delivery/api-reference/webhooks/the-courier-moved\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.listo.delivery/#organization\",\"name\":\"Listo Partner API\",\"url\":\"https://docs.listo.delivery\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/listo-c5a11a00/mreCwXzcEA2bSZog/logo/light.svg?fit=max\u0026auto=format\u0026n=mreCwXzcEA2bSZog\u0026q=85\u0026s=da2b28d464dc6987329dfd5971085dd7\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.listo.delivery#website\",\"name\":\"Listo Partner API\",\"url\":\"https://docs.listo.delivery\",\"publisher\":{\"@id\":\"https://docs.listo.delivery/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.listo.delivery/es/api-reference/webhooks/the-courier-moved#webpage\",\"url\":\"https://docs.listo.delivery/es/api-reference/webhooks/the-courier-moved\",\"name\":\"The courier moved\",\"description\":\"El aviso de posición del repartidor, más o menos cada veinte segundos mientras un viaje está en movimiento. Consúmelo si dibujas tu propio mapa; el tracking_url con marca propia del envío es la alternativa que no requiere ninguna integración. data DELIBERADAMENTE NO es el objeto de envío completo: uno de estos llega cada pocos segundos durante todo el viaje, y volver a enviar el nombre, la dirección y el teléfono del cliente en cada uno movería muchos datos personales solo para decir que el repartidor avanzó una cuadra. Este es el ÚNICO evento que nunca se reintenta. Un aviso fallido lo reemplaza el siguiente, así que reenviarlo minutos después pondría una posición vieja encima de la más reciente que ya tienes.\",\"dateModified\":\"2026-11-07T01:48:56.397Z\",\"isPartOf\":{\"@id\":\"https://docs.listo.delivery#website\"},\"breadcrumb\":{\"@id\":\"https://docs.listo.delivery/es/api-reference/webhooks/the-courier-moved#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.listo.delivery/es/api-reference/webhooks/the-courier-moved#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Referencia\",\"item\":\"https://docs.listo.delivery/es/api-reference/balance/read-your-prepaid-balance\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Webhooks\",\"item\":\"https://docs.listo.delivery/es/api-reference/webhooks/a-delivery-reached-a-new-status\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"The courier moved\",\"item\":\"https://docs.listo.delivery/es/api-reference/webhooks/the-courier-moved\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.listo.delivery/es/api-reference/webhooks/the-courier-moved#apireference\",\"headline\":\"The courier moved\",\"name\":\"The courier moved\",\"description\":\"El aviso de posición del repartidor, más o menos cada veinte segundos mientras un viaje está en movimiento. Consúmelo si dibujas tu propio mapa; el tracking_url con marca propia del envío es la alternativa que no requiere ninguna integración. data DELIBERADAMENTE NO es el objeto de envío completo: uno de estos llega cada pocos segundos durante todo el viaje, y volver a enviar el nombre, la dirección y el teléfono del cliente en cada uno movería muchos datos personales solo para decir que el repartidor avanzó una cuadra. Este es el ÚNICO evento que nunca se reintenta. Un aviso fallido lo reemplaza el siguiente, así que reenviarlo minutos después pondría una posición vieja encima de la más reciente que ya tienes.\",\"url\":\"https://docs.listo.delivery/es/api-reference/webhooks/the-courier-moved\",\"mainEntityOfPage\":{\"@id\":\"https://docs.listo.delivery/es/api-reference/webhooks/the-courier-moved#webpage\"},\"dateModified\":\"2026-11-07T01:48:56.397Z\",\"publisher\":{\"@id\":\"https://docs.listo.delivery/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.listo.delivery#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Listo Partner API\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Listo Partner API","nav":{"global":null,"languages":[{"language":"en","default":true,"navbar":{"links":[{"href":"https://status.listo.delivery","label":"Status"}]},"pages":[{"title":"en","href":"/api-reference/webhooks/the-courier-moved"}]},{"language":"es","navbar":{"links":[{"href":"https://status.listo.delivery","label":"Estado del servicio"}]},"groups":[{"group":"Primeros pasos","pages":[{"title":"Inicio rápido","href":"/es/quickstart"}]},{"group":"Guías","pages":[{"title":"Cotiza y crea un envío","href":"/es/guides/quote-and-create"},{"title":"Recibe y verifica webhooks","href":"/es/guides/webhooks"},{"title":"Depurar tu integración","href":"/es/guides/debugging"},{"title":"Construye con IA","href":"/es/guides/build-with-ai"},{"title":"Fondea tu saldo y retira","href":"/es/guides/balance-and-withdrawals"},{"title":"Sal a producción","href":"/es/guides/go-live"},{"title":"Conecta un restaurante que ya usa Listo","sidebarTitle":"Conecta una cuenta existente","href":"/es/guides/connect-existing-account"},{"title":"Plan y cobro","href":"/es/guides/plan-and-billing"},{"title":"Conecta Claude, Cursor o Codex","href":"/es/guides/connect-ai-client"}]},{"group":"Errores","expanded":false,"pages":[{"title":"Errores","href":"/es/errors/index"},{"title":"account_exists","href":"/es/errors/account_exists"},{"title":"address_not_found","href":"/es/errors/address_not_found"},{"title":"address_undeliverable","href":"/es/errors/address_undeliverable"},{"title":"cancel_failed","href":"/es/errors/cancel_failed"},{"title":"card_below_minimum","href":"/es/errors/card_below_minimum"},{"title":"card_not_ready","href":"/es/errors/card_not_ready"},{"title":"cash_over_cap","href":"/es/errors/cash_over_cap"},{"title":"charge_in_progress","href":"/es/errors/charge_in_progress"},{"title":"code_expired","href":"/es/errors/code_expired"},{"title":"console_access_required","href":"/es/errors/console_access_required"},{"title":"event_not_resendable","href":"/es/errors/event_not_resendable"},{"title":"idempotency_conflict","href":"/es/errors/idempotency_conflict"},{"title":"insufficient_balance","href":"/es/errors/insufficient_balance"},{"title":"internal_error","href":"/es/errors/internal_error"},{"title":"invalid_api_key","href":"/es/errors/invalid_api_key"},{"title":"no_couriers_available","href":"/es/errors/no_couriers_available"},{"title":"not_cancellable","href":"/es/errors/not_cancellable"},{"title":"not_editable","href":"/es/errors/not_editable"},{"title":"not_found","href":"/es/errors/not_found"},{"title":"not_reactivatable","href":"/es/errors/not_reactivatable"},{"title":"not_refundable","href":"/es/errors/not_refundable"},{"title":"not_reschedulable","href":"/es/errors/not_reschedulable"},{"title":"not_retriable","href":"/es/errors/not_retriable"},{"title":"order_too_large","href":"/es/errors/order_too_large"},{"title":"out_of_service_area","href":"/es/errors/out_of_service_area"},{"title":"payout_account_not_ready","href":"/es/errors/payout_account_not_ready"},{"title":"pickup_point_pending","href":"/es/errors/pickup_point_pending"},{"title":"plan_ended","href":"/es/errors/plan_ended"},{"title":"plan_required","href":"/es/errors/plan_required"},{"title":"provider_unavailable","href":"/es/errors/provider_unavailable"},{"title":"quote_consumed","href":"/es/errors/quote_consumed"},{"title":"quote_expired","href":"/es/errors/quote_expired"},{"title":"rate_limited","href":"/es/errors/rate_limited"},{"title":"read_only_key","href":"/es/errors/read_only_key"},{"title":"refund_amount_too_large","href":"/es/errors/refund_amount_too_large"},{"title":"resend_limit_reached","href":"/es/errors/resend_limit_reached"},{"title":"same_day_below_minimum","href":"/es/errors/same_day_below_minimum"},{"title":"same_day_cap_exceeded","href":"/es/errors/same_day_cap_exceeded"},{"title":"test_webhook_limit_reached","href":"/es/errors/test_webhook_limit_reached"},{"title":"unsupported_country","href":"/es/errors/unsupported_country"},{"title":"validation_failed","href":"/es/errors/validation_failed"},{"title":"webhook_endpoint_not_configured","href":"/es/errors/webhook_endpoint_not_configured"}]},{"group":"Referencia","pages":[{"group":"Saldo","pages":[{"title":"Consulta tu saldo prepagado","deprecated":null,"version":null,"sidebarTitle":"Consulta tu saldo prepagado","openapi":"/openapi/es.yaml get /v1/balance","href":"/es/api-reference/balance/read-your-prepaid-balance"},{"title":"Consulta el saldo de una tienda","deprecated":null,"version":null,"sidebarTitle":"Consulta el saldo de una tienda","openapi":"/openapi/es.yaml get /v1/stores/{store_id}/balance","href":"/es/api-reference/balance/read-a-stores-balance"}]},{"group":"Conexión de cuenta","pages":[{"title":"Pide a un restaurante que conecte la cuenta que ya tiene en Listo","deprecated":null,"version":null,"sidebarTitle":"Pide a un restaurante que conecte la cuenta que ya tiene en Listo","openapi":"/openapi/es.yaml post /v1/connect_requests","href":"/es/api-reference/account-connection/ask-a-restaurant-to-connect-its-account"},{"title":"Canjea una aprobación por la tienda","deprecated":null,"version":null,"sidebarTitle":"Canjea una aprobación por la tienda","openapi":"/openapi/es.yaml post /v1/connections","href":"/es/api-reference/account-connection/exchange-an-approval-for-the-store"}]},{"group":"Envíos","pages":[{"title":"Lista envíos","deprecated":null,"version":null,"sidebarTitle":"Lista envíos","openapi":"/openapi/es.yaml get /v1/deliveries","href":"/es/api-reference/deliveries/list-deliveries"},{"title":"Crea un envío","deprecated":null,"version":null,"sidebarTitle":"Crea un envío","openapi":"/openapi/es.yaml post /v1/deliveries","href":"/es/api-reference/deliveries/create-a-delivery"},{"title":"Cancela un envío","deprecated":null,"version":null,"sidebarTitle":"Cancela un envío","openapi":"/openapi/es.yaml post /v1/deliveries/{delivery_id}/cancellations","href":"/es/api-reference/deliveries/cancel-a-delivery"},{"title":"Reembolsa un envío","deprecated":null,"version":null,"sidebarTitle":"Reembolsa un envío","openapi":"/openapi/es.yaml post /v1/deliveries/{delivery_id}/refunds","href":"/es/api-reference/deliveries/refund-a-delivery"},{"title":"Reintenta un despacho fallido","deprecated":null,"version":null,"sidebarTitle":"Reintenta un despacho fallido","openapi":"/openapi/es.yaml post /v1/deliveries/{delivery_id}/retries","href":"/es/api-reference/deliveries/retry-a-failed-dispatch"},{"title":"Obtén un envío","deprecated":null,"version":null,"sidebarTitle":"Obtén un envío","openapi":"/openapi/es.yaml get /v1/deliveries/{id}","href":"/es/api-reference/deliveries/fetch-a-delivery"},{"title":"Actualiza un envío","deprecated":null,"version":null,"sidebarTitle":"Actualiza un envío","openapi":"/openapi/es.yaml patch /v1/deliveries/{id}","href":"/es/api-reference/deliveries/update-a-delivery"}]},{"group":"Eventos","pages":[{"title":"Lista tus eventos de webhook","deprecated":null,"version":null,"sidebarTitle":"Lista tus eventos de webhook","openapi":"/openapi/es.yaml get /v1/events","href":"/es/api-reference/events/list-your-webhook-events"},{"title":"Reenvía un evento de webhook","deprecated":null,"version":null,"sidebarTitle":"Reenvía un evento de webhook","openapi":"/openapi/es.yaml post /v1/events/{event_id}/resend","href":"/es/api-reference/events/send-a-webhook-event-again"},{"title":"Obtén un evento de webhook","deprecated":null,"version":null,"sidebarTitle":"Obtén un evento de webhook","openapi":"/openapi/es.yaml get /v1/events/{id}","href":"/es/api-reference/events/retrieve-a-webhook-event"},{"title":"Envía un webhook de prueba","deprecated":null,"version":null,"sidebarTitle":"Envía un webhook de prueba","openapi":"/openapi/es.yaml post /v1/test_webhooks","href":"/es/api-reference/events/send-a-test-webhook"}]},{"group":"Historial","pages":[{"title":"Lista tus movimientos del historial","deprecated":null,"version":null,"sidebarTitle":"Lista tus movimientos del historial","openapi":"/openapi/es.yaml get /v1/ledger","href":"/es/api-reference/ledger/list-your-ledger-entries"},{"title":"Lista los movimientos del historial de una tienda","deprecated":null,"version":null,"sidebarTitle":"Lista los movimientos del historial de una tienda","openapi":"/openapi/es.yaml get /v1/stores/{store_id}/ledger","href":"/es/api-reference/ledger/list-a-stores-ledger-entries"}]},{"group":"Autenticación","pages":[{"title":"Verifica que tu llave de API funciona","deprecated":null,"version":null,"sidebarTitle":"Verifica que tu llave de API funciona","openapi":"/openapi/es.yaml get /v1/ping","href":"/es/api-reference/authentication/check-that-your-api-key-works"}]},{"group":"Cotizaciones","pages":[{"title":"Cotiza un envío","deprecated":null,"version":null,"sidebarTitle":"Cotiza un envío","openapi":"/openapi/es.yaml post /v1/quotes","href":"/es/api-reference/quotes/price-a-delivery"}]},{"group":"Registro de solicitudes","pages":[{"title":"Lista tu registro de solicitudes","deprecated":null,"version":null,"sidebarTitle":"Lista tu registro de solicitudes","openapi":"/openapi/es.yaml get /v1/request_logs","href":"/es/api-reference/request-logs/list-your-request-log"},{"title":"Obtén una entrada del registro de solicitudes","deprecated":null,"version":null,"sidebarTitle":"Obtén una entrada del registro de solicitudes","openapi":"/openapi/es.yaml get /v1/request_logs/{id}","href":"/es/api-reference/request-logs/retrieve-a-request-log-entry"}]},{"group":"Tiendas","pages":[{"title":"Lista tus tiendas","deprecated":null,"version":null,"sidebarTitle":"Lista tus tiendas","openapi":"/openapi/es.yaml get /v1/stores","href":"/es/api-reference/stores/list-your-stores"},{"title":"Crea una tienda","deprecated":null,"version":null,"sidebarTitle":"Crea una tienda","openapi":"/openapi/es.yaml post /v1/stores","href":"/es/api-reference/stores/create-a-store"},{"title":"Obtén una tienda","deprecated":null,"version":null,"sidebarTitle":"Obtén una tienda","openapi":"/openapi/es.yaml get /v1/stores/{id}","href":"/es/api-reference/stores/fetch-a-store"},{"title":"Actualiza una tienda","deprecated":null,"version":null,"sidebarTitle":"Actualiza una tienda","openapi":"/openapi/es.yaml patch /v1/stores/{id}","href":"/es/api-reference/stores/update-a-store"},{"title":"Invita al dueño de una tienda","deprecated":null,"version":null,"sidebarTitle":"Invita al dueño de una tienda","openapi":"/openapi/es.yaml post /v1/stores/{store_id}/owner","href":"/es/api-reference/stores/invite-a-store-owner"},{"title":"Reactiva el plan de una tienda","deprecated":null,"version":null,"sidebarTitle":"Reactiva el plan de una tienda","openapi":"/openapi/es.yaml post /v1/stores/{store_id}/plan","href":"/es/api-reference/stores/reactivate-a-stores-plan"},{"title":"Cancela el plan de una tienda","deprecated":null,"version":null,"sidebarTitle":"Cancela el plan de una tienda","openapi":"/openapi/es.yaml post /v1/stores/{store_id}/plan_cancellation","href":"/es/api-reference/stores/cancel-a-stores-plan"},{"title":"Deshaz la cancelación del plan de una tienda","deprecated":null,"version":null,"sidebarTitle":"Deshaz la cancelación del plan de una tienda","openapi":"/openapi/es.yaml delete /v1/stores/{store_id}/plan_cancellation","href":"/es/api-reference/stores/undo-a-stores-plan-cancellation"}]},{"group":"Alta de cobros con tarjeta","pages":[{"title":"Inicia el alta para cobros con tarjeta de una tienda","deprecated":null,"version":null,"sidebarTitle":"Inicia el alta para cobros con tarjeta de una tienda","openapi":"/openapi/es.yaml post /v1/stores/{store_id}/stripe_onboarding","href":"/es/api-reference/card-onboarding/start-card-onboarding-for-a-store"},{"title":"Consulta la disponibilidad para cobrar con tarjeta de una tienda","deprecated":null,"version":null,"sidebarTitle":"Consulta la disponibilidad para cobrar con tarjeta de una tienda","openapi":"/openapi/es.yaml get /v1/stores/{store_id}/stripe_status","href":"/es/api-reference/card-onboarding/read-a-stores-card-readiness"},{"title":"Inicia el alta para cobros con tarjeta de tu empresa","deprecated":null,"version":null,"sidebarTitle":"Inicia el alta para cobros con tarjeta de tu empresa","openapi":"/openapi/es.yaml post /v1/stripe_onboarding","href":"/es/api-reference/card-onboarding/start-card-onboarding-for-your-company"},{"title":"Consulta la disponibilidad para cobrar con tarjeta de tu empresa","deprecated":null,"version":null,"sidebarTitle":"Consulta la disponibilidad para cobrar con tarjeta de tu empresa","openapi":"/openapi/es.yaml get /v1/stripe_status","href":"/es/api-reference/card-onboarding/read-your-companys-card-readiness"}]},{"group":"Entregas de webhook","pages":[{"title":"Lista los intentos de entrega de webhook","deprecated":null,"version":null,"sidebarTitle":"Lista los intentos de entrega de webhook","openapi":"/openapi/es.yaml get /v1/webhook_deliveries","href":"/es/api-reference/webhook-deliveries/list-webhook-delivery-attempts"}]},{"group":"Retiros","pages":[{"title":"Lista tus retiros","deprecated":null,"version":null,"sidebarTitle":"Lista tus retiros","openapi":"/openapi/es.yaml get /v1/withdrawals","href":"/es/api-reference/withdrawals/list-your-withdrawals"},{"title":"Solicita un retiro","deprecated":null,"version":null,"sidebarTitle":"Solicita un retiro","openapi":"/openapi/es.yaml post /v1/withdrawals","href":"/es/api-reference/withdrawals/request-a-withdrawal"},{"title":"Obtén un retiro","deprecated":null,"version":null,"sidebarTitle":"Obtén un retiro","openapi":"/openapi/es.yaml get /v1/withdrawals/{id}","href":"/es/api-reference/withdrawals/fetch-a-withdrawal"}]},{"group":"Webhooks","pages":[{"title":"A delivery reached a new status","version":null,"deprecated":null,"sidebarTitle":"Un envío llegó a un nuevo estado","openapi":"/openapi/es.yaml webhook delivery.status_changed","href":"/es/api-reference/webhooks/a-delivery-reached-a-new-status"},{"title":"A delivery changed without changing status","description":"Se envía cuando algo visible de un envío cambió pero el estado no: llegó la identidad del repartidor, cambió el ETA, el repartidor quedó a punto de llegar, llegó la prueba de entrega, o se reembolsó un pago.\n\n`data` es el objeto de envío completo.\n","version":null,"deprecated":null,"sidebarTitle":"Un envío cambió sin cambiar de estado","openapi":"/openapi/es.yaml webhook delivery.updated","href":"/es/api-reference/webhooks/a-delivery-changed-without-changing-status"},{"title":"The courier moved","version":null,"deprecated":null,"sidebarTitle":"El repartidor se movió","openapi":"/openapi/es.yaml webhook delivery.courier_location","href":"/es/api-reference/webhooks/the-courier-moved"},{"title":"A withdrawal was settled","description":"Se envía cuando un retiro deja de ser una solicitud: se pagó o falló. Un retiro que sigue `pending` no anuncia nada, porque ya tienes ese estado con la respuesta de creación.\n\nEsta es la única forma de enterarte del resultado. Lo resuelve una persona horas o días después, sin ninguna solicitud tuya en curso que lo responda.\n","version":null,"deprecated":null,"sidebarTitle":"Un retiro se liquidó","openapi":"/openapi/es.yaml webhook withdrawal.updated","href":"/es/api-reference/webhooks/a-withdrawal-was-settled"},{"title":"A store changed","version":null,"deprecated":null,"sidebarTitle":"Una tienda cambió","openapi":"/openapi/es.yaml webhook store.updated","href":"/es/api-reference/webhooks/a-store-changed"},{"title":"A restaurant connected its existing account to you","version":null,"deprecated":null,"sidebarTitle":"Un restaurante conectó la cuenta de Listo que ya tenía contigo","openapi":"/openapi/es.yaml webhook store.connected","href":"/es/api-reference/webhooks/a-restaurant-connected-its-existing-account-to-you"}]}]},{"group":"Conceptos","pages":[{"title":"El modelo de dinero","href":"/es/concepts/money"},{"title":"De dónde viene un envío","href":"/es/concepts/delivery-origin"},{"title":"Modo de prueba","href":"/es/concepts/test-mode"},{"title":"Firmas","href":"/es/concepts/signing"},{"title":"Efectivo en la puerta","href":"/es/concepts/cash-at-the-door"}]},{"group":"Historial de cambios","pages":[{"title":"Historial de cambios","href":"/es/changelog"}]},{"group":"Legal","pages":[{"title":"Términos para Partners","url":"https://listo.delivery/terminos-partners","href":"/es/terms-for-partners"}]}]}]},"basePath":"","title":"The courier moved - Listo Partner API","buildId":"dpl_8LJbrAiZvr1K98WQNZXCyY5AvT34","deploymentId":"dpl_8LJbrAiZvr1K98WQNZXCyY5AvT34","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-i2a3QZ8E.js","utils-ChLwp8m0.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-DRktVTDc.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-CA2pEs4T.js","snippetPresets-ClQ6XrKD.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-Ct_Lv36y.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-Cn2PYw9e.js","shallow-rkyymjXQ.js","getApiPlaygroundDisplay-BB9vkXtE.js","CodeSnippet-Bm5RU7m1.js","CodeSnippets-BgU9Deuz.js","Page-BUDYNlhG.js","getPastedJson-BD-6NNum.js","icon-8Z6tud2e.js","MethodPill-Tuzr4g3V.js","DuplicateIcon-0ceWFYhN.js","createIcon-FBXow_ST.js","DynamicMarkdown-CD8713Yy.js","SectionHeading-7zgzQbH-.js","axios-vUo_bRtp.js","Markdown-D7Ofw1oz.js","clsx-eKJ4rcii.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-CwjSCXIK.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-9EK5IAXV.js"]}