POSTОтмена транзакции

Отменяет неоплаченный платёж: покупатель передумал и нажал «Отменить» в вашем магазине или боте. После отмены оплатить платёж нельзя.

POSThttps://larpcassa.cc/v1/payments/{id}/cancel

Параметры пути

ПараметрТипОписание
idобязательныйstringID платежа (pay_…)

Тело запроса не нужно. Метод идемпотентен: повторный вызов для уже отменённого платежа вернёт его без ошибки.

Пример

bash
curl -X POST https://larpcassa.cc/v1/payments/pay_01k7x3m9qz2hb8c4r6t1vw5yfe/cancel -H "X-Api-Key: $LC_KEY"
Telegram-бот (aiogram)
@router.callback_query(F.data.startswith("cancel_pay:"))
async def cancel_payment(cb: CallbackQuery):
    payment_id = cb.data.split(":", 1)[1]
    async with aiohttp.ClientSession(headers={"X-Api-Key": LC_KEY}) as s:
        async with s.post(f"https://larpcassa.cc/v1/payments/{payment_id}/cancel") as r:
            data = await r.json()
    if r.status == 200:
        await cb.message.edit_text("Платёж отменён")
    elif data["error"]["code"] == "already_paid":
        await cb.answer("Платёж уже оплачен", show_alert=True)
    else:
        await cb.answer(data["error"]["message"], show_alert=True)

Ответ 200

json
{
  "id": "pay_01k7x3m9qz2hb8c4r6t1vw5yfe",
  "object": "payment",
  "environment": "sandbox",
  "project_id": "5f0c9a3e-6b1d-4c2a-9e8f-1a2b3c4d5e6f",
  "order_id": "ORDER-1042",
  "status": "CANCELLED",
  "amount": 1000000,
  "order_amount": 1000000,
  "customer_fee": 0,
  "fee": 70000,
  "net_amount": 930000,
  "currency": "RUB",
  "method": "SBP_C2B",
  "description": "Заказ №1042",
  "payment_url": "https://larpcassa.cc/pay/pay_01k7x3m9qz2hb8c4r6t1vw5yfe",
  "success_url": "https://shop.example/success",
  "fail_url": null,
  "expires_at": "2026-10-14T12:30:00.000Z",
  "paid_at": null,
  "failure_reason": "Отменён магазином",
  "settled": false,
  "metadata": { "telegram_user": "123456789" },
  "created_at": "2026-10-14T12:00:00.000Z"
}

Ошибки

HTTPcodeКогда
409already_paidПокупатель успел оплатить — платёж не отменён, придёт callback payment.succeeded
422not_cancelableПлатёж в статусе, который нельзя отменить (см. проверку возможности отмены)
503provider_unavailableПровайдер не ответил — повторите запрос позже
Если покупатель оплатил в момент отмены, платёж не отменяется: вы получите 409 already_paid и затем callback об успешной оплате. После успешной отмены приходит callback payment.cancelled.