> Источник: https://apipay.kz/guides/import-platezhey-kaspi-pay-v-1c · Обновлено: 2026-09-06 · apipay.kz
> ApiPay — независимый сервис приёма платежей поверх вашего Kaspi Pay.

# Как импортировать платежи Kaspi Pay в 1С

**TL;DR.** Способа два. **Вручную** — выгрузить операции за период в кабинете Kaspi Pay и загрузить полученный файл в 1С, а строки сопоставить с заказами руками. **Автоматически** — через ApiPay: счёт создаётся из самой 1С запросом `POST /api/v1/invoices`, номер документа 1С кладётся в поле `external_order_id`, а об оплате 1С узнаёт сама: обычная конфигурация без публичного адреса опрашивает `GET /api/v1/invoices/{id}` регламентным заданием (лимит на этот запрос — 1000 в минуту), а если 1С опубликована в интернет — принимает вебхук `invoice.status_changed` в момент оплаты. Документ находится по тому же номеру, файл импорта не нужен вовсе.

Проводки и учётные документы делает ваша 1С — ApiPay их не формирует. Он приносит 1С данные о платеже: какой счёт, на какую сумму, когда оплачен и к какому вашему документу относится.

## Ручной путь: выгрузка из Kaspi Pay

Общий порядок такой:

1. Зайти в кабинет Kaspi Pay для предпринимателей под своей учётной записью.
2. Открыть раздел с операциями (выпиской) и задать нужный период — обычно вчерашний день или смену.
3. Выгрузить файл с операциями.
4. Загрузить файл в 1С — тем механизмом, который для этого предусмотрен в вашей конфигурации (загрузка выписки, обработка загрузки платежей).
5. Сопоставить строки файла с заказами и документами и провести поступления.

