> ## Documentation Index
> Fetch the complete documentation index at: https://terminal-docs.xendit.co/llms.txt
> Use this file to discover all available pages before exploring further.

# Gateway

> Configure Terminal Gateway app settings, connection types, and device management for Xendit Payment Terminal integration

# Terminal Gateway App Configuration

The Terminal Gateway app helps developers integrate their application with Xendit supported terminal devices. Configure connection types, manage devices, and monitor terminal status through an intuitive interface.

<Info>
  This app works alongside the Terminal API to provide complete in-person
  payment functionality. You'll use the Terminal API to create payment sessions
  and this app to manage terminal device connections.
</Info>

## Version information

<AccordionGroup>
  <Accordion title="v1.9.0 — 8-May-2026">
    What's new:

    * **Improved Resource Management**: Proper cleanup of observer jobs to prevent memory leaks and ensure optimal performance
    * **Activity Tracking Fix**: Resolved bug where paused activities were not properly removed from the internal tracking list
    * **Enhanced Error Handling**: Show Unsupported error for any invalid action to improve error visibility and debugging
    * **Use System Overlay** \[Android]: New setting to show pending transactions as overlay instead of notification for better visibility
    * **Print Receipt Setting**: Added Cashup provider setting to enable or disable receipt printing after transactions
  </Accordion>

  <Accordion title="v1.8.0 — 23-Apr-2026">
    What's new:

    * Added Cashup provider support for Indonesian terminals
    * Fixed an issue where the C2C server restarted when launching the app
  </Accordion>

  <Accordion title="v1.7.1 — 12-Mar-2026">
    Bug fixes and improvements:

    * Fixed text field not editable in configuration and input screens
    * \[Android] Fixed export log issue so logs export correctly
  </Accordion>

  <Accordion title="View all versions">
    <Accordion title="v1.7.0 — 19-Feb-2026">
      What's new:

      * Added Cashup provider support for Indonesian terminals
      * Made the client-to-client port static at 8189 for consistent POS connectivity
    </Accordion>

    <AccordionGroup>
      <Accordion title="v1.6.0 — 5-Dec-2025">
        What's new:

        * Fixed the NTT payment method value to ensure correct provider mapping
        * Updated the BRI payment flow to validate transaction data before performing terminal actions
        * Added timeout configuration for card and QR transactions to control operation windows
        * Added support to handle retry requests via <a href="/api-reference/payments-terminal-api/retry-terminal-payment-session">`/v1/terminal/sessions/{id}/retry`</a> endpoint
      </Accordion>

      <Accordion title="v1.5.0 — 20-Nov-2025">
        What's new:

        * Added support for multiple concurrent device connections so you can orchestrate simultaneous sessions across different terminals
        * \[BRI] Fixed status value handling in void and cancel API responses for improved transaction status accuracy
        * Enhanced the Android app lifecycle with a splash screen, notification handling, and provider app launcher support for a smoother user experience
        * Fixed client-to-client API calls and the associated request queue to prevent stalled commands
      </Accordion>

      <Accordion title="v1.4.0 — 30-Oct-2025">
        New features and improvements:

        * Added transaction timeout configuration with UI support and validation
        * Introduced command ID handling for settlement operations
        * Enhanced retry logic with configurable attempt counts
        * Improved error handling and logging throughout the gateway service
        * In-app version update
        * Renamed to Gateway with updated icons
      </Accordion>

      <Accordion title="v1.3.2 — 7-Oct-2025">
        Bug fixes and improvements:

        * Fix data mapping for terminal responses
        * Hide device's restart button when connection mode is C2C
        * Fix "restart service" button behavior on C2C mode
        * \[BRI] Enhanced status verification after transaction timeout for improved reliability
      </Accordion>

      <Accordion title="v1.3.1 — 26-Sep-2025">
        Bug fixes and improvements:

        * Fix UI issue
        * Fix date time parser issue
        * Fix test flag toggle not showing correct state on app open
      </Accordion>

      <Accordion title="v1.3.0 — 11-Sep-2025">
        Update UI/UX for improved user experience and interface design.
      </Accordion>

      <Accordion title="v1.2.1 — 27-Aug-2025">
        Remove timezone pinning for the BRI terminal. Fix an issue where the app
        executes the same command after a transaction completes.
      </Accordion>

      <Accordion title="v1.2.0 — 7-June-2025">
        Terminal H2H is the companion SDK to In-Person Payments Terminal API.
      </Accordion>
    </AccordionGroup>
  </Accordion>
