Setting up order approval for B2B 1C-Bitrix

Our company is engaged in the development, support and maintenance of Bitrix and Bitrix24 solutions of any complexity. From simple one-page sites to complex online stores, CRM systems with 1C and telephony integration. The experience of developers is confirmed by certificates from the vendor.
Our competencies:
Development stages
Latest works
  • image_website-b2b-advance_0.png
    B2B ADVANCE company website development
    1175
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Website development for FIXPER company
    811
  • 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
    564
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Development based on 1C Enterprise for MIRSANBEL
    747
  • image_crm_dolbimby_434_0.webp
    Website development on CRM Bitrix24 for DOLBIMBY
    655
  • image_crm_technotorgcomplex_453_0.webp
    Development based on Bitrix24 for the company TECHNOTORGKOMPLEKS
    976

Configuring Order Approval for B2B in 1C-Bitrix

In corporate procurement, a regular employee cannot independently pay for a large order. They need approval from a manager or finance director. Without this logic on the Bitrix side, the buyer is forced to approve the order outside the system — via email or messenger — and then return to process it manually.

Approval Scheme

Standard B2B scenario: an employee creates an order with "Under Review" status → notification goes to the manager → manager in the cabinet approves or rejects → upon approval, the order goes to processing; upon rejection — employee receives notification with reason.

More complex schemes: approval by amount (up to 50K — not needed, 50K to 200K — one level, 200K+ — two levels), or approval by product category.

Implementation via Order Statuses

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

  • APPROVAL — awaiting approval
  • APPROVED — approved, sent to processing
  • REJECTED — rejected

Adding statuses: CSaleStatus::Add() or via the admin panel Shop → Settings → Order Statuses.

When an employee (not company owner) creates an order — the OnSaleOrderSaved handler checks the user role. If the role requires approval and the amount is above threshold — the order status changes to APPROVAL, standard processing is temporarily suspended.

Notifications and Approval Interface

When transitioning to APPROVAL — email event B2B_ORDER_APPROVAL_REQUEST goes to the approver. In the email: list of items, amount, link to the approval page.

The approval page in the cabinet — list of orders with 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 — AJAX request to the handler that changes the order status via CSaleOrder::UpdateStatus() and sends notification to the creator.

Multi-Level Approval

For a two-level scheme — Highload block order_approvals: UF_ORDER_ID, UF_APPROVER_ID, UF_LEVEL (1, 2), UF_STATUS, UF_COMMENT, UF_DATE. The order transitions to main processing only when all records have status approved. On rejection at any level — the order gets status REJECTED, the chain is broken.

Timelines

Single-level approval setup: 1 week. Multi-level scheme with flexible rules: 2-3 weeks.