Skip to content

Report export to Excel

The methods of the “Report export” section return a link to a ready-made .xlsx file — the same report as on the report pages in BILLZ, and the same data as in the reports read page by page. The difference is in the load: instead of dozens of GET pages — a single POST and a link to the file.

All the methods take a POST with a JSON body and respond in the same way.

The file is not prepared instantly — it is built in the background. There are two modes.

Pass the header:

Billz-Response-Channel: HTTP

The request will wait for the file to be ready — up to 100 seconds — and return a response with the link. For an integration this is the only mode in which a link to the file can be obtained at all.

Окно терминала
curl -X POST 'https://api-admin.billz.ai/v1/stock-report-excel' \
-H 'Authorization: Bearer TOKEN' \
-H 'Billz-Response-Channel: HTTP' \
-H 'Content-Type: application/json' \
-d '{
"shop_ids": ["6f244db4-75d6-4fac-9841-14867d45e36a"],
"report_date": "2026-08-31",
"currency": "UZS",
"fields": ["product_name", "measurement_value", "supply_price", "retail_price"]
}'

Without the header the method responds immediately:

{ "message": "7c1e2f3a-9b21-4e2a-8c31-3f4a2b1c9d0e" }

This is the request’s correlation_id.

{
"status_code": 200,
"data": {
"filename": "Stock report for 2026-08-31_7c1e2f3a-9b21-4e2a-8c31-3f4a2b1c9d0e",
"url": "https://minio.billz.ai/report-excel/Stock report for 2026-08-31_7c1e2f3a-9b21-4e2a-8c31-3f4a2b1c9d0e"
}
}

The file name is built from the template <Report name> for <period>_<unique id>; the template of each report is given below, in its own section. The service builds the name in Russian regardless of lang and of the integration’s language — on this page the templates and the example above are given by meaning, but the name that arrives is Russian.

Errors come in the common format. If the file has not been built within 100 seconds, the request ends with 408 and error.code = TIMEOUT, while the build continues. The wait of 100 seconds applies only to report exports; for the other asynchronous methods it is longer.

fields is the list of columns that will go into the file, in the order in which they are listed. The allowed values are in the “Columns” table of each report.

Columns from product attributes and custom fields

Section titled “Columns from product attributes and custom fields”

In product reports, instead of a column name you can pass in fields the UUID of a product attribute or custom field configured in the company catalog (“Size”, “Color”):

{
"fields": ["product_name", "measurement_value", "9f1c2e3a-5b7d-4c1e-8a2f-3d6b0e4c7a91"]
}

The column gets the attribute’s name from the catalog, and the rows hold its value for each product. If a product has no value, the cell is empty. The reports where this works are marked below.

Section Report Method
Shop Summary report by shop POST /v1/general-report-excel
Transactions Transactions POST /v1/transaction-report-excel
Sellers Seller summary POST /v1/seller-general-report-excel
Customers Customer summary POST /v1/customer-general-report-excel
Customers Customer purchases POST /v1/customer-purchases-report-excel
Finance Profit and loss POST /v1/report-profit-and-lose-excel
Finance Financial transactions (cash flow) POST /v1/cashflow-excel
Products Sales by product POST /v1/product-general-report-excel
Products Product performance POST /v1/report-product-performance-excel
Products Imports POST /v1/import-report-excel
Products Sales by supplier POST /v1/sells-supplier-report-excel
Products Order returns POST /v1/supplier-order-returned-export
Products Stocktaking results POST /v1/stocktaking-summary-table-excel-export
Products Product stock POST /v1/stock-report-excel
Products Write-offs POST /v1/write-off-report-table-export
Products Transfers POST /v1/transfer-report-excel-export

POST /v1/general-report-excel · file Summary report for <start_date> - <end_date>_<id>

Revenue, profit, average receipt and the number of transactions for the period.

{
"shop_ids": ["2339a738-a67f-48d2-bb60-8cf4ec54d6cd"],
"start_date": "2026-08-01",
"end_date": "2026-08-31",
"currency": "UZS",
"detalization": "day",
"fields": ["date", "shop_name", "gross_sales", "net_gross_sales", "average_cheque"]
}

