- 1The Three Ways to Build a WooCommerce QuickBooks Integration
- 2Why Order-Level Syncing Breaks Reconciliation
- 3A worked example
- 4“It’s Open-Source — a Free Plugin Should Handle This”
- 5The Architecture That Works: Clearing Accounts, Daily Summaries, Fee Lines
- 6In LedgerPort, this architecture is a settings page
- 7When a Plugin Is Enough — and When It Isn’t
- 8The engineering bar a sync layer should clear
- 9What This Looks Like Automated
- 10And when a webhook fails — because one will
- 11The Flexibility Tax
Getting orders into QuickBooks is the easy part. This guide is about the part the plugin listing doesn’t mention: making the books match the bank.
There are 1,400 new invoices in your QuickBooks Online file, and every single one of them is correct.
You installed the connector, mapped a few fields, and watched it work. Every WooCommerce order arrived in QBO with the customer name, the line items, the shipping, the tax. By every measure on the plugin’s feature page, your WooCommerce QuickBooks integration was done.
Then you opened the bank feed. Stripe deposited $6,782.40 on Monday. PayPal dropped $1,911 on Wednesday. And not one of those 1,400 invoices — not one — matches either number. QuickBooks is now asking you to match a single deposit against dozens of open invoices, none of which add up to it.
If you’ve been here, you probably did what most store owners do: uninstalled the plugin, went back to CSV exports, and concluded the whole category is broken. It isn’t. But the thing you were sold — order syncing — was never the actual problem.
The actual problem is that WooCommerce and your bank account are describing two different realities, and no amount of order syncing translates between them. This post explains why, with the numbers, and walks through the setup that actually reconciles.
The Three Ways to Build a WooCommerce QuickBooks Integration
Broadly, every approach falls into one of three buckets.
1. The official QuickBooks Connector. Intuit’s own connector (built on the old OneSaas engine) pushes WooCommerce orders into QBO as invoices or sales receipts. It’s inexpensive, it’s supported by Intuit, and for basic order-copying it does what it says. What it knows about is orders — what a customer bought and what WooCommerce charged them.
2. Dedicated sync plugins. Tools like MyWorks Sync go much deeper: two-way syncing, granular field mapping, inventory and customer sync, real-time pushes. If your business runs on individual invoices — wholesale accounts, B2B customers, payments tied to specific people — that per-order fidelity is genuinely valuable, and MyWorks is strong at it. We’ve written a detailed comparison at LedgerPort vs. MyWorks if you’re weighing that route.
3. Manual CSV exports. Export orders from WooCommerce, massage the spreadsheet, enter journal entries into QBO by hand. Total control, zero software cost, and somewhere between two and eight hours a month depending on volume — plus every error a tired human makes in hour three.
| Method | What it moves | Стоимость | Reconciles to the bank? |
|---|---|---|---|
| QuickBooks Connector | Orders → invoices/receipts | Low | Не самостоятельно |
| Плагин синхронизации (например, MyWorks) | Заказы, клиенты, инвентарь | $ – $$ | Только при тщательной настройке выплат |
| Ручной CSV | Что угодно, что вы введете | Ваше время | Только если вы сами рассчитываете выплаты |
Обратите внимание, что у всех трех есть кое-что общее: они начинаются с данных о заказах. А данные о заказах — это лишь половина нужного вам набора данных.
Why Order-Level Syncing Breaks Reconciliation
Вот структурная проблема, и она никак не связана с тем, какой плагин вы выбрали.
WooCommerce знает о заказах: клиент, товары, суммы, налоги. Он не знает, сколько Stripe списал в виде комиссий за обработку, когда PayPal объединил выплату, какие возвраты за прошлую неделю были зачтены против депозита за эту неделю, или что комиссия за чарджбэк сделала с выплатой за вторник. Эта информация находится у ваших платежных шлюзов — совершенно отдельный набор данных, по совершенно отдельному графику.
Между тем, ваша банковская выписка видит только одну сторону истории шлюза: чистые депозиты, сгруппированные по графику шлюза. Поэтому, когда инструмент синхронизации копирует заказы в QBO, он добросовестно записывает набор данных, который ваш банковский счет никогда не подтвердит.
A worked example
Предположим, ваш магазин принял 96 заказов за выходные на общую сумму 7 200 долларов США. WooCommerce сообщает об этом как о трех отдельных днях продаж, а ваша синхронизация на уровне заказов создает 96 счетов-фактур в QBO.
В понедельник Stripe отправляет одну выплату:
| Выплата Stripe — понедельник | Сумма |
|---|---|
| Общий объем продаж за выходные (96 заказов) | $7,200.00 |
| Комиссии за обработку (2,9% + 0,30 $ × 96) | −237,60 $ |
| Возвраты (2 заказа с прошлой недели) | −180,00 $ |
| Чистый депозит на ваш счет | $6,782.40 |
Теперь QuickBooks хранит 96 счетов-фактур на общую сумму 7 200 долларов США, распределенных по пятнице, субботе и воскресенью. Ваша банковская выписка содержит один понедельничный депозит на сумму 6 782,40 $. Комиссии в размере 237,60 $ нигде в ваших книгах не отражены. 180 $ возвратов относятся к заказам, которых даже нет в данных за эти выходные. Нет такой комбинации этих 96 счетов-фактур, которая равнялась бы этому депозиту — расчеты по своей сути несовместимы.
Умножьте это на каждую выплату, каждый шлюз, каждый месяц. Так вы получите 1400 безупречных счетов-фактур и банковскую выписку, которая ни с одним из них не совпадает.
[ИЗОБРАЖЕНИЕ: Схема, показывающая данные о заказах WooCommerce и данные о выплатах Stripe как два отдельных потока, причем банковская выписка подключена только к потоку выплат — и есть разрыв, где находятся комиссии и время возвратов]
На этом этапе большинство людей приходят к одному из трех выводов: одни решают, что им нужно нанять бухгалтера, другие возвращаются к электронным таблицам, а третьи понимают, что проблема архитектурная, и исправляют архитектуру. Этот раздел для третьей группы.
“It’s Open-Source — a Free Plugin Should Handle This”
Давайте прямо назовем это предположение, потому что оно разумно и оно ошибочно.
WooCommerce имеет открытый исходный код, в экосистеме есть плагин для всего, и большинство из них бесплатны или недороги. Поэтому инстинкт таков: бесплатный плагин должен обрабатывать и QuickBooks. И бесплатный плагин может обрабатывать то, в чем плагины хороши — перемещение данных о заказах из одной базы данных в другую. Эта часть действительно решена.
Но сверка — это не проблема передачи данных. Это проблема сопоставления двух наборов данных, которые не согласны по суммам (валовые против чистых), времени (дата заказа против даты выплаты) и объему (заказы за эти выходные против возвратов за прошлую неделю). Никакой плагин не решит эту проблему, ускоряя передачу заказов или более точно сопоставляя поля — вы не настроили его неправильно, как и разработчик плагина. Инструмент решил ту проблему, которую он понял. Проблема, которая у вас на самом деле есть, больше, чем модель этой проблемы в инструменте.
The Architecture That Works: Clearing Accounts, Daily Summaries, Fee Lines
Решение — это структура, которую бухгалтеры используют десятилетиями, примененная к шлюзам. Три компонента: клиринговый счет для каждого шлюза, ежедневные сводки вместо счетов-фактур по каждому заказу и явные строки комиссий по каждой выплате. Вот пошаговая инструкция по ручной настройке.
Создайте клиринговый счет для каждого шлюза. В QBO добавьте счет типа Другие текущие активы с названием «Stripe Clearing», другой для «PayPal Clearing» и по одному для каждого дополнительного шлюза. Этот счет представляет деньги, которые клиенты заплатили, но которые еще не поступили на ваш банковский счет — что именно это и есть.
Публикуйте ежедневные сводки продаж вместо отдельных счетов-фактур. Один раз в день записывайте одну запись для каждого шлюза: валовые продажи, скидки, возвраты, доход от доставки и собранный налог с продаж. Дебетуйте клиринговый счет на валовую сумму; кредитуйте ваши счета доходов, доставки и налоговых обязательств. Ваш отчет о прибылях и убытках теперь показывает выручку по дням — что является всем, что необходимо для подготовки налоговой отчетности и анализа рентабельности — без 96 «бесхозных» счетов-фактур. (Если вы настраиваете счета доходов и налогов с нуля, наше руководство по бухгалтерскому учету WooCommerce охватывает полную структуру плана счетов.)
Записывайте каждую выплату как бухгалтерскую запись, когда она поступает. Кредитуйте клиринговый счет на валовую сумму выплаты. Дебетуйте ваш расчетный счет на чистую сумму депозита. Дебетуйте счет расходов «Комиссии за обработку платежей» на разницу в комиссиях и отражайте отмены возвратов против доходов. Используя пример выходных: кредитуйте Stripe Clearing на 7 200 $, дебетуйте расчетный счет на 6 782,40 $, дебетуйте комиссии на 237,60 $, отражайте возврат 180 $ против выручки. Теперь у каждого доллара есть свое место.
Сопоставьте депозит в банковской выписке. Поскольку строка банковского счета в вашей бухгалтерской записи составляет 6 782,40 $, а депозит — 6 782,40 $, QuickBooks сопоставляет их одним щелчком мыши. Это момент, когда вся структура окупается: сверка становится подтверждением, а не расследованием.
Следите за балансом клирингового счета. Он должен колебаться около суммы, находящейся в пути через шлюз — несколько дней продаж, не более того. Постоянно растущий баланс означает, что комиссии или возвраты где-то не учтены. Эта единственная цифра — ваша система раннего предупреждения, и это первое, что проверит хороший бухгалтер.
[ИЗОБРАЖЕНИЕ: Блок-схема — записи ежедневных сводок, поступающие на счет Stripe Clearing, затем журнальная запись выплаты, разделяющаяся на Расчетный счет (чистая сумма) и Комиссии за обработку (расходы), с сопоставлением банковской выписки в конце]
Сделанная вручную, эта задача занимает у компетентного бухгалтера 30–60 минут на шлюз в неделю, и каждый шаг — это возможность опечатки. Но структура верна — а структура — это то, что не дает ни один плагин для синхронизации заказов.
In LedgerPort, this architecture is a settings page
If those five steps sound like a lot of journal discipline, here’s the part worth knowing: in LedgerPort’s WooCommerce plugin, each component exists as configuration. The Payments tab of Sync Config auto-detects every payment gateway active on your store and assigns each one its own clearing account, with a default clearing account as the fallback for anything you haven’t configured. One clearing account per gateway isn’t journal gymnastics — it’s a dropdown per gateway.

