Host-to-Host API
Стройте свой чекаут.
Чистые REST-примитивы + HMAC-подписанные вебхуки. Свой фронтенд, свой поток оплаты, контроль над каждой деталью. Тот же бэкенд Paymos, полный контроль над поверхностью.

Как это работает
Три вызова. Ваш интерфейс посередине.
Создайте инвойс из своего бэкенда, нарисуйте платёжный экран сами, получите подписанное событие, когда платёж подтвердится. Граница остаётся чистой.
- 1
Создайте инвойс
POST на /v1/invoices из вашего бэкенда. Передайте сумму, валюту и свой external order ID. В ответ — ID инвойса и адрес для оплаты.
- 2
Нарисуйте свой интерфейс
Покажите адрес, QR и таймер — в том виде, как выглядит ваш продукт. Клиент платит из любого кошелька, которым уже пользуется.
- 3
Получите подписанный вебхук
Когда платёж подтверждается, Paymos шлёт POST-событие с подписью HMAC на ваш эндпоинт. Проверьте подпись, отметьте заказ оплаченным, верните 200.
Опробуйте каждый вызов до релиза
Интерактивная консоль в панели отправляет запросы в тестовую среду с вашим API-ключом и показывает подпись HMAC, заголовки и ответ.

Создано для контроля
Когда нужен собственный платёжный интерфейс
Для команд, которые собирают свою форму оплаты по API — точно под свой бренд и со связкой со своими системами. Host-to-host нужен, когда не подходит ни одна готовая форма.
Полный контроль поверхности
Выбор кошелька, QR, обновления статуса рисуете сами. Ваша дизайн-система, ваш язык взаимодействия, ваш бренд.
Родной для любого стека
API работает с Node, Python, PHP, Go, Ruby, Java, .NET и любым сервером с поддержкой HTTP. Обязательной клиентской библиотеки нет.
Подписанные вебхуки с повторами
Тело запроса подписано по HMAC, доставка не реже одного раза, повторы с экспоненциальной задержкой. Проверяете подпись у себя, отсеиваете дубли у себя.
Тестовый режим
Тестовый режим рядом с рабочим. Те же эндпоинты, изолированные данные, без реального перевода в блокчейне.
Что вы контролируете
Вы рисуете интерфейс. Мы следим за блокчейном.
Граница чёткая: ваш фронтенд держит каждый пиксель, который видит клиент. Наша инфраструктура держит вывод адресов кошельков, мониторинг сети, глубину подтверждений, расчёт.
Ваш интерфейс
Выбор кошелька и сети, адрес, QR-код и статусы оплаты отображаются в вашем интерфейсе.
Ваш поток
Стройте порядок шагов как нужно продукту. Встройте чекаут в онбординг, разбейте на экраны, спрячьте за аутентификацией.
Ваш бренд
Paymos не появляется ни в адресе, ни в оформлении для клиента. Платёжная поверхность полностью под вашим брендом.
Ваш расчёт
Выводите на свой казначейский кошелёк по своему расписанию. Тот же учётный регистр баланса, что и у других продуктов.
Начало работы
Тот же бэкенд, без SDK
Создайте инвойс REST-вызовом, опрашивайте статус по таймеру или подпишитесь на вебхук, рисуйте интерфейс как удобно. Девять примеров на разных языках в документации, одинаковая схема подписи везде.
Документацияimport { Paymos, externalOrderId } from '@paymos/sdk';
const paymos = new Paymos({
apiKey: process.env.PAYMOS_API_KEY,
apiSecret: process.env.PAYMOS_API_SECRET,
});
const invoice = await paymos.invoices.create({
projectId: 'prj_xxxxxxxxxxxx',
amount: '100.00',
currency: 'USD',
externalOrderId: externalOrderId('order'),
clientId: 'customer-456',
});
console.log(invoice.invoiceId, invoice.paymentUrl);import os
from paymos import Paymos
paymos = Paymos(
api_key=os.environ["PAYMOS_API_KEY"],
api_secret=os.environ["PAYMOS_API_SECRET"],
)
invoice = paymos.invoices.create(
project_id="prj_xxxxxxxxxxxx",
amount="100.00",
currency="USD",
external_order_id="order-123",
client_id="customer-456",
)
print(invoice["invoice_id"], invoice["payment_url"])<?php
use Paymos\Client;
use Paymos\ClientConfig;
use Paymos\IdempotencyKey;
$paymos = new Client(new ClientConfig(
getenv('PAYMOS_API_KEY'),
getenv('PAYMOS_API_SECRET')
));
$invoice = $paymos->invoices()->create(array(
'project_id' => 'prj_xxxxxxxxxxxx',
'amount' => '100.00',
'currency' => 'USD',
'external_order_id' => IdempotencyKey::externalOrderId('order'),
'client_id' => 'customer-456',
));
echo $invoice['invoice_id'] . ' ' . $invoice['payment_url'];package main
import (
"context"
"fmt"
"os"
paymos "github.com/Paymos-labs/go-sdk/v2"
)
func main() {
client, err := paymos.NewClient(os.Getenv("PAYMOS_API_KEY"), os.Getenv("PAYMOS_API_SECRET"))
if err != nil {
panic(err)
}
invoice, err := client.Invoices.Create(context.Background(), paymos.CreateInvoiceParams{
ProjectID: "prj_xxxxxxxxxxxx",
Amount: "100.00",
Currency: "USD",
ExternalOrderID: "order-123",
ClientID: stringPointer("customer-456"),
})
if err != nil {
panic(err)
}
fmt.Println(invoice.InvoiceID, invoice.PaymentURL)
}
func stringPointer(value string) *string { return &value }using Paymos;
using var paymos = new PaymosClient(
Environment.GetEnvironmentVariable("PAYMOS_API_KEY")!,
Environment.GetEnvironmentVariable("PAYMOS_API_SECRET")!);
var invoice = await paymos.Invoices.CreateAsync(new CreateInvoiceRequest(
ProjectId: "prj_xxxxxxxxxxxx",
Amount: "100.00",
Currency: "USD",
ExternalOrderId: "order-123",
ClientId: "customer-456"));
Console.WriteLine($"{invoice.InvoiceId} {invoice.PaymentUrl}");import io.paymos.CreateInvoiceRequest;
import io.paymos.Invoice;
import io.paymos.PaymosClient;
PaymosClient paymos = new PaymosClient(
System.getenv("PAYMOS_API_KEY"),
System.getenv("PAYMOS_API_SECRET"));
Invoice invoice = paymos.invoices.create(
CreateInvoiceRequest.builder()
.projectId("prj_xxxxxxxxxxxx")
.amount("100.00")
.currency("USD")
.externalOrderId("order-123")
.clientId("customer-456")
.build());
System.out.println(invoice.invoiceId() + " " + invoice.paymentUrl());require 'paymos'
paymos = Paymos::Client.new(
api_key: ENV.fetch('PAYMOS_API_KEY'),
api_secret: ENV.fetch('PAYMOS_API_SECRET')
)
invoice = paymos.invoices.create(
project_id: 'prj_xxxxxxxxxxxx',
amount: '100.00',
currency: 'USD',
external_order_id: 'order-123',
client_id: 'customer-456'
)
puts "#{invoice.invoice_id} #{invoice.payment_url}"use paymos::{CreateInvoiceRequest, PaymosClient};
let paymos = PaymosClient::new(
std::env::var("PAYMOS_API_KEY")?,
std::env::var("PAYMOS_API_SECRET")?,
)?;
let invoice = paymos
.invoices()
.create(&CreateInvoiceRequest {
project_id: "prj_xxxxxxxxxxxx".to_owned(),
amount: "100.00".to_owned(),
currency: "USD".to_owned(),
external_order_id: "order-123".to_owned(),
network: None,
allow_multiple_payments: None,
customer_fee_percent: None,
client_id: Some("customer-456".to_owned()),
})
.await?;
println!("{} {}", invoice.invoice_id, invoice.payment_url);Одна схема подписи
HMAC-SHA256 с общим секретом. Та же схема для создания инвойса, опроса статуса, вывода, проверки вебхука — единый поток аутентификации.
Для платформ
Несколько проектов в одном аккаунте, API-ключи с ограниченными правами, идемпотентность через external_order_id. Собирайте оплату как удобно — API остаётся тем же.
Кто использует Host-to-Host
Для бизнесов, которые строят остальной стек сами
Для бирж, кастодиальных кошельков и торговых платформ с собственной инженерной командой и отдельным платёжным интерфейсом.
Криптобиржи
Депозиты как часть самого торгового интерфейса, а не редирект на сторонний сайт.
Кастодиальные кошельки
Пополнение прямо внутри кошелька. Без выхода в браузер, без перехода в сторонний процесс.
Торговые платформы
Пополнение маржи, сверка депозитов и расчёты по нескольким счетам строятся на методах REST API.
Платформы под собственным брендом
Перепродавайте Paymos под своим брендом. Ваши клиенты не видят нашего имени, отношения с ними остаются за вами.
Тарифы
1,0 % с оплаченного инвойса. Договорная цена на объёме.
Та же базовая ставка, что и у других продуктов Paymos. Для крупных объёмов — индивидуальные условия, обсудите напрямую с основателем.
Тарифы