</AccordionGroup>

<Note>
  The app follows semantic versioning. Breaking changes will bump the major
  version number.
</Note>

## Download the app

Choose your operating system to download the Terminal Gateway app installer:

<CardGroup cols={2}>
  <Card title="macOS (.dmg)" icon="apple">
    Download the macOS installer (v1.9.0).

    ```
    SHA256:98cae57b63bd56bfc7ea94f93efd4abcf66103a953f2001e48dc9c5da74fabe3
    ```

    <a href="https://xnd-secops.s3.ap-southeast-1.amazonaws.com/inpersonpayments/Xendit+Terminal+Gateway-1.9.0.dmg" className="inline-flex items-center justify-center rounded-md bg-blue-600 px-4 py-2 text-sm font-semibold text-white shadow-sm hover:bg-blue-500 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-blue-500 focus-visible:ring-offset-2">
      Download for macOS
    </a>
  </Card>

  <Card title="Windows (.msi)" icon="windows">
    Download the Windows installer (v1.9.0).

    ```
    SHA256:bbd1af76d4f5cdfd146aadb72b0824f1fc0a8f459c0e4a6c2d500508de4bc509
    ```

    <a href="https://xnd-secops.s3.ap-southeast-1.amazonaws.com/inpersonpayments/Xendit+Terminal+Gateway-1.9.0.msi" className="inline-flex items-center justify-center rounded-md bg-blue-600 px-4 py-2 text-sm font-semibold text-white shadow-sm hover:bg-blue-500 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-blue-500 focus-visible:ring-offset-2">
      Download for Windows
    </a>
  </Card>

  <Card title="Android (.apk)" icon="android">
    Download the Android APK (v1.9.0).

    ```
    SHA256:4bf973549d0a305eb517a366f5b7c8a9340c54c40bfed09dc077a54cb77b7f74
    ```

    <a href="https://xnd-secops.s3.ap-southeast-1.amazonaws.com/inpersonpayments/Xendit+Terminal+Gateway-1.9.0.apk" className="inline-flex items-center justify-center rounded-md bg-blue-600 px-4 py-2 text-sm font-semibold text-white shadow-sm hover:bg-blue-500 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-blue-500 focus-visible:ring-offset-2">
      Download for Android
    </a>
  </Card>
</CardGroup>

## Getting Started

Before starting, you'll need a terminal CLIENT\_KEY from the Xendit In-Person Payments team and add a device.

<Warning>
  Keep your client key secure and never share it with unauthorized parties. Use
  test keys for development and production keys only for live environments.
</Warning>

<Steps>
  <Step title="Enter Client Key">
    When the app opens for the first time, a modal will appear. Enter your testing CLIENT\_KEY in the "Test API Key" field and click "Save".

    <Frame>
      <img src="https://mintcdn.com/xendit/79NehsWB8-Vpp9n7/images/app/enter-client-key.png?fit=max&auto=format&n=79NehsWB8-Vpp9n7&q=85&s=40f0b8f7a9b8a94a158b3af6c9974771" alt="Entering client key in Terminal Gateway app modal" width="3024" height="1890" data-path="images/app/enter-client-key.png" />
    </Frame>
  </Step>

  <Step title="Add Your First Device">
    Click "+ Add Your First Device" to link a terminal device.

    <Frame>
      <img src="https://mintcdn.com/xendit/79NehsWB8-Vpp9n7/images/app/add-first-device.png?fit=max&auto=format&n=79NehsWB8-Vpp9n7&q=85&s=0e123b15856d25658860a0d87967a013" alt="Adding first device in Terminal Gateway app" width="3024" height="1890" data-path="images/app/add-first-device.png" />
    </Frame>
  </Step>

  <Step title="Configure Device">
    Fill in <a href="#finding-terminal-information">Terminal ID</a> and <a href="#finding-terminal-information">IP Address</a>, and click "Add Device" button.

    <Frame>
      <img src="https://mintcdn.com/xendit/79NehsWB8-Vpp9n7/images/app/fill-terminal-id-ip.png?fit=max&auto=format&n=79NehsWB8-Vpp9n7&q=85&s=ed8cdf17fbc3d7f146e8473a8c28baf9" alt="Filling in terminal ID and IP address configuration" width="3024" height="1890" data-path="images/app/fill-terminal-id-ip.png" />
    </Frame>
  </Step>

  <Step title="Test Connection">
    The app will test the connection with the added device and run the service. The app is now accepting commands.

    <Frame>
      <img src="https://mintcdn.com/xendit/79NehsWB8-Vpp9n7/images/app/app-test-connection.jpg?fit=max&auto=format&n=79NehsWB8-Vpp9n7&q=85&s=f1e5f052fea6156ac0e5537c85a7478b" alt="Terminal Gateway app testing connection with device" width="1281" height="946" data-path="images/app/app-test-connection.jpg" />
    </Frame>

    <Check>
      Your Terminal Gateway app is now ready to accept commands from your POS system.
    </Check>
  </Step>
