..
  This file is part of GNU TALER.
  Copyright (C) 2014-2026 Taler Systems SA

  TALER is free software; you can redistribute it and/or modify it under the
  terms of the GNU Affero General Public License as published by the Free Software
  Foundation; either version 2.1, or (at your option) any later version.

  TALER is distributed in the hope that it will be useful, but WITHOUT ANY
  WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
  A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.

  You should have received a copy of the GNU Affero General Public License along with
  TALER; see the file COPYING. If not, see <http://www.gnu.org/licenses/>

  @author Bohdan Potuzhnyi

.. _pos_orders:

Create and Complete Orders
==========================

.. contents::
  :depth: 1
  :local:

The point-of-sale app is designed for quick in-person sales. The merchant enters
an amount or builds an order, shows the generated payment request to the
customer, and waits until the wallet confirms the payment.

Create a simple amount-based order
----------------------------------

For a simple sale, open the navigation menu and select **Order by amount**.

.. figure:: ../../images/pos/nav_order_by_amount.png
   :alt: Navigation menu with Order by amount highlighted
   :width: 70%
   :align: center

   Selecting the amount-based order screen.

Then enter the amount that the customer should pay.

.. figure:: ../../images/pos/amount-entry.png
   :alt: Entering an amount for a point-of-sale order
   :width: 70%
   :align: center

   Entering the amount for a quick order.

After confirming the amount, the app continues to the
:ref:`payment QR code <pos_payment_qr_code>`.

Create an Order by Inventory
----------------------------

Open the navigation menu and select **Order by inventory**.

.. figure:: ../../images/pos/nav_order_by_inventory.png
   :alt: Navigation menu with Order by inventory highlighted
   :width: 70%
   :align: center

   Selecting the inventory order screen.

For a more detailed order, you can use order by inventory. This might simplify
the order creation, as the merchant simply needs to select products and their quantities
to create an order.

.. figure:: ../../images/pos/order.png
   :alt: Creating a point-of-sale order from inventory
   :width: 70%
   :align: center

   Creating an order from inventory.

To add a tip or an item that is not available in the inventory list, open the
custom product dialog from the numeric keypad. Enter the product name and price,
then press **Add**.

.. figure:: ../../images/pos/order-custom.png
   :alt: Adding a custom product to a point-of-sale order
   :width: 70%
   :align: center

   Adding a custom product to the order.

After adding the custom item, review the order total and item list. Press
**Bill** to continue to the payment QR code page.

.. figure:: ../../images/pos/order-custom-added.png
   :alt: Point-of-sale order by inventory with an item added
   :width: 70%
   :align: center

   Order by inventory after adding an item.

.. _pos_payment_qr_code:

Payment QR Code
---------------

When the order is successfully created, the payment processing page shows the
Taler payment QR code, which must be shared with the customer.

.. figure:: ../../images/pos/payment.png
   :alt: Point-of-sale payment request
   :width: 70%
   :align: center

   Payment request shown to the customer.

Once the customer pays, the app shows the successful payment screen. At this
point the sale is complete and the order is visible in the order history.

.. figure:: ../../images/pos/payment-success.png
   :alt: Successful point-of-sale payment
   :width: 70%
   :align: center

   Successful payment confirmation.

Leave or Reopen a Payment Request
---------------------------------

To leave the payment page and continue with the next customer, press the back
button. This closes the payment page and opens the order page again.

To return to a payment request, open the history page, find the order, and use
the order's **Show payment** action. The payment page for that order opens
again.

.. figure:: ../../images/pos/history.png
   :alt: Point-of-sale order history
   :width: 70%
   :align: center

   Order history used to find a previous payment request.

Cancel a Pending Payment
------------------------

To cancel a payment that has not been completed, press **Cancel payment** on the
payment page.

.. figure:: ../../images/pos/payment.png
   :alt: Payment page with cancel payment action
   :width: 70%
   :align: center

   Payment page where a pending payment can be canceled.

If the customer has already scanned or opened the payment request, the app may
show the **Force delete order?** confirmation. This means that the customer's
wallet already knows about the order. Press **Force delete** only if you want to
delete the order anyway. After the order is deleted, the customer can no longer
complete that payment.

.. topic:: Next step

   Continue with :ref:`pos_history` to inspect previous orders.