Columns:

fields value Column in the file
date Date
shop_name Shop
gross_sales Revenue
discount_sum Discount amount
discount_percent Discount percentage
products_returned Number of returned products
returned_supply_price Returns at supply price
returned_discount_price Returns at the discounted price
returned_retail_price Returns at retail price
sales_supply_price Sales at supply price
net_gross_sales Net revenue
gross_profit Gross profit
average_cheque Average receipt
average_price Average price of a product in a receipt
average_measurement_value Average number of products in a receipt
average_extra_charge Average markup
products_sold Number of products sold
transactions_count Total number of transactions
orders_count Number of sale transactions
returns_count Number of return transactions
exchanges_count Number of exchange transactions
sales_per_square Sales per square metre

POST /v1/transaction-report-excel · file Transaction report for <start_date> - <end_date>_<id>

Sales, returns and exchanges for the period — one row per transaction.

{
"shop_ids": ["2339a738-a67f-48d2-bb60-8cf4ec54d6cd"],
"start_date": "2026-08-01",
"end_date": "2026-08-31",
"order_types": ["SALE"],
"fields": ["date", "order_type", "total_price", "seller_names"]
}

Columns:

fields value Column in the file
date Date
external_id Transaction ID
shop_name Shop
customer_name Customer name
cashier_name Cashier name
seller_names Seller name
order_type Transaction type
sold_measurement_value Number of products and services sold
returned_measurement_value Number of returned products
total_price Transaction total
discount_percent Discount
average_product_price Average price of a product or service in a receipt
gross_sales Payment amount before discount
comment Comment on the transaction
is_modified Edit history

POST /v1/seller-general-report-excel · file Seller report for <start_date> - <end_date>_<id>

Sales broken down by the company’s sellers.

{
"shop_ids": ["2339a738-a67f-48d2-bb60-8cf4ec54d6cd"],
"start_date": "2026-08-01",
"end_date": "2026-08-31",
"currency": "UZS",
"price_type": 1,
"hide_sellers_without_sales": true,
"detalization": "day",
"fields": ["date", "seller_name", "gross_sales", "net_gross_profit", "transaction_count"]
}

Columns:

fields value Column in the file
date Date
shop_name Shop
seller_name Seller
gross_sales Revenue
discount_sum Discount amount
discount_percent Discount percentage
net_gross_sales Net revenue
net_gross_profit Gross profit
sum_returned Returns total
sold_measurement_value Number of products sold
returned_measurement_value Number of returned products
sold_without_return Number sold net of returns
transaction_count Number of transactions
orders_count Number of sale transactions
average_cheque Average receipt
average_measurement_value Average number of products
average_price Average price of a product
net_sold_supply_sum Sales at supply price
rounding_amount Rounding amount

POST /v1/customer-general-report-excel · file Customer report for <start_date> - <end_date>_<id>

Purchases, returns and average receipt for each customer — for all time and for the selected period.

{
"shop_ids": ["2339a738-a67f-48d2-bb60-8cf4ec54d6cd"],
"start_date": "2026-08-01",
"end_date": "2026-08-31",
"currency": "UZS",
"price_type": 1,
"fields": ["customer_name", "customer_phones", "total_purchase_sum", "total_sale_count"]
}

Columns:

fields value Column in the file
registration_date Registration date
registration_shop_name Registration shop
customer_name Customer name
birth_date Date of birth
customer_id Customer ID
customer_phones Phone
customer_groups Groups and tags
is_new_client New customer
is_returned_client Returning customer
total_sale_count Sales (all time)
total_exchange_count Exchanges (all time)
total_return_count Returns (all time)
total_measurement_value Number of products bought (all time)
total_purchase_sum Total amount of purchases (all time)
total_average_measurement_value Average number of products in a receipt (all time)
total_average_purchase_sum Average receipt (all time)
total_average_purchase_discount Average discount (all time)
total_returned_measurement_value Number of returned products (all time)
total_returned_sum Amount of returned products (all time)
period_sale_count Sales for the period
period_exchange_count Exchanges for the period
period_return_count Returns for the period
period_measurement_value Number of products bought for the period
period_purchase_sum Total amount of purchases for the period
period_average_measurement_value Average number of products in a receipt for the period
period_average_purchase_sum Average receipt for the period
period_average_purchase_discount Average discount for the period
period_returned_measurement_value Number of returned products for the period
period_returned_sum Amount of returned products for the period

