- 1The Chart of Accounts That Looks Right Until Month-End Close
- 2Why Shopify’s Net Payout Structure Is the Architectural Problem
- 3Decisions 1 and 2: Gross Revenue Accounts and the Clearing Account
- 4Decisions 3 and 4: Fee Separation and Refund Handling
- 5Decision 5: Sales Tax as a Liability From Day One
- 6The Chart of Accounts That Closes in One Day
- 7One more decision: the sync method that will post into these accounts
You take on a new Shopify client. You build their chart of accounts in QuickBooks Online — five categories, sensible sub-accounts, account numbering that follows the standard convention. You connect the Shopify integration. Everything looks correct on paper.
Then the first Shopify payout arrives.
Shopify deposited $14,200 into the bank. QuickBooks shows $15,800 in Shopify revenue. The Shopify dashboard reports $16,100 in gross sales. Three different numbers, same month’s activity, none of them agree. You spend four hours chasing the gap. Eventually you find it: fees recorded as bank transfers, refunds that didn’t post against the right accounts, a tax collection amount sitting in revenue instead of a liability. The chart of accounts wasn’t missing anything. It just wasn’t built for how Shopify actually moves money.
Here’s the false assumption most CoA guides build on: if you have the right accounts in the right categories, the reconciliation will work — it’s just a matter of doing the work each month. That’s not true for Shopify. Account names and numbering are table stakes. What determines whether your Shopify books reconcile is whether the chart of accounts is architecturally compatible with how Shopify disburses funds — as a net payout, not as gross revenue. Five specific mapping decisions determine whether month-end close takes 30 minutes or most of an afternoon.
TIME DIFFERENCE
4 hrs
vs. 30 minutes — same month-end close
The difference isn’t how much work you do. It’s whether the chart of accounts was designed to receive Shopify’s net payout correctly in the first place.
The Chart of Accounts That Looks Right Until Month-End Close
Most standard chart of accounts templates — even ecommerce-specific ones — are built on the assumption that income arrives as gross revenue. A sale for $100 posts as $100 of income. Fees get recorded when you pay them. That’s how most businesses work.
Shopify doesn’t work that way.
Shopify doesn’t send you $100 when a customer pays $100. It sends you a net payout — gross sales minus payment processing fees, minus refunds, minus Shopify transaction fees, sometimes minus sales tax collected on your behalf, all bundled into a single bank transfer covering anywhere from one to fourteen days of orders. By the time that payout hits your client’s bank account, it represents at least five distinct financial events. Your chart of accounts needs to receive and disaggregate all five, or reconciliation will fail every month.
The accounts aren’t wrong. The architecture is.
Why Shopify’s Net Payout Structure Is the Architectural Problem
Here’s what a typical Shopify payout actually contains, broken out as line items:
- Kabuuang benta — kita mula sa lahat ng order sa panahon ng pagbabayad
- Mga bayarin sa pagproseso ng pagbabayad — karaniwang 2.9% + $0.30 bawat online na transaksyon para sa Shopify Payments (Basic plan); ibinabawas bago ang pagbabayad
- Mga bayarin sa transaksyon ng Shopify — karagdagang 2% bawat transaksyon kung ang tindahan ay *hindi* gumagamit ng Shopify Payments; karaniwan sa mga lumang plano
- Mga refund na ibinigay — kabuuang mga refund para sa mga ibinalik na order sa panahon ng pagbabayad
- Buwis sa benta na pinadali ng marketplace — mga halagang nakolekta ng Shopify at direktang ipapadala sa mga awtoridad ng estado sa ngalan ng mangangalakal (sa karamihan ng mga estado sa US, ang Shopify ang tagapagpadali ng marketplace)
Kapag ang iyong integrasyon ay nagmamapa ng deposito nang direkta sa isang "Shopify Sales" income account, pinagsasama mo ang lahat ng limang kaganapan sa isang numero. Ang kita ay nababawasan dahil ang mga bayarin ay naibawas na. Ang mga gastos sa bayarin ay hindi nakikita. Ang balance sheet ay nagdadala ng phantom tax liability dahil naitala mo ang pagkolekta ng buwis bilang kita.
Ang solusyon ay hindi paglilinis pagkatapos ng katotohanan buwan-buwan. Ito ay pagbuo ng chart of accounts upang ang bawat bahagi ay awtomatikong mapunta sa tamang account — at isang clearing account ang mag-uugnay sa kanila pabalik sa deposito sa bangko. Nangangailangan iyon ng limang tiyak na desisyon. Ang downstream na gastos sa maling pagkuha sa mga ito ay ang oras na isinusuko ng iyong kumpanya sa mga pakikipag-ugnayan sa e-commerce.
Decisions 1 and 2: Gross Revenue Accounts and the Clearing Account
Desisyon 1: Itala ang kabuuang benta bilang kita, hindi ang halaga ng deposito.
Your income accounts should reflect what customers actually paid — before Shopify deducts anything. Create separate income accounts for each sales channel (Shopify sales, WooCommerce sales, wholesale revenue) rather than a single “e-commerce sales” bucket. Once you combine Shopify and Amazon revenue into one account, you lose per-channel margin visibility, and there’s no practical way to recover it without rebuilding the books.
Ang isang malinis na seksyon ng kita para sa isang kliyente na Shopify lamang ay ganito ang hitsura:
- 4100 — Shopify Sales (kabuuang, bago ang mga bawas)
- 4110 — Shopify Shipping Income (kung ang pagpapadala ay sinisingil sa mga customer)
- 4200 — Returns and Allowances (kontra-kita)
Ang mga income account ay nagtatala kung ano ang naibenta. Ang deposito sa bangko ay sumasalamin sa kung ano ang naibayad pagkatapos ng mga bawas. Ang dalawang numerong iyon ay magkaiba sa istraktura, at ang iyong chart of accounts ay nangangailangan ng isang account na mag-uugnay sa kanila.
Desisyon 2: Gumamit ng clearing account bilang tulay.
Ang clearing account ay ang arkitektural na solusyon para sa net payout problem: kabuuang benta na pumasok, mga bawas sa bayarin/refund/buwis na lumabas, ang net bank deposit ay eksaktong tumutugma. Ang clearing account ay nagsasara sa zero bawat payout cycle. Ang rekonsilasyon ay nagiging mekanikal, hindi imbestigatibo.
Kapag naitala ang isang benta, ang kabuuang halaga ay napupunta sa Shopify Sales income account at sa clearing account bilang isang asset. Kapag ipinadala ng Shopify ang net payout, natatanggap ng clearing account ang mga bawas (mga bayarin, refund, buwis) at nagsasara sa zero. Ang deposito sa bangko ay eksaktong tumutugma sa net payout. Ang bawat bahagi ay napupunta sa tamang account.
Kung walang clearing account, sinusubukan mong i-reconcile ang isang bank deposit na hindi tumutugma sa anumang QBO account — dahil hindi ito dapat tumugma sa anumang iisang account. Ito ay net ng limang financial events. Ang bawat CPA na gumugol ng isang gabi sa Shopify reconciliation nang walang isa ay eksaktong alam kung ano ang pakiramdam niyon.
Gumawa ng isang clearing account bawat payment processor. Kung ang iyong kliyente ay gumagamit ng Shopify Payments at PayPal, iyon ay dalawang clearing account. Ang paghahalo sa mga ito ay lumilikha muli ng parehong problema sa mismatch sa clearing level na sinusubukan mong lutasin sa income level.
How these two decisions get enforced: product mappings.
Decisions 1 and 2 only hold if the software posting into QBO respects them, and mappings are where that happens. The sequencing rule comes straight from LedgerPort’s own setup docs: build the chart of accounts first, then map. LedgerPort maps to your existing QuickBooks accounts — it doesn’t create accounts behind your back — so the structure you design in this article is the structure the sync respects.

