SellerFolio · Guide

Using Expenses

Expenses is the ledger for the costs no order pays for — mailers, software, the table at a sourcing trip. Nothing here comes from TikTok; every row is one somebody entered or filed from a receipt. It has two tabs: the Ledger, where the money is recorded, and Receipts, where documents arrive and are turned into rows. This walks through both — about fifteen minutes.

What Expenses is for

One question per tab, and one destination for the total:

Everything recorded here becomes the Operating expenses line on Finance — Part 3 is the boundary between the two screens, and the one part worth reading even if you never open this tab yourself.

Who can see it Expenses needs permission to view operating expenses, which in turn needs permission to see money at all — so anyone whose figures are masked elsewhere in the app cannot reach this screen or its API. Adding, editing, deleting, uploading and filing all need the separate Create & edit expenses permission. Reading is not editing: a bookkeeper can be given one without the other.
One clock here, and it is the one you type

Finance juggles three dates because TikTok's money arrives on three different clocks. An expense has only one: the date you put on it — the day the money left. That is deliberate. August's receipts get entered in September, and every window filter in this feature uses the spent date, never the date the row was created.

It is a calendar day, not a moment. An expense dated the 1st belongs to the 1st for everyone looking at it, wherever they are.

Part 1

The ledger

Filters, a total, and one table that both shows your expenses and takes new ones. There is no "add expense" dialog anywhere on this screen, and that is on purpose.

01

The filter row

Above the cards: a from and to date, a category, a show picker, and a search box. Both dates include the day you name — an expense dated on your To date is in. The show picker starts on All shows and takes as many as you like. Search matches the vendor name, the description, and the internal notes field on the record.

These filter the Ledger tab only. They do not follow you to Receipts, and they do not change anything on Finance.

02

Totals, and the breakdown underneath it

The Totals card shows one figure — everything matching the current filter — and under it the same money split by category, largest first. It is the same arithmetic Finance uses for its operating-expenses breakdown, done the same way, so the two screens can be compared line by line rather than approximately.

The breakdown always adds to the total Both are accumulated in whole cents rather than as decimals, so the listed categories sum to the headline exactly. If they ever disagree on your screen, that is a bug worth reporting, not a rounding fact of life.
03

The last row of the table is where you add

The empty row at the bottom of All expenses is the entry form. Fill it and press Enter — from the date, the amount or the description — and the row is written and the form clears. Only the date carries over: a batch of receipts entered in one sitting is nearly always for the same day, and retyping it every time is the friction this row exists to remove. Focus jumps back to Vendor, the next field after the date that stayed put, so a second expense is a straight run of keystrokes.

Date and amount are the only required fields. An amount must be more than $0.00 and have at most two decimal places; anything else is refused with a sentence rather than a code.

On a phone it moves, it does not change Eight columns do not fit a phone, and the two that fall off the edge are Description and the Add button itself — so below tablet width the same fields become a New expense card above the table. Same fields, same validation, same Enter-to-add; only the axis changes.
04

Fixing a row, and deleting one

Edit turns that row's cells into inputs in place — no dialog, same as adding. Enter or Save commits it; Cancel abandons it. Delete asks for a confirm on the row itself before anything happens. Only one row is ever in a special state: starting an edit clears a pending delete elsewhere, and starting a delete closes an open edit.

Deleting an expense orphans its receipt The receipt document is not deleted with the expense, but it does not come back to the inbox either — it stops being attached to anything, and this screen has no view that lists it again. If a row is wrong, prefer editing it. Delete is for a row that should never have existed.
05

The paperclip column

A row with filed receipts shows 📎 and a count. That is the at-a-glance answer to "which of these can I substantiate". Clicking it opens that expense's most recently received receipt. The count is the number filed against that one expense; an expense can hold up to ten.

There is no way to attach a document from this side — receipts are filed from the Receipts tab, which is where the document is on screen while you decide.

Part 2

Categories and vendors

Both are optional, both are yours, and neither is ever deleted once it has been used.

06

Uncategorised is a real answer

Category is deliberately not required. Forcing one at the moment of entry makes people invent a category to get past the field, and an invented category is worse than none. A blank one appears in the breakdown as Uncategorised — visible on this screen and on Finance, which is the honest prompt to come back and fix it.

07

The category drawer

Manage categories at the foot of the table opens it; so does + New category… at the bottom of any category picker — and a category you create that way lands selected on the very row you were filling in, so you do not have to pick it twice.

Inside there is a starter set of chips for a live-selling operation. They are offered, never created for you: a workspace that sprouts ten categories nobody asked for then needs nine of them archived. A chip you already have is shown ticked and disabled, matched loosely enough that "packaging" blocks the "Packaging" chip — two spellings of one category would split a line of your P&L in two.

