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;
701003is returned. - When refunding in cash or through another terminal, the original
payment_iddoes not need to be supplied. - The
payments[].payment_idfield 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[].valuemust 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.