To record a cost of goods sold journal entry, debit Cost of Goods Sold and credit Inventory for the same amount — the supplier cost of the units that sold. That single entry moves the cost off your balance sheet (where inventory is an asset) and onto your income statement (where COGS is an expense), which is what lets you calculate gross profit. For a print-on-demand store, the twist is that you rarely hold inventory, so the credit side often lands in Accounts Payable or Cash instead — and the cost is unrecoverable the moment the item ships.

The generic guides you find for this keyword walk through a warehouse doing half a million dollars in inventory. That is not your store. You run a Shopify shop, fulfill through Printify or Printful, and want the entry that matches how money actually moves when an order comes in. This is that version — with real operating numbers and the profit math the other pages skip.

The core entry: debit COGS, credit inventory

A cost of goods sold journal entry has exactly two lines. You debit the Cost of Goods Sold account and credit the Inventory account for the cost of the units sold. COGS is an expense account, so a debit increases it; Inventory is an asset account, so a credit decreases it.

Account Debit Credit
Cost of Goods Sold $16.70
Inventory $16.70

That is the textbook shape. The number is the cost of what sold — never the retail price the customer paid. The sale itself gets recorded separately (debit Cash or Accounts Receivable, credit Revenue). The COGS entry is the matching cost side, so revenue and its cost land in the same period. If you want the deeper mechanics of when and how to post it, we cover that in recording cost of goods sold.

The print-on-demand version most guides get wrong

Here is where standard advice breaks for an operating POD store. The classic entry assumes you bought inventory, held it as an asset, and now release its cost as it sells. You do not hold inventory. Printify or Printful only charges you after a customer orders, so there is no inventory asset sitting on your books to credit.

So the credit side changes. When the supplier bills you for a printed order, the realistic entry is a debit to Cost of Goods Sold and a credit to Accounts Payable (or Cash, if you pay on the spot):

Account Debit Credit
Cost of Goods Sold $16.70
Accounts Payable $16.70

Functionally you are recognizing the cost at the same moment you recognize the sale — a perpetual approach without a warehouse. If you do batch it monthly instead, you post one summary entry at period-end using the total supplier charges for the month. That periodic style is simpler but hides your true margin between reports.

A worked cost of goods sold journal entry example

Say you run an operating store doing 340 orders a month at a $31 average order value, with $2,800 in monthly Meta spend. A customer buys one shirt for $31. Your supplier charges $12.50 for the product and $4.20 to print and ship it. Your all-in COGS on that order is:

$12.50 product + $4.20 fulfillment = $16.70

The per-order entry is a debit to COGS of $16.70 and a credit to Accounts Payable of $16.70. Your gross profit on the sale is what is left after that cost:

$31.00 revenue − $16.70 COGS = $14.30 gross profit

Roll it up for the month across all 340 orders:

Line Monthly amount
Revenue (340 × $31.00) $10,540
Cost of goods sold (340 × $16.70) $5,678
Gross profit $4,862

So the month-end periodic entry, if you batch it, is a single debit to Cost of Goods Sold of $5,678 and a credit to Accounts Payable of $5,678. That is your cost of goods sold journal entry example at real operating scale — not a hypothetical $500,000 warehouse.

What does NOT belong in the COGS entry

This is the mistake that quietly wrecks margin math. Your Meta ad spend and your Shopify payment processing fees are not cost of goods sold. They are operating expenses, and they sit below the gross-profit line — not inside the COGS journal entry.

Keep them out of the entry above. In the same example, the $2,800 in monthly Meta spend works out to about $8.24 per order if every order came from ads, and payment fees run roughly $1.20 on a $31 order. Those belong in advertising and payment-fee expense accounts, respectively. If you fold them into COGS, your gross margin looks worse than it is and your operating picture disappears. The dividing line matters enough that we break it down in COGS vs operating expenses, and it is worth understanding how cost of sales differs from cost of goods sold before you set up your chart of accounts.