The mapping screen is also where you set revenue granularity. Every product maps to a QBO item, and every item carries an income account. Point many products at one item and you get the simple variant of this template — a single Shopify Sales account. Map products individually and you get per-SKU revenue, plus COGS posting on Inventory-type items. It’s the same decision as “one Sales account vs. per-line revenue accounts,” surfaced as a dropdown.
Two details make this workable in practice. First, the failure mode is safe: an order containing an unmapped product errors with a named status — “Product Not Mapped” — and holds instead of posting to a wrong account, so the template can’t be silently violated. Second, the setup isn’t a week of dropdown clicking: Auto-Map matches Shopify products to QBO items by SKU or name in one click, flags the results for review, and leaves only the misses for manual mapping.
Decisions 3 and 4: Fee Separation and Refund Handling
Desisyon 3: Ang mga bayarin sa Shopify ay hindi isang solong linya ng item.
Three distinct fee types appear in Shopify payouts. Collapsing them into one “Shopify Fees” account loses meaningful visibility into where margin is going:
BAYARIN SA SUBSCRIPTION
Fixed
$29–$399/buwan na bayarin sa platform; hindi nauugnay sa dami ng transaksyon
BAYARIN SA TRANSAKSAYON
0.5–2%
Siningil lamang kung HINDI gumagamit ng Shopify Payments; nawawala kapag pinalitan
BAYARIN SA PAGPROSESO
2.9% + $0.30
Bawat transaksyon; pinakamalaking kategorya ng bayarin; direktang binabawasan ang gross margin
Isang malinis na istraktura ng bayarin sa QBO:
- 6100 — Shopify Subscription
- 6110 — Shopify Transaction Fees
- 6120 — Payment Processing Fees
Ang paglalagay sa lahat ng tatlo sa isang account ay kung paano nagmamana ang mga CPA ng mga libro kung saan ang 3% na pagguho ng margin mula sa pagproseso ng pagbabayad ay hindi nakikita — hanggang sa may magtanong kung bakit mas mababa ang gross margin kaysa sa inaasahan ng modelo ng pagpepresyo. Ang paghihiwalay sa mga ito ay walang gastos sa pag-setup at nakakatipid ng oras sa bawat pagsusuri pagkatapos.
Desisyon 4: Ang mga refund ay nagpo-post laban sa payout, hindi sa orihinal na order.
Kapag nagbalik ang isang customer ng isang order, ibinabawas ng Shopify ang refund mula sa susunod na magagamit na payout. Hindi ito lumilikha ng hiwalay na transaksyon sa bangko — binabawasan nito ang netong halaga ng disbursement. Ang contra-revenue account para sa Returns and Allowances ay dapat tumanggap ng entry ng refund sa oras ng payout na naglalaman nito, hindi sa oras na naproseso ang return.
Kung ang isang return ay naproseso noong Marso ngunit ang refund ay lumitaw sa payout ng Abril, ang contra-revenue entry ay kabilang sa Abril. Ang pag-post nito sa Marso ay lumilikha ng period mismatch: bumababa ang kita ng Marso, ngunit ang bank reconciliation ng Marso ay hindi pa rin nagbabalanse dahil ang epekto sa cash ay hindi nangyari noong Marso. Ang mga period mismatch ay nagpapatong-patong buwan-buwan hanggang sa ang mga libro ay mangailangan ng kumpletong paglilinis upang maunravel.
Decision 5: Sales Tax as a Liability From Day One
Sa karamihan ng mga estado sa US, ang Shopify ay isang marketplace facilitator — nangangahulugan na kinokolekta ng Shopify ang sales tax mula sa mga customer at direktang ipinapadala ito sa mga awtoridad sa buwis ng estado. Hindi kailanman nahahawakan ng merchant ang perang iyon. Hindi utang ng merchant ang buwis; binayaran na ito ng Shopify.
Ang sales tax na kinokolekta ng Shopify ay lumilitaw sa mga kabuuang halaga ng order sa dashboard ng Shopify, ngunit hindi ito dumadaloy sa bank account ng merchant at hindi kita ng merchant. Kung ang iyong income account ay nagtatala ng mga kabuuang halaga ng order kasama ang buwis, pinapalaki mo ang kita at bumubuo ng phantom liability sa balance sheet.
Ang tamang setup ay nangangailangan ng dalawang liability account:
- Sales Tax Payable — para sa buwis na kinokolekta at ipinapadala ng merchant nang direkta (mga non-marketplace channel tulad ng wholesale, o mga estado kung saan hindi naaangkop ang mga patakaran ng marketplace facilitator)
- Marketplace Tax Withheld (o “Shopify Tax Collected”) — para sa buwis na kinokolekta at ipinapadala ng Shopify sa ngalan ng merchant; nagiging zero pagkatapos ng payout cycle dahil ang pananagutan ay nawawala sa pamamagitan ng pagpapadala ng Shopify, hindi ng merchant
Kung ang iyong kliyente ay nagbebenta sa maraming channel — Shopify, direktang website, wholesale — magkakaiba ang pagtrato sa buwis ayon sa channel. Ang isang solong account na “Sales Tax Payable” ay hindi makikilala ang pagkakaiba sa pagitan ng buwis na hinahawakan ng Shopify at buwis na hinahawakan ng merchant, at mahalaga ang pagkakaibang iyon sa oras ng pagbubuwis.
In LedgerPort, Decision 5 ships as a setting rather than a monthly discipline. The Taxes tab of the sync configuration has a Line Item Tax option: platform-collected tax posts as its own line on the QuickBooks transaction, routed to a liability account you pick from a dropdown. “Tax is a liability, not income” stops being a rule someone has to remember and becomes the only way the sync can post.

