Альтернатива Lemon Squeezy: merchant of record для SaaS, лицензий и оплаты за использование
28 января 2026 года генеральный директор Lemon Squeezy, который Stripe купил в 2024 году, написал, что компанию перестраивают вокруг Stripe Managed Payments. В том же посте он признал, что ответы поддержки и обновления продукта на время перехода замедлились и что пользователи Lemon Squeezy получат способ перейти на Managed Payments. Если Вы хотите перейти уже сейчас, Skalp это merchant of record со всем, чем пользуется софтверная компания: размещённой страницей оплаты, подписками, списаниями за использование, лицензионными ключами и подписанными вебхуками.
Что чему соответствует
| В Lemon Squeezy | В Skalp |
| Store | Магазин на yourname.skalp.gg или на Вашем домене |
| Товары и варианты | Товары. Каждый план это отдельный товар, а subscriptions.changePlan переводит подписчика между ними |
| Checkout | checkout.create для разовых покупок, subscriptions.createCheckout для планов |
| Лицензионные ключи | Выдача лицензионного ключа и licenses.validate, с лимитом устройств |
| Оплата за использование | subscriptions.createUsageCharge |
| Промокоды | Купоны, которые работают и для подписок |
| Партнёры | Партнёрская программа |
| Вебхуки | Вебхуки с подписью HMAC-SHA256 в заголовке Skalp-Signature |
Запуск подписки из Вашего приложения
import { Skalp } from '@skalpgg/sdk'
const skalp = new Skalp()
const checkout = await skalp.subscriptions.createCheckout({
productSlug: 'pro-monthly',
externalRef: team.id,
customerEmail: user.email,
returnUrl: 'https://app.example.com/billing?status=done',
})
redirect(checkout.url)
externalRef возвращается в каждом вебхуке этой подписки, так что Вы связываете платежи с командой или аккаунтом в своей базе, не сохраняя заранее идентификаторы Skalp.
Доступ в соответствии с оплатой
const event = await skalp.webhooks.constructEvent(rawBody, request.headers)
switch (event.type) {
case 'subscription.created':
case 'subscription.renewed':
await setPlan(event.data.externalRef, event.data.productSlug, event.data.currentPeriodEnd)
break
case 'subscription.past_due':
await warnAboutBilling(event.data.externalRef)
break
case 'subscription.canceled':
await endPlan(event.data.externalRef)
break
}
Когда клиент отменяет подписку, план работает до конца оплаченного периода, а Вы получаете subscription.updated. subscription.canceled приходит, когда план действительно закончился, с cancelReason, например requested, payment_failure или dispute.
Списания за использование
await skalp.subscriptions.createUsageCharge(subscription.id, {
amount: 12.34,
currency: 'EUR',
description: 'API calls over the plan, September 2026',
idempotencyKey: `overage:${team.id}:2026-09`,
periodStart: new Date('2026-09-01T00:00:00Z'),
periodEnd: new Date('2026-10-01T00:00:00Z'),
})
Списание идёт с сохранённой карты подписчика, в валюте Вашего магазина. Если карта не прошла, списание возвращается со статусом open и ссылкой на оплату, которую можно отправить клиенту. Один и тот же idempotencyKey всегда возвращает то же списание, так что повтор после таймаута никогда не спишет деньги дважды.
Перенос текущих подписчиков
Данные карт остаются у процессора, который их собрал, поэтому активные подписки нельзя скопировать с одной платформы на другую. Большинство команд сначала направляет в Skalp новые регистрации. Текущие подписчики перед следующим продлением получают письмо со ссылкой на оплату в Skalp, а старый план отменяется, когда они перешли. Если Вы используете свой идентификатор аккаунта как externalRef, приложение обрабатывает оба типа подписчиков одинаково.
Комиссия
Skalp оставляет себе 10% с каждой продажи, или 7%, когда Ваши продажи за последние 30 дней превышают $20 000. Обработка платежей включена, ежемесячной платы нет. Каждое продление считается продажей по той же ставке.
Частые вопросы
Skalp только для игр?
Нет. Skalp продаёт программы, SaaS-планы, лицензионные ключи и другие цифровые товары. Игровые серверы и скрипты лишь часть того, что он поддерживает.
Кто указан в выписке по карте клиента?
Skalp, потому что Skalp выступает merchant of record. Он же выставляет счёт за каждый платёж, включая продления.
Можно дать бесплатный пробный период?
Да, до 14 дней на план.
Получают ли компании счета без НДС?
Компания из ЕС, которая при оплате указывает действующий номер плательщика НДС, покупает по обратному начислению, и в её счёте нет НДС.
Есть ли SDK для Go?
Да. go get skalp.gg/go его устанавливает, и он покрывает тот же API, что и пакет для Node.