> For the complete documentation index, see [llms.txt](https://developer.tokeninc.com/token-developer-portal-1/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://developer.tokeninc.com/token-developer-portal-1/payment-service/new-device-integrations/t1-pro.md).

# T1 PRO

This page contains the required fields for integration with the T1 PRO device.

### Bank App Protocol

The transaction flows for this device follow the exact same standards as our existing devices. You can access the relevant integration flows and detailed guide via the link below

{% content-ref url="/pages/wkkoYfhTR7oCHd9CUvC2" %}
[Bank App Protocol](/token-developer-portal-1/payment-service/payment-services/bank-app-protocol.md)
{% endcontent-ref %}

### Manifest.xml Configurations

```html
<manifest ... >
    ...
    <application ... >
        ...
        <meta-data android:name="app_name" android:value="BNK_ID_COMPANYNAME" /> 
        <meta-data android:name="app_model_type" android:value="T1PRO" /> // For T1 Pro devices
        <meta-data android:name="app_version" android:value="51000110" /> // Change Android  Version major/minor/build into integer. We kindly request this change. Version no must start with 510. Example: 51000110.
     </application>
...
```

### Device Info <a href="#device-info" id="device-info"></a>

**void getFiscalId(DeviceInfoResponseHandler deviceInfoResponseHandler)**

The `getFiscalId` function retrieves the fiscal ID from the service.

```kotlin
deviceInfo.getFiscalId(object: DeviceInfoResponseHandler {
    override fun onSuccess(result: String) {
        Log.i("Fiscal ID", result)

    }
    override fun onFail(errMessage: String) {
        Log.i("Error Message", errMessage)
    }
});
```

**Note:** The Fiscal ID will be in the format **AY**.....

### Important Considerations <a href="#important-considerations" id="important-considerations"></a>

#### Device Name <a href="#device-name" id="device-name"></a>

Device name will be "**T1PRO**".

When the device model information is obtained using the `Build.MODEL` field, it returns the value **`T1PRO`** for the corresponding device.

### UI Components V2&#x20;

{% file src="/files/qJEuTtaD2Ec8ZSB2HA8q" %}

**NOTE:** `uicomponents_v2.aar` will be used only on **T1Pro** devices for now.&#x20;

If your projects share the same codebase, `uicomponents_v2.aar` should be used only for **T1Pro** devices. This can be implemented using product flavors.

#### Required Changes for UI Components V2 Migration

**1-) Set Theme**

**NOTE:** You need to set the theme in the `onCreate()` method of all your Activities. Please note that `ThemeManager` is not available in `uicomponents_v1`&#x20;

{% tabs %}
{% tab title="Java" %}

```java
ThemeManager.INSTANCE.applyDeviceTheme(getTheme());
```

{% endtab %}

{% tab title="Kotlin" %}

```kotlin
ThemeManager.applyDeviceTheme(this.theme) 
```

{% endtab %}
{% endtabs %}

**2-) EditTextInputType.Date**

To use the date input feature, you need to update the RecyclerView version in your `build.gradle` file. A version of `1.2.1` or later is sufficient.

```kts
implementation("androidx.recyclerview:recyclerview:1.2.1")
```

<div align="left"><figure><img src="https://3604734571-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FPaz8tFKqEd6volXC5G4B%2Fuploads%2FPIVCugfCEbyYtMqyjM8q%2FScreenshot%202026-07-22%20at%2016.27.29.png?alt=media&amp;token=1702f8cb-cbb7-4139-a1bf-6ab01601dace" alt="" width="170"><figcaption><p>EditTextInputType.Date</p></figcaption></figure></div>

#### UI Components V2 Screens

#### ListMenuFragment           &#x20;

<div align="left"><figure><img src="https://3604734571-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FPaz8tFKqEd6volXC5G4B%2Fuploads%2F57Mm0GHIrx6oYnvOFLgv%2FScreenshot%202026-07-22%20at%2016.06.03.png?alt=media&amp;token=2fdbed16-6c1e-4cc7-bf92-0c8ba9aa34d2" alt="" width="173"><figcaption><p> List Menu Fragment</p></figcaption></figure> <figure><img src="https://3604734571-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FPaz8tFKqEd6volXC5G4B%2Fuploads%2FsYut2G8ACMkU6VHkAsYt%2FScreenshot%202026-07-22%20at%2016.08.19.png?alt=media&amp;token=4aec6366-d5e3-4027-908f-e42c218f624d" alt="" width="173"><figcaption><p> ListMenuFragment <br>Sublist</p></figcaption></figure></div>

#### InputListFragment

<div align="left"><figure><img src="https://3604734571-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FPaz8tFKqEd6volXC5G4B%2Fuploads%2FP8F4KFZ52Wd5UCoxgXho%2FScreenshot%202026-07-22%20at%2016.19.21.png?alt=media&amp;token=53d96c66-3193-43a3-ab93-e132b69db4ed" alt="" width="173"><figcaption><p>InputListFragment</p></figcaption></figure></div>

#### Confirmation Dialog

Dialog types: ***Confirmed***, ***Warning***, ***Error***, ***Info***, ***Declined***, ***Connecting***, ***Downloading***, ***Uploading***, ***Processing***, ***Progress***, ***None***

