Setting Up Order Approval for B2B on 1C-Bitrix

Imagine: a manager creates an order worth 150,000 rubles, but it disappears into a void—no automatic notification, no status. The director learns about it a week later via email, but by then the supplier has already canceled the reservation. Many face this problem. We configure a full order approval

Our competencies:

Frequently Asked Questions

Latest works

  • image_website-b2b-advance_0.webp
    B2B ADVANCE company website development
    1415
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Website development for FIXPER company
    995
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Development based on Bitrix, Bitrix24, 1C for the company Development of an Online Appointment Booking Widget for a Medical Center
    733
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Development based on 1C Enterprise for MIRSANBEL
    862
  • image_crm_dolbimby_434_0.webp
    Website development on CRM Bitrix24 for DOLBIMBY
    772
  • image_crm_technotorgcomplex_453_0.webp
    Development based on Bitrix24 for the company TECHNOTORGKOMPLEKS
    1134

Imagine: a manager creates an order worth 150,000 rubles, but it disappears into a void—no automatic notification, no status. The director learns about it a week later via email, but by then the supplier has already canceled the reservation. Many face this problem. We configure a full order approval cycle on 1C-Bitrix to eliminate losses. In this article, we will discuss setting up statuses, notifications, and multi-level approval using real examples.

Why Manual Approval Is Evil

Manual order processing creates chaos: orders are lost, duplicated, and deadlines drag on. According to research, up to 30% of orders are lost during manual processing in B2B. Automation on Bitrix provides a clear status for each order (APPROVAL, APPROVED, REJECTED), automatic notifications tied to mail events, and an audit trail (who, when, what changed). This reduces the load on purchasers by up to 40%.

How Order Approval Works in B2B

A standard scenario: an employee creates an order with status "Pending Approval" → a notification goes to the manager → the manager confirms or rejects in their dashboard → if confirmed, the order moves to processing; if rejected, the employee receives a notification with the reason. More complex schemes take into account the amount (up to 50 thousand — no approval needed, from 50 to 200 thousand — one level, from 200 thousand — two levels) or the product category.

Characteristic Single-Level Scheme Multi-Level Scheme
Number of approvers 1 2+
Rule flexibility Basic High (amount, category)
Implementation time 1 week 2-3 weeks
Error risk Minimal Medium

A makeshift custom scheme is 3 times slower to implement than our setup using Highload-blocks—we have already refined the templates. Automation via Highload-blocks reduces order processing time by half compared to standard mechanisms.

How to Configure Order Statuses for Approval

In Bitrix, an order has a status (b_sale_status). We add custom statuses:

  • APPROVAL — pending approval
  • APPROVED — approved, moved to processing
  • REJECTED — rejected

Adding statuses: CSaleStatus::Add() or via the control panel Store → Settings → Order statuses. When an employee (not the company owner) creates an order, the OnSaleOrderSaved handler checks the user's role. If the role requires approval and the amount exceeds a threshold, the order status changes to APPROVAL, and standard processing is temporarily paused.

How to Set Up Step-by-Step Approval

Here is a simple guide for a typical single-level scheme:

  1. Create custom statuses: APPROVAL, APPROVED, REJECTED in the "Order statuses" section.
  2. Assign rights: for the "approver" role, grant permission to change the status.
  3. Configure the mail event B2B_ORDER_APPROVAL_REQUEST with a letter template containing the amount and a link.
  4. Write a handler for the OnSaleOrderSaved event: if the order is created by a user with the "employee" role and the amount > threshold, change the status to APPROVAL.
  5. Create a page in the user dashboard with a list of orders in APPROVAL status. Add "Approve"/"Reject" buttons.
  6. On click, call CSaleOrder::UpdateStatus() and send a notification to the initiator.

Notifications and Approval Interface

Upon transition to APPROVAL, the mail event B2B_ORDER_APPROVAL_REQUEST is sent to the approver. The email contains: item list, total, and a link to the approval page. The approval page in the dashboard shows a list of orders in APPROVAL status for the current user (or for the company if they have the approver role). Buttons: "Approve" / "Reject" with a reason field. On click, an AJAX request goes to a handler that changes the order status via CSaleOrder::UpdateStatus() and sends a notification to the creator.

What Are the Approval Levels?

For a two-level scheme, we use a Highload-block order_approvals: UF_ORDER_ID, UF_APPROVER_ID, UF_LEVEL (1, 2), UF_STATUS, UF_COMMENT, UF_DATE. The order moves to main processing only when all related records have status approved. If rejected at any level, the order receives status REJECTED, and the chain is interrupted.

Detailed status diagram
  • New order (N) → rule check → if approval required → APPROVAL
  • APPROVAL → if all approved → APPROVED; if rejected → REJECTED
  • APPROVED → to processing
  • REJECTED → possible resubmission

What's Included in the Setup

Stage Result
Business process analysis Role scheme and thresholds
Design Approval layout
Implementation Statuses, handlers, HL-blocks
Notifications Mail templates, events
Testing 10+ scenarios
Training Instructions for managers

We guarantee correct operation under loads up to 10,000 orders per day. Our experience spans many years with 50+ Bitrix projects and certified specialists. Contact us for a quote—we will select the optimal order approval scheme for your business. Get a consultation on automating B2B processes on Bitrix.

Single-level approval setup: 1 week. Multi-level scheme with flexible rules: 2-3 weeks. Cost is calculated individually for your scenario.

Additional resources: CommerceML — data exchange standard with 1C, Bitrix24 REST API for integration with external systems.