What posts to your ledger
Shipping below zero is an accounting event before it is anything else. The goods left, so the sale is real and its cost has to be recognised — but no stock was relieved, because there was none. Inventory debt exists to make those two facts sit together honestly.
It does that with two entries and one account. The first entry books the cost when the goods leave, at an estimate. The second books the truth when the stock arrives. In between, the estimate sits in the Inventory Debt Clearing account.
The Inventory Debt Clearing account
Map it under Accounting → Settings → Nominal Code Mappings, in the Default Nominal Code Mappings list. Its own description says what it is for:
Liability holding the cost of stock that shipped before you owned it. Required before inventory debt can be switched on: a shipment below zero credits this account instead of Inventory, so the asset never carries a credit balance, and the next receipt relieves it. Mirrors Goods Received Not Invoiced on the sales side.
Two things follow from that sentence, and they are the whole design:
- A debt unit never credits Inventory. There was no stock to relieve. If the shipment credited Inventory anyway, the asset would fall below zero and stay there across a period end — which is exactly the mess that made businesses refuse to ship below zero in the first place.
- The clearing account is required. Until it is mapped you cannot set the policy to anything other than Block. See turn on shipping below zero.
Two rows below it sits Inventory Debt Variance, which is optional:
Absorbs the difference between the cost estimated when stock shipped on debt and what it actually cost when it arrived, dated to the receipt. Leave unmapped to post the difference to the product's own Cost of Goods Sold account.
Leaving it unmapped is the right answer for most businesses — the correction belongs with the cost of sale it corrects. Map it only when finance wants that difference on a line of its own.
What books when the goods leave
The shipment's cost goes into an entry of type Sales Order Fulfillment — the same kind of entry any shipment posts. Open that entry and its GL Impact shows a single debit to cost of sale and a credit split by where the units came from:
| Account | Amount | |
|---|---|---|
| Debit | Cost of Goods Sold | the whole line's cost |
| Credit | Inventory | the part that came off the shelf |
| Credit | Inventory Debt Clearing | the part that had nothing behind it |
A shipment of nine units where six were on the shelf and three were not, at an estimate of $18.40, debits $165.60 to cost of sale and credits $110.40 to Inventory and $55.20 to clearing. The two credits always add back to the single debit, to the cent.
Here is a smaller one on screen — six units shipped, four off the shelf at $7.10 and two owed at the same estimate. Cost of sale takes the whole $42.60, and the credit lands in two different accounts: the inventory account for the four real units, the clearing account for the two that had nothing behind them.

The entry's Effective date follows however your ledger is set to batch entries — on monthly batching it carries the month-end date and its description names the month, rather than the shipment's own date.
A shipment that also draws on supplier-owned stock splits the credit three ways in the same entry — owned, consigned and debt each go to their own account. A shipment fully covered by stock never touches the clearing account at all.
The clearing figure is anchored to what the claim itself recorded, not to a share of the line total. That matters when one order line ships across two shipments at different times: taking a proportion of the line would leave a few cents in the clearing account with nothing to relieve them, permanently.
This entry is never edited afterwards. Not when the stock arrives, not when the real cost turns out to be different, not when the claim closes.
What books when the stock arrives
When a receipt repays the claim, a second entry posts, of type Inventory Debt Settlement. Its Reference names both the claim it repaid and the product — Inventory debt settlement for claim #8, followed by the SKU. It has three lines:
| Account | Line reads | What it is | |
|---|---|---|---|
| Debit | Inventory Debt Clearing | Inventory debt clearing relieved | releasing what the shipment put aside |
| Debit or credit | Cost of Goods Sold | Inventory debt estimate-to-actual variance | the gap between the estimate and the truth |
| Credit | Inventory | Inventory consumed settling debt | the real stock the receipt spent repaying it |
A worked example from the same claim: two units were owed at an estimate of $1.85 and the receipt that repaid them cost $2.05 each. The entry relieves the $3.70 that was set aside, credits Inventory the $4.10 the stock actually cost, and sends the $0.40 difference to cost of sale. It balances at $4.10.
Four things about this entry are worth knowing before you close a month over it:
- It is dated the day the stock arrived, never backdated to the shipment. So the correction lands in the period the goods came in, and the month you already signed off is untouched. If that arrival date itself falls inside a locked period, your ledger's usual rules for a locked date apply.
- It appears a moment after the receipt, not in the same instant. If you go looking immediately, give it a few seconds.
- An estimate that was exactly right posts no difference line at all — the entry has two lines rather than three. A difference smaller than one cent posts nothing either.
- A claim repaid from two deliveries produces two entries, each with its own date and its own real cost. The last one takes the rounding remainder, so the clearing account returns to exactly zero.
Two exports carry these entries out of the app, and between them they are how the debt postings reach a spreadsheet:
- The entry's own Export, on the GL Impact panel. This is the only place the lines leave the app one by one — a row for each, with its account, the description that names what the line is doing (Inventory debt clearing relieved, Inventory debt estimate-to-actual variance, Inventory consumed settling debt) and its debit or credit, closing on the totals.
- Export in the header of Accounting → Transactions, for the entries themselves rather than their lines. Its Type column is where debt identifies itself: Inventory Debt Settlement for a repayment, and Inventory Debt Recognised for the opening entry described under debt that came from a sales channel. Filter or search the list first — the export follows what you have on screen — then choose CSV or XLSX (Excel) and All records or Current page.
Reading the exposure
The Inventory Debt Clearing card at the top of Inventory → Fulfillment Debt is the money view of everything outstanding. It shows the balance, with what produced it underneath:
- posted is what the shipments booked into the account. A claim's posted amount is fixed at shipment and never changes.
- relieved is how much has been released by repayments so far. It grows as the claim is repaid and reaches the posted amount exactly when the claim closes.
- The headline figure is the difference — what is still sitting in the account.
Beside it, Settled this month reports the units repaid in the period and the variance those repayments sent to cost of sale, which is the other half of the story: what you have already corrected.

