Receipt fields: contents and reference tables
Here is the complete contents of the receipt object (in correction receipts it is called correction) and all the value reference tables the Cash Server API accepts. Everything described below is checked at the intake: a receipt that fails the check returns error 32, and the error text names the specific field.
1. Structure#
{
"client": { "email": "buyer@example.com" },
"company": { "email": "shop@example.com", "sno": "usn_income",
"inn": "7736570901", "payment_address": "https://shop.example" },
"items": [ /* 1…100 items */ ],
"payments": [ /* at least one payment */ ],
"vats": [ { "type": "vat20", "sum": 416.67 } ],
"total": 2500.00,
"cashier": "Ivanov I.I.",
"cashier_inn": "123456789047",
"additional_check_props": "Order #10421",
"additional_user_props": { "name": "Manager", "value": "Petrov" },
"internet": true,
"device_number": "web-1"
}
Required minimum: client (for sales operations), company, items, payments, total.
Monetary Rules#
| Rule | Validation |
|---|---|
total = sum of items[].sum |
Tolerance of 0.01 ₽ per item (rounding) |
total > 0 |
Strict |
Σ payments[].sum = total |
Exact (epsilon 0.005 ₽) |
| All amounts are in rubles | Fractional part represents kopecks: 1250.50 |
Amounts are passed as numbers, not strings. An item is calculated as price × quantity, but the item total is taken from sum — if you have a discount on an item, put the actual cost into sum.
2. client — Customer#
For online payments, the receipt is always electronic, so a receipt delivery destination is required: at least one of email / phone. If both are provided, the OFD will send the receipt to the email.
| Field | Tag | Description |
|---|---|---|
email |
1008 | Customer's email |
phone |
1008 | Phone number in +7XXXXXXXXXX format |
name |
1227 | Customer company name / full name (for B2B and excisable goods) |
inn |
1228 | Customer INN (TIN) |
birthdate |
1243 | Date of birth, dd.mm.yyyy |
citizenship |
1244 | Country code according to OKSM, e.g. 643 |
document_code |
1245 | Identity document type code |
document_data |
1246 | Document details |
address |
1254 | Customer address |
Extended attributes (name…address) are required only in specific industry cases — a regular online store only needs email or phone. Support for them depends on the cash register model: if the fiscal printer does not support them, the document will return with a driver error — the message text from the register itself (for example: "customer attributes (tags 1227/1228/1008/1256)… are not supported"), without a separate error code.
3. company — seller#
| Field | Tag | Req. | Description |
|---|---|---|---|
inn |
1018 | yes | TIN (INN) of the company or sole proprietor: 10 or 12 digits |
sno |
1055 | recommended | Taxation system, see table below |
payment_address |
1187 | recommended | Settlement place — your website address |
email |
1117 | recommended | Receipt sender's email address |
The TIN must match the TIN registered for your POS fiscal drive. A mismatch is rejected immediately upon registration: HTTP 400, error 32, the message specifies both TINs — of the receipt and the group. The document is not queued.
Taxation systems (sno)#
| Value | Description |
|---|---|
osn |
General |
usn_income |
Simplified, income |
usn_income_outcome |
Simplified, income minus expense |
envd |
Unified tax on imputed income |
esn |
Unified agricultural tax |
patent |
Patent system |
If the field is not passed, the default taxation system configured for your POS group is applied.
4. items — the line items#
{
"name": "Coffee beans, 1 kg",
"price": 1250.00,
"quantity": 2,
"sum": 2500.00,
"measure": 11,
"payment_method": "full_payment",
"payment_object": 1,
"vat": { "type": "vat20" },
"user_data": "SKU A-100"
}
| Field | Tag | Required (v5) | Description |
|---|---|---|---|
name |
1030 | yes | The name, ≤ 128 characters |
price |
1079 | yes | The price per unit |
quantity |
1023 | yes | The quantity, > 0, fractional values allowed |
sum |
1043 | yes | The cost of the item |
measure |
2108 | yes | The numeric code of the unit of measure |
payment_method |
1214 | yes | The payment method attribute |
payment_object |
1212 | yes | The payment subject attribute, a number 1…33 |
vat.type |
1199 | yes | The VAT rate |
vat.sum |
1200 | no | The VAT amount, if you compute it yourself |
user_data |
1191 | no | An additional item field |
excise |
1229 | no | Excise duty |
country_code |
1230 | no | The country of origin code (OKSM) |
declaration_number |
1231 | no | The customs declaration number |
mark_code |
1163 | no | The marking code, see §7 |
mark_quantity |
1291 | no | A fractional quantity of a marked good |
agent_info / supplier_info |
1222/1224 | no | The agent scheme, see §8 |
sectoral_item_props |
1260 | no | An industry-specific item field |
The payment method attribute (payment_method)#
| Value | Meaning | When it is typical in an online store |
|---|---|---|
full_prepayment |
100% prepayment | Payment on the website before shipping |
prepayment |
Partial prepayment | Part of the order has been paid |
advance |
Advance | Payment without specific goods (a gift certificate) |
full_payment |
Full settlement | Payment and handover of the goods at the same time |
partial_payment |
Partial settlement and credit | Part is paid, the rest is in instalments |
credit |
Handover on credit | The goods are shipped without payment |
credit_payment |
Credit repayment | A previously granted credit is being repaid |
The payment subject attribute (payment_object, a number in v5)#
| Code | Subject | Code | Subject |
|---|---|---|---|
| 1 | Goods | 17 | Trade levy |
| 2 | Excisable goods | 18 | Resort fee |
| 3 | Work | 19 | Deposit |
| 4 | Service | 20 | Expense |
| 5 | Gambling bet | 21 | Pension contributions of a sole trader |
| 6 | Gambling winnings | 22 | Pension contributions |
| 7 | Lottery ticket | 23 | Medical insurance contributions of a sole trader |
| 8 | Lottery winnings | 24 | Medical insurance contributions |
| 9 | Results of intellectual activity | 25 | Social insurance contributions |
| 10 | Payment | 26 | Casino payment |
| 11 | Agent's commission | 27 | Disbursement of cash |
| 12 | Payout | 30 | Excisable marked goods without a code |
| 13 | Another payment subject | 31 | Excisable marked goods with a code |
| 14 | Property right | 32 | Marked goods without a code |
| 15 | Non-operating income | 33 | Marked goods with a code |
| 16 | Other payments and contributions |
An ordinary online store product is code 1; a service is 4; a marked good with a scanned code is 33.
In the v4 protocol the same field is passed as a string (commodity, service, job, payment, agent_commission, another and so on) — the historic v4 names are accepted and mapped to the modern table automatically.
The unit of measure (measure, a number in v5)#
| Code | Unit | Code | Unit | Code | Unit |
|---|---|---|---|---|---|
| 0 | Piece, unit | 30 | cm² | 70 | Day |
| 10 | Gram | 31 | dm² | 71 | Hour |
| 11 | Kilogram | 32 | m² | 72 | Minute |
| 12 | Tonne | 40 | Millilitre | 73 | Second |
| 20 | Centimetre | 41 | Litre | 80 | Kilobyte |
| 21 | Decimetre | 42 | m³ | 81 | Megabyte |
| 22 | Metre | 50 | kWh | 82 | Gigabyte |
| 51 | Gcal | 83 | Terabyte | ||
| 255 | Another unit |
In v4 a measurement_unit string is passed instead of the code ("pcs", "kg", "l", "hour"); an unrecognized string is mapped to "another unit".
VAT rates (vat.type)#
| Value | Rate |
|---|---|
none |
Not subject to VAT |
vat0 |
0% |
vat5 |
5% (simplified taxation) |
vat7 |
7% (simplified taxation) |
vat10 |
10% |
vat20 |
20% |
vat22 |
22% |
vat105 |
5/105 — derived |
vat107 |
7/107 — derived |
vat110 |
10/110 — derived |
vat120 |
20/120 — derived |
vat122 |
22/122 — derived |
The derived rates apply to amounts that already include the tax — to advances and prepayments, for example.
The 22% and 22/122 rates require a cash register whose firmware knows the new rate. Some older-generation models physically do not accept it — check with your service centre.
5. payments — payments#
"payments": [ { "type": 1, "sum": 2500.00 } ]
type |
Payment method | When |
|---|---|---|
| 0 | Cash | Courier accepted cash |
| 1 | Cashless | Card payment, SBP, e-wallet |
| 2 | Prepayment (advance) | Offset of previously received advance |
| 3 | Postpayment (credit) | Goods provided on credit |
| 4 | Consideration | Mutual offset, barter |
There can be multiple payments, and their sum must match total; the service does not set its own limit on the number of payments — the restriction is determined by the cash register itself and the fiscal document format. For an online store accepting card payments on a website, this is always {"type": 1, "sum": <total>}.
6. vats — aggregate rates#
An optional block: a VAT summary for the whole receipt ([{ "type": "vat20", "sum": 416.67 }]). If it is not passed, the cash register computes the taxes from the items itself.
7. Marking#
The marking code is passed in exactly one format field:
"payment_object": 33,
"mark_code": { "gs1m": "MDEwNDYwNzQyODY3OTA5MDIxOU..." },
"mark_quantity": { "numerator": 1, "denominator": 2 }
| Format | What it is |
|---|---|
unknown |
An unrecognized code (passed as is) |
ean8, ean13, itf14 |
Product barcodes |
gs10, gs1m |
GS1 DataMatrix (gs1m — in Base64) |
short |
A shortened code |
fur |
A fur product |
egais20, egais30 |
EGAIS (alcohol) |
mark_quantity (a fractional sale of a marked good) is allowed only together with a marking code. In the v4 protocol nomenclature_code — a hex string — is used instead of mark_code.
Important. The marking code is passed to your cash register as is: the service does not verify the code in "Chestny ZNAK" and does not implement the permissive mode. If your goods are subject to the permissive mode, the check must be performed before the receipt is sent — on the side of your accounting system or cash register software.
8. The agent scheme#
When you sell a principal's goods (a marketplace, a payment agent, a commission agent), the item is supplemented with two blocks:
"agent_info": { "type": "commission_agent" },
"supplier_info": { "name": "Supplier LLC", "inn": "7736570901", "phones": ["+79001234567"] }
agent_info.type |
Role |
|---|---|
bank_paying_agent |
Bank paying agent |
bank_paying_subagent |
Bank paying subagent |
paying_agent |
Paying agent |
paying_subagent |
Paying subagent |
attorney |
Attorney |
commission_agent |
Commission agent |
another |
Another kind of agent |
supplier_info with a valid TIN is mandatory whenever agent_info is set — otherwise the receipt fails validation. For paying agents, the phone numbers of the payment acceptance operator and the details of the transfer operator are additionally filled in inside agent_info.
9. Other receipt fields#
| Field | Tag | Description |
|---|---|---|
cashier / cashier_inn |
1021 / 1203 | The cashier and their TIN |
additional_check_props |
1192 | An additional receipt field (the order number, for example) |
additional_user_props |
1084 | An additional user field: {name, value} |
device_number |
1036 | The number of the vending machine / sales channel |
internet |
1125 | The online settlement attribute (substituted automatically for operations via the API) |
cashless_payments |
1234 | Information about cashless payments |
operating_check_props |
1270 | An operational receipt field |
sectoral_check_props |
1261 | An industry-specific receipt field: federal_id, date, number, value |
10. The correction receipt#
For *_correction operations the document body is passed in the root correction field, and the grounds — in correction_info:
{
"timestamp": "04.08.2026 15:00:00",
"external_id": "corr-10421",
"correction_info": { "type": "self", "base_date": "03.08.2026", "base_number": "1" },
"correction": {
"company": { "sno": "usn_income", "inn": "7736570901", "payment_address": "https://shop.example" },
"items": [ /* as in an ordinary receipt */ ],
"payments": [ { "type": 1, "sum": 2500.00 } ],
"total": 2500.00
}
}
correction_info.type:self— on your own initiative,instruction— by order of the tax authority.base_dateis always mandatory,base_number— mandatory withinstruction.- The
clientblock is not required in a correction.
Which correction receipt the law requires in which case — in the Correction receipt reference and the breakdowns of typical situations next to it.
Next: online store scenarios · errors and diagnostics · API reference.