<div align="left"><figure><img src="https://3604734571-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FPaz8tFKqEd6volXC5G4B%2Fuploads%2FCc9x0b20w0zH2lLS4aiS%2FScreenshot%202026-07-22%20at%2016.10.56.png?alt=media&amp;token=124634ac-3924-4833-a40e-e3356042d55f" alt="" width="197"><figcaption><p>Confirmed</p></figcaption></figure> <figure><img src="https://3604734571-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FPaz8tFKqEd6volXC5G4B%2Fuploads%2Fj4hMa7qM8XaM6YNyVerp%2FScreenshot%202026-07-22%20at%2016.11.35.png?alt=media&amp;token=0d15278a-f944-475e-821a-3cf3dc3e589c" alt="" width="197"><figcaption><p>Warning</p></figcaption></figure> <figure><img src="https://3604734571-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FPaz8tFKqEd6volXC5G4B%2Fuploads%2FXmREARLyWYG5CSDvHRnC%2FScreenshot%202026-07-22%20at%2016.12.13.png?alt=media&amp;token=b05645ab-45e1-472d-a236-8f910141add2" alt="" width="197"><figcaption><p>Error</p></figcaption></figure> <figure><img src="https://3604734571-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FPaz8tFKqEd6volXC5G4B%2Fuploads%2FOVFMYy6GOWfLJsyqZdb1%2FScreenshot%202026-07-22%20at%2016.14.16.png?alt=media&amp;token=861f1197-b383-492a-ace5-c12c8bd50fa0" alt="" width="197"><figcaption><p>Declined</p></figcaption></figure></div>

<div align="left"><figure><img src="https://3604734571-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FPaz8tFKqEd6volXC5G4B%2Fuploads%2FgeOU6aUY3E96QykdSXQj%2FScreenshot%202026-07-22%20at%2016.15.13.png?alt=media&amp;token=0ee03c90-fbf9-4872-9ec8-f678b7c620f8" alt="" width="166"><figcaption><p>Connecting</p></figcaption></figure> <figure><img src="https://3604734571-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FPaz8tFKqEd6volXC5G4B%2Fuploads%2FHBOUbVJhtOSFUmTDGvZB%2FScreenshot%202026-07-22%20at%2016.17.35.png?alt=media&amp;token=f1d042d7-58c3-4a12-b1ed-31611f7c6e74" alt="" width="166"><figcaption><p>Downloading</p></figcaption></figure></div>

#### InformationDialog

Dialog types: ***Confirmed***, ***Warning***, ***Error***, ***Info***, ***Declined***, ***Connecting***, ***Downloading***, ***Uploading***, ***Processing***, ***Progress***, ***None***

<div align="left"><figure><img src="https://3604734571-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FPaz8tFKqEd6volXC5G4B%2Fuploads%2FnJPqEG423hEfN3f3iXGI%2FScreenshot%202026-07-22%20at%2016.21.16.png?alt=media&amp;token=df15adb1-4bdf-4037-b34b-2fb11f3657f3" alt="" width="194"><figcaption><p>Confirmed</p></figcaption></figure> <figure><img src="https://3604734571-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FPaz8tFKqEd6volXC5G4B%2Fuploads%2FYXFdZLA83ebGP96asfUa%2FScreenshot%202026-07-22%20at%2016.21.45.png?alt=media&amp;token=fe3fb595-138c-4980-b77e-2a30beebba8b" alt="" width="194"><figcaption><p>Warning</p></figcaption></figure> <figure><img src="https://3604734571-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FPaz8tFKqEd6volXC5G4B%2Fuploads%2F17ElCvQy7qh7MaI3GMzB%2FScreenshot%202026-07-22%20at%2016.23.36.png?alt=media&amp;token=5b012538-f64e-4359-b337-f39d705c6357" alt="" width="194"><figcaption><p>Error</p></figcaption></figure> <figure><img src="https://3604734571-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FPaz8tFKqEd6volXC5G4B%2Fuploads%2Feak6ex98PyqCyb2oDCyo%2FScreenshot%202026-07-22%20at%2016.23.57.png?alt=media&amp;token=7e604596-5e85-41f2-9c23-5575ecc35446" alt="" width="194"><figcaption><p>Declined</p></figcaption></figure></div>

<div align="left"><figure><img src="https://3604734571-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FPaz8tFKqEd6volXC5G4B%2Fuploads%2FPN0uBWPtaRL9UnljkO5J%2FScreenshot%202026-07-22%20at%2016.33.52.png?alt=media&amp;token=c359fcb7-574e-44a3-a958-bf6b44c4f68b" alt="" width="171"><figcaption><p>Progress</p></figcaption></figure></div>

#### QR Screen

```kts
 val qrScreen330 = QrScreen330.newInstance(
     amountStr,
     "",
     getStrings(R.string.waiting_for_qr_code_to_read),
     qrString
  )
```

<div align="left"><figure><img src="https://3604734571-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FPaz8tFKqEd6volXC5G4B%2Fuploads%2Fhixy2ycwj1O2rv7wGFvC%2FScreenshot%202026-07-22%20at%2016.31.15.png?alt=media&amp;token=ff9fbcd1-14a2-46f6-b526-3b4aafd3c2f1" alt="" width="170"><figcaption><p>QrScreen</p></figcaption></figure></div>

### Printer Service

{% file src="/files/AmPwfeQNGdEDXRoeL1Bq" %}

Our new printer library provides three APIs. Their descriptions and usage examples are provided below.

#### void printBitmap(String name, int verticalMargin)

{% embed url="<https://developer.tokeninc.com/token-developer-portal-1/payment-service/system-and-security-services/printer-service#void-printbitmap-string-name-int-verticalmargin>" %}

#### void printAdditionalLogo(byte\[] bitmapData, int margin)

You can print your monochrome logo as a `bitmapArray` using this API. This is the recommended approach.

```kotlin
styledString.printAdditionalLogo(byteArray,0)
```

#### void printAdditionalLogo(int resID, int margin)

The static logos you place in the **raw** folder will be printed using this method. The logos must be monochrome. This is the recommended approach.

```
styledString.printAdditionalLogo(R.raw.logo,0)
```