Why the entry matters more for POD than for anyone else

For a store that stocks inventory, a refund is a partial loss — the item usually comes back and re-enters stock, so the COGS entry gets reversed. For POD, there is no restock. The shirt was printed for that one order and cannot be resold.

That means your COGS entry, once posted, is permanent. If the customer refunds or files a chargeback, you reverse the revenue but the $16.70 cost stays gone. Worse, on a lost dispute you also eat the Shopify chargeback fee — $15 per chargeback for US merchants, deducted from your next payout — on top of the sunk product cost. The accounting entry looks tidy; the cash reality is that a single lost dispute on a $31 order can cost roughly twice the order value once you add back the unrecoverable COGS, the fee, and the ad spend that acquired the customer.

This is why getting the COGS entry right is not busywork. It is the first line of every profit calculation you make, and for POD it is the line you can never take back. The broader money mechanics — chargebacks, refunds, reprints, and how they hit your books — live in our ecommerce ops economics hub.

Perpetual vs periodic: which fits your store

You have two timing choices for posting the entry:

  • Perpetual — record COGS with every single order, as the supplier charges you. This keeps gross profit accurate in real time and matches how POD billing actually works. It is more entries, but it is the honest picture.
  • Periodic — record one summary COGS entry at month-end, using total supplier charges for the period. Fewer entries, but you are blind to margin between closes.

Most operating POD stores are better served by the perpetual approach, because your supplier already itemizes the cost per order — the data is handed to you. The only real cost is the bookkeeping labor of posting it, which is exactly the kind of thing worth automating.

Let Victor keep the numbers straight

Manually reconciling supplier charges against Shopify orders to get COGS right is the tax you pay for accurate margin. PodVector AI's AI employee, Victor, removes it. Victor connects to Shopify, Printify, Printful, and Gelato, pulls the real supplier cost on every order, and computes your true per-order profit — product cost, fulfillment, fees, and ad spend from Meta Ads and Google Ads, all netted out. He delivers the reports to your Google Drive, and every write action is approval-gated, so nothing happens without your sign-off. Victor is not a dashboard you have to check; he is the employee who does the reconciliation. You can put Victor to work on your store and stop hand-posting COGS.

FAQs

Is the cost of goods sold journal entry a debit or a credit?

Both — every journal entry has two sides. Cost of Goods Sold gets the debit (it is an expense account, and debits increase expenses), while the offsetting credit reduces Inventory. For a POD store that holds no stock, the credit typically goes to Accounts Payable or Cash instead of Inventory, because you are paying the supplier for that specific order rather than releasing pre-bought stock.

Do I record COGS at the price the customer paid?

No. COGS is always the cost of the goods, never the retail price. In the example above, the customer paid $31 but the COGS entry is $16.70 — the supplier's product and fulfillment charge. The $31 is recorded separately as revenue. Recording the retail price as COGS would zero out your gross profit and misstate your income statement.

Should shipping be included in the COGS journal entry?

For POD, the fulfillment charge your supplier bills to print and ship the item is generally part of COGS, because it is a direct cost of producing that specific order — that is why the example uses $12.50 product plus $4.20 fulfillment. Outbound marketing shipping promotions or free-shipping subsidies you choose to eat are closer to operating expenses. When in doubt, tie the cost to whether the order could exist without it.

How often should I post the entry?

Perpetually — once per order — if you want accurate margin in real time, which most operating stores do. Your supplier already gives you the per-order cost, so the data exists. Periodic (one summary entry at month-end) is acceptable if you only review profit monthly, but it hides margin drift between closes and makes a bad week invisible until it is over.

What happens to the COGS entry when a POD order is refunded?

You reverse the revenue, but the COGS stays on your books because the printed item cannot be restocked — the cost is unrecoverable. This is the opposite of a stocked-inventory business, where a returned item re-enters inventory and the COGS entry is reversed. It is the single biggest reason POD margins need tighter tracking than the generic accounting guides assume.