Tax gets the same treatment: sales tax posts to a QuickBooks liability account you designate, and a rounding line item absorbs the cent-level differences between WooCommerce’s tax math and QuickBooks’ — the reconciliation papercut nobody warns you about. How orders post is one more dropdown: Sales Receipt for paid orders, Invoice when payment comes later, Estimate for quotes. And the taxonomy of sync methods is platform-general — the docs’ own guidance puts roughly 100+ orders a day as the point where per-order records stop being bookkeeping and start being sediment, which is exactly where daily summaries earn their keep.
None of this demands a configuration project, either. Per the docs’ own FAQ, every tab ships with sensible defaults — most stores can start syncing without touching Sync Config at all, and tighten the settings later as the books demand it.
When a Plugin Is Enough — and When It Isn’t
Честный ответ: иногда инструменты на уровне заказа — это правильный выбор.
Плагин синхронизации на уровне заказа, вероятно, будет достаточным, если: вы обрабатываете примерно 100–200 заказов в месяц и можете визуально определять пробелы; вы используете один шлюз с простыми, редкими возвратами; или ваш бизнес основан на счетах — оптовые и B2B-магазины, где платежи действительно привязаны к конкретным счетам клиентов. В последнем случае синхронизация по заказу — это не ошибка, а требование, и такой инструмент, как MyWorks, создан именно для этого.
Вам нужен уровень, учитывающий выплаты, если: вы используете несколько шлюзов (Stripe плюс PayPal — это то, где большинство магазинов переходят черту); возвраты и споры являются еженедельной реальностью; ваш объем делает записи по каждому заказу неуправляемыми; или бухгалтер закрывает ваши книги ежемесячно и ожидает, что банковская выписка будет совпадать. В этот момент одних только данных о заказах недостаточно для создания сверяемых книг — независимо от того, насколько хорошо они синхронизируются.
Если вы склоняетесь к маршруту с учетом выплат, то дальше обычно возникают три практических возражения:
«Будет ли он обрабатывать мои подписки?» LedgerPort синхронизирует стандартные данные заказов и клиентов WooCommerce, а продления подписок поступают как обычные заказы, когда WooCommerce их создает — таким образом, повторяющийся доход проходит через тот же конвейер, ничего особенного настраивать не нужно.
«Что, если синхронизация завершится без ошибок?» Синхронизация в реальном времени работает на веб-хуках WooCommerce, и WooCommerce автоматически повторяет неудачные доставки. Если что-то все же проскользнет, страница ручной синхронизации в wp-admin отправляет данные по запросу — вам никогда не придется ждать, пока служба поддержки повторно отправит заказ.
«Могу ли я управлять несколькими магазинами с одного аккаунта?» Да — каждый подключенный магазин считается одним соединением в пределах лимита вашего плана, что отображается на странице «Соединения». Остальные практические вопросы (совместимость с HPOS, хранение учетных данных, требуемые роли пользователей) освещены в Руководстве по началу работы с LedgerPort для WooCommerce.
The engineering bar a sync layer should clear
There’s one more evaluation axis, and it’s the one plugin listings never show: what the software does to your store when it connects — and when it leaves. LedgerPort’s provisioning is automatic and transactional. Connecting creates a read-only WooCommerce REST API key — it reads your store, it doesn’t write to it — and registers 13 named webhooks covering orders, products, variations, customers, and refunds. If any provisioning step fails midway, everything already completed is rolled back automatically, so your store is never left half-configured.

