/integration/transactionsДля общей формы используется тот же endpoint, что и для обычного платежа. Единственное отличие - полеpayment_method необходимо полностью исключить из JSON. Покупатель выберет способ оплаты на странице по адресу payment_url.
Как работает flow
- Ваш backend создаёт платёж без
payment_method - Cashera возвращает checkout-сессию, её UUID и
payment_url - Вы перенаправляете покупателя на URL из ответа
- Покупатель выбирает один из доступных способов оплаты
- Checkout-сессия становится обычной транзакцией с теми же
uuidиexternal_id - Дальше действуют стандартные статусы и вебхуки транзакции
Список способов оплаты формируется динамически по настройкам вашего мерчанта. Не фиксируйте его в коде: включённые методы уже приходят в available_payment_methods.
Перед подключением
- У мерчанта должен быть включён хотя бы один одноразовый метод для общей формы
- Должен быть настроен HTTPS
callback_url- в запросе или в настройках мерчанта - API-запрос выполняется только с backend-сервера с заголовком
X-Api-Key - Суммы передаются целыми числами в минорных единицах
Параметры запроса
| Поле | Тип | Описание |
|---|---|---|
amountобязательное | integer | Сумма в копейках: 15000 = 150,00 ₽. Минимум 1 |
currencyобязательное | string | Для интеграционного приёма платежей используйте RUB |
external_idобязательное | string | Уникальный идентификатор заказа, до 255 символов. Для поиска по URL рекомендуемый формат: латинские буквы, цифры, точка, дефис и подчёркивание |
descriptionобязательное | string | Описание платежа, до 255 символов |
metadata | object | Ваш JSON-объект. Возвращается в Integration API; внутренние provider metadata в ответ не попадают |
callback_url | string (https) | Публичный HTTPS URL для вебхуков. Если отсутствует, используется URL из настроек мерчанта |
success_url | string (url) | Куда вернуть покупателя после успешной оплаты |
fail_url | string (url) | Куда вернуть покупателя при неуспешной оплате |
Поле не должно присутствовать даже со значением null или пустой строкой. Для общей формы отправьте JSON без этого ключа.
Создание формы
curl -X POST https://api.cashera.cash/api/v1/integration/transactions \-H "X-Api-Key: $CASHERA_API_KEY" \-H "Content-Type: application/json" \-d '{"amount": 15000,"currency": "RUB","external_id": "order-2026-000123","description": "Оплата заказа №000123","metadata": { "order_id": "000123" },"callback_url": "https://merchant.example/webhooks/cashera","success_url": "https://merchant.example/payment/success","fail_url": "https://merchant.example/payment/fail"}'
Ответ до выбора метода
API отвечает 201 Created. Финансовые поля имеют значение null, пока способ оплаты не выбран и транзакция не создана.
{"uuid": "0195f0c1-e0a2-7221-9330-7d597e7141f7","type": "deposit","amount": 15000,"gross_amount": null,"net_amount": null,"fee_amount": null,"currency": "RUB","settlement_currency": null,"settlement_amount": null,"payment_method": null,"status": "pending","external_id": "order-2026-000123","description": "Оплата заказа №000123","metadata": { "order_id": "000123" },"payment_url": "https://pay.cashera.cash/0195f0c1-e0a2-7221-9330-7d597e7141f7","expires_at": "2026-08-28T15:35:00+00:00","created_at": "2026-08-28T15:00:00+00:00","updated_at": "2026-08-28T15:00:00+00:00","selection_required": true,"available_payment_methods": [{ "code": "sbp", "title": "СБП" },{ "code": "card", "title": "Банковская карта" }]}
Перенаправление покупателя
Используйте payment_url из ответа без изменения домена или пути. URL может учитывать индивидуальный checkout-домен вашего мерчанта.
header('Location: ' . $checkout['payment_url']);exit;
Переход на success_url не подтверждает оплату. Финальный результат определяйте по вебхуку или запросу статуса.
Статус общей формы
До и после выбора метода используйте те же status endpoint'ы:
До выбора метода ответ содержит payment_method: null и selection_required: true. После выбора возвращается обычная транзакция с тем же UUID и заполненным payment_method.
Идемпотентность
- Точный повтор возвращает ту же checkout-сессию и тот же UUID
- После выбора метода точный повтор возвращает уже созданную транзакцию
- Изменение суммы, валюты, описания, metadata или URL при том же
external_idвернёт409 - Нельзя при повторе добавлять
payment_methodили переключаться с прямого платежа на общую форму
При timeout повторите исходный JSON без изменений или получите состояние по external_id. Подробнее - идемпотентность.
Ошибки
| Поле | Тип | Описание |
|---|---|---|
401 | Unauthorized | Отсутствует или неверен X-Api-Key |
403 | Forbidden | Мерчант не может принимать платежи либо не настроен обязательный callback |
409 | Conflict | Этот external_id уже используется с другим payload или в другом режиме |
422 | Unprocessable Entity | Ошибка полей, небезопасный URL или нет доступных методов для общей формы |
429 | Too Many Requests | Превышен лимит Integration API. Повторите запрос с backoff |
{"message": "No payment methods are available on checkout."}