POST /v1/customer-purchases-report-excel · file Customer purchases report for <start_date> - <end_date>_<id>

A line-by-line list of purchases: what was bought, by whom and when.

{
"shop_ids": ["2339a738-a67f-48d2-bb60-8cf4ec54d6cd"],
"start_date": "2026-08-01",
"end_date": "2026-08-31",
"with_customers": true,
"currency": "UZS",
"fields": ["created_at", "customer_name", "product_name", "gross_sales"]
}

Columns:

fields value Column in the file
created_at Purchase date
shop_name Shop
order_type Transaction type
order_number Transaction ID
seller_name Seller
customer_number Customer ID
customer_name Customer name
phone_numbers Phone
tags Tag
groups Group
product_name Name
product_brand_name Brand
product_barcode Barcode
product_sku SKU
categories_path Category
level_1 … level_5 Category and subcategories 1–4
free_price Free price
used_wholesale_price Wholesale price
gross_sales Revenue
net_sales Net revenue
net_sold_supply_sum Sales at cost price
net_profit Gross profit
discount_percent Average discount
sold_measurement_value Number of products sold
returned_measurement_value Number of returned products

POST /v1/report-profit-and-lose-excel · file Profit and loss report for <start_date> - <end_date>_<id>

The company’s income, expenses and net profit for the period.

{
"shop_ids": ["2339a738-a67f-48d2-bb60-8cf4ec54d6cd"],
"start_date": "2026-08-01",
"end_date": "2026-08-31",
"currency": "UZS",
"detalization": "day",
"price_type": 1,
"lang": "ru"
}

POST /v1/cashflow-excel · file Cash flow for <start_date> - <end_date>_<id>

Movement of money: income, expenses, cash collections, conversions.

Operation types for operation are listed comma-separated, for example 1,2:

Value Operation
1 Income
2 Expense
3 Shift close — the movement of money the system creates itself when a cash register shift is closed, for cashless payment methods
4 Transfer — a manual movement of money between cash registers and accounts, initiated by a user
5 Conversion
6 Cash collection
7 Opening amount
{
"shop_ids": ["2339a738-a67f-48d2-bb60-8cf4ec54d6cd"],
"start_date": "2026-08-01",
"end_date": "2026-08-31",
"operation": "1,2",
"fields": ["created_at", "cashbox", "operation", "amount_from_retail_currency", "user"]
}

Columns:

fields value Column in the file
created_at Date and time
cashbox Cash register
payment_type Money operation type
operation Transaction type
from_account From
to_account To
amount_from_retail_currency Amount FROM (in the company currency)
amount_to_retail_currency Amount TO (in the company currency)
amount_from_usd Amount FROM (USD)
amount_to_usd Amount TO (USD)
user User

POST /v1/product-general-report-excel · file Sales report for <start_date> - <end_date>_<id>

Sales statistics broken down by product. fields accepts the UUIDs of attributes and custom fields.

{
"shop_ids": ["2339a738-a67f-48d2-bb60-8cf4ec54d6cd"],
"start_date": "2026-08-01",
"end_date": "2026-08-31",
"currency": "UZS",
"detalization": "day",
"fields": ["product_name", "sold_measurement_value", "gross_sales", "net_profit"]
}

Columns:

fields value Column in the file
date Date
product_name Name
product_sku SKU
product_barcode Barcode
product_brand_name Brand
shop_name Shop name
categories_path Category
level_1 … level_5 Category and subcategories 1–4
product_measurement_unit_short_name Unit of measure
product_suppliers Supplier
sold_measurement_value Quantity sold
returned_measurement_value Quantity returned
net_sold_measurement_value Sold net of returns
gross_sales Sales before discount
returned_sales_sum Returns total
net_sales Sales after discount and net of returns
net_profit Gross profit
sold_supply_sum Sales at supply price
average_margin Average markup
discount Discount
sold_with_discount Sold with a discount
sold_without_discount Sold without a discount
product_is_archived Archived

