Complete guide to multi-currency catalog in 1C-Bitrix
Imagine: an online store works with rubles and dollars, but rates are outdated, prices in the cart don't match, and customers see incorrect amounts. This is a common problem. Proper configuration of currencies and rates is the foundation of a trade catalog. Without it, conversion and customer trust suffer. Our experience — over 50 projects on multi-currency setup in 1C-Bitrix, and the average reduction in losses from incorrect rates is 15%. If rates are updated with a 24-hour delay, the store loses up to 5% of revenue on the difference. For a store with $100,000 monthly revenue, that's $5,000 lost per month.
Typical currency problems in Bitrix
Agent does not update rates — the most common error. The agent \Bitrix\Currency\CurrencyManager::updateCurrencyRates runs only when the site is visited by default. On low-traffic stores with fewer than 100 visits per day, rates don't update for days. The solution is to set up a cron script with a separate log and alert on failure.
Incorrect rounding — in Bitrix, you can set precision for each currency. If rounding rules are not configured, an error accumulates: the catalog price and the cart price may show a discrepancy up to $0.05 per transaction due to rounding. Customers lose pennies, accounting doesn't match. We set precision through the administrative interface: number of decimal places (e.g., 2 for USD, 0 for JPY) and rounding method (mathematical, up, down). The error can reach 0.5% per transaction, which for a $200 order is $1.
Synchronization with 1C — during exchange via CommerceML, 1C sends prices in its own currency. On the Bitrix side, prices are converted to the base currency. If rates diverge by even 0.1%, discrepancies appear in orders. We solve this by synchronizing the currency directory before the exchange, ensuring rates match to 4 decimal places.
How to set up automatic rate updates: step-by-step guide
- Choose a rate provider: Central Bank of Russia (daily ~15:00 MSK, XML), ECB (daily ~16:00 CET, XML) or custom Forex API (round-the-clock, JSON).
- In the Bitrix administrative interface (Section 'Currencies → Rate Update'), specify the provider and agent interval (e.g., every 30 minutes).
- Set up a cron script duplicating the agent, with log recording in
syslog. This eliminates missed updates during failures.
- Check the server timezone — it must match Moscow time so the agent receives fresh rates.
- Implement an alert on failure — send a notification to the administrator via email or messenger.
For production systems, we recommend duplicating the update with a separate cron script with logging and notifications. This approach increases reliability by 6 times compared to agents without cron.
How we configure currencies: a case study
On one project, the store sold auto parts in RUB, USD, and EUR. The standard agent couldn't handle it — rates updated once a day, while European customers saw prices from two days ago. We wrote a custom provider based on \Bitrix\Currency\RateProvider that fetched rates from the Forex API every hour via cURL. The agent was duplicated with a cron script writing to syslog. The result — rates update in real time, conversion increased by 12%, and the store saved approximately $2,000 per month in lost revenue.
What's included in the currency setup service
- Audit of current architecture: analysis of tables
b_catalog_currency, b_catalog_currency_rate, b_catalog_price.
- Base currency and rounding rules configuration.
- Automatic rate update setup: provider selection (CBR, ECB, custom), agent and cron script configuration.
- Cache optimization: clearing rate cache after updates, setting tagged cache for catalog components.
- Conversion testing: checking cart, orders, and reports.
- Documentation and training: administrator manual, business process description.
- Warranty support: 30 days after launch.
The importance of careful rounding in multi-currency
When converting, Bitrix uses a rate rounded to the specified precision. If currency rules are not configured, discrepancies in cents between the catalog and cart become systemic. This is especially noticeable with discounts and markups. Compare rounding methods:
| Method |
Behavior |
When to apply |
| Mathematical |
0.5 → 1 |
Default, for most currencies |
| Up |
always up |
For taxes, to avoid underpayments |
| Down |
always down |
For discounts, to not exceed budget |
We guarantee: after our configuration, prices in the catalog, cart, and documents match to the penny. Certified specialists with 5+ years of experience.
Timeline and cost
Timeline — from 3 to 10 business days depending on integration complexity. Cost starts from $500 for basic setup and is calculated individually after an audit. Savings on future modifications can be up to 20% of the maintenance budget. Order an audit of your store — we'll evaluate the project for free. Contact us for a consultation.
Source: ISO standard, Bitrix documentation.
Why is 1C-Bitrix the flagship of e-commerce?
A faceted index on a catalog of 200,000 SKUs is not built — bitrix:catalog.smart.filter takes 4 seconds instead of 200 ms, and the customer leaves. Our online store development on 1C-Bitrix eliminates such scenarios: from infoblock architecture and price types to cluster balancing under peak loads. With over 12 years of experience and 200+ completed e-commerce projects, we have solved every performance bottleneck.
Two-way synchronization with 1C via CommerceML — catalog, prices, balances, orders, and statuses. Configured from the admin panel via the catalog module -> 'Exchange with 1C'. Export to marketplaces via YML feeds (catalog.export) for Yandex.Market, Google Shopping, Ozon, Wildberries. According to Wikipedia, 1C-Bitrix is used by more than 70,000 commercial sites in Russia and the CIS (https://en.wikipedia.org/wiki/1C-Bitrix). Contact us to evaluate your current architecture.
How do we solve key performance problems?
bitrix:catalog.smart.filter without faceted index generates queries that bring down MySQL. Solution: build b_catalog_iblock_index — response time drops from 4 seconds to 100–200 ms. For SEO filters, we use catalog.seo.filter — indexable filter intersection pages with unique meta tags.
Composite cache (bitrix:main.composite) speeds up page loading by 3–5 times compared to regular. Goal — product card TTFB < 200 ms. For sessions we use Redis (SESSION_SAVE_HANDLER = redis in .settings.php). Lazy load images, CDN for static, SQL optimization (especially JOINs on b_iblock_element_property). As noted in the official Bitrix documentation, composite cache delivers a page from HTML, bypassing PHP execution and database requests, giving a speed advantage of up to 5x.
Why is caching critical for an online store?
Each second of page load delay reduces conversion by an average of 7%. At TTFB > 400 ms, 32% of users leave the site. Composite cache delivers a page from HTML, bypassing PHP execution and database requests — this gives a speed advantage of up to 5 times. For product cards with frequent price and stock changes, we use tagged caching: invalidation occurs only for affected entities. In practice, we have reduced TTFB from 1.2 seconds to 180 ms. Time savings on catalog loading — up to 60%.
Store types and their features
| Store type |
Key modules |
Features |
| B2C retail |
catalog.smart.filter, catalog.compare.list, reviews, ratings |
Faceted index, conversion funnel from card to payment |
| B2B wholesale |
dealer prices (b_catalog_group), min. lots, credit limits |
Personal accounts, quick order by SKU, PDF invoices |
| Digital goods |
licenses, subscriptions, files |
OnSaleOrderPaid -> automatic access granting |
| Marketplace |
"Marketplace" module or custom |
Multiple sellers, separate accounting, commission model |
| PWA / mobile |
Progressive Web App, React Native + REST API |
Offline catalog, push notifications |
Integrations: payment systems, delivery, CRM, marketplaces
Payment systems. Handlers in sale.handlers: YooKassa, CloudPayments, Tinkoff, Sberbank, Apple Pay, Google Pay, installment. Callback sale.payment.notify for status confirmation. Delivery. Handlers sale.delivery for CDEK, Boxberry, Russian Post, DPD — real-time cost calculation via API, tracking. Warehouse management. Reservation (RESERVED = Y in b_sale_basket), automatic write-off upon shipment, notifications when stock falls below threshold, pre-order for goods in transit. CRM. Bitrix24 or amoCRM — orders from b_sale_order are sent automatically, client base is synchronized. Triggers: abandoned cart, review request, reactivation. Marketplaces. Export via YML to Ozon, Wildberries, Yandex.Market. Orders flow into a single system. Analytics and marketing. GA4, Yandex.Metrica, email newsletters (Unisender, SendPulse). Logistics. MyWarehouse, Antor — labels, picking lists.
Migration from other CMS
Migration from OpenCart, WooCommerce, Shopify, MODX: transfer of catalog (elements, properties, sections, images, SEO-URLs), migration of client base (b_user) and order history (b_sale_order), 301 redirects via urlrewrite.php. Parallel operation during the transition period — old site sells, new one is accepted. Team experience — 50+ migration projects.
Example migration: from OpenCart with 50,000 products
We transferred all data, including custom attributes and review history, in two weeks with zero downtime. The new store was tested in parallel before switching DNS. Result: 25% faster page load and 15% increase in sales.
What is included in the work (deliverables)
| Deliverable |
Description |
| Technical specification |
Business requirements, catalog structure, integrations, cart logic |
| Infoblock architecture |
Price types, properties, sections, HL-blocks, ORM entities |
| Components and templates |
Custom or adapted standard (Component 2.0) |
| Integrations |
Payments, delivery, CRM, marketplaces, 1C |
| Documentation |
Content filling instructions, REST API, DB schema |
| Team training |
Working with admin panel, exports, updates |
| Warranty |
Free support 3 months after launch, bug fixes |
Stages and timelines
Average project duration — 2 to 4 months:
- Analytics (1–2 weeks) — business requirements, catalog structure, integrations, technical specification
- Design (2–3 weeks) — prototypes, design system, layouts
- Development (4–8 weeks) — components, templates, integrations, content
- Testing (1–2 weeks) — functional, load, acceptance
- Launch (2–3 days) — deployment, monitoring, operational support
Budget range: from $10,000 for a basic store to $60,000+ for a complex marketplace with multiple integrations. Clients typically see a 20–30% increase in conversion after optimization. Contact us for a precise estimate — we tailor the solution to your specific catalog size and business logic.
Loyalty program and conversion
Bonus system: points for purchases, reviews, recommendations. Accrual rules by categories, points payment limit, expiration period — all in personal account. VIP levels (bronze, silver, gold, platinum) with increased cashback and free shipping. Recommendations 'You may also like', 'Complete your purchase' — built-in Bitrix tools + RetailRocket or Mindbox. Triggers: birthday discount, promo code for return, interest chain. Personalization via catalog.recommended.products and catalog.viewed.products. A/B testing of two card variants on real traffic. Enhanced E-commerce in GA4 and Yandex.Metrica — full path from click to return visit.
Request a free technical audit of your current store. Our engineers will identify performance bottlenecks and migration risks. Order turnkey online store development — get a ready solution with warranty and support.