{"templateId":"markdown","sharedDataIds":{"sidebar":"sidebar-contents/checkout/sidebars.yaml","oas-contents/api/in-person-payments.json":"oas-contents/api/in-person-payments.json"},"props":{"metadata":{"markdoc":{"tagList":["openapi-code-sample","openapi-response-sample","admonition"]},"type":"markdown"},"seo":{"title":"Enroll a Device","description":"Explore our documentation and API and start integrating Kustom Checkout","llmstxt":{"hide":false,"sections":[{"title":"Table of contents","includeFiles":["**/*"],"excludeFiles":[]}],"excludeFiles":[]}},"dynamicMarkdocComponents":["openapi"],"compilationErrors":[],"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"enroll-a-device","__idx":0},"children":["Enroll a Device"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Before a device can receive payment sessions, it must be enrolled on your merchant account. Your backend (or the Kustom Portal) generates a pairing code that a store clerk enters in the Kustom POS app. This registers the device automatically and receives an authentication token."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"participants","__idx":1},"children":["Participants"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Participant"},"children":["Participant"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Role"},"children":["Role"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Merchant Ops"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Merchant internal team with access to the Kustom Portal — or a third-party system connected to the Kustom Device API. Creates enrollments and controls which devices are assigned to specific locations."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Store Clerk"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Merchant employee using the Kustom POS app to collect in-person payments; enters the pairing code in the app."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Kustom POS"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Kustom POS app for iOS or Android running on any certified device."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Device API"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Kustom device API, used to manage the device fleet."]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"how-enrollment-works","__idx":2},"children":["How enrollment works"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The first step (creating the enrollment) is the only part you implement, and it uses your API key. Registering the device is handled internally by the Kustom POS app once the clerk enters the pairing code."]},{"$$mdtype":"Tag","name":"Mermaid","attributes":{"data-language":"mermaid","diagramSource":"sequenceDiagram\n\tactor Merchant Ops\n\tactor Shopper\n\tactor Store Clerk\n\tparticipant Kustom POS\n\tparticipant Device API\n\t\n\tcritical Authentication using API keys\n\t\tMerchant Ops->>+Device API: Create enrollment\n\t  Note over Merchant Ops,Device API: Merchant operations create enrollment via portal or API.<br>The enrollment has an expiration date and metadata (key-value)<br>that will be carried over to the device record once pairing code is linked to the device<br>and could be used to query devices.\n\t  Device API->>-Merchant Ops: Return pairing code\n  end\n\n  critical No authentication\n\t  Merchant Ops->>Store Clerk: Sends pairing code\n\t  Note over Merchant Ops,Store Clerk: Merchants decide how to distribute the pairing code.\n\t  Store Clerk->>Kustom POS: Enter pairing code\n\t\n\t  Kustom POS->>+Device API: Register device\n\t\tNote over Kustom POS,Device API: Use pairing code to register device<br>and connect it to merchant\n\t\tDevice API->>-Kustom POS: Return device record and auth credentials\n\t\tNote over Kustom POS,Device API: Credentials returned at this point will<br>be used for further API requests from Kustom POS\n\tend\n","diagramHtml":"<div class=\"mermaid\" data-processed=\"true\"><svg id=\"mermaid-1780579189855\" width=\"100%\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" style=\"max-width: 1353px;\" viewBox=\"-50 -10 1353 927\" role=\"graphics-document document\" aria-roledescription=\"sequence\"><g><rect x=\"1103\" y=\"841\" fill=\"#eaeaea\" stroke=\"#666\" width=\"150\" height=\"65\" name=\"Device API\" rx=\"3\" ry=\"3\" class=\"actor actor-bottom\"></rect><text x=\"1178\" y=\"873.5\" dominant-baseline=\"central\" alignment-baseline=\"central\" class=\"actor actor-box\" style=\"text-anchor: middle; font-size: 16px; font-weight: 400;\"><tspan x=\"1178\" dy=\"0\">Device API</tspan></text></g><g><rect x=\"720\" y=\"841\" fill=\"#eaeaea\" stroke=\"#666\" width=\"150\" height=\"65\" name=\"Kustom POS\" rx=\"3\" ry=\"3\" class=\"actor actor-bottom\"></rect><text x=\"795\" y=\"873.5\" dominant-baseline=\"central\" alignment-baseline=\"central\" class=\"actor actor-box\" style=\"text-anchor: middle; font-size: 16px; font-weight: 400;\"><tspan x=\"795\" dy=\"0\">Kustom POS</tspan></text></g><g></g><g></g><g></g><g><line id=\"actor4\" x1=\"1178\" y1=\"65\" x2=\"1178\" y2=\"841\" class=\"actor-line 200\" stroke-width=\"0.5px\" stroke=\"#999\" name=\"Device API\"></line><g id=\"root-4\"><rect x=\"1103\" y=\"0\" fill=\"#eaeaea\" stroke=\"#666\" width=\"150\" height=\"65\" name=\"Device API\" rx=\"3\" ry=\"3\" class=\"actor actor-top\"></rect><text x=\"1178\" y=\"32.5\" dominant-baseline=\"central\" alignment-baseline=\"central\" class=\"actor actor-box\" style=\"text-anchor: middle; font-size: 16px; font-weight: 400;\"><tspan x=\"1178\" dy=\"0\">Device API</tspan></text></g></g><g><line id=\"actor3\" x1=\"795\" y1=\"65\" x2=\"795\" y2=\"841\" class=\"actor-line 200\" stroke-width=\"0.5px\" stroke=\"#999\" name=\"Kustom POS\"></line><g id=\"root-3\"><rect x=\"720\" y=\"0\" fill=\"#eaeaea\" stroke=\"#666\" width=\"150\" height=\"65\" name=\"Kustom POS\" rx=\"3\" ry=\"3\" class=\"actor actor-top\"></rect><text x=\"795\" y=\"32.5\" dominant-baseline=\"central\" alignment-baseline=\"central\" class=\"actor actor-box\" style=\"text-anchor: middle; font-size: 16px; font-weight: 400;\"><tspan x=\"795\" dy=\"0\">Kustom POS</tspan></text></g></g><g><line id=\"actor2\" x1=\"589\" y1=\"80\" x2=\"589\" y2=\"841\" class=\"actor-line 200\" stroke-width=\"0.5px\" stroke=\"#999\" name=\"Store Clerk\"></line></g><g><line id=\"actor1\" x1=\"332\" y1=\"80\" x2=\"332\" y2=\"841\" class=\"actor-line 200\" stroke-width=\"0.5px\" stroke=\"#999\" name=\"Shopper\"></line></g><g><line id=\"actor0\" x1=\"75\" y1=\"80\" x2=\"75\" y2=\"841\" class=\"actor-line 200\" stroke-width=\"0.5px\" stroke=\"#999\" name=\"Merchant Ops\"></line></g><style>#mermaid-1780579189855{font-family:\"trebuchet ms\",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-1780579189855 .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-1780579189855 .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-1780579189855 .error-icon{fill:#552222;}#mermaid-1780579189855 .error-text{fill:#552222;stroke:#552222;}#mermaid-1780579189855 .edge-thickness-normal{stroke-width:1px;}#mermaid-1780579189855 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-1780579189855 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-1780579189855 .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-1780579189855 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-1780579189855 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-1780579189855 .marker{fill:#333333;stroke:#333333;}#mermaid-1780579189855 .marker.cross{stroke:#333333;}#mermaid-1780579189855 svg{font-family:\"trebuchet ms\",verdana,arial,sans-serif;font-size:16px;}#mermaid-1780579189855 p{margin:0;}#mermaid-1780579189855 .actor{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-1780579189855 text.actor&gt;tspan{fill:black;stroke:none;}#mermaid-1780579189855 .actor-line{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);}#mermaid-1780579189855 .innerArc{stroke-width:1.5;stroke-dasharray:none;}#mermaid-1780579189855 .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333;}#mermaid-1780579189855 .messageLine1{stroke-width:1.5;stroke-dasharray:2,2;stroke:#333;}#mermaid-1780579189855 #arrowhead path{fill:#333;stroke:#333;}#mermaid-1780579189855 .sequenceNumber{fill:white;}#mermaid-1780579189855 #sequencenumber{fill:#333;}#mermaid-1780579189855 #crosshead path{fill:#333;stroke:#333;}#mermaid-1780579189855 .messageText{fill:#333;stroke:none;}#mermaid-1780579189855 .labelBox{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-1780579189855 .labelText,#mermaid-1780579189855 .labelText&gt;tspan{fill:black;stroke:none;}#mermaid-1780579189855 .loopText,#mermaid-1780579189855 .loopText&gt;tspan{fill:black;stroke:none;}#mermaid-1780579189855 .loopLine{stroke-width:2px;stroke-dasharray:2,2;stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);}#mermaid-1780579189855 .note{stroke:#aaaa33;fill:#fff5ad;}#mermaid-1780579189855 .noteText,#mermaid-1780579189855 .noteText&gt;tspan{fill:black;stroke:none;}#mermaid-1780579189855 .activation0{fill:#f4f4f4;stroke:#666;}#mermaid-1780579189855 .activation1{fill:#f4f4f4;stroke:#666;}#mermaid-1780579189855 .activation2{fill:#f4f4f4;stroke:#666;}#mermaid-1780579189855 .actorPopupMenu{position:absolute;}#mermaid-1780579189855 .actorPopupMenuPanel{position:absolute;fill:#ECECFF;box-shadow:0px 8px 16px 0px rgba(0,0,0,0.2);filter:drop-shadow(3px 5px 2px rgb(0 0 0 / 0.4));}#mermaid-1780579189855 .actor-man line{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-1780579189855 .actor-man circle,#mermaid-1780579189855 line{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;stroke-width:2px;}#mermaid-1780579189855 :root{--mermaid-font-family:\"trebuchet ms\",verdana,arial,sans-serif;}</style><g></g><defs><symbol id=\"computer\" width=\"24\" height=\"24\"><path transform=\"scale(.5)\" d=\"M2 2v13h20v-13h-20zm18 11h-16v-9h16v9zm-10.228 6l.466-1h3.524l.467 1h-4.457zm14.228 3h-24l2-6h2.104l-1.33 4h18.45l-1.297-4h2.073l2 6zm-5-10h-14v-7h14v7z\"></path></symbol></defs><defs><symbol id=\"database\" fill-rule=\"evenodd\" clip-rule=\"evenodd\"><path transform=\"scale(.5)\" d=\"M12.258.001l.256.004.255.005.253.008.251.01.249.012.247.015.246.016.242.019.241.02.239.023.236.024.233.027.231.028.229.031.225.032.223.034.22.036.217.038.214.04.211.041.208.043.205.045.201.046.198.048.194.05.191.051.187.053.183.054.18.056.175.057.172.059.168.06.163.061.16.063.155.064.15.066.074.033.073.033.071.034.07.034.069.035.068.035.067.035.066.035.064.036.064.036.062.036.06.036.06.037.058.037.058.037.055.038.055.038.053.038.052.038.051.039.05.039.048.039.047.039.045.04.044.04.043.04.041.04.04.041.039.041.037.041.036.041.034.041.033.042.032.042.03.042.029.042.027.042.026.043.024.043.023.043.021.043.02.043.018.044.017.043.015.044.013.044.012.044.011.045.009.044.007.045.006.045.004.045.002.045.001.045v17l-.001.045-.002.045-.004.045-.006.045-.007.045-.009.044-.011.045-.012.044-.013.044-.015.044-.017.043-.018.044-.02.043-.021.043-.023.043-.024.043-.026.043-.027.042-.029.042-.03.042-.032.042-.033.042-.034.041-.036.041-.037.041-.039.041-.04.041-.041.04-.043.04-.044.04-.045.04-.047.039-.048.039-.05.039-.051.039-.052.038-.053.038-.055.038-.055.038-.058.037-.058.037-.06.037-.06.036-.062.036-.064.036-.064.036-.066.035-.067.035-.068.035-.069.035-.07.034-.071.034-.073.033-.074.033-.15.066-.155.064-.16.063-.163.061-.168.06-.172.059-.175.057-.18.056-.183.054-.187.053-.191.051-.194.05-.198.048-.201.046-.205.045-.208.043-.211.041-.214.04-.217.038-.22.036-.223.034-.225.032-.229.031-.231.028-.233.027-.236.024-.239.023-.241.02-.242.019-.246.016-.247.015-.249.012-.251.01-.253.008-.255.005-.256.004-.258.001-.258-.001-.256-.004-.255-.005-.253-.008-.251-.01-.249-.012-.247-.015-.245-.016-.243-.019-.241-.02-.238-.023-.236-.024-.234-.027-.231-.028-.228-.031-.226-.032-.223-.034-.22-.036-.217-.038-.214-.04-.211-.041-.208-.043-.204-.045-.201-.046-.198-.048-.195-.05-.19-.051-.187-.053-.184-.054-.179-.056-.176-.057-.172-.059-.167-.06-.164-.061-.159-.063-.155-.064-.151-.066-.074-.033-.072-.033-.072-.034-.07-.034-.069-.035-.068-.035-.067-.035-.066-.035-.064-.036-.063-.036-.062-.036-.061-.036-.06-.037-.058-.037-.057-.037-.056-.038-.055-.038-.053-.038-.052-.038-.051-.039-.049-.039-.049-.039-.046-.039-.046-.04-.044-.04-.043-.04-.041-.04-.04-.041-.039-.041-.037-.041-.036-.041-.034-.041-.033-.042-.032-.042-.03-.042-.029-.042-.027-.042-.026-.043-.024-.043-.023-.043-.021-.043-.02-.043-.018-.044-.017-.043-.015-.044-.013-.044-.012-.044-.011-.045-.009-.044-.007-.045-.006-.045-.004-.045-.002-.045-.001-.045v-17l.001-.045.002-.045.004-.045.006-.045.007-.045.009-.044.011-.045.012-.044.013-.044.015-.044.017-.043.018-.044.02-.043.021-.043.023-.043.024-.043.026-.043.027-.042.029-.042.03-.042.032-.042.033-.042.034-.041.036-.041.037-.041.039-.041.04-.041.041-.04.043-.04.044-.04.046-.04.046-.039.049-.039.049-.039.051-.039.052-.038.053-.038.055-.038.056-.038.057-.037.058-.037.06-.037.061-.036.062-.036.063-.036.064-.036.066-.035.067-.035.068-.035.069-.035.07-.034.072-.034.072-.033.074-.033.151-.066.155-.064.159-.063.164-.061.167-.06.172-.059.176-.057.179-.056.184-.054.187-.053.19-.051.195-.05.198-.048.201-.046.204-.045.208-.043.211-.041.214-.04.217-.038.22-.036.223-.034.226-.032.228-.031.231-.028.234-.027.236-.024.238-.023.241-.02.243-.019.245-.016.247-.015.249-.012.251-.01.253-.008.255-.005.256-.004.258-.001.258.001zm-9.258 20.499v.01l.001.021.003.021.004.022.005.021.006.022.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.023.018.024.019.024.021.024.022.025.023.024.024.025.052.049.056.05.061.051.066.051.07.051.075.051.079.052.084.052.088.052.092.052.097.052.102.051.105.052.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.048.144.049.147.047.152.047.155.047.16.045.163.045.167.043.171.043.176.041.178.041.183.039.187.039.19.037.194.035.197.035.202.033.204.031.209.03.212.029.216.027.219.025.222.024.226.021.23.02.233.018.236.016.24.015.243.012.246.01.249.008.253.005.256.004.259.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.021.224-.024.22-.026.216-.027.212-.028.21-.031.205-.031.202-.034.198-.034.194-.036.191-.037.187-.039.183-.04.179-.04.175-.042.172-.043.168-.044.163-.045.16-.046.155-.046.152-.047.148-.048.143-.049.139-.049.136-.05.131-.05.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.053.083-.051.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.05.023-.024.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.023.01-.022.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.127l-.077.055-.08.053-.083.054-.085.053-.087.052-.09.052-.093.051-.095.05-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.045-.118.044-.12.043-.122.042-.124.042-.126.041-.128.04-.13.04-.132.038-.134.038-.135.037-.138.037-.139.035-.142.035-.143.034-.144.033-.147.032-.148.031-.15.03-.151.03-.153.029-.154.027-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.01-.179.008-.179.008-.181.006-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.006-.179-.008-.179-.008-.178-.01-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.027-.153-.029-.151-.03-.15-.03-.148-.031-.146-.032-.145-.033-.143-.034-.141-.035-.14-.035-.137-.037-.136-.037-.134-.038-.132-.038-.13-.04-.128-.04-.126-.041-.124-.042-.122-.042-.12-.044-.117-.043-.116-.045-.113-.045-.112-.046-.109-.047-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.05-.093-.052-.09-.051-.087-.052-.085-.053-.083-.054-.08-.054-.077-.054v4.127zm0-5.654v.011l.001.021.003.021.004.021.005.022.006.022.007.022.009.022.01.022.011.023.012.023.013.023.015.024.016.023.017.024.018.024.019.024.021.024.022.024.023.025.024.024.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.052.11.051.114.051.119.052.123.05.127.051.131.05.135.049.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.044.171.042.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.022.23.02.233.018.236.016.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.012.241-.015.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.048.139-.05.136-.049.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.051.051-.049.023-.025.023-.024.021-.025.02-.024.019-.024.018-.024.017-.024.015-.023.014-.023.013-.024.012-.022.01-.023.01-.023.008-.022.006-.022.006-.022.004-.021.004-.022.001-.021.001-.021v-4.139l-.077.054-.08.054-.083.054-.085.052-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.044-.118.044-.12.044-.122.042-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.035-.143.033-.144.033-.147.033-.148.031-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.009-.179.009-.179.007-.181.007-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.007-.179-.007-.179-.009-.178-.009-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.031-.146-.033-.145-.033-.143-.033-.141-.035-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.04-.126-.041-.124-.042-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.051-.093-.051-.09-.051-.087-.053-.085-.052-.083-.054-.08-.054-.077-.054v4.139zm0-5.666v.011l.001.02.003.022.004.021.005.022.006.021.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.024.018.023.019.024.021.025.022.024.023.024.024.025.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.051.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.043.171.043.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.021.23.02.233.018.236.017.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.013.241-.014.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.049.139-.049.136-.049.131-.051.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.049.023-.025.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.022.01-.023.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.153l-.077.054-.08.054-.083.053-.085.053-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.048-.105.048-.106.048-.109.046-.111.046-.114.046-.115.044-.118.044-.12.043-.122.043-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.034-.143.034-.144.033-.147.032-.148.032-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.024-.161.024-.162.023-.163.023-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.01-.178.01-.179.009-.179.007-.181.006-.182.006-.182.004-.184.003-.184.001-.185.001-.185-.001-.184-.001-.184-.003-.182-.004-.182-.006-.181-.006-.179-.007-.179-.009-.178-.01-.176-.01-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.023-.162-.023-.161-.024-.159-.024-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.032-.146-.032-.145-.033-.143-.034-.141-.034-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.041-.126-.041-.124-.041-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.048-.105-.048-.102-.048-.1-.05-.097-.049-.095-.051-.093-.051-.09-.052-.087-.052-.085-.053-.083-.053-.08-.054-.077-.054v4.153zm8.74-8.179l-.257.004-.254.005-.25.008-.247.011-.244.012-.241.014-.237.016-.233.018-.231.021-.226.022-.224.023-.22.026-.216.027-.212.028-.21.031-.205.032-.202.033-.198.034-.194.036-.191.038-.187.038-.183.04-.179.041-.175.042-.172.043-.168.043-.163.045-.16.046-.155.046-.152.048-.148.048-.143.048-.139.049-.136.05-.131.05-.126.051-.123.051-.118.051-.114.052-.11.052-.106.052-.101.052-.096.052-.092.052-.088.052-.083.052-.079.052-.074.051-.07.052-.065.051-.06.05-.056.05-.051.05-.023.025-.023.024-.021.024-.02.025-.019.024-.018.024-.017.023-.015.024-.014.023-.013.023-.012.023-.01.023-.01.022-.008.022-.006.023-.006.021-.004.022-.004.021-.001.021-.001.021.001.021.001.021.004.021.004.022.006.021.006.023.008.022.01.022.01.023.012.023.013.023.014.023.015.024.017.023.018.024.019.024.02.025.021.024.023.024.023.025.051.05.056.05.06.05.065.051.07.052.074.051.079.052.083.052.088.052.092.052.096.052.101.052.106.052.11.052.114.052.118.051.123.051.126.051.131.05.136.05.139.049.143.048.148.048.152.048.155.046.16.046.163.045.168.043.172.043.175.042.179.041.183.04.187.038.191.038.194.036.198.034.202.033.205.032.21.031.212.028.216.027.22.026.224.023.226.022.231.021.233.018.237.016.241.014.244.012.247.011.25.008.254.005.257.004.26.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.022.224-.023.22-.026.216-.027.212-.028.21-.031.205-.032.202-.033.198-.034.194-.036.191-.038.187-.038.183-.04.179-.041.175-.042.172-.043.168-.043.163-.045.16-.046.155-.046.152-.048.148-.048.143-.048.139-.049.136-.05.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.05.051-.05.023-.025.023-.024.021-.024.02-.025.019-.024.018-.024.017-.023.015-.024.014-.023.013-.023.012-.023.01-.023.01-.022.008-.022.006-.023.006-.021.004-.022.004-.021.001-.021.001-.021-.001-.021-.001-.021-.004-.021-.004-.022-.006-.021-.006-.023-.008-.022-.01-.022-.01-.023-.012-.023-.013-.023-.014-.023-.015-.024-.017-.023-.018-.024-.019-.024-.02-.025-.021-.024-.023-.024-.023-.025-.051-.05-.056-.05-.06-.05-.065-.051-.07-.052-.074-.051-.079-.052-.083-.052-.088-.052-.092-.052-.096-.052-.101-.052-.106-.052-.11-.052-.114-.052-.118-.051-.123-.051-.126-.051-.131-.05-.136-.05-.139-.049-.143-.048-.148-.048-.152-.048-.155-.046-.16-.046-.163-.045-.168-.043-.172-.043-.175-.042-.179-.041-.183-.04-.187-.038-.191-.038-.194-.036-.198-.034-.202-.033-.205-.032-.21-.031-.212-.028-.216-.027-.22-.026-.224-.023-.226-.022-.231-.021-.233-.018-.237-.016-.241-.014-.244-.012-.247-.011-.25-.008-.254-.005-.257-.004-.26-.001-.26.001z\"></path></symbol></defs><defs><symbol id=\"clock\" width=\"24\" height=\"24\"><path transform=\"scale(.5)\" d=\"M12 2c5.514 0 10 4.486 10 10s-4.486 10-10 10-10-4.486-10-10 4.486-10 10-10zm0-2c-6.627 0-12 5.373-12 12s5.373 12 12 12 12-5.373 12-12-5.373-12-12-12zm5.848 12.459c.202.038.202.333.001.372-1.907.361-6.045 1.111-6.547 1.111-.719 0-1.301-.582-1.301-1.301 0-.512.77-5.447 1.125-7.445.034-.192.312-.181.343.014l.985 6.238 5.394 1.011z\"></path></symbol></defs><defs><marker id=\"arrowhead\" refX=\"7.9\" refY=\"5\" markerUnits=\"userSpaceOnUse\" markerWidth=\"12\" markerHeight=\"12\" orient=\"auto-start-reverse\"><path d=\"M -1 0 L 10 5 L 0 10 z\"></path></marker></defs><defs><marker id=\"crosshead\" markerWidth=\"15\" markerHeight=\"8\" orient=\"auto\" refX=\"4\" refY=\"4.5\"><path fill=\"none\" stroke=\"#000000\" stroke-width=\"1pt\" d=\"M 1,2 L 6,7 M 6,2 L 1,7\" style=\"stroke-dasharray: 0, 0;\"></path></marker></defs><defs><marker id=\"filled-head\" refX=\"15.5\" refY=\"7\" markerWidth=\"20\" markerHeight=\"28\" orient=\"auto\"><path d=\"M 18,7 L9,13 L14,7 L9,1 Z\"></path></marker></defs><defs><marker id=\"sequencenumber\" refX=\"15\" refY=\"15\" markerWidth=\"60\" markerHeight=\"40\" orient=\"auto\"><circle cx=\"15\" cy=\"15\" r=\"6\"></circle></marker></defs><g><rect x=\"1173\" y=\"168\" fill=\"#EDF2AE\" stroke=\"#666\" width=\"10\" height=\"170\" class=\"activation0\"></rect></g><g><rect x=\"50\" y=\"176\" fill=\"#EDF2AE\" stroke=\"#666\" width=\"1153\" height=\"108\" class=\"note\"></rect><text x=\"627\" y=\"181\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"noteText\" dy=\"1em\" style=\"font-size: 16px; font-weight: 400;\"><tspan x=\"627\">Merchant operations create enrollment via portal or API.</tspan></text><text x=\"627\" y=\"203\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"noteText\" dy=\"1em\" style=\"font-size: 16px; font-weight: 400;\"><tspan x=\"627\">The enrollment has an expiration date and metadata (key-value)</tspan></text><text x=\"627\" y=\"225\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"noteText\" dy=\"1em\" style=\"font-size: 16px; font-weight: 400;\"><tspan x=\"627\">that will be carried over to the device record once pairing code is linked to the device</tspan></text><text x=\"627\" y=\"247\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"noteText\" dy=\"1em\" style=\"font-size: 16px; font-weight: 400;\"><tspan x=\"627\">and could be used to query devices.</tspan></text></g><g><line x1=\"40\" y1=\"75\" x2=\"1213\" y2=\"75\" class=\"loopLine\"></line><line x1=\"1213\" y1=\"75\" x2=\"1213\" y2=\"348\" class=\"loopLine\"></line><line x1=\"40\" y1=\"348\" x2=\"1213\" y2=\"348\" class=\"loopLine\"></line><line x1=\"40\" y1=\"75\" x2=\"40\" y2=\"348\" class=\"loopLine\"></line><polygon points=\"40,75 90,75 90,88 81.6,95 40,95\" class=\"labelBox\"></polygon><text x=\"65\" y=\"88\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"labelText\" style=\"font-size: 16px; font-weight: 400;\">critical</text><text x=\"651.5\" y=\"93\" text-anchor=\"middle\" class=\"loopText\" style=\"font-size: 16px; font-weight: 400;\"><tspan x=\"651.5\">[Authentication using API keys]</tspan></text></g><g><rect x=\"50\" y=\"459\" fill=\"#EDF2AE\" stroke=\"#666\" width=\"564\" height=\"42\" class=\"note\"></rect><text x=\"332\" y=\"464\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"noteText\" dy=\"1em\" style=\"font-size: 16px; font-weight: 400;\"><tspan x=\"332\">Merchants decide how to distribute the pairing code.</tspan></text></g><g><rect x=\"1173\" y=\"611\" fill=\"#EDF2AE\" stroke=\"#666\" width=\"10\" height=\"126\" class=\"activation0\"></rect></g><g><rect x=\"770\" y=\"619\" fill=\"#EDF2AE\" stroke=\"#666\" width=\"433\" height=\"64\" class=\"note\"></rect><text x=\"987\" y=\"624\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"noteText\" dy=\"1em\" style=\"font-size: 16px; font-weight: 400;\"><tspan x=\"987\">Use pairing code to register device</tspan></text><text x=\"987\" y=\"646\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"noteText\" dy=\"1em\" style=\"font-size: 16px; font-weight: 400;\"><tspan x=\"987\">and connect it to merchant</tspan></text></g><g><rect x=\"770\" y=\"747\" fill=\"#EDF2AE\" stroke=\"#666\" width=\"433\" height=\"64\" class=\"note\"></rect><text x=\"987\" y=\"752\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"noteText\" dy=\"1em\" style=\"font-size: 16px; font-weight: 400;\"><tspan x=\"987\">Credentials returned at this point will</tspan></text><text x=\"987\" y=\"774\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"noteText\" dy=\"1em\" style=\"font-size: 16px; font-weight: 400;\"><tspan x=\"987\">be used for further API requests from Kustom POS</tspan></text></g><g><line x1=\"40\" y1=\"358\" x2=\"1213\" y2=\"358\" class=\"loopLine\"></line><line x1=\"1213\" y1=\"358\" x2=\"1213\" y2=\"821\" class=\"loopLine\"></line><line x1=\"40\" y1=\"821\" x2=\"1213\" y2=\"821\" class=\"loopLine\"></line><line x1=\"40\" y1=\"358\" x2=\"40\" y2=\"821\" class=\"loopLine\"></line><polygon points=\"40,358 90,358 90,371 81.6,378 40,378\" class=\"labelBox\"></polygon><text x=\"65\" y=\"371\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"labelText\" style=\"font-size: 16px; font-weight: 400;\">critical</text><text x=\"651.5\" y=\"376\" text-anchor=\"middle\" class=\"loopText\" style=\"font-size: 16px; font-weight: 400;\"><tspan x=\"651.5\">[No authentication]</tspan></text></g><g class=\"actor-man actor-top\" name=\"Merchant Ops\"><line id=\"actor-man-torso0\" x1=\"75\" y1=\"25\" x2=\"75\" y2=\"45\"></line><line id=\"actor-man-arms0\" x1=\"57\" y1=\"33\" x2=\"93\" y2=\"33\"></line><line x1=\"57\" y1=\"60\" x2=\"75\" y2=\"45\"></line><line x1=\"75\" y1=\"45\" x2=\"91\" y2=\"60\"></line><circle cx=\"75\" cy=\"10\" r=\"15\" width=\"150\" height=\"65\"></circle><text x=\"75\" y=\"67.5\" dominant-baseline=\"central\" alignment-baseline=\"central\" class=\"actor actor-man\" style=\"text-anchor: middle; font-size: 16px; font-weight: 400;\"><tspan x=\"75\" dy=\"0\">Merchant Ops</tspan></text></g><g class=\"actor-man actor-top\" name=\"Shopper\"><line id=\"actor-man-torso1\" x1=\"332\" y1=\"25\" x2=\"332\" y2=\"45\"></line><line id=\"actor-man-arms1\" x1=\"314\" y1=\"33\" x2=\"350\" y2=\"33\"></line><line x1=\"314\" y1=\"60\" x2=\"332\" y2=\"45\"></line><line x1=\"332\" y1=\"45\" x2=\"348\" y2=\"60\"></line><circle cx=\"332\" cy=\"10\" r=\"15\" width=\"150\" height=\"65\"></circle><text x=\"332\" y=\"67.5\" dominant-baseline=\"central\" alignment-baseline=\"central\" class=\"actor actor-man\" style=\"text-anchor: middle; font-size: 16px; font-weight: 400;\"><tspan x=\"332\" dy=\"0\">Shopper</tspan></text></g><g class=\"actor-man actor-top\" name=\"Store Clerk\"><line id=\"actor-man-torso2\" x1=\"589\" y1=\"25\" x2=\"589\" y2=\"45\"></line><line id=\"actor-man-arms2\" x1=\"571\" y1=\"33\" x2=\"607\" y2=\"33\"></line><line x1=\"571\" y1=\"60\" x2=\"589\" y2=\"45\"></line><line x1=\"589\" y1=\"45\" x2=\"605\" y2=\"60\"></line><circle cx=\"589\" cy=\"10\" r=\"15\" width=\"150\" height=\"65\"></circle><text x=\"589\" y=\"67.5\" dominant-baseline=\"central\" alignment-baseline=\"central\" class=\"actor actor-man\" style=\"text-anchor: middle; font-size: 16px; font-weight: 400;\"><tspan x=\"589\" dy=\"0\">Store Clerk</tspan></text></g><text x=\"623\" y=\"127\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-size: 16px; font-weight: 400;\">Create enrollment</text><line x1=\"76\" y1=\"166\" x2=\"1170\" y2=\"166\" class=\"messageLine0\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#arrowhead)\" style=\"fill: none;\"></line><text x=\"626\" y=\"299\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-size: 16px; font-weight: 400;\">Return pairing code</text><line x1=\"1173\" y1=\"338\" x2=\"79\" y2=\"338\" class=\"messageLine0\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#arrowhead)\" style=\"fill: none;\"></line><text x=\"331\" y=\"410\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-size: 16px; font-weight: 400;\">Sends pairing code</text><line x1=\"76\" y1=\"449\" x2=\"585\" y2=\"449\" class=\"messageLine0\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#arrowhead)\" style=\"fill: none;\"></line><text x=\"691\" y=\"516\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-size: 16px; font-weight: 400;\">Enter pairing code</text><line x1=\"590\" y1=\"555\" x2=\"791\" y2=\"555\" class=\"messageLine0\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#arrowhead)\" style=\"fill: none;\"></line><text x=\"983\" y=\"570\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-size: 16px; font-weight: 400;\">Register device</text><line x1=\"796\" y1=\"609\" x2=\"1170\" y2=\"609\" class=\"messageLine0\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#arrowhead)\" style=\"fill: none;\"></line><text x=\"986\" y=\"698\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-size: 16px; font-weight: 400;\">Return device record and auth credentials</text><line x1=\"1173\" y1=\"737\" x2=\"799\" y2=\"737\" class=\"messageLine0\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#arrowhead)\" style=\"fill: none;\"></line><g class=\"actor-man actor-bottom\" name=\"Merchant Ops\"><line id=\"actor-man-torso4\" x1=\"75\" y1=\"866\" x2=\"75\" y2=\"886\"></line><line id=\"actor-man-arms4\" x1=\"57\" y1=\"874\" x2=\"93\" y2=\"874\"></line><line x1=\"57\" y1=\"901\" x2=\"75\" y2=\"886\"></line><line x1=\"75\" y1=\"886\" x2=\"91\" y2=\"901\"></line><circle cx=\"75\" cy=\"851\" r=\"15\" width=\"150\" height=\"65\"></circle><text x=\"75\" y=\"908.5\" dominant-baseline=\"central\" alignment-baseline=\"central\" class=\"actor actor-man\" style=\"text-anchor: middle; font-size: 16px; font-weight: 400;\"><tspan x=\"75\" dy=\"0\">Merchant Ops</tspan></text></g><g class=\"actor-man actor-bottom\" name=\"Shopper\"><line id=\"actor-man-torso4\" x1=\"332\" y1=\"866\" x2=\"332\" y2=\"886\"></line><line id=\"actor-man-arms4\" x1=\"314\" y1=\"874\" x2=\"350\" y2=\"874\"></line><line x1=\"314\" y1=\"901\" x2=\"332\" y2=\"886\"></line><line x1=\"332\" y1=\"886\" x2=\"348\" y2=\"901\"></line><circle cx=\"332\" cy=\"851\" r=\"15\" width=\"150\" height=\"65\"></circle><text x=\"332\" y=\"908.5\" dominant-baseline=\"central\" alignment-baseline=\"central\" class=\"actor actor-man\" style=\"text-anchor: middle; font-size: 16px; font-weight: 400;\"><tspan x=\"332\" dy=\"0\">Shopper</tspan></text></g><g class=\"actor-man actor-bottom\" name=\"Store Clerk\"><line id=\"actor-man-torso4\" x1=\"589\" y1=\"866\" x2=\"589\" y2=\"886\"></line><line id=\"actor-man-arms4\" x1=\"571\" y1=\"874\" x2=\"607\" y2=\"874\"></line><line x1=\"571\" y1=\"901\" x2=\"589\" y2=\"886\"></line><line x1=\"589\" y1=\"886\" x2=\"605\" y2=\"901\"></line><circle cx=\"589\" cy=\"851\" r=\"15\" width=\"150\" height=\"65\"></circle><text x=\"589\" y=\"908.5\" dominant-baseline=\"central\" alignment-baseline=\"central\" class=\"actor actor-man\" style=\"text-anchor: middle; font-size: 16px; font-weight: 400;\"><tspan x=\"589\" dy=\"0\">Store Clerk</tspan></text></g></svg></div>"},"children":["sequenceDiagram\n\tactor Merchant Ops\n\tactor Shopper\n\tactor Store Clerk\n\tparticipant Kustom POS\n\tparticipant Device API\n\t\n\tcritical Authentication using API keys\n\t\tMerchant Ops->>+Device API: Create enrollment\n\t  Note over Merchant Ops,Device API: Merchant operations create enrollment via portal or API.<br>The enrollment has an expiration date and metadata (key-value)<br>that will be carried over to the device record once pairing code is linked to the device<br>and could be used to query devices.\n\t  Device API->>-Merchant Ops: Return pairing code\n  end\n\n  critical No authentication\n\t  Merchant Ops->>Store Clerk: Sends pairing code\n\t  Note over Merchant Ops,Store Clerk: Merchants decide how to distribute the pairing code.\n\t  Store Clerk->>Kustom POS: Enter pairing code\n\t\n\t  Kustom POS->>+Device API: Register device\n\t\tNote over Kustom POS,Device API: Use pairing code to register device<br>and connect it to merchant\n\t\tDevice API->>-Kustom POS: Return device record and auth credentials\n\t\tNote over Kustom POS,Device API: Credentials returned at this point will<br>be used for further API requests from Kustom POS\n\tend\n"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"create-an-enrollment","__idx":3},"children":["Create an enrollment"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Generates a short-lived pairing code. The metadata you provide in the enrollment is carried over to the device record once paired, and can be used later to filter devices."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":4,"id":"generate-an-enrollment-code","__idx":4},"children":["Generate an enrollment code"]},{"$$mdtype":"Tag","name":"OpenApiCodeSample","attributes":{"descriptionFile":"oas-contents/api/in-person-payments.json","operationId":"createEnrollment","parameters":{},"requestBody":{"metadata":{"username":"john.doe","type":"android"},"expires_in":36000,"location_id":"46910cc3-ab41-4b80-b4a7-94dab9f1b795"},"environments":{}},"children":[]},{"$$mdtype":"Tag","name":"OpenApiResponseSample","attributes":{"descriptionFile":"oas-contents/api/in-person-payments.json","operationId":"createEnrollment"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Share the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["enrollment_code"]}," with the store clerk, and they will enter it in the Kustom POS app. The app then calls the device registration endpoint (unauthenticated) and receives a device bearer token. This is handled entirely by the app; no further action is needed from your backend."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"enrollment-status","__idx":5},"children":["Enrollment status"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Status"},"children":["Status"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Meaning"},"children":["Meaning"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["PENDING"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Code generated, not yet entered by a clerk."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["CONSUMED"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Device successfully registered."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["EXPIRED"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Code not used before ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["expires_at"]},". Please generate a new enrollment."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["CANCELLED"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Manually deleted via ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["DELETE /ipp/v1/enrollments/{id}"]},"."]}]}]}]}]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"warning"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["CANCELLED"]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["EXPIRED"]}," enrollments are excluded from the list results. If the code expires before the clerk enters it, create a new enrollment."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"manage-registered-devices","__idx":6},"children":["Manage registered devices"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Once enrolled, a device has a stable ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["device_id"]},", which you use when creating sessions. The device metadata (carried over from the enrollment) can be used to filter devices in list queries."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":4,"id":"list-devices","__idx":7},"children":["List devices"]},{"$$mdtype":"Tag","name":"OpenApiCodeSample","attributes":{"descriptionFile":"oas-contents/api/in-person-payments.json","operationId":"listDevices","parameters":{},"environments":{}},"children":[]},{"$$mdtype":"Tag","name":"OpenApiResponseSample","attributes":{"descriptionFile":"oas-contents/api/in-person-payments.json","operationId":"listDevices"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":4,"id":"update-device","__idx":8},"children":["Update device"]},{"$$mdtype":"Tag","name":"OpenApiCodeSample","attributes":{"descriptionFile":"oas-contents/api/in-person-payments.json","operationId":"updateDevice","parameters":{},"environments":{}},"children":[]},{"$$mdtype":"Tag","name":"OpenApiResponseSample","attributes":{"descriptionFile":"oas-contents/api/in-person-payments.json","operationId":"updateDevice"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":4,"id":"deregister-a-device","__idx":9},"children":["Deregister a device"]},{"$$mdtype":"Tag","name":"OpenApiCodeSample","attributes":{"descriptionFile":"oas-contents/api/in-person-payments.json","operationId":"deregisterDevice","parameters":{},"environments":{}},"children":[]},{"$$mdtype":"Tag","name":"OpenApiResponseSample","attributes":{"descriptionFile":"oas-contents/api/in-person-payments.json","operationId":"deregisterDevice"},"children":[]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"info"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Deregistering a device revokes its bearer token immediately. The clerk will need to re-enroll if the device is to be used again."]}]}]},"headings":[{"value":"Enroll a Device","id":"enroll-a-device","depth":1},{"value":"Participants","id":"participants","depth":2},{"value":"How enrollment works","id":"how-enrollment-works","depth":2},{"value":"Create an enrollment","id":"create-an-enrollment","depth":2},{"value":"Generate an enrollment code","id":"generate-an-enrollment-code","depth":4},{"value":"Enrollment status","id":"enrollment-status","depth":3},{"value":"Manage registered devices","id":"manage-registered-devices","depth":2},{"value":"List devices","id":"list-devices","depth":4},{"value":"Update device","id":"update-device","depth":4},{"value":"Deregister a device","id":"deregister-a-device","depth":4}],"frontmatter":{"title":"Enroll a Device","description":"Generate an enrollment code via the API, then have a store clerk enter it in the Kustom POS app. The app registers the device and receives a bearer token for further requests.","seo":{"title":"Enroll a Device"}},"lastModified":"2026-06-10T07:37:02.000Z","pagePropGetterError":{"message":"","name":""}},"slug":"/contents/checkout/in-person-payments/enroll-device","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}