The rest of the security posture is equally checkable: credentials are stored AES-256-CBC-encrypted using your site’s own WordPress security keys, connecting requires the manage_woocommerce capability (Administrators and Shop Managers), and LedgerPort never touches webhooks you created yourself. Disconnecting is just as clean — it deletes exactly the API key and webhooks it created, your store and orders are untouched, and your mappings survive for reconnection. A botched first attempt costs nothing.
The same discipline shows up when a sync goes wrong. Failures aren’t a silent gap or a PHP notice — they’re a named taxonomy with documented fixes: an expired QuickBooks token (the docs’ own pick for the most common sync error), an unmapped product, a duplicate entry, a missing required field. Each error states its cause and its recovery path. That, more than any feature checkbox, is the real boundary of “a plugin is enough”: it ends where unrecoverable, invisible failure begins.
What This Looks Like Automated
LedgerPort построен как этот уровень с учетом выплат и поддерживает WooCommerce наряду с Shopify. Он подключается к вашему магазину *и* вашим шлюзам, а затем автоматически запускает вышеуказанную архитектуру: ежедневные сводки, публикуемые на клиринговые счета шлюзов, журналы выплат с разбивкой по комиссиям, депозиты, которые точно соответствуют вашей банковской выписке. Настройка занимает около 15 минут, а магазины со значительным объемом сообщают об экономии часов каждую неделю.
Вот вся настройка WooCommerce от начала до конца:
Установите плагин. В вашей админ-панели WordPress перейдите в раздел Плагины » Добавить новый плагин, найдите LedgerPort, нажмите Установить сейчас, затем Активировать. Вам понадобится HTTPS на вашем сайте и учетная запись LedgerPort — полное руководство по установке охватывает оба предварительных условия.
Запустите Мастер настройки. После активации LedgerPort автоматически откроет мастер в полноэкранном режиме. Нажмите Подключиться к LedgerPort, чтобы начать.
Авторизуйте подключение. Вы будете перенаправлены на app.ledgerport.com для входа, выбора компании, к которой подключаетесь, и нажатия кнопки Авторизовать — затем вы будете немедленно возвращены в админ-панель WordPress.

