Skip to content

Getting started

ARCA Proxy is a local service that prints fiscal receipts. You send it JSON over HTTPS, it answers with JSON.

Endpoint

Everything goes to one address:

POSThttps://localhost:26496/service

It runs on the same machine as your application. No login, no API key.

There are no separate /sale or /refund addresses. Every command is a POST to /service, and which one you want is written inside the JSON, in the command field.

Request

json
{
  "id": "1",
  "method": "send",
  "data": {
    "command": "Sale",
    "payload": { }
  }
}
FieldDescription
idAny string. It is returned to you unchanged.
methodsend to run a command, ping to test the connection.
data.commandSale, Refund, PrintXReport, CloseZReport or PrintLastReceipt
data.payloadThe command's data. Not needed for reports.

Response

Success:

json
{ "id": "1", "success": true, "data": { "saleId": 142 } }

Error:

json
{ "id": "1", "success": false, "error": "Нет подключения с аппаратом!" }

Always check success. The HTTP status is 200 even when success is false.

Test the connection

bash
curl -X POST https://localhost:26496/service \
  -H 'Content-Type: application/json' \
  -d '{"id":"1","method":"ping"}'
json
{ "id": "1", "success": true, "data": "pong" }

pong means the proxy is running and the device is connected. If you get an error instead, see Errors.

Commands

CommandWhat it doesPage
SalePrint a sale receiptSale
RefundReturn an earlier saleRefund
PrintXReportPrint an X-reportReports
CloseZReportClose the shift, print a Z-reportReports
PrintLastReceiptReprint the last receiptReports

Certificate

The proxy uses HTTPS with its own certificate. Install the self_rootCA.crt file you were given into your machine's trusted certificates — otherwise every request fails with a TLS error.

Node.js and Python have their own certificate stores:

bash
# Node.js
NODE_EXTRA_CA_CERTS=/path/to/self_rootCA.crt node app.js
python
# Python
requests.post(url, json=body, verify='/path/to/self_rootCA.crt')
bash
# curl
curl --cacert /path/to/self_rootCA.crt ...

Two things to remember

Money is in tiyin. 12500 means 125.00 UZS. Always a whole number, never 125.00.

One command at a time. Wait for a response before sending the next request, or you get Не так быстро, ожидайте окончания предыдущей команды!.

ARCA Proxy API