</Steps>

## Connection Types

The Terminal Gateway app supports two connection modes for different integration scenarios:

<Tabs>
  <Tab title="Host-to-Host (Default)">
    **Recommended for most use cases** - The app runs a host-to-host service that manages your terminal fleet centrally.

    <Steps>
      <Step title="Default Configuration">
        The app automatically runs in host-to-host mode when first launched.
      </Step>

      <Step title="Manage Terminals">
        Add and manage multiple terminal devices through the app interface.
      </Step>

      <Step title="Centralized Control">
        All terminal communications are handled through the app's centralized
        service.
      </Step>
    </Steps>

    <Tip>
      Host-to-host mode is ideal for managing multiple terminals and provides easier fleet management.
    </Tip>
  </Tab>

  <Tab title="Client-to-Client">
    For detailed information about client-to-client integration, including when to use it and setup requirements, see the <a href="/api-reference/c2c/introduction">RESTful API</a>.

    <Steps>
      <Step title="Open Settings">
        Click the 'Settings' button in the app.

        <Frame>
          <img src="https://mintcdn.com/xendit/79NehsWB8-Vpp9n7/images/app/settings.jpg?fit=max&auto=format&n=79NehsWB8-Vpp9n7&q=85&s=856955e90f44c93f11ceaa0470cdcd36" alt="Terminal Gateway app settings screen" width="1683" height="901" data-path="images/app/settings.jpg" />
        </Frame>
      </Step>

      <Step title="Select Connection Type">
        Select the 'Connection Type' menu item.
      </Step>

      <Step title="Enable Client-to-Client">
        Enable the 'Client to Client' toggle on the top-right side, and then **go
        back** to the home screen.
      </Step>

      <Step title="Verify Connection">
        The **client-to-client** server is running, and now the POS can send commands directly to the Terminal device.

        <Check>
          Your app is now running in client-to-client mode for direct terminal communication.
        </Check>
      </Step>
    </Steps>

    <Info>
      Client-to-client connection provides more localized integration but requires direct network access to your terminal devices.
    </Info>
  </Tab>
</Tabs>

## Environment Configuration

Configure the app for different environments based on your development and production needs:

<Tabs>
  <Tab title="Test Mode (Default)">
    **For development and testing** - Use test client keys and sandbox environment.

    <Steps>
      <Step title="Initial Setup">
        When the app opens for the first time, enter your testing CLIENT\_KEY in the
        "Test API Key" field.
      </Step>

      <Step title="Test Transactions">
        All transactions are processed in test mode and won't affect real payment
        data.
      </Step>
    </Steps>

    <Note>
      Test mode is enabled by default and uses the test environment for all transactions.
    </Note>
  </Tab>

  <Tab title="Production Mode">
    **For live environments** - Use production client keys and live payment processing.

    <Steps>
      <Step title="Switch to Production">
        Untoggle the "Test mode" toggle in the app settings.
      </Step>

      <Step title="Enter Production Key">
        A modal will appear to input your **production** In-Person Payment
        CLIENT\_KEY.
      </Step>

      <Step title="Verify Configuration">
        Confirm all settings are correct before processing live transactions.
      </Step>
    </Steps>

    <Warning>
      Make sure you have the correct production CLIENT\_KEY before switching to production mode. Test thoroughly in test mode first.
    </Warning>
  </Tab>
</Tabs>

## Transaction Timeout

Use transaction timeouts to auto-cancel in the app and reissue transactions when a terminal does not respond in time. You can set independent limits for card and QR flows.

