# FAQ

### Configuration

<details>

<summary>What are public keys and private keys ?</summary>

You can create the keys using the Security section, public keys are the keys that you are going to share with us and private keys are going to be used in generating the JWT to communicate with StreamPay when using any function like purchase, refund, etc.

</details>

<details>

<summary><strong>Which package name should I share ?</strong></summary>

You need to share the package name for the Android project with the StreamPay team

</details>

<details>

<summary>How can I change the environment ?</summary>

You can define the environment in StreamPay project

<pre class="language-kotlin"><code class="lang-kotlin"><strong>val streampay = StreamPay(this, jwt, Locale.getDefault(), Environments.SANDBOX)
</strong></code></pre>

</details>

<details>

<summary>What are the different environments ?</summary>

We have three main environments:

**SandBox** : where you integrate the SDK on Sandbox Environment.

**Testing** : we will test your app with Payment and get it approved&#x20;

**Production**: here you can go live.

</details>

<details>

<summary>What Android version can be used with the SDK?</summary>

You can use it with android 10 or higher.

</details>

<details>

<summary>What are the requirements to run SDK on Android ?</summary>

* You need to have an NFC on your device.

- You need to allow location

</details>

### Login

<details>

<summary>How can I generate JWT ?</summary>

Please follow the instructions [here](https://streampay.gitbook.io/streampos/broken-reference).

</details>

<details>

<summary><strong>What is JWT ?</strong></summary>

JSON Web Tokens are an open, industry-standard RFC 7519 method for representing claims securely between two parties.

</details>

<details>

<summary>How can I get the client UUID?</summary>

StreamPay Team will send you a client UUID once we have received the public key and the android package name.

</details>

<details>

<summary>When do I need to logout ?</summary>

When StreamPay service is no longer needed.

For example, when the users log out from your app, they need to log out from StreamPay service as well so they can not use the service when they are logged out.

</details>

### Transactions

<details>

<summary>What is reconciliation ?</summary>

Payment reconciliation is an accounting process that verifies account balances to ensure all sets of records are true, consistent, and up-to-date. Businesses can reconcile their accounts daily, weekly, or monthly.

</details>

<details>

<summary>What is a customer reference number ?</summary>

A customer reference number is a number that identifies your customer ID, so you can assign any number you want as a customer reference number, also it is optional so you can leave it empty if you wish.

You can use the customer reference number in Purchase and Refund.

</details>

<details>

<summary>How can I make a purchase ?</summary>

You can just call purchase and our StreamPOS UI will show up to make a payment.

</details>

<details>

<summary><strong>Can I design my own receipt ?</strong></summary>

Yes you can, we have the transaction receipt [here](https://streampay.gitbook.io/streampos/broken-reference)

</details>

<details>

<summary>How can I disable the UI of the receipt ?</summary>

We have a feature to enable or disable the receipt UI and all our functions, just set **enableReceiptUi** to false.

</details>

<details>

<summary>Where can I see my transactions ?</summary>

You can see all transactions in the client dashboard, and also you can list them using the API [here](https://streampay.gitbook.io/streampos/broken-reference)

</details>

<details>

<summary>How can I get the reconciliation data ?</summary>

You can get all the reconciliation data when you make a reconciliation we will return all the data, you can find it [here](https://streampay.gitbook.io/streampos/broken-reference).

</details>

<details>

<summary>How can I know the version of the payment plugin ?</summary>

Go to Settings - > Apps - > Payment Plugin -> Version

</details>

<details>

<summary>When should the developer mode be turned off?</summary>

Whenever the SDK environment is in production, if the developer mode is not off then you can not communicate with StreamPay to make any transactions.

</details>

<details>

<summary>How can I print the receipt ?</summary>

You can get the qr\_code URL from the receipt [here](https://streampay.gitbook.io/streampos/broken-reference) and print it out.

</details>

<details>

<summary>Can the user refund more than the paid amount in the transaction?</summary>

Yes since the terminal is not connected to any device.

</details>

<details>

<summary>Can the user issue more than one refund per transaction?</summary>

No, the user can not exceed the paid amount.

</details>

<details>

<summary>What's the difference between Refund and Reverse </summary>

Refund, you can do it anytime, also you can do a partial refund and you can do it more than once.

Reverse, it can be done only after the purchase within 60 seconds, and the whole amount will be reversed.

</details>

### TRSMs and POS Terminals

<details>

<summary>How can I create terminals?</summary>

There are two ways to create a terminal :

1. Client Dashboard Go to the TRSMs page and create a new one then create a new merchant, now you can go to terminals and create new terminals.
2. Use create terminal API [here](https://streampay.gitbook.io/streampos/broken-reference).

</details>

<details>

<summary>Can I disconnect the terminal and link it to another device?</summary>

Yes since the terminal is not connected to any device.

</details>

<details>

<summary>Can I connect one terminal to two devices at the same time?</summary>

No, only one terminal can connect to one device at the same time.

</details>

<details>

<summary>How do I assign a terminal to my merchant?</summary>

Your backend can return JSON Web Token based on the user, so every token will contain a different terminal ID. For more information, you can see how the JWT can be generated [<mark style="color:blue;">here</mark>](https://streampay.gitbook.io/streampos/broken-reference).

For example, every user in your app will have a terminal id linked to that user, so when the user login to your app, your backend will send JWT for that user to login to our StreamPOS SDK.

</details>

<details>

<summary>What are TRSMs?</summary>

See figure 1.0

</details>

<details>

<summary>Where do I get TRSMs from? </summary>

See figure 1.0

</details>

<details>

<summary>How do I add TRSMs to StreamPay POS systems? </summary>

See figure 1.0

</details>

<details>

<summary>What are terminals ?</summary>

See figure 1.0

</details>

### Figure 1.0

<figure><img src="https://2681610983-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FiQy32PwwXUWmjzvhvPYr%2Fuploads%2FXkGOZsJgLaXjUrYE3lrv%2FMSP%20Bank%20Terminal%20Steps.webp?alt=media&#x26;token=c7647488-0bed-4562-b9a7-e4f30e62b683" alt=""><figcaption></figcaption></figure>
