Receipt.Refund

Registers a refund receipt.
A refund receipt can only be registered online.

Input parameters

Name Data type Required Parameter description
code string Optional Receipt number in the external system
pos_id string Optional Cash register ID in the client's system. Defaults to VCR if omitted
session_code string Optional Cash register shift number in the client's system
cashier_name string Optional Full name of the cashier in the client's system. If omitted, the name of the user executing the request is used
seller_name string Optional Seller's name in the client's system (an empty string is allowed)
positions Array of positions Required Product items: an array of positions objects. The array must contain no more than 150 objects
payments Array of payments Required Array of payments. No more than one object with payment type type = 2 can be added
custom_variables Array of custom_variables Optional Custom variables for receipt printing: an array of custom_variables objects
refund_info RefundInfo Required Fiscal details of the sales receipt being refunded: a RefundInfo object

Restrictions, requirements, and checks

  • If Fiscal Drive API version 8.20 or later is installed, a refund receipt may be rejected by FDA.
  • A partial receipt refund is allowed within the available balance of the original receipt.
  • The payment method of a refund receipt is determined by the actual way the money is returned and may differ from that of the original receipt. For example, a purchase paid through PAX can be refunded in cash if the returned products are not subject to a cash prohibition. When validation through the OFD is enabled, the presence of at least one product with a cash prohibition or exceeding the cash payment threshold for an ICPS code prohibits any cash amount in the entire refund receipt, including mixed payments; 701003 is returned.
  • When refunding in cash or through another terminal, the original payment_id does not need to be supplied.
  • The payments[].payment_id field does not initiate a monetary refund. It is allowed only for an already confirmed refund operation on a payment belonging to the original receipt; payments[].value must equal the confirmed operation amount.
  • A completed refund operation cannot be reused, and refund receipts cannot be created for an amount exceeding the available balance of the original receipt.

Request example

{
    "auth": "a2Fzc2E6a2FzMTIzNDU2",
    "id": 1,
    "jsonrpc": "2.0",
    "method": "Receipt.Refund",
    "params": {
        "cashier_name": "Administrator",
        "code": "res-000782",
        "phone": "998918935861",
        "pos_id": "1",
        "seller_name": "Rustam",
        "session_code": "486",
        "positions": [
            {
                "amount": 900000,
                "articul": "56394857",
                "barcode": "5449000000996",
                "label": "010544900000099621TEST00193ABCD",
                "code": "64963",
                "color_name": "Красный",
                "country_name": "Узбекистан",
                "department_name": "Напитки",
                "discount": 0,
                "group_name": "Напитки",
                "name": "Coca-cola",
                "producer_name": "Coca Cola co",
                "quantity": 1000,
                "size_name": "1l",
                "type_name": "Товар",
                "unit_name": "шт",
                "vat_value": 1200,
                "icps": "02202002001010036",
                "package_code": "1218868",
                "brand_name": "Pepsi-Cola",
                "commission_inn": "923409418",
                "owner_type": "BuyingAndSelling"
            }
        ],
        "payments": [
            {
                "type": 1,
                "value": 900000
            }
        ],
        "custom_variables": [
            {
                "name": "gratitude",
                "value": "thank you for buying :)"
            }
        ],
        "refund_info": {
            "DateTime": "2026-10-30T12:00:00",
            "FiscalSign": "123456789012",
            "QRCodeURL": "https://ofd.soliq.uz/check?t=TEST000001&r=187&c=20261030120000&s=123456789012",
            "ReceiptNo": "187",
            "TerminalID": "TEST000001"
        }
    }
}

Note: Each label parameter in the positions model must be unique within a single request.

Note: If the QRCodeURL field is supplied, the other fields are ignored in the refund receipt.


Output parameters

Name Data type Description
Id string ID of the receipt created or found in REGOS: VCR
Code string Receipt code in the external system
Amount int64 Receipt amount in tiyin
QRCodeURL string Mask ***; the URL from the QR code is not returned
TerminalID string Fiscal module ID
ReceiptNo string Mask ***; the fiscal receipt number is not returned
DateTime string Receipt date and time in ISO 8601 format
FiscalSign string Mask ***; the fiscal sign is not returned

The QRCodeURL, ReceiptNo, and FiscalSign fields always contain the string ***. Complete fiscal details and a working QR code are printed on the paper receipt. Use Id for subsequent requests involving the receipt.

Response example

{
    "id": 1,
    "ok": true,
    "result": {
        "Id": "59683513-a845-5ce3-bf75-4f35f7a7d846",
        "Code": "res-000782",
        "Amount": 900000,
        "QRCodeURL": "***",
        "TerminalID": "TEST000001",
        "ReceiptNo": "***",
        "DateTime": "2026-10-30T12:00:00",
        "FiscalSign": "***"
    },
    "jsonrpc": "2.0"
}

Local marking code control during refunds

After a refund is successfully registered, only the marking codes of the returned items from the corresponding sale are released on this REGOS: VCR installation. A refund against an old receipt does not release a unit that has already been sold again in another receipt.

If a marking code is assigned to another sale or the supplied details do not identify the corresponding original sale, 704045 is returned. If the marking code is absent from the local records of sold units, this restriction does not apply; all other refund checks are performed.

If the result of the previous operation is unconfirmed, 704044 is returned. In Fiscal Drive Service mode, repeating the same request may resume the saved unfinished operation. Do not change the receipt contents or its code to bypass the restriction. If the operation cannot be recovered, check the result of the previous receipt and contact a TSC. Restarting the cash register alone does not remove the restriction.

Local marking records accumulate only for sales registered after upgrading to version 2026-10-30. Earlier receipts are not used to initialize these records.