> For the complete documentation index, see [llms.txt](https://docs.expirenza.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.expirenza.com/api/messages/paybill.md).

# Оплата рахунку і закриття замовлення

## Повідомлення для фіскалізації

<details>

<summary>payBill</summary>

{% code lineNumbers="true" %}

```json
{
    "rID" : "2021-03-13 00:32:04.942046#UP57RxE",
    "operation" : "payBill",
    "billId" : "5B100B39-CE42-4F3D-8770-807A28CA0500",
    "sum" : 129.20,
    "tips" : 19.24,
    "fiscalData":[
      {
         "key":"ЕКВАЙЕР",
         "value":"Universal Bank"
      },
      {
         "key":"ТЕРМІНАЛ",
         "value":"XPZ10101010"
      },
      {
         "key":"КОМІСІЯ",
         "value":"N грн."
      },
      {
         "key":"ВИД ОПЕРАЦІЇ",
         "value":"Оплата"
      },
      {
         "key":"ЕПЗ",
         "value":"123456******12"
      },
      {
         "key":"ПС",
         "value":"МС|VISA"
      },
      {
         "key":"RRN",
         "value":"1234567890"
      },
      {
         "key":"КОД. АВТ",
         "value":"1234"
      },
      {
         "key":"ФОРМА ОПЛАТИ",
         "value":"БЕЗГОТІВКОВА"
      },
      {
         "key":"ЗАСОБ ОПЛАТИ",
         "value":"ПЕРЕКАЗ ЧЕРЕЗ QR-КОД"
      }
   ],
}
```

{% endcode %}

<pre><code>❗️ Обов'язкові елементи запиту: rID, operation, billId, sum. 
<strong>  fiscalData - Блок інформації щодо транзакції для друку на фіскальному чеку.
</strong></code></pre>

</details>

## Відповідь

Відповідь обробки операції необхідно надіслати в наступному вигляді:

{% openapi src="/files/BafGluElGwLDXt2IOqlf" path="/callback/payBill" method="post" %}
[payBill\_updated.json](https://115752690-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUrrjxJkhEuwfb0dGwW06%2Fuploads%2F08UPYIiglHvtUxOOLDJb%2FpayBill_updated.json?alt=media\&token=141661ab-0403-4070-aaed-f4b9eee27b4d)
{% endopenapi %}

<details>

<summary>Payload example:<code>/callback/payBill</code></summary>

{% code title="JSON" lineNumbers="true" %}

```json
{
  "billId": "string"
  "guests": [
    {
      "dishes": [
        {
          "category": "Кухня",
          "categoryId": "18afdzgu53a",
          "checkNumber": "string",
          "count": 1.3,
          "dishId": "string",
          "linkedTo": "string",
          "name": "Шаурма царська",
          "orderNumber": 12365,
          "positionId": "string",
          "sum": 34.56,
          "taxCategory": "налоги",
          "taxCategoryId": "18afdzgu534",
          "type": "modifier"
        }
      ],
      "name": "Гость 1"
    }
  ],
  "orderNumber": 235,
  "rID": "2021-04-01 09:39:06.021078#BpOI0gO",
  "stackTraceMessage": "string",
  "state": "SUCCESS",
  "substate": "string",
  "waiter": "Петро",
  "waiterId": "f14da21a-5be9-4736-9ece-420bd310bc8a"
}
```

{% endcode %}

</details>

Результатом закриття замовлення у POS-системі можуть бути 2 статуси - FAIL та SUCCESS. \
Для статусу FAIL існують суб-статуси, які дозволяють правильно комунікувати проблему співробітникам закладу.

{% hint style="danger" %}
**Важливим є реалізація усіх підстатусів**, тому як Expirenza має знати у якому суб-статусі знаходиться замовлення, а ресторан має знати що саме пішло не так.
{% endhint %}

Якщо наведені вище сценарії не покривають всіх потреб вашої інтеграції, будь ласка, зверніться до *аккаунт-менеджера* ресторану з детальним описом потреби вашої інтеграції.&#x20;

Ми розглянемо можливість додавання додаткового суб-статусу в Expirenza API.

## Підстатуси FAIL

### WRONG\_REQUEST\_SUM

Description:

&#x20;Сума, що прийшла у запиті для оплати, більша або менша від суми замовлення в POS-системі.&#x20;

&#x20;Така ситуація може виникнути, якщо замовлення було відредаговано у проміжку між  отриманням оплати від гостя та закриттям замовлення у POS-системі.

Обробка substate:

1. Система спише оплату з гостя та покаже повідомлення “Оплата успішна”;.
2. Система надішле персоналу повідомлення в бот з рекомендацією повернути замовлення у початковий стан (скасувати зміни), щоб розблокувати закриття замовлення, або повернути оплату гостю та попросити оплатити заново.
3. Система повторюватиме спроби закрити замовлення з певним інтервалом.

***

### CASHIERS\_SHIFT\_CLOSED

Description:

&#x20;Неможливо закрити замовлення через те, що в POS-системі закрита касова зміна.

Обробка substate:

1. Система спише оплату з гостя та покаже повідомлення “Оплата успішна”.
2. Система відправить персоналу повідомлення у бот з рекомендацією відкрити касову зміну, щоб розблокувати закриття замовлення у POS-системі.
3. Система повторюватиме спроби закрити замовлення з певним інтервалом.

***

### PRINTER\_ERROR

Description:

&#x20;Неможливо закрити замовлення через проблему з фіскальним принтером.

Обробка substate:

1. Система спише оплату з гостя та покаже повідомлення "Оплата успішна".
2. Система надішле персоналу повідомлення у бот з рекомендацією виправити проблему з фіскальним принтером, щоб розблокувати закриття замовлення у POS-системі.
3. Система повторюватиме спроби закрити замовлення з певним інтервалом.

### CLOSE\_ORDER\_BLOCKED

Description:

&#x20;Закриття замовлення заблоковано відкладеною подачею страв.&#x20;

&#x20;Наприклад:  У замовленні є нероздрукований “бігунок” на кухню або бар.

Обробка substate:

1. Система спише оплату з гостя та покаже повідомлення “Оплата успішна”.
2. Система надішле персоналу повідомлення в бот з рекомендацією видалити бігунки або передати на кухню нероздруковані “бігунки”, щоб розблокувати закриття замовлення у POS-системі.
3. Система повторюватиме спроби закрити замовлення з певним інтервалом.

***

### BILL\_IN\_USE

Description:

&#x20;Замовлення заблоковане іншим модулем POS-системи.&#x20;

&#x20;Наприклад:На даний час замовлення відкрито на касовій станції та редагується офіціантом.

Обробка substate:

1. Система спише оплату з гостя та покаже повідомлення "Оплата успішна".
2. Система відправить персоналу повідомлення у бот з рекомендацією вийти з режиму редагування замовелння на робочій станції, щоб розблокувати закриття замовлення у POS-системі.
3. Система повторюватиме спроби закрити замовлення з певним інтервалом.

***

### OTHER\_ERROR

Description:

&#x20;Інші помилки під час закриття замовлення.

Обробка суб-статусу:

1. Система спише оплату з гостя та покаже повідомлення “Оплата успішна”.
2. Система надішле персоналу повідомлення у бот з рекомендацією звернутися до служби підтримки постачальника POS-системи для закриття замовлення.
3. Система **не робитиме** повторних спроб закрити таке замовлення, а здійснить виплату ресторану за даними замовелння отриманими перед оплатою.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## 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, and the optional `goal` query parameter:

```
GET https://docs.expirenza.com/api/messages/paybill.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
