Acepta una cotización vigente y crea la entrega con el precio y la hora de retiro cotizados, sin recalcular nada. Se cobra a tu cuenta (si tu cuenta usa saldo prepago, debe alcanzar). Puedes reintentar sin riesgo: la misma cotización siempre devuelve la misma entrega. Responde 409 si la cotización venció. Si aceptas tarde, la hora de retiro puede correrse; si el local ya no está abierto para retirar, responde storeClosed. La entrega trae requiresDeliveryVerificationCode: el código que tu cliente debe decirle al repartidor para cerrar la entrega. Entrégaselo a tu cliente (por ejemplo, en el seguimiento o en un mensaje). Si recibes un error 500 o un timeout, reintenta con la misma cotización: si la entrega alcanzó a crearse, la recibes (en el peor caso, tras 5 minutos). Un externalId ya usado en otra entrega responde externalIdAlreadyUsed. Para seguir la entrega usa GET /deliveries/, el webhook deliveries.delivery.updated y POST /deliveries//cancel para cancelarla.
Acepta una cotización vigente y crea la entrega con el precio y la hora de retiro cotizados, sin recalcular nada. Envía el quoteId y los datos de quien recibe en receiver (nombre y teléfono con código de país). El contacto en el local de retiro (sender) usa por defecto el nombre y el teléfono del local.La entrega se cobra a tu cuenta de integrador. Si tu cuenta usa saldo prepago, debe alcanzar para cubrirla. La respuesta incluye la cotización aceptada en quote (con status: "accepted", el deliveryId y la hora de retiro definitiva) y la entrega en delivery, con el mismo formato que Obtener una entrega. La entrega trae el código de entrega (requiresDeliveryVerificationCode) que tu cliente debe decirle al repartidor para recibir el paquete: entrégaselo.Puedes reintentar sin riesgo con los mismos datos: la misma cotización siempre devuelve la misma entrega. Si reintentas con otro externalId u otro valor de simulation mientras la cotización se está aceptando, responde 409 con bookingMismatch. Si la cotización venció responde 409 con quoteExpired, y si otra solicitud la está aceptando en ese momento, 409 con quoteBeingAccepted. Para seguir la entrega usa Obtener una entrega, el webhook deliveries.delivery.updated y Cancelar una entrega.Para probar tu integración sin repartidores reales, crea el envío desde una cuenta de pruebas con el campo simulation: lo atiende una flota simulada y no se cobra. Ver Probar la integración.
Entrega de prueba atendida por la flota simulada de Justo: no se ofrece a repartidores reales ni se cobra, y dispara los mismos webhooks que una entrega real. Solo está disponible para cuentas que todavía no están activas; si tu cuenta ya opera, pide a Justo una cuenta de pruebas (si no, responde simulationNotAllowed). Justo habilita el simulador por zona.
{"docsConfig":{"$schema":"https://mintlify.com/docs.json","theme":"mint","name":"Justo Docs","colors":{"primary":"#3b82f6","light":"#AE87FF","dark":"#0D001D"},"favicon":"https://mintcdn.com/justo/3q6RHbTj2xkukgKt/favicon.png?fit=max\u0026auto=format\u0026n=3q6RHbTj2xkukgKt\u0026q=85\u0026s=c4ae41602a6ac806c1294ba3cf13544e","logo":{"light":"https://mintcdn.com/justo/kGzZskwUmUVkF7RU/logo/logo-dark.svg?fit=max\u0026auto=format\u0026n=kGzZskwUmUVkF7RU\u0026q=85\u0026s=45816fc3a2198f90b32f320e33e24037","dark":"https://mintcdn.com/justo/kGzZskwUmUVkF7RU/logo/logo-white.svg?fit=max\u0026auto=format\u0026n=kGzZskwUmUVkF7RU\u0026q=85\u0026s=7472c73d4e8984a86c9ca5acc0c36981"},"api":{"playground":{"display":"interactive"},"mdx":{"server":null,"auth":{"method":"bearer","name":null}}},"background":{"decoration":null,"color":{"light":null,"dark":"#090014"}},"navbar":{"links":[{"label":"Ayuda","href":"mailto:tecnologia@getjusto.com"}],"primary":{"type":"button","label":"Justo","href":"https://getjusto.com"}},"footer":{"socials":{"github":"https://github.com/getjusto","linkedin":"https://www.linkedin.com/company/getjusto"}},"integrations":{"intercom":{"appId":"ohd982w5"}},"styling":{"latex":false},"navigation":{"global":{"anchors":[{"anchor":"Developer Portal","href":"https://developers.getjusto.com","icon":"code"}]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"justo","hasAudioNarration":false,"actualSubdomain":"justo","customDomains":["docs.getjusto.com"],"gitSource":{"type":"github","owner":"getjusto","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":false,"mountPath":"","label":""},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6af5e6d227c119ec9a1ed5a4","clientVersion":"0.0.4117","searchFilterCounts":[{"language":"default","tag":"PDV","count":125},{"language":"default","tag":"API Endpoints","count":112},{"language":"default","tag":"Config","count":100},{"language":"default","tag":"Servicios","count":80},{"language":"default","tag":"Ecommerce","count":62},{"language":"default","tag":"Administración de inventario","count":52},{"language":"default","tag":"Base","count":50},{"language":"default","tag":"API V2.2","count":47},{"language":"default","tag":"Delivery","count":29},{"language":"default","tag":"Catálogo","count":24}]},"assistantConfig":{},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-rbac-roles","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}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"docs/admin/last-mile/create-delivery","slug":"/docs/admin/last-mile/create-delivery","pageMetadata":{"title":"Crear un envío","openapi":"post /admin/last-mile/deliveries","description":"Acepta una cotización vigente y crea la entrega con el precio y la hora de retiro cotizados, sin recalcular nada. Se cobra a tu cuenta (si tu cuenta usa saldo prepago, debe alcanzar). Puedes reintentar sin riesgo: la misma cotización siempre devuelve la misma entrega. Responde 409 si la cotización venció. Si aceptas tarde, la hora de retiro puede correrse; si el local ya no está abierto para retirar, responde `storeClosed`. La entrega trae `requiresDeliveryVerificationCode`: el código que tu cliente debe decirle al repartidor para cerrar la entrega. Entrégaselo a tu cliente (por ejemplo, en el seguimiento o en un mensaje). Si recibes un error 500 o un timeout, reintenta con la misma cotización: si la entrega alcanzó a crearse, la recibes (en el peor caso, tras 5 minutos). Un externalId ya usado en otra entrega responde `externalIdAlreadyUsed`. Para seguir la entrega usa GET /deliveries/{deliveryId}, el webhook `deliveries.delivery.updated` y POST /deliveries/{deliveryId}/cancel para cancelarla.","href":"/docs/admin/last-mile/create-delivery"},"description":{"compiledSource":"\"use strict\";\nconst {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(_components.p, {\n children: [\"Acepta una cotización vigente y crea la entrega con el precio y la hora de retiro cotizados, sin recalcular nada. Se cobra a tu cuenta (si tu cuenta usa saldo prepago, debe alcanzar). Puedes reintentar sin riesgo: la misma cotización siempre devuelve la misma entrega. Responde 409 si la cotización venció. Si aceptas tarde, la hora de retiro puede correrse; si el local ya no está abierto para retirar, responde \", _jsx(_components.code, {\n children: \"storeClosed\"\n }), \". La entrega trae \", _jsx(_components.code, {\n children: \"requiresDeliveryVerificationCode\"\n }), \": el código que tu cliente debe decirle al repartidor para cerrar la entrega. Entrégaselo a tu cliente (por ejemplo, en el seguimiento o en un mensaje). Si recibes un error 500 o un timeout, reintenta con la misma cotización: si la entrega alcanzó a crearse, la recibes (en el peor caso, tras 5 minutos). Un externalId ya usado en otra entrega responde \", _jsx(_components.code, {\n children: \"externalIdAlreadyUsed\"\n }), \". Para seguir la entrega usa GET /deliveries/\", \", el webhook \", _jsx(_components.code, {\n children: \"deliveries.delivery.updated\"\n }), \" y POST /deliveries/\", \"/cancel para cancelarla.\"]\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,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,p:`p`,..._provideComponents(),...props.components};return _jsxs(_Fragment,{children:[_jsxs(_components.p,{children:[`Acepta una cotización vigente y crea la entrega con el precio y la hora de retiro cotizados, sin recalcular nada. Envía el `,_jsx(_components.code,{children:`quoteId`}),` y los datos de quien recibe en `,_jsx(_components.code,{children:`receiver`}),` (nombre y teléfono con código de país). El contacto en el local de retiro (`,_jsx(_components.code,{children:`sender`}),`) usa por defecto el nombre y el teléfono del local.`]}),`\n`,_jsxs(_components.p,{children:[`La entrega se cobra a tu cuenta de integrador. Si tu cuenta usa saldo prepago, debe alcanzar para cubrirla. La respuesta incluye la cotización aceptada en `,_jsx(_components.code,{children:`quote`}),` (con `,_jsx(_components.code,{children:`status: \"accepted\"`}),`, el `,_jsx(_components.code,{children:`deliveryId`}),` y la hora de retiro definitiva) y la entrega en `,_jsx(_components.code,{children:`delivery`}),`, con el mismo formato que `,_jsx(_components.a,{href:`/docs/admin/delivery/get`,children:`Obtener una entrega`}),`. La entrega trae el código de entrega (`,_jsx(_components.code,{children:`requiresDeliveryVerificationCode`}),`) que tu cliente debe decirle al repartidor para recibir el paquete: entrégaselo.`]}),`\n`,_jsxs(_components.p,{children:[`Puedes reintentar sin riesgo con los mismos datos: la misma cotización siempre devuelve la misma entrega. Si reintentas con otro `,_jsx(_components.code,{children:`externalId`}),` u otro valor de `,_jsx(_components.code,{children:`simulation`}),` mientras la cotización se está aceptando, responde `,_jsx(_components.code,{children:`409`}),` con `,_jsx(_components.code,{children:`bookingMismatch`}),`. Si la cotización venció responde `,_jsx(_components.code,{children:`409`}),` con `,_jsx(_components.code,{children:`quoteExpired`}),`, y si otra solicitud la está aceptando en ese momento, `,_jsx(_components.code,{children:`409`}),` con `,_jsx(_components.code,{children:`quoteBeingAccepted`}),`. Para seguir la entrega usa `,_jsx(_components.a,{href:`/docs/admin/delivery/get`,children:`Obtener una entrega`}),`, el webhook `,_jsx(_components.a,{href:`/docs/admin/last-mile/webhooks/delivery-updated`,children:_jsx(_components.code,{children:`deliveries.delivery.updated`})}),` y `,_jsx(_components.a,{href:`/docs/admin/delivery/cancel`,children:`Cancelar una entrega`}),`.`]}),`\n`,_jsxs(_components.p,{children:[`Para probar tu integración sin repartidores reales, crea el envío desde una cuenta de pruebas con el campo `,_jsx(_components.code,{children:`simulation`}),`: lo atiende una flota simulada y no se cobra. Ver `,_jsx(_components.a,{href:`/docs/admin/last-mile/test-deliveries`,children:`Probar la integración`}),`.`]})]})}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":"Crear un envío","openapi":"post /admin/last-mile/deliveries","description":"Acepta una cotización vigente y crea la entrega con el precio y la hora de retiro cotizados, sin recalcular nada. Se cobra a tu cuenta (si tu cuenta usa saldo prepago, debe alcanzar). Puedes reintentar sin riesgo: la misma cotización siempre devuelve la misma entrega. Responde 409 si la cotización venció. Si aceptas tarde, la hora de retiro puede correrse; si el local ya no está abierto para retirar, responde `storeClosed`. La entrega trae `requiresDeliveryVerificationCode`: el código que tu cliente debe decirle al repartidor para cerrar la entrega. Entrégaselo a tu cliente (por ejemplo, en el seguimiento o en un mensaje). Si recibes un error 500 o un timeout, reintenta con la misma cotización: si la entrega alcanzó a crearse, la recibes (en el peor caso, tras 5 minutos). Un externalId ya usado en otra entrega responde `externalIdAlreadyUsed`. Para seguir la entrega usa GET /deliveries/{deliveryId}, el webhook `deliveries.delivery.updated` y POST /deliveries/{deliveryId}/cancel para cancelarla.","href":"/docs/admin/last-mile/create-delivery"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"summary":"Crear un envío desde una cotización","description":"Acepta una cotización vigente y crea la entrega con el precio y la hora de retiro cotizados, sin recalcular nada. Se cobra a tu cuenta (si tu cuenta usa saldo prepago, debe alcanzar). Puedes reintentar sin riesgo: la misma cotización siempre devuelve la misma entrega. Responde 409 si la cotización venció. Si aceptas tarde, la hora de retiro puede correrse; si el local ya no está abierto para retirar, responde `storeClosed`. La entrega trae `requiresDeliveryVerificationCode`: el código que tu cliente debe decirle al repartidor para cerrar la entrega. Entrégaselo a tu cliente (por ejemplo, en el seguimiento o en un mensaje). Si recibes un error 500 o un timeout, reintenta con la misma cotización: si la entrega alcanzó a crearse, la recibes (en el peor caso, tras 5 minutos). Un externalId ya usado en otra entrega responde `externalIdAlreadyUsed`. Para seguir la entrega usa GET /deliveries/{deliveryId}, el webhook `deliveries.delivery.updated` y POST /deliveries/{deliveryId}/cancel para cancelarla.","requestBody":"1710a7c1-bede-4745-9d2d-deeb48448029","responses":{"200":"9e74ff15-1c45-4504-ad0f-d0c8f76eb20b","400":"679c7f4f-c48c-406f-bd91-f47066b9a9cf","409":"a6e59ed0-70d8-4646-aaac-a240065d3ad6"},"method":"post","type":"path","servers":["623ec9d8-1736-46df-abf4-7d63f7b23eb3"],"security":[],"path":"/admin/last-mile/deliveries","baseUrlOptions":["https://api.service.getjusto.com/v3"],"title":"Crear un envío desde una cotización","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["quoteId","receiver"],"additionalProperties":false,"properties":{"quoteId":{"type":"string","description":"ID de una cotización vigente (POST /last-mile/quotes).","isRequired":true,"uniqueKey":"quoteId","typeLabel":"string"},"receiver":{"type":"object","required":["name","phone"],"additionalProperties":false,"description":"Quién recibe el paquete.","properties":{"name":{"type":"string","description":"Nombre.","isRequired":true,"uniqueKey":"receiver.name","typeLabel":"string"},"phone":{"type":"string","description":"Teléfono con código de país, por ejemplo +56912345678.","isRequired":true,"uniqueKey":"receiver.phone","typeLabel":"string"}},"isRequired":true,"uniqueKey":"receiver","typeLabel":"object"},"sender":{"type":"object","additionalProperties":false,"description":"Contacto en el local. Por defecto, el nombre y el teléfono del local.","properties":{"name":{"type":"string","description":"Nombre.","uniqueKey":"sender.name","typeLabel":"string"},"phone":{"type":"string","description":"Teléfono con código de país.","uniqueKey":"sender.phone","typeLabel":"string"}},"uniqueKey":"sender","typeLabel":"object"},"instructions":{"type":"string","description":"Indicaciones para el repartidor.","uniqueKey":"instructions","typeLabel":"string"},"extendedAddress":{"type":"string","description":"Departamento u oficina, si no venía en la dirección cotizada.","uniqueKey":"extendedAddress","typeLabel":"string"},"externalId":{"type":"string","description":"Tu identificador del envío. Reemplaza el enviado en la cotización.","uniqueKey":"externalId","typeLabel":"string"},"simulation":{"type":"object","required":["mode"],"additionalProperties":false,"description":"Entrega de prueba atendida por la flota simulada de Justo: no se ofrece a repartidores reales ni se cobra, y dispara los mismos webhooks que una entrega real. Solo está disponible para cuentas que todavía no están activas; si tu cuenta ya opera, pide a Justo una cuenta de pruebas (si no, responde `simulationNotAllowed`). Justo habilita el simulador por zona.","properties":{"mode":{"type":"string","enum":["auto","custom"],"description":"auto: un repartidor simulado acepta, viaja en línea recta reportando su GPS cada 30 segundos, retira y entrega por sí solo. custom: igual, con la duración de cada paso que envíes en timings.","isRequired":true,"uniqueKey":"simulation.mode","typeLabel":"enum\u003cstring>"},"scenario":{"type":"string","enum":["none","driverCancels","notDelivered","returnToStore"],"description":"Escenario de falla. driverCancels: el repartidor libera la entrega antes de retirar y la toma otro. notDelivered: no se pudo entregar y se cierra como no entregada. returnToStore: no se pudo entregar y el paquete vuelve al local.","uniqueKey":"simulation.scenario","typeLabel":"enum\u003cstring>"},"timings":{"type":"object","description":"Solo con mode custom. Segundos de cada paso (0 a 600); lo que no envíes usa los tiempos de auto.","properties":{"acceptAfterSeconds":{"type":"number","minimum":0,"maximum":600,"uniqueKey":"simulation.timings.acceptAfterSeconds","typeLabel":"number"},"arriveAtPickupAfterSeconds":{"type":"number","minimum":0,"maximum":600,"uniqueKey":"simulation.timings.arriveAtPickupAfterSeconds","typeLabel":"number"},"pickupAfterSeconds":{"type":"number","minimum":0,"maximum":600,"uniqueKey":"simulation.timings.pickupAfterSeconds","typeLabel":"number"},"arriveAtDropoffAfterSeconds":{"type":"number","minimum":0,"maximum":600,"uniqueKey":"simulation.timings.arriveAtDropoffAfterSeconds","typeLabel":"number"},"deliverAfterSeconds":{"type":"number","minimum":0,"maximum":600,"uniqueKey":"simulation.timings.deliverAfterSeconds","typeLabel":"number"}},"uniqueKey":"simulation.timings","typeLabel":"object"}},"uniqueKey":"simulation","typeLabel":"object"}},"example":{"quoteId":"lmq-0193...","receiver":{"name":"Camila Rojas","phone":"+56912345678"},"instructions":"Dejar en conserjería"},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"quoteId":"lmq-0193...","receiver":{"name":"Camila Rojas","phone":"+56912345678"},"instructions":"Dejar en conserjería"}}},"exampleType":"generated"}},"exampleType":"generated"},"responses":{"9e74ff15-1c45-4504-ad0f-d0c8f76eb20b":{"description":"Respuesta exitosa","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":true,"uniqueKey":"success","typeLabel":"boolean"},"data":{"type":"object","properties":{"quote":{"type":"object","description":"Cotización guardada. Garantiza el precio y la hora de retiro hasta `expiresAt`. Para crear la entrega envía su `id` a POST /last-mile/deliveries antes de que venza.","properties":{"id":{"type":"string","description":"ID de la cotización.","example":"lmq-0193...","uniqueKey":"data.quote.id","typeLabel":"string"},"status":{"type":"string","enum":["open","accepting","accepted","expired"],"description":"`open`: se puede aceptar. `accepting`: se está creando la entrega. `accepted`: ya tiene entrega (`deliveryId`). `expired`: venció sin aceptarse.","uniqueKey":"data.quote.status","typeLabel":"enum\u003cstring>"},"expiresAt":{"type":"string","example":"2020-01-01T00:00:00.000Z","format":"date-time","description":"Hasta cuándo se puede aceptar.","uniqueKey":"data.quote.expiresAt","typeLabel":"string\u003cdate-time>"},"pickupAt":{"type":"string","example":"2020-01-01T00:00:00.000Z","format":"date-time","description":"Hora de retiro que Justo asegura, en el local y dentro de su horario. Si cotizaste sin `pickupAt` y aceptas varios minutos después, se corre en la misma medida: la hora definitiva viene al crear la entrega.","uniqueKey":"data.quote.pickupAt","typeLabel":"string\u003cdate-time>"},"estimatedDeliveryAt":{"type":"string","example":"2020-01-01T00:00:00.000Z","format":"date-time","description":"Hora estimada de entrega en el destino.","uniqueKey":"data.quote.estimatedDeliveryAt","typeLabel":"string\u003cdate-time>"},"store":{"type":"object","description":"Local elegido: el más cercano al destino entre los candidatos abiertos.","properties":{"storeId":{"type":"string","description":"ID Justo del local.","uniqueKey":"data.quote.store.storeId","typeLabel":"string"},"name":{"type":"string","description":"Nombre del local.","uniqueKey":"data.quote.store.name","typeLabel":"string"}},"uniqueKey":"data.quote.store","typeLabel":"object"},"fromAddress":{"type":"object","properties":{"streetAddress":{"type":"string","description":"Calle y número.","uniqueKey":"data.quote.fromAddress.streetAddress","typeLabel":"string"},"extendedAddress":{"type":"string","description":"Departamento, oficina, piso o block.","uniqueKey":"data.quote.fromAddress.extendedAddress","typeLabel":"string"},"locality":{"type":"string","description":"Comuna o localidad.","uniqueKey":"data.quote.fromAddress.locality","typeLabel":"string"},"region":{"type":"string","description":"Región o estado.","uniqueKey":"data.quote.fromAddress.region","typeLabel":"string"},"countryCode":{"type":"string","description":"País en ISO 3166-1 alfa-2.","uniqueKey":"data.quote.fromAddress.countryCode","typeLabel":"string"},"location":{"type":"object","required":["lat","lng"],"additionalProperties":false,"properties":{"lat":{"type":"number","description":"Latitud.","example":-33.4290115,"isRequired":true,"uniqueKey":"data.quote.fromAddress.location.lat","typeLabel":"number"},"lng":{"type":"number","description":"Longitud.","example":-70.6211027,"isRequired":true,"uniqueKey":"data.quote.fromAddress.location.lng","typeLabel":"number"}},"description":"Coordenadas usadas para la distancia y el precio.","uniqueKey":"data.quote.fromAddress.location","typeLabel":"object"}},"uniqueKey":"data.quote.fromAddress","typeLabel":"object"},"toAddress":{"type":"object","properties":{"streetAddress":{"type":"string","description":"Calle y número.","uniqueKey":"data.quote.toAddress.streetAddress","typeLabel":"string"},"extendedAddress":{"type":"string","description":"Departamento, oficina, piso o block.","uniqueKey":"data.quote.toAddress.extendedAddress","typeLabel":"string"},"locality":{"type":"string","description":"Comuna o localidad.","uniqueKey":"data.quote.toAddress.locality","typeLabel":"string"},"region":{"type":"string","description":"Región o estado.","uniqueKey":"data.quote.toAddress.region","typeLabel":"string"},"countryCode":{"type":"string","description":"País en ISO 3166-1 alfa-2.","uniqueKey":"data.quote.toAddress.countryCode","typeLabel":"string"},"location":{"type":"object","required":["lat","lng"],"additionalProperties":false,"properties":{"lat":{"type":"number","description":"Latitud.","example":-33.4290115,"isRequired":true,"uniqueKey":"data.quote.toAddress.location.lat","typeLabel":"number"},"lng":{"type":"number","description":"Longitud.","example":-70.6211027,"isRequired":true,"uniqueKey":"data.quote.toAddress.location.lng","typeLabel":"number"}},"description":"Coordenadas usadas para la distancia y el precio.","uniqueKey":"data.quote.toAddress.location","typeLabel":"object"}},"uniqueKey":"data.quote.toAddress","typeLabel":"object"},"package":{"type":"object","description":"Paquete a despachar. Según su peso y sus medidas, Justo envía un repartidor en un vehículo que pueda transportarlo. Si el paquete necesita un auto, el local debe tener `acceptsCar: true` y el precio incluye un recargo fijo por auto.","required":["weightKg","lengthCm","widthCm","heightCm","valueAmount"],"additionalProperties":false,"properties":{"weightKg":{"type":"number","exclusiveMinimum":0,"description":"Peso en kilos.","isRequired":true,"uniqueKey":"data.quote.package.weightKg","typeLabel":"number"},"lengthCm":{"type":"number","exclusiveMinimum":0,"description":"Largo en centímetros.","isRequired":true,"uniqueKey":"data.quote.package.lengthCm","typeLabel":"number"},"widthCm":{"type":"number","exclusiveMinimum":0,"description":"Ancho en centímetros.","isRequired":true,"uniqueKey":"data.quote.package.widthCm","typeLabel":"number"},"heightCm":{"type":"number","exclusiveMinimum":0,"description":"Alto en centímetros.","isRequired":true,"uniqueKey":"data.quote.package.heightCm","typeLabel":"number"},"valueAmount":{"type":"number","minimum":0,"description":"Valor declarado del contenido, en la moneda del país del local.","isRequired":true,"uniqueKey":"data.quote.package.valueAmount","typeLabel":"number"},"description":{"type":"string","description":"Qué contiene, por ejemplo \"Caja de chocolates\".","uniqueKey":"data.quote.package.description","typeLabel":"string"}},"example":{"weightKg":1.2,"lengthCm":30,"widthCm":20,"heightCm":10,"valueAmount":25990},"uniqueKey":"data.quote.package","typeLabel":"object"},"vehicleType":{"type":"string","enum":["moto","car"],"description":"Tipo de vehículo que puede transportar el paquete.","uniqueKey":"data.quote.vehicleType","typeLabel":"enum\u003cstring>"},"distanceMeters":{"type":"integer","description":"Distancia por calle del local al destino.","uniqueKey":"data.quote.distanceMeters","typeLabel":"integer"},"price":{"type":"number","description":"Precio sin impuestos. Si el paquete necesita auto, incluye el recargo fijo por auto.","uniqueKey":"data.quote.price","typeLabel":"number"},"priceWithTax":{"type":"number","description":"Precio con impuestos: lo que se factura.","uniqueKey":"data.quote.priceWithTax","typeLabel":"number"},"currency":{"type":"string","description":"Moneda (CLP, COP, MXN, PEN…).","uniqueKey":"data.quote.currency","typeLabel":"string"},"externalId":{"type":"string","description":"Tu identificador del envío.","uniqueKey":"data.quote.externalId","typeLabel":"string"},"deliveryId":{"type":"string","description":"Entrega creada desde esta cotización.","uniqueKey":"data.quote.deliveryId","typeLabel":"string"},"createdAt":{"type":"string","example":"2020-01-01T00:00:00.000Z","format":"date-time","description":"Fecha de la cotización.","uniqueKey":"data.quote.createdAt","typeLabel":"string\u003cdate-time>"}},"uniqueKey":"data.quote","typeLabel":"object"},"delivery":{"type":"object","description":"Entrega de Justo Delivery creada sin un pedido de Justo Ecommerce asociado. Se usa para despachos manuales o integraciones externas que necesitan logística fuera del checkout de Justo.","properties":{"_id":{"type":"string","description":"ID Justo de la entrega.","uniqueKey":"data.delivery._id","typeLabel":"string"},"websiteId":{"type":"string","description":"ID de la marca autorizada.","uniqueKey":"data.delivery.websiteId","typeLabel":"string"},"storeId":{"type":"string","description":"ID Justo del local que solicita la entrega.","uniqueKey":"data.delivery.storeId","typeLabel":"string"},"orderId":{"type":"string","description":"Siempre null para entregas sin pedido.","uniqueKey":"data.delivery.orderId","typeLabel":"string"},"partner":{"type":"string","description":"Partner logístico usado para la entrega.","uniqueKey":"data.delivery.partner","typeLabel":"string"},"status":{"type":"string","description":"Estado actual de la entrega.","enum":["active","canceled","done","error","pending","scheduled","delivering","waiting","unconfirmed"],"uniqueKey":"data.delivery.status","typeLabel":"enum\u003cstring>"},"specialCode":{"type":"string","description":"Código corto de entrega especial.","uniqueKey":"data.delivery.specialCode","typeLabel":"string"},"externalId":{"type":"string","description":"Identificador externo opcional enviado por la integración.","uniqueKey":"data.delivery.externalId","typeLabel":"string"},"price":{"type":"number","description":"Precio del despacho con impuestos, sin propina.","uniqueKey":"data.delivery.price","typeLabel":"number"},"priceWithoutTax":{"type":"number","description":"Precio sin impuestos.","uniqueKey":"data.delivery.priceWithoutTax","typeLabel":"number"},"tipAmount":{"type":"number","description":"Propina registrada para el repartidor, en moneda del local.","uniqueKey":"data.delivery.tipAmount","typeLabel":"number"},"receiveProofImage":{"oneOf":[{"type":"string","description":"URL de la imagen de evidencia del retiro. Null si no hay una imagen registrada.","format":"uri","uniqueKey":"data.delivery.receiveProofImage.oneOf.0","typeLabel":"string\u003curi>"},{"type":"null","description":"URL de la imagen de evidencia del retiro. Null si no hay una imagen registrada.","format":"uri","uniqueKey":"data.delivery.receiveProofImage.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.delivery.receiveProofImage","typeLabel":"string\u003curi> | null"},"deliverProofImage":{"oneOf":[{"type":"string","description":"URL de la imagen de evidencia de la entrega. Null si no hay una imagen registrada.","format":"uri","uniqueKey":"data.delivery.deliverProofImage.oneOf.0","typeLabel":"string\u003curi>"},{"type":"null","description":"URL de la imagen de evidencia de la entrega. Null si no hay una imagen registrada.","format":"uri","uniqueKey":"data.delivery.deliverProofImage.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.delivery.deliverProofImage","typeLabel":"string\u003curi> | null"},"isCash":{"type":"boolean","description":"Indica si el repartidor debe cobrar efectivo.","uniqueKey":"data.delivery.isCash","typeLabel":"boolean"},"isRoundTrip":{"type":"boolean","description":"Indica si el repartidor debe volver al origen.","uniqueKey":"data.delivery.isRoundTrip","typeLabel":"boolean"},"instructions":{"type":"string","description":"Instrucciones operativas para el repartidor.","uniqueKey":"data.delivery.instructions","typeLabel":"string"},"fromName":{"type":"string","description":"Nombre de contacto en origen.","uniqueKey":"data.delivery.fromName","typeLabel":"string"},"toName":{"type":"string","description":"Nombre de contacto en destino.","uniqueKey":"data.delivery.toName","typeLabel":"string"},"fromPlaceId":{"type":"string","description":"Place ID de origen.","uniqueKey":"data.delivery.fromPlaceId","typeLabel":"string"},"toPlaceId":{"type":"string","description":"Place ID de destino.","uniqueKey":"data.delivery.toPlaceId","typeLabel":"string"},"fromAddressLine2":{"type":"string","description":"Complemento de dirección de origen.","uniqueKey":"data.delivery.fromAddressLine2","typeLabel":"string"},"toAddressLine2":{"type":"string","description":"Complemento de dirección de destino.","uniqueKey":"data.delivery.toAddressLine2","typeLabel":"string"},"fromLocation":{"type":"object","description":"Punto de origen o destino de una entrega sin pedido.","properties":{"address":{"type":"string","description":"Dirección principal.","uniqueKey":"data.delivery.fromLocation.address","typeLabel":"string"},"addressSecondary":{"type":"string","description":"Comuna, ciudad o referencia secundaria.","uniqueKey":"data.delivery.fromLocation.addressSecondary","typeLabel":"string"},"placeId":{"type":"string","description":"ID del lugar.","uniqueKey":"data.delivery.fromLocation.placeId","typeLabel":"string"},"streetAddress":{"type":"string","description":"Calle y número.","uniqueKey":"data.delivery.fromLocation.streetAddress","typeLabel":"string"},"extendedAddress":{"type":"string","description":"Departamento, oficina o referencia.","uniqueKey":"data.delivery.fromLocation.extendedAddress","typeLabel":"string"},"contactPhone":{"type":"string","description":"Teléfono de contacto del punto.","uniqueKey":"data.delivery.fromLocation.contactPhone","typeLabel":"string"},"contactName":{"type":"string","description":"Nombre de contacto del punto.","uniqueKey":"data.delivery.fromLocation.contactName","typeLabel":"string"},"lat":{"type":"number","description":"Latitud.","uniqueKey":"data.delivery.fromLocation.lat","typeLabel":"number"},"lng":{"type":"number","description":"Longitud.","uniqueKey":"data.delivery.fromLocation.lng","typeLabel":"number"}},"uniqueKey":"data.delivery.fromLocation","typeLabel":"object"},"toLocation":{"type":"object","description":"Punto de origen o destino de una entrega sin pedido.","properties":{"address":{"type":"string","description":"Dirección principal.","uniqueKey":"data.delivery.toLocation.address","typeLabel":"string"},"addressSecondary":{"type":"string","description":"Comuna, ciudad o referencia secundaria.","uniqueKey":"data.delivery.toLocation.addressSecondary","typeLabel":"string"},"placeId":{"type":"string","description":"ID del lugar.","uniqueKey":"data.delivery.toLocation.placeId","typeLabel":"string"},"streetAddress":{"type":"string","description":"Calle y número.","uniqueKey":"data.delivery.toLocation.streetAddress","typeLabel":"string"},"extendedAddress":{"type":"string","description":"Departamento, oficina o referencia.","uniqueKey":"data.delivery.toLocation.extendedAddress","typeLabel":"string"},"contactPhone":{"type":"string","description":"Teléfono de contacto del punto.","uniqueKey":"data.delivery.toLocation.contactPhone","typeLabel":"string"},"contactName":{"type":"string","description":"Nombre de contacto del punto.","uniqueKey":"data.delivery.toLocation.contactName","typeLabel":"string"},"lat":{"type":"number","description":"Latitud.","uniqueKey":"data.delivery.toLocation.lat","typeLabel":"number"},"lng":{"type":"number","description":"Longitud.","uniqueKey":"data.delivery.toLocation.lng","typeLabel":"number"}},"uniqueKey":"data.delivery.toLocation","typeLabel":"object"},"location":{"oneOf":[{"type":"object","description":"Última ubicación del repartidor. Disponible al consultar el detalle mientras está en retiro, en camino o en espera; null en los demás estados.","required":["lat","lng"],"properties":{"lat":{"type":"number","description":"Latitud del repartidor.","isRequired":true,"uniqueKey":"data.delivery.location.oneOf.0.lat","typeLabel":"number"},"lng":{"type":"number","description":"Longitud del repartidor.","isRequired":true,"uniqueKey":"data.delivery.location.oneOf.0.lng","typeLabel":"number"},"updatedAt":{"type":"string","example":"2020-01-01T00:00:00.000Z","format":"date-time","description":"Fecha del reporte GPS; no es la hora de consulta.","uniqueKey":"data.delivery.location.oneOf.0.updatedAt","typeLabel":"string\u003cdate-time>"}},"uniqueKey":"data.delivery.location.oneOf.0","typeLabel":"object"},{"type":"null","description":"Última ubicación del repartidor. Disponible al consultar el detalle mientras está en retiro, en camino o en espera; null en los demás estados.","required":["lat","lng"],"properties":{"lat":{"type":"number","description":"Latitud del repartidor."},"lng":{"type":"number","description":"Longitud del repartidor."},"updatedAt":{"type":"string","example":"2020-01-01T00:00:00.000Z","format":"date-time","description":"Fecha del reporte GPS; no es la hora de consulta."}},"uniqueKey":"data.delivery.location.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.delivery.location","typeLabel":"object | null"},"driverInformation":{"oneOf":[{"type":"object","description":"Información del repartidor asignado, si está disponible.","properties":{"name":{"type":"string","description":"Nombre del repartidor.","uniqueKey":"data.delivery.driverInformation.oneOf.0.name","typeLabel":"string"},"code":{"type":"string","description":"Código del repartidor.","uniqueKey":"data.delivery.driverInformation.oneOf.0.code","typeLabel":"string"},"type":{"type":"string","description":"Tipo de vehículo.","uniqueKey":"data.delivery.driverInformation.oneOf.0.type","typeLabel":"string"}},"uniqueKey":"data.delivery.driverInformation.oneOf.0","typeLabel":"object"},{"type":"null","description":"Información del repartidor asignado, si está disponible.","properties":{"name":{"type":"string","description":"Nombre del repartidor."},"code":{"type":"string","description":"Código del repartidor."},"type":{"type":"string","description":"Tipo de vehículo."}},"uniqueKey":"data.delivery.driverInformation.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.delivery.driverInformation","typeLabel":"object | null"},"driverPassword":{"type":"string","description":"Código de verificación del repartidor, si aplica.","uniqueKey":"data.delivery.driverPassword","typeLabel":"string"},"trackingURL":{"type":"string","description":"URL de tracking público de la entrega.","uniqueKey":"data.delivery.trackingURL","typeLabel":"string"},"requiresDeliveryVerificationCode":{"type":"string","description":"Código de entrega que el destinatario debe decirle al repartidor para que pueda cerrar la entrega. Las entregas de última milla siempre lo traen: entrégaselo a tu cliente.","uniqueKey":"data.delivery.requiresDeliveryVerificationCode","typeLabel":"string"},"lastMileQuoteId":{"type":"string","description":"ID de la cotización de última milla desde la que se creó la entrega (POST /last-mile/deliveries).","uniqueKey":"data.delivery.lastMileQuoteId","typeLabel":"string"},"createdAt":{"type":"string","example":"2020-01-01T00:00:00.000Z","format":"date-time","description":"Fecha de creación.","uniqueKey":"data.delivery.createdAt","typeLabel":"string\u003cdate-time>"},"forDate":{"type":"string","example":"2020-01-01T00:00:00.000Z","format":"date-time","description":"Fecha programada de la entrega.","uniqueKey":"data.delivery.forDate","typeLabel":"string\u003cdate-time>"},"canceledAt":{"type":"string","example":"2020-01-01T00:00:00.000Z","format":"date-time","description":"Fecha de cancelación.","uniqueKey":"data.delivery.canceledAt","typeLabel":"string\u003cdate-time>"},"completedAt":{"type":"string","example":"2020-01-01T00:00:00.000Z","format":"date-time","description":"Fecha de término.","uniqueKey":"data.delivery.completedAt","typeLabel":"string\u003cdate-time>"}},"uniqueKey":"data.delivery","typeLabel":"object"}},"uniqueKey":"data","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"success":true,"data":{"quote":{"id":"lmq-0193...","status":"open","expiresAt":"2020-01-01T00:00:00.000Z","pickupAt":"2020-01-01T00:00:00.000Z","estimatedDeliveryAt":"2020-01-01T00:00:00.000Z","store":{"storeId":"\u003cstring>","name":"\u003cstring>"},"fromAddress":{"streetAddress":"\u003cstring>","extendedAddress":"\u003cstring>","locality":"\u003cstring>","region":"\u003cstring>","countryCode":"\u003cstring>","location":{"lat":-33.4290115,"lng":-70.6211027}},"toAddress":{"streetAddress":"\u003cstring>","extendedAddress":"\u003cstring>","locality":"\u003cstring>","region":"\u003cstring>","countryCode":"\u003cstring>","location":{"lat":-33.4290115,"lng":-70.6211027}},"package":{"weightKg":1.2,"lengthCm":30,"widthCm":20,"heightCm":10,"valueAmount":25990},"vehicleType":"moto","distanceMeters":123,"price":123,"priceWithTax":123,"currency":"\u003cstring>","externalId":"\u003cstring>","deliveryId":"\u003cstring>","createdAt":"2020-01-01T00:00:00.000Z"},"delivery":{"_id":"\u003cstring>","websiteId":"\u003cstring>","storeId":"\u003cstring>","orderId":"\u003cstring>","partner":"\u003cstring>","status":"active","specialCode":"\u003cstring>","externalId":"\u003cstring>","price":123,"priceWithoutTax":123,"tipAmount":123,"receiveProofImage":"\u003cstring>","deliverProofImage":"\u003cstring>","isCash":true,"isRoundTrip":true,"instructions":"\u003cstring>","fromName":"\u003cstring>","toName":"\u003cstring>","fromPlaceId":"\u003cstring>","toPlaceId":"\u003cstring>","fromAddressLine2":"\u003cstring>","toAddressLine2":"\u003cstring>","fromLocation":{"address":"\u003cstring>","addressSecondary":"\u003cstring>","placeId":"\u003cstring>","streetAddress":"\u003cstring>","extendedAddress":"\u003cstring>","contactPhone":"\u003cstring>","contactName":"\u003cstring>","lat":123,"lng":123},"toLocation":{"address":"\u003cstring>","addressSecondary":"\u003cstring>","placeId":"\u003cstring>","streetAddress":"\u003cstring>","extendedAddress":"\u003cstring>","contactPhone":"\u003cstring>","contactName":"\u003cstring>","lat":123,"lng":123},"location":{"lat":123,"lng":123,"updatedAt":"2020-01-01T00:00:00.000Z"},"driverInformation":{"name":"\u003cstring>","code":"\u003cstring>","type":"\u003cstring>"},"driverPassword":"\u003cstring>","trackingURL":"\u003cstring>","requiresDeliveryVerificationCode":"\u003cstring>","lastMileQuoteId":"\u003cstring>","createdAt":"2020-01-01T00:00:00.000Z","forDate":"2020-01-01T00:00:00.000Z","canceledAt":"2020-01-01T00:00:00.000Z","completedAt":"2020-01-01T00:00:00.000Z"}}}}},"exampleType":"generated"}},"exampleType":"generated"},"679c7f4f-c48c-406f-bd91-f47066b9a9cf":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":"false","uniqueKey":"success","typeLabel":"boolean"},"error":{"type":"object","properties":{"error":{"type":"string","example":"error","uniqueKey":"error.error","typeLabel":"string"},"message":{"type":"string","example":"The request has an error","uniqueKey":"error.message","typeLabel":"string"}},"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"success":"false","error":{"error":"error","message":"The request has an error"}}}},"exampleType":"generated"}},"exampleType":"generated"},"a6e59ed0-70d8-4646-aaac-a240065d3ad6":{"description":"La cotización venció (`quoteExpired`) o se está aceptando en otra solicitud (`quoteBeingAccepted`). Si venció, pide una nueva.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false,"uniqueKey":"success","typeLabel":"boolean"},"error":{"type":"object","properties":{"error":{"type":"string","enum":["quoteExpired","quoteBeingAccepted"],"uniqueKey":"error.error","typeLabel":"enum\u003cstring>"},"message":{"type":"string","uniqueKey":"error.message","typeLabel":"string"}},"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"success":false,"error":{"error":"quoteExpired","message":"\u003cstring>"}}}},"exampleType":"generated"}},"exampleType":"generated"}},"security":{"63b78364-18f3-4c79-8147-5840d5fb259c":{"Authorization":{"type":"http","scheme":"bearer","description":"Bearer authentication header of the form `Bearer \u003ctoken>`, where `\u003ctoken>` is your auth token."}}},"servers":{"623ec9d8-1736-46df-abf4-7d63f7b23eb3":{"url":"https://api.service.getjusto.com/v3","description":"Servidor de producción"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"http","scheme":"bearer","description":"Bearer authentication header of the form `Bearer \u003ctoken>`, where `\u003ctoken>` is your auth token."},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"Bearer authentication header of the form `Bearer \u003ctoken>`, where `\u003ctoken>` is your auth token.","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"Authorization","name":"Authorization"}],"title":"Authorization"}]},"originalFileLocation":"docs/main/openapi.json"},"subdomain":"justo","siteName":"Justo Docs","title":"Crear un envío - Justo Docs","navMaps":{"firstHrefInVersion":{"v3":{"href":"/docs/admin/last-mile/create-delivery","matchLevel":0},"v2":{"href":"/docs/old/v2/legacy-documentation","matchLevel":4}},"firstHrefInLanguage":{}},"lastModified":"2026-11-12T16:18:44.599Z","originalFileLocation":"docs/admin/last-mile/create-delivery.mdx"},"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=\"Acepta una cotización vigente y crea la entrega con el precio y la hora de retiro cotizados, sin recalcular nada. Se cobra a tu cuenta (si tu cuenta usa saldo prepago, debe alcanzar). Puedes reintentar sin riesgo: la misma cotización siempre devuelve la misma entrega. Responde 409 si la cotización venció. Si aceptas tarde, la hora de retiro puede correrse; si el local ya no está abierto para retirar, responde storeClosed. La entrega trae requiresDeliveryVerificationCode: el código que tu cliente debe decirle al repartidor para cerrar la entrega. Entrégaselo a tu cliente (por ejemplo, en el seguimiento o en un mensaje). Si recibes un error 500 o un timeout, reintenta con la misma cotización: si la entrega alcanzó a crearse, la recibes (en el peor caso, tras 5 minutos). Un externalId ya usado en otra entrega responde externalIdAlreadyUsed. Para seguir la entrega usa GET /deliveries/{deliveryId}, el webhook deliveries.delivery.updated y POST /deliveries/{deliveryId}/cancel para cancelarla.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Justo Docs\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/justo/WocLusDjOB_OW0lY/_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/justo/WocLusDjOB_OW0lY/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/justo/WocLusDjOB_OW0lY/_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/justo/WocLusDjOB_OW0lY/_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/justo/WocLusDjOB_OW0lY/_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/justo/WocLusDjOB_OW0lY/_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/justo/WocLusDjOB_OW0lY/_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/justo/WocLusDjOB_OW0lY/_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/justo/WocLusDjOB_OW0lY/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Crear un envío - Justo Docs\">\u003cmeta data-mint-head property=\"og:description\" content=\"Acepta una cotización vigente y crea la entrega con el precio y la hora de retiro cotizados, sin recalcular nada. Se cobra a tu cuenta (si tu cuenta usa saldo prepago, debe alcanzar). Puedes reintentar sin riesgo: la misma cotización siempre devuelve la misma entrega. Responde 409 si la cotización venció. Si aceptas tarde, la hora de retiro puede correrse; si el local ya no está abierto para retirar, responde storeClosed. La entrega trae requiresDeliveryVerificationCode: el código que tu cliente debe decirle al repartidor para cerrar la entrega. Entrégaselo a tu cliente (por ejemplo, en el seguimiento o en un mensaje). Si recibes un error 500 o un timeout, reintenta con la misma cotización: si la entrega alcanzó a crearse, la recibes (en el peor caso, tras 5 minutos). Un externalId ya usado en otra entrega responde externalIdAlreadyUsed. Para seguir la entrega usa GET /deliveries/{deliveryId}, el webhook deliveries.delivery.updated y POST /deliveries/{deliveryId}/cancel para cancelarla.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Justo Docs\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.getjusto.com/docs/admin/last-mile/create-delivery\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://justo.mintlify.site/_mintlify/api/og/v2?division=Env%C3%ADos\u0026amp;title=Crear+un+env%C3%ADo\u0026amp;description=Acepta+una+cotizaci%C3%B3n+vigente+y+crea+la+entrega+con+el+precio+y+la+hora+de+retiro+cotizados%2C+sin+recalcular+nada.+Se+cobra+a+tu+cuenta+%28si+tu+cuenta+usa+saldo+p\u0026amp;theme=51f6efe092f4945b0c2fe9ec\u0026amp;signature=64832626a238aac0d42f967debc2c36771a18c6425dded468044d62f78bd9c50\">\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=\"Crear un envío - Justo Docs\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Acepta una cotización vigente y crea la entrega con el precio y la hora de retiro cotizados, sin recalcular nada. Se cobra a tu cuenta (si tu cuenta usa saldo prepago, debe alcanzar). Puedes reintentar sin riesgo: la misma cotización siempre devuelve la misma entrega. Responde 409 si la cotización venció. Si aceptas tarde, la hora de retiro puede correrse; si el local ya no está abierto para retirar, responde storeClosed. La entrega trae requiresDeliveryVerificationCode: el código que tu cliente debe decirle al repartidor para cerrar la entrega. Entrégaselo a tu cliente (por ejemplo, en el seguimiento o en un mensaje). Si recibes un error 500 o un timeout, reintenta con la misma cotización: si la entrega alcanzó a crearse, la recibes (en el peor caso, tras 5 minutos). Un externalId ya usado en otra entrega responde externalIdAlreadyUsed. Para seguir la entrega usa GET /deliveries/{deliveryId}, el webhook deliveries.delivery.updated y POST /deliveries/{deliveryId}/cancel para cancelarla.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://justo.mintlify.site/_mintlify/api/og/v2?division=Env%C3%ADos\u0026amp;title=Crear+un+env%C3%ADo\u0026amp;description=Acepta+una+cotizaci%C3%B3n+vigente+y+crea+la+entrega+con+el+precio+y+la+hora+de+retiro+cotizados%2C+sin+recalcular+nada.+Se+cobra+a+tu+cuenta+%28si+tu+cuenta+usa+saldo+p\u0026amp;theme=51f6efe092f4945b0c2fe9ec\u0026amp;signature=64832626a238aac0d42f967debc2c36771a18c6425dded468044d62f78bd9c50\">\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/justo/WocLusDjOB_OW0lY/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Justo Docs\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#3b82f6\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.getjusto.com/docs/admin/last-mile/create-delivery\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/docs/admin/last-mile/create-delivery.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.getjusto.com/#organization\",\"name\":\"Justo Docs\",\"url\":\"https://docs.getjusto.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/justo/kGzZskwUmUVkF7RU/logo/logo-dark.svg?fit=max\u0026auto=format\u0026n=kGzZskwUmUVkF7RU\u0026q=85\u0026s=45816fc3a2198f90b32f320e33e24037\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.getjusto.com#website\",\"name\":\"Justo Docs\",\"url\":\"https://docs.getjusto.com\",\"publisher\":{\"@id\":\"https://docs.getjusto.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.getjusto.com/docs/admin/last-mile/create-delivery#webpage\",\"url\":\"https://docs.getjusto.com/docs/admin/last-mile/create-delivery\",\"name\":\"Crear un envío\",\"description\":\"Acepta una cotización vigente y crea la entrega con el precio y la hora de retiro cotizados, sin recalcular nada. Se cobra a tu cuenta (si tu cuenta usa saldo prepago, debe alcanzar). Puedes reintentar sin riesgo: la misma cotización siempre devuelve la misma entrega. Responde 409 si la cotización venció. Si aceptas tarde, la hora de retiro puede correrse; si el local ya no está abierto para retirar, responde storeClosed. La entrega trae requiresDeliveryVerificationCode: el código que tu cliente debe decirle al repartidor para cerrar la entrega. Entrégaselo a tu cliente (por ejemplo, en el seguimiento o en un mensaje). Si recibes un error 500 o un timeout, reintenta con la misma cotización: si la entrega alcanzó a crearse, la recibes (en el peor caso, tras 5 minutos). Un externalId ya usado en otra entrega responde externalIdAlreadyUsed. Para seguir la entrega usa GET /deliveries/{deliveryId}, el webhook deliveries.delivery.updated y POST /deliveries/{deliveryId}/cancel para cancelarla.\",\"dateModified\":\"2026-11-12T16:18:44.599Z\",\"isPartOf\":{\"@id\":\"https://docs.getjusto.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.getjusto.com/docs/admin/last-mile/create-delivery#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.getjusto.com/docs/admin/last-mile/create-delivery#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Última milla\",\"item\":\"https://docs.getjusto.com/docs/admin/last-mile/introduction\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Envíos\",\"item\":\"https://docs.getjusto.com/docs/admin/last-mile/quote\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Crear un envío\",\"item\":\"https://docs.getjusto.com/docs/admin/last-mile/create-delivery\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.getjusto.com/docs/admin/last-mile/create-delivery#apireference\",\"headline\":\"Crear un envío\",\"name\":\"Crear un envío\",\"description\":\"Acepta una cotización vigente y crea la entrega con el precio y la hora de retiro cotizados, sin recalcular nada. Se cobra a tu cuenta (si tu cuenta usa saldo prepago, debe alcanzar). Puedes reintentar sin riesgo: la misma cotización siempre devuelve la misma entrega. Responde 409 si la cotización venció. Si aceptas tarde, la hora de retiro puede correrse; si el local ya no está abierto para retirar, responde storeClosed. La entrega trae requiresDeliveryVerificationCode: el código que tu cliente debe decirle al repartidor para cerrar la entrega. Entrégaselo a tu cliente (por ejemplo, en el seguimiento o en un mensaje). Si recibes un error 500 o un timeout, reintenta con la misma cotización: si la entrega alcanzó a crearse, la recibes (en el peor caso, tras 5 minutos). Un externalId ya usado en otra entrega responde externalIdAlreadyUsed. Para seguir la entrega usa GET /deliveries/{deliveryId}, el webhook deliveries.delivery.updated y POST /deliveries/{deliveryId}/cancel para cancelarla.\",\"url\":\"https://docs.getjusto.com/docs/admin/last-mile/create-delivery\",\"mainEntityOfPage\":{\"@id\":\"https://docs.getjusto.com/docs/admin/last-mile/create-delivery#webpage\"},\"dateModified\":\"2026-11-12T16:18:44.599Z\",\"publisher\":{\"@id\":\"https://docs.getjusto.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.getjusto.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Justo Docs\",\"publisher\":{\"@type\":\"Organization\",\"name\":\"Justo Docs\"},\"provider\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","agentPointerHref":"/docs/admin/last-mile/create-delivery.md","siteName":"Justo Docs","nav":{"global":{"anchors":[{"anchor":"Developer Portal","href":"https://developers.getjusto.com","icon":"code"}]},"versions":[{"version":"v3","tabs":[{"tab":"Base","pages":[{"title":"Base","href":"/docs/main/introduction"}]},{"tab":"PDV","pages":[{"title":"PDV","href":"/docs/crisp/endpoints/tabs/get-tab"}]},{"tab":"Ecommerce","pages":[{"title":"Ecommerce","href":"/docs/ecommerce/introduction"}]},{"tab":"Config","pages":[{"title":"Config","href":"/docs/menu-catalog/endpoints/menu/head-menu"}]},{"tab":"Delivery","groups":[{"group":"Delivery","pages":[{"title":"Delivery","href":"/docs/admin/introduction"},{"group":"Delivery","pages":[{"openapi":"get /admin/deliveries","title":"Listar entregas sin pedido","href":"/docs/admin/delivery/list"},{"openapi":"get /admin/deliveries/{deliveryId}","title":"Consultar entrega sin pedido","href":"/docs/admin/delivery/get"},{"title":"Cotizar entrega sin pedido","openapi":"post /admin/deliveries/quote","href":"/docs/admin/delivery/quote"},{"title":"Consultar cotización y ruta","openapi":"post /admin/deliveries/preview","href":"/docs/admin/delivery/preview"},{"openapi":"post /admin/deliveries","title":"Crear entrega sin pedido","href":"/docs/admin/delivery/create"},{"title":"Despachos de prueba","href":"/docs/admin/delivery/test-dispatches"},{"openapi":"post /admin/deliveries/{deliveryId}/cancel","title":"Cancelar entrega sin pedido","href":"/docs/admin/delivery/cancel"}]}]},{"group":"Última milla","pages":[{"title":"Última milla","href":"/docs/admin/last-mile/introduction"},{"group":"Envíos","pages":[{"title":"Cotizar un envío","openapi":"post /admin/last-mile/quotes","href":"/docs/admin/last-mile/quote"},{"title":"Obtener una cotización","openapi":"get /admin/last-mile/quotes/{quoteId}","description":"Devuelve una cotización con su estado (`open`, `accepted`, `expired`) y, si ya se aceptó, el `deliveryId` de la entrega creada.","href":"/docs/admin/last-mile/get-quote"},{"title":"Crear un envío","openapi":"post /admin/last-mile/deliveries","href":"/docs/admin/last-mile/create-delivery"},{"title":"Probar la integración","description":"Crea envíos de prueba que atiende una flota de repartidores simulada","href":"/docs/admin/last-mile/test-deliveries"}]},{"group":"Webhooks","pages":[{"openapi":"post /deliveries.delivery.updated","title":"Entrega sin pedido actualizada","href":"/docs/admin/last-mile/webhooks/delivery-updated"}]}]}]},{"tab":"Royalty","pages":[{"title":"Royalty","href":"/docs/royalty/endpoints/summary"}]},{"tab":"Servicios","pages":[{"title":"Servicios","href":"/docs/services/introduction"}]}]},{"version":"v2","pages":[{"title":"v2","href":"/docs/old/v2/legacy-documentation"}]}]},"basePath":"","title":"Crear un envío - Justo Docs","buildId":"dpl_41S5Z2jG9QnfDRwN1KZrLdBwj7DM","deploymentId":"dpl_41S5Z2jG9QnfDRwN1KZrLdBwj7DM","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-DDP9JXtj.js","utils-8yQyvEtx.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-CBCFR8Sn.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-rQaXkUHa.js","snippetPresets-J5KpBTgV.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","conditional-requirements-CFM0id0Q.js","ApiExamples-BVxVH4Cj.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-BxdQ2vIi.js","shallow-BjV2tFiD.js","getApiPlaygroundDisplay-C_55tL4O.js","CodeSnippet-C0JpiCOC.js","CodeSnippets-w9Ps7djG.js","Page-DTNSD-0M.js","getPastedJson-BDfB-H8d.js","icon-g-kUkkO9.js","MethodPill-v4l6fq0h.js","DuplicateIcon-CvLo-CfU.js","createIcon-165clrrV.js","DynamicMarkdown-D3RQ-fEj.js","SectionHeading-vvo-3yLf.js","axios-vUo_bRtp.js","Markdown-CMT1uFWQ.js","clsx-C8f2yC9R.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-CI2D8R2Y.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-k78Wrw_e.js"]}