Vista previa para el checkout: dice si el cupón vale para este carrito y cuánto descuenta. No registra ningún canje. El monto que se cobra lo recalcula POST /orders con coupon_code. Un cupón que no vale responde 200 con valid: false y el motivo en message, que se puede mostrar al cliente. Sin customer_phone no se revisa el tope por cliente (se revisa al crear el pedido).
API key del restaurante, generada en el panel de administración (Integraciones → API pública): fd_live_... para producción o fd_test_... para sandbox (modo prueba sobre el mismo restaurante).
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"FoodDelivery API","description":"Documentación de la API pública de FoodDelivery","colors":{"primary":"#EC1A6B","light":"#FFB3D1","dark":"#B5145A"},"logo":{"light":"https://mintcdn.com/food-delivery-cl/7MDkGtzmZNHWDtvR/images/logo-negro.png?fit=max\u0026auto=format\u0026n=7MDkGtzmZNHWDtvR\u0026q=85\u0026s=4b8eaa24e421b368f306d7f3075f28f7","dark":"https://mintcdn.com/food-delivery-cl/7MDkGtzmZNHWDtvR/images/logo-blanco.svg?fit=max\u0026auto=format\u0026n=7MDkGtzmZNHWDtvR\u0026q=85\u0026s=67cd724dfdbdab6244a677477d9d6004","href":"https://fooddelivery.cl"},"favicon":"https://mintcdn.com/food-delivery-cl/7MDkGtzmZNHWDtvR/images/favicon.svg?fit=max\u0026auto=format\u0026n=7MDkGtzmZNHWDtvR\u0026q=85\u0026s=645fbacb734c09658d631d65b9ceace9","navbar":{"links":[{"href":"https://app.fooddelivery.cl","label":"Panel de administración"}],"primary":{"type":"button","label":"Crear cuenta","href":"https://fooddelivery.cl/registro-partner"}},"footer":{"socials":{"website":"https://fooddelivery.cl"}},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"food-delivery-cl","hasAudioNarration":false,"actualSubdomain":"food-delivery-cl","customDomains":["docs.fooddelivery.cl"],"gitSource":{"type":"github","owner":"app-fooddelivery","repo":"fooddelivery","deployBranch":"main","contentDirectory":"apidocs","isPrivate":true,"mountPath":"","label":""},"chroma":{"collectionId":"1cd18894-d578-43cf-bf5e-07a692a4991e","liveDeploymentHistoryId":"6aeb67c45102e32bf6261df8","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6aeb67c45102e32bf6261df8"},"entitlements":{"AI_CHAT":{"status":"DISABLED"}},"buildId":"6aec8ff4dd9d9f5b04d8065c","clientVersion":"0.0.4067","searchFilterCounts":[{"language":"default","tag":"API Pedidos y Menú","count":11},{"language":"default","tag":"Guía de Usuario","count":7},{"language":"default","tag":"Pedidos","count":5},{"language":"default","tag":"Primeros Pasos","count":4},{"language":"default","tag":"Locales","count":3},{"language":"default","tag":"Referencia","count":2},{"language":"default","tag":"Inventario","count":2},{"language":"default","tag":"Guías","count":1},{"language":"default","tag":"Menú","count":1}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"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":"vite-origin","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":"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":"api-reference/pedidos/validar-un-cupón","slug":"/api-reference/pedidos/validar-un-cupón","pageMetadata":{"title":"Validar un cupón","description":"Vista previa para el checkout: dice si el cupón vale para este carrito y cuánto descuenta. No registra ningún canje. El monto que se cobra lo recalcula `POST /orders` con `coupon_code`. Un cupón que no vale responde 200 con `valid: false` y el motivo en `message`, que se puede mostrar al cliente. Sin `customer_phone` no se revisa el tope por cliente (se revisa al crear el pedido).\n","deprecated":null,"version":null,"openapi":"/openapi.yaml post /coupons/validate","href":"/api-reference/pedidos/validar-un-cupón","autogeneratedByOpenApi":true},"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: [\"Vista previa para el checkout: dice si el cupón vale para este carrito y cuánto descuenta. No registra ningún canje. El monto que se cobra lo recalcula \", _jsx(_components.code, {\n children: \"POST /orders\"\n }), \" con \", _jsx(_components.code, {\n children: \"coupon_code\"\n }), \". Un cupón que no vale responde 200 con \", _jsx(_components.code, {\n children: \"valid: false\"\n }), \" y el motivo en \", _jsx(_components.code, {\n children: \"message\"\n }), \", que se puede mostrar al cliente. Sin \", _jsx(_components.code, {\n children: \"customer_phone\"\n }), \" no se revisa el tope por cliente (se revisa al crear el pedido).\"]\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":"Validar un cupón","description":"Vista previa para el checkout: dice si el cupón vale para este carrito y cuánto descuenta. No registra ningún canje. El monto que se cobra lo recalcula `POST /orders` con `coupon_code`. Un cupón que no vale responde 200 con `valid: false` y el motivo en `message`, que se puede mostrar al cliente. Sin `customer_phone` no se revisa el tope por cliente (se revisa al crear el pedido).\n","deprecated":null,"version":null,"openapi":"/openapi.yaml post /coupons/validate","href":"/api-reference/pedidos/validar-un-cupón","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"tags":["Pedidos"],"summary":"Validar un cupón","description":"Vista previa para el checkout: dice si el cupón vale para este carrito y cuánto descuenta. No registra ningún canje. El monto que se cobra lo recalcula `POST /orders` con `coupon_code`. Un cupón que no vale responde 200 con `valid: false` y el motivo en `message`, que se puede mostrar al cliente. Sin `customer_phone` no se revisa el tope por cliente (se revisa al crear el pedido).\n","requestBody":"e678de21-4aed-41e2-a832-b4d286752f9d","responses":{"200":"205cd39f-bb1d-4559-a528-7f279b0cb311","400":"ca5dfc33-4ab5-4cc8-8d42-8975933f32d0","401":"bed36686-1c5e-4071-8cc8-339caf675b6e","404":"d626fbe1-1931-44ea-87f1-d44c6aba6997","429":"fc43eb6a-5a94-40b2-80f4-fc8df4d372b2"},"method":"post","type":"path","servers":["725222fb-0596-4154-97c9-ca346f5c0769"],"security":["56890689-c7e9-45b6-9827-ea03514fce09"],"path":"/coupons/validate","baseUrlOptions":["https://app.fooddelivery.cl/api/v1"],"title":"Validar un cupón","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["code","location_id","subtotal","items"],"properties":{"code":{"type":"string","maxLength":64,"isRequired":true,"uniqueKey":"code","typeLabel":"string"},"location_id":{"type":"string","format":"uuid","isRequired":true,"uniqueKey":"location_id","typeLabel":"string\u003cuuid>"},"subtotal":{"type":"integer","minimum":0,"isRequired":true,"uniqueKey":"subtotal","typeLabel":"integer"},"items":{"type":"array","description":"Carrito; lo usan los cupones acotados a categorías o productos.","items":{"type":"object","required":["product_id","quantity","unit_price"],"properties":{"product_id":{"type":"string","format":"uuid","isRequired":true,"uniqueKey":"\\items.items.[INDEX].product_id","typeLabel":"string\u003cuuid>"},"quantity":{"type":"integer","minimum":0,"isRequired":true,"uniqueKey":"\\items.items.[INDEX].quantity","typeLabel":"integer"},"unit_price":{"type":"integer","minimum":0,"description":"Precio unitario con modificadores, en CLP.","isRequired":true,"uniqueKey":"\\items.items.[INDEX].unit_price","typeLabel":"integer"}},"uniqueKey":"\\items.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"\\items","typeLabel":"object[]"},"shipping_fee":{"type":"integer","minimum":0,"description":"Costo del envío; es el descuento de un cupón de delivery gratis.","uniqueKey":"shipping_fee","typeLabel":"integer"},"customer_phone":{"type":"string","description":"Teléfono del cliente en E.164.","uniqueKey":"customer_phone","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"code":"\u003cstring>","location_id":"3c90c3cc-0d44-4b50-8888-8dd25736052a","subtotal":1,"items":[{"product_id":"3c90c3cc-0d44-4b50-8888-8dd25736052a","quantity":1,"unit_price":1}],"shipping_fee":1,"customer_phone":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"responses":{"205cd39f-bb1d-4559-a528-7f279b0cb311":{"description":"Resultado de la validación.","content":{"application/json":{"schema":{"type":"object","required":["valid"],"properties":{"valid":{"type":"boolean","isRequired":true,"uniqueKey":"valid","typeLabel":"boolean"},"code":{"type":"string","description":"Solo con `valid` true. Código normalizado.","uniqueKey":"code","typeLabel":"string"},"discount_type":{"type":"string","enum":["percentage","fixed_amount","free_delivery"],"uniqueKey":"discount_type","typeLabel":"enum\u003cstring>"},"discount_amount":{"type":"integer","description":"Solo con `valid` true. Descuento en CLP.","uniqueKey":"discount_amount","typeLabel":"integer"},"message":{"type":"string","description":"Solo con `valid` false. Motivo.","uniqueKey":"message","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"valid":true,"code":"\u003cstring>","discount_type":"percentage","discount_amount":123,"message":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"ca5dfc33-4ab5-4cc8-8d42-8975933f32d0":{"description":"Parámetro faltante o con formato inválido.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_request","unauthorized","forbidden","not_found","location_closed","location_inactive","pickup_unavailable","delivery_unavailable","next_day_unavailable","scheduling_unavailable","invalid_scheduled_for","invalid_coupon","insufficient_stock","illegal_transition","managed_by_integrator","state_conflict","payment_unavailable","rate_limited","internal_error"],"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","uniqueKey":"error.message","typeLabel":"string"}},"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"code":"invalid_request","message":"\u003cstring>"}}}},"exampleType":"generated"}},"exampleType":"generated"},"bed36686-1c5e-4071-8cc8-339caf675b6e":{"description":"API key ausente, inválida o revocada.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_request","unauthorized","forbidden","not_found","location_closed","location_inactive","pickup_unavailable","delivery_unavailable","next_day_unavailable","scheduling_unavailable","invalid_scheduled_for","invalid_coupon","insufficient_stock","illegal_transition","managed_by_integrator","state_conflict","payment_unavailable","rate_limited","internal_error"],"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","uniqueKey":"error.message","typeLabel":"string"}},"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"code":"invalid_request","message":"\u003cstring>"}}}},"exampleType":"generated"}},"exampleType":"generated"},"d626fbe1-1931-44ea-87f1-d44c6aba6997":{"description":"El recurso no existe o pertenece a otro restaurante.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_request","unauthorized","forbidden","not_found","location_closed","location_inactive","pickup_unavailable","delivery_unavailable","next_day_unavailable","scheduling_unavailable","invalid_scheduled_for","invalid_coupon","insufficient_stock","illegal_transition","managed_by_integrator","state_conflict","payment_unavailable","rate_limited","internal_error"],"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","uniqueKey":"error.message","typeLabel":"string"}},"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"code":"invalid_request","message":"\u003cstring>"}}}},"exampleType":"generated"}},"exampleType":"generated"},"fc43eb6a-5a94-40b2-80f4-fc8df4d372b2":{"description":"Límite de peticiones excedido; ver header `Retry-After`.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_request","unauthorized","forbidden","not_found","location_closed","location_inactive","pickup_unavailable","delivery_unavailable","next_day_unavailable","scheduling_unavailable","invalid_scheduled_for","invalid_coupon","insufficient_stock","illegal_transition","managed_by_integrator","state_conflict","payment_unavailable","rate_limited","internal_error"],"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","uniqueKey":"error.message","typeLabel":"string"}},"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"code":"invalid_request","message":"\u003cstring>"}}}},"exampleType":"generated"}},"exampleType":"generated"}},"security":{"56890689-c7e9-45b6-9827-ea03514fce09":{"apiKey":{"type":"http","scheme":"bearer","description":"API key del restaurante, generada en el panel de administración (Integraciones → API pública): `fd_live_...` para producción o `fd_test_...` para sandbox (modo prueba sobre el mismo restaurante).\n","scopes":[],"schemeName":"apiKey"}}},"servers":{"725222fb-0596-4154-97c9-ca346f5c0769":{"url":"https://app.fooddelivery.cl/api/v1"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"http","scheme":"bearer","description":"API key del restaurante, generada en el panel de administración (Integraciones → API pública): `fd_live_...` para producción o `fd_test_...` para sandbox (modo prueba sobre el mismo restaurante).\n","scopes":[],"schemeName":"apiKey"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"API key del restaurante, generada en el panel de administración (Integraciones → API pública): `fd_live_...` para producción o `fd_test_...` para sandbox (modo prueba sobre el mismo restaurante).\n","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"apiKey","name":"Authorization"}],"title":"apiKey"}]},"originalFileLocation":"openapi.yaml"},"subdomain":"food-delivery-cl","siteName":"FoodDelivery API","title":"Validar un cupón - FoodDelivery API","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-11-05T14:17:29.109Z","originalFileLocation":"api-reference/pedidos/validar-un-cupón.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=\"Vista previa para el checkout: dice si el cupón vale para este carrito y cuánto descuenta. No registra ningún canje. El monto que se cobra lo recalcula POST /orders con coupon_code. Un cupón que no vale responde 200 con valid: false y el motivo en message, que se puede mostrar al cliente. Sin customer_phone no se revisa el tope por cliente (se revisa al crear el pedido).\">\u003cmeta data-mint-head name=\"application-name\" content=\"FoodDelivery 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/food-delivery-cl/aVKCvtEKuMTVp29R/_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/food-delivery-cl/aVKCvtEKuMTVp29R/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/food-delivery-cl/aVKCvtEKuMTVp29R/_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/food-delivery-cl/aVKCvtEKuMTVp29R/_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/food-delivery-cl/aVKCvtEKuMTVp29R/_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/food-delivery-cl/aVKCvtEKuMTVp29R/_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/food-delivery-cl/aVKCvtEKuMTVp29R/_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/food-delivery-cl/aVKCvtEKuMTVp29R/_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/food-delivery-cl/aVKCvtEKuMTVp29R/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Validar un cupón - FoodDelivery API\">\u003cmeta data-mint-head property=\"og:description\" content=\"Vista previa para el checkout: dice si el cupón vale para este carrito y cuánto descuenta. No registra ningún canje. El monto que se cobra lo recalcula POST /orders con coupon_code. Un cupón que no vale responde 200 con valid: false y el motivo en message, que se puede mostrar al cliente. Sin customer_phone no se revisa el tope por cliente (se revisa al crear el pedido).\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"FoodDelivery API\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.fooddelivery.cl/api-reference/pedidos/validar-un-cupón\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://food-delivery-cl.mintlify.app/_mintlify/api/og/v2?division=Pedidos\u0026amp;title=Validar+un+cup%C3%B3n\u0026amp;description=Vista+previa+para+el+checkout%3A+dice+si+el+cup%C3%B3n+vale+para+este+carrito+y+cu%C3%A1nto+descuenta.+No+registra+ning%C3%BAn+canje.+El+monto+que+se+cobra+lo+recalcula+%60POST+%2Fo\u0026amp;theme=d3db3104c98001b39492a62e\u0026amp;signature=39f3fc57384e14ec47033e41fd2ac0402e9137a9057bc8fd086256aa57daee06\">\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=\"Validar un cupón - FoodDelivery API\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Vista previa para el checkout: dice si el cupón vale para este carrito y cuánto descuenta. No registra ningún canje. El monto que se cobra lo recalcula POST /orders con coupon_code. Un cupón que no vale responde 200 con valid: false y el motivo en message, que se puede mostrar al cliente. Sin customer_phone no se revisa el tope por cliente (se revisa al crear el pedido).\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://food-delivery-cl.mintlify.app/_mintlify/api/og/v2?division=Pedidos\u0026amp;title=Validar+un+cup%C3%B3n\u0026amp;description=Vista+previa+para+el+checkout%3A+dice+si+el+cup%C3%B3n+vale+para+este+carrito+y+cu%C3%A1nto+descuenta.+No+registra+ning%C3%BAn+canje.+El+monto+que+se+cobra+lo+recalcula+%60POST+%2Fo\u0026amp;theme=d3db3104c98001b39492a62e\u0026amp;signature=39f3fc57384e14ec47033e41fd2ac0402e9137a9057bc8fd086256aa57daee06\">\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/food-delivery-cl/aVKCvtEKuMTVp29R/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"FoodDelivery API\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#EC1A6B\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.fooddelivery.cl/api-reference/pedidos/validar-un-cupón\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/pedidos/validar-un-cup%C3%B3n.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.fooddelivery.cl/#organization\",\"name\":\"FoodDelivery API\",\"url\":\"https://docs.fooddelivery.cl\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/food-delivery-cl/7MDkGtzmZNHWDtvR/images/logo-negro.png?fit=max\u0026auto=format\u0026n=7MDkGtzmZNHWDtvR\u0026q=85\u0026s=4b8eaa24e421b368f306d7f3075f28f7\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.fooddelivery.cl#website\",\"name\":\"FoodDelivery API\",\"url\":\"https://docs.fooddelivery.cl\",\"publisher\":{\"@id\":\"https://docs.fooddelivery.cl/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.fooddelivery.cl/api-reference/pedidos/validar-un-cup%C3%B3n#webpage\",\"url\":\"https://docs.fooddelivery.cl/api-reference/pedidos/validar-un-cup%C3%B3n\",\"name\":\"Validar un cupón\",\"description\":\"Vista previa para el checkout: dice si el cupón vale para este carrito y cuánto descuenta. No registra ningún canje. El monto que se cobra lo recalcula POST /orders con coupon_code. Un cupón que no vale responde 200 con valid: false y el motivo en message, que se puede mostrar al cliente. Sin customer_phone no se revisa el tope por cliente (se revisa al crear el pedido).\",\"dateModified\":\"2026-11-05T14:17:29.109Z\",\"isPartOf\":{\"@id\":\"https://docs.fooddelivery.cl#website\"},\"breadcrumb\":{\"@id\":\"https://docs.fooddelivery.cl/api-reference/pedidos/validar-un-cup%C3%B3n#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.fooddelivery.cl/api-reference/pedidos/validar-un-cup%C3%B3n#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Pedidos\",\"item\":\"https://docs.fooddelivery.cl/api-reference/pedidos/listar-pedidos\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Validar un cupón\",\"item\":\"https://docs.fooddelivery.cl/api-reference/pedidos/validar-un-cup%C3%B3n\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.fooddelivery.cl/api-reference/pedidos/validar-un-cup%C3%B3n#apireference\",\"headline\":\"Validar un cupón\",\"name\":\"Validar un cupón\",\"description\":\"Vista previa para el checkout: dice si el cupón vale para este carrito y cuánto descuenta. No registra ningún canje. El monto que se cobra lo recalcula POST /orders con coupon_code. Un cupón que no vale responde 200 con valid: false y el motivo en message, que se puede mostrar al cliente. Sin customer_phone no se revisa el tope por cliente (se revisa al crear el pedido).\",\"url\":\"https://docs.fooddelivery.cl/api-reference/pedidos/validar-un-cup%C3%B3n\",\"mainEntityOfPage\":{\"@id\":\"https://docs.fooddelivery.cl/api-reference/pedidos/validar-un-cup%C3%B3n#webpage\"},\"dateModified\":\"2026-11-05T14:17:29.109Z\",\"publisher\":{\"@id\":\"https://docs.fooddelivery.cl/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.fooddelivery.cl#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"FoodDelivery API\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"FoodDelivery API","nav":{"global":null,"tabs":[{"tab":"Guía de Usuario","pages":[{"title":"Guía de Usuario","href":"/introduccion"}]},{"tab":"API Pedidos y Menú","groups":[{"group":"Pedidos","pages":[{"title":"Listar pedidos","deprecated":null,"version":null,"openapi":"/openapi.yaml get /orders","href":"/api-reference/pedidos/listar-pedidos"},{"title":"Crear un pedido","deprecated":null,"version":null,"openapi":"/openapi.yaml post /orders","href":"/api-reference/pedidos/crear-un-pedido"},{"title":"Obtener un pedido","deprecated":null,"version":null,"openapi":"/openapi.yaml get /orders/{order_id}","href":"/api-reference/pedidos/obtener-un-pedido"},{"title":"Cambiar el estado de un pedido","deprecated":null,"version":null,"openapi":"/openapi.yaml patch /orders/{order_id}","href":"/api-reference/pedidos/cambiar-el-estado-de-un-pedido"},{"title":"Cotizar el envío a una dirección","description":"Cotiza el reparto con el mismo motor del checkout de FoodDelivery: reparto propio si la sucursal lo tiene activado (validando cobertura), o Uber Direct / PedidosYa según la preferencia del local, con las reglas de subsidio de envío aplicadas. `fee` es lo que paga el cliente final: úsalo como `shipping_fee` al crear el pedido. Enviar `latitude`/`longitude` mejora la precisión y es obligatorio para validar cobertura de reparto propio.\n\nCon `mode: \"next_day\"` devuelve además la ventana de entrega del próximo día hábil (`delivery_window`, `delivery_window_start/end`, `scheduled_for`). El `fee` es el precio del courier al momento de cotizar (sin `expires`): crea el pedido con ese mismo `shipping_fee` y `delivery_mode: \"next_day\"`.\n","deprecated":null,"version":null,"openapi":"/openapi.yaml post /delivery/quote","href":"/api-reference/pedidos/cotizar-el-envío-a-una-dirección"},{"title":"Validar un cupón","deprecated":null,"version":null,"openapi":"/openapi.yaml post /coupons/validate","href":"/api-reference/pedidos/validar-un-cupón"}]},{"group":"Locales","pages":[{"title":"Listar sucursales con su estado","description":"Sucursales del restaurante con su estado abierto/cerrado en vivo. `register_mode` indica cómo se gestiona la apertura: `manual` (caja del día) o `schedule` (horario semanal + excepciones). Cada sucursal trae además su horario (`schedule`) y las reglas de pedidos programados (`scheduling`), para armar un selector de día y hora y crear el pedido con `scheduled_for`. `pickup_enabled` y `delivery_enabled` dicen qué modalidades toma cada sucursal: una bodega de despacho no tiene retiro, un local \"solo retiro\" no despacha.\n","deprecated":null,"version":null,"openapi":"/openapi.yaml get /locations","href":"/api-reference/locales/listar-sucursales-con-su-estado"},{"title":"Abrir la sucursal ahora","deprecated":null,"version":null,"openapi":"/openapi.yaml post /locations/{location_id}/open","href":"/api-reference/locales/abrir-la-sucursal-ahora"},{"title":"Cerrar la sucursal ahora","deprecated":null,"version":null,"openapi":"/openapi.yaml post /locations/{location_id}/close","href":"/api-reference/locales/cerrar-la-sucursal-ahora"}]},{"group":"Menú","pages":[{"title":"Obtener el menú","deprecated":null,"version":null,"openapi":"/openapi.yaml get /menu","href":"/api-reference/menú/obtener-el-menú"}]},{"group":"Inventario","pages":[{"title":"Consultar stock por sucursal","deprecated":null,"version":null,"openapi":"/openapi.yaml get /stock","href":"/api-reference/inventario/consultar-stock-por-sucursal"},{"title":"Actualizar stock por sucursal","deprecated":null,"version":null,"openapi":"/openapi.yaml put /stock","href":"/api-reference/inventario/actualizar-stock-por-sucursal"}]}]}]},"basePath":"","title":"Validar un cupón - FoodDelivery API","buildId":"dpl_9VVk5y1P8k1ATeJguVngy9Q3cmbD","deploymentId":"dpl_9VVk5y1P8k1ATeJguVngy9Q3cmbD","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-DX1Meug0.js","utils-B_OMIQVC.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-ChxhRPMa.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-CuKvD8Iv.js","snippetPresets-C5d7p2hp.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-CfHcE8m4.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-C1zZV314.js","shallow-CmQhqCJn.js","getApiPlaygroundDisplay-YRo9s1O7.js","CodeSnippet-RN1MTdfk.js","CodeSnippets-DKLPHxJA.js","Page-BAvA99GL.js","getPastedJson-bz0M41mU.js","icon-CsmhpPrv.js","MethodPill-CNGsVE77.js","DuplicateIcon-DilfU_Z2.js","createIcon-BdsYzQck.js","DynamicMarkdown-CbqEDjbV.js","SectionHeading-O6hXpFCN.js","axios-vUo_bRtp.js","Markdown-nKm-uidQ.js","clsx-ClVdStUn.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-CIQkMg3R.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-ImrFS4Fy.js"]}