Названия разделов и кнопок задаёт Kaspi и время от времени меняет — актуальные инструкции по операциям и выписке смотрите в [справке Kaspi](https://guide.kaspi.kz/). Вопросы про сами деньги — сроки зачисления, комиссию за приём платежа, реквизиты — тоже туда: это отношения между вами и Kaspi, ApiPay в них не участвует.

Что у этого пути неудобно:

- **Данные появляются не в момент оплаты**, а когда сотрудник сядет выгружать файл: раз в смену, раз в день, а на выходных — в понедельник. Всё это время менеджер не знает, оплачен заказ или нет, и отгрузка ждёт.
- **В файле деньги, а не заказы.** Связь «платёж ↔ документ 1С» держится на сумме, времени и памяти человека. Два заказа на одинаковую сумму в один день — и сопоставление становится гаданием.
- **Один и тот же файл легко загрузить дважды**, и в 1С появляются задвоенные поступления. Ловится это уже на закрытии периода.
- **Ошибка обнаруживается поздно.** Расхождение видно, когда бухгалтер сводит период, а не когда оно произошло.

Пока платежей десятки в месяц, этот путь работает. Дальше он начинает стоить дороже, чем автоматизация.

## Какие данные о платеже даёт ApiPay

Если счёт выставлен через ApiPay, платёж не нужно опознавать — он с самого начала связан с вашим документом. Данные доступны тремя способами.

**Объект счёта** — `GET /api/v1/invoices/{id}`. Что в нём для 1С:

| Поле | Что в нём |
|---|---|
| `id` | Идентификатор счёта в ApiPay — по нему опрашивают статус |
| `external_order_id` | Ваша ссылка на документ 1С, до 255 символов: её вы задали при создании счёта |
| `amount` | Сумма строкой: `"15000.00"` — парсить как строку, не как число |
| `status` | `processing`, `pending`, `cancelling`, `paid`, `cancelled`, `expired`, `error`, `partially_refunded`. Проводить нужно по **последнему** пришедшему статусу; для 1С терминальны `paid`, `cancelled`, `expired`, `error` — у `error` счёт до Kaspi не дошёл, документ помечают неоплаченным и выставляют счёт заново. Статуса `refunded` нет: полный возврат оставляет `paid` |
| `paid_at` | Момент оплаты, UTC `+00:00`; `null`, пока счёт не оплачен |
| `created_at` | Момент выставления счёта, UTC `+00:00` |
| `kaspi_invoice_id` | Идентификатор операции на стороне Kaspi |

**Вебхук `invoice.status_changed`** — приходит на ваш адрес, когда счёт сменил статус (`pending`, `paid`, `cancelled`, `expired`, `error`, `partially_refunded`). В теле: `event`, `timestamp` и объект `invoice` с теми же `id`, `external_order_id`, `amount`, `status`, а при `status: "paid"` — ещё и `paid_at`. Настройка адреса, проверка подписи и повторные доставки — в статье «[Вебхуки ApiPay: настройка и проверка подписи](/guides/nastroyka-webhookov-apipay)».

**Список счетов за период** — `GET /api/v1/invoices`. Границы окна `date_from` и `date_to` задаются в зоне мерчанта (Asia/Almaty) и включительны; голая дата означает календарные сутки целиком. Для «что оплачено за вчера» берут `date_field=paid_at` — так же операции раскладывает по сменам терминал. Фильтр по статусам множественный, и для «оплаченного» их два: `status[]=paid&status[]=partially_refunded` — счёт с частичным возвратом деньги принял, без него выборка неполна. Пагинация плоская: `{current_page, data, total}`, до 100 записей на страницу.

Чек Kaspi по оплаченному счёту забирается отдельно — `GET /api/v1/invoices/{id}/receipt`. Ответ асинхронный: первый вызов отдаёт `202` со `status: "pending"`, повторите запрос через `poll_after` секунд — готовый чек придёт с `200`. Ссылки из ответа открываются без API-ключа: не публикуйте их и не пишите в логи.

## Когда сверка руками перестаёт сходиться

Признаки, по которым видно, что пора менять порядок:

- платежей за день десятки, и «непонятное поступление на 12 400 ₸» ищут по всей базе;
- отгрузку задерживают до вечерней выгрузки, потому что раньше оплату не подтвердить;
- в 1С уже находили задвоенные поступления после повторной загрузки файла;
- клиент пишет «я оплатил», а в 1С заказ висит неоплаченным, и приходится верить на слово.

Через ApiPay порядок переворачивается: не платёж ищет документ, а документ сам выставляет счёт и потом узнаёт о своей оплате.

1. **1С создаёт счёт.** `POST /api/v1/invoices` с `phone_number` покупателя, `amount` в целых тенге и `external_order_id` = номер документа 1С. Туда же кладут `external_order_id_idempotency` с тем же значением (до 191 символа): пока счёт по документу жив, повторное проведение второй счёт не создаст — придёт `409 duplicate_idempotency_key` с `invoice_id` и `status` уже существующего. Если прежний счёт истёк, отменён или ушёл в `error`, тот же ключ выпускает новый счёт — это перевыставление, а не дубль.
2. **Покупатель платит в приложении Kaspi** — на свой телефон, как обычно.
3. **1С узнаёт об оплате.** Если 1С опубликована в интернет — вебхуком `invoice.status_changed` со `status: "paid"`. Если нет (а чаще всего нет) — поллингом `GET /api/v1/invoices/{id}`, у него отдельный лимит 1000 запросов в минуту как раз под такие регламентные задания.
4. **Обработка находит документ** по `external_order_id` и проводит платёж. Дубли отсекаются дедупом по паре `(invoice.id, invoice.status)`.
5. **Раз в сутки — сверка.** `GET /api/v1/invoices` за вчерашние сутки с `date_field=paid_at` и `origin=apipay`: то, что не доехало вебхуком, догоняется здесь. Фильтр `origin` обязателен — без него в выборку попадут и продажи, проведённые в приложении Kaspi Pay мимо ApiPay: у них нет `external_order_id`, документа в 1С им не найти. Такие продажи подтягиваются из истории Kaspi не сразу и датируются временем самой операции, поэтому уже пройденное окно при повторной сверке может пополниться — перезапрашивайте окно целиком, а не только новые записи.

Это **тот же самый Kaspi Pay и та же организация**: деньги идут напрямую на ваш Kaspi-счёт, кабинет Kaspi остаётся у вас и работает как раньше. ApiPay выставляет счета через штатную роль «Кассир» и к вашим деньгам доступа не имеет. Одно условие: ApiPay подключается **отдельным номером** сотрудника с ролью «Кассир», и под этим номером входить в приложение Kaspi Pay нельзя — привязка разорвётся. Выписку и всё остальное в кабинете вы смотрите под своим обычным номером, как раньше — «[Требования к номеру кассира](/guides/trebovaniya-k-nomeru-kassira)».

Готового модуля для 1С у ApiPay нет — это доработка вашей конфигурации: HTTP-запросы из 1С к REST API. Рецепт запросов, маппинг документов и чек-лист запуска разобраны в статье «[Как выставлять Kaspi-счета из 1С через API ApiPay](/guides/integraciya-apipay-s-1c)», короткая витрина — [ApiPay для 1С](/kaspi-pay-1c), справочник методов — [документация API](/docs). Код при этом может написать ваш ИИ-агент: дайте ему страницу [apipay.kz/for-ai](https://apipay.kz/for-ai).

## Выгрузка файлом или ApiPay: что меняется

| | Выгрузка файлом | Через ApiPay |
|---|---|---|
| Когда появляются данные | Когда сотрудник выгрузил — раз в смену или раз в день | В день оплаты: 1С опрашивает `GET /invoices/{id}` регламентным заданием, а при публичном адресе получает вебхук `invoice.status_changed` в момент оплаты |
| Кто сопоставляет платёж с заказом | Человек — по сумме и времени | 1С сама, по `external_order_id` из своего же документа |
| Повторная обработка | Повторно загруженный файл даёт задвоенные поступления | Повторное проведение документа даёт `409 duplicate_idempotency_key`, дедуп событий — по `(invoice.id, invoice.status)` |
| Когда видно расхождение | На закрытии периода | В тот же день, сверкой `GET /invoices` с `date_field=paid_at` |
| Чек Kaspi по оплате | Ищут отдельно | `GET /api/v1/invoices/{id}/receipt` по оплаченному счёту (ответ асинхронный: `202` → повтор через `poll_after`) |

Есть и промежуточный вариант, без доработки 1С: выставлять счета в кабинете ApiPay руками и выгружать их за период в Excel, CSV или PDF по тем же фильтрам, что видны на экране. Данные при этом всё равно появляются не в момент оплаты, но у каждой строки уже есть ваша ссылка на документ.

## Частые вопросы

**Как импортировать платежи из Kaspi Pay в 1С?**
Вручную — выгрузить операции за период в кабинете Kaspi Pay и загрузить файл в 1С своим механизмом загрузки выписки, после чего сопоставить строки с заказами. Автоматически — выставлять счета из 1С через ApiPay: тогда 1С сама узнаёт об оплате — опросом `GET /api/v1/invoices/{id}` или вебхуком `invoice.status_changed`, если у 1С есть публичный адрес, — находит документ по `external_order_id` и проводит платёж без файла импорта.

**Есть готовый файл импорта платежей Kaspi для 1С?**
Формат выгрузки задаёт Kaspi, и загружают его штатными средствами вашей конфигурации — готовой обработки от ApiPay для этого нет. ApiPay решает задачу иначе: не файлом постфактум, а данными о платеже в момент оплаты, через `GET /api/v1/invoices/{id}` и вебхук `invoice.status_changed`.

**Можно ли получать оплату в 1С сразу, без выгрузки файла?**
Да, если счёт выставлен через ApiPay. Вебхук `invoice.status_changed` приходит на ваш адрес в момент смены статуса; если 1С не опубликована в интернет, тот же результат даёт поллинг `GET /api/v1/invoices/{id}` — лимит для него поднят до 1000 запросов в минуту.

**Как понять, к какому заказу относится платёж?**
По полю `external_order_id`: при создании счёта в него кладут номер документа 1С, и оно возвращается и в объекте счёта, и в вебхуке. Отдельно существует `external_order_id_idempotency` — это не ссылка на документ, а ключ идемпотентности, который защищает от второго счёта при повторном проведении.

---

ApiPay — независимый сервис и не аффилирован с АО «Kaspi Bank». Kaspi и Kaspi Pay — товарные знаки их правообладателя.
База знаний: https://apipay.kz/guides