Categories can be renamed and archived, never deleted. A category in use is tagged in use, and that tag is the reason there is no delete: those rows still label spending history. An archived category disappears from the pickers for new work but stays on every expense it already labels — and an expense being edited still shows its own archived category, marked as such, so saving cannot silently strip it.

08

Vendors: typing a name is a legal answer

The Vendor field is a picker with an escape hatch, not a required record. A name that was typed before vendors existed, or read off a receipt, stays selectable as itself and is labelled not saved as a vendor. Nothing is auto-promoted: a name that matches no managed vendor is left as free text, because auto-creating on first sight would turn every typo and every one-off corner shop into a permanent picker entry.

09

Promoting a vendor, and what changes when you do

+ New vendor… in the picker (or Add a vendor at the foot of the table) opens a small form: name, contact, website, a default category, and notes. Three things follow from having one:

  • Its default category is carried across. Choosing the vendor on a row that has no category yet fills the category in. A category you already chose is never overwritten — your explicit choice wins.
  • It adopts what you already typed. Creating a vendor claims every existing expense filed under that exact name, so a supplier you have been typing for months does not appear as a brand-new record with $0.00 against it.
  • Renaming it rewrites the past. The new spelling replaces the old one on every expense linked to that vendor, so search keeps finding them.

Vendors archive rather than delete, on the same reasoning as categories, and an archived vendor's name still matches when a receipt arrives under it — the spend is still that vendor's, and refusing the link would detach it from its own history.

Vendor and name move as one unit Clearing the vendor on a row clears both the link and the name. If you meant to keep the name and only drop the link, retype the name.
Part 3

Where these numbers go

This ledger is the only source of Finance's operating costs. The boundary is worth knowing in both directions.

10

Finance's operating stage

On Finance, the stage below merchandise is Operating, net. Open it and you get two lines: Operating expenses — this ledger, broken down by your own categories, largest first — and Platform adjustments, which is TikTok money belonging to no order. Only the first comes from this screen.

The stage is named net because adjustments can be an inflow. A period where TikTok paid back more than you recorded in expenses reads as Operating, net gain — that is the platform's doing, not a negative expense.

Expenses are dated by your date, the rest of Finance by TikTok's Finance windows orders by when they were placed and TikTok's postings by when they were posted. Your expenses are windowed by the date you typed. That is why entering August's receipts in September changes August's operating costs and not September's — and why an expense entered late changes a month you may already have looked at.
11

The show tag, and the one trap in it

Every expense can be tagged to a show, and No show is the deliberate default — most operating costs are not show-specific. Tag the ring light you bought for one broadcast; do not tag the software subscription.

Filtering a report by show drops untagged expenses entirely A show filter narrows the expense window rather than reallocating it. Untagged costs belong to the business, so they are not spread across shows and they do not appear at all in a show-filtered view. A per-show operating total is therefore only the costs you tagged, never your whole overhead divided up.
12

Rows you did not type

One other thing writes into this ledger: a stock write-off on Inventory. Adjusting a bin down for damage, loss or a sample, with the booking box ticked, creates an expense here for what those units cost — described as Shrinkage — bin labelreason, with no vendor.

A miscount books nothing, and that is not a choice you can override: the money you paid did not change, so no loss occurred — the bin simply holds fewer units than recorded, which is a costing problem rather than an expense. Nothing is booked for a bin with no cost on it either, and finding extra units never books a gain.

One quirk to know: a row you type is dated to a plain calendar day, while a shrinkage row carries the exact moment the adjustment was made. On a date filter that can put it just outside a range ending on its own date.

Undo it where it happened Undoing the stock adjustment removes the expense with it. Deleting the expense here leaves the stock movement standing — the goods really did move, whether or not you want the loss in your P&L.
The other direction: a bin's landed costs never post here Freight, duties and prep on a purchase bin are picked from this same category list, but they never post a row here. They add to what a unit cost on Inventory, and reach your books as cost of goods sold when that unit sells — never as an operating expense. Sharing a category list is a convenience for typing; it does not merge the two ledgers.
Part 4

Receipts: getting them in

Two ways: forward them, or put them in by hand. Both land in the same queue.

13

The forwarding address, and the two things that must be true

Each workspace has its own private address of the form receipts+<your token>@…. Anything forwarded to it becomes a receipt in the queue below — attachments if there are any, otherwise the email body itself, which is what most vendor receipts actually are.