<Steps>
  <Step title="Open Settings">
    Click the settings icon in the top-right corner of the app home screen.
  </Step>

  <Step title="Select Transaction Timeout">
    In Settings, choose **Transaction Timeout** under the Network section.

    <Frame>
      <img src="https://mintcdn.com/xendit/hOlPmIVORAWxWSrs/images/app/transaction-timeout-settings.png?fit=max&auto=format&n=hOlPmIVORAWxWSrs&q=85&s=321eb80517c09659239e3e920bb513a9" alt="Gateway app settings screen showing the Transaction Timeout option under Network" width="1824" height="1424" data-path="images/app/transaction-timeout-settings.png" />
    </Frame>
  </Step>

  <Step title="Configure Card and QR timeouts">
    * Card Timeout (minutes) — maximum time the terminal has to complete a card transaction before the app auto-cancels and retries the transaction.
    * QR Timeout (minutes) — maximum time for QR transactions before the app auto-cancels and retries the transaction.
  </Step>

  <Step title="Save changes">
    Click **Save Changes** to apply the new timeouts.
  </Step>
</Steps>

## Use System Overlay (Android)

Enable system overlay to display pending transactions as an overlay window instead of a notification. This provides better visibility for ongoing transactions on Android devices.

<Note>
  This feature is only available on Android devices and requires system permission to display over other apps. Note that this feature may not be accessible on certain terminal devices due to system restrictions.
</Note>

<Steps>
  <Step title="Open Settings and Enable Overlay">
    Navigate to the app settings and toggle on "Use System Overlay". Click the "Open Settings" button to grant the required permission.

    <Frame>
      <img src="https://mintcdn.com/xendit/Rc1T2JrTxM5Uwi25/images/app/use-system-overlay.png?fit=max&auto=format&n=Rc1T2JrTxM5Uwi25&q=85&s=5ed503cc1f0b5fe93396f348edcf9998" alt="Gateway app settings showing Use System Overlay toggle and Open Settings button" width="720" height="705" data-path="images/app/use-system-overlay.png" />
    </Frame>
  </Step>

  <Step title="Find Xendit App">
    In the system settings list, find and click on the Xendit app.

    <Frame>
      <img src="https://mintcdn.com/xendit/Rc1T2JrTxM5Uwi25/images/app/finding-xendit.png?fit=max&auto=format&n=Rc1T2JrTxM5Uwi25&q=85&s=ffa18dd4a5d1bff94c4dc6cbdfec436f" alt="Android system settings showing list of apps with Xendit app highlighted" width="1080" height="459" data-path="images/app/finding-xendit.png" />
    </Frame>
  </Step>

  <Step title="Enable Display Over Other Apps">
    Enable the "Allow display over other apps" permission to allow the overlay to appear.

    <Frame>
      <img src="https://mintcdn.com/xendit/Rc1T2JrTxM5Uwi25/images/app/enable-display-over-other.png?fit=max&auto=format&n=Rc1T2JrTxM5Uwi25&q=85&s=a14cc103d373ba00ec196d0deb0f5a2b" alt="Xendit app permission screen showing Allow display over other apps toggle" width="1080" height="1187" data-path="images/app/enable-display-over-other.png" />
    </Frame>

    <Check>
      System overlay is now enabled. Pending transactions will appear as overlay windows instead of notifications.
    </Check>
  </Step>
</Steps>

<Tip>
  System overlay provides better visibility for pending transactions compared to notifications, making it easier to track ongoing payment processing.
</Tip>

## Print Receipt (Cashup Provider)

Control whether the Cashup terminal automatically prints receipts after completing transactions. You can disable receipt printing to reduce paper usage or enable it for customer documentation requirements.

<Note>
  This setting only applies to Cashup terminals. Other terminal providers use their own receipt printing configuration.
</Note>

<Steps>
  <Step title="Open Settings and Configure Print Receipt">
    Navigate to the app settings and toggle "Print Receipt" off to disable automatic receipt printing after transactions. Toggle it on to enable receipt printing.

    <Frame>
      <img src="https://mintcdn.com/xendit/Rc1T2JrTxM5Uwi25/images/app/print-receipt.png?fit=max&auto=format&n=Rc1T2JrTxM5Uwi25&q=85&s=ce965add7a0374ef6ad0b76e32ac83d5" alt="Gateway app settings showing Print Receipt toggle for Cashup provider" width="720" height="718" data-path="images/app/print-receipt.png" />
    </Frame>

    <Check>
      Receipt printing is now configured. The Cashup terminal will follow this setting for all future transactions.
    </Check>
  </Step>
