Stipendex

Рельсы-адаптеры

Stipendex не проводит расчёты сам — их исполняют существующие платёжные системы через адаптеры. Протокол фиксирует интерфейс адаптера и формат evidence в Proof; всё остальное (лицензии, KYC, конверсия, антифрод) — зона рельса.


Интерфейс адаптера (в кошельке)

RailAdapter {
  scheme: string                       // "account" | "stripe-mpp" | "stripe-connect" | "x402" | …
  pay(quote, railParams)      → evidence          // service: capture сразу
  hold(quote, railParams)     → evidence          // checkout: предавторизация estimate+tolerance
  capture(evidence, amountFinal) → evidence'      // checkout: списание ≤ холда
  void(evidence)              → void              // отмена холда без списания
  refund(evidence, amount)    → evidence'         // расширение
}

На стороне получателя симметрично: verify(proof) → ok | invalid (локально или запросом к фасилитатору/сети).

account — счёт у фасилитатора (дефолт «из коробки»)

Prepaid-ledger у hosted-оператора. Цель — нулевой порог входа: разработчик не трогает ни карты, ни крипту, ни регуляторику.

Фасилитатор дополнительно даёт: pending-очередь HITL, velocity-антифрод, revocation мандатов, выплаты получателям (по расписанию/порогу).

stripe-mpp — фиатные machine-платежи

Мост в Stripe Machine Payments Protocol: сессионная агрегированная тарификация на фиатных рельсах. Естественный выбор для получателей, уже живущих в Stripe. evidence = идентификатор MPP-сессии/чарджа; tab-сессии Stipendex мапятся на MPP-сессии почти один в один.

stripe-connect — checkout-профиль

Рельс товарных покупок (модель 4agents order-flow v2.1, решение D1):

Налоги, резервы, выплаты, MoR — конфигурация платформы-оркестратора поверх Connect, вне Stipendex (см. checkout-profile.md).

x402 — крипто per-call

Для полной автономии и получателей без банковской обвязки:

Совместимость сознательная: Stipendex-Quote несёт те же поля схемы, что и x402 paymentRequirements, чтобы получатель с готовым x402-стеком подключался переименованием полей, а не переписыванием.

Выбор рельса кошельком

  1. Пересечение quote.rails[] с настроенными адаптерами.
  2. Приоритет из конфигурации кошелька (по умолчанию: account → stripe-* → x402).
  3. Пусто → denied(no_common_rail) — агент может сообщить получателю/принципалу.

Требования к любому рельсу (нормативные)