# POS Overview

The Makapay POS system lets your business accept crypto payments in person -- at a counter, a restaurant, a shop, anywhere.

Here's how it works in plain English.

{% embed url="<https://youtu.be/Iu7Ym906i9E>" %}
POS Tutorial
{% endembed %}

***

## What is a Terminal?

A **terminal** is a virtual cash register. Think of it like naming each register in your store.

* You give it a **name** (like "Register 1" or "Front Counter")
* You give it a **short code** (like `R1` or `FC`) -- this is just a nickname, not a password
* The system gives you a **link** (URL) for that terminal
* You open that link on a **tablet, phone, or laptop** -- that device becomes your register
* You can use **fullscreen mode** so it looks and feels like a real POS screen, perfectly sized for the device

You can create as many terminals as you need. One for each register, one for each location, whatever works for your business.

> **Example:**
>
> You create two terminals:

| Terminal Name | Short Code | You open the link on...   |
| ------------- | ---------- | ------------------------- |
| Register 1    | `R1`       | A tablet at the counter   |
| Front Counter | `FC`       | A phone at the front desk |

> Each terminal has its own link. Open it, go fullscreen, done.

***

## What is a Cashier?

A **cashier** is any person you allow to use your terminals -- your staff, your employees, yourself.

For each cashier you set:

* A **name** (like "John" or "Sarah")
* A **short code** (like `JD` or `SR`) -- just a nickname for tracking, not a password
* A **PIN code** -- this is their password to log in. **Numbers only. At least 8 digits. No letters.**

**Every cashier must have a unique PIN.** No two people can share the same PIN, because the system uses the PIN to know who is logging in.

> **Example:**

| Cashier Name | Short Code | PIN        |
| ------------ | ---------- | ---------- |
| John Doe     | `JD`       | `12345678` |
| Sarah        | `SR`       | `87654321` |
| Mike         | `MK`       | `11223344` |

> Each cashier has their own PIN. No two PINs can be the same.

***

## What is a POS Login?

When a cashier walks up to a terminal (the tablet/phone/laptop with your terminal link open), they see a **number pad**. That's it. Just numbers. No letters, no email, no username.

They type their **PIN**, press enter, and they're in. Simple.

> **How login works:**
>
> 1. Cashier sees the number pad on the terminal screen
> 2. Cashier types their PIN (e.g. `12345678`)
> 3. System checks the PIN
>    * **PIN matches** --> Logged in! Payment screen appears.
>    * **Wrong PIN** --> Error. Try again.

After logging in, the cashier gets a **15-minute session**. Every time they do something (enter an amount, create a payment), the timer resets. If they walk away and do nothing for 15 minutes, they get logged out automatically and need to enter their PIN again.

***

## What is a Short Code? (It's NOT a password)

Both terminals and cashiers have a **short code**. This causes confusion, so let's be very clear:

**A short code is a nickname. It is NOT a password. It is NOT used to log in.**

|                    | Short Code                                         | PIN                                       |
| ------------------ | -------------------------------------------------- | ----------------------------------------- |
| **What is it?**    | A label / nickname                                 | A secret login code                       |
| **Who has one?**   | Terminals AND cashiers                             | Only cashiers                             |
| **Format**         | Letters and numbers (e.g. `R1`, `JD`)              | Numbers only, 8+ digits (e.g. `12345678`) |
| **Is it secret?**  | No -- it shows up in reports and order IDs         | Yes -- nobody can see it, not even you    |
| **What's it for?** | Tracking which terminal and cashier made a payment | Logging into a terminal                   |

***

## What is an Order ID?

Every time a cashier creates a payment, the system generates an **Order ID**. This is an automatic reference number that tells you exactly:

* **Which terminal** was used
* **Which cashier** created it
* **When** it happened

### How to read an Order ID

