Инструкция для мерчантов

От регистрации до первого платежа за один вечер.

Редакция от 21 апреля 2026 г.

Это руководство проведёт вас по всем шагам подключения: от регистрации до приёма первого платежа на вашем сайте. Если где-то застряли — напишите на support@amypay.ru, поможем.

1. Регистрация

Перейдите на /register, укажите email и пароль. На почту придёт письмо со ссылкой для подтверждения. Сразу после входа рекомендуем включить двухфакторную аутентификацию в разделе «Настройки → 2FA» — это важно, ведь через аккаунт пойдут реальные деньги.

2. Создание кассы (мерчанта)

Касса — это отдельная сущность, привязанная к одному вашему сайту или проекту. Если у вас несколько магазинов, создайте несколько касс.

В личном кабинете откройте «Кассы → Создать» и заполните:

  • Название — отображается на странице оплаты и в уведомлениях;
  • URL магазина — ссылка на ваш сайт;
  • Success URL — куда Плательщик возвращается после успешной оплаты;
  • Fail URL — куда возвращается при отмене;
  • Notify URL — куда Amypay пришлёт серверное уведомление о смене статуса заказа (вебхук);
  • Test mode — включите на время разработки.
Про URL'ы
В success/fail URL можно подставить плейсхолдеры: {order}, {external_id}, {status}. Например: https://myshop.ru/thanks?id={external_id}.

3. Способы оплаты

По умолчанию включены все способы, поддерживаемые Сервисом. Вы можете отключить ненужные и настроить комиссии в разделе «Кассы → [название] → Способы оплаты».

КодНазваниеВалютаЛимит
p2p_yoomoney ЮMoney RUB 100 — 30 000
p2p_sbp СБП (P2P) RUB 10 — 100 000
p2p_card Карта (P2P) RUB 100 — 100 000
balance_rub С баланса Amypay RUB 1 — 1 000 000
crypto_bot Crypto Bot RUB 10 — 1 000 000
crypto_btc Bitcoin BTC 0 — 10
crypto_usdt USDT (TRC-20) USDT 1 — 50 000
crypto_ltc Litecoin LTC 0 — 1 000
crypto_doge Dogecoin DOGE 1 — 5 000 000
crypto_bch Bitcoin Cash BCH 0 — 500
crypto_trx TRON TRX 1 — 10 000 000
crypto_eth Ethereum ETH 0 — 500
crypto_bnb BNB (BEP-20) BNB 0 — 5 000
crypto_usdt_erc20 USDT (ERC-20) USDT_ERC20 1 — 100 000
crypto_usdt_bep20 USDT (BEP-20) USDT_BEP20 1 — 100 000
crypto_usdc_erc20 USDC (ERC-20) USDC_ERC20 1 — 100 000
crypto_usdc_trc20 USDC (TRC-20) USDC_TRC20 1 — 100 000
crypto_usdc_bep20 USDC (BEP-20) USDC_BEP20 1 — 100 000

4. API-ключ и секретное слово

В разделе «Кассы → [название] → Реквизиты API» получите:

  • api_key — используется как Bearer-токен при вызовах API;
  • secret_word_1 — для подписи ссылок на страницу оплаты;
  • secret_word_2 — для проверки подписи вебхуков.
Секреты — на бэкенд
Никогда не храните api_key и secret_word_* в JavaScript, публичном репозитории или в приложении для iOS/Android. Все обращения к API делайте только с серверной стороны.

5. Создаём первый заказ

Самый простой способ интеграции — создать заказ через API и перенаправить Плательщика на полученный pay_url.

curl -X POST https://amypay.ru/api/v2/orders \
    -H "Authorization: Bearer ваш_api_key" \
    -H "Content-Type: application/json" \
    -d '{
        "amount": 1490.00,
        "external_order_id": "ORDER-123",
        "description": "Подписка Pro на 1 месяц",
        "payer_email": "customer@example.com",
        "metadata": { "plan": "pro", "months": 1 }
    }'

В ответ получите:

{
    "ok": true,
    "order": {
        "number": "AMY-20260421-000123",
        "amount": 1490.00,
        "currency": "RUB",
        "status": "pending",
        "external_order_id": "ORDER-123",
        "pay_url": "https://amypay.ru/pay?t=eyJhbGciOi...",
        "created_at": 1745251200
    }
}

Перенаправьте Плательщика на pay_url — там он увидит вашу страницу оплаты с выбранными способами.

6. Вебхуки

Когда Плательщик оплатит заказ (или его отменит), Amypay отправит POST-запрос на ваш Notify URL. Формат тела — application/x-www-form-urlencoded:

merchant_id=42
amount=1490.00
currency=RUB
pay_currency=RUB
pay_amount=1490.00
amount_credited=1475.1000
order_number=AMY-20260421-000123
external_order_id=ORDER-123
provider=p2p_sbp
test_mode=0
sign=7c4a8d09ca3762af61e59520943dc26494f8941b
metadata[plan]=pro
metadata[months]=1

Подпись считается так:

sign = sha256( api_key + ":" + order_number + ":" + amount + ":" + secret_word_2 )

Проверьте подпись на своей стороне — и только потом меняйте статус заказа в вашей базе. Ответ ожидается со статусом 2xx; если сервер недоступен, мы повторим попытку по расписанию 30 сек → 2 мин → 10 мин → 30 мин → 2 часа.

Безопасность
Никогда не доверяйте статусу заказа из success_url — это просто страница подтверждения для Плательщика. Реальный статус обновляйте только на основании вебхука с проверенной подписью.

7. Тестовый режим и sandbox

Включите test_mode у кассы. В этом режиме:

  • на странице оплаты появится кнопка «Провести тестовый платёж»;
  • заказ сразу переходит в статус paid;
  • на ваш Notify URL приходит настоящий вебхук — можно проверить обработку сигнатуры;
  • деньги с реальных карт не списываются.

После отладки переключите кассу в боевой режим — и можно принимать первые настоящие платежи.

8. Вывод средств

Полученные деньги хранятся на вашем внутреннем кошельке Amypay. В разделе «Вывод» выберите способ (карта / крипто / иной), укажите сумму и реквизиты. Минимальные суммы и комиссии вывода — на странице Тарифы.

Заявки на вывод в будни обрабатываются в течение нескольких часов. Крупные выплаты могут потребовать дополнительной верификации.

9. Частые ошибки

401 Unauthorized

Проверьте, что передаёте Authorization: Bearer <api_key> и что касса не в статусе suspended. Ключ должен быть именно от этой кассы, а не от другой.

422 Validation error

В ответе будет поле errors с именами проблемных параметров. Чаще всего ошибка в amount (должен быть > 0) или в длине external_order_id (до 128 символов).

Вебхук не приходит

  • Откройте «Заказы → [номер]» — на карточке видны попытки доставки вебхука и коды ответа вашего сервера.
  • Убедитесь, что Notify URL отвечает быстрее 10 секунд.
  • Проверьте, что на стороне сервера не стоит редирект с 301/302.

Неверная подпись вебхука

Самая частая причина — используется secret_word_1 вместо secret_word_2. Для вебхука нужно именно второе секретное слово.