Перейти к содержимому
Рабочий цикл

Месяц на XEX: от изменения ставки до выплаченного запроса.

Шесть станций. Две из них не откроются для одного человека. Вот каждая — и то, что она записывает.

Операционный цикл в шести станцияхКонфигурация, каталог, покупка, расчёт, прогон и вывод, соединённые в замкнутый цикл, который возвращается к конфигурации на следующий период. У конфигурации и прогона есть по второму концентрическому квадрату: они не могут двинуться дальше без одобрения второго оператора. Деньги двигает только станция вывода, и выводит их через собственные системы оператора.Один месяц · шесть станцийНастройка на входе · рассчитанная заявка на выходеprogram_versionНастройкаpackageКаталогpurchaseПокупкаledger_entryРасчётrunПрогонclaimЗаявкаДеньги уходят здесьПо вашим каналам, никогда по нашимРассчитано · следующий периодТребуется второй утверждающий
Конфигурация и расчётный период — два шлюза. Станция выплаты — единственное место, где деньги уходят, и уходят они через ваши системы.
Станция один · конфигурация

Ваш план вознаграждений — это конфигурация, а не код.

Ставки, ранги, лестницы, пороги, пулы и условия по каждому пакету редактируются в структурированных формах и сохраняются как новая версия. Никто не пишет JSON и никто не выпускает релиз, чтобы поменять один процент.

Книга в глубинуЧетыре периода, вычерченные как изометрическая стопка плоскостей: 2026-01 внизу и 2026-04 наверху, каждая разлинована на четыре строки реестра. Строка на плоскости 2026-02, DIRECT-L1 на 420.00, наполовину скрыта под верхними плоскостями и всё же подписана. Другая строка, на плоскости 2026-04, REFUND-REWIND на минус 180.00, сторнирует её. По ближнему углу стопки от одной к другой идёт пунктирная линия — пунктирная, потому что проходит позади двух периодов. Между плоскостями ничего не перемещается.Книга · по плоскости на периодТолько добавление2026-012026-022026-032026-04REFUND-REWIND · −180.00записано 2026-04 · сторнирует строку нижеDIRECT-L1 · 420.00записано 2026-02 · всё ещё там и всё ещё показанаСтрока пишется один раз — на плоскость своего периода.Исправление — новая строка на более поздней плоскости, а не правка нижней.
Каждая плоскость — один учётный период. Стопка и есть реестр; полоса — это сторнирование.

Сохранение не делает ставку действующей. На версии проставляется версия движка, который будет её исполнять, и она остаётся черновиком, пока её не утвердит второй оператор. Самоутверждение отклоняется дважды — один раз в Go и один раз в базе данных, — поэтому его нельзя обойти прямым вызовом API и нельзя обойти оператором, у которого есть все роли.

Поскольку версия движка записана на самой версии плана, изменение того, как платформа считает, — это новая версия движка, а не тихое изменение того, сколько ваш план выплатил в прошлом месяце. Рабочее пространство можно закрепить за движком или перевести на новый осознанно.

internal/program · migrations · POST /v1/admin/programs/{version}/approve

Что вы настраиваете, а что нет
XEX исполняет планы семейства unilevel: прямые уровни, ранговый дифференциал со сжатием, поколенческие оверрайды, пулы, уровни признания и пороги активности. Ставки, ранги, лестницы, деление пула, пороги и условия по каждому пакету настраиваете вы. Структуру самого плана вы не меняете. Бинарное, матричное и гибридное размещение есть в дорожной карте и сегодня недоступны для настройки.
Станции два и три · каталог, покупка

Участники платят на ваши счета, а не на наши.

Пакет оцениваете и продаёте вы. Деньги приходят на счёт, который принадлежит вам, а платформе лишь сообщают, что они пришли.

Возврат в вашу же кассу

Участник завершает оплату в вашей действующей кассе, и она же сообщает о покупке обратно через командный API. В вашей воронке не меняется ничего.

rails.host_handoff

Перевод в сети

Ваш адрес получения показывается вместе с точной суммой и кодом назначения. Здесь ничто не следит за блокчейном, поэтому получение подтверждает человек — и текст, который читает участник, так и написан, а не оставляет его обновлять страницу.