</Steps>

<Tip>
  Disable receipt printing to save paper costs or enable it when customers require physical transaction records.
</Tip>

## Device Status Monitoring

Each device in the terminal list displays a status indicator that changes color based on its current state. Monitor these indicators to ensure your terminal fleet is operating correctly.

### Status Indicators

| Status              | Color  | Description                                                                                                                                                  |
| ------------------- | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| Unreachable/Offline | Red    | EDC terminal is unreachable or offline due to incorrect <a href="#finding-terminal-information">IP address</a>, network issues, or missing EDC configuration |
| Processing          | Yellow | A transaction is currently in progress on the EDC terminal                                                                                                   |
| Online              | Green  | EDC terminal is online, connected, and ready for transactions                                                                                                |
| Disabled            | Grey   | EDC terminal is disabled and not available for transactions                                                                                                  |

### Troubleshooting Status Issues

<AccordionGroup>
  <Accordion title="Red Status - Terminal Unreachable/Offline">
    **Problem**: Terminal shows red status indicating it cannot be reached or is offline.

    **Solutions**:

    * Verify the terminal <a href="#finding-terminal-information">IP address</a> is correct and accessible
    * Check network connectivity between the app and terminal
    * Ensure the terminal is powered on and properly configured
    * Verify firewall settings aren't blocking the connection

          <Warning>
            Red status terminals cannot process transactions and require immediate attention.
          </Warning>
  </Accordion>

  <Accordion title="Grey Status - Terminal Disabled">
    **Problem**: Terminal shows grey status indicating it's disabled.

    **Solutions**:

    * Check if the terminal has been manually disabled in the app
    * Verify terminal configuration and settings
    * Restart the terminal connection if needed
    * Contact support if the issue persists

          <Note>
            Disabled terminals are intentionally unavailable and won't process transactions.
          </Note>
  </Accordion>

  <Accordion title="Yellow Status - Terminal Processing">
    **Problem**: Terminal shows yellow status indicating a transaction is in progress or appears stuck.

    **Solutions**:

    * Verify the terminal and POS are properly connected to the network
    * Check if the current transaction is still awaiting card input or PIN
    * Confirm whether the POS has already received a callback/response
    * Review app logs for timeouts or error messages during processing

          <Tip>
            Yellow status is normal while a transaction is actively processing.
          </Tip>
  </Accordion>

  <Accordion title="Green Status - Terminal Online">
    **Context**: Terminal shows green status indicating it is online and ready.

    **What this means**:

    * The device is connected and reachable by the app
    * No transaction is currently in progress
    * The terminal can accept new commands

    **If you still encounter issues**:

    * Confirm the POS is sending commands to the correct terminal
    * Verify API credentials and environment (test vs production)
    * Check recent logs for command errors or rejected requests

          <Check>
            Green status indicates the terminal is healthy and ready to use.
          </Check>
  </Accordion>
</AccordionGroup>

<Tip>
  Monitor device status indicators regularly to ensure your terminal fleet is
  operating correctly. Red or grey statuses may require immediate attention.
</Tip>

## Troubleshooting

<Tip>
  For more recovery scenarios across H2H and C2C terminal flows, see the [SDK Troubleshooting Guide](/sdk/troubleshooting).
</Tip>

### Common Issues and Solutions

