{
"error": "error_brand_already_exists",
"localMessage": "Бренд Base уже существует",
"params": {
"name": "Base"
}
}Публичный API · Справочник API
Кассовые чеки
Создание кассовых чеков для заказов и проверка их статуса.
Управление чеками онлайн-касс.
/api/receipt
Модель данных
Структуры данных
Поля объектов, которые используются в запросах и ответах этого раздела.
Receipt14 полей
idinteger · int64ID чека
read-onlyclientIdinteger · int64ID клиента
read-onlyorderIdinteger · int64ID заказа
read-onlyorganizationIdinteger · int64ID организации
read-onlyexternalReceiptIdstringID чека в системе онлайн-кассы
fiscalNumberstringФискальный номер документа (ФД), присвоенный ФНС
cashRegisterServicestringСервис онлайн-кассы
fnsUrlstringСсылка на проверку чека на сайте ФНС
statusstringСтатус чека
receiptTypestringТип операции
totalAmountnumber · doubleОбщая сумма чека
createdDatestring · date-timeДата создания записи
read-onlycompletedDatestring · date-timeДата успешного пробития чека
errorMessagestringСообщение об ошибке, если статус FAILED
Ошибки
Обработка ошибок
При ошибке API возвращает её код в поле error и сообщение на языке пользователя в localMessage. Проверяйте код error в программе, а localMessage показывайте пользователю.
errorКод ошибки для обработки в программе.
localMessageСообщение на языке пользователя, которому принадлежит токен.
paramsЗначения, которые сервер подставил в сообщение об ошибке.
Язык localMessage определяется полем lang пользователя, которому принадлежит API-токен. Язык страницы документации и заголовок Accept-Language его не переключают; если язык пользователя не указан, используется русский.
{
"error": "error_brand_already_exists",
"localMessage": "Brand Base already exists",
"params": {
"name": "Base"
}
}Методы
Методы
Получить чеки заказа
/api/receipt/order/{orderId}Возвращает все чеки, пробитые для указанного заказа
Параметры пути
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
orderId |
integer · int64 | Да | Поле orderId. |
curl --request GET 'https://api.selsup.ru/api/receipt/order/1001' \
--header 'Authorization: YOUR_API_TOKEN'
const response = await fetch('https://api.selsup.ru/api/receipt/order/1001', {
method: 'GET',
headers: { Authorization: process.env.SELSUP_API_TOKEN },
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.error || 'selsup_request_failed');
}
const result = await response.json();
const response: Response = await fetch('https://api.selsup.ru/api/receipt/order/1001', {
method: 'GET',
headers: { Authorization: process.env.SELSUP_API_TOKEN! },
});
if (!response.ok) {
const error = await response.json() as { error?: string };
throw new Error(error.error ?? 'selsup_request_failed');
}
const result: unknown = await response.json();
import os
import requests
response = requests.get(
'https://api.selsup.ru/api/receipt/order/1001',
headers={'Authorization': os.environ['SELSUP_API_TOKEN']},
)
response.raise_for_status()
result = response.json()
<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => 'https://api.selsup.ru/api/receipt/order/1001',
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: ' . getenv('SELSUP_API_TOKEN')],
]);
$response = curl_exec($curl);
$status = curl_getinfo($curl, CURLINFO_HTTP_CODE);
curl_close($curl);
if ($response === false || $status >= 400) {
throw new RuntimeException($response ?: 'selsup_request_failed');
}
echo $response;
package main
import (
"fmt"
"io"
"net/http"
"os"
)
func main() {
req, err := http.NewRequest("GET", "https://api.selsup.ru/api/receipt/order/1001", nil)
if err != nil { panic(err) }
req.Header.Set("Authorization", os.Getenv("SELSUP_API_TOKEN"))
response, err := http.DefaultClient.Do(req)
if err != nil { panic(err) }
defer response.Body.Close()
result, _ := io.ReadAll(response.Body)
fmt.Printf("%d\n%s\n", response.StatusCode, result)
}
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class SelSupExample {
public static void main(String[] args) throws Exception {
HttpRequest request = HttpRequest.newBuilder(URI.create("https://api.selsup.ru/api/receipt/order/1001"))
.header("Authorization", System.getenv("SELSUP_API_TOKEN"))
.method("GET", HttpRequest.BodyPublishers.noBody())
.build();
HttpResponse<String> response = HttpClient.newHttpClient()
.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.statusCode());
System.out.println(response.body());
}
}
Успешный ответ
200
Структура элемента массива
Receipt[]
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
id |
integer · int64 | Нет | ID чека |
clientId |
integer · int64 | Нет | ID клиента |
orderId |
integer · int64 | Нет | ID заказа |
organizationId |
integer · int64 | Нет | ID организации |
externalReceiptId |
string | Нет | ID чека в системе онлайн-кассы |
fiscalNumber |
string | Нет | Фискальный номер документа (ФД), присвоенный ФНС |
cashRegisterService |
stringNONE, EVOTOR, ATOL | Нет | Сервис онлайн-кассы |
fnsUrl |
string | Нет | Ссылка на проверку чека на сайте ФНС |
status |
stringCREATED, PENDING, COMPLETED, FAILED, CANCELLED | Нет | Статус чека |
receiptType |
stringINCOME, EXPENSE, REFUND, EXPENSE_REFUND | Нет | Тип операции |
totalAmount |
number · double | Нет | Общая сумма чека |
createdDate |
string · date-time | Нет | Дата создания записи |
completedDate |
string · date-time | Нет | Дата успешного пробития чека |
errorMessage |
string | Нет | Сообщение об ошибке, если статус FAILED |
[
"string"
]Ошибки3
При ошибке проверьте HTTP-статус и тело ответа. Поле error содержит код ошибки, localMessage — сообщение для пользователя, params — дополнительные сведения. Обработка ошибок ↑
auth_requiredЗаголовок Authorization отсутствует, пуст или содержит недействительный токен.
error_access_deniedТокен существует, но его роль не позволяет выполнить операцию.
error_unknownНе удалось выполнить запрос из-за внутренней ошибки. Если запрос изменял данные, проверьте результат перед повторной отправкой. Для обращения в поддержку сохраните время запроса и полученный ответ.
Создать чек для заказа
/api/receipt/order/{orderId}Пробивает чек через онлайн-кассу для указанного заказа
Параметры пути
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
orderId |
integer · int64 | Да | Поле orderId. |
Параметры запроса
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
typeПо умолчанию: INCOME |
stringINCOME, EXPENSE, REFUND, EXPENSE_REFUND | Нет | Поле type. |
curl --request POST 'https://api.selsup.ru/api/receipt/order/1001' \
--header 'Authorization: YOUR_API_TOKEN'
const response = await fetch('https://api.selsup.ru/api/receipt/order/1001', {
method: 'POST',
headers: { Authorization: process.env.SELSUP_API_TOKEN },
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.error || 'selsup_request_failed');
}
const result = await response.json();
const response: Response = await fetch('https://api.selsup.ru/api/receipt/order/1001', {
method: 'POST',
headers: { Authorization: process.env.SELSUP_API_TOKEN! },
});
if (!response.ok) {
const error = await response.json() as { error?: string };
throw new Error(error.error ?? 'selsup_request_failed');
}
const result: unknown = await response.json();
import os
import requests
response = requests.post(
'https://api.selsup.ru/api/receipt/order/1001',
headers={'Authorization': os.environ['SELSUP_API_TOKEN']},
)
response.raise_for_status()
result = response.json()
<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => 'https://api.selsup.ru/api/receipt/order/1001',
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: ' . getenv('SELSUP_API_TOKEN')],
]);
$response = curl_exec($curl);
$status = curl_getinfo($curl, CURLINFO_HTTP_CODE);
curl_close($curl);
if ($response === false || $status >= 400) {
throw new RuntimeException($response ?: 'selsup_request_failed');
}
echo $response;
package main
import (
"fmt"
"io"
"net/http"
"os"
)
func main() {
req, err := http.NewRequest("POST", "https://api.selsup.ru/api/receipt/order/1001", nil)
if err != nil { panic(err) }
req.Header.Set("Authorization", os.Getenv("SELSUP_API_TOKEN"))
response, err := http.DefaultClient.Do(req)
if err != nil { panic(err) }
defer response.Body.Close()
result, _ := io.ReadAll(response.Body)
fmt.Printf("%d\n%s\n", response.StatusCode, result)
}
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class SelSupExample {
public static void main(String[] args) throws Exception {
HttpRequest request = HttpRequest.newBuilder(URI.create("https://api.selsup.ru/api/receipt/order/1001"))
.header("Authorization", System.getenv("SELSUP_API_TOKEN"))
.method("POST", HttpRequest.BodyPublishers.noBody())
.build();
HttpResponse<String> response = HttpClient.newHttpClient()
.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.statusCode());
System.out.println(response.body());
}
}
Успешный ответ
200
Поля объекта
Receipt
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
id |
integer · int64 | Нет | ID чека |
clientId |
integer · int64 | Нет | ID клиента |
orderId |
integer · int64 | Нет | ID заказа |
organizationId |
integer · int64 | Нет | ID организации |
externalReceiptId |
string | Нет | ID чека в системе онлайн-кассы |
fiscalNumber |
string | Нет | Фискальный номер документа (ФД), присвоенный ФНС |
cashRegisterService |
stringNONE, EVOTOR, ATOL | Нет | Сервис онлайн-кассы |
fnsUrl |
string | Нет | Ссылка на проверку чека на сайте ФНС |
status |
stringCREATED, PENDING, COMPLETED, FAILED, CANCELLED | Нет | Статус чека |
receiptType |
stringINCOME, EXPENSE, REFUND, EXPENSE_REFUND | Нет | Тип операции |
totalAmount |
number · double | Нет | Общая сумма чека |
createdDate |
string · date-time | Нет | Дата создания записи |
completedDate |
string · date-time | Нет | Дата успешного пробития чека |
errorMessage |
string | Нет | Сообщение об ошибке, если статус FAILED |
{
"id": 1001,
"clientId": 1001,
"orderId": 1001,
"organizationId": 1001,
"externalReceiptId": "string",
"fiscalNumber": "string"
}Ошибки3
При ошибке проверьте HTTP-статус и тело ответа. Поле error содержит код ошибки, localMessage — сообщение для пользователя, params — дополнительные сведения. Обработка ошибок ↑
auth_requiredЗаголовок Authorization отсутствует, пуст или содержит недействительный токен.
error_access_deniedТокен существует, но его роль не позволяет выполнить операцию.
error_unknownНе удалось выполнить запрос из-за внутренней ошибки. Если запрос изменял данные, проверьте результат перед повторной отправкой. Для обращения в поддержку сохраните время запроса и полученный ответ.
Получить чек по ID
/api/receipt/{receiptId}Возвращает детальную информацию о чеке
Параметры пути
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
receiptId |
integer · int64 | Да | Поле receiptId. |
curl --request GET 'https://api.selsup.ru/api/receipt/1001' \
--header 'Authorization: YOUR_API_TOKEN'
const response = await fetch('https://api.selsup.ru/api/receipt/1001', {
method: 'GET',
headers: { Authorization: process.env.SELSUP_API_TOKEN },
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.error || 'selsup_request_failed');
}
const result = await response.json();
const response: Response = await fetch('https://api.selsup.ru/api/receipt/1001', {
method: 'GET',
headers: { Authorization: process.env.SELSUP_API_TOKEN! },
});
if (!response.ok) {
const error = await response.json() as { error?: string };
throw new Error(error.error ?? 'selsup_request_failed');
}
const result: unknown = await response.json();
import os
import requests
response = requests.get(
'https://api.selsup.ru/api/receipt/1001',
headers={'Authorization': os.environ['SELSUP_API_TOKEN']},
)
response.raise_for_status()
result = response.json()
<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => 'https://api.selsup.ru/api/receipt/1001',
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: ' . getenv('SELSUP_API_TOKEN')],
]);
$response = curl_exec($curl);
$status = curl_getinfo($curl, CURLINFO_HTTP_CODE);
curl_close($curl);
if ($response === false || $status >= 400) {
throw new RuntimeException($response ?: 'selsup_request_failed');
}
echo $response;
package main
import (
"fmt"
"io"
"net/http"
"os"
)
func main() {
req, err := http.NewRequest("GET", "https://api.selsup.ru/api/receipt/1001", nil)
if err != nil { panic(err) }
req.Header.Set("Authorization", os.Getenv("SELSUP_API_TOKEN"))
response, err := http.DefaultClient.Do(req)
if err != nil { panic(err) }
defer response.Body.Close()
result, _ := io.ReadAll(response.Body)
fmt.Printf("%d\n%s\n", response.StatusCode, result)
}
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class SelSupExample {
public static void main(String[] args) throws Exception {
HttpRequest request = HttpRequest.newBuilder(URI.create("https://api.selsup.ru/api/receipt/1001"))
.header("Authorization", System.getenv("SELSUP_API_TOKEN"))
.method("GET", HttpRequest.BodyPublishers.noBody())
.build();
HttpResponse<String> response = HttpClient.newHttpClient()
.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.statusCode());
System.out.println(response.body());
}
}
Успешный ответ
200
Поля объекта
Receipt
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
id |
integer · int64 | Нет | ID чека |
clientId |
integer · int64 | Нет | ID клиента |
orderId |
integer · int64 | Нет | ID заказа |
organizationId |
integer · int64 | Нет | ID организации |
externalReceiptId |
string | Нет | ID чека в системе онлайн-кассы |
fiscalNumber |
string | Нет | Фискальный номер документа (ФД), присвоенный ФНС |
cashRegisterService |
stringNONE, EVOTOR, ATOL | Нет | Сервис онлайн-кассы |
fnsUrl |
string | Нет | Ссылка на проверку чека на сайте ФНС |
status |
stringCREATED, PENDING, COMPLETED, FAILED, CANCELLED | Нет | Статус чека |
receiptType |
stringINCOME, EXPENSE, REFUND, EXPENSE_REFUND | Нет | Тип операции |
totalAmount |
number · double | Нет | Общая сумма чека |
createdDate |
string · date-time | Нет | Дата создания записи |
completedDate |
string · date-time | Нет | Дата успешного пробития чека |
errorMessage |
string | Нет | Сообщение об ошибке, если статус FAILED |
{
"id": 1001,
"clientId": 1001,
"orderId": 1001,
"organizationId": 1001,
"externalReceiptId": "string",
"fiscalNumber": "string"
}Ошибки3
При ошибке проверьте HTTP-статус и тело ответа. Поле error содержит код ошибки, localMessage — сообщение для пользователя, params — дополнительные сведения. Обработка ошибок ↑
auth_requiredЗаголовок Authorization отсутствует, пуст или содержит недействительный токен.
error_access_deniedТокен существует, но его роль не позволяет выполнить операцию.
error_unknownНе удалось выполнить запрос из-за внутренней ошибки. Если запрос изменял данные, проверьте результат перед повторной отправкой. Для обращения в поддержку сохраните время запроса и полученный ответ.
Обновить статус чека
/api/receipt/{receiptId}/updateЗапрашивает актуальный статус чека у онлайн-кассы
Параметры пути
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
receiptId |
integer · int64 | Да | Поле receiptId. |
curl --request GET 'https://api.selsup.ru/api/receipt/1001/update' \
--header 'Authorization: YOUR_API_TOKEN'
const response = await fetch('https://api.selsup.ru/api/receipt/1001/update', {
method: 'GET',
headers: { Authorization: process.env.SELSUP_API_TOKEN },
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.error || 'selsup_request_failed');
}
const result = await response.json();
const response: Response = await fetch('https://api.selsup.ru/api/receipt/1001/update', {
method: 'GET',
headers: { Authorization: process.env.SELSUP_API_TOKEN! },
});
if (!response.ok) {
const error = await response.json() as { error?: string };
throw new Error(error.error ?? 'selsup_request_failed');
}
const result: unknown = await response.json();
import os
import requests
response = requests.get(
'https://api.selsup.ru/api/receipt/1001/update',
headers={'Authorization': os.environ['SELSUP_API_TOKEN']},
)
response.raise_for_status()
result = response.json()
<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => 'https://api.selsup.ru/api/receipt/1001/update',
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: ' . getenv('SELSUP_API_TOKEN')],
]);
$response = curl_exec($curl);
$status = curl_getinfo($curl, CURLINFO_HTTP_CODE);
curl_close($curl);
if ($response === false || $status >= 400) {
throw new RuntimeException($response ?: 'selsup_request_failed');
}
echo $response;
package main
import (
"fmt"
"io"
"net/http"
"os"
)
func main() {
req, err := http.NewRequest("GET", "https://api.selsup.ru/api/receipt/1001/update", nil)
if err != nil { panic(err) }
req.Header.Set("Authorization", os.Getenv("SELSUP_API_TOKEN"))
response, err := http.DefaultClient.Do(req)
if err != nil { panic(err) }
defer response.Body.Close()
result, _ := io.ReadAll(response.Body)
fmt.Printf("%d\n%s\n", response.StatusCode, result)
}
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class SelSupExample {
public static void main(String[] args) throws Exception {
HttpRequest request = HttpRequest.newBuilder(URI.create("https://api.selsup.ru/api/receipt/1001/update"))
.header("Authorization", System.getenv("SELSUP_API_TOKEN"))
.method("GET", HttpRequest.BodyPublishers.noBody())
.build();
HttpResponse<String> response = HttpClient.newHttpClient()
.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.statusCode());
System.out.println(response.body());
}
}
Успешный ответ
200
Поля объекта
Receipt
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
id |
integer · int64 | Нет | ID чека |
clientId |
integer · int64 | Нет | ID клиента |
orderId |
integer · int64 | Нет | ID заказа |
organizationId |
integer · int64 | Нет | ID организации |
externalReceiptId |
string | Нет | ID чека в системе онлайн-кассы |
fiscalNumber |
string | Нет | Фискальный номер документа (ФД), присвоенный ФНС |
cashRegisterService |
stringNONE, EVOTOR, ATOL | Нет | Сервис онлайн-кассы |
fnsUrl |
string | Нет | Ссылка на проверку чека на сайте ФНС |
status |
stringCREATED, PENDING, COMPLETED, FAILED, CANCELLED | Нет | Статус чека |
receiptType |
stringINCOME, EXPENSE, REFUND, EXPENSE_REFUND | Нет | Тип операции |
totalAmount |
number · double | Нет | Общая сумма чека |
createdDate |
string · date-time | Нет | Дата создания записи |
completedDate |
string · date-time | Нет | Дата успешного пробития чека |
errorMessage |
string | Нет | Сообщение об ошибке, если статус FAILED |
{
"id": 1001,
"clientId": 1001,
"orderId": 1001,
"organizationId": 1001,
"externalReceiptId": "string",
"fiscalNumber": "string"
}Ошибки3
При ошибке проверьте HTTP-статус и тело ответа. Поле error содержит код ошибки, localMessage — сообщение для пользователя, params — дополнительные сведения. Обработка ошибок ↑
auth_requiredЗаголовок Authorization отсутствует, пуст или содержит недействительный токен.
error_access_deniedТокен существует, но его роль не позволяет выполнить операцию.
error_unknownНе удалось выполнить запрос из-за внутренней ошибки. Если запрос изменял данные, проверьте результат перед повторной отправкой. Для обращения в поддержку сохраните время запроса и полученный ответ.