Integrating Yandex Delivery with 1C-Bitrix: Automate Shipping

An online store on 1C-Bitrix loses orders due to non-automated delivery: managers spend up to 15 minutes manually calculating costs and tracking statuses. Input errors reach 5%, and customers complain about lack of information. Connecting Yandex Delivery via [Delivery API v2](https://yandex.ru/dev/t

Our competencies:

Frequently Asked Questions

An online store on 1C-Bitrix loses orders due to non-automated delivery: managers spend up to 15 minutes manually calculating costs and tracking statuses. Input errors reach 5%, and customers complain about lack of information. Connecting Yandex Delivery via Delivery API v2 solves these problems, but implementation requires attention to details: two-step claim creation, discrepancy between preliminary and actual cost, correct webhook handling. We are a team with 10+ years of Bitrix experience and perform such turnkey integrations in 3-5 days. Contact us to assess your project. On average, the integration pays for itself in 2-3 months by reducing manual labor: with 100 orders per month, savings reach 7500 rubles on manager salary, as shown in typical project calculations.

How to Integrate Yandex Delivery with 1C-Bitrix?

Built-in delivery methods in Bitrix do not support dynamic cost calculation from Yandex Delivery, automatic claim creation, and real-time status tracking. You have to manually transfer orders to the Yandex personal account, which is fraught with typical errors: incorrect pickup point coordinates, skipping the confirmation step, or lack of webhook processing. Unlike manual exchange, API v2 speeds up order processing by 60 times and completely eliminates input errors. As stated in the official documentation: two-step claim creation is critical for courier assignment.

How Two-Step Claim Creation Works

Yandex Delivery requires explicit confirmation after creation. A single-step approach leaves the claim in new status, and the courier is not assigned. Two-step creation reduces the risk of unfulfilled orders by half compared to single-step. Let's look at an example:

public function createAndAcceptClaim(\Bitrix\Sale\Shipment $shipment): string { $order = $shipment->getOrder(); $claim = $this->apiPost('/claims?request_id=' . uniqid(), [ 'items' => $this->buildItems($shipment), 'route_points' => $this->buildRoutePoints($shipment), 'comment' => 'Order #' . $order->getId(), 'callback_properties' => ['callback_url' => $this->getOption('WEBHOOK_URL')], ]); $claimId = $claim['id']; // Without this call, the courier will not be assigned $this->apiPost('/claims/accept?claim_id=' . $claimId, [ 'version' => $claim['version'], ]); return $claimId; } 

request_id is an idempotent key: a repeat request with the same value returns the existing claim. This is critical for integration reliability.

Typical Errors When Integrating Yandex Delivery

  • Skipping the accept step: the claim remains in new, courier not assigned.
  • Incorrect pickup point coordinates: cost is calculated incorrectly.
  • Missing webhook handling for cancellation: the order stays "in transit".
  • Ignoring the version field on confirmation: API returns 409 error.

Step-by-Step Integration Guide

  1. Obtain an OAuth token from Yandex Passport.
  2. Create a delivery handler that extends \Bitrix\Sale\Delivery\Services\Base.
  3. Implement the calculateConcrete method for cost calculation.
  4. Implement methods for claim creation and confirmation.
  5. Set up the callback_url for webhooks.
  6. Test all scenarios in a test environment.

Configuring Status Webhooks

Yandex Delivery supports push notifications to the callback_url. Lifecycle statuses:

Status Meaning
new Claim created
accepted Confirmed
performer_found Courier found
pickuped Goods picked up from warehouse
delivery_arrived Arrived at recipient
delivered Delivered
returning Return
cancelled Cancelled

Webhooks arrive at the callback URL specified during claim creation. We recommend implementing an endpoint that accepts a POST request with a JSON body and updates the order status in Bitrix. This allows automatic customer notification.

More about webhooksEach webhook contains an object with fields `id`, `status`, `updated_ts`. Process them idempotently: if the status is already set, ignore the repeat.

Comparison of API v2 vs Manual Exchange

Criteria API v2 Manual input in cabinet
Time per order 2-5 seconds 3-5 minutes
Transfer errors 0% up to 5%
Real-time statuses yes no
Express delivery possibility yes limited

API v2 speeds up order processing by 60 times and completely eliminates input errors.

Case: Express Delivery in Moscow

Our client is a cosmetics store; the goal was to show "deliver within 2 hours" for orders before 15:00. We implemented two methods: standard (next day) and express (2-3 hours, with additional fee). Express is available when ordering before 15:00 MSK and order amount from 1500 rubles. Check implemented in the handler's isCompatible() method. On cancelled status webhook, we notify the manager and offer the nearest available slot. Result: conversion increased by 18% in a month.

What's Included

  • Development of delivery handler with cost calculation and claim creation methods
  • Webhook setup for automatic status updates
  • Testing of all scenarios (success, error, cancellation)
  • Integration documentation and manager instructions
  • Employee training on delivery operations
  • Post-release support for 30 days

Timeframes

Scope Time
Cost calculation + claim creation + confirmation 3-4 days
+ Status webhooks +1 day
+ Express/standard with time conditions +1-2 days
+ Customer tracking interface +2 days

Request a consultation on integration from our engineers. Get a proposal for your project. We guarantee quality and adherence to deadlines.