rails.onchain_transfer

Банковский перевод

Ваши собственные банковские реквизиты, с набором полей под каждую страну, а не с отдельным каналом на каждую страну. Подтверждает человек по вашей выписке.

rails.bank_transfer

Alipay

Счёт получателя или постоянный QR-код для приёма, принадлежащие вам.

rails.alipay

WeChat Pay

Та же схема, что и у Alipay, и тот же путь подтверждения.

rails.wechat_pay

M-PESA

Бизнес-номер Pay Bill и поле счёта, куда участник вписывает свой код назначения.

rails.mpesa

Каждый из этих каналов настраивается вашими учётными данными и на ваших счетах. Конфигурация канала отказывается сохранять данные, совпадающие с собственными данными платформы, — эта проверка существует именно потому, что «давайте пока используем наши» — это то, как поставщик софта случайно становится платёжной организацией.

internal/rails

Станция четыре · расчёт

Шесть движков, одна книга.

Каждый движок пишет свои строки, каждая строка несёт идентификатор породившего её правила, и все они попадают в одну книгу, куда можно только дописывать.

Прямая рекомендация

Заданный вами процент на первых подходящих уровнях вышестоящей линии, причём каждый уровень зависит от ранга самого получателя. Строка неактивного получателя удерживается, а не отбрасывается, и срок доступности к выплате доходит до закрытия окна возврата — именно это не даёт выплате обогнать возврат.

internal/direct

Командный дифференциал

Накопительная лестница с полным сжатием: поднимаясь по вышестоящей линии покупки, каждая квалифицированная позиция берёт свою полосу минус то, что уже взяли позиции ниже. Закрытые и заблокированные позиции прозрачны и полосу не расходуют.

internal/team

Оверрайд равного ранга

Поколенческий оверрайд на теневой объём: каждый нижестоящий с рангом не ниже получателя расходует поколение, более низкие ранги прозрачны, а если нижестоящий выше получателя по рангу, теневой объём пересчитывается по полосе самого получателя.

internal/samerank

Ранги

Две лестницы. Ранги достижений управляют прямым бонусом через число активных прямых и ограничение по ветке; объёмные ранги сочетают накопительный порог объёма малой группы со структурным требованием, а возврат откатывает достигнутый максимум.

internal/rank

Мировой пул

Заданный вами процент от продаж периода за вычетом возвратов, разделённый между верхними уровнями и поровну внутри уровня. Уровень, на котором никто не квалифицировался, записывается как нераспределённый, а не тихо перераспределяется кому-то другому.

internal/pool

Клубы и индивидуальные решения

Уровни признания по накопленным покупкам за вычетом возвратов, а также усмотренческие присвоения ранга, повышения и добавочные базисные пункты — все со сроком, с обоснованием, с записью в аудит и с утверждением двумя людьми.

internal/club · internal/accommodations

Форма дифференциальной лестницыСтупенчатая функция: по горизонтали — накопленный объём команды, по вертикали — дифференциальная ставка. Семь ступеней отмечены от V1 до V7. Вторая, пунктирная лестница показывает ту же шкалу после того, как возврат откатил достигнутый максимум: каждая ступень сдвигается вправо. Заштрихованные полосы между двумя кривыми — там, где они расходятся. На обеих осях только относительные деления и ни одного абсолютного числа, потому что каждая ставка на реальной шкале — это собственная настройка оператора.V1V2V3V4V5V6V7Лестница по настройкеПосле отката из-за возвратаРазница между нимиНакопленный объём командыОтносительная шкала · без абсолютных значенийДифференциальная ставкаФорма дифференциальной лестницы. Каждая ставка на ней — собственная настройка оператора.
Структурная схема. Обе оси относительны: каждая ставка на реальной лестнице — собственная конфигурация оператора.

Ни одна ставка не зашита в код движка — конфигурация является единственным источником, который движки читают. Каждый движок ведут эталонные наборы данных, и набор тестов на Go прогоняет их при любом изменении; когда за всем этим стоят настоящие деньги, это единственный способ сохранить честность расчётного движка.

Станция пять · расчётный период