The same money view runs down to the individual claim. On the claims table, a part-repaid claim's Clearing column shows what remains with relieved … beneath it.
Why the balance is not units × estimate
Because money and units diverge the moment a claim is repaid in slices, and the number that has to agree with your balance sheet is the money one.
Three units estimated at $0.3333 post $1.00 to the account. Repaid one at a time they release $0.33, $0.33 and $0.34 — the last repayment takes the remainder so the account lands on zero. Multiply units by the estimate at any point during that and you get a different answer from the account. Every figure inventory debt quotes in money — the report card, the month-end close check, the valuation report's Clearing column — is posted-less-relieved for that reason.
Repayment adds records, it never edits them
Nothing about repayment reaches back. The original shipment entry stays as posted, on its own date, at the estimate. The debt itself is never re-pointed at the stock that eventually arrived and never re-dated. Repayment writes a new, dated pair — the debt retired, and the real stock consumed — both carrying the arrival's date.
That is what keeps history answerable. The total owed as of any past date is still exactly what was owed then, and your stock ledger as of that date is still what the receipts said. Re-pointing a January shortfall at a February delivery would have driven January's valuation negative in hindsight, months after anyone looked at it.
There is no way to write debt off
There is no button that clears a claim without stock, and that is deliberate.
A write-off in the accounting sense would send the clearing balance to a loss account and leave your stock alone — an admission that the goods are gone and nobody is ever going to deliver replacements. That is a real thing a business might want, and it has not been built.
What is emphatically not a write-off is asserting the units never left. That reverses the shipment's effect on stock and hands the units back to your available quantity for goods that are already with a customer — on a three-unit claim, available stock goes from zero to three for nothing. No operator-facing action does this, and none should.
So there are two honest ways to clear a claim, and both put something real behind it:
- A receipt — the stock arrives and repays it. See how debt repays itself.
- A catch-up stock take — the goods were on the shelf all along and the count was wrong. Finalising the count repays the claim from the units it finds. See Clear debt no delivery will repay.
Debt that came from a sales channel
A claim raised from a shipment your sales channel had already made behaves the same way from repayment onward, with one difference at the start.
Where the claim was created alongside a shipment SKU.io recorded, the shipment's own entry has already recognised the cost, and nothing extra posts — posting again would count the same cost twice. Where a claim is created for channel activity that SKU.io never recorded as a shipment, the cost has never been recognised at all, so the claim posts its own opening entry: cost of sale debited, the clearing account credited, exactly as a shipment would have done.
That opening entry is dated when SKU.io recognises the cost, not when the goods left. The claim still ages from the day the channel shipped, so the report tells the truth about how long you have owed the stock, but no cost is ever pushed back into a month that is already closed.
Next steps
- What a debt shipment costs — where the estimate comes from.
- How debt repays itself — which arrivals settle a claim.
- Debt on your reports — valuation, profit and availability.
- Close a month with debt outstanding — what the close check reads.
- Turn on shipping below zero — mapping the clearing account.