<AccordionGroup>
  <Accordion title="Unresponsive EDC Machine">
    **Problem**: The EDC (Electronic Data Capture) machine becomes unresponsive or stops processing transactions.

    **Solution**:

    1. Restart the EDC machine by holding the power button and selecting "Restart"
    2. Wait for the device to fully boot up and reconnect
    3. Verify the terminal is back online using the connection monitoring features

    <Warning>
      Always ensure the EDC is properly restarted before attempting new transactions to avoid data corruption.
    </Warning>
  </Accordion>

  <Accordion title="Kiosk Mode Configuration">
    **Problem**: Unexpected behaviors or unauthorized access to terminal functions.

    **Solution**:

    1. Ensure all transactions are initiated only through the app
    2. Contact the Xendit EDC team to enable POS-only mode for your <a href="#finding-terminal-information">Terminal IDs</a>
    3. Configure terminal settings to disable manual transaction entry

    <Tip>
      POS-only mode prevents manual transaction entry and ensures all operations go through your application.
    </Tip>
  </Accordion>

  <Accordion title="No Response After Payment Completion">
    **Problem**: EDC fails to send transaction results to the app after payment completion.

    **Solution**:

    1. Query the Payment Session using the Terminal API to retrieve the latest status
    2. Check network connectivity between the EDC and your application
    3. Verify the callback URL configuration in your payment session
    4. Implement retry logic for failed status updates
  </Accordion>

  <Accordion title="Transaction Stuck or Missing Callback After Receipt Printed">
    **Problem**: Transaction appears stuck or you don't receive a callback after the terminal prints a receipt, indicating the transaction may be incomplete.

    <Note>
      This troubleshooting section applies only to BRI terminals.
    </Note>

    **Solution**:
    Call the Terminal API retry endpoint <a href="/api-reference/payments-terminal-api/retry-terminal-payment-session">`/v1/terminal/sessions/{id}/retry`</a> to request the app check the transaction status and redo the transaction if it's incomplete.

    <Info>
      The retry endpoint instructs the app to verify the current transaction status with the terminal and automatically redo the transaction if it's found to be incomplete.
    </Info>

    <Tip>
      Use this retry mechanism when you see a receipt printed but haven't received a callback, as it may indicate the transaction didn't complete successfully on the terminal side.
    </Tip>
  </Accordion>

  <Accordion title="Connection Issues">
    **Problem**: Unable to establish or maintain connection with terminal devices.

    **Solutions**:

    * **Check network connectivity**: Ensure both devices are on the same network
    * **Verify IP addresses**: Confirm terminal <a href="#finding-terminal-information">IP addresses</a> are correct and accessible
    * **Firewall settings**: Check if firewall is blocking the connection ports
    * **Terminal status**: Ensure the terminal is powered on and in ready state
    * **App initialization**: Verify client key and terminal configuration

    <Note>
      Use the connection monitoring features to diagnose specific connection issues.
    </Note>
  </Accordion>
</AccordionGroup>

## Finding Terminal Information