Расчётный период сначала идёт вхолостую.

Период рассчитывается в черновые строки, которые никому ничего не платят. Вы читаете, что он сделает, и затем его утверждает кто-то другой.

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

Утверждение должно прийти от оператора, отличного от того, кто создал период. Проводку можно продолжить: прерванный на середине период завершают повторным запуском, а не ручной сверкой двух наполовину проведённых периодов. Ненужный черновик отбрасывается, и отбрасывание тоже идемпотентно.

internal/runs · /admin/runs

Станция шесть · выплата

Участник запрашивает выплату. Платите вы.

Запрос резервирует ровно те строки книги, что нужно, и выпускает поручение. Платформа никогда не держит деньги, которые велит вам перевести.

Заявка и гонка в её концеДве временные шкалы: одна участника, другая — расчётной стороны. Участник открывает заявку на вывод, строки резервируются, инструкция уходит расчётной стороне. Затем запрос на отмену и вебхук о расчёте перекрываются в заштрихованном окне с подписью «спорно». Расчёт побеждает, отмена отклоняется. Справа пять строк реестра расходуются от самых старых, причём отрицательная зачитывается прежде всего: минус 45.00, затем 410.00 целиком, затем 35.00 из строки в 85.00 — резервируется 400.00, остаётся 50.00.Спорное окноУчастникХостЗаявка открытаСтроки зарезервированыЗапрошена отменаЗаявка закрытаИнструкция отправленаВебхук расчётаРассчитано · расчёт побеждаетОтмена отклоненаRESERVING 400.00120.00прямая · 2026-06не тронуто260.00дифференциал · 2026-06не тронуто85.00равный ранг · 2026-0550.00 осталось410.00пул · 2026-05израсходовано−45.00сторно · 2026-04Сначала зачётЧистый резерв400.00−45.00 + 410.00 + 35.00 = 400.00Отмена и расчёт могут прийти в одно окно. Расчёт побеждает, а книга показывает, какие строки оплачены.
Две фазы, одно спорное окно. Расчёт выигрывает гонку, поэтому ничто не освобождается дважды.

Точные строки, зарезервированы

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

internal/claims

Отмена проигрывает расчёту

Отмена и обратный вызов о расчёте могут наложиться. Расчёт выигрывает детерминированно — иначе получится запрос, который одновременно отменён и оплачен.

internal/claims

Нет системы расчётов? Есть консоль.

Рабочее пространство, которому некуда передавать поручение, платит из собственного кошелька и записывает исполненную цену и собственный идентификатор транзакции. Платёж без идентификатора отклоняется, потому что его невозможно было бы сверить.

internal/httpapi/payouts.go

Другая сторона

Что видит участник.

Ваши участники читают портал куда чаще, чем вы читаете консоль, и то, что он говорит, — это и есть голос вашей программы.

Тринадцать экранов портала на десяти языках, включая языки справа налево. Балансы, команда, доход по типам, пакеты, выплаты, споры и сам план — всё это рисуется из той же конфигурации, которую исполняют движки, поэтому участник читает одни и те же слова до вступления и после.

Любое ненормальное состояние несёт причину и следующее действие. Просто «ограничено по региону» — это тупик; здешнее уведомление говорит, почему и что делать. Участник, не согласный с цифрой, открывает спор, который идёт от открыт к на рассмотрении и дальше к решён или отклонён, с приложенным аудиторским следом — для вас это куда лучший исход, чем тот же участник, спорящий со своим наставником в групповом чате.

app/[locale]/portal · internal/disputes · i18n

Ваша программа — ваша ответственность
XEX поставляет программное обеспечение. Вы несёте единоличную ответственность за свой план вознаграждения, за каждую лицензию или регистрацию, необходимую вашей программе в странах, где вы её продвигаете, и за каждое заявление, которое делаете вы или ваши участники. Планы, платящие преимущественно за привлечение участников, а не за реальные продажи, запрещены на этой платформе и незаконны во многих странах.
Дальше

Посмотрите, сколько это стоит, или возьмите песочницу.

Песочница бесплатна на любом тарифе и представляет собой продукт целиком — не демо, из которого вырезали всё интересное.