POST /v1/report-product-performance-excel · file Product Performance report for <start_date> - <end_date>_<id>

Every movement of each product for the period: stock at the start and at the end, imports, sales, write-offs, transfers, sell-out rate and turnover. fields accepts the UUIDs of attributes and custom fields.

{
"shop_ids": ["2339a738-a67f-48d2-bb60-8cf4ec54d6cd"],
"start_date": "2026-08-01",
"end_date": "2026-08-31",
"grouping_fields": "attribute.color",
"group_id": "9f1c2e3a-5b7d-4c1e-8a2f-3d6b0e4c7a91",
"filter": { "skus": ["SKU-001"] },
"order_by": "+product_name",
"currency": "UZS",
"fields": ["name", "sold_amount", "sold_retail_sum"]
}

Product columns:

fields value Column in the file
shop_name Shop
supplier_name Supplier
name Name
sku SKU
bar_code Barcode
is_archived Archived
brand_name Brand
categories_path Category
level_1 … level_5 Category and subcategories 1–4

Metric columns, each group for the selected period:

Group fields values What is in the columns
Stock at the start of the period stock_amount_begin, stock_supply_sum_begin, stock_retail_sum_begin quantity, amount at supply price, amount at retail price
Product import import_amount, import_supply_sum, import_retail_sum quantity, amount at supply price, amount at retail price
Product orders order_amount, order_supply_sum, order_retail_sum quantity, amount at supply price, amount at retail price
Order return supplier_order_return_amount, supplier_order_return_supply_sum, supplier_order_return_retail_sum quantity, amount at supply price, amount at retail price
Incoming transfer inc_transfer_amount, inc_transfer_supply_sum, inc_transfer_retail_sum quantity, amount at supply price, amount at retail price
Product returns returned_amount, returned_supply_sum, returned_retail_sum, returned_sales_sum quantity, amount at supply price, amount at retail price, amount at the discounted price
Product sales sold_amount, sold_supply_sum, sold_retail_sum, sold_sales_sum, rounding_amount quantity, amount at supply price, amount at retail price, amount at the discounted price, rounding amount
Product write-offs write_off_amount, write_off_supply_sum, write_off_retail_sum quantity, amount at supply price, amount at retail price
Outgoing transfer out_transfer_amount, out_transfer_supply_sum, out_transfer_retail_sum quantity, amount at supply price, amount at retail price
Repricing repricing_amount, repricing_supply_sum, repricing_retail_sum quantity, amount at supply price, amount at retail price
Stock at the end of the period stock_amount_end, stock_supply_sum_end, stock_retail_sum_end quantity, amount at supply price, amount at retail price
Sell-out rate qty_sellout, sum_sellout by quantity, by sales amount
Stock turnover in days day_difference, sellout_in_number, sellout_by_days number of days, sell-out rate, turnover

POST /v1/import-report-excel · file Import report for <start_date> - <end_date>_<id>

What came in through imports and purchase orders and what happened to it afterwards: sales, write-offs, transfers, stock. fields accepts the UUIDs of attributes and custom fields.

{
"shop_ids": ["2339a738-a67f-48d2-bb60-8cf4ec54d6cd"],
"start_date": "2026-08-01",
"end_date": "2026-08-31",
"import_type": "supplier_order",
"fields": ["date", "shop_name", "imported_qty", "sold_qty"]
}

Columns:

fields value Column in the file
date Import date
external_import_id Import ID
external_supplier_order_id Order ID
supplier_name Supplier
import_type Import type
shop_name Shop
product_name Name
product_brand_name Brand
product_barcode Barcode
product_sku SKU
is_archived Archived
categories_path Category
level_1 … level_5 Category and subcategories 1–4
imported_qty Quantity imported
imported_retail_sum Import amount at retail price
imported_supply_sum Import amount at supply price
sold_qty Sales, quantity
sold_retail_sum Sales amount at retail price
sold_supply_sum Sales amount at supply price
sold_sale_sum Sales amount at the discounted price
written_off_qty Write-offs, quantity
written_off_retail_sum Write-off amount at retail price
written_off_supply_sum Write-off amount at supply price
transfer_finished_qty Sent transfers, quantity
transfer_finished_retail_sum Amount of sent transfers at retail price
transfer_finished_supply_sum Amount of sent transfers at supply price
transfer_arrived_qty Accepted transfers, quantity
transfer_arrived_retail_price Amount of accepted transfers at retail price
transfer_arrived_supply_sum Amount of accepted transfers at supply price
repricing_qty Repricing, quantity
repricing_retail_sum Repricing amount at retail price
repricing_supply_sum Repricing amount at supply price
returned Returns, quantity
returned_retail_sum Returns amount at retail price
returned_supply_sum Returns amount at supply price
left_qty Stock, quantity
left_retail_sum Stock amount at retail price
left_supply_sum Stock amount at supply price
return_supplier_order_qty Order returns, quantity
return_supplier_order_retail_sum Amount of order returns at retail price
return_supplier_order_supply_sum Amount of order returns at supply price

POST /v1/sells-supplier-report-excel · file Sales by supplier report for <start_date> - <end_date>_<id>

Product sales broken down by supplier. fields accepts the UUIDs of attributes and custom fields.

{
"shop_ids": ["2339a738-a67f-48d2-bb60-8cf4ec54d6cd"],
"supplier_ids": ["8c1a25e0-4f7b-4c6a-9d2e-1b0f5a3c7d94"],
"start_date": "2026-08-01",
"end_date": "2026-08-31",
"currency": "UZS",
"price_type": 1,
"all_suppliers": 0,
"detalization": "day",
"fields": ["date", "supplier_name", "gross_sales", "net_profit"]
}

Columns:

fields value Column in the file
date Date
supplier_name Supplier
product_name Name
product_sku SKU
product_barcode Barcode
product_brand_name Brand
shop_name Shop name
categories_path Category
level_1 … level_5 Category and subcategories 1–4
free_price Free price
used_wholesale_price Wholesale price
product_measurement_unit_short_name Unit of measure
product_suppliers Suppliers
sold_measurement_value Quantity sold
returned_measurement_value Quantity returned
net_sold_measurement_value Sold net of returns
gross_sales Sales before discount
returned_sales_sum Returns total
net_sales Sales after discount and net of returns
net_profit Gross profit
sold_supply_sum Sales at supply price
average_margin Average markup
discount Discount
sold_with_discount Sold with a discount
sold_without_discount Sold without a discount

POST /v1/supplier-order-returned-export · file Returned orders report for <start_date> - <end_date>_<id>

Returns of products to suppliers against purchase orders. fields accepts the UUIDs of attributes and custom fields.

{
"shop_ids": ["2339a738-a67f-48d2-bb60-8cf4ec54d6cd"],
"start_date": "2026-08-01",
"end_date": "2026-08-31",
"display_currency": "UZS",
"fields": ["created_at", "product_name", "total_return_price"]
}

Columns:

fields value Column in the file
return_operation_id Return operation ID
order_operation_id Order operation ID
shop_name Shop
created_at Date and time
created_by_name User
product_name Name
product_sku SKU
product_barcode Barcode
product_brand Brand
categories_path Category
level_1 … level_5 Category and subcategories 1–4
measurement_value Quantity
supply_price Supply price
retail_price Retail price
supplier_order_name Order
total_return_price Return amount
supplier_name Supplier

POST /v1/stocktaking-summary-table-excel-export · file Stocktaking results report - <id>

The totals of a single stocktaking: declared, counted, what was written off and additionally imported as its result. The report has no period — it is a snapshot. stocktaking_guid is taken from GET /v2/stocktaking. fields accepts the UUIDs of attributes and custom fields.

{
"stocktaking_guid": "eeeeaf2b-1360-4f03-aa74-87ad7cc2edd7",
"currency": "UZS",
"fields": ["product_name", "expected_measurement_value", "scanned_measurement_value"]
}

Columns:

fields value Column in the file
stocktaking_external_id ID
stocktaking_name Stocktaking name
shop_name Shop
product_name Name
product_sku SKU
product_barcode Barcode
product_brand Brand
product_is_archived Archived
product_measurement_unit Unit of measure
product_categories Categories
level_1 Category
level_2 … level_5 Level 1–4
expected_measurement_value Declared
scanned_measurement_value Counted
sold_measurement_value Sold during the stocktaking
postponed_measurement_value Held during the stocktaking
written_off_measurement_value Written off during the stocktaking
in_transfer_measurement_value In transfer during the stocktaking
transferred_measurement_value Transferred during the stocktaking
imported_after_stocktaking_finish Auto-import on the stocktaking results
imported_supply_price_sum Amount of surpluses at supply price
imported_retail_price_sum Amount of surpluses at retail price
written_off_after_stocktaking Auto write-off on the stocktaking results
written_off_supply_price_sum Amount of shortages at supply price
written_off_retail_price_sum Amount of shortages at retail price

POST /v1/stock-report-excel · file Stock report for <report_date>_<id>

Product stock by shop on the selected date. fields accepts the UUIDs of attributes and custom fields.

{
"shop_ids": ["6f244db4-75d6-4fac-9841-14867d45e36a"],
"report_date": "2026-08-31",
"currency": "UZS",
"fields": ["product_name", "measurement_value", "supply_price", "retail_price"]
}

Columns:

fields value Column in the file
shop_name Shop
product_name Product name
supply_price Supply price
retail_price Retail price
measurement_value Quantity
product_sku SKU
product_barcode Barcode
product_measurement_unit_short_name Unit of measure
product_brand_name Brand
categories_path Category
level_1 Category
level_2 … level_5 Subcategories 1–4
supplier_name Supplier
estimated_margin Margin, %
estimated_income Profit amount of the stock
product_is_archived Archived

POST /v1/write-off-report-table-export · file Write-off report for <start_date> - <end_date>_<id>

Products written off during the period, with reasons and amounts. fields accepts the UUIDs of attributes and custom fields.

{
"shop_ids": ["2339a738-a67f-48d2-bb60-8cf4ec54d6cd"],
"start_date": "2026-08-01",
"end_date": "2026-08-31",
"currency": "UZS",
"fields": ["product_name", "written_off_measurement_value", "product_supply_price", "product_retail_price"]
}

Columns:

fields value Column in the file
write_off_external_id Write-off ID
write_off_name Write-off name
write_off_reason Write-off reason
shop_name Shop name
created_by_name User name
created_at Creation time
product_name Product name
product_sku SKU
product_barcode Barcode
categories Categories
level_1 Category
level_2 … level_5 Level 1–4
product_brand Brand
supplier Supplier
product_is_archived Archived
product_supply_price Supply price
product_retail_price Retail price
written_off_measurement_value Number of products written off
written_off_supply_price_sum Amount at supply price
written_off_retail_price_sum Amount at retail price

POST /v1/transfer-report-excel-export · file Transfer report for <start_date> - <end_date>_<id>

Transfers of products between shops. fields accepts the UUIDs of attributes and custom fields.

{
"shop_ids": ["2339a738-a67f-48d2-bb60-8cf4ec54d6cd"],
"start_date": "2026-08-01",
"end_date": "2026-08-31",
"display_currency": "UZS",
"group_by": "product_name",
"date_group": "day",
"fields": ["product_name", "from_shop", "to_shop", "sent_quantity", "arrived_quantity", "sum_supply_price"]
}

Columns:

fields value Column in the file
created_at Sent
accepted_at Accepted
name Transfer
external_id ID
from_shop From
to_shop To
product_name Name
product_sku SKU
product_barcode Barcode
product_brand Brand
categories_path Category
product_attribute Variation
product_custom_field Custom field
supplier Supplier
sent_quantity Quantity sent
arrived_quantity Quantity accepted
sum_supply_price Amount at supply price
sum_retail_price Amount at retail price
measurement_name Unit of measure

All sixteen methods are in the list of integration key routes. The output is narrowed by the list of shops available to the token: the passed shop_ids are intersected with the allowed ones.