- Дождитесь завершения подготовки. LedgerPort создаст ключ WooCommerce REST API с доступом на чтение, зарегистрирует веб-хуки для заказов, возвратов, продуктов и клиентов, а также подтвердит подключение. Если какой-либо шаг завершится неудачно, все будет автоматически отменено — ни один магазин не будет настроен частично. При успешном завершении вы попадете на панель управления LedgerPort, подключенную.

С этого момента все находится в меню LedgerPort внутри wp-admin — Панель управления, Сопоставления, Ручная синхронизация, Журналы аудита — поэтому проверка работы никогда не потребует выхода из WordPress. А структура клирингового счета из предыдущего раздела не является отдельным проектом конфигурации: это метод синхронизации «Ежедневный сводный отчет», один из пяти выпадающих списков, выбранный один раз.

And when a webhook fails — because one will
Real-time sync rides on webhooks, and webhooks are honest about their nature: sooner or later, a delivery fails. The question most free plugins can’t answer is what happens next. Here the answer has layers. WooCommerce itself retries failed webhook deliveries automatically. Anything that still slips through doesn’t vanish — it surfaces as a per-record sync status, recoverable from the Manual Sync page inside wp-admin.

The workflow is checkbox selection, then Push Selected or Push All, then a live progress modal that shows each record land or fail — with a reason attached, not just a red icon. And the detail that makes catch-up after an outage safe: pushing is guaranteed not to duplicate. Already-synced records are skipped automatically, and re-pushing a failed record creates or updates the QuickBooks entry rather than posting it twice. “Select everything, push all” after a bad week can’t double-post revenue.