The strip is honest about whether that works yet, because two independent things have to be in place and neither implies the other: an MX record on the receipts domain decides whether mail can be delivered at all, and a webhook signing secret on the server decides whether we accept the delivery. While either is outstanding the strip reads Inactive, opens a numbered checklist naming exactly what is missing, and disables the Copy button. That is deliberate: handing out an address that silently swallows every receipt sent to it is worse than showing none — you would forward a month of them and find out at tax time.

If the strip says Inactive, forwarding is not live The feature is built and waiting on configuration, not broken. The two steps are an operator's job, not a seller's — the checklist is there so whoever reads the screen knows which one is outstanding. Until it says Receiving, add receipts by hand.
A third state: "we couldn't check" The DNS row can show ? rather than a tick or a number. That means the server could not look the record up from where it sits — not that the record is missing. The address still works if everything else is in place; forward one receipt to confirm it arrives.
14

Rotating the address

Rotate…, in the strip's menu, issues a new token and address. It asks for a confirm because the old address stops accepting mail immediately — anything already forwarded to it, or any vendor you set up to send there, will need updating. Use it if the address has leaked somewhere you would rather it had not.

15

Drop, paste, or choose

Add receipts… takes PNG, JPEG, WEBP and PDF, up to 10 MB each. You can drop files anywhere on the page, choose a whole folder at once, or paste a screenshot straight onto the screen — all three are how receipts actually reach a computer. Drag a file over the window and the whole page becomes the target; there is no box to aim at, except on an empty inbox, where an idle screen can afford one. Each file is handled on its own, so one bad file in a batch of twenty does not abandon the other nineteen; it tells you which one and why.

The same receipt twice is one receipt Duplicates are detected on the file's contents, not its name. Forwarding an invoice you already uploaded is caught and told, rather than filed twice.
Part 5

Working the queue

The queue, the document and the form are on screen at once and never go away. A sitting is a run of keystrokes, not a sequence of dialogs.

16

The rail on the left