```
POS - R1 - JD - 1707842400000
 |     |    |    |
 |     |    |    └── Timestamp (the exact date and time)
 |     |    └─────── Cashier short code (JD = John Doe)
 |     └──────────── Terminal short code (R1 = Register 1)
 └────────────────── POS payment
```

| Part            | Meaning               | Example                 |
| --------------- | --------------------- | ----------------------- |
| `POS`           | This is a POS payment | Always `POS`            |
| `R1`            | Which terminal        | Register 1              |
| `JD`            | Which cashier         | John Doe                |
| `1707842400000` | When                  | Feb 13, 2024 at 4:00 PM |

**Why this matters:** If a customer says "I paid $50 but something went wrong", you look up the Order ID and immediately know it was processed at Register 1 by John at 4:00 PM. No guessing.

***

## What are Cashier Restrictions?

By default, any cashier can log into any terminal. But you can **restrict** a terminal so only certain cashiers can use it.

**Example:** You have 2 registers and 3 cashiers.

|           | Register 1 (Restricted) | Register 2 (Open) |
| --------- | ----------------------- | ----------------- |
| **John**  | Allowed                 | Allowed           |
| **Sarah** | Allowed                 | Allowed           |
| **Mike**  | **BLOCKED**             | Allowed           |

Mike can't log into Register 1, but he can use Register 2. You set this up in the terminal settings.

***

## The Full Flow (Start to Finish)

### Step 1: Setup (you do this once)

| # | What you do                                                | Where                              |
| - | ---------------------------------------------------------- | ---------------------------------- |
| 1 | Create your terminals (give each a name + short code)      | Dashboard > POS > Terminals        |
| 2 | Create your cashiers (give each a name + short code + PIN) | Dashboard > POS > Cashiers         |
| 3 | (Optional) Set cashier restrictions                        | Dashboard > POS > Terminals > Edit |
| 4 | Open the terminal link on your device, go fullscreen       | Browser on tablet/phone            |

### Step 2: Daily use

| # | What happens                                                 |
| - | ------------------------------------------------------------ |
| 1 | Cashier types their PIN on the number pad                    |
| 2 | Cashier enters the payment amount in the terminal's currency |
| 3 | Cashier picks the crypto network and token                   |
| 4 | QR code appears on screen                                    |
| 5 | Customer scans QR and pays from their wallet                 |

### Step 3: Tracking

| # | What you get                                                       |
| - | ------------------------------------------------------------------ |
| 1 | Order ID is generated (e.g. `POS-R1-JD-17078...`)                  |
| 2 | You see every payment in your dashboard                            |
| 3 | You know which terminal and which cashier for every single payment |

***

## Documentation

For more details on each topic:

* [Terminals](/point-of-sale-pos/terminals.md) -- Creating and managing POS terminals
* [Cashiers](/point-of-sale-pos/cashiers.md) -- Creating cashiers and assigning PINs
* [Cashier Restrictions](/point-of-sale-pos/cashier-restrictions.md) -- Controlling which cashiers can access which terminals
* [Token Restrictions](/point-of-sale-pos/token-restrictions.md) -- Controlling which tokens are available on each terminal
* [Multi-Currency Support](/point-of-sale-pos/multi-currency.md) -- Accepting payments in EUR, GBP, JPY and 28 other currencies
* [Order IDs](/point-of-sale-pos/order-ids.md) -- Understanding payment tracking and order references
* [POS Session & Authentication](/point-of-sale-pos/sessions.md) -- How PIN login and sessions work
* [Complete POS Flow](/guides/complete-flow.md) -- Step-by-step walkthrough from setup to payment
* [Security](/point-of-sale-pos/security.md) -- PIN hashing, session tokens, and access control
* [Payment History & Recovery](/point-of-sale-pos/payment-history.md) -- Viewing history, resuming payments, handling partial payments
* [FAQ & Troubleshooting](/point-of-sale-pos/faq.md) -- Common questions and issues


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.makapay.io/point-of-sale-pos/pos.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