Two more facts from the FAQ that belong here: the plugin is fully compatible with WooCommerce’s High-Performance Order Storage with zero extra configuration, and — as covered above — WooCommerce Subscriptions renewals ride the same pipeline as regular orders. Historical backfill uses this same page, too, which means “we’ve been on spreadsheets all year” is an import, not a data-entry project: page through the year, push, watch the statuses turn green.
Компромисс, откровенно говоря: LedgerPort суммирует. Он не будет синхронизировать отдельные записи клиентов или управлять запасами в QBO — если вашему бизнесу нужны счета для каждого клиента, такой инструмент, как MyWorks, остается более подходящим, а сравнение честно рассматривает эту линию.
Цены начинаются с бесплатного — до 30 заказов в месяц, один магазин, ручная синхронизация по запросу — так что вы можете наблюдать, как реальная выплата сверяется, прежде чем платить что-либо. Рост начинается от 25 долларов в месяц с ежедневной автоматической синхронизацией; Масштабирование от 67 долларов в месяц добавляет синхронизацию в реальном времени, а также журналы выплат и обработку комиссий, о которых идет речь в этом посте. Каждый платный план имеет 14-дневную безоговорочную гарантию возврата денег — не пробный период, полный возврат средств, без вопросов.
The Flexibility Tax
Вот трагикомичная правда о WooCommerce: то, что делает его великим, — это то, что портит ваши книги.
Вы можете использовать любой шлюз, любой плагин оформления заказа, любое расширение подписки, любой региональный способ оплаты — и экосистема будет поддерживать все это. Эта гибкость — настоящая причина, по которой вы выбрали платформу. Но это также означает, что ваши финансовые данные поступают из четырех или пяти систем, которые никогда не договаривались говорить на одном языке, и слой бухгалтерского учета наследует каждый из этих диалектов.
Экосистема плагинов не может структурировать это за вас, потому что структура — это именно то, что открытая экосистема не навязывает. Таким образом, структура должна существовать на уровне учета: клиринговые счета, ежедневные сводки, строки комиссий. Это та цена, которую вы платите за гибкость во всем остальном — и это справедливая цена, как только вы перестанете ожидать, что синхронизация заказов оплатит ее за вас.
Те 1400 счетов-фактур при открытии не были ошибочными. Они просто отвечали на вопрос, который ваш банк никогда не задавал. Если вы хотите, чтобы ваши книги отвечали на правильный вопрос, подключите свой магазин WooCommerce к LedgerPort — бесплатный план покрывает вашу первую выплату, и в тот момент, когда депозит совпадет, вы узнаете, что архитектура работает.
