{"componentChunkName":"component---src-templates-article-template-tsx","path":"/co/card-present-payments/kushki-one/printing","result":{"data":{"article":{"title":"Impresión en terminal SmartPOS","subtitle":null,"fullWidth":null,"hero":null,"heroTextColor":null,"heroImg":null,"content":[{"body":{"childMdx":{"body":"var _excluded = [\"components\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n/* @jsxRuntime classic */\n/* @jsx mdx */\n\nvar _frontmatter = {};\nvar makeShortcode = function makeShortcode(name) {\n  return function MDXDefaultShortcode(props) {\n    console.warn(\"Component \" + name + \" was not imported, exported, or provided by MDXProvider as global scope\");\n    return mdx(\"div\", props);\n  };\n};\nvar Aside = makeShortcode(\"Aside\");\nvar CodeTabs = makeShortcode(\"CodeTabs\");\nvar NextStep = makeShortcode(\"NextStep\");\nvar layoutProps = {\n  _frontmatter: _frontmatter\n};\nvar MDXLayout = \"wrapper\";\nreturn function MDXContent(_ref) {\n  var components = _ref.components,\n    props = _objectWithoutProperties(_ref, _excluded);\n  return mdx(MDXLayout, _extends({}, layoutProps, props, {\n    components: components,\n    mdxType: \"MDXLayout\"\n  }), mdx(Aside, {\n    title: \"\\uD83D\\uDEA7 Early Release \\u2014 Beta\",\n    type: \"danger\",\n    mdxType: \"Aside\"\n  }, mdx(\"p\", null, mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Esta documentaci\\xF3n est\\xE1 en acceso temprano\"), \". Los par\\xE1metros, estructuras de respuesta y comportamientos pueden cambiar sin previo aviso. \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"No\"), \" uses esta versi\\xF3n en producci\\xF3n sin coordinarlo previamente con el equipo de integraciones de Kushki.\")), mdx(\"h1\", {\n    \"id\": \"impresión-en-terminal-smartpos\",\n    \"style\": {\n      \"position\": \"relative\"\n    }\n  }, mdx(\"a\", {\n    parentName: \"h1\",\n    \"href\": \"#impresi%C3%B3n-en-terminal-smartpos\",\n    \"aria-label\": \"impresión en terminal smartpos permalink\",\n    \"className\": \"anchor before\"\n  }, mdx(\"svg\", {\n    parentName: \"a\",\n    \"aria-hidden\": \"true\",\n    \"focusable\": \"false\",\n    \"height\": \"16\",\n    \"version\": \"1.1\",\n    \"viewBox\": \"0 0 16 16\",\n    \"width\": \"16\"\n  }, mdx(\"path\", {\n    parentName: \"svg\",\n    \"fillRule\": \"evenodd\",\n    \"d\": \"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\n  }))), \"Impresi\\xF3n en terminal SmartPOS\"), mdx(\"p\", null, \"La \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Print API\"), \" te da control total sobre la impresora t\\xE9rmica integrada en los terminales Kushki ONE (Sunmi P3, Sunmi P2 SE). Puedes imprimir cualquier contenido desde tu sistema de caja \\u2014 antes, durante o despu\\xE9s de una transacci\\xF3n, o completamente independiente de una \\u2014 sin necesidad de drivers, SDKs ni configuraci\\xF3n de hardware en tu lado.\"), mdx(\"h2\", {\n    \"id\": \"cómo-funciona\",\n    \"style\": {\n      \"position\": \"relative\"\n    }\n  }, mdx(\"a\", {\n    parentName: \"h2\",\n    \"href\": \"#c%C3%B3mo-funciona\",\n    \"aria-label\": \"cómo funciona permalink\",\n    \"className\": \"anchor before\"\n  }, mdx(\"svg\", {\n    parentName: \"a\",\n    \"aria-hidden\": \"true\",\n    \"focusable\": \"false\",\n    \"height\": \"16\",\n    \"version\": \"1.1\",\n    \"viewBox\": \"0 0 16 16\",\n    \"width\": \"16\"\n  }, mdx(\"path\", {\n    parentName: \"svg\",\n    \"fillRule\": \"evenodd\",\n    \"d\": \"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\n  }))), \"C\\xF3mo funciona\"), mdx(\"p\", null, \"El ciclo de impresi\\xF3n tiene dos partes: un \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"request s\\xEDncrono\"), \" que encola el\\ntrabajo, y una \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"notificaci\\xF3n as\\xEDncrona\"), \" que te informa cuando termin\\xF3.\"), mdx(\"p\", null, mdx(\"span\", {\n    parentName: \"p\",\n    \"className\": \"gatsby-resp-image-wrapper\",\n    \"style\": {\n      \"position\": \"relative\",\n      \"display\": \"block\",\n      \"maxWidth\": \"1200px\",\n      \"marginLeft\": \"auto\",\n      \"marginRight\": \"auto\"\n    }\n  }, \"\\n        \", mdx(\"span\", {\n    parentName: \"span\",\n    \"className\": \"gatsby-resp-image-background-image\",\n    \"style\": {\n      \"paddingBottom\": \"54.166666666666664%\",\n      \"position\": \"relative\",\n      \"bottom\": \"0\",\n      \"left\": \"0\",\n      \"backgroundImage\": \"url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAWCAMAAACFUC6CAAACPVBMVEXo7e7n7e3o7u7p7+/p7u/o7u/n7e719vjt7/LZ3OLc3+Td4OXa3eLa3ePp6+/d3+Tb3uPW2d/h5Oj09vj09ffz9ffw8vTo6u3n6ezk5+rm6ezl6Ovl6Orm6evl5+ru8fPz9Pby9Pbx9Pbv8/Tc8+3x9vbv8vP09vf3+vnx9PXz9Pfh8u7n9fL2+fnz9vbe8u3r9vTx8/Tw8/T4+vry9fbw9PXr+vb19/fq7O709fb9/v7x9fbq9vP0/Prx8vPv8fL+/v71+Pjq9/T1+/nu7/H09/fw8/Xz9fby9ffx9Pfw8/fw9Pfy9Pfq7vPk6vLc4uvb4erg5e7n7PPt8fPn7+/s8vPv7vDv8PHw8fPw8PLz5ufx3uDu2tvu2tzt2Nnu29zz4uTx6+zw8vPx8fPl7e3p8fHx8/br7O3t7vDr7vLa4Onf5e3n6/Lu8PLn7u7q8vLv8vTv8/Xv8vXr8fLt8/Pw8vbw8/bp7/fk6/Xd5fDc5O/d5e/d5O/l7Pbs8PXv8vbu8fbt8fbk7Pfo7fP19vfr8fjo7fLs7vDy9fjy9fnt8vfp7vTo7PPq7/Xq8Pju8vjx8/X18ur28OH17d/17t/28ePz8/Lw8fDo6+ns8PLn7fPh6O/e5ezg5+3i6e/t8fLp7vPv8/bw7u7x8PDy8vP07+X17Nr06tj06df27t3y8e7y8vTz7+jz8evy8/P6+/74+fv29/j3+Pn8/f38/P36+vv29/f3+Pj4+fn2+Pn29/n19/j3+Prv8fTu8fSW/hpoAAACIUlEQVQYGW3BPWgTYQDH4d8/eS9pkmv6cQn2Q0lLpZUWERLBpYOCWgexCOKkq3RyFAVXwcXByUGdXNwqrlm6CjaDWMSAYECt1Fxb6Wta02tf0ysFLT6PQELaTcrBDmab/1NaMSRtk5LE/5m8JCRFMtspqUVOdFj25QRyFgyuW7HmDltAUVrJ5EXM5nq0BzDQr1iTWOuo+iVtEFMgbcsLIXmkHWWaQytba21iqY2B5V+sRezxtJ74vbbaikCnGxTZ2oCK5BK7vIUzS7a4Scxlf/hk2ITkyY3UemuqlU4PJDs8b2RtMjf8+URITFE7xXoCULHbWc7pX6/wISAErI/1AcP5KvTpA5NfxbCkd5wSjFOzUIYa+wxVoHkszacpAW4pjSfwqCxSMbyhIwhBM3XGa77lL/41oX1tR9f3eUohyb5N6J3+0i71jg0uUx5MjS2nJ3Ke5ymRkDEm6uoZff8zhcGWCKE0EEEFKDRx8xYX3IQXhDp+WUO+BROEYTABhegsAtxCoYHonlNjZPNGdudJPqMHKoUY5BqNS1VMRkLoymvuqHpR6lMfiu6mJJXroJlS1fJIQh2OhNpp6amj5hCUPwqsD5iwTqmw+pipaQS4BRPdYhEQHTXwiWmUjgtVYAqIgEUf63PA+lgf0Kjtb1KAJlBY9YEgJAg5YP2gAeW6Rr+91IGH9+Y4ZLxOzCbIZ7PXM27Xu2qS929zWE3PZmdnn4s/btmzzt++WYkAAAAASUVORK5CYII=')\",\n      \"backgroundSize\": \"cover\",\n      \"display\": \"block\"\n    }\n  }, \"\\n          \", mdx(\"picture\", {\n    parentName: \"span\"\n  }, \"\\n          \", mdx(\"source\", {\n    parentName: \"picture\",\n    \"srcSet\": [\"https://images.ctfassets.net/mmjbm94f6iyd/7FE4bFNpEwV30nZ4QmDO82/56690d29ec7ef1bdcae3bd6b15514894/Print_API-Sequence-Diagram.png?w=360&fm=webp 360w\", \"https://images.ctfassets.net/mmjbm94f6iyd/7FE4bFNpEwV30nZ4QmDO82/56690d29ec7ef1bdcae3bd6b15514894/Print_API-Sequence-Diagram.png?w=720&fm=webp 720w\", \"https://images.ctfassets.net/mmjbm94f6iyd/7FE4bFNpEwV30nZ4QmDO82/56690d29ec7ef1bdcae3bd6b15514894/Print_API-Sequence-Diagram.png?w=1440&fm=webp 1440w\"],\n    \"sizes\": \"(max-width: 1200px) 100vw, 1200px\",\n    \"type\": \"image/webp\"\n  }), \"\\n          \", mdx(\"source\", {\n    parentName: \"picture\",\n    \"srcSet\": [\"https://images.ctfassets.net/mmjbm94f6iyd/7FE4bFNpEwV30nZ4QmDO82/56690d29ec7ef1bdcae3bd6b15514894/Print_API-Sequence-Diagram.png?w=360 360w\", \"https://images.ctfassets.net/mmjbm94f6iyd/7FE4bFNpEwV30nZ4QmDO82/56690d29ec7ef1bdcae3bd6b15514894/Print_API-Sequence-Diagram.png?w=720 720w\", \"https://images.ctfassets.net/mmjbm94f6iyd/7FE4bFNpEwV30nZ4QmDO82/56690d29ec7ef1bdcae3bd6b15514894/Print_API-Sequence-Diagram.png?w=1440 1440w\"],\n    \"sizes\": \"(max-width: 1200px) 100vw, 1200px\"\n  }), \"\\n          \", mdx(\"img\", {\n    parentName: \"picture\",\n    \"className\": \"gatsby-resp-image-image\",\n    \"style\": {\n      \"width\": \"100%\",\n      \"height\": \"100%\",\n      \"margin\": \"0\",\n      \"verticalAlign\": \"middle\",\n      \"position\": \"absolute\",\n      \"top\": \"0\",\n      \"left\": \"0\",\n      \"boxShadow\": \"inset 0px 0px 0px 400px transparent\"\n    },\n    \"alt\": \"Print diagram\",\n    \"title\": \"\",\n    \"src\": \"https://images.ctfassets.net/mmjbm94f6iyd/7FE4bFNpEwV30nZ4QmDO82/56690d29ec7ef1bdcae3bd6b15514894/Print_API-Sequence-Diagram.png\",\n    \"loading\": \"lazy\"\n  }), \"\\n        \"), \"\\n        \"), \"\\n      \")), mdx(\"ol\", null, mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Tu sistema de caja construye un arreglo \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"commands\"), \" con el dise\\xF1o del ticket.\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Env\\xEDas el request de creaci\\xF3n del trabajo \\u2014 la terminal responde \", mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"202 Accepted\"), \" de forma inmediata.\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"La impresi\\xF3n se ejecuta de forma as\\xEDncrona en el hardware.\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Conoce el resultado final (\", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"COMPLETED\"), \" o \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"FAILED\"), \") de dos formas:\", mdx(\"ul\", {\n    parentName: \"li\"\n  }, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Webhook (push):\"), \" la terminal notifica a la \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"webhookUrl\"), \" que definiste en el request.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Polling (pull):\"), \" consulta el estado activamente con \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"GET /terminal/v1/print_job?print_job_id={id}\"), \".\")))), mdx(\"p\", null, \"La estructura del request y la respuesta es id\\xE9ntica en ambos modos de conexi\\xF3n.\\nLo que var\\xEDa es \\xFAnicamente el base URL:\"), mdx(\"table\", null, mdx(\"thead\", {\n    parentName: \"table\"\n  }, mdx(\"tr\", {\n    parentName: \"thead\"\n  }, mdx(\"th\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Topolog\\xEDa\"), mdx(\"th\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Base URL\"))), mdx(\"tbody\", {\n    parentName: \"table\"\n  }, mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Red Local (LAN / Wi-Fi)\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"http://{TERMINAL_IP}:6868/terminal/v1\"))), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Nube (Internet) \\u2014 UAT\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"https://uat-cloudt.kushkipagos.com/terminal/v1/{terminalSerial}/sync\"))), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Nube (Internet) \\u2014 Producci\\xF3n\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"https://cloudt.kushkipagos.com/terminal/v1/{terminalSerial}/sync\"))))), mdx(Aside, {\n    type: \"info\",\n    mdxType: \"Aside\"\n  }, mdx(\"p\", null, \"\\xBFNo sabes qu\\xE9 topolog\\xEDa usar? Revisa la secci\\xF3n\\n\", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"/card-present-payments/kushki-one/kushki-one-primeros-pasos#topolog%C3%ADas-de-integraci%C3%B3n-v%C3%ADas-de-comunicaci%C3%B3n\"\n  }, \"Topolog\\xEDas de integraci\\xF3n\"), \"\\nen Primeros Pasos antes de continuar.\")), mdx(Aside, {\n    type: \"info\",\n    mdxType: \"Aside\"\n  }, mdx(\"p\", null, \"El arreglo \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"commands\"), \" es un lienzo en blanco. No est\\xE1s limitado a ninguna\\nplantilla ni formato predefinido. Combina texto, im\\xE1genes, c\\xF3digos QR, c\\xF3digos\\nde barras, columnas y separadores en el orden que tu negocio necesite.\")), mdx(\"h2\", {\n    \"id\": \"casos-de-uso\",\n    \"style\": {\n      \"position\": \"relative\"\n    }\n  }, mdx(\"a\", {\n    parentName: \"h2\",\n    \"href\": \"#casos-de-uso\",\n    \"aria-label\": \"casos de uso permalink\",\n    \"className\": \"anchor before\"\n  }, mdx(\"svg\", {\n    parentName: \"a\",\n    \"aria-hidden\": \"true\",\n    \"focusable\": \"false\",\n    \"height\": \"16\",\n    \"version\": \"1.1\",\n    \"viewBox\": \"0 0 16 16\",\n    \"width\": \"16\"\n  }, mdx(\"path\", {\n    parentName: \"svg\",\n    \"fillRule\": \"evenodd\",\n    \"d\": \"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\n  }))), \"Casos de uso\"), mdx(\"p\", null, \"La API no est\\xE1 limitada a comprobantes de pago. Cualquier contenido que tu negocio necesite entregar en papel puede dispararse desde tu sistema de caja:\"), mdx(\"table\", null, mdx(\"thead\", {\n    parentName: \"table\"\n  }, mdx(\"tr\", {\n    parentName: \"thead\"\n  }, mdx(\"th\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Caso de uso\"), mdx(\"th\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Descripci\\xF3n\"))), mdx(\"tbody\", {\n    parentName: \"table\"\n  }, mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, mdx(\"strong\", {\n    parentName: \"td\"\n  }, \"Comprobante de pago\")), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Cobro directo, captura de pre-autorizaci\\xF3n, devoluci\\xF3n o anulaci\\xF3n\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, mdx(\"strong\", {\n    parentName: \"td\"\n  }, \"Cup\\xF3n de descuento\")), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Imprime un c\\xF3digo de descuento para la pr\\xF3xima compra del cliente\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, mdx(\"strong\", {\n    parentName: \"td\"\n  }, \"C\\xF3digo QR\")), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Contrase\\xF1a de Wi-Fi, enlace a programa de fidelizaci\\xF3n, recibo digital, informaci\\xF3n de producto\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, mdx(\"strong\", {\n    parentName: \"td\"\n  }, \"Mensaje de agradecimiento\")), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Mensaje de marca personalizado al final del recibo\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, mdx(\"strong\", {\n    parentName: \"td\"\n  }, \"Fidelizaci\\xF3n y promociones\")), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Saldo de puntos, niveles de recompensa, ofertas especiales\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, mdx(\"strong\", {\n    parentName: \"td\"\n  }, \"Pre-cuenta o resumen de orden\")), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Ticket de cocina o resumen de mesa antes del cobro final\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, mdx(\"strong\", {\n    parentName: \"td\"\n  }, \"Constancia de reverso o anulaci\\xF3n\")), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Comprobante impreso de una cancelaci\\xF3n o reembolso\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, mdx(\"strong\", {\n    parentName: \"td\"\n  }, \"Reimpresi\\xF3n\")), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Vuelve a imprimir cualquier ticket anterior usando el mismo \", mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"printJobId\"))), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, mdx(\"strong\", {\n    parentName: \"td\"\n  }, \"Contenido libre\")), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Cualquier texto, imagen, QR o c\\xF3digo de barras \\u2014 sin necesidad de una transacci\\xF3n\")))), mdx(\"h2\", {\n    \"id\": \"anatomía-de-un-ticket\",\n    \"style\": {\n      \"position\": \"relative\"\n    }\n  }, mdx(\"a\", {\n    parentName: \"h2\",\n    \"href\": \"#anatom%C3%ADa-de-un-ticket\",\n    \"aria-label\": \"anatomía de un ticket permalink\",\n    \"className\": \"anchor before\"\n  }, mdx(\"svg\", {\n    parentName: \"a\",\n    \"aria-hidden\": \"true\",\n    \"focusable\": \"false\",\n    \"height\": \"16\",\n    \"version\": \"1.1\",\n    \"viewBox\": \"0 0 16 16\",\n    \"width\": \"16\"\n  }, mdx(\"path\", {\n    parentName: \"svg\",\n    \"fillRule\": \"evenodd\",\n    \"d\": \"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\n  }))), \"Anatom\\xEDa de un ticket\"), mdx(\"p\", null, \"Cada secci\\xF3n visual del recibo corresponde a un tipo de comando en el arreglo \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"commands\"), \". La siguiente imagen muestra c\\xF3mo mapear el dise\\xF1o del ticket a los comandos de la API:\"), mdx(\"p\", null, mdx(\"span\", {\n    parentName: \"p\",\n    \"className\": \"gatsby-resp-image-wrapper\",\n    \"style\": {\n      \"position\": \"relative\",\n      \"display\": \"block\",\n      \"maxWidth\": \"832px\",\n      \"marginLeft\": \"auto\",\n      \"marginRight\": \"auto\"\n    }\n  }, \"\\n        \", mdx(\"span\", {\n    parentName: \"span\",\n    \"className\": \"gatsby-resp-image-background-image\",\n    \"style\": {\n      \"paddingBottom\": \"92.3076923076923%\",\n      \"position\": \"relative\",\n      \"bottom\": \"0\",\n      \"left\": \"0\",\n      \"backgroundImage\": \"url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAlCAYAAAAwYKuzAAAGxElEQVRYw52Y247jyA2GP7KqJMvuntnZxQLZAMlF3v8p8gB5giR3k4tgsbs93e1TVZG5KFmWbbWnOwIE2JKKxcNP8mfJP37/+q8Y4t/AaZewfC29/96a+5ef1vvVCwFBKLX8O/6iD8QQp49FpC0QcHcEwXFUBHeoVlHR9t0ozMxQ0Umwu0/v2m9B5GyGuYO3vRy/VXDUo3ghrjWRNPGy3fL1638RFcyMEAJmxjCseN3u+Py4oVTDzdkfDpRS+fS44csPn3h6ema3P0yG5VIIqmzWAy+vWzbrgd1uD6NRuRSCKH/9yy+sVz0utxoKQlEhOmA4MUa+/Pg4s0BxN1SVYdURQsDdCVFZ5x6AGAIIbB4G+j7NoqDgTgiB1aojBKXrIgDr9YB70zWlFjlfCLGP0uLpmQZlWPVT6ESYFrZHzbPuzrDqUA3jf6NLkRQD7qAqiAjZK9WdIAHcibFDVYmrvsXaIeNkryiQCBMcZYbSCN48o8p6vcYI+BXoJ7zNAX5ltlgh6NmyEgpER1GOXvmkHYNEzO3aWTznjBYnLCRbnP8xd4oLqJ6fmVNymfBj1sLepTiZ6sC3w5bHPjVo4IhDv62kIEguSIB+04HojRJ7rTe+W1SwbXbe9RRa0cCUtGMGOzDHtiLTbQjkHevqqDs9gBt1v50MnXvQywGR1RT6uwoOsiMI+FgyKhWCz0DZpKiEyWAZLUqEsUw5WgvJC3hEQiBuPs8293nBY8gHjvhiOY2X1ji97AhSx8XC67df2b48Nc+p4mZoCHz56U9ISuNexnb/TJUfUdWGT4NXXaMEogSCyyxbhctfslzqHeKlS4VSE25xRIQQ+p8Z9AfcrYV2LB+VFeTzyixCFwdQAXOOuSKeMIPdwXDLxNQyuinqkwe3L0fiQ4dcNyWBOH/gDjsbxm7QntVakdAwhzsiwhHYZ9BTMjnsiqHFUQWrTogRoSAqKI6oIWKIKimlyyTpVmdsXuXKZYgFVG1qdw4c82FS/lS4AWKMhBBHgcJ6E+h7bVlsTjkaGlo50uCUUsnZR9nhMpTaIW+083hZ21rUqtk5An0rrHqVYNWh1FbTVLVl7glLKmQyh2IXOXGqp9vn42Umq7Bm9X0FEajDAVefALzLB475iIgw9AMv2xfcncfNA1Fbe6vA9rctqTy2RHLHNOMYKUZyyagGftp8Jmq4ymPh99dnzK11nask0fuEqLGQUgvVKqJCrnn8rVPVdHxqg6dbENbSs6Kjt4619Hx7eiGXOqol59yVN7e/wqCD7jsq3rINoZdEHx7bplvh5/TntnJ7zkYVZROULnaotoSyXFuvtYIHMKu4wtPu9aaoVHeGqO/AoIDHiqhPGNzt9uSSedg8YG68brfgsB4GYpcacMXxYx192TYf0nDTr78XqSVeGG+/9cbPTgRTHRdrN45RmzFqINY6jvgi0ZaPMO1l3nobYjn0iLfy4MAgK4YA7JtLv6RNk3cEP4zJpIqU3YW0gmHidzc/9/FGt5aceBNi6yoe5KLHLkwRF9g2Kl7t4qt9qJToRJQHTXQSJqPnMgXhOR/fR7eWRprTjDGfM2SiTD6F0Thv3piwsDoCZoRQKTUTQqDvuxt+uVNdplu3vXghz8cZYnvY4zhBA4/DeqRcMqn07EeiR9QV88YHQ7b2OwixS4jIIvm9d8X7OG5ZmWLkc3y46Ik+ey8In6RnLXEirAdpdVNq6+cxBmKMH5tL5W6IZ35etPp+CTEgJ8WDU3CKFZItjsBkM3reUQcBUgGxJc72BvMer6PJmd2JoAfjYHU2fBW2vl9UIqgi6R2MWoBgoC4Xw5H7rM6NAlTlos7tcqaEiI7E1I9H1CqqSq3WBndVHjYbui5dkOrn59exF+tCkiwFbbS69eGKVWd24NAsk4CoTEbsDwdijGdGLYIGJcXEep1Yr4c3ByMNutx17mHwJCbF+F2kiggPmwdWs7l6v9u1PmuO50J5fp1ccF1Lj7nSrdL7MKiA4u9uT2dCMrKYUcF+tZrNIL5o/OnqV+nN8hPf9J603d2s3TMBItKYtdz36nnJ+2qfOx/pJHIxvLucKFhj0Kr6oY3eF46rvX0hi3HH7HKHkOKNMDO7cxTyf2l4g5yLw6OTyFwrpZQPC9UQRpZ9e5bjH3Wrn5vDeMAiqECXIjUI7ucp6/TtaSY+seiTEj6ri3MvzvZAREgx8X762tppKUoUVW1HZhCCUEoL36mx+3ga6mNLOCkhQcc55HQqopj5xSmqjj07hIDqx4+JUwwan/744+8ppX+6u+mJbcgCGJaOp+UO7GbrHMfN341OaV7XnPN//getfY0Do2dIugAAAABJRU5ErkJggg==')\",\n      \"backgroundSize\": \"cover\",\n      \"display\": \"block\"\n    }\n  }, \"\\n          \", mdx(\"picture\", {\n    parentName: \"span\"\n  }, \"\\n          \", mdx(\"source\", {\n    parentName: \"picture\",\n    \"srcSet\": [\"https://images.ctfassets.net/mmjbm94f6iyd/7nUBf0aIS3qCV6lIZ7wmkJ/aefe9be62982bd76bd134ff8ec5c24d6/Anatomia-de-un-Ticket.png?w=208&fm=webp 208w\", \"https://images.ctfassets.net/mmjbm94f6iyd/7nUBf0aIS3qCV6lIZ7wmkJ/aefe9be62982bd76bd134ff8ec5c24d6/Anatomia-de-un-Ticket.png?w=416&fm=webp 416w\", \"https://images.ctfassets.net/mmjbm94f6iyd/7nUBf0aIS3qCV6lIZ7wmkJ/aefe9be62982bd76bd134ff8ec5c24d6/Anatomia-de-un-Ticket.png?w=832&fm=webp 832w\"],\n    \"sizes\": \"(max-width: 832px) 100vw, 832px\",\n    \"type\": \"image/webp\"\n  }), \"\\n          \", mdx(\"source\", {\n    parentName: \"picture\",\n    \"srcSet\": [\"https://images.ctfassets.net/mmjbm94f6iyd/7nUBf0aIS3qCV6lIZ7wmkJ/aefe9be62982bd76bd134ff8ec5c24d6/Anatomia-de-un-Ticket.png?w=208 208w\", \"https://images.ctfassets.net/mmjbm94f6iyd/7nUBf0aIS3qCV6lIZ7wmkJ/aefe9be62982bd76bd134ff8ec5c24d6/Anatomia-de-un-Ticket.png?w=416 416w\", \"https://images.ctfassets.net/mmjbm94f6iyd/7nUBf0aIS3qCV6lIZ7wmkJ/aefe9be62982bd76bd134ff8ec5c24d6/Anatomia-de-un-Ticket.png?w=832 832w\"],\n    \"sizes\": \"(max-width: 832px) 100vw, 832px\"\n  }), \"\\n          \", mdx(\"img\", {\n    parentName: \"picture\",\n    \"className\": \"gatsby-resp-image-image\",\n    \"style\": {\n      \"width\": \"100%\",\n      \"height\": \"100%\",\n      \"margin\": \"0\",\n      \"verticalAlign\": \"middle\",\n      \"position\": \"absolute\",\n      \"top\": \"0\",\n      \"left\": \"0\",\n      \"boxShadow\": \"inset 0px 0px 0px 400px transparent\"\n    },\n    \"alt\": \"Anatomia de un ticket\",\n    \"title\": \"\",\n    \"src\": \"https://images.ctfassets.net/mmjbm94f6iyd/7nUBf0aIS3qCV6lIZ7wmkJ/aefe9be62982bd76bd134ff8ec5c24d6/Anatomia-de-un-Ticket.png\",\n    \"loading\": \"lazy\"\n  }), \"\\n        \"), \"\\n        \"), \"\\n      \")), mdx(\"h2\", {\n    \"id\": \"tipos-de-comandos\",\n    \"style\": {\n      \"position\": \"relative\"\n    }\n  }, mdx(\"a\", {\n    parentName: \"h2\",\n    \"href\": \"#tipos-de-comandos\",\n    \"aria-label\": \"tipos de comandos permalink\",\n    \"className\": \"anchor before\"\n  }, mdx(\"svg\", {\n    parentName: \"a\",\n    \"aria-hidden\": \"true\",\n    \"focusable\": \"false\",\n    \"height\": \"16\",\n    \"version\": \"1.1\",\n    \"viewBox\": \"0 0 16 16\",\n    \"width\": \"16\"\n  }, mdx(\"path\", {\n    parentName: \"svg\",\n    \"fillRule\": \"evenodd\",\n    \"d\": \"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\n  }))), \"Tipos de comandos\"), mdx(Aside, {\n    type: \"info\",\n    mdxType: \"Aside\"\n  }, mdx(\"p\", null, \"Los valores \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"Enum\"), \" (alineaci\\xF3n, estilo de separador, nivel de QR, etc.) siempre deben enviarse en \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"MAY\\xDASCULAS\"), \".\")), mdx(\"table\", null, mdx(\"thead\", {\n    parentName: \"table\"\n  }, mdx(\"tr\", {\n    parentName: \"thead\"\n  }, mdx(\"th\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Tipo\"), mdx(\"th\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Descripci\\xF3n\"))), mdx(\"tbody\", {\n    parentName: \"table\"\n  }, mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"text\")), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"L\\xEDnea de texto con tama\\xF1o, alineaci\\xF3n, negrita, cursiva y subrayado\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"columns\")), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Fila multi-columna con anchos proporcionales \\u2014 ideal para producto + precio\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"divider\")), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"L\\xEDnea separadora a todo el ancho (\", mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"SOLID\"), \", \", mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"DOTTED\"), \" o \", mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"EMPTY\"), \")\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"feed\")), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Avanza el papel N l\\xEDneas en blanco\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"space\")), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Inserta espacio vertical preciso en p\\xEDxeles\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"cut\")), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Activa la cuchilla de corte (se ignora de forma segura en terminales sin cuchilla)\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"image\")), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Imprime una imagen PNG/JPG en Base64 \\u2014 usa \", mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"algorithm: BINARIZATION\"), \" para logos\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"qr\")), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Genera un c\\xF3digo QR directamente en el hardware de la impresora\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"barcode\")), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Genera un c\\xF3digo de barras CODE128 directamente en el hardware\")))), mdx(\"h2\", {\n    \"id\": \"ejemplo-completo\",\n    \"style\": {\n      \"position\": \"relative\"\n    }\n  }, mdx(\"a\", {\n    parentName: \"h2\",\n    \"href\": \"#ejemplo-completo\",\n    \"aria-label\": \"ejemplo completo permalink\",\n    \"className\": \"anchor before\"\n  }, mdx(\"svg\", {\n    parentName: \"a\",\n    \"aria-hidden\": \"true\",\n    \"focusable\": \"false\",\n    \"height\": \"16\",\n    \"version\": \"1.1\",\n    \"viewBox\": \"0 0 16 16\",\n    \"width\": \"16\"\n  }, mdx(\"path\", {\n    parentName: \"svg\",\n    \"fillRule\": \"evenodd\",\n    \"d\": \"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\n  }))), \"Ejemplo completo\"), mdx(\"p\", null, \"El siguiente ejemplo construye un recibo completo: logo de comercio, encabezado, items de la orden, total, QR y corte autom\\xE1tico. Consulta la \", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"https://api-docs.kushkipagos.com/docs/kushki-one/h0nk7povlfm40-create-print-job\"\n  }, \"referencia API \"), \"para mayor informaci\\xF3n.\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-json\"\n  }, \"{\\n  \\\"printJobId\\\": \\\"TICKET-190209\\\",\\n  \\\"externalReference\\\": \\\"Mesa-14\\\",\\n  \\\"webhookUrl\\\": \\\"https://api.tunegocio/webhook/print-events\\\",\\n  \\\"skipIfBusy\\\": false,\\n  \\\"commands\\\": [\\n    {\\n      \\\"type\\\": \\\"image\\\",\\n      \\\"base64Image\\\": \\\"iVBORw0KGgoAAAANSUhEUgAAAAoAAAAK...\\\",\\n      \\\"align\\\": \\\"CENTER\\\",\\n      \\\"width\\\": 300,\\n      \\\"algorithm\\\": \\\"BINARIZATION\\\"\\n    },\\n    {\\n      \\\"type\\\": \\\"text\\\",\\n      \\\"text\\\": \\\"RESTAURANTE EL BUEN SABOR\\\\n\\\",\\n      \\\"align\\\": \\\"CENTER\\\",\\n      \\\"size\\\": 32,\\n      \\\"bold\\\": true\\n    },\\n    {\\n      \\\"type\\\": \\\"text\\\",\\n      \\\"text\\\": \\\"NIT: 900.123.456-7\\\\n\\\",\\n      \\\"align\\\": \\\"CENTER\\\",\\n      \\\"size\\\": 22\\n    },\\n    { \\\"type\\\": \\\"divider\\\", \\\"dividerType\\\": \\\"DOTTED\\\" },\\n    {\\n      \\\"type\\\": \\\"text\\\",\\n      \\\"text\\\": \\\"Fecha: 17/03/2024  14:32\\\\n\\\",\\n      \\\"align\\\": \\\"LEFT\\\",\\n      \\\"size\\\": 20\\n    },\\n    { \\\"type\\\": \\\"divider\\\", \\\"dividerType\\\": \\\"SOLID\\\" },\\n    {\\n      \\\"type\\\": \\\"columns\\\",\\n      \\\"columns\\\": [\\n        { \\\"text\\\": \\\"2x Combo Hamburguesa\\\", \\\"weight\\\": 2, \\\"align\\\": \\\"LEFT\\\" },\\n        { \\\"text\\\": \\\"$30.000\\\", \\\"weight\\\": 1, \\\"align\\\": \\\"RIGHT\\\" }\\n      ]\\n    },\\n    {\\n      \\\"type\\\": \\\"columns\\\",\\n      \\\"columns\\\": [\\n        { \\\"text\\\": \\\"1x Jugo Natural\\\", \\\"weight\\\": 2, \\\"align\\\": \\\"LEFT\\\" },\\n        { \\\"text\\\": \\\"$8.000\\\", \\\"weight\\\": 1, \\\"align\\\": \\\"RIGHT\\\" }\\n      ]\\n    },\\n    { \\\"type\\\": \\\"divider\\\", \\\"dividerType\\\": \\\"SOLID\\\" },\\n    {\\n      \\\"type\\\": \\\"columns\\\",\\n      \\\"columns\\\": [\\n        { \\\"text\\\": \\\"TOTAL\\\", \\\"weight\\\": 2, \\\"align\\\": \\\"LEFT\\\" },\\n        { \\\"text\\\": \\\"$38.000\\\", \\\"weight\\\": 1, \\\"align\\\": \\\"RIGHT\\\" }\\n      ]\\n    },\\n    {\\n      \\\"type\\\": \\\"qr\\\",\\n      \\\"content\\\": \\\"https://tunegocio/recibo/TICKET-190209\\\",\\n      \\\"dotSize\\\": 6,\\n      \\\"errorLevel\\\": \\\"M\\\",\\n      \\\"align\\\": \\\"CENTER\\\"\\n    },\\n    { \\\"type\\\": \\\"feed\\\", \\\"lines\\\": 3 },\\n    { \\\"type\\\": \\\"cut\\\" }\\n  ]\\n}\\n\")), mdx(\"p\", null, \"Env\\xEDa el request desde tu backend o l\\xEDnea de comandos:\"), mdx(Aside, {\n    type: \"info\",\n    mdxType: \"Aside\"\n  }, mdx(\"p\", null, \"Reemplaza \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"TERMINAL_IP\"), \" con la IP est\\xE1tica o reserva DHCP asignada a tu\\nterminal, y \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"6868\"), \" con el puerto configurado si usas uno distinto.\\nPara modo Nube, reemplaza la URL base seg\\xFAn la tabla de topolog\\xEDas de arriba.\")), mdx(CodeTabs, {\n    group: \"backend\",\n    mdxType: \"CodeTabs\"\n  }, mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-bash\"\n  }, \"curl -X POST http://TERMINAL_IP:6868/terminal/v1/print \\\\\\n  -H \\\"Content-Type: application/json\\\" \\\\\\n  -d @body.json\\n\")), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-javascript\"\n  }, \"const res = await fetch(\\\"http://TERMINAL_IP:6868/terminal/v1/print\\\", {\\n  method: \\\"POST\\\",\\n  headers: { \\\"Content-Type\\\": \\\"application/json\\\" },\\n  body: JSON.stringify(payload),\\n});\\nconsole.log(res.status); // 202\\n\")), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-python\"\n  }, \"import requests\\n\\nres = requests.post(\\n    \\\"http://TERMINAL_IP:6868/terminal/v1/print\\\",\\n    json=payload\\n)\\nprint(res.status_code)  # 202\\n\"))), mdx(\"p\", null, \"La terminal responde de forma inmediata con \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"202 Accepted\"), \":\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-json\"\n  }, \"{\\n  \\\"printJobId\\\": \\\"TICKET-190209\\\",\\n  \\\"status\\\": \\\"PENDING\\\"\\n}\\n\")), mdx(\"h2\", {\n    \"id\": \"resultado-del-trabajo\",\n    \"style\": {\n      \"position\": \"relative\"\n    }\n  }, mdx(\"a\", {\n    parentName: \"h2\",\n    \"href\": \"#resultado-del-trabajo\",\n    \"aria-label\": \"resultado del trabajo permalink\",\n    \"className\": \"anchor before\"\n  }, mdx(\"svg\", {\n    parentName: \"a\",\n    \"aria-hidden\": \"true\",\n    \"focusable\": \"false\",\n    \"height\": \"16\",\n    \"version\": \"1.1\",\n    \"viewBox\": \"0 0 16 16\",\n    \"width\": \"16\"\n  }, mdx(\"path\", {\n    parentName: \"svg\",\n    \"fillRule\": \"evenodd\",\n    \"d\": \"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\n  }))), \"Resultado del trabajo\"), mdx(\"p\", null, \"Tienes dos mecanismos para conocer el resultado final de un trabajo de impresi\\xF3n.\\nPuedes usar uno o ambos en paralelo.\"), mdx(\"h3\", {\n    \"id\": \"opción-a--webhook-push\",\n    \"style\": {\n      \"position\": \"relative\"\n    }\n  }, mdx(\"a\", {\n    parentName: \"h3\",\n    \"href\": \"#opci%C3%B3n-a--webhook-push\",\n    \"aria-label\": \"opción a  webhook push permalink\",\n    \"className\": \"anchor before\"\n  }, mdx(\"svg\", {\n    parentName: \"a\",\n    \"aria-hidden\": \"true\",\n    \"focusable\": \"false\",\n    \"height\": \"16\",\n    \"version\": \"1.1\",\n    \"viewBox\": \"0 0 16 16\",\n    \"width\": \"16\"\n  }, mdx(\"path\", {\n    parentName: \"svg\",\n    \"fillRule\": \"evenodd\",\n    \"d\": \"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\n  }))), \"Opci\\xF3n A \\u2014 Webhook (push)\"), mdx(\"p\", null, \"Si enviaste un \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"webhookUrl\"), \" al encolar el trabajo, la terminal ejecuta un \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"POST\"), \"\\nhacia esa URL cuando el trabajo cambia a \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"COMPLETED\"), \" o \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"FAILED\"), \".\"), mdx(\"p\", null, mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Trabajo exitoso:\")), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-json\"\n  }, \"{\\n  \\\"printJobId\\\": \\\"TICKET-190209\\\",\\n  \\\"status\\\": \\\"COMPLETED\\\",\\n  \\\"externalReference\\\": \\\"Mesa-14\\\"\\n}\\n\")), mdx(\"p\", null, mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Fallo de hardware:\")), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-json\"\n  }, \"{\\n  \\\"printJobId\\\": \\\"TICKET-190209\\\",\\n  \\\"status\\\": \\\"FAILED\\\",\\n  \\\"externalReference\\\": \\\"Mesa-14\\\",\\n  \\\"errorCode\\\": \\\"OUT_OF_PAPER\\\",\\n  \\\"errorMessage\\\": \\\"La impresora est\\xE1 sin papel.\\\"\\n}\\n\")), mdx(Aside, {\n    type: \"info\",\n    mdxType: \"Aside\"\n  }, mdx(\"p\", null, \"Si tu servidor no responde con HTTP \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"2xx\"), \" dentro de 5 segundos, la terminal\\nno reintenta el webhook. Aseg\\xFArate de que tu endpoint sea idempotente y\\nresponda r\\xE1pidamente. Si el webhook no llega, usa el polling como respaldo.\")), mdx(\"blockquote\", null, mdx(\"p\", {\n    parentName: \"blockquote\"\n  }, \"Consulta la \", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"https://api-docs.kushkipagos.com/docs/kushki-one/ead230gde6lmc-print-job-webhook-inbound\"\n  }, \"referencia API\"), \"\\npara mayor informaci\\xF3n sobre este webhook.\")), mdx(\"hr\", null), mdx(\"h3\", {\n    \"id\": \"opción-b--polling-pull\",\n    \"style\": {\n      \"position\": \"relative\"\n    }\n  }, mdx(\"a\", {\n    parentName: \"h3\",\n    \"href\": \"#opci%C3%B3n-b--polling-pull\",\n    \"aria-label\": \"opción b  polling pull permalink\",\n    \"className\": \"anchor before\"\n  }, mdx(\"svg\", {\n    parentName: \"a\",\n    \"aria-hidden\": \"true\",\n    \"focusable\": \"false\",\n    \"height\": \"16\",\n    \"version\": \"1.1\",\n    \"viewBox\": \"0 0 16 16\",\n    \"width\": \"16\"\n  }, mdx(\"path\", {\n    parentName: \"svg\",\n    \"fillRule\": \"evenodd\",\n    \"d\": \"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\n  }))), \"Opci\\xF3n B \\u2014 Polling (pull)\"), mdx(\"p\", null, \"\\xDAsalo cuando tu sistema no puede recibir conexiones entrantes desde la terminal,\\no como respaldo al webhook.\"), mdx(\"p\", null, mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Red Local:\"), \" \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"GET /terminal/v1/print_job?print_job_id={id}\"), mdx(\"br\", {\n    parentName: \"p\"\n  }), \"\\n\", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Nube:\"), \" \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"POST /terminal/v1/{terminalSerial}/sync/print/job_status?print_job_id={id}\")), mdx(\"p\", null, \"Consulta cada 2\\u20133 segundos. Det\\xE9n el polling cuando \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"status\"), \" sea \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"COMPLETED\"), \" o \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"FAILED\"), \".\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-json\"\n  }, \"{\\n  \\\"printJobId\\\": \\\"TICKET-190209\\\",\\n  \\\"status\\\": \\\"COMPLETED\\\"\\n}\\n\")), mdx(\"blockquote\", null, mdx(\"p\", {\n    parentName: \"blockquote\"\n  }, \"Consulta la \", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"https://api-docs.kushkipagos.com/docs/kushki-one/get-print-job-status\"\n  }, \"referencia API\"), \"\\npara mayor informaci\\xF3n sobre este endpoint.\")), mdx(\"p\", null, \"Los posibles valores de \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"errorCode\"), \" en caso de fallo son: \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"OUT_OF_PAPER\"), \",\\n\", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"COVER_OPEN\"), \", \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"COVER_INCOMPLETE\"), \", \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"PAPER_JAM\"), \", \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"BUSY\"), \", \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"PRINTER_HOT\"), \",\\n\", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"MOTOR_HOT\"), \", \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"CUTTER_ERROR\"), \", \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"OFFLINE\"), \", \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"UNKNOWN_ERROR\"), \".\"), mdx(Aside, {\n    type: \"info\",\n    mdxType: \"Aside\"\n  }, mdx(\"p\", null, \"Si tu servidor no responde con HTTP \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"2xx\"), \" dentro de 5 segundos, la terminal no reintenta el webhook. Aseg\\xFArate de que tu endpoint sea idempotente y responda r\\xE1pidamente.\")), mdx(NextStep, {\n    type: \"required\",\n    side: \"left\",\n    link: \"/card-present-payments/kushki-one/payments\",\n    title: \"Acepta cobros con Kushki One\",\n    mdxType: \"NextStep\"\n  }, mdx(\"p\", null, \"Realiza cobros con Kushki One\")), mdx(NextStep, {\n    type: \"recommended\",\n    side: \"left\",\n    link: \"/card-present-payments/kushki-one/error-catalog-kushkione#9-errores-de-impresora-kushki--type-terminal-printer\",\n    title: \"Errores de impresora\",\n    mdxType: \"NextStep\"\n  }, mdx(\"p\", null, \"Consulta el cat\\xE1logo de errores\")));\n}\n;\nMDXContent.isMDXComponent = true;","excerpt":"Esta documentación está en acceso temprano . Los parámetros, estructuras de respuesta y comportamientos pueden cambiar sin previo aviso.  No…","timeToRead":2,"tableOfContents":{"items":[{"url":"#impresión-en-terminal-smartpos","title":"Impresión en terminal SmartPOS","items":[{"url":"#cómo-funciona","title":"Cómo funciona"},{"url":"#casos-de-uso","title":"Casos de uso"},{"url":"#anatomía-de-un-ticket","title":"Anatomía de un ticket"},{"url":"#tipos-de-comandos","title":"Tipos de comandos"},{"url":"#ejemplo-completo","title":"Ejemplo completo"},{"url":"#resultado-del-trabajo","title":"Resultado del trabajo","items":[{"url":"#opción-a--webhook-push","title":"Opción A — Webhook (push)"},{"url":"#opción-b--polling-pull","title":"Opción B — Polling (pull)"}]}]}]}}},"updatedAt":"01 abril 2026","tabTitle":null}]}},"pageContext":{"country":"co","id":"03453f1b-7216-55a2-9259-44e8ee531b63","locale":"es","localeDateFormat":"DD MMMM YYYY"}},"staticQueryHashes":["1632712422","2408418099","63159454"]}