<Tabs>
  <Tab title="BRI Terminals">
    <Steps>
      <Step title="Find Terminal ID (TID)">
        Open the BRI FMS app on the terminal device and locate the Terminal ID in the device information section.

        <Frame>
          <img src="https://mintcdn.com/xendit/79NehsWB8-Vpp9n7/images/bri/bri-tid.png?fit=max&auto=format&n=79NehsWB8-Vpp9n7&q=85&s=60410d91d34e864135c485e6df2901a6" alt="BRI terminal showing Terminal ID in FMS app" width="450" height="885" data-path="images/bri/bri-tid.png" />
        </Frame>
      </Step>

      <Step title="Find IP Address">
        Open the ECRLink app on the terminal and check the network settings for the IP address.

        <Frame>
          <img src="https://mintcdn.com/xendit/79NehsWB8-Vpp9n7/images/bri/bri-ip.png?fit=max&auto=format&n=79NehsWB8-Vpp9n7&q=85&s=34eeb360fc42d6c7ab5c633ba7a05371" alt="BRI terminal showing IP address in ECRLink app" width="480" height="878" data-path="images/bri/bri-ip.png" />
        </Frame>
      </Step>
    </Steps>
  </Tab>

  <Tab title="NTT Terminals">
    <Steps>
      <Step title="Find Terminal ID (TID)">
        Look for the Terminal ID on the physical sticker attached to the device.

        <Frame>
          <img src="https://mintcdn.com/xendit/79NehsWB8-Vpp9n7/images/ghl/ghl-tid.jpg?fit=max&auto=format&n=79NehsWB8-Vpp9n7&q=85&s=88d3ff4da303a2d35eecd432ed4fa9c4" alt="NTT terminal showing Terminal ID sticker on device" width="3024" height="4032" data-path="images/ghl/ghl-tid.jpg" />
        </Frame>
      </Step>

      <Step title="Find IP Address">
        Open the NTT LinkPOS app on the terminal and navigate to network settings to find the IP address.

        <Frame>
          <img src="https://mintcdn.com/xendit/79NehsWB8-Vpp9n7/images/ghl/ghl-ip.jpg?fit=max&auto=format&n=79NehsWB8-Vpp9n7&q=85&s=e05ef6b97d190aa59206ef5842d9a4a8" alt="NTT terminal showing IP address in LinkPOS app" width="3024" height="4032" data-path="images/ghl/ghl-ip.jpg" />
        </Frame>
      </Step>
    </Steps>
  </Tab>

  <Tab title="Cashup Terminals">
    <Steps>
      <Step title="Find Terminal ID (TID)">
        Open the Cashlez app and navigate to the User Account tab to locate the Terminal ID.

        <Frame>
          <img src="https://mintcdn.com/xendit/iTqGX9_7zwXBWkal/images/cashup/cashup-tid.png?fit=max&auto=format&n=iTqGX9_7zwXBWkal&q=85&s=d75858971855c6badc35155cf5d417b7" alt="Cashup terminal showing Terminal ID in User Account tab" width="720" height="1600" data-path="images/cashup/cashup-tid.png" />
        </Frame>
      </Step>

      <Step title="Find IP Address">
        Open the Terminal Gateway app and check the device list for the terminal IP address.

        <Frame>
          <img src="https://mintcdn.com/xendit/iTqGX9_7zwXBWkal/images/app/gateway-app-ip-address.png?fit=max&auto=format&n=iTqGX9_7zwXBWkal&q=85&s=06041514d4322321d4522600a8cdd921" alt="Terminal Gateway app showing device IP address" width="717" height="535" data-path="images/app/gateway-app-ip-address.png" />
        </Frame>
      </Step>
    </Steps>
  </Tab>

  <Tab title="Share Commerce Terminals">
    <Steps>
      <Step title="Find Terminal ID (TID)">
        Open the Xendit app on the device and review the terminal details screen to locate the Terminal ID.

        <Frame>
          <img src="https://mintcdn.com/xendit/iTqGX9_7zwXBWkal/images/shc/shc-tid.png?fit=max&auto=format&n=iTqGX9_7zwXBWkal&q=85&s=1944ce5df286baabbab4b40b561f6bac" alt="Share Commerce terminal showing Terminal ID in Xendit app" width="720" height="1280" data-path="images/shc/shc-tid.png" />
        </Frame>
      </Step>

      <Step title="Find IP Address">
        Open the Terminal Gateway app and check the device list for the terminal IP address.

        <Frame>
          <img src="https://mintcdn.com/xendit/iTqGX9_7zwXBWkal/images/app/gateway-app-ip-address.png?fit=max&auto=format&n=iTqGX9_7zwXBWkal&q=85&s=06041514d4322321d4522600a8cdd921" alt="Terminal Gateway app showing device IP address" width="717" height="535" data-path="images/app/gateway-app-ip-address.png" />
        </Frame>
      </Step>
    </Steps>
  </Tab>

  <Tab title="Atom Terminals">
    <Steps>
      <Step title="Find Terminal ID (TID)">
        Open the payment app on the Atom terminal, then go to <strong>Settings</strong> → <strong>Device Info</strong> to view the Terminal ID.

        <Frame>
          <img src="https://mintcdn.com/xendit/iTqGX9_7zwXBWkal/images/atom/atom-tid.png?fit=max&auto=format&n=iTqGX9_7zwXBWkal&q=85&s=1e1df9098f060068525d853b569a714b" alt="Atom terminal showing Terminal ID in device settings" width="720" height="1280" data-path="images/atom/atom-tid.png" />
        </Frame>
      </Step>

      <Step title="Find IP Address">
        Open the Terminal Gateway app and check the device list for the terminal IP address.

        <Frame>
          <img src="https://mintcdn.com/xendit/iTqGX9_7zwXBWkal/images/app/gateway-app-ip-address.png?fit=max&auto=format&n=iTqGX9_7zwXBWkal&q=85&s=06041514d4322321d4522600a8cdd921" alt="Terminal Gateway app showing device IP address" width="717" height="535" data-path="images/app/gateway-app-ip-address.png" />
        </Frame>
      </Step>
    </Steps>
  </Tab>
</Tabs>

<Note>
  Screenshots and UI layouts may vary by firmware or app version. Refer to the latest vendor documentation if the interface differs from these instructions.
</Note>
