{"componentChunkName":"component---src-templates-article-template-tsx","path":"/co/en/card-present-payments/kushki-one/printing","result":{"data":{"article":{"title":"Printing on SmartPOS terminal","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, \"This documentation is in early access. Parameters, response structures, and behaviors are subject to change without prior notice. Do not use this version in production without previous coordination with the Kushki integrations team.\")), mdx(\"h1\", {\n    \"id\": \"smartpos-terminal-printing\",\n    \"style\": {\n      \"position\": \"relative\"\n    }\n  }, mdx(\"a\", {\n    parentName: \"h1\",\n    \"href\": \"#smartpos-terminal-printing\",\n    \"aria-label\": \"smartpos terminal printing 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  }))), \"SmartPOS terminal printing\"), mdx(\"p\", null, \"The \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Print API\"), \" gives you full control over the thermal printer integrated into Kushki ONE terminals (Sunmi P3, Sunmi P2 SE). You can print any content from your POS system \\u2014 before, during, or after a transaction, or completely independent of one \\u2014 without the need for drivers, SDKs, or hardware configuration on your side.\"), mdx(\"h2\", {\n    \"id\": \"how-it-works\",\n    \"style\": {\n      \"position\": \"relative\"\n    }\n  }, mdx(\"a\", {\n    parentName: \"h2\",\n    \"href\": \"#how-it-works\",\n    \"aria-label\": \"how it works 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  }))), \"How it works\"), mdx(\"p\", null, \"The print cycle has two parts: a \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"synchronous request\"), \" that queues the job,\\nand an \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"asynchronous notification\"), \" that tells you when it finished.\"), 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  }, \"Your POS builds a \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"commands\"), \" array describing the receipt layout.\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"You send the job creation request \\u2014 the terminal responds \", mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"202 Accepted\"), \" immediately.\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Printing executes asynchronously on the hardware.\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Get the final result (\", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"COMPLETED\"), \" or \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"FAILED\"), \") in two ways:\", mdx(\"ul\", {\n    parentName: \"li\"\n  }, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Webhook (push):\"), \" the terminal notifies the \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"webhookUrl\"), \" you defined in the request.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Polling (pull):\"), \" actively query the job status with \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"GET /terminal/v1/print_job?print_job_id={id}\"), \".\")))), mdx(\"p\", null, \"The request and response structure is identical across both connectivity modes.\\nThe only thing that varies is the 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  }, \"Topology\"), 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  }, \"Local Network (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  }, \"Cloud (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  }, \"Cloud (Internet) \\u2014 Production\"), 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, \"Not sure which topology to use? Review the\\n\", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"/card-present-payments/kushki-one/kushki-one-getting-started#integration-topologies\"\n  }, \"Integration Topologies\"), \"\\nsection in Getting Started before continuing.\")), mdx(Aside, {\n    type: \"info\",\n    mdxType: \"Aside\"\n  }, mdx(\"p\", null, \"The \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"commands\"), \" array is a blank canvas. You are not limited to any predefined\\ntemplate or format. Combine text, images, QR codes, barcodes, columns, and\\ndividers in whatever order your business needs.\")), mdx(\"h2\", {\n    \"id\": \"use-cases\",\n    \"style\": {\n      \"position\": \"relative\"\n    }\n  }, mdx(\"a\", {\n    parentName: \"h2\",\n    \"href\": \"#use-cases\",\n    \"aria-label\": \"use cases 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  }))), \"Use cases\"), mdx(\"p\", null, \"The API is not limited to payment receipts. Any content your business needs to deliver on paper can be triggered from your POS system:\"), mdx(\"table\", null, mdx(\"thead\", {\n    parentName: \"table\"\n  }, mdx(\"tr\", {\n    parentName: \"thead\"\n  }, mdx(\"th\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Use case\"), mdx(\"th\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Description\"))), 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  }, \"Payment receipt\")), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Direct charge, pre-authorization capture, refund, or void\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, mdx(\"strong\", {\n    parentName: \"td\"\n  }, \"Discount coupon\")), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Prints a discount code for the customer\\u2019s next purchase\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, mdx(\"strong\", {\n    parentName: \"td\"\n  }, \"QR Code\")), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Wi-Fi password, loyalty program link, digital receipt, product information\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, mdx(\"strong\", {\n    parentName: \"td\"\n  }, \"Thank you message\")), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Personalized brand message at the end of the receipt\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, mdx(\"strong\", {\n    parentName: \"td\"\n  }, \"Loyalty and promotions\")), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Points balance, reward levels, special offers\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, mdx(\"strong\", {\n    parentName: \"td\"\n  }, \"Pre-bill or order summary\")), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Kitchen ticket or table summary before final payment\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, mdx(\"strong\", {\n    parentName: \"td\"\n  }, \"Reversal or void proof\")), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Printed proof of a cancellation or refund\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, mdx(\"strong\", {\n    parentName: \"td\"\n  }, \"Reprint\")), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Reprint any previous ticket using the same \", 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  }, \"Free content\")), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Any text, image, QR, or barcode \\u2014 without needing a transaction\")))), mdx(\"h2\", {\n    \"id\": \"anatomy-of-a-ticket\",\n    \"style\": {\n      \"position\": \"relative\"\n    }\n  }, mdx(\"a\", {\n    parentName: \"h2\",\n    \"href\": \"#anatomy-of-a-ticket\",\n    \"aria-label\": \"anatomy of a 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  }))), \"Anatomy of a ticket\"), mdx(\"p\", null, \"Each visual section of the receipt corresponds to a command type in the \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"commands\"), \" array. The following image shows how to map the ticket design to the API commands:\"), 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,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')\",\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/7de561bd329ea2f79bd968d9c54d1afb/en_anatomia_de_un_ticket.png?w=208&fm=webp 208w\", \"https://images.ctfassets.net/mmjbm94f6iyd/7nUBf0aIS3qCV6lIZ7wmkJ/7de561bd329ea2f79bd968d9c54d1afb/en_anatomia_de_un_ticket.png?w=416&fm=webp 416w\", \"https://images.ctfassets.net/mmjbm94f6iyd/7nUBf0aIS3qCV6lIZ7wmkJ/7de561bd329ea2f79bd968d9c54d1afb/en_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/7de561bd329ea2f79bd968d9c54d1afb/en_anatomia_de_un_ticket.png?w=208 208w\", \"https://images.ctfassets.net/mmjbm94f6iyd/7nUBf0aIS3qCV6lIZ7wmkJ/7de561bd329ea2f79bd968d9c54d1afb/en_anatomia_de_un_ticket.png?w=416 416w\", \"https://images.ctfassets.net/mmjbm94f6iyd/7nUBf0aIS3qCV6lIZ7wmkJ/7de561bd329ea2f79bd968d9c54d1afb/en_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\": \"en anatomia de un ticket\",\n    \"title\": \"\",\n    \"src\": \"https://images.ctfassets.net/mmjbm94f6iyd/7nUBf0aIS3qCV6lIZ7wmkJ/7de561bd329ea2f79bd968d9c54d1afb/en_anatomia_de_un_ticket.png\",\n    \"loading\": \"lazy\"\n  }), \"\\n        \"), \"\\n        \"), \"\\n      \")), mdx(\"h2\", {\n    \"id\": \"command-types\",\n    \"style\": {\n      \"position\": \"relative\"\n    }\n  }, mdx(\"a\", {\n    parentName: \"h2\",\n    \"href\": \"#command-types\",\n    \"aria-label\": \"command types 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  }))), \"Command types\"), mdx(Aside, {\n    type: \"info\",\n    mdxType: \"Aside\"\n  }, mdx(\"p\", null, mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"Enum\"), \" values (alignment, divider style, QR level, etc.) must always be sent in \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"UPPERCASE\"), \".\")), mdx(\"table\", null, mdx(\"thead\", {\n    parentName: \"table\"\n  }, mdx(\"tr\", {\n    parentName: \"thead\"\n  }, mdx(\"th\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Type\"), mdx(\"th\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Description\"))), 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  }, \"Text line with size, alignment, bold, italic, and underline\")), 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  }, \"Multi-column row with proportional widths \\u2014 ideal for product + price\")), 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  }, \"Full-width separator line (\", mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"SOLID\"), \", \", mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"DOTTED\"), \", or \", 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  }, \"Advances the paper by N blank lines\")), 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  }, \"Inserts precise vertical space in pixels\")), 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  }, \"Activates the cutting blade (safely ignored on terminals without a blade)\")), 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  }, \"Prints a Base64 PNG/JPG image \\u2014 use \", mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"algorithm: BINARIZATION\"), \" for 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  }, \"Generates a QR code directly on the printer hardware\")), 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  }, \"Generates a CODE128 barcode directly on the hardware\")))), mdx(\"h2\", {\n    \"id\": \"full-example\",\n    \"style\": {\n      \"position\": \"relative\"\n    }\n  }, mdx(\"a\", {\n    parentName: \"h2\",\n    \"href\": \"#full-example\",\n    \"aria-label\": \"full example 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  }))), \"Full example\"), mdx(\"p\", null, \"The following example builds a complete receipt: merchant logo, header, order items, total, QR, and automatic cut. See the \", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"https://api-docs.kushkipagos.com/docs/kushki-one/h0nk7povlfm40-create-print-job\"\n  }, \"API reference\"), \" for more information.\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-json\"\n  }, \"{\\n  \\\"printJobId\\\": \\\"TICKET-190209\\\",\\n  \\\"externalReference\\\": \\\"Table-14\\\",\\n  \\\"webhookUrl\\\": \\\"https://api.yourbusiness/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\\\": \\\"THE GOOD FLAVOR RESTAURANT\\\\n\\\",\\n      \\\"align\\\": \\\"CENTER\\\",\\n      \\\"size\\\": 32,\\n      \\\"bold\\\": true\\n    },\\n    {\\n      \\\"type\\\": \\\"text\\\",\\n      \\\"text\\\": \\\"TAX ID: 900.123.456-7\\\\n\\\",\\n      \\\"align\\\": \\\"CENTER\\\",\\n      \\\"size\\\": 22\\n    },\\n    { \\\"type\\\": \\\"divider\\\", \\\"dividerType\\\": \\\"DOTTED\\\" },\\n    {\\n      \\\"type\\\": \\\"text\\\",\\n      \\\"text\\\": \\\"Date: 03/17/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 Burger Combo\\\", \\\"weight\\\": 2, \\\"align\\\": \\\"LEFT\\\" },\\n        { \\\"text\\\": \\\"$30.000\\\", \\\"weight\\\": 1, \\\"align\\\": \\\"RIGHT\\\" }\\n      ]\\n    },\\n    {\\n      \\\"type\\\": \\\"columns\\\",\\n      \\\"columns\\\": [\\n        { \\\"text\\\": \\\"1x Natural Juice\\\", \\\"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://yourbusiness/receipt/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, \"Send the request from your backend or command line:\"), mdx(Aside, {\n    type: \"info\",\n    mdxType: \"Aside\"\n  }, mdx(\"p\", null, \"Replace \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"TERMINAL_IP\"), \" with the static IP or DHCP reservation assigned to your\\nterminal, and \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"6868\"), \" with the configured port if you use a different one.\\nFor Cloud mode, replace the base URL according to the topology table above.\")), 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\\nres = requests.post(\\n    \\\"http://TERMINAL_IP:6868/terminal/v1/print\\\",\\n    json=payload\\n)\\nprint(res.status_code)  # 202\\n\"))), mdx(\"p\", null, \"The terminal responds immediately with \", 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\\\": \\\"QUEUED\\\"\\n}\\n\")), mdx(\"h2\", {\n    \"id\": \"job-result\",\n    \"style\": {\n      \"position\": \"relative\"\n    }\n  }, mdx(\"a\", {\n    parentName: \"h2\",\n    \"href\": \"#job-result\",\n    \"aria-label\": \"job result 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  }))), \"Job Result\"), mdx(\"p\", null, \"You have two mechanisms to get the final result of a print job.\\nYou can use one or both in parallel.\"), mdx(\"h3\", {\n    \"id\": \"option-a--webhook-push\",\n    \"style\": {\n      \"position\": \"relative\"\n    }\n  }, mdx(\"a\", {\n    parentName: \"h3\",\n    \"href\": \"#option-a--webhook-push\",\n    \"aria-label\": \"option 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  }))), \"Option A \\u2014 Webhook (push)\"), mdx(\"p\", null, \"If you included a \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"webhookUrl\"), \" when queuing the job, the terminal sends a \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"POST\"), \"\\nto that URL when the job transitions to \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"COMPLETED\"), \" or \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"FAILED\"), \".\"), mdx(\"p\", null, mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Successful job:\")), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-json\"\n  }, \"{\\n  \\\"printJobId\\\": \\\"TICKET-190209\\\",\\n  \\\"status\\\": \\\"COMPLETED\\\",\\n  \\\"externalReference\\\": \\\"Table-14\\\"\\n}\\n\")), mdx(\"p\", null, mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Hardware failure:\")), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-json\"\n  }, \"{\\n  \\\"printJobId\\\": \\\"TICKET-190209\\\",\\n  \\\"status\\\": \\\"FAILED\\\",\\n  \\\"externalReference\\\": \\\"Table-14\\\",\\n  \\\"errorCode\\\": \\\"OUT_OF_PAPER\\\",\\n  \\\"errorMessage\\\": \\\"The printer is out of paper.\\\"\\n}\\n\")), mdx(Aside, {\n    type: \"info\",\n    mdxType: \"Aside\"\n  }, mdx(\"p\", null, \"If your server does not respond with HTTP \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"2xx\"), \" within 5 seconds, the terminal\\nwill not retry the webhook. Make sure your endpoint is idempotent and responds\\nquickly. If the webhook does not arrive, use polling as a fallback.\")), mdx(\"blockquote\", null, mdx(\"p\", {\n    parentName: \"blockquote\"\n  }, \"See the \", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"https://api-docs.kushkipagos.com/docs/kushki-one/ead230gde6lmc-print-job-webhook-inbound\"\n  }, \"API reference\"), \"\\nfor full details on this webhook.\")), mdx(\"hr\", null), mdx(\"h3\", {\n    \"id\": \"option-b--polling-pull\",\n    \"style\": {\n      \"position\": \"relative\"\n    }\n  }, mdx(\"a\", {\n    parentName: \"h3\",\n    \"href\": \"#option-b--polling-pull\",\n    \"aria-label\": \"option 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  }))), \"Option B \\u2014 Polling (pull)\"), mdx(\"p\", null, \"Use this when your system cannot receive inbound connections from the terminal,\\nor as a fallback to the webhook.\"), mdx(\"p\", null, mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Local Network:\"), \" \", 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  }, \"Cloud:\"), \" \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"POST /terminal/v1/{terminalSerial}/sync/print/job_status?print_job_id={id}\")), mdx(\"p\", null, \"Poll every 2\\u20133 seconds. Stop polling when \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"status\"), \" is \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"COMPLETED\"), \" or \", 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  }, \"See the \", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"https://api-docs.kushkipagos.com/docs/kushki-one/get-print-job-status\"\n  }, \"API reference\"), \"\\nfor full details on this endpoint.\")), mdx(\"p\", null, \"Possible \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"errorCode\"), \" values on failure: \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"OUT_OF_PAPER\"), \", \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"COVER_OPEN\"), \",\\n\", 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\"), \", \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"MOTOR_HOT\"), \",\\n\", 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, \"If your server does not respond with HTTP \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"2xx\"), \" within 5 seconds, the terminal will not retry the webhook. Ensure your endpoint is idempotent and responds quickly.\")), mdx(NextStep, {\n    type: \"required\",\n    side: \"left\",\n    link: \"/card-present-payments/kushki-one/payments\",\n    title: \"Accept payments with Kushki One\",\n    mdxType: \"NextStep\"\n  }, mdx(\"p\", null, \"Process payments with 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: \"Printer errors\",\n    mdxType: \"NextStep\"\n  }, mdx(\"p\", null, \"Consult the error catalog\")));\n}\n;\nMDXContent.isMDXComponent = true;","excerpt":"This documentation is in early access. Parameters, response structures, and behaviors are subject to change without prior notice. Do not use…","timeToRead":2,"tableOfContents":{"items":[{"url":"#smartpos-terminal-printing","title":"SmartPOS terminal printing","items":[{"url":"#how-it-works","title":"How it works"},{"url":"#use-cases","title":"Use cases"},{"url":"#anatomy-of-a-ticket","title":"Anatomy of a ticket"},{"url":"#command-types","title":"Command types"},{"url":"#full-example","title":"Full example"},{"url":"#job-result","title":"Job Result","items":[{"url":"#option-a--webhook-push","title":"Option A — Webhook (push)"},{"url":"#option-b--polling-pull","title":"Option B — Polling (pull)"}]}]}]}}},"updatedAt":"April 01, 2026","tabTitle":null}]}},"pageContext":{"country":"co","id":"107590aa-467c-59cf-a017-fe96b04ab3ca","locale":"en","localeDateFormat":"MMMM DD, YYYY"}},"staticQueryHashes":["1632712422","2408418099","63159454"]}