The same tab holds the detail nobody explains: tax rounding. The platform’s tax math and QuickBooks’ tax math disagree by a cent or two on some orders, and without a home for those cents the books drift a few cents per order into an unreconcilable smear. The Tax Rounding setting adds a rounding-adjustment line item that absorbs the difference — which is why the books tie to the cent instead of “close enough.” Close enough doesn’t close.
The Chart of Accounts That Closes in One Day
Kapag ang lahat ng limang desisyon ay nasa lugar na, ang pagtatapos ng buwan ay ganito: ang bawat Shopify payout ay dumadaan sa clearing account. Ang kabuuang benta ay pumasok. Ang mga bayarin sa pagproseso ng pagbabayad, mga refund, at marketplace tax ay lumabas. Ang net bank deposit ay nai-post. Ang clearing account ay nagsasara sa zero. Ang bank reconciliation ay nagbabalanse — sa pamamagitan ng pagkakabuo, hindi sa pamamagitan ng imbestigasyon.
Iyon ay isang 20-minutong proseso. Ang pagkakaiba ay hindi ang dami ng trabaho — ito ay kung ang chart of accounts ay idinisenyo upang matanggap nang tama ang data.
Ang paunang pamumuhunan ay totoo. Ang tamang pagbuo ng arkitekturang ito para sa isang bagong kliyente ay tumatagal ng dalawa hanggang tatlong oras sa unang pagkakataon — mas matagal kaysa sa pagkopya ng isang generic na template. Ngunit ang alternatibo ay ang paggastos ng mga oras na iyon, o higit pa, bawat buwan, nang walang hanggan.
Para sa mga CPA na namamahala ng lima o sampung kliyente ng Shopify, ang arkitekturang ito ang pundasyon ng isang paulit-ulit na template. Ang parehong limang desisyon ay nalalapat sa bawat tindahan ng Shopify sa QBO. Buuin ito nang tama nang isang beses, at inilalapat mo ito sa buong praktis — hindi muling pag-aaralan ang problema sa bawat bagong pakikipag-ugnayan.
One more decision: the sync method that will post into these accounts
A chart of accounts isn’t finished when the accounts exist. It’s finished when you’ve decided what kind of transaction will post into them. In a sync tool, that decision has a name: the sync method. In LedgerPort it’s one dropdown — Sync Config » Orders » Sync Method, reached from the left sidebar of the app — with five options, and each option asks something different of the chart you just built.

