Принимайте платежи в USDT и USDC одним запросом к API
Создайте запрос на оплату заказа или счёта, отправьте клиента на готовую страницу оплаты или покажите адрес в своём интерфейсе и получите вебхук, когда платёж оплачен. Платежи в стейблкоинах в сетях Ethereum, BNB Chain и Polygon, цена в долларах.
- Новый адрес и готовая страница оплаты для каждого заказа
- USDT и USDC, цена в долларах
- Вебхук в момент оплаты
- Request created
- Customer pays to the address
- Marked as paid
Криптоплатёжный шлюз для оплаты стейблкоинами
Разовый платёж — это запрос на одну точную сумму: заказ в магазине, счёт, пополнение. Каждый запрос получает собственный новый адрес, поэтому перевод на него может относиться только к этому платежу. Без memo, без сопоставления по сумме и без ручных проверок в обозревателе блоков.
Вы задаёте цену в долларах и выбираете USDT или USDC и сеть. Стейблкоин стоит один доллар, поэтому клиент отправляет ровно ту сумму, которую вы запросили, и цена не меняется между оформлением и подтверждением.
Платёж создаётся в статусе ожидания и становится оплаченным, когда один перевод приносит на его адрес всю сумму. Ваш сервер узнаёт об этом из вебхука, а готовая страница оплаты обновляется сама.
Что даёт продукт «Разовые платежи»
Уникальный адрес на платёж
Каждый запрос получает новый адрес, поэтому каждый входящий перевод соответствует ровно одному заказу или счёту.
Готовая страница оплаты
Готовая страница показывает сумму, адрес с QR-кодом, сеть и оставшееся время и сама подтверждает оплату.
Цена в долларах
Задайте сумму в долларах и получайте оплату в USDT или USDC. Не нужно считать курсы и брать на себя волатильность.
Выбирайте, сколько получите
Задайте, сколько платит клиент, или сколько вы хотите получить после комиссии, и API сам посчитает сумму для клиента.
Вебхуки об оплате с повторами
Когда платёж оплачен, ваш сервер получает вебхук с полученной суммой, комиссией и вашим id заказа.
Ваш id заказа в платеже
Отправьте свой id вместе с запросом и получайте его в API и в вебхуке: платёж всегда соответствует заказу.
Как это работает
От регистрации до первого запроса за несколько минут.
- 1
Создайте проект One-Time Payments
Зарегистрируйтесь, откройте проект One-Time Payments в кабинете и скопируйте его API-ключ.
- 2
Создайте платёж для заказа
Отправьте сеть, USDT или USDC, сумму в долларах и свой id заказа. В ответ придёт платёж с собственным адресом.
- 3
Отправьте клиента платить
Перенаправьте его на lirchain.com/pay/<id платежа> или покажите адрес и сумму в своём интерфейсе. У клиента есть час на оплату.
- 4
Выполните заказ после оплаты
Когда перевод подтверждён, платёж становится оплаченным, деньги на вашем балансе, а на ваш сервер уходит вебхук.
curl https://api.lirchain.com/merchant/one-time-payment/create \
-H "x-api-key: YOUR_API_KEY" \
-H "content-type: application/json" \
-d '{
"network": "polygon",
"asset": "USDT",
"amount": 49.5,
"external_id": "order-1042"
}'const API_KEY = "YOUR_API_KEY";
async function createPayment(params) {
const response = await fetch("https://api.lirchain.com/merchant/one-time-payment/create", {
method: "POST",
headers: { "x-api-key": API_KEY, "content-type": "application/json" },
body: JSON.stringify(params),
});
if (!response.ok) {
throw new Error(`LirChain API ${response.status}: ${await response.text()}`);
}
return response.json();
}
const result = await createPayment({
network: "polygon",
asset: "USDT",
amount: 49.5,
external_id: "order-1042",
});const API_KEY = "YOUR_API_KEY";
type CreatePaymentParams = {
network: string;
asset: string;
amount?: number;
receive_amount?: number;
external_id?: string;
};
type CreatePaymentResult = {
id: string;
external_id: string | null;
network: string;
address: string;
asset: string;
amount: number;
pay_amount: number;
receive_amount: string;
status: string;
fee: string;
created_ms: number;
expire_ms: number;
};
async function createPayment(params: CreatePaymentParams): Promise<CreatePaymentResult> {
const response = await fetch("https://api.lirchain.com/merchant/one-time-payment/create", {
method: "POST",
headers: { "x-api-key": API_KEY, "content-type": "application/json" },
body: JSON.stringify(params),
});
if (!response.ok) {
throw new Error(`LirChain API ${response.status}: ${await response.text()}`);
}
return response.json();
}
const result = await createPayment({
network: "polygon",
asset: "USDT",
amount: 49.5,
external_id: "order-1042",
});import requests
API_KEY = "YOUR_API_KEY"
def create_payment(**params):
response = requests.post(
"https://api.lirchain.com/merchant/one-time-payment/create",
headers={"x-api-key": API_KEY},
json=params,
timeout=30,
)
response.raise_for_status()
return response.json()
result = create_payment(
network="polygon",
asset="USDT",
amount=49.5,
external_id="order-1042",
)<?php
const API_KEY = "YOUR_API_KEY";
function create_payment(array $params): array
{
$curl = curl_init("https://api.lirchain.com/merchant/one-time-payment/create");
curl_setopt_array($curl, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => json_encode($params),
CURLOPT_HTTPHEADER => ["x-api-key: " . API_KEY, "content-type: application/json"],
]);
$body = curl_exec($curl);
$status = curl_getinfo($curl, CURLINFO_HTTP_CODE);
if ($body === false || $status >= 400) {
throw new Exception("LirChain API $status: $body");
}
return json_decode($body, true);
}
$result = create_payment([
"network" => "polygon",
"asset" => "USDT",
"amount" => 49.5,
"external_id" => "order-1042",
]);package main
import (
"bytes"
"encoding/json"
"fmt"
"io"
"net/http"
)
const apiKey = "YOUR_API_KEY"
func CreatePayment(params map[string]any) (map[string]any, error) {
body, err := json.Marshal(params)
if err != nil {
return nil, err
}
request, err := http.NewRequest("POST", "https://api.lirchain.com/merchant/one-time-payment/create", bytes.NewReader(body))
if err != nil {
return nil, err
}
request.Header.Set("x-api-key", apiKey)
request.Header.Set("content-type", "application/json")
response, err := http.DefaultClient.Do(request)
if err != nil {
return nil, err
}
defer response.Body.Close()
data, err := io.ReadAll(response.Body)
if err != nil {
return nil, err
}
if response.StatusCode >= 400 {
return nil, fmt.Errorf("LirChain API %d: %s", response.StatusCode, data)
}
var result map[string]any
return result, json.Unmarshal(data, &result)
}
func main() {
result, err := CreatePayment(map[string]any{
"network": "polygon",
"asset": "USDT",
"amount": 49.5,
"external_id": "order-1042",
})
fmt.Println(result, err)
}{
"id": "ccf1c790-9d3d-4cda-98a9-5cd590a102df",
"external_id": "order-1042",
"network": "polygon",
"address": "0x20d5b8802fc43b24cdbc9cdaa59dd6690626ad2c",
"asset": "USDT",
"amount": 49.5,
"pay_amount": 49.5,
"receive_amount": "49.2525",
"status": "pending",
"fee": "0",
"created_ms": 1791503932667,
"expire_ms": 1791507532667
}{
"type": "one-time-payment",
"payment": {
"id": "ccf1c790-9d3d-4cda-98a9-5cd590a102df",
"external_id": "order-1042",
"project_id": "3d6b1130-da92-4ddf-bad2-93f898993c39",
"network": "polygon",
"address": "0x20d5b8802fc43b24cdbc9cdaa59dd6690626ad2c",
"asset": "USDT",
"contract": "0xc2132d05d31c914a87c6611c10748aeb04b58e8f",
"amount": 49.5,
"pay_amount": 49.5,
"receive_amount": "49.2525",
"received": "49.5",
"status": "paid",
"fee": "0.2475",
"created_ms": 1791503932667,
"expire_ms": 1791507532667
}
}Все методы и поля описаны здесь: справочник API, раздел «Разовые платежи» (на английском). Пишете код с ИИ-агентом? Дайте ему lirchain.com/llms-full.txt и он сам напишет интеграцию.
Сети и стейблкоины для платежей
Разовые платежи оплачиваются в USDT или USDC. Сеть и стейблкоин вы выбираете для каждого платежа.
| Сеть | Монеты и токены |
|---|---|
| Ethereum | USDTUSDC |
| BNB Chain | USDTUSDC |
| Polygon | USDTUSDC |
Для чего используют продукт «Разовые платежи»
Интернет-магазины и оплата заказов
Добавьте оплату криптовалютой в оформление заказа: создавайте платёж на заказ и перенаправляйте покупателя на готовую страницу.
Счета
Выставляйте клиентам счета в USDT или USDC ссылкой на оплату и смотрите, как каждый счёт становится оплаченным, без поиска хешей транзакций.
Цифровые товары и SaaS
Выдавайте лицензию, файл или период подписки автоматически по вебхуку об оплате.
Боты и мини-приложения
Продавайте доступ или кредиты внутри бота в Telegram или Discord одним запросом к API на покупку.
Продажи за рубеж
Принимайте платежи в стейблкоинах от клиентов из любой страны: тот же процесс и та же комиссия для всех.
Услуги и бронирования
Берите предоплату или полную стоимость бронирования и подтверждайте его в момент оплаты.
Разовые платежи: цены
Создание платежа бесплатно. Комиссия берётся только когда платёж оплачен: процент вашего тарифа, но не меньше $0.10.
| Тариф | Free | Starter | Business | Enterprise |
|---|---|---|---|---|
| Цена в месяц | Бесплатно | $19.99 | $49.99 | $249.99 |
| Платежей за 30 дней | 100 | 10 000 | 200 000 | 10 000 000 |
| Комиссия за оплаченный платёж | 1% | 0,5% | 0,375% | 0,25% |
В каждый тариф входят все четыре продукта. Сравнить тарифы
Разовые платежи: вопросы и ответы
- Как принимать оплату в USDT на сайте?
- Создайте проект One-Time Payments и для каждого заказа создавайте через API платёж с суммой в долларах. Отправьте клиента на готовую страницу оплаты или покажите адрес в своём интерфейсе и выполните заказ, когда придёт вебхук об оплате.
- Какими стейблкоинами и в каких сетях могут платить клиенты?
- USDT и USDC в Ethereum (ERC-20), BNB Chain (BEP-20) и Polygon. Стейблкоин и сеть вы выбираете для каждого платежа.
- Нужно ли делать свою страницу оплаты?
- Нет. У каждого платежа есть готовая страница lirchain.com/pay/<id платежа>: на ней сумма, адрес, QR-код и обратный отсчёт, и она сама обновляется, когда платёж получен. Свою страницу тоже можно сделать через API.
- Как узнать, что криптоплатёж оплачен?
- Укажите URL вебхука в проекте, и когда платёж станет оплаченным, придёт вебхук one-time-payment. Если ваш сервер не ответил статусом 2xx, тот же вебхук отправляется снова каждую минуту, до 20 раз, каждый раз с тем же заголовком x-webhook-id, чтобы вы могли пропустить уже обработанный. Статус платежа также можно в любой момент прочитать через API.
- Сколько стоит приём криптоплатежей?
- Создание платежа бесплатно. Оплаченный платёж стоит процент вашего тарифа (1% на Free, 0,5% на Starter, 0,375% на Business, 0,25% на Enterprise), но не меньше $0.10. В тариф Free входит 100 платежей за 30 дней, в Starter — 10 000.
- Можно ли задать сумму, которую я получу после комиссии?
- Да. Отправьте receive_amount вместо amount, и API посчитает, сколько должен заплатить клиент, чтобы после комиссии вы получили ровно эту сумму.
- Сколько времени у клиента на оплату?
- Один час с момента создания платежа. Готовая страница оплаты показывает оставшееся время.
Работает вместе с остальным LirChain
Один аккаунт, один баланс и один API для всех четырёх продуктов.
Разовые платежи: начните бесплатно
Новые аккаунты начинают с тарифа Free: все продукты включены, карта не нужна.