{"templateId":"markdown","sharedDataIds":{"sidebar":"sidebar-contents/checkout/sidebars.yaml"},"props":{"metadata":{"markdoc":{"tagList":["admonition"]},"type":"markdown"},"seo":{"title":"In-Person Payments Integration Guide","description":"Explore our documentation and API and start integrating Kustom Checkout","llmstxt":{"hide":false,"sections":[{"title":"Table of contents","includeFiles":["**/*"],"excludeFiles":[]}],"excludeFiles":[]}},"dynamicMarkdocComponents":[],"compilationErrors":[],"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"in-person-payments-integration-guide","__idx":0},"children":["In-Person Payments Integration Guide"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Accept in-store card payments through your existing Kustom integration. Your backend creates a payment session, which is dispatched to a store clerk's device. The clerk collects the payment, and Kustom delivers lifecycle callbacks back to you."]},{"$$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":""},"children":[]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":""},"children":[]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Reading time"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["~15 minutes"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Time to first test payment"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["~30 minutes"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Prerequisites"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["In-Person Payments enabled on your account, a Kustom API key, and a device running the Kustom POS app"]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"enablement","__idx":1},"children":["Enablement"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["In-Person Payments is enabled per account. To get started, ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["please reach out to your Kustom representative"]}," and request that the product be enabled. Once it’s enabled, your API key gains access to the /ipp/v1 endpoints, and you can begin enrolling devices."]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"info"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The In-Person Payments API is separate from the Checkout API. It lives at ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["/ipp/v1"]}," and uses the same API key authentication."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Before you can process in-person payments, you need the Kustom POS app on your terminal device. Follow the steps below to authenticate and begin using the API."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"download-the-kustom-pos-app","__idx":2},"children":["Download the Kustom POS app"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["A store clerk collects payments using the ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Kustom POS app"]},", which runs on the terminal device. Download it from the App Store (iOS) or Google Play (Android):"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"a","attributes":{"href":"https://apps.apple.com/se/app/kustom/id6742444903"},"children":["Download on the App Store"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"a","attributes":{"href":"https://play.google.com/store/apps/details?id=co.kustom.kustom&hl=en"},"children":["Get it on Google Play"]}]}]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"info"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["A ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Playground (sandbox) version"]}," of the app is available for both iOS and Android, allowing you to test against the playground without affecting live payments. Ask your Kustom representative to provide it to you."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"three-concepts","__idx":3},"children":["Three concepts"]},{"$$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":"Concept"},"children":["Concept"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"What it is"},"children":["What it is"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Enrollment"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["A one-time pairing code that links a physical device to your merchant account. A clerk enters the 8-character code in the Kustom POS app to register the device."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Device"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["A registered terminal — ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["your own smartphone"]}," (iPhone or Android) running the Kustom POS app. Once enrolled, a device has a stable ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["device_id"]}," you use to dispatch sessions to it."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Session"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["A single payment request. Your backend creates a session with the cart and a target ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["device_id"]},". Kustom pushes it to the device instantly."]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"whats-in-this-guide","__idx":4},"children":["What's in this guide"]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"a","attributes":{"href":"/contents/checkout/in-person-payments/enroll-device"},"children":["Enroll a Device"]}," — Create enrollment codes, register devices"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"a","attributes":{"href":"/contents/checkout/in-person-payments/create-session"},"children":["Create a Session"]}," — Dispatch payment requests to devices"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"a","attributes":{"href":"/contents/checkout/in-person-payments/callbacks"},"children":["Receive Callbacks"]}," — Session lifecycle events and order creation"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"a","attributes":{"href":"/contents/checkout/in-person-payments/testing"},"children":["Testing"]}," — Simulate devices and card taps without real hardware"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"a","attributes":{"href":"/contents/api/in-person-payments"},"children":["API Reference"]}," — Full endpoint reference"]}]}]},"headings":[{"value":"In-Person Payments Integration Guide","id":"in-person-payments-integration-guide","depth":1},{"value":"Enablement","id":"enablement","depth":2},{"value":"Download the Kustom POS app","id":"download-the-kustom-pos-app","depth":2},{"value":"Three concepts","id":"three-concepts","depth":2},{"value":"What's in this guide","id":"whats-in-this-guide","depth":2}],"frontmatter":{"title":"In-Person Payments Integration Guide","description":"Accept in-store card payments through your existing Kustom integration. Your backend creates payment sessions dispatched to terminal devices — no separate payment stack needed.","seo":{"title":"In-Person Payments Integration Guide"}},"lastModified":"2026-06-10T07:37:02.000Z","pagePropGetterError":{"message":"","name":""}},"slug":"/contents/checkout/in-person-payments","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}