- Sales Receipt — one receipt per order, with line items, taxes, shipping, and discounts, posting into income and the clearing account. No receivables required.
- Invoice — two records per order: the Invoice when it’s placed, a Payment when Shopify marks it paid. Choose this and your chart needs open receivables.
- Estimate — a non-posted record; it touches nothing until converted. The docs are blunt about how rare this is: “If you are unsure whether you need it, you probably do not.”
- Daily Summary — one journal entry per day aggregating all of that day’s orders. Selecting it exposes account-mapping fields right below the dropdown.
- Tag-Based — Shopify order tags route orders to different transaction types (
wholesale→ Invoice,retail→ Sales Receipt,do-not-sync→ skipped), so a mixed retail/wholesale store may need both receivables and receipt-side accounts.
Look closely at what Daily Summary does: the moment you select it, the software asks you to name the accounts its daily journal entry will post to. Those mapping fields are this article’s five decisions, rendered as form fields — gross revenue, clearing, fees, refunds, tax. If you built the chart above, you fill them in one pass. If you didn’t, this is the screen where that becomes obvious.

The decision logic is short. Standard DTC store, paid at checkout: Sales Receipt — the docs’ own default, “the right starting point for most stores.” B2B or payment terms: Invoice. High volume — roughly 100 or more orders a day — with an accountant who works from totals: Daily Summary, which is how a 3,000-order month becomes ~30 journal entries instead of 3,000 records.
And the rule that makes this decision safe: changing the sync method never rewrites orders that have already synced. It applies going forward only. Pick a method, watch a payout cycle post through the clearing account, and revisit if the shape is wrong — the books you’ve already closed stay closed.
Awtomatikong hinahawakan ng LedgerPort ang pagmamapa — ang sync ay nagpo-post ng kabuuang benta, mga item ng bayarin, mga refund, at buwis na nakolekta ng marketplace sa kanilang tamang mga account sa bawat payout cycle, kaya ang clearing account ay nagsasara nang walang manu-manong interbensyon. Kailangan pa ring maayos ang pagkakaayos ng chart of accounts upang matanggap ang data na iyon, ngunit ang limang desisyon sa itaas ay nagbibigay sa iyo ng eksaktong istraktura na iyon.
Kung nagse-set up ka ng bagong kliyente ng Shopify sa QBO — o nagmamana ng mga libro na hindi nagre-reconcile — ito ang limang lugar na unang titingnan. Kung alinman sa mga desisyon sa itaas ay hindi nagawa, doon nagmumula ang apat na oras na reconciliation. Ang pagkuha ng tamang chart of accounts ay pundasyon din para sa pagkakaroon ng mga librong handa sa buwis kapag hiningi ito ng iyong CPA — ang parehong limang desisyon na nagpapadali sa pagtatapos ng buwan ay nagpapadali sa pagtatapos ng taon. Tingnan kung paano hinahawakan ng LedgerPort ang pagmamapa sa isang multi-client practice sa ledgerport.com/cpas, o magsimula nang libre.
