Developing a Custom Partner Cabinet on 1C-Bitrix
When an online store's monthly turnover exceeds 1 million rubles, managing partners manually becomes unsustainable. You need a dedicated partner cabinet that handles registration, referral tracking, multi-level commissions, and automated payouts. We have built such systems for clients with hundreds of active partners and thousands of orders per day. With over 10 years of experience and 40+ successful Bitrix projects, we deliver stable, scalable solutions. Typical development takes 2 to 4 months depending on integrations.
How the Built-In Bitrix Affiliate System Works and Its Limitations
The sale module includes the "Affiliates" subsystem (\Bitrix\Sale\Affiliate). Basic features: partner registration via bitrix:sale.affiliate.register, generation of referral links with partner_id, tracking of clicks and orders, fixed-percentage commission calculation, and the bitrix:sale.affiliate.cabinet component for statistics.
Limitations: single-level referral only, flat commission without flexible conditions, minimal interface (no charts), no payout management, and no marketing materials. For a real partner program, the built-in module serves as a foundation, but the business logic must be extended with custom handlers and entities.
Partner Registration: What You Need to Consider
Partner registration differs from normal user registration. The partner fills out an extended form: full name or company name, INN (for legal entities), business area, promotion channels, and payout details. The request goes to moderation. The manager reviews the data and approves or rejects. On approval, the partner is assigned to the "Partners" group and an initial level.
Technical implementation: extended form using bitrix:main.register with custom UF_* fields, an OnAfterUserRegister handler that creates a record in a partner highload-block, and a notification to the manager.
Building a Referral System: Attribution Models and Implementation
The partner gets a unique link like https://site.ru/?partner_id=XXX or https://site.ru/?ref=PROMO_CODE. The partner ID is saved in a cookie with a configurable lifetime (usually 30–90 days).
Attribution models:
| Model | Description | Use Case |
|---|---|---|
| Last click | The partner whose link was used last before the order gets the commission | Simple, suitable for most programs |
| First click | The first partner in the chain gets the commission | Viral marketing |
| Linear | Commission split proportionally among all partners in the chain | Complex partner networks |
The built-in module only supports last click. For other models, we create a custom click table that records the full chain, and an OnSaleOrderPaid event handler applies the required logic. A custom level system can boost partner conversion by 2–3 times compared to the built-in one.
Promo codes are an alternative to referral links. The partner gets a unique code; the customer enters it at checkout. The code is linked to the partner via a basket rule (\Bitrix\Sale\Discount) and simultaneously attributes the sale. For more on attribution models, see Wikipedia.
Why Partner Levels Matter
A multi-level program motivates partners to increase volumes. Levels are stored in a separate highload-block with parameters:
| Level | Qualification Criteria | Commission | Bonus |
|---|---|---|---|
| Starter | Registration | 5% of order amount | Basic promo materials |
| Silver | 500,000 RUB turnover per quarter | 7% | Expanded banners, priority support |
| Gold | 2,000,000 RUB turnover per quarter | 10% | Personal manager, co-branding |
| Platinum | 5,000,000 RUB turnover per quarter | 12% + volume bonus | Custom conditions, joint events |
Level recalculation runs via an agent (\CAgent) – daily or on each paid order. On level change, the partner receives a notification and the commission percentage updates for future orders.
Additional reward models: fixed amount per order (for services), percentage of first order + repeat order LTV, threshold bonuses, and multi-level marketing (implemented via recursive parent_partner_id).
The Partner Dashboard: Key Metrics and Tools
The main screen shows:
- Statistics: referral clicks (daily/weekly/monthly), attracted customer registrations, orders (count, amounts, average check), conversion rates (click → registration → order), accrued commissions, current balance.
Data is aggregated in a statistics highload-block. Charts are built with Chart.js or ApexCharts, data loaded via AJAX to a custom controller (\Bitrix\Main\Engine\Controller).
- Tools: referral link generator with UTM tags, promo code list (with limited creation based on level), payout history filtered by period and status.
Commission Calculation: From Order Payment to Balance
Calculation occurs when the order status changes to "Paid" via the OnSalePayOrder handler. Algorithm:
- Identify the partner via
partner_idcookie or promo code linked to the order. - Load the current level and commission percentage.
- Compute the base: order amount minus delivery, coupons, and VAT (configurable).
- Accrue commission to the partner's internal balance.
- If multi-level marketing is enabled, recursively accrue commissions to upstream partners with a diminishing percentage.
- Create a record in the accrual log (highload-block: partner_id, order_id, amount, type, date).
Cancellations and returns: When an order is canceled or refunded, the commission is reversed with a negative entry in the log. If already paid, a debt is recorded and deducted from the next payout.
Payout Management: From Request to Payment
The payout system uses a request-based approach. The partner submits a payout request once the minimum threshold (configurable) is reached. Steps:
- Partner clicks "Withdraw funds", enters amount and payout details.
- Request goes to moderation.
- Manager reviews and confirms.
- After actual payment, status changes to "Paid".
For legal entities, an invoice is generated from a template, the partner signs it, and accounting processes the payment.
Providing Marketing Materials
A section with:
- Banners in various formats with embedded referral links (HTML code for insertion).
- Logos and brand guidelines for co-branding.
- Email templates.
- Product/service descriptions partners can use on their sites.
- PDF presentations.
Materials are stored in an infoblock linked to partner levels. Starter partners see basic materials; upgraded levels unlock more advanced options.
Common Pitfalls in Partner Cabinet Development
- Missing cookie verification – transitions may be lost if cookies are blocked.
- Non-optimal highload queries with many partners – use tagged caching.
- Ignoring returns and reversals – leads to accounting discrepancies.
- No moderation process for payout requests – creates chaos.
Our Process and Timeline
We follow a structured approach:
- Data gathering – understand your business, partner volumes, integrations.
- Audit/analysis – review existing Bitrix setup and identify gaps.
- Design – propose solution architecture, UI mockups, data model.
- Estimation – provide a fixed price after analysis (no hidden costs).
- Development – build custom modules, handlers, and integration.
- Testing – unit tests, integration testing, UAT with sample partners.
- Launch – deploy, train managers, monitor.
Timeline: typically 2 to 4 months from project start to go-live.
A Case from Our Practice
For a major electronics retailer with 150 existing partners and a monthly turnover of 5 million rubles, we implemented a multi-level partner program. The client was managing payouts manually via spreadsheets, taking 2 days per payout cycle. We automated the entire lifecycle: registration with document upload, multi-level commission calculation, and integrated payout requests with 1C. Result: partner onboarding time dropped from 3 days to 1 hour, and active partners grew by 40% in the first quarter. Payout processing time reduced to 4 hours. Official Bitrix sale module documentation: dev.1c-bitrix.ru.
Contact us to discuss your partner program. We'll assess your needs and propose an optimal solution.