Every unfiled receipt, newest first, each showing what we know: vendor, date, amount, how it arrived, and how well it was read — a coloured dot with the word beside it (Confident, Partly read, Reading, Can't read), so the colour never carries the meaning alone and you do not have to hover a row to find the ones that need you. The two chips above the list filter on exactly that: Ready is the confident set, Needs you is everything else.

A row that says "no date" means no date was read The form defaults an unread date to today so you have something to correct. The queue refuses to repeat that: a row showing a date is a date that came off the document or one you typed, never a default dressed up as a reading.
17

The form, and what the little marks mean

The document fills the middle of the screen; the filing form sits to its right, opened on whatever was read. Two marks appear next to field labels:

  • AI — read off this document. Date, amount and vendor can carry it.
  • LAST — not read at all. It is the category this vendor's most recent categorised expense used, so a monthly supplier is not re-classified by hand every month.

The mark clears the moment you type in the field — including retyping the same value. What a model guessed and what you confirmed must never blur together on a screen whose output is your books.

Description and Show are never prefilled. No show is the default here for the same reason it is on the ledger.

18

The banners above the form

Whichever applies, in the receipt's own words:

  • Reading this receipt — the reading is still queued. You do not have to wait; fill it in and file.
  • We couldn't read this one — nothing legible was found. It files like any other once you type the fields, or archive it.
  • Only partly read — it names which of the date or the amount could not be made out, and marks that field in the form.
  • Already logged? — this looks like an expense you have already entered. One button attaches the receipt to it instead of creating a second row.
How "already logged" decides It needs the same vendor, the exact same amount, and a date within three days — a card date and a receipt date routinely differ by a day or two, while a week apart is a different trip to the same shop. Amount and date alone match unrelated purchases far too often, and a wrong attach hides a real expense rather than merely annoying you. It looks back over roughly the last four months of your ledger.
19

File, Attach, Archive

File & next creates the expense, attaches this receipt to it, and moves you to the receipt that will be next once this one leaves the queue — so you land on real work rather than bouncing back to the top of the list. The button stays greyed until both a date and an amount are present.

Attach opens a search over your whole ledger — not just the recent window the automatic match looks at — for when the expense exists but was not close enough to be spotted. Archive takes a receipt out of the queue without filing it: a duplicate, a delivery note, something that is not a receipt at all.

Archive is one-way from this screen An archived receipt is not deleted, but nothing in the app lists archived receipts again. If you are unsure whether it is a receipt, leave it in the queue.
20

The keyboard, and filing several at once

The point of the workbench is clearing a backlog without the mouse. Enter files the current receipt and moves on — it works from inside the fields too. J/K or the arrow keys move up and down the queue, A opens attach, X starts an archive, and Escape backs out of either.

Enter deliberately does not file while you are typing in the attach panel: someone searching there is looking for the expense this receipt belongs to, and filing on Enter would create the exact duplicate they opened the panel to avoid.

When more than one receipt was read confidently, the rail offers to file them all. It never does so blind: a sheet lists every one with the amount that will hit the ledger and a category you can still change, and anything you would rather look at yourself can be unticked. They are written one at a time, so a failure part-way is reportable as "six filed, one didn't" rather than an indeterminate pile.

Part 6

What the reading is, and what it is not

A receipt is read by a model. Nothing it reads becomes money on its own.

21

Suggestions, never entries

The model is asked for four things — vendor, the grand total actually charged, the transaction date, and the currency — and told in as many words never to guess: anything it cannot read comes back empty. An empty field is always safer than an invented one, because the only cost of an empty field is that you type it, while the cost of an invented amount is a wrong number in your books.

Read confidently requires both an amount and a date. A reading that claims confidence but is missing either is downgraded to partly read — the half you have to supply is what decides, not the model's own opinion of itself.

Nothing here writes an expense A reading only prefills a form. The worst case of a bad reading is a field you correct before filing — not a figure that lands in the P&L unnoticed.
22

When the reading appears — and when it does not

Reading is queued rather than done on arrival, so an email is never held open waiting for a model. The queue is drained about once a minute, a few receipts at a time. While the tab is open it re-asks every five seconds for about a minute and then stops rather than hammering the server forever — so a large batch can outlast the asking. If a dot is still amber after a couple of minutes, reload the page.

A file you upload yourself is not read On the current build, reading is queued only for receipts that arrive by email. A file you drop, paste or choose is stored, previewed and filed exactly like any other — but its dot stays grey, the fields open empty apart from today's date, and the confirmation message claiming we are reading it is overstating what happens. Type the three fields and file; it takes about as long as checking would have.
When

Something looks wrong

?

Finance's operating expenses do not match my Totals card

Check three things, in order: the date window (Finance's timeframe against your from/to), the show filter — a show-filtered report drops every untagged expense — and whether Finance's stage is showing net of platform adjustments, which are TikTok's money and never come from this ledger.

?

A receipt has been "Reading…" for ages

The page stops asking after about a minute; reload it. If it is still reading after that, the queue is genuinely stuck — and you can file the receipt by hand in the meantime, which is exactly what the banner invites you to do.

?

I forwarded a receipt and nothing arrived

Look at the address strip at the top of the Receipts tab first. If it says Inactive, nothing you forward will ever arrive and the checklist names the missing step. If it says Receiving, open the menu: a "DNS couldn't be checked" note there means delivery is plausible but unproven — that is the case where forwarding one receipt is the test.

?

The paperclip disappeared from a row

Almost always because the expense was deleted and re-entered. The receipt stayed attached to the row that no longer exists, and there is no view that lists it again. Edit rather than delete-and-retype when a receipt is attached.

Reference

Reference

The starter categories, what came from a model versus from you, the states a receipt can be in, the hard limits, and what this screen genuinely cannot do.

A

The starter categories

These ten are offered as chips in the category drawer — chosen for a live-selling operation rather than as a general chart of accounts. The app does not define them; the name is the definition, and you can rename or ignore any of them. The right-hand column is the plain reading, not a rule the software enforces.

ChipWhat people usually put in it
Shipping suppliesBoxes, mailers, tape, labels, dunnage — the consumables that leave with a parcel.
PackagingWhat the buyer sees: branded boxes, tissue, inserts, thank-you cards.
Software & subscriptionsRecurring tools — this app, design software, scheduling, storage.
Marketing & adsPaid promotion and anything bought to bring an audience in.
EquipmentLights, cameras, phones, rails, scales, printers.
Sourcing travelGetting to and from where you buy: mileage, fuel, tolls, a room, a table fee.
Contractors & helpPeople paid for a job rather than a wage — a packer for a busy week, an editor, a VA.
Bank & payment feesCard fees, transfer fees, currency conversion. Not TikTok's own fees — those never touch this ledger.
Office & adminThe unglamorous running costs: printing, filing, accountancy, licences.
Samples & giveawaysStock given away rather than sold — often written here by an Inventory adjustment rather than typed.
Two spellings of one category is the mistake to avoid "Packaging" and "packaging" are two different categories to the database and two separate lines on Finance. The chips are matched loosely enough to stop you creating the second one, but a name typed by hand is taken exactly as typed.
B

What was read, what was remembered, and what is yours

FieldWhere it comes fromHow it is marked
DateRead off the document. Falls back to today when nothing was read. AI only when it was genuinely read — never on the fallback.
AmountRead off the document — the grand total actually charged, not a subtotal, a line item or a balance forward. AI. Blank rather than guessed when unreadable.
VendorRead off the document, as a short merchant name. AI.
CategoryNot read. It is the category this vendor's most recent categorised expense used. LAST. Absent for a vendor with no categorised history — never a guess.
DescriptionAlways yours. Never prefilled.
ShowAlways yours. Defaults to No show.
CurrencyRead off the document and stored, but not shown on the form and not used anywhere. Every figure on this screen is treated as dollars.
ConfidenceDerived, not taken on trust: read confidently requires both an amount and a date to have been read. Anything else is only partly read. The dot in the queue.

Any mark clears as soon as you type in that field, including retyping the same value — a field you have looked at is your word, not the model's.

C

The states a receipt can be in

StateMeansWhere you see it
InboxArrived, not yet attached to an expense.The queue on the Receipts tab. This is the only list the app shows.
FiledAttached to an expense — either one it created, or one you attached it to.The 📎 count on that expense's ledger row.
ArchivedTaken out of the queue without filing. Kept, but not listed anywhere in the app.Nowhere.
Not read (grey)No reading exists for it. Every hand-uploaded file is in this state today.The dot in the queue.
Still readingQueued or in progress. You can file it anyway.The dot, plus a banner.
Couldn't readThe attempt ran and found nothing legible.The dot, plus a banner.
Only partly readSomething was read, but the date or the amount was not.The dot, a banner naming the gap, and a marked field.
Read confidentlyBoth amount and date were read. These are the ones bulk filing offers.The dot, and the count in the rail header.
D

Limits and rules

RuleValue
File types you can uploadPNG, JPEG, WEBP, PDF. HTML is accepted only when it arrives as a forwarded email body — never as an upload.
Maximum file size10 MB each. An oversized phone photo is refused with that reason, not a generic error.
Receipts per expense10.
DuplicatesDetected on the file's contents. The same invoice forwarded twice is one receipt.
AmountGreater than $0.00, at most two decimal places, below 999,999,999,999.99. A value that would round to zero is refused too.
Required to save an expenseA date and an amount. Everything else is optional.
Category and vendor namesUnique within your workspace, exactly as typed.
Email safetyA forwarded email body is displayed in a locked-down frame with no access to your session. SPF and DKIM results are recorded against the receipt, but the private address is what decides whether mail is accepted.
E

What this screen cannot see or do

Stated plainly so you do not go looking. None of these is an error message you will find in the app; they are simply absent.

Not hereWhat that means for you
Reading an uploaded file Only emailed receipts are queued for reading. Uploads are stored and filed by hand.
Any list of archived receipts Archive is out of sight for good, from the app's point of view. The document is kept, but nothing shows it to you.
Editing or archiving a vendor You can add a vendor and pick one, but the shipped screen has no way back into an existing vendor's record — including its total spent and last paid.
A notes field on an expense Search matches an expense's notes, and one can exist on the record, but this screen offers nowhere to type it. Use Description.
Attaching a receipt from the ledger Filing happens on the Receipts tab, where the document is in front of you.
Any import from a bank or card Nothing on this screen reads a statement or a feed. Every row is typed, filed from a receipt, or written by a stock write-off.
Recurring or scheduled expenses A monthly subscription is entered each month. The vendor's default category is what makes that quick.
Non-dollar amounts The currency read off a receipt is recorded but never applied. A receipt in another currency needs converting before you file it.
TikTok's own fees Referral fees, shipping labels and refund admin fees are never expenses here — they arrive from TikTok and live on Finance.
Inventory you bought to sell Stock is a purchase, not an expense: it becomes cost of goods when it sells. Recording a bin of merchandise here would double-count it.
Last

Habits worth keeping

01

Clear the queue before you read a profit figure

Unfiled receipts are costs that have not landed yet. A month that looks good with fifteen receipts sitting in the inbox has not been measured, only glimpsed.

02

Promote the vendors you pay every month

One record, one default category, and every future receipt from them opens on the right answer. It also collects everything you already typed under that name.

03

Watch Uncategorised in the Totals card

It is the one line that says a figure exists but nobody decided what it was. It is meant to be visible, and it is meant to shrink.

04

Date the expense, not the day you typed it

The date on the row is what puts the money in a month. Entering August's receipts in September is normal and correct — as long as the dates say August.

05

Edit rather than delete

A deleted expense takes its receipt out of sight with it. Almost every "wrong row" is a wrong field.