# Sales and revenue export

> How to fetch receipts for a period and how to get summary revenue by shop for a date.

Two similar tasks are solved by different methods:

| What is needed                     | Method                             | Granularity |
| ---------------------------------- | ---------------------------------- | ----------- |
| Summary revenue by shop for a date | `GET /v1/general-report-table`     | shop × date |
| Breakdown by payment type          | `GET /v1/transaction-report-table` | transaction |

## Summary revenue by shop

```bash
curl -X GET 'https://api-admin.billz.ai/v1/general-report-table?start_date=2026-08-22&end_date=2026-08-22&shop_ids=ID1,ID2&currency=UZS&detalization=day&limit=50&page=1' \
  -H 'Authorization: Bearer TOKEN'
```

> **`detalization` is required**
>
> Allowed values: `30min`, `hour`, `day`, `week`, `month`, `year`.

A report row is a “shop × date” pair:

| Field                                                                    | What it is                                        |
| ------------------------------------------------------------------------ | ------------------------------------------------- |
| `date`, `shop_name`                                                      | date and shop                                     |
| `gross_sales`                                                            | revenue                                           |
| `net_gross_sales`                                                        | net revenue: `gross_sales − discounts − returns`  |
| `gross_profit`                                                           | gross profit                                      |
| `discount_sum`, `discount_percent`                                       | discounts                                         |
| `transactions_count`, `orders_count`, `returns_count`, `exchanges_count` | number of transactions by type                    |
| `average_cheque`, `average_measurement_value`                            | average receipt and average number of items in it |
| `products_sold`, `products_returned`                                     | units sold and units returned                     |

## Breakdown by payment type

When the question is “how much was paid in cash and how much by card”: `GET /v1/transaction-report-table`; totals: `GET /v1/transaction-report-totals`. The list of payment types for the filter: `GET /v1/transaction-report-payments`; type names: `GET /v1/company-payment-type`.

## A ready-made file instead of page-by-page reading

Both reports have a paired method that builds an `.xlsx` in the background and returns a link to the ready file: `POST /v1/general-report-excel` — the summary report by shop, `POST /v1/transaction-report-excel` — transactions. One request instead of dozens of pages; the `Billz-Response-Channel: HTTP` header is mandatory here, without it there will be no link. Parameters, the file’s columns and the full list of sixteen reports are in [report export to Excel](/en/reference/report-export/).

## Permissions

All the reports listed are in the list of routes available to the integration key.

The output is narrowed by the list of shops available to the token: the passed `shop_ids` are intersected with the allowed ones.

## Regular export

* The previous day is fetched in full, once: a sale can be edited or returned retroactively.
* Dates in reports are in the company’s time zone (Tashkent is UTC+5).
* A retry with exponential backoff on `429` is always required.